rendered paste bodyint __cdecl sub_100404F0(int a1, size_t Count, char *Dest)
{
int result; // eax@1
char *v4; // ebx@2
unsigned int v5; // esi@2
int v6; // eax@8
int v7; // edx@8
int v8; // ecx@8
int v9; // ST04_4@8
char *v10; // ST08_4@8
unsigned int v11; // ST0C_4@8
size_t v12; // esi@9
char *v13; // eax@4
int v14; // eax@8
int v15; // eax@13
int v16; // edi@14
int Src; // [sp+10h] [bp-4B0h]@7
char Dst; // [sp+14h] [bp-4ACh]@7
char v19; // [sp+15h] [bp-4ABh]@7
__int16 v20; // [sp+4BDh] [bp-3h]@7
char v21; // [sp+4BFh] [bp-1h]@7
char v22; // [sp+1Ah] [bp-4A6h]@8
char v23; // [sp+18h] [bp-4A8h]@14
result = dword_100AB128;
if ( dword_100AB128 )
{
v4 = Dest;
v5 = Count;
if ( (unsigned int)dword_100AAB64 > 0xA )
{
if ( (signed int)Count <= 15 )
return result;
v13 = (char *)sub_10015170();
sub_10004BE0(v4, v5, v13, 84, 9006);
v5 = strlen(v4) + 1;
}
if ( (signed int)v5 > 1100 )
v5 = 1100;
Src = dword_1008934C;
Dst = byte_10089350;
memset(&v19, 0, 0x4A8u);
v20 = 0;
v21 = 0;
if ( dword_100B66C8 )
{
v14 = (dword_100AAD78 + 1940858520) ^ dword_100BB7E0[(dword_100AAD78 + 1940858520) ^ (dword_100AAD78 + 1940857420)] ^ (dword_100AAD78 - 1486054502);
BYTE3(Src) = 69;
((int (__cdecl *)(char *, char *, unsigned int))v14)(&v22, v4, v5);
v11 = v5;
v10 = &Dst;
v9 = dword_100B66C8;
v8 = dword_100AAD78 + 380589220;
v7 = (dword_100AAD78 + 380589220) ^ (dword_100AAD78 + 380589035);
v6 = dword_100AAD78 - 1033049690;
}
else
{
if ( !dword_100AAF74 || !*(_BYTE *)(dword_100AAFA4 + dword_100AAF74) || *v4 == 74 )
{
v16 = (dword_100AAD78 + 978067213) ^ dword_100BB7E0[(dword_100AAD78 + 978067213) ^ (dword_100AAD78 + 978066393)] ^ (dword_100AAD78 - 292576753);
BYTE3(Src) = 80;
((int (__cdecl *)(char *, int *, signed int))v16)(&Dst, &dword_100AAD60, 4);
((int (__cdecl *)(char *, char *, unsigned int))v16)(&v23, v4, v5);
v12 = v5 + 8;
goto LABEL_15;
}
v15 = (dword_100AAD78 + 846030328) ^ dword_100BB7E0[(dword_100AAD78 + 846030328) ^ (dword_100AAD78 + 846029100)] ^ (dword_100AAD78 - 424748806);
BYTE3(Src) = 69;
((int (__cdecl *)(char *, char *, unsigned int))v15)(&v22, v4, v5);
v11 = v5;
v10 = &Dst;
v8 = dword_100AAD78 + 339877202;
v7 = (dword_100AAD78 + 339877202) ^ (dword_100AAD78 + 339876382);
v9 = dword_100AAF74 + dword_100AAFA4;
v6 = dword_100AAD78 - 1065246640;
}
((int (__cdecl *)(int, char *, unsigned int))(v8 ^ dword_100BB7E0[v7] ^ v6))(v9, v10, v11);
v12 = v5 + 10;
LABEL_15:
if ( !dword_100AB15C )
dword_100AB15C = ((int (*)(void))((dword_100AAD78 + 1361977163) ^ dword_100BB7E0[(dword_100AAD78 + 1361977163) ^ (dword_100AAD78 + 1361976198)] ^ (dword_100AAD78 - 2048023991)))();
dword_100AB164 += v12;
if ( (dword_100AB2E8 || !dword_100ADDC4) && byte_100ADD82 && word_100ADDC8 )
{
if ( (signed int)v12 > 1196 )
v12 = 1196;
memcpy(&Dst, &Src, v12);
Src = -1;
(*(int (__cdecl **)(char *, _DWORD, unsigned int, int *))(a1 + 400))(
&byte_100ADD82,
(unsigned __int16)word_100ADDC8,
v12 + 4,
&Src);
result = dword_100AB124++ + 1;
}
else
{
(*(int (__cdecl **)(size_t, int *))(a1 + 388))(v12, &Src);
result = dword_100AB124++ + 1;
}
}
return result;
}