uint32_t
hash
(char
*
a1)
{
uint32_t v2;
uint32_t v3;
uint32_t v4;
uint32_t v5;
uint32_t v6;
uint32_t v7;
uint32_t v8;
uint32_t v9;
uint32_t v10;
uint32_t v11;
uint32_t i;
char
*
v13;
v13
=
a1;
v4
=
1
;
v2
=
v4 &
3
;
for
(i
=
v4 >>
2
; i >
0
;
-
-
i)
{
v5
=
(v13[
1
] <<
8
)
+
*
v13
+
v4;
v3
=
v5 ^ (((v13[
3
] <<
8
)
+
v13[
2
]) <<
11
);
v13
+
=
4
;
v4
=
(((v5 <<
16
) ^ v3) >>
11
)
+
((v5 <<
16
) ^ v3);
}
switch (v2)
{
case
2
:
v8
=
(v13[
1
] <<
8
)
+
*
v13
+
v4;
v4
=
(((v8 <<
11
) ^ v8) >>
17
) ^ (v8 <<
11
) ^ v8;
break
;
case
3
:
v6
=
(v13[
1
] <<
8
)
+
*
v13
+
v4;
v7
=
(v13[
2
] <<
18
) ^ (v6 <<
16
) ^ v6;
v4
=
(v7 >>
11
)
+
v7;
break
;
case
1
:
v9
=
((
*
v13
+
v4) <<
10
) ^ (
*
v13
+
v4);
v4
=
(v9 >>
1
)
+
v9;
break
;
}
v10
=
(((
8
*
v4) ^ v4) >>
5
)
+
((
8
*
v4) ^ v4);
v11
=
(((
16
*
v10) ^ v10) >>
17
)
+
((
16
*
v10) ^ v10);
return
(((v11 <<
25
) ^ v11) >>
6
)
+
((v11 <<
25
) ^ v11);
}
int
main()
{
uint32_t flag_hashes[]
=
{
3250317036
,
2059931180
,
831843374
,
831843374
,
2137638942
,
291415938
,
3060405360
,
51373921
,
291415938
,
1891737825
,
2577271396
,
2682404089
,
1319470528
,
291415938
,
2577271396
,
2376513170
,
291415938
,
2685652659
,
1867828354
,
1457933662
,
260209567
,
2240464916
,
3927678806
,
2884595695
};
char val[
2
]
=
{
0
};
uint32_t all_hashes[
256
]
=
{
0
};
for
(
int
i
=
0
; i <
256
; i
+
+
)
{
val[
0
]
=
i;
all_hashes[i]
=
hash
(val);
}
for
(
int
i
=
0
; i <
39
; i
+
+
)
{
for
(
int
j
=
0
; j <
256
; j
+
+
)
{
if
(flag_hashes[i]
=
=
all_hashes[j])
{
printf(
"%c"
, j);
break
;
}
}
}
return
1
;
}