-
-
Notifications
You must be signed in to change notification settings - Fork 85
Expand file tree
/
Copy pathleo.c
More file actions
129 lines (127 loc) · 1.71 KB
/
leo.c
File metadata and controls
129 lines (127 loc) · 1.71 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#define A(x) (e^d)&i?e:(e+=i+i/15-d,d<<=4,i<<=4,x)
#define B b+=!((e^d)&i)&&(d|=i),i<<=4,
#define C i=15,B B B B d=d<<4|d>>12,
#define D=(d=g,b=0,C b<<=4, C C C b)
#define E if(**y)goto
#define F=a[rand()%c]
#define G unsigned short
#define H e^=a[z],a[z]^=e,e^=a[z],
int
main
(int
z,char
**y)
{G*a
,b,c
,d,e
,f,g
,h,i
;*(*
y+=
strlen
(*y)
-1)^=
'd';
srand
(time
(0))
;z==
2&&
sscanf
(y[1
],"%d"
,&z)
&&z?
0:(z
=6);
if(!
(a=(
G*)
calloc(
z*z*
z*z,
sizeof
(G))
)){
printf
("No\
memory\
\n");
exit
(1);
}for
(c=1
;i=15
,d=z
,c<z
*z*z
*z&&
(e=a
[c-1
]+1,
a[c]
=A(A
(A(A
(0))
)),1
);c++
);*(
**y?
&g:&
e)F;
do{
printf
("(%d): ????\b\b\b\b"
,c);E
q0;else
goto
q1;q0:
printf
("%04X\n"
,g+
4369
);E
q2;q1:
scanf
("%hx"
,**y
?&h:
&g);
E q3
;g-=
4369
;q2:
printf
("??\b\b"
);E q1;
printf(
"%02x\n"
,h D
);q3
:for
(z=f
=0;(
z<c||
(c=f
,0))
&&(H
b D!=
h,H b
||(a[
f++]=
a[z])
,1);z
++);
}while
(h!=
64&&
c>0&&
((g F
),1)
);printf
("\n"
);}