Function at 0x4ac0a0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
sub esp, 0xe4
shr edx, 2
mov dword [esp + 0xcc], edx
mov edx, dword [ecx + 0x10]
mov dword [esp + 0xd4], edx
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx]
push ebx
push ebp
mov dword [esp + 0xe0], edx
mov edx, dword [eax + 4]
cmp edx, dword [eax + 0x24]
mov dword [esp + 0xe4], ecx
lea ecx, [eax + 0x20]
push esi
lea ebp, [eax + 0x40]
push edi
mov esi, eax
mov dword [esp + 0x2c], ecx
mov dword [esp + 0xa0], ebp
jle 0x4ac0f4
mov esi, ecx
mov dword [esp + 0x2c], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [ebp + 4]
jle 0x4ac10d
mov dword [esp + 0x2c], ebp
mov ebp, ecx
mov dword [esp + 0xa0], ecx
mov ecx, dword [esp + 0x2c]
mov edx, dword [esi + 4]
cmp edx, dword [ecx + 4]
jle 0x4ac11f
mov eax, esi
mov esi, ecx
mov dword [esp + 0x2c], eax
mov ecx, eax
mov eax, dword [esi + 4]
lea edx, [eax + 0xffff]
mov eax, dword [ebp + 4]
lea edi, [eax + 0xffff]
sar edx, 0x10
sar edi, 0x10
cmp edx, edi
mov dword [esp + 0x10], edx
mov dword [esp + 0xf0], edi
je 0x4ad57d
mov ecx, dword [ecx + 4]
add ecx, 0xffff
sar ecx, 0x10
mov dword [esp + 0xcc], ecx
mov ecx, dword [esi + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov ecx, dword [esi]
mov edi, eax
mov eax, dword [ebp]
mov ebx, edx
push ebx
sub eax, ecx
cdq
push edi
push edx
push eax
mov dword [esp + 0x4c], ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov dword [esp + 0xd4], eax
mov eax, dword [ebp + 8]
sub eax, dword [esi + 8]
push ebx
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov dword [esp + 0xc8], eax
mov eax, dword [ebp + 0xc]
sub eax, dword [esi + 0xc]
push ebx
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov dword [esp + 0xd0], eax
mov eax, dword [ebp + 0x10]
sub eax, dword [esi + 0x10]
push ebx
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov dword [esp + 0xd8], eax
mov eax, dword [ebp + 0x14]
sub eax, dword [esi + 0x14]
push ebx
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov dword [esp + 0xe0], eax
mov eax, dword [ebp + 0x18]
sub eax, dword [esi + 0x18]
push ebx
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov dword [esp + 0xc0], eax
mov eax, dword [ebp + 0x1c]
sub eax, dword [esi + 0x1c]
push ebx
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 4]
sub eax, dword [esi + 4]
cdq
mov ecx, eax
mov eax, dword [esp + 0xd4]
mov edi, edx
push edi
cdq
push ecx
mov ebp, eax
push edx
push ebp
mov dword [esp + 0x44], ecx
mov dword [esp + 0x48], edi
mov dword [esp + 0x70], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x2c]
mov ecx, dword [ecx]
cmp ecx, eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x70], ecx
je 0x4ad57d
mov eax, dword [esp + 0x10]
shl eax, 0x10
sub eax, dword [esi + 4]
cdq
mov ebx, edx
mov edx, dword [esp + 0x60]
push ebx
mov edi, eax
push edi
push edx
push ebp
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x3c]
push ebx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xcc]
cdq
push edi
mov ebp, eax
mov eax, dword [esi + 8]
push edx
push ebp
mov dword [esp + 0xc0], edx
mov dword [esp + 0x34], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x24]
mov ecx, dword [esi + 0xc]
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0xd0]
cdq
push ebx
push edi
push edx
push eax
mov dword [esp + 0x94], eax
mov dword [esp + 0x98], edx
mov dword [esp + 0x2c], ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x1c]
mov ecx, dword [esi + 0x10]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xd8]
cdq
push ebx
push edi
push edx
push eax
mov dword [esp + 0x9c], eax
mov dword [esp + 0xa0], edx
mov dword [esp + 0x30], ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x20]
mov ecx, dword [esi + 0x14]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xe0]
cdq
push ebx
push edi
push edx
push eax
mov dword [esp + 0x8c], eax
mov dword [esp + 0x90], edx
mov dword [esp + 0x28], ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x18]
mov ecx, dword [esi + 0x18]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xc0]
cdq
mov dword [esp + 0x74], eax
mov dword [esp + 0x78], edx
push ebx
push edi
push edx
push eax
mov dword [esp + 0x24], ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x14]
mov esi, dword [esi + 0x1c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xc4]
cdq
push ebx
push edi
push edx
push eax
mov dword [esp + 0xc4], eax
mov dword [esp + 0xc8], edx
mov dword [esp + 0x7c], esi
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, esi
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x70]
sub eax, dword [esp + 0x68]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0x38]
push edx
mov esi, eax
mov eax, dword [esp + 0x38]
push eax
push ecx
push ebp
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebp, edx
mov edx, dword [esp + 0x2c]
mov ecx, eax
mov eax, dword [edx + 8]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x24]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x60]
push edx
push esi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x88]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x88]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, eax
mov ebp, edx
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0xc]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x1c]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x60]
push edx
push esi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x90]
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x90]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebp, edx
mov edx, dword [esp + 0x2c]
mov ecx, eax
mov eax, dword [edx + 0x10]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x20]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x60]
push edx
push esi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x80]
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x80]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, eax
mov ebp, edx
mov edx, dword [esp + 0x2c]
mov eax, dword [edx + 0x14]
cdq
sub eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x18]
sbb edx, ebp
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x60]
push edx
push esi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0x78]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0x78]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebp, edx
mov edx, dword [esp + 0x2c]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x14]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x60]
push edx
push esi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x34]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x38]
push eax
mov eax, dword [esp + 0xb8]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebp, edx
mov edx, dword [esp + 0x2c]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x6c]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x60]
push edx
push esi
push ebp
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xf8]
mov dword [esp + 0x6c], eax
mov eax, ecx
imul eax, dword [esp + 0xdc]
lea eax, [edx + eax*4]
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xcc]
sub eax, ecx
mov dword [esp + 0x28], eax
je 0x4acdc7
mov eax, dword [esp + 0x70]
sub eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x38]
cdq
push ecx
mov ebp, edx
mov edx, dword [esp + 0x38]
push edx
push 0x10000
push 0
mov esi, eax
call fcn.0062e060
push edx
push eax
push ebp
push esi
call fcn.00630410
mov cl, 0x20
call fcn.00639880
push ebx
mov dword [esp + 0xb0], eax
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x68]
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov eax, dword [eax]
add ecx, dword [esp + 0x3c]
cmp edx, eax
jge 0x4aca43
cmp dword [esp + 0x28], 0
jle 0x4acdc7
mov eax, dword [esp + 0x9c]
cdq
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x38], edx
cdq
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x78], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x80], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x90], edx
cdq
add ecx, 0xffff
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x88], edx
cdq
add ecx, 0xffff
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x20], ecx
mov ebp, dword [esp + 0x20]
sub dword [esp + 0x28], 1
and ebp, 0xffff0000
mov eax, ebp
sub eax, dword [esp + 0x30]
cdq
mov edi, edx
mov edx, dword [esp + 0x38]
push edi
mov esi, eax
mov eax, dword [esp + 0x38]
push esi
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x78]
add eax, dword [esp + 0x54]
mov edx, dword [esp + 0x74]
push edi
push esi
push ecx
push edx
mov dword [esp + 0x4c], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x7c]
push edi
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x84]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x50]
mov edx, dword [esp + 0x90]
push edi
push esi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x94]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x88]
add eax, dword [esp + 0x44]
mov edx, dword [esp + 0x84]
push edi
push esi
push ecx
push edx
mov dword [esp + 0x20], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
push edi
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x64]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, dword [esp + 0x1c]
mov ecx, eax
add ecx, dword [esp + 0x58]
mov eax, dword [esp + 0xb4]
mov edx, ebp
sar edx, 0x10
mov dword [esp + 0x18], ecx
lea eax, [eax + edx*4]
and ebx, 0xffff0000
sub ebx, ebp
sar ebx, 0x10
test ebx, ebx
jle 0x4ac9c5
jmp 0x4ac874
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x14]
shr ecx, 0x10
imul ecx, dword [esp + 0xe4]
shr edx, 0x10
add ecx, edx
sub ebx, 1
cmp ecx, dword [esp + 0xe8]
jae 0x4ac8a0
mov edx, dword [esp + 0xec]
mov edx, dword [edx + ecx*4]
jmp 0x4ac8a2
xor edx, edx
mov edi, dword [esp + 0x70]
mov ebp, dword [esp + 0x10]
mov ecx, edx
and ecx, 0xff0000
shr edi, 0x10
imul ecx, edi
movzx edi, dl
mov esi, dword [esp + 0x3c]
and ecx, 0xff0000ff
shr ebp, 0x10
imul edi, ebp
mov ebp, dword [esp + 0x24]
and edx, 0xff00
and edi, 0xff00
or ecx, edi
mov edi, ebp
shr edi, 0x10
imul edx, edi
and edx, 0xff0000
or ecx, edx
mov edi, dword [eax]
shr ecx, 8
shr esi, 0x10
mov edx, ecx
imul esi, esi, 0xff
and edx, 0xff00ff
and ecx, 0xff00
shr esi, 8
imul edx, esi
imul ecx, esi
shr edx, 8
and edx, 0xff00ff
shr ecx, 8
and ecx, 0xff00
mov esi, edi
and esi, 0xff00ff
add esi, edx
and edi, 0xff00
add edi, ecx
mov ecx, esi
shr ecx, 8
and ecx, 1
imul ecx, ecx, 0xff
mov edx, esi
shr edx, 0x18
and edx, 1
imul edx, edx, 0xffff0000
or ecx, edx
add ebp, dword [esp + 0xa4]
mov edx, edi
shr edx, 0x10
and edx, 1
neg edx
or ecx, esi
shl edx, 8
and ecx, 0xffff00ff
or edx, edi
and edx, 0xff00
or ecx, edx
mov edx, dword [esp + 0xa8]
add dword [esp + 0x70], edx
mov edx, dword [esp + 0x98]
add dword [esp + 0x14], edx
or ecx, 0xff000000
mov dword [eax], ecx
mov ecx, dword [esp + 0x9c]
add dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x94]
add dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x6c]
add dword [esp + 0x18], ecx
add eax, 4
test ebx, ebx
mov dword [esp + 0x24], ebp
jg 0x4ac870
mov eax, dword [esp + 0xd4]
add dword [esp + 0x30], eax
add dword [esp + 0x20], eax
mov eax, dword [esp + 0xdc]
mov edx, dword [esp + 0xac]
add dword [esp + 0x1c], edx
mov ecx, dword [esp + 0xd0]
mov edx, dword [esp + 0xd8]
add dword [esp + 0x4c], ecx
add dword [esp + 0x50], edx
mov ecx, dword [esp + 0xc0]
mov edx, dword [esp + 0xc4]
add dword [esp + 0x48], ecx
add dword [esp + 0x58], edx
add eax, eax
add eax, eax
add dword [esp + 0xb4], eax
mov eax, dword [esp + 0xc8]
add dword [esp + 0x54], eax
mov eax, dword [esp + 0xe0]
add dword [esp + 0x44], eax
cmp dword [esp + 0x28], 0
jg 0x4ac75c
jmp 0x4acdc7
jle 0x4acdc7
cmp dword [esp + 0x28], 0
jle 0x4acdc7
mov eax, dword [esp + 0x9c]
cdq
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x38], edx
cdq
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x78], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x80], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x60], edx
lea edx, [eax*4]
mov eax, dword [esp + 0x30]
add eax, 0xffff
add ecx, 0xffff
mov dword [esp + 0x3c], edx
mov dword [esp + 0x70], eax
mov dword [esp + 0x24], ecx
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x38]
sub dword [esp + 0x28], 1
and ebx, 0xffff0000
mov eax, ebx
sub eax, dword [esp + 0x30]
cdq
mov edi, edx
mov edx, dword [esp + 0x34]
push edi
mov esi, eax
push esi
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x74]
push edi
mov ebp, eax
mov eax, dword [esp + 0x7c]
add ebp, dword [esp + 0x58]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x80]
push edi
push esi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x84]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x90]
add eax, dword [esp + 0x50]
mov edx, dword [esp + 0x8c]
push edi
push esi
push ecx
push edx
mov dword [esp + 0x30], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x84]
push edi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x8c]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x48]
mov edx, dword [esp + 0x60]
push edi
push esi
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x64]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, eax
add ecx, dword [esp + 0x58]
mov eax, dword [esp + 0xb4]
mov edx, ebx
sar edx, 0x10
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x70]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x40], edx
and eax, 0xffff0000
sub eax, ebx
sar eax, 0x10
test eax, eax
jle 0x4acd55
jmp 0x4acc04
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x14]
shr ecx, 0x10
imul ecx, dword [esp + 0xe4]
shr edx, 0x10
add ecx, edx
sub eax, 1
cmp ecx, dword [esp + 0xe8]
jae 0x4acc30
mov edx, dword [esp + 0xec]
mov ebx, dword [edx + ecx*4]
jmp 0x4acc32
xor ebx, ebx
mov esi, dword [esp + 0x1c]
mov edi, dword [esp + 0x18]
shr esi, 0x10
mov ecx, ebx
and ecx, 0xff0000
imul ecx, esi
and ecx, 0xff0000ff
movzx esi, bl
shr edi, 0x10
imul esi, edi
and esi, 0xff00
or ecx, esi
mov esi, dword [esp + 0x20]
shr esi, 0x10
and ebx, 0xff00
imul esi, ebx
mov ebx, dword [esp + 0x40]
mov edi, dword [ebx]
and esi, 0xff0000
or ecx, esi
shr ecx, 8
mov esi, ecx
mov edx, ebp
shr edx, 0x10
imul edx, edx, 0xff
shr edx, 8
and ecx, 0xff00
imul ecx, edx
and esi, 0xff00ff
imul esi, edx
shr ecx, 8
and ecx, 0xff00
shr esi, 8
and esi, 0xff00ff
mov edx, edi
and edx, 0xff00ff
add edx, esi
mov esi, edx
and edi, 0xff00
add edi, ecx
mov ecx, edx
shr ecx, 8
and ecx, 1
imul ecx, ecx, 0xff
shr esi, 0x18
and esi, 1
imul esi, esi, 0xffff0000
or ecx, esi
or ecx, edx
add ebp, dword [esp + 0x9c]
mov edx, edi
shr edx, 0x10
and edx, 1
neg edx
shl edx, 8
and ecx, 0xffff00ff
or edx, edi
and edx, 0xff00
or ecx, edx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x20], edx
mov edx, dword [esp + 0x98]
add dword [esp + 0x14], edx
or ecx, 0xff000000
mov dword [ebx], ecx
mov ecx, dword [esp + 0xa8]
add dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x94]
add dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x6c]
add dword [esp + 0x10], ecx
add ebx, 4
test eax, eax
mov dword [esp + 0x40], ebx
jg 0x4acc00
mov eax, dword [esp + 0xd4]
add dword [esp + 0x30], eax
add dword [esp + 0x70], eax
mov edx, dword [esp + 0xac]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x24], edx
add dword [esp + 0xb4], eax
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xd0]
mov eax, dword [esp + 0xd8]
add dword [esp + 0x54], ecx
add dword [esp + 0x4c], edx
add dword [esp + 0x50], eax
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0xc4]
add dword [esp + 0x44], ecx
add dword [esp + 0x48], edx
add dword [esp + 0x58], eax
cmp dword [esp + 0x28], 0
jg 0x4acae9
mov eax, dword [esp + 0xf0]
mov ebp, dword [esp + 0xcc]
sub eax, ebp
mov dword [esp + 0x28], eax
je 0x4ad57d
mov eax, dword [esp + 0x2c]
mov edi, dword [eax + 4]
mov esi, dword [eax]
mov ebx, dword [esp + 0xa0]
mov eax, dword [ebx + 4]
sub eax, edi
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov ecx, eax
mov eax, edx
mov dword [esp + 0xf0], eax
mov eax, dword [ebx]
sub eax, esi
cdq
push edx
push eax
mov eax, dword [esp + 0xf8]
push eax
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, eax
mov eax, ebp
shl eax, 0x10
sub eax, edi
imul ecx
mov dword [esp + 0xcc], ecx
mov cl, 0x10
call fcn.00639880
mov ecx, eax
mov eax, dword [esp + 0x68]
add ecx, esi
cmp eax, esi
jge 0x4ad1e8
cmp dword [esp + 0x28], 0
jle 0x4ad57d
mov eax, dword [esp + 0x9c]
cdq
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x38], edx
cdq
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x78], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x80], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x88], edx
cdq
add ecx, 0xffff
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0xdc]
mov dword [esp + 0x5c], eax
lea eax, [edx*4]
add ecx, 0xffff
mov dword [esp + 0x3c], eax
mov dword [esp + 0x14], ecx
mov ebp, dword [esp + 0x14]
sub dword [esp + 0x28], 1
and ebp, 0xffff0000
mov eax, ebp
sub eax, dword [esp + 0x30]
cdq
mov edi, edx
mov edx, dword [esp + 0x38]
push edi
mov esi, eax
mov eax, dword [esp + 0x38]
push esi
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x78]
add eax, dword [esp + 0x54]
mov edx, dword [esp + 0x74]
push edi
push esi
push ecx
push edx
mov dword [esp + 0x78], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x7c]
push edi
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x84]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x50]
mov edx, dword [esp + 0x90]
push edi
push esi
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x94]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x88]
add eax, dword [esp + 0x44]
mov edx, dword [esp + 0x84]
push edi
push esi
push ecx
push edx
mov dword [esp + 0x2c], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x5c]
push edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x64]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, dword [esp + 0x10]
mov ecx, eax
add ecx, dword [esp + 0x58]
mov eax, dword [esp + 0xb4]
mov edx, ebp
sar edx, 0x10
mov dword [esp + 0x18], ecx
lea eax, [eax + edx*4]
and ebx, 0xffff0000
sub ebx, ebp
sar ebx, 0x10
test ebx, ebx
jle 0x4ad16b
jmp 0x4ad014
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
shr ecx, 0x10
imul ecx, dword [esp + 0xe4]
shr edx, 0x10
add ecx, edx
sub ebx, 1
cmp ecx, dword [esp + 0xe8]
jae 0x4ad040
mov edx, dword [esp + 0xec]
mov edx, dword [edx + ecx*4]
jmp 0x4ad042
xor edx, edx
mov edi, dword [esp + 0x1c]
movzx ecx, dl
mov ebp, edx
shr edi, 0x10
imul ecx, edi
mov edi, dword [esp + 0x24]
mov esi, dword [esp + 0x68]
shr edi, 0x10
and ecx, 0xff00
and ebp, 0xff00
imul edi, ebp
mov ebp, dword [esp + 0xa0]
and edx, 0xff0000
and edi, 0xff0000
or ecx, edi
mov edi, ebp
shr edi, 0x10
imul edx, edi
and edx, 0xff0000ff
or ecx, edx
mov edi, dword [eax]
shr ecx, 8
shr esi, 0x10
mov edx, ecx
imul esi, esi, 0xff
and edx, 0xff00ff
and ecx, 0xff00
shr esi, 8
imul edx, esi
imul ecx, esi
shr edx, 8
and edx, 0xff00ff
shr ecx, 8
and ecx, 0xff00
mov esi, edi
and esi, 0xff00ff
add esi, edx
and edi, 0xff00
add edi, ecx
mov ecx, esi
shr ecx, 8
and ecx, 1
imul ecx, ecx, 0xff
mov edx, esi
shr edx, 0x18
and edx, 1
imul edx, edx, 0xffff0000
or ecx, edx
add ebp, dword [esp + 0xa8]
mov edx, edi
shr edx, 0x10
and edx, 1
neg edx
or ecx, esi
shl edx, 8
and ecx, 0xffff00ff
or edx, edi
and edx, 0xff00
or ecx, edx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x24], edx
mov edx, dword [esp + 0x98]
add dword [esp + 0x20], edx
or ecx, 0xff000000
mov dword [eax], ecx
mov ecx, dword [esp + 0x9c]
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x94]
add dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x6c]
add dword [esp + 0x18], ecx
add eax, 4
test ebx, ebx
mov dword [esp + 0xa0], ebp
jg 0x4ad010
mov eax, dword [esp + 0xd4]
add dword [esp + 0x30], eax
add dword [esp + 0x14], eax
mov edx, dword [esp + 0xcc]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x10], edx
add dword [esp + 0xb4], eax
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xd0]
mov eax, dword [esp + 0xd8]
add dword [esp + 0x54], ecx
add dword [esp + 0x4c], edx
add dword [esp + 0x50], eax
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0xc4]
add dword [esp + 0x44], ecx
add dword [esp + 0x48], edx
add dword [esp + 0x58], eax
cmp dword [esp + 0x28], 0
jg 0x4acef6
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe4
ret
jle 0x4ad57d
cmp dword [esp + 0x28], 0
jle 0x4ad57d
mov eax, dword [esp + 0x9c]
cdq
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x38], edx
cdq
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x78], edx
cdq
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x94]
mov dword [esp + 0x80], edx
cdq
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x98]
mov dword [esp + 0x90], edx
cdq
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x88], edx
cdq
mov dword [esp + 0x60], edx
mov edx, dword [esp + 0xdc]
mov dword [esp + 0x5c], eax
lea eax, [edx*4]
mov edx, dword [esp + 0x30]
add edx, 0xffff
add ecx, 0xffff
mov dword [esp + 0x3c], eax
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 0x34]
sub dword [esp + 0x28], 1
and ebx, 0xffff0000
mov eax, ebx
sub eax, dword [esp + 0x30]
cdq
mov edi, edx
push edi
mov esi, eax
mov eax, dword [esp + 0x3c]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x78]
push edi
push esi
mov ebp, eax
mov eax, dword [esp + 0x7c]
add ebp, dword [esp + 0x5c]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x80]
add eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x7c]
push edi
push esi
push ecx
push edx
mov dword [esp + 0x78], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x8c]
push edi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x94]
push esi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x44]
mov edx, dword [esp + 0x88]
push edi
push esi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x8c]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x60]
add eax, dword [esp + 0x48]
mov edx, dword [esp + 0x5c]
push edi
push esi
push ecx
push edx
mov dword [esp + 0x30], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0xb4]
mov ecx, eax
add ecx, dword [esp + 0x58]
mov eax, ebx
sar eax, 0x10
lea eax, [edx + eax*4]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], ecx
and eax, 0xffff0000
sub eax, ebx
sar eax, 0x10
test eax, eax
jle 0x4ad50b
jmp 0x4ad3b4
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x20]
shr ecx, 0x10
imul ecx, dword [esp + 0xe4]
shr edx, 0x10
add ecx, edx
sub eax, 1
cmp ecx, dword [esp + 0xe8]
jae 0x4ad3e0
mov edx, dword [esp + 0xec]
mov ebx, dword [edx + ecx*4]
jmp 0x4ad3e2
xor ebx, ebx
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x1c]
shr esi, 0x10
mov ecx, ebx
and ecx, 0xff0000
imul ecx, esi
and ecx, 0xff0000ff
movzx esi, bl
shr edi, 0x10
imul esi, edi
and esi, 0xff00
or ecx, esi
mov esi, dword [esp + 0x24]
shr esi, 0x10
and ebx, 0xff00
imul esi, ebx
mov ebx, dword [esp + 0xa0]
mov edi, dword [ebx]
and esi, 0xff0000
or ecx, esi
shr ecx, 8
mov esi, ecx
mov edx, ebp
shr edx, 0x10
imul edx, edx, 0xff
shr edx, 8
and ecx, 0xff00
imul ecx, edx
and esi, 0xff00ff
imul esi, edx
shr ecx, 8
and ecx, 0xff00
shr esi, 8
and esi, 0xff00ff
mov edx, edi
and edx, 0xff00ff
add edx, esi
mov esi, edx
and edi, 0xff00
add edi, ecx
mov ecx, edx
shr ecx, 8
and ecx, 1
imul ecx, ecx, 0xff
shr esi, 0x18
and esi, 1
imul esi, esi, 0xffff0000
or ecx, esi
or ecx, edx
add ebp, dword [esp + 0x9c]
mov edx, edi
shr edx, 0x10
and edx, 1
neg edx
shl edx, 8
and ecx, 0xffff00ff
or edx, edi
and edx, 0xff00
or ecx, edx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x24], edx
mov edx, dword [esp + 0x98]
add dword [esp + 0x20], edx
or ecx, 0xff000000
mov dword [ebx], ecx
mov ecx, dword [esp + 0xa8]
add dword [esp + 0x68], ecx
mov ecx, dword [esp + 0x94]
add dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x6c]
add dword [esp + 0x18], ecx
add ebx, 4
test eax, eax
mov dword [esp + 0xa0], ebx
jg 0x4ad3b0
mov eax, dword [esp + 0xd4]
add dword [esp + 0x30], eax
add dword [esp + 0x14], eax
mov edx, dword [esp + 0xcc]
mov eax, dword [esp + 0x3c]
add dword [esp + 0x10], edx
add dword [esp + 0xb4], eax
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xd0]
mov eax, dword [esp + 0xd8]
add dword [esp + 0x54], ecx
add dword [esp + 0x4c], edx
add dword [esp + 0x50], eax
mov ecx, dword [esp + 0xe0]
mov edx, dword [esp + 0xc0]
mov eax, dword [esp + 0xc4]
add dword [esp + 0x44], ecx
add dword [esp + 0x48], edx
add dword [esp + 0x58], eax
cmp dword [esp + 0x28], 0
jg 0x4ad28f
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xe4
ret