uint32_t key
=
448431333
;
uint32_t key2
=
3848427296
;
int
encode1(uint32_t flag[
2
])
{
int
key1[
4
]
=
{
0x494C
,
0x6F76
,
0x6520
,
0x4355
};
uint32_t b
=
(flag[
1
]
*
0x10
);
uint32_t a
=
((signed)flag[
1
]
/
0x20
);
uint32_t c
=
((a ^ b)
+
flag[
1
]);
uint32_t d
=
(c ^ (key
+
key1[key &
3
]));
/
/
6f76
flag[
0
]
=
d
+
flag[
0
];
key
+
=
0x75BCD15
;
uint32_t e
=
(flag[
0
]
*
0x10
);
uint32_t f
=
((signed)flag[
0
]
/
0x20
);
uint32_t g
=
(e ^ f);
uint32_t h
=
g
+
flag[
0
];
uint32_t i
=
h ^ (key
+
key1[((signed)key
/
0x800
) &
3
]);
flag[
1
]
=
i
+
flag[
1
];
return
0
;
}
void decode1(uint32_t flag[
2
])
{
int
key1[
4
]
=
{
0x494C
,
0x6F76
,
0x6520
,
0x4355
};
uint32_t e
=
(flag[
0
]
*
0x10
);
uint32_t f
=
((signed)flag[
0
]
/
0x20
);
uint32_t g
=
( e^f );
uint32_t h
=
g
+
flag[
0
];
uint32_t i
=
h ^ (key
+
key1[((signed)key
/
0x800
) &
3
]);
flag[
1
]
=
flag[
1
]
-
i;
key
-
=
0x75BCD15
;
uint32_t b
=
(flag[
1
]
*
0x10
);
uint32_t a
=
((signed)flag[
1
]
/
0x20
);
uint32_t c
=
((a ^ b)
+
flag[
1
]);
uint32_t d
=
(c ^ (key
+
key1[key &
3
]));
/
/
6f76
flag[
0
]
-
=
d;
return
;
}
int
decode2(uint32_t flag[
2
])
{
key2
-
=
0x154CBF7
;
uint32_t b1
=
(flag[
0
]
*
0x10
+
0x2074
);
uint32_t c1
=
(key2
+
flag[
0
]);
uint32_t a1
=
((signed)flag[
0
]
/
0x20
+
0x6561
);
uint32_t d1
=
(c1 ^ a1);
uint32_t e1
=
d1 ^ b1;
flag[
1
]
-
=
e1;
uint32_t b
=
(flag[
1
]
*
0x10
+
0x5354
);
uint32_t c
=
(key2
+
flag[
1
]);
uint32_t a
=
((signed)flag[
1
]
/
0x20
+
0x4f4d
);
uint32_t d
=
(c ^ a);
uint32_t e
=
d ^ b;
flag[
0
]
-
=
e;
return
0
;
}
int
encode2(uint32_t flag[
2
])
{
key2
+
=
0x154CBF7
;
uint32_t b
=
(flag[
1
]
*
0x10
+
0x5354
);
uint32_t c
=
(key2
+
flag[
1
]);
uint32_t a
=
((signed)flag[
1
]
/
0x20
+
0x4f4d
);
uint32_t d
=
(c ^ a);
uint32_t e
=
d ^ b;
uint32_t f
=
e
+
flag[
0
];
flag[
0
]
=
f;
uint32_t b1
=
(flag[
0
]
*
0x10
+
0x2074
);
uint32_t c1
=
(key2
+
flag[
0
]);
uint32_t a1
=
((signed)flag[
0
]
/
0x20
+
0x6561
);
uint32_t d1
=
(c1 ^ a1);
uint32_t e1
=
d1 ^ b1;
uint32_t f1
=
e1
+
flag[
1
];
flag[
1
]
=
f1;
return
0
;
}
int
main()
{
uint32_t flag[
10
]
=
{
0xAEE0FAE8
,
0xFC3E4101
,
0x167CAD92
,
0x51EA6CBE
,
0x242A0100
,
0x01511A1B
,
0x514D6694
,
0x2F5FBFEB
,
0x46D36398
,
0x79EEE3F0
};
for
(
int
i
=
8
; i >
=
0
; i
-
=
2
)
{
for
(
int
j
=
19
; j >
=
0
; j
-
-
)
{
decode2(flag
+
i);
if
(i
=
=
0
&& j
=
=
0
)
{
flag[
0
] ^
=
0x1010101
;
flag[
1
] ^
=
0x2020202
;
}
decode1(flag
+
i);
if
(i
=
=
0
&& j
=
=
0
)
{
flag[
0
] ^
=
0x1010101
;
flag[
1
] ^
=
0x2020202
;
}
int
m
=
3
;
}
int
n
=
3
;
}
for
(
int
i
=
0
; i <
9
; i
+
+
)
{
for
(
int
j
=
0
; j <
4
; j
+
+
)
printf(
"%c"
,
*
((char
*
)&flag[i]
+
j));
}
return
0
;
}