Download WildStar32.rar from Sendspace.com - send big files the easy way
here is original client file .
.text:0040F2C6 push 0
.text:0040F2C8 push 1E8h
.text:0040F2CD call sub_50D8A0
here , what is sub_50D8A0 for ?
LPVOID __fastcall sub_50D4E0(unsigned int a1)
{
unsigned int v1; // esi@1
bool v2; // zf@1
int *v3; // ecx@1
int v4; // edi@2
LPVOID result; // eax@3
LPVOID v6; // eax@5
LPVOID v7; // ebx@5
int v8; // edx@6
int v9; // edi@6
__int16 v10; // ax@9
void *v11; // eax@10
SIZE_T v12; // ST04_4@11
unsigned int v13; // esi@11
v1 = a1;
v2 = dword_CC3664[4 * a1] == 0;
v3 = &dword_CC3658[4 * a1];
if ( !v2 )
{
v4 = *(_DWORD *)*v3;
if ( v4 )
{
sub_50CAB0(*(_DWORD *)*v3);
return (LPVOID)v4;
}
}
if ( v1 < 0x10 )
{
v6 = sub_50D4E0(v1 + 1);
v7 = v6;
if ( v6 )
{
v8 = (int)*(&lpAddress + *((_WORD *)v6 + 5));
v9 = v8 + ((1 << v1) ^ (unsigned int)((char *)v6 - v);
if ( v9 & dword_C83618 )
{
LABEL_9:
*(_DWORD *)v9 &= 0x7FFFFFFFu;
v10 = *((_WORD *)v7 + 5);
*(_DWORD *)(v9 + 4) &= 0xFFFFFFFu;
*(_DWORD *)v9 ^= (*(_DWORD *)v9 ^ (v1 << 24)) & 0x7F000000;
*(_WORD *)(v9 + 10) = v10;
sub_50C820(v9);
return v7;
}
if ( VirtualAlloc((LPVOID)(v8 + ((1 << v1) ^ (unsigned int)((char *)v6 - v)), dwSize, 0x1000u, 4u) )
{
dword_C83620 += dwSize;
goto LABEL_9;
}
}
return 0;
}
v11 = VirtualAlloc(0, 0x10000u, 0x2000u, 4u);
if ( !v11
|| (dword_C8361C += 65536,
v12 = dwSize,
v13 = (unsigned int)v11 >> 16,
*(&lpAddress + ((unsigned int)v11 >> 16)) = v11,
(result = VirtualAlloc(v11, v12, 0x1000u, 4u)) == 0) )
return 0;
dword_C83620 += dwSize;
*((_WORD *)result + 5) = v13;
return result;
}
and also sub_50D4E0 ?
seems like so interesting thing ....
who solved this puzzle ?