直接上伪代码
__int64 sub_140001290()
{
bool v0; // si
__int64 v1; // rax
__int64 v2; // r8
unsigned __int8 *v3; // rax
unsigned __int8 *v4; // rbx
int v5; // er10
__int64 v6; // r11
_BYTE *v7; // r9
void **v8; // r8
__int64 v9; // rdi
__int64 v10; // r15
__int64 v11; // r12
__int64 v12; // rbp
signed int v13; // ecx
unsigned __int8 *v14; // rdx
__int64 v15; // rdi
__int64 *v16; // r14
__int64 v17; // rbp
__int64 v18; // r13
__int64 *v19; // rdi
__int64 v20; // r12
__int64 v21; // r15
__int64 v22; // rbp
__int64 v23; // rdx
__int64 v24; // rbp
__int64 v25; // rbp
__int64 v26; // r10
__int64 v27; // rdi
__int64 v28; // r8
bool v29; // dl
__int64 v30; // rax
void *v31; // rdx
__int64 v32; // rax
__int64 v33; // rax
_BYTE *v34; // rcx
__int64 v36; // [rsp+20h] [rbp-68h]
void *Memory; // [rsp+30h] [rbp-58h]
unsigned __int64 v37; // [rsp+40h] [rbp-48h]
unsigned __int64 v39; // [rsp+48h] [rbp-40h]
v0 = 0;
v37 = 0i64;
v39 = 15i64;
LOBYTE(Memory) = 0;
v1 = sub_1400019C0(std::cout, "I'm a first timer of Logic algebra , how about you?");
std::basic_ostream<char,std::char_traits<char>>::operator<<(v1, sub_140001B90);
sub_1400019C0(std::cout, "Let's start our game,Please input your flag:");
sub_140001DE0(std::cin, &Memory, v2);
std::basic_ostream<char,std::char_traits<char>>::operator<<(std::cout, sub_140001B90);
if ( v37 - 5 > 0x19 )
{
v33 = sub_1400019C0(std::cout, "Wrong input ,no GXY{} in input words");
std::basic_ostream<char,std::char_traits<char>>::operator<<(v33, sub_140001B90);
goto LABEL_45;
}
v3 = (unsigned __int8 *)sub_1400024C8(0x20ui64);
v4 = v3;
if ( v3 )
{
*(_QWORD *)v3 = 0i64;
*((_QWORD *)v3 + 1) = 0i64;
*((_QWORD *)v3 + 2) = 0i64;
*((_QWORD *)v3 + 3) = 0i64;
}
else
{
v4 = 0i64;
}
v5 = 0;
if ( v37 > 0 )
{
v6 = 0i64;
do
{
v7 = &Memory;
if ( v39 >= 0x10 )
v7 = Memory;
v8 = &Dst;
if ( (unsigned __int64)qword_140006060 >= 0x10 )
v8 = (void **)Dst;
v4[v6] = v7[v6] ^ *((_BYTE *)v8 + v5++ % 27);
++v6;
}
while ( v5 < v37 );
}
v9 = 0i64;
v10