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

Disassembly:
sub esp, 0x108
push ebx
shr edx, 1
push ebp
mov ebp, dword [ecx + 0x10]
mov dword [esp + 0xc4], edx
mov edx, dword [ecx + 0x18]
push esi
mov esi, dword [ecx]
mov dword [esp + 0x110], edx
mov edx, dword [eax + 4]
cmp edx, dword [eax + 0x24]
lea ecx, [eax + 0x20]
push edi
lea edi, [eax + 0x40]
mov dword [esp + 0x7c], ebp
mov ebx, eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0xa4], edi
jle 0x4de049
mov ebx, ecx
mov dword [esp + 0x4c], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [edi + 4]
jle 0x4de065
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x4c], edi
mov ecx, edi
mov edi, dword [esp + 0xa4]
mov edx, dword [ebx + 4]
cmp edx, dword [ecx + 4]
jle 0x4de077
mov eax, ebx
mov ebx, ecx
mov dword [esp + 0x4c], eax
mov ecx, eax
mov eax, dword [ebx + 4]
lea edx, [eax + 0xffff]
mov eax, dword [edi + 4]
lea edi, [eax + 0xffff]
sar edx, 0x10
sar edi, 0x10
cmp edx, edi
mov dword [esp + 0x64], edx
mov dword [esp + 0xa0], edi
je 0x4e000a
mov ecx, dword [ecx + 4]
add ecx, 0xffff
sar ecx, 0x10
mov dword [esp + 0x9c], ecx
mov ecx, dword [ebx + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov edi, eax
mov eax, dword [esp + 0xa4]
mov eax, dword [eax]
mov ecx, edx
mov edx, dword [ebx]
push ecx
sub eax, edx
mov dword [esp + 0x44], edx
cdq
push edi
push edx
push eax
mov dword [esp + 0x4c], ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x108], eax
mov eax, dword [ecx + 8]
sub eax, dword [ebx + 8]
mov ecx, dword [esp + 0x3c]
push ecx
cdq
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0xa4]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x110], eax
mov eax, dword [edx + 0xc]
sub eax, dword [ebx + 0xc]
push ecx
cdq
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0xa4]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0x100], eax
mov eax, dword [edx + 0x10]
sub eax, dword [ebx + 0x10]
push ecx
cdq
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0xa4]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0xf8], eax
mov eax, dword [edx + 0x14]
sub eax, dword [ebx + 0x14]
push ecx
cdq
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov dword [esp + 0x10c], eax
mov edx, dword [esp + 0xa4]
mov eax, dword [edx + 0x18]
sub eax, dword [ebx + 0x18]
mov ecx, dword [esp + 0x3c]
push ecx
cdq
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0xa4]
mov ecx, dword [esp + 0x3c]
mov dword [esp + 0xfc], eax
mov eax, dword [edx + 0x1c]
sub eax, dword [ebx + 0x1c]
push ecx
cdq
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x104], eax
mov eax, dword [edx + 4]
sub eax, dword [ebx + 4]
cdq
mov ecx, eax
mov eax, dword [esp + 0x108]
mov dword [esp + 0x54], edx
cdq
mov edi, eax
mov eax, dword [esp + 0x54]
push eax
push ecx
push edx
push edi
mov dword [esp + 0x60], ecx
mov dword [esp + 0x7c], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x4c]
mov ecx, dword [ecx]
cmp ecx, eax
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], ecx
je 0x4e000a
mov eax, dword [esp + 0x64]
shl eax, 0x10
sub eax, dword [ebx + 4]
cdq
push edx
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x70]
push eax
push edx
push edi
mov dword [esp + 0x80], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [ebx + 8]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x74]
mov edi, eax
mov eax, dword [esp + 0x110]
add edi, dword [esp + 0x40]
push ecx
mov ecx, dword [esp + 0x74]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xec], edi
mov dword [esp + 0x78], eax
mov dword [esp + 0x7c], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x1c]
mov ecx, dword [ebx + 0xc]
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x104]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x2c]
mov ecx, dword [ebx + 0x10]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xfc]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xe0], eax
mov dword [esp + 0xe4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x24]
mov ecx, dword [ebx + 0x14]
mov dword [esp + 0x30], ecx
mov ecx, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x94], eax
mov eax, dword [esp + 0x110]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xd0], eax
mov dword [esp + 0xd4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x30]
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x100]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x74]
mov ebx, dword [ebx + 0x1c]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x108]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], edx
mov dword [esp + 0x70], ebx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, ebx
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x20]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x54]
push edx
mov edx, dword [esp + 0x6c]
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0x54]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebx, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 8]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x1c]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x38]
sbb ebx, edx
mov edx, dword [esp + 0x3c]
push edx
push eax
push ebx
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0xc0]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebx, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0xc]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x38]
sbb ebx, edx
mov edx, dword [esp + 0x3c]
push edx
push eax
push ebx
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xd4]
mov dword [esp + 0xec], eax
mov eax, dword [esp + 0xd8]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebx, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0x10]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x24]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x38]
sbb ebx, edx
mov edx, dword [esp + 0x3c]
push edx
push eax
push ebx
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xc8]
push edx
push eax
mov ecx, dword [esp + 0xcc]
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebx, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0x14]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x30]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x38]
sbb ebx, edx
mov edx, dword [esp + 0x3c]
push edx
push eax
push ebx
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0xf0], eax
mov eax, dword [esp + 0xb8]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebx, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x28]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x38]
sbb ebx, edx
mov edx, dword [esp + 0x3c]
push edx
push eax
push ebx
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0x50]
push ecx
mov ecx, dword [esp + 0xac]
mov dword [esp + 0xe8], eax
mov eax, dword [esp + 0xb0]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebx, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x60]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x38]
sbb ebx, edx
mov edx, dword [esp + 0x3c]
push edx
push eax
push ebx
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x64]
mov edx, ecx
imul edx, dword [esp + 0xcc]
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x11c]
lea edx, [eax + edx*2]
mov eax, dword [esp + 0x9c]
sub eax, ecx
mov dword [esp + 0x94], edx
mov dword [esp + 0x44], eax
je 0x4df2fd
mov eax, dword [esp + 0x14]
sub eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x50]
cdq
mov ebx, eax
mov eax, dword [esp + 0x54]
push eax
push ecx
push 0x10000
push 0
mov ebp, edx
call fcn.006372b0
push edx
push eax
push ebp
push ebx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x1c], eax
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x7c]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x20]
add ecx, dword [esp + 0x40]
cmp edx, eax
jge 0x4decf9
cmp dword [esp + 0x44], 0
jle 0x4df2fd
mov eax, dword [esp + 0xf0]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xd4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x38], eax
add ecx, 0xffff
lea eax, [edi + 0xffff]
mov dword [esp + 0x3c], edx
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0xac]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0x60], eax
sub eax, edi
cdq
push edx
mov ebx, eax
push ebx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0xb0]
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x88]
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xc4]
mov edx, dword [esp + 0xc0]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xd0]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x60]
add eax, dword [esp + 0x8c]
mov ecx, edx
sar ecx, 0x10
mov ebx, dword [esp + 0x94]
lea ecx, [ebx + ecx*2]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x1c]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4dec69
mov edi, dword [esp + 0x70]
lea ebx, [eax - 0x8000]
add edi, 0xffff8000
mov dword [esp + 0x5c], ebx
mov dword [esp + 0x24], edi
sub ecx, 1
xor eax, eax
cmp edi, eax
mov dword [esp + 0x50], ecx
jle 0x4de91e
mov eax, edi
and eax, 0xffff0000
mov edx, eax
xor ebx, ebx
sar edx, 0x10
lea ecx, [ebp - 1]
cmp edx, ecx
setl bl
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0x5c]
jmp 0x4de922
mov dword [esp + 0x14], eax
test ebx, ebx
jle 0x4de957
mov edi, dword [esp + 0x114]
mov edx, ebx
and edx, 0xffff0000
add edi, 0xffffffff
xor ebx, ebx
mov ecx, edx
sar ecx, 0x10
cmp ecx, edi
mov edi, dword [esp + 0x24]
setge bl
sub ebx, 1
and ebx, ebp
mov dword [esp + 0x48], ebx
mov ebx, dword [esp + 0x5c]
jmp 0x4de95d
xor edx, edx
mov dword [esp + 0x48], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebp
mov ebp, eax
sar ebp, 0x10
add ecx, ebp
mov ebp, dword [esi + ecx*4]
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x14]
add ebp, ecx
mov ebp, dword [esi + ebp*4]
sub edi, eax
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x48]
add ecx, ebp
mov ebp, dword [esi + ecx*4]
mov dword [esp + 0x70], ebp
mov ebp, dword [esp + 0x14]
add ecx, ebp
mov eax, ebx
sub eax, edx
mov ebx, dword [esp + 0x34]
and eax, 0xfffe
add eax, 1
and edi, 0xfffe
add edi, 1
mov dword [esp + 0x78], edi
mov ebp, 0x10000
sub ebp, edi
mov edi, ebp
imul ebp, eax
mov edx, 0x10000
sub edx, eax
imul eax, dword [esp + 0x78]
imul edi, edx
imul edx, dword [esp + 0x78]
shr edx, 0x10
mov ecx, dword [esi + ecx*4]
shr ebx, 0x18
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x40]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x70]
shr edx, 0x10
mov dword [esp + 0x14], edx
shr ebp, 0x10
shr eax, 0x10
mov edx, ebx
shr edx, 0x18
imul ebp, edx
mov edx, ecx
shr edx, 0x18
imul eax, edx
shr eax, 0x10
mov edx, eax
mov dword [esp + 0x78], edx
mov eax, ecx
and eax, 0xff0000
imul eax, edx
shr ebp, 0x10
mov edx, ebx
and edx, 0xff0000
imul edx, ebp
add eax, edx
mov edx, dword [esp + 0x40]
and edx, 0xff0000
imul edx, dword [esp + 0x14]
add eax, edx
mov edx, dword [esp + 0x34]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
mov dword [esp + 0x48], ebp
add eax, edx
movzx ebp, cl
imul ebp, dword [esp + 0x78]
movzx edx, bl
and eax, 0xff0000ff
imul edx, dword [esp + 0x48]
add ebp, edx
movzx edx, byte [esp + 0x40]
imul edx, dword [esp + 0x14]
add ebp, edx
mov edx, dword [esp + 0x34]
movzx ebx, dl
imul ebx, edi
and ecx, 0xff00
imul ecx, dword [esp + 0x78]
add ebp, ebx
mov ebx, dword [esp + 0x70]
and ebx, 0xff00
imul ebx, dword [esp + 0x48]
add ecx, ebx
mov ebx, dword [esp + 0x40]
and edx, 0xff00
imul edx, edi
and ebp, 0xff00
or eax, ebp
mov ebp, dword [esp + 0x14]
and ebx, 0xff00
imul ebx, ebp
add ecx, ebx
add ecx, edx
mov edx, dword [esp + 0x48]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x78]
add ecx, edx
add ecx, ebp
add ecx, edi
mov ebp, dword [esp + 0x30]
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, dword [esp + 0x64]
mov edx, eax
shr ecx, 0x10
and edx, 0xff0000
imul edx, ecx
movzx ecx, al
shr ebp, 0x10
imul ecx, ebp
mov ebx, dword [esp + 0x10]
and ecx, 0xff00
and edx, 0xff0000ff
or edx, ecx
mov ecx, dword [esp + 0x28]
and eax, 0xff00
shr ecx, 0x10
imul eax, ecx
and eax, 0xff0000
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
and ecx, 0xff0000
mov edi, ebx
shr edi, 0x10
imul eax, edi
imul ecx, edi
movzx edx, dl
imul edx, edi
mov edi, dword [esp + 0x60]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [edi]
mov eax, edx
and eax, 0xf800
shl eax, 5
mov ebp, edx
and ebp, 0x1f
or eax, ebp
add eax, eax
shr ecx, 8
add eax, eax
mov ebp, ecx
and ecx, 0xff00
and edx, 0x7e0
add eax, eax
or edx, 0x18
and ebp, 0xff00ff
or eax, 0x70007
add eax, ebp
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or ecx, ebp
or eax, ecx
mov ecx, edx
shr ecx, 0x10
add ebx, dword [esp + 0xf0]
and ecx, 1
imul ecx, ecx, 0xff00
mov ebp, dword [esp + 0x7c]
shr ecx, 5
shr edx, 5
or ecx, edx
mov edx, eax
and ecx, 0x7e0
shr edx, 3
and edx, 0x1f
or ecx, edx
mov edx, dword [esp + 0xec]
add dword [esp + 0x30], edx
shr eax, 8
and eax, 0xf800
or ecx, eax
mov eax, dword [esp + 0xe8]
add dword [esp + 0x64], eax
mov word [edi], cx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x50]
add edi, 2
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x24]
add edi, dword [esp + 0xe4]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x5c]
add ebx, dword [esp + 0xf4]
test ecx, ecx
mov dword [esp + 0x24], edi
mov dword [esp + 0x5c], ebx
jg 0x4de8f1
mov edi, dword [esp + 0xdc]
mov eax, dword [esp + 0x108]
add dword [esp + 0x2c], eax
mov ecx, dword [esp + 0x110]
mov edx, dword [esp + 0x100]
add dword [esp + 0x88], ecx
add dword [esp + 0x80], edx
mov ecx, dword [esp + 0x10c]
mov edx, dword [esp + 0xfc]
add dword [esp + 0x84], ecx
add dword [esp + 0x98], edx
add edi, eax
mov eax, dword [esp + 0x18]
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0xcc]
add eax, eax
add dword [esp + 0x94], eax
mov eax, dword [esp + 0xf8]
add dword [esp + 0x90], eax
mov eax, dword [esp + 0x104]
add dword [esp + 0x8c], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xdc], edi
jg 0x4de790
jmp 0x4df2fd
jle 0x4df2fd
cmp dword [esp + 0x44], 0
jle 0x4df2fd
mov eax, dword [esp + 0xf0]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xd4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x3c], edx
lea edx, [edi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x38], eax
mov dword [esp + 0x64], edx
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x48]
mov ecx, dword [esp + 0xa8]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0x50], eax
sub eax, edi
cdq
push edx
mov ebx, eax
mov eax, dword [esp + 0xb0]
push ebx
push eax
push ecx
mov dword [esp + 0x7c], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x88]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xb0]
push edx
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0xb8]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x80]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xc0]
push edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc8]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xd0]
push edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xd8]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xb8]
push edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xc0]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x98]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x38]
push edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x40]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x50]
add eax, dword [esp + 0x8c]
mov ecx, edx
sar ecx, 0x10
mov ebx, dword [esp + 0x94]
lea ecx, [ebx + ecx*2]
mov dword [esp + 0x60], ecx
mov ecx, dword [esp + 0x64]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4df272
mov ebx, dword [esp + 0x10]
lea edi, [eax - 0x8000]
add ebx, 0xffff8000
mov dword [esp + 0x14], edi
mov dword [esp + 0x28], ebx
lea ecx, [ecx]
sub ecx, 1
xor eax, eax
cmp ebx, eax
mov dword [esp + 0x78], ecx
jle 0x4def35
mov edi, dword [esp + 0x14]
mov eax, ebx
and eax, 0xffff0000
mov edx, eax
mov dword [esp + 0x50], eax
xor eax, eax
sar edx, 0x10
lea ecx, [ebp - 1]
cmp edx, ecx
setl al
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x50]
jmp 0x4def39
mov dword [esp + 0x1c], eax
test edi, edi
jle 0x4def6e
mov edx, edi
mov edi, dword [esp + 0x114]
and edx, 0xffff0000
add edi, 0xffffffff
xor ebx, ebx
mov ecx, edx
sar ecx, 0x10
cmp ecx, edi
mov edi, dword [esp + 0x14]
setge bl
sub ebx, 1
and ebx, ebp
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x28]
jmp 0x4def74
xor edx, edx
mov dword [esp + 0x10], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebp
mov ebp, eax
sar ebp, 0x10
add ecx, ebp
mov ebp, dword [esi + ecx*4]
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x1c]
add ebp, ecx
mov ebp, dword [esi + ebp*4]
mov dword [esp + 0x40], ebp
mov ebp, dword [esp + 0x10]
add ecx, ebp
mov ebp, dword [esi + ecx*4]
mov dword [esp + 0x5c], ebp
mov ebp, dword [esp + 0x1c]
add ebp, ecx
mov ecx, dword [esi + ebp*4]
sub ebx, eax
mov eax, edi
sub eax, edx
mov edi, dword [esp + 0x34]
and eax, 0xfffe
add eax, 1
and ebx, 0xfffe
add ebx, 1
mov dword [esp + 0x10], ecx
mov ebp, 0x10000
sub ebp, ebx
mov ecx, ebp
mov edx, 0x10000
sub edx, eax
imul ecx, edx
shr edi, 0x18
shr ecx, 0x10
imul ecx, edi
mov edi, ebx
imul edi, edx
mov edx, dword [esp + 0x40]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, eax
imul eax, ebx
mov ebx, dword [esp + 0x10]
imul edx, ebp
mov ebp, dword [esp + 0x5c]
shr ebp, 0x18
shr eax, 0x10
shr edx, 0x10
imul edx, ebp
mov ebp, ebx
shr ebp, 0x18
imul eax, ebp
shr eax, 0x10
mov ebp, eax
mov dword [esp + 0x1c], ebp
mov eax, ebx
and eax, 0xff00
imul eax, ebp
mov ebp, dword [esp + 0x5c]
and ebp, 0xff00
shr edx, 0x10
imul ebp, edx
add eax, ebp
mov ebp, dword [esp + 0x40]
and ebp, 0xff00
shr edi, 0x10
imul ebp, edi
add eax, ebp
mov ebp, dword [esp + 0x34]
and ebp, 0xff00
shr ecx, 0x10
imul ebp, ecx
add eax, ebp
mov ebp, dword [esp + 0x5c]
and ebx, 0xff0000
imul ebx, dword [esp + 0x1c]
and eax, 0xff0000
and ebp, 0xff0000
imul ebp, edx
add ebx, ebp
mov ebp, dword [esp + 0x40]
and ebp, 0xff0000
imul ebp, edi
add ebx, ebp
mov ebp, dword [esp + 0x34]
and ebp, 0xff0000
imul ebp, ecx
add ebx, ebp
movzx ebp, byte [esp + 0x5c]
and ebx, 0xff0000ff
imul ebp, edx
or eax, ebx
movzx ebx, byte [esp + 0x10]
imul ebx, dword [esp + 0x1c]
add ebx, ebp
movzx ebp, byte [esp + 0x40]
imul ebp, edi
add ebx, ebp
movzx ebp, byte [esp + 0x34]
imul ebp, ecx
add ebx, ebp
mov ebp, dword [esp + 0x24]
and ebx, 0xff00
or eax, ebx
mov ebx, dword [esp + 0x1c]
add ebx, edx
shr eax, 8
add ebx, edi
add ebx, ecx
mov ecx, dword [esp + 0x30]
shr ecx, 0x10
shl ebx, 0x18
and ebx, 0xff000000
or eax, ebx
movzx edx, al
imul edx, ecx
mov ecx, eax
and ecx, 0xff00
shr ebp, 0x10
imul ecx, ebp
mov ebx, dword [esp + 0x70]
and ecx, 0xff0000
and eax, 0xff0000
and edx, 0xff00
or edx, ecx
mov ecx, dword [esp + 0x2c]
shr ecx, 0x10
imul eax, ecx
and eax, 0xff0000ff
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
and ecx, 0xff0000
mov edi, ebx
shr edi, 0x10
imul eax, edi
imul ecx, edi
movzx edx, dl
imul edx, edi
mov edi, dword [esp + 0x60]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [edi]
mov eax, edx
and eax, 0xf800
shl eax, 5
mov ebp, edx
and ebp, 0x1f
or eax, ebp
add eax, eax
add eax, eax
add eax, eax
shr ecx, 8
or eax, 0x70007
mov ebp, ecx
and ecx, 0xff00
and edx, 0x7e0
or edx, 0x18
and ebp, 0xff00ff
add eax, ebp
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or ecx, ebp
or eax, ecx
mov ecx, edx
shr ecx, 0x10
add ebx, dword [esp + 0xf0]
and ecx, 1
imul ecx, ecx, 0xff00
mov ebp, dword [esp + 0x7c]
shr ecx, 5
shr edx, 5
or ecx, edx
mov edx, eax
and ecx, 0x7e0
shr edx, 3
and edx, 0x1f
or ecx, edx
mov edx, dword [esp + 0xec]
add dword [esp + 0x30], edx
shr eax, 8
and eax, 0xf800
or ecx, eax
mov eax, dword [esp + 0xe8]
add dword [esp + 0x2c], eax
mov word [edi], cx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x78]
add edi, 2
mov dword [esp + 0x60], edi
mov edi, dword [esp + 0x14]
add edi, dword [esp + 0xf4]
mov dword [esp + 0x70], ebx
mov ebx, dword [esp + 0x28]
add ebx, dword [esp + 0xe4]
test ecx, ecx
mov dword [esp + 0x28], ebx
mov dword [esp + 0x14], edi
jg 0x4def00
mov edi, dword [esp + 0xdc]
mov eax, dword [esp + 0x108]
add dword [esp + 0x64], eax
mov ecx, dword [esp + 0x110]
mov edx, dword [esp + 0x100]
add dword [esp + 0x88], ecx
add dword [esp + 0x80], edx
mov ecx, dword [esp + 0x10c]
mov edx, dword [esp + 0xfc]
add dword [esp + 0x84], ecx
add dword [esp + 0x98], edx
add edi, eax
mov eax, dword [esp + 0x18]
add dword [esp + 0x48], eax
mov eax, dword [esp + 0xcc]
add eax, eax
add dword [esp + 0x94], eax
mov eax, dword [esp + 0xf8]
add dword [esp + 0x90], eax
mov eax, dword [esp + 0x104]
add dword [esp + 0x8c], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xdc], edi
jg 0x4ded9c
mov eax, dword [esp + 0xa0]
sub eax, dword [esp + 0x9c]
mov dword [esp + 0x44], eax
je 0x4e000a
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 4]
mov ebx, dword [eax]
mov edx, dword [esp + 0xa4]
mov eax, dword [edx + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x60], ecx
mov dword [esp + 0x24], ebx
call fcn.006372b0
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0xa4]
mov dword [esp + 0xa0], eax
mov eax, dword [edx]
sub eax, ebx
cdq
push edx
push eax
mov eax, dword [esp + 0xa8]
push eax
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x9c]
shl eax, 0x10
sub eax, dword [esp + 0x50]
mov dword [esp + 0x40], ecx
imul ecx
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x20]
mov ecx, eax
mov eax, ebx
add ecx, eax
cmp edx, eax
jge 0x4df9d5
cmp dword [esp + 0x44], 0
jle 0x4e000a
mov eax, dword [esp + 0xf0]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xd4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0xcc]
mov dword [esp + 0x3c], edx
lea edx, [eax + eax]
add ecx, 0xffff
lea eax, [edi + 0xffff]
mov dword [esp + 0x64], edx
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0xac]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0xa0], eax
sub eax, edi
cdq
push edx
mov ebx, eax
push ebx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0xb0]
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x88]
mov ecx, dword [esp + 0xb4]
mov edx, dword [esp + 0xb0]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x80]
mov ecx, dword [esp + 0xc4]
mov edx, dword [esp + 0xc0]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov ecx, dword [esp + 0xd4]
mov edx, dword [esp + 0xd0]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov ecx, dword [esp + 0xbc]
mov edx, dword [esp + 0xb8]
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x3c]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x6c]
push eax
push ebx
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0xa0]
add eax, dword [esp + 0x8c]
mov ecx, edx
sar ecx, 0x10
mov ebx, dword [esp + 0x94]
lea ecx, [ebx + ecx*2]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x28]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4df944
mov edx, dword [esp + 0x50]
add eax, 0xffff8000
add edx, 0xffff8000
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], edx
nop
sub ecx, 1
xor edi, edi
cmp edx, edi
mov dword [esp + 0xcc], ecx
jle 0x4df5e1
mov ecx, edx
and ecx, 0xffff0000
xor ebx, ebx
mov dword [esp + 0x20], ecx
lea edi, [ebp - 1]
sar ecx, 0x10
cmp ecx, edi
setl bl
mov edi, ebx
mov dword [esp + 0x18], ebx
jmp 0x4df5e9
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], edi
xor ecx, ecx
cmp eax, ecx
jle 0x4df621
mov edi, dword [esp + 0x114]
mov ecx, eax
and ecx, 0xffff0000
add edi, 0xffffffff
xor ebx, ebx
mov dword [esp + 0x9c], ecx
sar ecx, 0x10
cmp ecx, edi
mov edi, dword [esp + 0x18]
setge bl
sub ebx, 1
and ebx, ebp
mov dword [esp + 0x10], ebx
jmp 0x4df62c
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x20]
sub edx, dword [esp + 0x20]
sub eax, dword [esp + 0x9c]
sar ebx, 0x10
sar ecx, 0x10
imul ecx, ebp
add ecx, ebx
mov ebx, dword [esi + ecx*4]
lea ebp, [ecx + edi]
mov ebp, dword [esi + ebp*4]
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x10]
add ecx, ebp
mov ebp, dword [esi + ecx*4]
and edx, 0xfffe
add edx, 1
and eax, 0xfffe
add eax, 1
add edi, ecx
mov ecx, dword [esi + edi*4]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x50], edx
shr ebx, 0x18
mov edi, 0x10000
sub edi, edx
mov dword [esp + 0xa0], edi
mov ebp, 0x10000
sub ebp, eax
imul edx, ebp
imul edi, ebp
mov ebp, eax
imul eax, dword [esp + 0x50]
imul ebp, dword [esp + 0xa0]
shr edx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x34]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov dword [esp + 0x20], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff0000
shr ebp, 0x10
imul ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x34]
shr edx, 0x10
mov dword [esp + 0x10], edx
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x18]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add eax, ebx
add eax, edx
movzx edx, byte [esp + 0x14]
movzx ebx, cl
imul edx, ebp
imul ebx, dword [esp + 0x20]
add ebx, edx
movzx edx, byte [esp + 0x34]
imul edx, dword [esp + 0x10]
and eax, 0xff0000ff
mov dword [esp + 0x60], ebp
add ebx, edx
mov edx, dword [esp + 0x18]
movzx ebp, dl
imul ebp, edi
and ecx, 0xff00
imul ecx, dword [esp + 0x20]
add ebx, ebp
mov ebp, dword [esp + 0x10]
and ebx, 0xff00
or eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff00
imul ebx, dword [esp + 0x60]
add ecx, ebx
mov ebx, dword [esp + 0x34]
and edx, 0xff00
imul edx, edi
and ebx, 0xff00
imul ebx, ebp
add ecx, ebx
add ecx, edx
mov edx, dword [esp + 0x60]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x20]
add ecx, edx
add ecx, ebp
add ecx, edi
mov ebp, dword [esp + 0x24]
shl ecx, 0x18
shr eax, 8
and ecx, 0xff000000
or eax, ecx
mov ecx, dword [esp + 0x1c]
mov edx, eax
shr ecx, 0x10
and edx, 0xff0000
imul edx, ecx
movzx ecx, al
shr ebp, 0x10
imul ecx, ebp
mov ebx, dword [esp + 0x48]
and ecx, 0xff00
and eax, 0xff00
and edx, 0xff0000ff
or edx, ecx
mov ecx, dword [esp + 0x2c]
shr ecx, 0x10
imul eax, ecx
and eax, 0xff0000
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
and ecx, 0xff0000
mov edi, ebx
shr edi, 0x10
imul eax, edi
imul ecx, edi
movzx edx, dl
imul edx, edi
mov edi, dword [esp + 0x70]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [edi]
mov eax, edx
and eax, 0xf800
shl eax, 5
mov ebp, edx
and ebp, 0x1f
or eax, ebp
add eax, eax
add eax, eax
shr ecx, 8
add eax, eax
mov ebp, ecx
or eax, 0x70007
and ebp, 0xff00ff
and ecx, 0xff00
and edx, 0x7e0
add eax, ebp
or edx, 0x18
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or ecx, ebp
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
add ebx, dword [esp + 0xf0]
mov ebp, dword [esp + 0x7c]
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
or ecx, edx
mov edx, dword [esp + 0xec]
add dword [esp + 0x24], edx
mov edx, dword [esp + 0x78]
add edx, dword [esp + 0xe4]
shr eax, 8
and eax, 0xf800
or ecx, eax
mov eax, dword [esp + 0xe8]
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0x5c]
add eax, dword [esp + 0xf4]
mov word [edi], cx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xcc]
add edi, 2
test ecx, ecx
mov dword [esp + 0x70], edi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x78], edx
mov dword [esp + 0x5c], eax
jg 0x4df5b0
mov edi, dword [esp + 0xdc]
mov eax, dword [esp + 0x108]
add dword [esp + 0x30], eax
mov ecx, dword [esp + 0x64]
add dword [esp + 0x94], ecx
mov edx, dword [esp + 0x110]
mov ecx, dword [esp + 0xf8]
add dword [esp + 0x88], edx
add dword [esp + 0x90], ecx
mov edx, dword [esp + 0x10c]
mov ecx, dword [esp + 0x104]
add dword [esp + 0x84], edx
add dword [esp + 0x8c], ecx
add edi, eax
mov eax, dword [esp + 0x40]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x100]
add dword [esp + 0x80], eax
mov eax, dword [esp + 0xfc]
add dword [esp + 0x98], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xdc], edi
jg 0x4df449
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret
jle 0x4e000a
cmp dword [esp + 0x44], 0
jle 0x4e000a
mov eax, dword [esp + 0xf0]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xe8]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xe0]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xec]
mov dword [esp + 0xc4], edx
cdq
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0xe4]
mov dword [esp + 0xd4], edx
cdq
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0xf4]
mov dword [esp + 0xbc], edx
cdq
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0xcc]
mov dword [esp + 0x38], eax
lea eax, [edx + edx]
lea edx, [edi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x64], eax
mov dword [esp + 0x30], edx
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0xa8]
sub dword [esp + 0x44], 1
and eax, 0xffff0000
mov dword [esp + 0xa0], eax
sub eax, edi
cdq
push edx
mov ebx, eax
mov eax, dword [esp + 0xb0]
push ebx
push eax
push ecx
mov dword [esp + 0x7c], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x88]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xb0]
push edx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xb8]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x80]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xc0]
push edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0xc8]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x90]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xd0]
push edx
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xd8]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x84]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0xb8]
push edx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xc0]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x98]
mov edx, dword [esp + 0x6c]
mov ecx, dword [esp + 0x38]
push edx
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x40]
push ebx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0xa0]
add eax, dword [esp + 0x8c]
mov ecx, edx
sar ecx, 0x10
mov ebx, dword [esp + 0x94]
lea ecx, [ebx + ecx*2]
mov dword [esp + 0x70], ecx
mov ecx, dword [esp + 0x30]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4dff84
mov edx, dword [esp + 0x50]
add eax, 0xffff8000
add edx, 0xffff8000
mov dword [esp + 0x5c], eax
mov dword [esp + 0x78], edx
lea esp, [esp]
sub ecx, 1
xor edi, edi
cmp edx, edi
mov dword [esp + 0xcc], ecx
jle 0x4dfc21
mov ecx, edx
and ecx, 0xffff0000
xor ebx, ebx
mov dword [esp + 0x20], ecx
lea edi, [ebp - 1]
sar ecx, 0x10
cmp ecx, edi
setl bl
mov edi, ebx
mov dword [esp + 0x18], ebx
jmp 0x4dfc29
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], edi
xor ecx, ecx
cmp eax, ecx
jle 0x4dfc61
mov edi, dword [esp + 0x114]
mov ecx, eax
and ecx, 0xffff0000
add edi, 0xffffffff
xor ebx, ebx
mov dword [esp + 0x9c], ecx
sar ecx, 0x10
cmp ecx, edi
mov edi, dword [esp + 0x18]
setge bl
sub ebx, 1
and ebx, ebp
mov dword [esp + 0x10], ebx
jmp 0x4dfc6c
mov dword [esp + 0x9c], ecx
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x9c]
mov ebx, dword [esp + 0x20]
sub edx, dword [esp + 0x20]
sub eax, dword [esp + 0x9c]
sar ebx, 0x10
sar ecx, 0x10
imul ecx, ebp
add ecx, ebx
mov ebx, dword [esi + ecx*4]
lea ebp, [ecx + edi]
mov ebp, dword [esi + ebp*4]
mov dword [esp + 0x34], ebp
mov ebp, dword [esp + 0x10]
add ecx, ebp
mov ebp, dword [esi + ecx*4]
and edx, 0xfffe
add edx, 1
and eax, 0xfffe
add eax, 1
add edi, ecx
mov ecx, dword [esi + edi*4]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x18], ebx
mov dword [esp + 0x50], edx
shr ebx, 0x18
mov edi, 0x10000
sub edi, edx
mov dword [esp + 0xa0], edi
mov ebp, 0x10000
sub ebp, eax
imul edx, ebp
imul edi, ebp
mov ebp, eax
imul eax, dword [esp + 0x50]
imul ebp, dword [esp + 0xa0]
shr edx, 0x10
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x34]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov dword [esp + 0x20], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff0000
shr ebp, 0x10
imul ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x34]
shr edx, 0x10
mov dword [esp + 0x10], edx
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x18]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add eax, ebx
add eax, edx
movzx edx, byte [esp + 0x14]
movzx ebx, cl
imul edx, ebp
imul ebx, dword [esp + 0x20]
add ebx, edx
movzx edx, byte [esp + 0x34]
imul edx, dword [esp + 0x10]
and eax, 0xff0000ff
mov dword [esp + 0x60], ebp
add ebx, edx
mov edx, dword [esp + 0x18]
movzx ebp, dl
imul ebp, edi
and ecx, 0xff00
imul ecx, dword [esp + 0x20]
add ebx, ebp
mov ebp, dword [esp + 0x10]
and ebx, 0xff00
or eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff00
imul ebx, dword [esp + 0x60]
add ecx, ebx
mov ebx, dword [esp + 0x34]
and edx, 0xff00
imul edx, edi
and ebx, 0xff00
imul ebx, ebp
add ecx, ebx
add ecx, edx
mov edx, dword [esp + 0x60]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x20]
add ecx, edx
add ecx, ebp
add ecx, edi
mov ebp, dword [esp + 0x24]
shl ecx, 0x18
shr eax, 8
and ecx, 0xff000000
or eax, ecx
mov ecx, dword [esp + 0x1c]
mov edx, eax
shr ecx, 0x10
and edx, 0xff0000
imul edx, ecx
movzx ecx, al
shr ebp, 0x10
imul ecx, ebp
mov ebx, dword [esp + 0x48]
and ecx, 0xff00
and eax, 0xff00
and edx, 0xff0000ff
or edx, ecx
mov ecx, dword [esp + 0x2c]
shr ecx, 0x10
imul eax, ecx
and eax, 0xff0000
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
and ecx, 0xff0000
mov edi, ebx
shr edi, 0x10
imul eax, edi
imul ecx, edi
movzx edx, dl
imul edx, edi
mov edi, dword [esp + 0x70]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [edi]
mov eax, edx
and eax, 0xf800
shl eax, 5
mov ebp, edx
and ebp, 0x1f
or eax, ebp
add eax, eax
add eax, eax
shr ecx, 8
add eax, eax
mov ebp, ecx
or eax, 0x70007
and ebp, 0xff00ff
and ecx, 0xff00
and edx, 0x7e0
add eax, ebp
or edx, 0x18
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebp, eax
shr ebp, 8
and ebp, 1
imul ebp, ebp, 0xff
or ecx, ebp
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
add ebx, dword [esp + 0xf0]
mov ebp, dword [esp + 0x7c]
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
or ecx, edx
mov edx, dword [esp + 0xec]
add dword [esp + 0x24], edx
mov edx, dword [esp + 0x78]
add edx, dword [esp + 0xe4]
shr eax, 8
and eax, 0xf800
or ecx, eax
mov eax, dword [esp + 0xe8]
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0x5c]
add eax, dword [esp + 0xf4]
mov word [edi], cx
mov ecx, dword [esp + 0xe0]
add dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0xcc]
add edi, 2
test ecx, ecx
mov dword [esp + 0x70], edi
mov dword [esp + 0x48], ebx
mov dword [esp + 0x78], edx
mov dword [esp + 0x5c], eax
jg 0x4dfbf0
mov edi, dword [esp + 0xdc]
mov eax, dword [esp + 0x108]
add dword [esp + 0x30], eax
mov ecx, dword [esp + 0x64]
add dword [esp + 0x94], ecx
mov edx, dword [esp + 0x110]
mov ecx, dword [esp + 0xf8]
add dword [esp + 0x88], edx
add dword [esp + 0x90], ecx
mov edx, dword [esp + 0x10c]
mov ecx, dword [esp + 0x104]
add dword [esp + 0x84], edx
add dword [esp + 0x8c], ecx
add edi, eax
mov eax, dword [esp + 0x40]
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x100]
add dword [esp + 0x80], eax
mov eax, dword [esp + 0xfc]
add dword [esp + 0x98], eax
cmp dword [esp + 0x44], 0
mov dword [esp + 0xdc], edi
jg 0x4dfa86
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret