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

Disassembly:
sub esp, 0xb0
push ebx
mov ebx, dword [ecx + 0x10]
shr edx, 1
push ebp
push esi
mov dword [esp + 0xa0], edx
mov edx, dword [ecx + 0x18]
push edi
mov edi, dword [ecx]
mov dword [esp + 0xbc], edx
mov edx, dword [eax + 4]
cmp edx, dword [eax + 0x24]
lea ecx, [eax + 0x20]
lea esi, [eax + 0x40]
mov dword [esp + 0x44], ebx
mov ebp, eax
mov dword [esp + 0x6c], ecx
mov dword [esp + 0xa0], esi
jle 0x4eed09
mov ebp, ecx
mov dword [esp + 0x6c], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [esi + 4]
jle 0x4eed25
mov dword [esp + 0xa0], ecx
mov dword [esp + 0x6c], esi
mov ecx, esi
mov esi, dword [esp + 0xa0]
mov edx, dword [ebp + 4]
cmp edx, dword [ecx + 4]
jle 0x4eed37
mov eax, ebp
mov ebp, ecx
mov dword [esp + 0x6c], eax
mov ecx, eax
mov eax, dword [ebp + 4]
lea edx, [eax + 0xffff]
mov eax, dword [esi + 4]
lea esi, [eax + 0xffff]
sar edx, 0x10
sar esi, 0x10
cmp edx, esi
mov dword [esp + 0x20], edx
mov dword [esp + 0x34], esi
je 0x4f0395
mov ecx, dword [ecx + 4]
mov dword [esp + 0x18], ecx
add ecx, 0xffff
sar ecx, 0x10
mov dword [esp + 0x68], ecx
mov ecx, dword [ebp + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov esi, eax
mov eax, dword [esp + 0xa0]
mov eax, dword [eax]
mov ecx, edx
mov edx, dword [ebp]
push ecx
sub eax, edx
mov dword [esp + 0x20], edx
cdq
push esi
push edx
push eax
mov dword [esp + 0xa4], ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0xac], eax
mov eax, dword [ecx + 0x18]
sub eax, dword [ebp + 0x18]
mov ecx, dword [esp + 0x94]
push ecx
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0xa0]
mov ecx, dword [esp + 0x94]
mov dword [esp + 0xb8], eax
mov eax, dword [edx + 0x1c]
sub eax, dword [ebp + 0x1c]
push ecx
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov dword [esp + 0xa8], eax
mov eax, dword [esp + 0x18]
sub eax, dword [ebp + 4]
cdq
mov ecx, eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x5c], edx
cdq
mov esi, eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
push edx
push esi
mov dword [esp + 0x68], ecx
mov dword [esp + 0xa4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x6c]
mov ecx, dword [ecx]
cmp ecx, eax
mov dword [esp + 0x64], eax
mov dword [esp + 0x10], ecx
je 0x4f0395
mov eax, dword [esp + 0x20]
shl eax, 0x10
sub eax, dword [ebp + 4]
cdq
push edx
mov dword [esp + 0x78], edx
mov edx, dword [esp + 0x98]
push eax
push edx
push esi
mov dword [esp + 0x80], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [ebp + 0x18]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x74]
mov esi, eax
mov eax, dword [esp + 0xb8]
add esi, dword [esp + 0x1c]
push ecx
mov ecx, dword [esp + 0x74]
cdq
push ecx
push edx
push eax
mov dword [esp + 0x8c], esi
mov dword [esp + 0xc0], eax
mov dword [esp + 0xc4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x74]
mov ebp, dword [ebp + 0x1c]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0xac]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], edx
mov dword [esp + 0x58], ebp
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, ebp
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x64]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov ecx, dword [esp + 0xb4]
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x5c]
push edx
mov edx, dword [esp + 0xb4]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x6c]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x24]
sbb edx, ebp
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x80]
sbb ebp, edx
mov edx, dword [esp + 0x84]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x5c]
mov edx, dword [esp + 0x58]
push ecx
mov ecx, dword [esp + 0x9c]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xa0]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ebp, edx
mov edx, dword [esp + 0x6c]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebp
mov ecx, eax
mov eax, dword [esp + 0x48]
mov ebp, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x80]
sbb ebp, edx
mov edx, dword [esp + 0x84]
push edx
push eax
push ebp
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x20]
mov edx, ecx
imul edx, dword [esp + 0xa4]
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0xc4]
lea edx, [eax + edx*2]
mov eax, dword [esp + 0x68]
sub eax, ecx
mov dword [esp + 0x54], edx
mov dword [esp + 0x2c], eax
je 0x4ef9e5
mov eax, dword [esp + 0x10]
sub eax, dword [esp + 0x1c]
mov ecx, dword [esp + 0x58]
cdq
mov ebx, eax
mov eax, dword [esp + 0x5c]
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 + 0x6c]
mov ebx, dword [esp + 0x44]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x64]
add ecx, dword [esp + 0x1c]
cmp edx, eax
jge 0x4ef535
cmp dword [esp + 0x2c], 0
jle 0x4ef9e5
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x58], eax
add ecx, 0xffff
lea eax, [esi + 0xffff]
mov dword [esp + 0x5c], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
mov ebp, dword [esp + 0x20]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x2c], 1
and ebp, 0xffff0000
mov eax, ebp
sub eax, esi
cdq
push edx
push eax
mov dword [esp + 0x8c], edx
mov edx, dword [esp + 0x78]
push ecx
push edx
mov dword [esp + 0x90], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x80]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x84]
push eax
mov eax, dword [esp + 0x5c]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x54]
add eax, dword [esp + 0x50]
mov ecx, ebp
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x3c], ecx
mov ecx, dword [esp + 0x24]
and ecx, 0xffff0000
sub ecx, ebp
sar ecx, 0x10
test ecx, ecx
jle 0x4ef4e9
mov ebp, dword [esp + 0x14]
lea edx, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x30], edx
mov dword [esp + 0x38], ebp
jmp 0x4ef190
sub ecx, 1
test ebp, ebp
mov dword [esp + 0xb0], ecx
jle 0x4ef1c3
and ebp, 0xffff0000
mov eax, ebp
mov dword [esp + 0x14], edx
xor edx, edx
sar eax, 0x10
lea ecx, [ebx - 1]
cmp eax, ecx
setl dl
mov esi, edx
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x14]
jmp 0x4ef1cb
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x40], esi
test edx, edx
jle 0x4ef202
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp + 0x40]
and edx, 0xffff0000
mov eax, edx
mov dword [esp + 0x14], edx
xor edx, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge dl
sub edx, 1
and edx, ebx
mov dword [esp + 0x28], edx
mov edx, dword [esp + 0x14]
jmp 0x4ef208
xor edx, edx
mov dword [esp + 0x28], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebx
mov eax, ebp
sar eax, 0x10
add ecx, eax
mov ebx, dword [edi + ecx*4]
lea eax, [ecx + esi]
mov eax, dword [edi + eax*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x28]
add ecx, eax
mov eax, dword [edi + ecx*4]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x30]
sub eax, edx
add ecx, esi
mov esi, dword [esp + 0x38]
sub esi, ebp
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov dword [esp + 0x28], esi
mov ebp, 0x10000
sub ebp, esi
mov esi, ebp
imul ebp, eax
mov edx, 0x10000
sub edx, eax
imul eax, dword [esp + 0x28]
imul esi, edx
imul edx, dword [esp + 0x28]
shr edx, 0x10
mov ecx, dword [edi + ecx*4]
mov dword [esp + 0x98], ebx
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x1c]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x48]
shr edx, 0x10
mov dword [esp + 0x10], 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 + 0x28], 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 + 0x1c]
and edx, 0xff0000
imul edx, dword [esp + 0x10]
add eax, edx
mov edx, dword [esp + 0x98]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
mov dword [esp + 0x40], ebp
movzx ebp, cl
imul ebp, dword [esp + 0x28]
movzx edx, bl
imul edx, dword [esp + 0x40]
and eax, 0xff0000ff
add ebp, edx
movzx edx, byte [esp + 0x1c]
imul edx, dword [esp + 0x10]
add ebp, edx
mov edx, dword [esp + 0x98]
movzx ebx, dl
imul ebx, esi
and ecx, 0xff00
imul ecx, dword [esp + 0x28]
add ebp, ebx
mov ebx, dword [esp + 0x48]
and ebx, 0xff00
imul ebx, dword [esp + 0x40]
add ecx, ebx
mov ebx, dword [esp + 0x1c]
and ebp, 0xff00
or eax, ebp
mov ebp, dword [esp + 0x10]
and ebx, 0xff00
and edx, 0xff00
imul ebx, ebp
imul edx, esi
add ecx, ebx
add ecx, edx
mov edx, dword [esp + 0x40]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x28]
add ecx, edx
add ecx, ebp
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 0x4ef4b2
mov ecx, dword [esp + 0xc8]
mov esi, dword [ecx]
mov edx, eax
movzx ebx, al
imul ebx, dword [ecx + 0xc]
and edx, 0xff0000
imul edx, dword [ecx + 4]
and eax, 0xff00
imul eax, dword [ecx + 8]
and edx, 0xff0000ff
and eax, 0xff0000
and ebx, 0xff00
or edx, ebx
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
imul ecx, esi
mov eax, edx
and eax, 0xff00
imul eax, esi
movzx edx, dl
imul edx, esi
mov esi, dword [esp + 0x3c]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov ebx, edx
shr ecx, 8
shl eax, 5
and ebx, 0x1f
or eax, ebx
mov ebx, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and ebx, 0xff00ff
or eax, 0x70007
add eax, ebx
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebx, eax
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or ecx, ebx
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov ebp, dword [esp + 0x38]
mov edx, dword [esp + 0x30]
add ebp, dword [esp + 0x8c]
add edx, dword [esp + 0x78]
mov ecx, dword [esp + 0xb0]
add dword [esp + 0x3c], 2
test ecx, ecx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x38], ebp
mov dword [esp + 0x30], edx
jg 0x4ef190
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0xac]
add dword [esp + 0x20], eax
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0xa8]
add dword [esp + 0x4c], ecx
add dword [esp + 0x50], edx
add esi, eax
mov eax, dword [esp + 0x18]
add dword [esp + 0x24], eax
mov eax, dword [esp + 0xa4]
add eax, eax
add dword [esp + 0x54], eax
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x7c], esi
jg 0x4ef0dd
jmp 0x4ef9e5
jle 0x4ef9e5
cmp dword [esp + 0x2c], 0
jle 0x4ef9e5
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x58], eax
lea eax, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x5c], edx
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], ecx
mov ebp, dword [esp + 0x10]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x2c], 1
and ebp, 0xffff0000
mov eax, ebp
sub eax, esi
cdq
push edx
push eax
mov dword [esp + 0x9c], edx
mov edx, dword [esp + 0x78]
push ecx
push edx
mov dword [esp + 0xa0], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x4c]
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x5c]
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x94]
push eax
mov eax, dword [esp + 0x5c]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x54]
add eax, dword [esp + 0x50]
mov ecx, ebp
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x38], ecx
mov ecx, dword [esp + 0x28]
and ecx, 0xffff0000
sub ecx, ebp
sar ecx, 0x10
test ecx, ecx
jle 0x4ef99e
mov ebp, dword [esp + 0xb0]
lea edx, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], ebp
jmp 0x4ef630
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x80], ecx
jle 0x4ef669
and ebp, 0xffff0000
mov eax, ebp
mov dword [esp + 0xb0], edx
xor edx, edx
sar eax, 0x10
lea ecx, [ebx - 1]
cmp eax, ecx
setl dl
mov esi, edx
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0xb0]
jmp 0x4ef671
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x48], esi
test edx, edx
jle 0x4ef6b1
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp + 0x48]
and edx, 0xffff0000
mov eax, edx
mov dword [esp + 0xb0], edx
xor edx, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge dl
sub edx, 1
and edx, ebx
mov dword [esp + 0x98], edx
mov edx, dword [esp + 0xb0]
jmp 0x4ef6ba
xor edx, edx
mov dword [esp + 0x98], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebx
mov eax, ebp
sar eax, 0x10
add ecx, eax
mov ebx, dword [edi + ecx*4]
lea eax, [ecx + esi]
mov eax, dword [edi + eax*4]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x98]
add ecx, eax
mov eax, dword [edi + ecx*4]
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x40]
sub eax, edx
add ecx, esi
mov esi, dword [esp + 0x3c]
sub esi, ebp
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov dword [esp + 0x48], esi
mov ebp, 0x10000
sub ebp, esi
mov esi, ebp
imul ebp, eax
mov edx, 0x10000
sub edx, eax
imul eax, dword [esp + 0x48]
imul esi, edx
imul edx, dword [esp + 0x48]
shr edx, 0x10
mov ecx, dword [edi + ecx*4]
mov dword [esp + 0x14], ebx
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x1c]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x98]
shr edx, 0x10
mov dword [esp + 0x24], 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 + 0x20], 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 + 0x1c]
and edx, 0xff0000
imul edx, dword [esp + 0x24]
add eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
mov dword [esp + 0x30], ebp
movzx ebp, cl
imul ebp, dword [esp + 0x20]
movzx edx, bl
imul edx, dword [esp + 0x30]
and eax, 0xff0000ff
add ebp, edx
movzx edx, byte [esp + 0x1c]
imul edx, dword [esp + 0x24]
add ebp, edx
mov edx, dword [esp + 0x14]
movzx ebx, dl
imul ebx, esi
and ecx, 0xff00
imul ecx, dword [esp + 0x20]
add ebp, ebx
mov ebx, dword [esp + 0x98]
and ebx, 0xff00
imul ebx, dword [esp + 0x30]
add ecx, ebx
mov ebx, dword [esp + 0x1c]
and ebp, 0xff00
or eax, ebp
mov ebp, dword [esp + 0x24]
and ebx, 0xff00
and edx, 0xff00
imul ebx, ebp
imul edx, esi
add ecx, ebx
add ecx, edx
mov edx, dword [esp + 0x30]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x20]
add ecx, edx
add ecx, ebp
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 0x4ef967
mov ecx, dword [esp + 0xc8]
mov esi, dword [ecx]
mov edx, eax
movzx ebx, al
imul ebx, dword [ecx + 0xc]
and edx, 0xff0000
imul edx, dword [ecx + 4]
and eax, 0xff00
imul eax, dword [ecx + 8]
and edx, 0xff0000ff
and eax, 0xff0000
and ebx, 0xff00
or edx, ebx
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
imul ecx, esi
mov eax, edx
and eax, 0xff00
imul eax, esi
movzx edx, dl
imul edx, esi
mov esi, dword [esp + 0x38]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov ebx, edx
shr ecx, 8
shl eax, 5
and ebx, 0x1f
or eax, ebx
mov ebx, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and ebx, 0xff00ff
or eax, 0x70007
add eax, ebx
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebx, eax
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or ecx, ebx
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov ebp, dword [esp + 0x3c]
mov edx, dword [esp + 0x40]
add ebp, dword [esp + 0x8c]
add edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x80]
add dword [esp + 0x38], 2
test ecx, ecx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], edx
jg 0x4ef630
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0xac]
add dword [esp + 0x28], eax
mov ecx, dword [esp + 0xb8]
mov edx, dword [esp + 0xa8]
add dword [esp + 0x4c], ecx
add dword [esp + 0x50], edx
add esi, eax
mov eax, dword [esp + 0x18]
add dword [esp + 0x10], eax
mov eax, dword [esp + 0xa4]
add eax, eax
add dword [esp + 0x54], eax
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x7c], esi
jg 0x4ef577
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x68]
mov dword [esp + 0x2c], eax
je 0x4f0395
mov eax, dword [esp + 0x6c]
mov ecx, dword [eax + 4]
mov ebp, dword [eax]
mov eax, dword [esp + 0xa0]
mov eax, dword [eax + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x90], ecx
mov dword [esp + 0x20], ebp
call fcn.006372b0
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x34], eax
mov eax, dword [edx]
sub eax, ebp
cdq
push edx
push eax
mov eax, dword [esp + 0x3c]
push eax
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x68]
shl eax, 0x10
sub eax, dword [esp + 0x80]
mov dword [esp + 0x98], ecx
imul ecx
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, ebp
add ecx, eax
cmp edx, eax
jge 0x4eff04
cmp dword [esp + 0x2c], 0
jle 0x4f0395
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x5c], edx
lea edx, [eax + eax]
add ecx, 0xffff
lea eax, [esi + 0xffff]
mov dword [esp + 0x28], edx
mov dword [esp + 0x3c], ecx
mov dword [esp + 0x38], eax
mov ebp, dword [esp + 0x38]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x2c], 1
and ebp, 0xffff0000
push ecx
mov ecx, dword [esp + 0x74]
mov eax, ebp
sub eax, esi
cdq
push ecx
push edx
push eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x54]
add eax, dword [esp + 0x50]
mov ecx, ebp
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x3c]
and ecx, 0xffff0000
sub ecx, ebp
sar ecx, 0x10
test ecx, ecx
jle 0x4efeb4
mov esi, dword [esp + 0x34]
add eax, 0xffff8000
add esi, 0xffff8000
mov dword [esp + 0x30], eax
mov dword [esp + 0x20], esi
sub ecx, 1
test esi, esi
mov dword [esp + 0x80], ecx
jle 0x4efba7
and esi, 0xffff0000
mov edx, esi
mov dword [esp + 0x34], eax
xor eax, eax
sar edx, 0x10
lea ecx, [ebx - 1]
cmp edx, ecx
setl al
mov edx, eax
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x34]
jmp 0x4efbaf
xor esi, esi
xor edx, edx
mov dword [esp + 0x18], edx
xor ecx, ecx
cmp eax, ecx
jle 0x4efbea
mov ecx, eax
mov eax, dword [esp + 0xbc]
and ecx, 0xffff0000
mov edx, ecx
mov dword [esp + 0x34], ecx
sar edx, 0x10
xor ecx, ecx
add eax, 0xffffffff
cmp edx, eax
mov edx, dword [esp + 0x18]
setge cl
sub ecx, 1
and ecx, ebx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x34]
jmp 0x4efbee
mov dword [esp + 0x14], ecx
mov eax, ecx
sar eax, 0x10
imul eax, ebx
mov ebx, esi
sar ebx, 0x10
add eax, ebx
mov ebx, dword [edi + eax*4]
lea ebp, [eax + edx]
mov ebp, dword [edi + ebp*4]
mov dword [esp + 0x1c], ebp
mov ebp, dword [esp + 0x14]
add eax, ebp
mov ebp, dword [edi + eax*4]
add eax, edx
mov edx, dword [edi + eax*4]
mov eax, dword [esp + 0x30]
sub eax, ecx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x20]
sub edx, esi
and eax, 0xfffe
add eax, 1
mov dword [esp + 0x10], ebp
and edx, 0xfffe
add edx, 1
mov dword [esp + 0x64], ebx
shr ebx, 0x18
mov ebp, 0x10000
sub ebp, edx
mov ecx, ebp
imul ebp, eax
mov esi, 0x10000
sub esi, eax
imul eax, edx
imul ecx, esi
imul esi, edx
mov edx, dword [esp + 0x18]
shr ecx, 0x10
imul ecx, ebx
mov ebx, dword [esp + 0x1c]
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x10]
shr ebx, 0x18
shr eax, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, edx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov dword [esp + 0x68], ebx
mov eax, edx
and eax, 0xff00
imul eax, ebx
mov ebx, dword [esp + 0x10]
and ebx, 0xff00
shr ebp, 0x10
imul ebx, ebp
add eax, ebx
mov ebx, dword [esp + 0x1c]
and ebx, 0xff00
shr esi, 0x10
imul ebx, esi
add eax, ebx
mov ebx, dword [esp + 0x64]
and ebx, 0xff00
shr ecx, 0x10
imul ebx, ecx
add eax, ebx
mov ebx, dword [esp + 0x10]
and edx, 0xff0000
imul edx, dword [esp + 0x68]
and ebx, 0xff0000
imul ebx, ebp
add edx, ebx
mov ebx, dword [esp + 0x1c]
and eax, 0xff0000
and ebx, 0xff0000
imul ebx, esi
add edx, ebx
mov ebx, dword [esp + 0x64]
and ebx, 0xff0000
imul ebx, ecx
add edx, ebx
movzx ebx, byte [esp + 0x10]
and edx, 0xff0000ff
imul ebx, ebp
or eax, edx
movzx edx, byte [esp + 0x18]
imul edx, dword [esp + 0x68]
add edx, ebx
movzx ebx, byte [esp + 0x1c]
imul ebx, esi
add edx, ebx
movzx ebx, byte [esp + 0x64]
imul ebx, ecx
add edx, ebx
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x68]
add edx, ebp
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 0x4efe7d
mov ecx, dword [esp + 0xc8]
mov esi, dword [ecx]
mov edx, eax
movzx ebx, al
imul ebx, dword [ecx + 0xc]
and edx, 0xff0000
imul edx, dword [ecx + 4]
and eax, 0xff00
imul eax, dword [ecx + 8]
and edx, 0xff0000ff
and eax, 0xff0000
and ebx, 0xff00
or edx, ebx
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
imul ecx, esi
mov eax, edx
and eax, 0xff00
imul eax, esi
movzx edx, dl
imul edx, esi
mov esi, dword [esp + 0x24]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov ebx, edx
shr ecx, 8
shl eax, 5
and ebx, 0x1f
or eax, ebx
mov ebx, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and ebx, 0xff00ff
or eax, 0x70007
add eax, ebx
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebx, eax
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or ecx, ebx
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x30]
add esi, dword [esp + 0x8c]
add eax, dword [esp + 0x78]
mov ecx, dword [esp + 0x80]
add dword [esp + 0x24], 2
test ecx, ecx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x20], esi
mov dword [esp + 0x30], eax
jg 0x4efb74
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0xac]
add dword [esp + 0x38], eax
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0xb8]
add dword [esp + 0x54], ecx
add dword [esp + 0x4c], edx
add esi, eax
mov eax, dword [esp + 0x98]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x50], eax
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x7c], esi
jg 0x4efaca
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret
jle 0x4f0395
cmp dword [esp + 0x2c], 0
jle 0x4f0395
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x5c], edx
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x58], eax
lea eax, [edx + edx]
lea edx, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x28], eax
mov dword [esp + 0x3c], edx
mov dword [esp + 0x40], ecx
mov ebp, dword [esp + 0x40]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x2c], 1
and ebp, 0xffff0000
push ecx
mov ecx, dword [esp + 0x74]
mov eax, ebp
sub eax, esi
cdq
push ecx
push edx
push eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x5c]
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x5c]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x54]
add eax, dword [esp + 0x50]
mov ecx, ebp
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x3c]
and ecx, 0xffff0000
sub ecx, ebp
sar ecx, 0x10
test ecx, ecx
jle 0x4f0350
mov ebp, dword [esp + 0x34]
lea edx, [eax - 0x8000]
add ebp, 0xffff8000
mov dword [esp + 0x38], edx
mov dword [esp + 0x30], ebp
nop
sub ecx, 1
test ebp, ebp
mov dword [esp + 0x80], ecx
jle 0x4f0033
and ebp, 0xffff0000
mov eax, ebp
mov dword [esp + 0x34], edx
xor edx, edx
sar eax, 0x10
lea ecx, [ebx - 1]
cmp eax, ecx
setl dl
mov esi, edx
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x34]
jmp 0x4f003b
xor ebp, ebp
xor esi, esi
mov dword [esp + 0x18], esi
test edx, edx
jle 0x4f0072
mov ecx, dword [esp + 0xbc]
mov esi, dword [esp + 0x18]
and edx, 0xffff0000
mov eax, edx
mov dword [esp + 0x34], edx
xor edx, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge dl
sub edx, 1
and edx, ebx
mov dword [esp + 0x14], edx
mov edx, dword [esp + 0x34]
jmp 0x4f0078
xor edx, edx
mov dword [esp + 0x14], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebx
mov eax, ebp
sar eax, 0x10
add ecx, eax
mov ebx, dword [edi + ecx*4]
lea eax, [ecx + esi]
mov eax, dword [edi + eax*4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x14]
add ecx, eax
mov eax, dword [edi + ecx*4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
sub eax, edx
add ecx, esi
mov esi, dword [esp + 0x30]
sub esi, ebp
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov dword [esp + 0x18], esi
mov ebp, 0x10000
sub ebp, esi
mov esi, ebp
imul ebp, eax
mov edx, 0x10000
sub edx, eax
imul eax, dword [esp + 0x18]
imul esi, edx
imul edx, dword [esp + 0x18]
shr edx, 0x10
mov ecx, dword [edi + ecx*4]
mov dword [esp + 0x48], ebx
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x10]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x14]
shr edx, 0x10
mov dword [esp + 0x64], 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 + 0x68], 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 + 0x10]
and edx, 0xff0000
imul edx, dword [esp + 0x64]
add eax, edx
mov edx, dword [esp + 0x48]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
mov dword [esp + 0x24], ebp
movzx ebp, cl
imul ebp, dword [esp + 0x68]
movzx edx, bl
imul edx, dword [esp + 0x24]
and eax, 0xff0000ff
add ebp, edx
movzx edx, byte [esp + 0x10]
imul edx, dword [esp + 0x64]
add ebp, edx
mov edx, dword [esp + 0x48]
movzx ebx, dl
imul ebx, esi
and ecx, 0xff00
imul ecx, dword [esp + 0x68]
add ebp, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff00
imul ebx, dword [esp + 0x24]
add ecx, ebx
mov ebx, dword [esp + 0x10]
and ebp, 0xff00
or eax, ebp
mov ebp, dword [esp + 0x64]
and ebx, 0xff00
and edx, 0xff00
imul ebx, ebp
imul edx, esi
add ecx, ebx
add ecx, edx
mov edx, dword [esp + 0x24]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x68]
add ecx, edx
add ecx, ebp
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 0x4f0319
mov ecx, dword [esp + 0xc8]
mov esi, dword [ecx]
mov edx, eax
movzx ebx, al
imul ebx, dword [ecx + 0xc]
and edx, 0xff0000
imul edx, dword [ecx + 4]
and eax, 0xff00
imul eax, dword [ecx + 8]
and edx, 0xff0000ff
and eax, 0xff0000
and ebx, 0xff00
or edx, ebx
or edx, eax
shr edx, 8
mov ecx, edx
and ecx, 0xff0000
imul ecx, esi
mov eax, edx
and eax, 0xff00
imul eax, esi
movzx edx, dl
imul edx, esi
mov esi, dword [esp + 0x20]
and ecx, 0xff0000ff
and eax, 0xff0000
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [esi]
mov eax, edx
and eax, 0xf800
mov ebx, edx
shr ecx, 8
shl eax, 5
and ebx, 0x1f
or eax, ebx
mov ebx, ecx
add eax, eax
and ecx, 0xff00
add eax, eax
and edx, 0x7e0
add eax, eax
or edx, 0x18
and ebx, 0xff00ff
or eax, 0x70007
add eax, ebx
shl edx, 5
add edx, ecx
mov ecx, eax
shr ecx, 0x18
and ecx, 1
imul ecx, ecx, 0xff0000
mov ebx, eax
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or ecx, ebx
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
imul ecx, ecx, 0xff00
shr edx, 5
shr ecx, 5
or ecx, edx
mov edx, eax
shr edx, 3
and ecx, 0x7e0
and edx, 0x1f
shr eax, 8
or ecx, edx
and eax, 0xf800
or ecx, eax
mov word [esi], cx
mov ebp, dword [esp + 0x30]
mov edx, dword [esp + 0x38]
add ebp, dword [esp + 0x8c]
add edx, dword [esp + 0x78]
mov ecx, dword [esp + 0x80]
add dword [esp + 0x20], 2
test ecx, ecx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x30], ebp
mov dword [esp + 0x38], edx
jg 0x4f0000
mov esi, dword [esp + 0x7c]
mov eax, dword [esp + 0xac]
add dword [esp + 0x3c], eax
mov ecx, dword [esp + 0x28]
mov edx, dword [esp + 0xb8]
add dword [esp + 0x54], ecx
add dword [esp + 0x4c], edx
add esi, eax
mov eax, dword [esp + 0x98]
add dword [esp + 0x40], eax
mov eax, dword [esp + 0xa8]
add dword [esp + 0x50], eax
cmp dword [esp + 0x2c], 0
mov dword [esp + 0x7c], esi
jg 0x4eff54
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xb0
ret