Skip to content

Instantly share code, notes, and snippets.

@AmyrAhmady
Last active October 21, 2019 12:02
Show Gist options
  • Select an option

  • Save AmyrAhmady/28534e9779b58eb3ba0ba46821d2ac22 to your computer and use it in GitHub Desktop.

Select an option

Save AmyrAhmady/28534e9779b58eb3ba0ba46821d2ac22 to your computer and use it in GitHub Desktop.
reeeeeeeeeeeee
int __thiscall sub_401010(int *this)
{
int *v1; // ebx
int v2; // ecx
_DWORD *v3; // eax
signed int v4; // edi
unsigned int v5; // esi
int v6; // edi
int v7; // esi
int v8; // eax
int v9; // edx
int v10; // eax
int v11; // ebx
int *v12; // ecx
int v13; // ecx
int v14; // eax
signed int v15; // ecx
int v16; // ecx
char v17; // al
int v18; // ecx
int v19; // edx
int v20; // ecx
char v21; // al
int v22; // ecx
int v23; // eax
bool v24; // al
int v25; // esi
int v26; // ecx
int v28; // [esp+0h] [ebp-3Ch]
int v29; // [esp+4h] [ebp-38h]
int v30; // [esp+8h] [ebp-34h]
int v31; // [esp+Ch] [ebp-30h]
__int64 v32; // [esp+10h] [ebp-2Ch]
int v33; // [esp+18h] [ebp-24h]
int v34; // [esp+1Ch] [ebp-20h]
int v35; // [esp+20h] [ebp-1Ch]
_DWORD *v36; // [esp+24h] [ebp-18h]
int *v37; // [esp+28h] [ebp-14h]
int *v38; // [esp+2Ch] [ebp-10h]
int v39; // [esp+30h] [ebp-Ch]
int v40; // [esp+34h] [ebp-8h]
int v41; // [esp+38h] [ebp-4h]
v38 = &v28;
v1 = this;
v37 = this;
v2 = *this;
v33 = 0;
v3 = (int *)((char *)v37 + *(_DWORD *)(v2 + 4));
v36 = v3;
v4 = v3[9];
v5 = v3[8];
if ( v4 >= 0 && (v4 > 0 || v5 && v4 >= 0 && (v4 > 0 || v5 > 0xB)) )
{
v6 = (__PAIR__((unsigned int)v4, v5) - 11) >> 32;
v7 = v5 - 11;
}
else
{
v32 = 0i64;
v6 = 0;
v7 = 0;
}
v8 = v3[14];
v9 = v2;
v34 = v6;
LODWORD(v32) = v1;
v35 = v2;
if ( v8 )
{
(*(void (__thiscall **)(_DWORD))(*(_DWORD *)v8 + 4))(v36[14]);
v2 = *v1;
v9 = *v1;
v35 = *v1;
}
v41 = 0;
v36 = (int *)((char *)v1 + *(_DWORD *)(v2 + 4));
v10 = v2;
v11 = (int)v37;
if ( !v36[3] )
{
v9 = v2;
v11 = (int)v37;
if ( v36[15] )
{
v9 = v35;
v12 = (int *)v36[15];
v6 = v34;
if ( v12 != v37 )
{
std::basic_ostream<char,std::char_traits<char>>::flush(v12, v35);
v10 = *(_DWORD *)v11;
v9 = *(_DWORD *)v11;
}
}
}
v13 = *(_DWORD *)(v10 + 4);
v14 = *(_DWORD *)(v13 + v11 + 12);
BYTE4(v32) = v14 == 0;
v41 = 1;
if ( v14 )
{
v15 = 4;
}
else
{
LOBYTE(v41) = 2;
if ( (*(_DWORD *)(v13 + v11 + 20) & 0x1C0) != 64 )
{
while ( v6 >= 0 && (v6 > 0 || v7) )
{
v16 = *(_DWORD *)(*(_DWORD *)v11 + 4);
v17 = *(_BYTE *)(v16 + v11 + 64);
v18 = *(_DWORD *)(v16 + v11 + 56);
LOBYTE(v34) = v17;
if ( std::basic_streambuf<char,std::char_traits<char>>::sputc(v18, v34) == -1 )
{
v15 = 4;
goto LABEL_34;
}
v6 = (__PAIR__((unsigned int)v6, v7--) - 1) >> 32;
}
v9 = *(_DWORD *)v11;
}
if ( std::basic_streambuf<char,std::char_traits<char>>::sputn(
*(_DWORD *)(*(_DWORD *)(v9 + 4) + v11 + 56),
"Hello world",
11,
0) != 11
|| v19 )
{
LABEL_31:
v15 = 4;
}
else
{
while ( v6 >= 0 && (v6 > 0 || v7) )
{
v20 = *(_DWORD *)(*(_DWORD *)v11 + 4);
v21 = *(_BYTE *)(v20 + v11 + 64);
v22 = *(_DWORD *)(v20 + v11 + 56);
LOBYTE(v34) = v21;
if ( std::basic_streambuf<char,std::char_traits<char>>::sputc(v22, v34) == -1 )
goto LABEL_31;
v6 = (__PAIR__((unsigned int)v6, v7--) - 1) >> 32;
}
v15 = 0;
}
LABEL_34:
v23 = *(_DWORD *)(*(_DWORD *)v11 + 4);
*(_DWORD *)(v23 + v11 + 32) = 0;
*(_DWORD *)(v23 + v11 + 36) = 0;
v41 = 1;
}
std::basic_ios<char,std::char_traits<char>>::setstate(
v11 + *(_DWORD *)(*(_DWORD *)v11 + 4),
v15,
0,
v28,
v29,
v30,
v31,
v32,
HIDWORD(v32),
v33,
v34,
v35,
v36,
v37,
v38,
v39,
v40,
v41);
v41 = 4;
v24 = std::uncaught_exception();
v25 = v32;
if ( !v24 )
std::basic_ostream<char,std::char_traits<char>>::_Osfx(v32);
LOBYTE(v41) = 5;
v26 = *(_DWORD *)(*(_DWORD *)(*(_DWORD *)v25 + 4) + v25 + 56);
if ( v26 )
(*(void (**)(void))(*(_DWORD *)v26 + 8))();
return v11;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment