notcrypto (rev)
void main(void)
{
long *plVar1;
char cVar2;
ulong v4_cpy;
ulong uVar3;
byte v3;
byte v7;
ulong v1_cpy;
ulong v2_cpy;
byte v4;
byte v2;
byte v5;
byte v1;
byte idx;
int iVar4;
uint uVar5;
ulong v0_cpy;
byte v0;
byte v6;
undefined *local_58;
ulong local_50;
undefined local_48;
undefined7 uStack_47;
undefined *local_38;
local_50 = 0;
local_48 = 0;
plVar1 = *(long **)(*(long *)(std::cin + -0x18) + 0x105148);
local_58 = &local_48;
if (plVar1 == (long *)0x0) {
/* try { // try from 001013d0 to 00101408 has its CatchHandler @ 001015dc */
std::__throw_bad_cast();
}
if (*(char *)(plVar1 + 7) == '\0') {
std::ctype<char>::_M_widen_init();
cVar2 = (**(code **)(*plVar1 + 0x30))(plVar1,10);
}
else {
cVar2 = *(char *)((long)plVar1 + 0x43);
}
std::getline<>((istream *)&std::cin,(string *)&local_58,cVar2);
v0 = 8;
if ((local_50 & 7) != 0) {
v0 = 8 - ((byte)local_50 & 7);
}
uVar5 = (uint)v0;
do {
v4_cpy = local_50;
uVar3 = 0xf;
if (local_58 != &local_48) {
uVar3 = CONCAT71(uStack_47,local_48);
}
v1_cpy = local_50 + 1;
if (uVar3 < v1_cpy) {
/* try { // try from 0010146d to 00101481 has its CatchHandler @ 001015ce */
std::string::_M_mutate((ulong)&local_58,local_50,(char *)0x0,0);
}
local_58[v4_cpy] = v0;
local_58[v4_cpy + 1] = 0;
uVar5 = uVar5 - 1;
local_50 = v1_cpy;
} while (uVar5 != 0);
/* flag is 48 chars */
if (v1_cpy == 0x38) {
/* pointer to input */
local_38 = local_58;
uVar3 = 0;
/* encrypted flag */
while( true ) {
v0 = local_58[uVar3];
v1 = local_58[uVar3 + 1];
v2 = local_58[uVar3 + 2];
v3 = local_58[uVar3 + 3];
v4 = local_58[uVar3 + 4];
v5 = local_58[uVar3 + 5];
v6 = local_58[uVar3 + 6];
v7 = local_58[uVar3 + 7];
iVar4 = 0;
do {
v0_cpy = (ulong)v0;
v1_cpy = (ulong)v1;
v2_cpy = (ulong)v2;
v4_cpy = (ulong)v4;
idx = (byte)iVar4;
v0 = (&DAT_00104050)[v6] ^ idx;
v1 = (&DAT_00104050)[v0_cpy] ^ idx;
v2 = (&DAT_00104050)[v7] ^ idx;
v3 = (&DAT_00104050)[v3] ^ idx;
v4 = (&DAT_00104050)[v1_cpy] ^ idx;
v5 = (&DAT_00104050)[v5] ^ idx;
v6 = (&DAT_00104050)[v2_cpy] ^ idx;
v7 = (&DAT_00104050)[v4_cpy] ^ idx;
iVar4 = iVar4 + 1;
} while (iVar4 != 0x1000);
if (((((v0 != (&DAT_00102010)[uVar3]) || (v1 != (&DAT_00102011)[uVar3])) ||
(v2 != (&DAT_00102012)[uVar3])) ||
((v3 != (&DAT_00102013)[uVar3] || (v4 != (&DAT_00102014)[uVar3])))) ||
((v5 != (&DAT_00102015)[uVar3] ||
((v6 != (&DAT_00102016)[uVar3] || (v7 != (&DAT_00102017)[uVar3])))))) break;
uVar3 = uVar3 + 8;
if (55 < uVar3) {
puts("Correct flag methinks.");
/* WARNING: Subroutine does not return */
exit(0);
}
}
}
puts("Wronk flag methinks.");
/* WARNING: Subroutine does not return */
exit(1);
}Last updated