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

Disassembly:
sub esp, 0x108
shr edx, 1
push ebx
mov ebx, dword [ecx]
mov dword [esp + 0xf0], edx
mov edx, dword [ecx + 0x10]
push ebp
mov dword [esp + 0x78], edx
mov edx, dword [ecx + 0x18]
push esi
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 + 0x9c], ebx
mov esi, eax
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x88], edi
jle 0x4fc4a0
mov esi, ecx
mov dword [esp + 0x4c], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [edi + 4]
jle 0x4fc4b9
mov dword [esp + 0x4c], edi
mov dword [esp + 0x88], ecx
mov edi, ecx
mov ecx, dword [esp + 0x4c]
mov edx, dword [esi + 4]
cmp edx, dword [ecx + 4]
jle 0x4fc4cb
mov eax, esi
mov esi, ecx
mov dword [esp + 0x4c], eax
mov ecx, eax
mov eax, dword [esp + 0x120]
mov edx, dword [esi + 8]
imul edx, dword [eax]
shr edx, 8
mov dword [esi + 8], edx
mov edx, dword [eax + 4]
imul edx, dword [esi + 0xc]
shr edx, 8
mov dword [esi + 0xc], edx
mov edx, dword [eax + 8]
imul edx, dword [esi + 0x10]
shr edx, 8
mov dword [esi + 0x10], edx
mov edx, dword [eax + 0xc]
imul edx, dword [esi + 0x14]
shr edx, 8
mov dword [esi + 0x14], edx
mov edx, dword [ecx + 8]
imul edx, dword [eax]
shr edx, 8
mov dword [ecx + 8], edx
mov edx, dword [ecx + 0xc]
imul edx, dword [eax + 4]
shr edx, 8
mov dword [ecx + 0xc], edx
mov edx, dword [ecx + 0x10]
imul edx, dword [eax + 8]
shr edx, 8
mov dword [ecx + 0x10], edx
mov edx, dword [eax + 0xc]
imul edx, dword [ecx + 0x14]
shr edx, 8
mov dword [ecx + 0x14], edx
mov edx, dword [edi + 8]
imul edx, dword [eax]
shr edx, 8
mov dword [edi + 8], edx
mov edx, dword [edi + 0xc]
imul edx, dword [eax + 4]
shr edx, 8
mov dword [edi + 0xc], edx
mov edx, dword [edi + 0x10]
imul edx, dword [eax + 8]
shr edx, 8
mov dword [edi + 0x10], edx
mov eax, dword [eax + 0xc]
imul eax, dword [edi + 0x14]
shr eax, 8
mov dword [edi + 0x14], eax
mov edx, dword [esi + 4]
mov dword [esp + 0x10], eax
lea eax, [edx + 0xffff]
sar eax, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [edi + 4]
lea ebp, [eax + 0xffff]
sar ebp, 0x10
cmp dword [esp + 0x18], ebp
mov dword [esp + 0x14], edx
mov dword [esp + 0x44], ebp
je 0x4fe4a2
mov ecx, dword [ecx + 4]
sub eax, edx
cdq
push edx
push eax
add ecx, 0xffff
push 0x10000
sar ecx, 0x10
push 0
mov dword [esp + 0x9c], ecx
call fcn.006372b0
mov ebp, eax
mov eax, dword [edi]
mov ecx, edx
mov edx, dword [esi]
push ecx
sub eax, edx
mov dword [esp + 0x5c], edx
cdq
push ebp
push edx
push eax
mov dword [esp + 0x44], ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esi + 8]
mov dword [esp + 0x104], eax
mov eax, dword [edi + 8]
sub eax, ecx
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x34]
push ecx
cdq
push ebp
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esi + 0xc]
mov dword [esp + 0xec], eax
mov eax, dword [edi + 0xc]
sub eax, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x34]
push ecx
cdq
push ebp
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esi + 0x10]
mov dword [esp + 0xf8], eax
mov eax, dword [edi + 0x10]
sub eax, ecx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x34]
push ecx
cdq
push ebp
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esi + 0x14]
mov dword [esp + 0x10c], eax
mov eax, dword [esp + 0x10]
sub eax, ecx
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x34]
push ecx
cdq
push ebp
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esi + 0x18]
mov dword [esp + 0x110], eax
mov eax, dword [edi + 0x18]
sub eax, ecx
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x34]
push ecx
cdq
push ebp
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov esi, dword [esi + 0x1c]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x108], eax
mov eax, dword [edi + 0x1c]
push ecx
sub eax, esi
cdq
push ebp
push edx
push eax
mov dword [esp + 0x50], esi
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x14]
mov dword [esp + 0x100], eax
mov eax, dword [edx + 4]
sub eax, ebp
cdq
mov edi, eax
mov eax, dword [esp + 0x104]
mov ecx, edx
push ecx
cdq
push edi
mov esi, eax
push edx
push esi
mov dword [esp + 0xa4], ecx
mov dword [esp + 0x44], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x4c]
mov ecx, dword [ecx]
cmp ecx, eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x54], ecx
je 0x4fe4a2
mov eax, dword [esp + 0x18]
shl eax, 0x10
sub eax, ebp
cdq
push edx
mov ebp, eax
mov dword [esp + 0x70], edx
mov edx, dword [esp + 0x38]
push ebp
push edx
push esi
mov dword [esp + 0x78], ebp
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x6c]
mov esi, eax
mov eax, dword [esp + 0xec]
add esi, dword [esp + 0x58]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xe8], esi
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x64], eax
mov eax, dword [esp + 0xf8]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x74], eax
mov eax, dword [esp + 0x10c]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xb8], eax
mov dword [esp + 0xbc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0x110]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x108]
cdq
push ecx
mov dword [esp + 0xe4], eax
mov dword [esp + 0xe8], edx
push ebp
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x100]
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0x100], eax
mov dword [esp + 0x104], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x40]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0x98]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov ecx, dword [esp + 0xb0]
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x94]
push edx
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0xb8]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 8]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x1c]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x30]
sbb ebp, edx
mov edx, dword [esp + 0x34]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xa4]
push ecx
push edi
mov dword [esp + 0xc4], eax
mov eax, dword [esp + 0xa8]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0xc]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x24]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x30]
sbb ebp, edx
mov edx, dword [esp + 0x34]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xac]
push ecx
push edi
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0xb0]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x4c]
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
mov eax, dword [esp + 0x30]
sbb ebp, edx
mov edx, dword [esp + 0x34]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xcc]
push ecx
push edi
mov dword [esp + 0xc0], eax
mov eax, dword [esp + 0xd0]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0x14]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x3c]
mov ebp, edx
cdq
sub ecx, eax
sbb ebp, edx
mov edx, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xe4]
push ecx
push edi
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0xe8]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x38]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x30]
sbb ebp, edx
mov edx, dword [esp + 0x34]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0xf4]
push ecx
push edi
mov dword [esp + 0xe4], eax
mov eax, dword [esp + 0xf8]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x40]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x30]
sbb ebp, edx
mov edx, dword [esp + 0x34]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc4], eax
mov edx, ecx
imul edx, dword [esp + 0xfc]
mov eax, dword [esp + 0x11c]
lea edx, [eax + edx*2]
mov eax, dword [esp + 0x8c]
sub eax, ecx
mov dword [esp + 0x78], edx
mov dword [esp + 0x48], eax
je 0x4fd7bb
mov eax, dword [esp + 0x54]
sub eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x94]
push ecx
cdq
push edi
mov ebp, eax
push 0x10000
mov eax, edx
push 0
mov dword [esp + 0x20], eax
call fcn.006372b0
push edx
push eax
mov eax, dword [esp + 0x18]
push eax
push ebp
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x6c]
push ecx
mov ecx, dword [esp + 0x6c]
mov dword [esp + 0x14], eax
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x4c]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x98]
add ecx, dword [esp + 0x58]
cmp edx, eax
jge 0x4fd1ae
cmp dword [esp + 0x48], 0
jle 0x4fd7bb
mov eax, dword [esp + 0xbc]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0x30], eax
add ecx, 0xffff
lea eax, [esi + 0xffff]
mov dword [esp + 0x34], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0xac]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x14], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xa8]
push ebp
mov edi, eax
push edi
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x64]
mov ecx, dword [esp + 0xa0]
push ebp
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xa8]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0xb4]
push ebp
push edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xb8]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x94]
add eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x90]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x48], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x68]
push ebp
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x70]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0x34]
push ebp
push edi
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x38]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x78]
add eax, dword [esp + 0x84]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0xe0], ecx
mov ecx, dword [esp + 0x24]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4fd130
mov ebp, dword [esp + 0xc8]
lea edi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x18], edi
mov dword [esp + 0x2c], ebp
jmp 0x4fcd7e
mov ecx, dword [esp + 0x14]
mov ebp, dword [esp + 0x2c]
mov edi, dword [esp + 0x18]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x14], ecx
jle 0x4fcda9
mov eax, dword [esp + 0x80]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4fcdad
xor ebp, ebp
xor eax, eax
test edi, edi
jle 0x4fcdeb
mov ecx, dword [esp + 0x114]
and edi, 0xffff0000
mov dword [esp + 0xc8], eax
xor eax, eax
mov edx, edi
sar edx, 0x10
add ecx, 0xffffffff
cmp edx, ecx
setge al
sub eax, 1
and eax, dword [esp + 0x80]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xc8]
jmp 0x4fcdf1
xor edi, edi
mov dword [esp + 0x1c], edi
mov ecx, edi
sar ecx, 0x10
imul ecx, dword [esp + 0x80]
mov edx, ebp
sar edx, 0x10
add ecx, edx
mov edx, dword [ebx + ecx*4]
lea esi, [ecx + eax]
mov esi, dword [ebx + esi*4]
mov dword [esp + 0x50], esi
mov esi, dword [esp + 0x1c]
add ecx, esi
mov esi, dword [ebx + ecx*4]
add ecx, eax
mov eax, dword [esp + 0x18]
sub eax, edi
mov dword [esp + 0x58], esi
mov esi, dword [esp + 0x2c]
sub esi, ebp
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov ecx, dword [ebx + ecx*4]
mov dword [esp + 0x1c], esi
mov dword [esp + 0xf0], edx
shr edx, 0x18
mov ebp, 0x10000
sub ebp, esi
mov esi, ebp
imul ebp, eax
mov edi, 0x10000
sub edi, eax
imul eax, dword [esp + 0x1c]
imul esi, edi
imul edi, dword [esp + 0x1c]
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x50]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x58]
shr edx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, edx
mov edx, ecx
shr edx, 0x18
imul eax, edx
mov edx, dword [esp + 0x58]
shr eax, 0x10
shr edi, 0x10
and edx, 0xff0000
mov dword [esp + 0x28], edi
mov edi, eax
shr ebp, 0x10
imul edx, ebp
mov eax, ecx
and eax, 0xff0000
imul eax, edi
add eax, edx
mov edx, dword [esp + 0x50]
and edx, 0xff0000
imul edx, dword [esp + 0x28]
add eax, edx
mov edx, dword [esp + 0xf0]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
movzx edx, cl
imul edx, edi
mov dword [esp + 0x1c], edi
movzx edi, byte [esp + 0x58]
imul edi, ebp
add edx, edi
movzx edi, byte [esp + 0x50]
and eax, 0xff0000ff
imul edi, dword [esp + 0x28]
mov dword [esp + 0xc8], ebp
add edx, edi
movzx edi, byte [esp + 0xf0]
mov ebp, dword [esp + 0x1c]
imul edi, esi
add edx, edi
mov edi, dword [esp + 0x58]
and edi, 0xff00
imul edi, dword [esp + 0xc8]
and ecx, 0xff00
imul ecx, ebp
add ecx, edi
mov edi, dword [esp + 0x50]
and edi, 0xff00
imul edi, dword [esp + 0x28]
add ecx, edi
mov edi, dword [esp + 0xf0]
and edi, 0xff00
imul edi, esi
and edx, 0xff00
or eax, edx
add ecx, edi
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0xc8]
add ebp, ecx
add ebp, dword [esp + 0x28]
shr eax, 8
add ebp, esi
shl ebp, 0x18
and ebp, 0xff000000
or eax, ebp
mov edx, eax
and edx, 0xff000000
cmp edx, 0x8000000
jbe 0x4fd0d4
mov edx, dword [esp + 0x120]
mov ecx, dword [edx + 4]
imul ecx, dword [esp + 0x40]
mov esi, dword [edx]
mov edi, eax
imul esi, dword [esp + 0x54]
shr ecx, 0x18
and edi, 0xff0000
imul ecx, edi
mov edi, dword [edx + 0xc]
mov edx, dword [edx + 8]
imul edi, dword [esp + 0x3c]
imul edx, dword [esp + 0x38]
shr edx, 0x18
movzx ebp, al
and eax, 0xff00
imul edx, eax
shr edi, 0x18
imul edi, ebp
and edx, 0xff0000
and ecx, 0xff0000ff
and edi, 0xff00
or ecx, edi
or ecx, edx
shr ecx, 8
mov edx, ecx
and edx, 0xff0000
mov eax, ecx
and eax, 0xff00
movzx ecx, cl
shr esi, 0x18
imul edx, esi
imul eax, esi
imul ecx, esi
mov esi, dword [esp + 0xe0]
and edx, 0xff0000ff
and eax, 0xff0000
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [esi]
mov eax, ecx
and eax, 0xf800
mov edi, ecx
shr edx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, edx
and edx, 0xff00
add eax, eax
and ecx, 0x7e0
add eax, eax
or ecx, 0x18
add eax, eax
and edi, 0xff00ff
shl ecx, 5
add ecx, edx
or eax, 0x70007
add eax, edi
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or edx, edi
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr ecx, 5
shr edx, 5
or edx, ecx
mov ecx, eax
shr ecx, 3
and edx, 0x7e0
and ecx, 0x1f
shr eax, 8
or edx, ecx
and eax, 0xf800
or edx, eax
mov word [esi], dx
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xb8]
add dword [esp + 0x54], edx
add dword [esp + 0x40], eax
add dword [esp + 0x38], ecx
mov edx, dword [esp + 0xd4]
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xc4]
add dword [esp + 0xe0], 2
add dword [esp + 0x3c], edx
add dword [esp + 0x2c], eax
add dword [esp + 0x18], ecx
cmp dword [esp + 0x14], 0
jg 0x4fcd72
mov esi, dword [esp + 0xd8]
mov eax, dword [esp + 0x104]
add dword [esp + 0x20], eax
mov edx, dword [esp + 0x10]
add dword [esp + 0x24], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x10c]
add dword [esp + 0x74], ecx
add dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x100]
add dword [esp + 0x60], ecx
add dword [esp + 0x84], edx
add esi, eax
mov eax, dword [esp + 0xfc]
add eax, eax
add dword [esp + 0x78], eax
mov eax, dword [esp + 0xec]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0x110]
add dword [esp + 0x7c], eax
cmp dword [esp + 0x48], 0
mov dword [esp + 0xd8], esi
jg 0x4fcc34
jmp 0x4fd7bb
jle 0x4fd7bb
cmp dword [esp + 0x48], 0
jle 0x4fd7bb
mov eax, dword [esp + 0xbc]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0x30], eax
lea eax, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x34], edx
mov dword [esp + 0x58], eax
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0xac]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x14], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xa8]
push ebp
mov edi, eax
push edi
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x64]
mov ecx, dword [esp + 0xa0]
push ebp
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xa8]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0xb4]
push ebp
push edi
mov dword [esp + 0x5c], eax
mov eax, dword [esp + 0xb8]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x94]
add eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x90]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0xf0], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x68]
push ebp
mov dword [esp + 0xf4], eax
mov eax, dword [esp + 0x70]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0x34]
push ebp
push edi
mov dword [esp + 0xd0], eax
mov eax, dword [esp + 0x38]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x14]
mov edi, dword [esp + 0x78]
add eax, dword [esp + 0x84]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x58]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4fd742
mov ebp, dword [esp + 0xc8]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x50], esi
mov dword [esp + 0x28], ebp
jmp 0x4fd39f
mov ecx, dword [esp + 0xc8]
mov ebp, dword [esp + 0x28]
mov esi, dword [esp + 0x50]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xc8], ecx
jle 0x4fd3cd
mov eax, dword [esp + 0x80]
and ebp, 0xffff0000
mov edx, ebp
add eax, 0xffffffff
xor ecx, ecx
sar edx, 0x10
cmp edx, eax
setl cl
mov eax, ecx
jmp 0x4fd3d1
xor ebp, ebp
xor eax, eax
test esi, esi
jle 0x4fd409
mov ecx, dword [esp + 0x114]
and esi, 0xffff0000
mov dword [esp + 0x24], eax
xor eax, eax
mov edx, esi
sar edx, 0x10
add ecx, 0xffffffff
cmp edx, ecx
setge al
sub eax, 1
and eax, dword [esp + 0x80]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x24]
jmp 0x4fd40f
xor esi, esi
mov dword [esp + 0x14], esi
mov ecx, esi
sar ecx, 0x10
imul ecx, dword [esp + 0x80]
mov edx, ebp
sar edx, 0x10
add ecx, edx
mov edi, dword [ebx + ecx*4]
lea edx, [ecx + eax]
mov edx, dword [ebx + edx*4]
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x14]
add ecx, edx
mov edx, dword [ebx + ecx*4]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x28]
sub edx, ebp
add eax, ecx
mov ecx, dword [ebx + eax*4]
mov eax, dword [esp + 0x50]
sub eax, esi
and edx, 0xfffe
add edx, 1
and eax, 0xfffe
add eax, 1
mov esi, 0x10000
sub esi, edx
mov dword [esp + 0x20], esi
mov ebp, 0x10000
sub ebp, eax
imul esi, ebp
mov dword [esp + 0x24], edi
mov dword [esp + 0x14], edx
shr edi, 0x18
shr esi, 0x10
imul esi, edi
mov edi, edx
mov edx, dword [esp + 0x2c]
imul edi, ebp
mov ebp, eax
imul eax, dword [esp + 0x14]
imul ebp, dword [esp + 0x20]
shr edx, 0x18
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x18]
shr edx, 0x18
shr ebp, 0x10
imul ebp, edx
shr eax, 0x10
mov edx, ecx
shr edx, 0x18
imul eax, edx
shr eax, 0x10
mov edx, eax
mov dword [esp + 0x20], edx
mov eax, ecx
and eax, 0xff0000
imul eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff0000
shr ebp, 0x10
imul edx, ebp
add eax, edx
mov edx, dword [esp + 0x2c]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add eax, edx
mov edx, dword [esp + 0x24]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
mov dword [esp + 0x3c], ebp
movzx ebp, byte [esp + 0x18]
imul ebp, dword [esp + 0x3c]
movzx edx, cl
imul edx, dword [esp + 0x20]
and eax, 0xff0000ff
add edx, ebp
movzx ebp, byte [esp + 0x2c]
imul ebp, edi
add edx, ebp
movzx ebp, byte [esp + 0x24]
imul ebp, esi
add edx, ebp
mov ebp, dword [esp + 0x18]
and ecx, 0xff00
imul ecx, dword [esp + 0x20]
and ebp, 0xff00
imul ebp, dword [esp + 0x3c]
add ecx, ebp
mov ebp, dword [esp + 0x2c]
and ebp, 0xff00
imul ebp, edi
add ecx, ebp
mov ebp, dword [esp + 0x24]
and ebp, 0xff00
imul ebp, esi
add ecx, ebp
and ecx, 0xff0000
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x3c]
or eax, ecx
mov ecx, dword [esp + 0x20]
add ecx, edx
add ecx, edi
add ecx, esi
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, eax
and ecx, 0xff000000
cmp ecx, 0x8000000
jbe 0x4fd6e0
mov edx, dword [esp + 0x120]
mov ecx, dword [edx + 4]
imul ecx, dword [esp + 0x54]
mov esi, dword [edx]
mov edi, eax
imul esi, dword [esp + 0x40]
shr ecx, 0x18
and edi, 0xff0000
imul ecx, edi
mov edi, dword [edx + 0xc]
mov edx, dword [edx + 8]
imul edi, dword [esp + 0xf0]
imul edx, dword [esp + 0xe0]
shr edx, 0x18
movzx ebp, al
and eax, 0xff00
imul edx, eax
shr edi, 0x18
imul edi, ebp
and edx, 0xff0000
and ecx, 0xff0000ff
and edi, 0xff00
or ecx, edi
or ecx, edx
shr ecx, 8
mov edx, ecx
and edx, 0xff0000
mov eax, ecx
and eax, 0xff00
movzx ecx, cl
shr esi, 0x18
imul edx, esi
imul eax, esi
imul ecx, esi
mov esi, dword [esp + 0x38]
and edx, 0xff0000ff
and eax, 0xff0000
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [esi]
mov eax, ecx
and eax, 0xf800
mov edi, ecx
shr edx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, edx
and edx, 0xff00
add eax, eax
and ecx, 0x7e0
add eax, eax
or ecx, 0x18
add eax, eax
and edi, 0xff00ff
shl ecx, 5
add ecx, edx
or eax, 0x70007
add eax, edi
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or edx, edi
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr ecx, 5
shr edx, 5
or edx, ecx
mov ecx, eax
shr ecx, 3
and edx, 0x7e0
and ecx, 0x1f
shr eax, 8
or edx, ecx
and eax, 0xf800
or edx, eax
mov word [esi], dx
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xb8]
add dword [esp + 0x40], edx
add dword [esp + 0x54], eax
add dword [esp + 0xe0], ecx
mov edx, dword [esp + 0xd4]
mov eax, dword [esp + 0xdc]
mov ecx, dword [esp + 0xc4]
add dword [esp + 0x38], 2
add dword [esp + 0xf0], edx
add dword [esp + 0x28], eax
add dword [esp + 0x50], ecx
cmp dword [esp + 0xc8], 0
jg 0x4fd390
mov esi, dword [esp + 0xd8]
mov eax, dword [esp + 0x104]
add dword [esp + 0x58], eax
mov edx, dword [esp + 0x10]
add dword [esp + 0x1c], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x10c]
add dword [esp + 0x74], ecx
add dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x100]
add dword [esp + 0x60], ecx
add dword [esp + 0x84], edx
add esi, eax
mov eax, dword [esp + 0xfc]
add eax, eax
add dword [esp + 0x78], eax
mov eax, dword [esp + 0xec]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0x110]
add dword [esp + 0x7c], eax
cmp dword [esp + 0x48], 0
mov dword [esp + 0xd8], esi
jg 0x4fd24b
mov eax, dword [esp + 0x44]
sub eax, dword [esp + 0x8c]
mov dword [esp + 0x48], eax
je 0x4fe4a2
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + 4]
mov edi, dword [eax]
mov ebp, dword [esp + 0x88]
mov eax, dword [ebp + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x20], ecx
call fcn.006372b0
mov ecx, eax
mov eax, edx
mov dword [esp + 0x44], eax
mov eax, dword [ebp]
sub eax, edi
cdq
push edx
push eax
mov eax, dword [esp + 0x4c]
push eax
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x8c]
shl eax, 0x10
sub eax, dword [esp + 0x10]
mov dword [esp + 0x14], ecx
imul ecx
mov cl, 0x10
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x98]
add ecx, edi
cmp eax, edi
jge 0x4fde69
cmp dword [esp + 0x48], 0
jle 0x4fe4a2
mov eax, dword [esp + 0xbc]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x6c], edx
cdq
add ecx, 0xffff
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0xfc]
mov dword [esp + 0x30], eax
mov dword [esp + 0x54], ecx
lea eax, [edx + edx]
lea ecx, [esi + 0xffff]
mov dword [esp + 0xe0], eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x40]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x44], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xac]
push ebp
mov edi, eax
mov eax, dword [esp + 0xac]
push edi
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0xa4]
add eax, dword [esp + 0x64]
mov edx, dword [esp + 0xa0]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x2c], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x74]
mov ecx, dword [esp + 0xb0]
push ebp
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0xb8]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x94]
push ebp
push edi
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x98]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x6c]
add eax, dword [esp + 0x7c]
mov edx, dword [esp + 0x68]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x4c], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x30]
push ebp
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x78]
add eax, dword [esp + 0x84]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0x88], ecx
mov ecx, dword [esp + 0x54]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4fdde7
mov ebp, dword [esp + 0x10]
lea esi, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x28], esi
mov dword [esp + 0x38], ebp
jmp 0x4fda34
mov esi, dword [esp + 0x28]
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xc8], ecx
jle 0x4fda60
mov eax, dword [esp + 0x80]
and ebp, 0xffff0000
mov edx, ebp
sar edx, 0x10
add eax, 0xffffffff
xor ecx, ecx
cmp edx, eax
setl cl
jmp 0x4fda64
xor ebp, ebp
xor ecx, ecx
test esi, esi
jle 0x4fda9c
mov eax, dword [esp + 0x114]
and esi, 0xffff0000
mov dword [esp + 0x44], ecx
xor ecx, ecx
mov edx, esi
sar edx, 0x10
add eax, 0xffffffff
cmp edx, eax
setge cl
sub ecx, 1
and ecx, dword [esp + 0x80]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + 0x44]
jmp 0x4fdaa2
xor esi, esi
mov dword [esp + 0x10], esi
mov eax, esi
sar eax, 0x10
imul eax, dword [esp + 0x80]
mov edx, ebp
sar edx, 0x10
add eax, edx
mov edx, dword [ebx + eax*4]
lea edi, [eax + ecx]
mov edi, dword [ebx + edi*4]
mov dword [esp + 0x2c], edi
mov edi, dword [esp + 0x10]
add eax, edi
mov edi, dword [ebx + eax*4]
add ecx, eax
mov ecx, dword [ebx + ecx*4]
mov eax, dword [esp + 0x28]
sub eax, esi
mov dword [esp + 0x18], edi
mov edi, dword [esp + 0x38]
sub edi, ebp
and eax, 0xfffe
add eax, 1
and edi, 0xfffe
add edi, 1
mov esi, 0x10000
sub esi, edi
mov dword [esp + 0x44], esi
mov ebx, 0x10000
sub ebx, eax
imul esi, ebx
mov dword [esp + 0x10], edi
imul edi, ebx
mov ebx, dword [esp + 0x2c]
shr ebx, 0x18
shr esi, 0x10
mov ebp, edx
shr ebp, 0x18
imul esi, ebp
mov ebp, eax
imul eax, dword [esp + 0x10]
imul ebp, dword [esp + 0x44]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x18]
shr ebx, 0x18
shr ebp, 0x10
imul ebp, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov dword [esp + 0x98], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x18]
and ebx, 0xff0000
shr ebp, 0x10
imul ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x2c]
and ebx, 0xff0000
shr edi, 0x10
imul ebx, edi
add eax, ebx
mov ebx, edx
and ebx, 0xff0000
shr esi, 0x10
imul ebx, esi
add eax, ebx
mov dword [esp + 0x8c], ebp
movzx ebp, byte [esp + 0x18]
imul ebp, dword [esp + 0x8c]
movzx ebx, cl
imul ebx, dword [esp + 0x98]
add ebx, ebp
movzx ebp, byte [esp + 0x2c]
and eax, 0xff0000ff
imul ebp, edi
add ebx, ebp
movzx ebp, dl
imul ebp, esi
and ecx, 0xff00
imul ecx, dword [esp + 0x98]
add ebx, ebp
mov ebp, dword [esp + 0x18]
and ebp, 0xff00
imul ebp, dword [esp + 0x8c]
add ecx, ebp
mov ebp, dword [esp + 0x2c]
and ebp, 0xff00
and edx, 0xff00
imul ebp, edi
imul edx, esi
add ecx, ebp
add ecx, edx
mov edx, dword [esp + 0x8c]
and ecx, 0xff0000
and ebx, 0xff00
or eax, ebx
or eax, ecx
mov ecx, dword [esp + 0x98]
add ecx, edx
add ecx, edi
add ecx, esi
shl ecx, 0x18
and ecx, 0xff000000
shr eax, 8
or eax, ecx
mov ecx, eax
and ecx, 0xff000000
cmp ecx, 0x8000000
jbe 0x4fdd7c
mov edx, dword [esp + 0x120]
mov ecx, dword [edx + 4]
imul ecx, dword [esp + 0x24]
mov esi, dword [edx]
mov edi, eax
imul esi, dword [esp + 0x1c]
shr ecx, 0x18
and edi, 0xff0000
imul ecx, edi
mov edi, dword [edx + 0xc]
mov edx, dword [edx + 8]
imul edi, dword [esp + 0x3c]
imul edx, dword [esp + 0x20]
shr edx, 0x18
movzx ebx, al
and eax, 0xff00
imul edx, eax
shr edi, 0x18
imul edi, ebx
and edx, 0xff0000
and ecx, 0xff0000ff
and edi, 0xff00
or ecx, edi
or ecx, edx
shr ecx, 8
mov edx, ecx
and edx, 0xff0000
mov eax, ecx
and eax, 0xff00
movzx ecx, cl
shr esi, 0x18
imul edx, esi
imul eax, esi
imul ecx, esi
mov esi, dword [esp + 0x88]
and edx, 0xff0000ff
and eax, 0xff0000
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [esi]
mov eax, ecx
and eax, 0xf800
mov edi, ecx
shr edx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, edx
and edx, 0xff00
add eax, eax
and ecx, 0x7e0
add eax, eax
or ecx, 0x18
add eax, eax
and edi, 0xff00ff
shl ecx, 5
add ecx, edx
or eax, 0x70007
add eax, edi
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or edx, edi
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr ecx, 5
shr edx, 5
or edx, ecx
mov ecx, eax
shr ecx, 3
and edx, 0x7e0
and ecx, 0x1f
shr eax, 8
or edx, ecx
and eax, 0xf800
or edx, eax
mov word [esi], dx
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xb8]
add dword [esp + 0x1c], edx
add dword [esp + 0x24], eax
mov ebp, dword [esp + 0x38]
add dword [esp + 0x20], ecx
mov edx, dword [esp + 0xd4]
add ebp, dword [esp + 0xdc]
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0xc8]
add dword [esp + 0x88], 2
add dword [esp + 0x3c], edx
add dword [esp + 0x28], eax
test ecx, ecx
mov ebx, dword [esp + 0x9c]
mov dword [esp + 0x38], ebp
jg 0x4fda30
mov esi, dword [esp + 0xd8]
mov eax, dword [esp + 0x104]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0xe0]
add dword [esp + 0x40], eax
add dword [esp + 0x54], ecx
add dword [esp + 0x78], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x10c]
add dword [esp + 0x74], ecx
add dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x100]
add dword [esp + 0x60], ecx
add dword [esp + 0x84], edx
add esi, eax
mov eax, dword [esp + 0xec]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0x110]
add dword [esp + 0x7c], eax
cmp dword [esp + 0x48], 0
mov dword [esp + 0xd8], esi
jg 0x4fd8f2
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret
jle 0x4fe4a2
cmp dword [esp + 0x48], 0
jle 0x4fe4a2
mov eax, dword [esp + 0xbc]
cdq
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0xac], edx
cdq
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0xb8]
mov dword [esp + 0xa4], edx
cdq
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0xd4]
mov dword [esp + 0xb4], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xdc]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc4]
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xfc]
mov dword [esp + 0x34], edx
lea edx, [eax + eax]
lea eax, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0xe0], edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x40], ecx
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0xac]
sub dword [esp + 0x48], 1
and eax, 0xffff0000
mov dword [esp + 0x44], eax
sub eax, esi
cdq
mov ebp, edx
mov edx, dword [esp + 0xa8]
push ebp
mov edi, eax
push edi
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x64]
mov ecx, dword [esp + 0xa0]
push ebp
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0xa8]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x74]
mov edx, dword [esp + 0xb4]
push ebp
push edi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0xb8]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [esp + 0x94]
add eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x90]
push ebp
push edi
push ecx
push edx
mov dword [esp + 0x34], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x68]
push ebp
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x70]
push edi
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x60]
mov edx, dword [esp + 0x34]
push ebp
push edi
mov dword [esp + 0xa4], eax
mov eax, dword [esp + 0x38]
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x44]
mov edi, dword [esp + 0x78]
add eax, dword [esp + 0x84]
mov ecx, edx
sar ecx, 0x10
lea ecx, [edi + ecx*2]
mov dword [esp + 0x8c], ecx
mov ecx, dword [esp + 0x38]
and ecx, 0xffff0000
sub ecx, edx
sar ecx, 0x10
test ecx, ecx
jle 0x4fe42b
mov esi, dword [esp + 0x9c]
add eax, 0xffff8000
add esi, 0xffff8000
mov dword [esp + 0x50], eax
mov dword [esp + 0x3c], esi
jmp 0x4fe064
mov eax, dword [esp + 0x50]
sub ecx, 1
mov dword [esp + 0x10], ecx
xor ecx, ecx
cmp esi, ecx
jle 0x4fe099
mov edi, dword [esp + 0x80]
and esi, 0xffff0000
mov edx, esi
mov dword [esp + 0x44], eax
xor eax, eax
add edi, 0xffffffff
sar edx, 0x10
cmp edx, edi
setl al
mov edi, eax
mov eax, dword [esp + 0x44]
jmp 0x4fe09d
xor esi, esi
xor edi, edi
cmp eax, ecx
jle 0x4fe0da
mov edx, dword [esp + 0x114]
mov ecx, eax
and ecx, 0xffff0000
mov eax, ecx
mov dword [esp + 0x44], ecx
xor ecx, ecx
sar eax, 0x10
add edx, 0xffffffff
cmp eax, edx
setge cl
sub ecx, 1
and ecx, dword [esp + 0x80]
mov dword [esp + 0x9c], ecx
mov ecx, dword [esp + 0x44]
jmp 0x4fe0e1
mov dword [esp + 0x9c], ecx
mov eax, ecx
sar eax, 0x10
imul eax, dword [esp + 0x80]
mov edx, esi
sar edx, 0x10
add eax, edx
mov edx, dword [ebx + eax*4]
lea ebp, [eax + edi]
mov ebp, dword [ebx + ebp*4]
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x9c]
add eax, ebp
mov ebp, dword [ebx + eax*4]
add edi, eax
mov eax, dword [ebx + edi*4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x50]
sub eax, ecx
mov dword [esp + 0x2c], ebp
mov ebp, dword [esp + 0x3c]
sub ebp, esi
and eax, 0xfffe
add eax, 1
and ebp, 0xfffe
add ebp, 1
mov dword [esp + 0x98], edx
shr edx, 0x18
mov ecx, 0x10000
sub ecx, ebp
mov dword [esp + 0x44], ecx
mov edi, 0x10000
sub edi, eax
imul ecx, edi
mov esi, ebp
imul esi, edi
mov edi, eax
imul eax, ebp
imul edi, dword [esp + 0x44]
shr ecx, 0x10
imul ecx, edx
mov edx, dword [esp + 0x28]
shr edx, 0x18
shr esi, 0x10
imul esi, edx
mov edx, dword [esp + 0x2c]
shr edx, 0x18
shr eax, 0x10
shr edi, 0x10
imul edi, edx
mov edx, dword [esp + 0x18]
shr edx, 0x18
imul eax, edx
mov edx, dword [esp + 0x2c]
shr eax, 0x10
mov ebp, eax
mov eax, dword [esp + 0x18]
and edx, 0xff00
and eax, 0xff00
imul eax, ebp
shr edi, 0x10
imul edx, edi
add eax, edx
mov edx, dword [esp + 0x28]
and edx, 0xff00
shr esi, 0x10
imul edx, esi
add eax, edx
mov edx, dword [esp + 0x98]
and edx, 0xff00
shr ecx, 0x10
imul edx, ecx
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff0000
imul edx, ebp
mov dword [esp + 0x9c], ebp
mov ebp, dword [esp + 0x2c]
and ebp, 0xff0000
imul ebp, edi
and eax, 0xff0000
add edx, ebp
mov ebp, dword [esp + 0x28]
and ebp, 0xff0000
imul ebp, esi
add edx, ebp
mov ebp, dword [esp + 0x98]
and ebp, 0xff0000
imul ebp, ecx
add edx, ebp
movzx ebp, byte [esp + 0x2c]
and edx, 0xff0000ff
imul ebp, edi
or eax, edx
movzx edx, byte [esp + 0x18]
imul edx, dword [esp + 0x9c]
add edx, ebp
movzx ebp, byte [esp + 0x28]
imul ebp, esi
add edx, ebp
movzx ebp, byte [esp + 0x98]
imul ebp, ecx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x9c]
add edx, edi
add edx, esi
add edx, ecx
shl edx, 0x18
shr eax, 8
and edx, 0xff000000
or eax, edx
mov ecx, eax
and ecx, 0xff000000
cmp ecx, 0x8000000
jbe 0x4fe3c7
mov edx, dword [esp + 0x120]
mov ecx, dword [edx + 8]
imul ecx, dword [esp + 0x24]
mov esi, dword [edx]
mov edi, eax
imul esi, dword [esp + 0x88]
shr ecx, 0x18
and edi, 0xff00
imul ecx, edi
mov edi, dword [edx + 4]
mov edx, dword [edx + 0xc]
imul edi, dword [esp + 0x1c]
imul edx, dword [esp + 0x20]
shr edx, 0x18
mov ebp, eax
movzx eax, al
imul edx, eax
shr edi, 0x18
and edx, 0xff00
and ebp, 0xff0000
imul edi, ebp
and ecx, 0xff0000
and edi, 0xff0000ff
or ecx, edi
or ecx, edx
shr ecx, 8
mov edx, ecx
and edx, 0xff0000
mov eax, ecx
and eax, 0xff00
movzx ecx, cl
shr esi, 0x18
imul edx, esi
imul eax, esi
imul ecx, esi
mov esi, dword [esp + 0x8c]
and edx, 0xff0000ff
and eax, 0xff0000
or edx, eax
and ecx, 0xff00
or edx, ecx
movzx ecx, word [esi]
mov eax, ecx
and eax, 0xf800
mov edi, ecx
shr edx, 8
shl eax, 5
and edi, 0x1f
or eax, edi
mov edi, edx
and edx, 0xff00
add eax, eax
add eax, eax
and ecx, 0x7e0
add eax, eax
and edi, 0xff00ff
or ecx, 0x18
or eax, 0x70007
add eax, edi
shl ecx, 5
add ecx, edx
mov edx, eax
shr edx, 0x18
and edx, 1
imul edx, edx, 0xff0000
mov edi, eax
shr edi, 8
and edi, 1
imul edi, edi, 0xff
or edx, edi
or eax, edx
mov edx, ecx
shr edx, 0x10
and edx, 1
imul edx, edx, 0xff00
shr edx, 5
shr ecx, 5
or edx, ecx
mov ecx, eax
and edx, 0x7e0
shr ecx, 3
and ecx, 0x1f
shr eax, 8
or edx, ecx
and eax, 0xf800
or edx, eax
mov word [esi], dx
mov edx, dword [esp + 0xbc]
mov eax, dword [esp + 0xc0]
mov ecx, dword [esp + 0xb8]
add dword [esp + 0x88], edx
add dword [esp + 0x1c], eax
mov esi, dword [esp + 0x3c]
add dword [esp + 0x24], ecx
mov edx, dword [esp + 0xd4]
add esi, dword [esp + 0xdc]
mov eax, dword [esp + 0xc4]
mov ecx, dword [esp + 0x10]
add dword [esp + 0x8c], 2
add dword [esp + 0x20], edx
add dword [esp + 0x50], eax
test ecx, ecx
mov dword [esp + 0x3c], esi
jg 0x4fe060
mov esi, dword [esp + 0xd8]
mov eax, dword [esp + 0x104]
mov ecx, dword [esp + 0x14]
mov edx, dword [esp + 0xe0]
add dword [esp + 0x38], eax
add dword [esp + 0x40], ecx
add dword [esp + 0x78], edx
mov ecx, dword [esp + 0xf8]
mov edx, dword [esp + 0x10c]
add dword [esp + 0x74], ecx
add dword [esp + 0x5c], edx
mov ecx, dword [esp + 0x108]
mov edx, dword [esp + 0x100]
add dword [esp + 0x60], ecx
add dword [esp + 0x84], edx
add esi, eax
mov eax, dword [esp + 0xec]
add dword [esp + 0x64], eax
mov eax, dword [esp + 0x110]
add dword [esp + 0x7c], eax
cmp dword [esp + 0x48], 0
mov dword [esp + 0xd8], esi
jg 0x4fdf17
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x108
ret