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

Disassembly:
sub esp, 0xb4
shr edx, 1
mov dword [esp + 0xa0], edx
mov edx, dword [ecx + 0x18]
push ebx
push ebp
mov ebp, dword [ecx + 0x10]
mov dword [esp + 0xb0], edx
lea edx, [eax + 0x40]
push esi
mov esi, dword [ecx]
lea ecx, [eax + 0x20]
mov dword [esp + 0x88], edx
mov edx, dword [eax + 4]
cmp edx, dword [ecx + 4]
mov dword [esp + 0x58], ebp
mov ebx, eax
mov dword [esp + 0x64], ecx
jle 0x4d38c8
mov ebx, ecx
mov dword [esp + 0x64], eax
mov ecx, eax
mov eax, dword [ecx + 4]
mov edx, dword [esp + 0x88]
cmp eax, dword [edx + 4]
jle 0x4d38eb
mov dword [esp + 0x88], ecx
mov dword [esp + 0x64], edx
mov ecx, edx
mov edx, dword [esp + 0x88]
mov eax, dword [ebx + 4]
cmp eax, dword [ecx + 4]
jle 0x4d38fd
mov eax, ebx
mov ebx, ecx
mov dword [esp + 0x64], eax
mov ecx, eax
mov eax, dword [ebx + 4]
add eax, 0xffff
sar eax, 0x10
mov dword [esp + 0x14], eax
mov eax, dword [edx + 4]
lea edx, [eax + 0xffff]
sar edx, 0x10
cmp dword [esp + 0x14], edx
mov dword [esp + 0x6c], edx
je 0x4d4f2a
mov ecx, dword [ecx + 4]
add ecx, 0xffff
sar ecx, 0x10
mov dword [esp + 0x20], ecx
mov ecx, dword [ebx + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x88]
mov eax, dword [eax]
mov ecx, edx
mov edx, dword [ebx]
push ecx
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x4c]
sub eax, edx
mov dword [esp + 0x14], edx
cdq
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x9c], eax
mov eax, dword [edx + 0x18]
sub eax, dword [ebx + 0x18]
push ecx
mov ecx, dword [esp + 0x4c]
cdq
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov edx, dword [esp + 0x88]
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0xa8], eax
mov eax, dword [edx + 0x1c]
sub eax, dword [ebx + 0x1c]
push ecx
mov ecx, dword [esp + 0x4c]
cdq
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov edx, dword [esp + 0x64]
mov dword [esp + 0xb0], eax
mov eax, dword [edx + 4]
sub eax, dword [ebx + 4]
cdq
mov ecx, eax
mov eax, dword [esp + 0x9c]
mov dword [esp + 0x4c], edx
cdq
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x4c]
push edx
push ecx
mov dword [esp + 0x50], ecx
mov ecx, dword [esp + 0x84]
push ecx
push eax
mov dword [esp + 0x88], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x10]
mov edx, dword [esp + 0x64]
mov dword [esp + 0x2c], eax
mov ecx, dword [edx]
cmp ecx, eax
mov dword [esp + 0xc], ecx
je 0x4d4f2a
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x78]
shl eax, 0x10
sub eax, dword [ebx + 4]
cdq
push edx
push eax
mov dword [esp + 0x78], eax
mov eax, dword [esp + 0x84]
push eax
push ecx
mov dword [esp + 0x84], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x10]
mov ecx, dword [ebx + 0x18]
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xac]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xb0], eax
mov dword [esp + 0xb4], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x74]
mov ebx, dword [ebx + 0x1c]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xb4]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], edx
mov dword [esp + 0x54], ebx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, ebx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xc]
sub eax, dword [esp + 0x2c]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov ecx, dword [esp + 0xa4]
mov dword [esp + 0x7c], edx
mov edx, dword [esp + 0x4c]
push edx
mov edx, dword [esp + 0xa4]
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x4c]
push eax
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x18]
sbb edx, ebx
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x78]
sbb ebx, edx
mov edx, dword [esp + 0x7c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
push ecx
mov ecx, dword [esp + 0xbc]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xc0]
push edx
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x64]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x44]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x78]
sbb ebx, edx
mov edx, dword [esp + 0x7c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x14]
mov edx, ecx
imul edx, dword [esp + 0xac]
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xc4]
lea edx, [eax + edx*2]
mov eax, dword [esp + 0x20]
sub eax, ecx
mov dword [esp + 0x68], edx
mov dword [esp + 0x34], eax
je 0x4d4571
mov eax, dword [esp + 0xc]
sub eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x48]
cdq
mov ebx, eax
mov eax, dword [esp + 0x4c]
push eax
push ecx
push 0x10000
push 0
mov ebp, edx
call fcn.0062e060
push edx
push eax
push ebp
push ebx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x74]
push ecx
mov ecx, dword [esp + 0x74]
mov dword [esp + 0x34], eax
cdq
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x58]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x2c]
add ecx, dword [esp + 0x10]
cmp edx, eax
jge 0x4d40e6
cmp dword [esp + 0x34], 0
jle 0x4d4571
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
add ecx, 0xffff
add eax, 0xffff
mov dword [esp + 0x4c], edx
mov dword [esp + 0x18], ecx
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x34], 1
and ebx, 0xffff0000
mov eax, ebx
sub eax, dword [esp + 0x40]
cdq
push edx
push eax
mov dword [esp + 0x84], edx
mov edx, dword [esp + 0x78]
push ecx
push edx
mov dword [esp + 0x88], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x78]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x7c]
push eax
mov eax, dword [esp + 0x4c]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x68]
add eax, dword [esp + 0x60]
mov ecx, ebx
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x18]
and ecx, 0xffff0000
sub ecx, ebx
sar ecx, 0x10
test ecx, ecx
jle 0x4d409c
mov ebx, dword [esp + 0x28]
add eax, 0xffff8000
add ebx, 0xffff8000
mov dword [esp + 0xc], eax
mov dword [esp + 0x50], ebx
lea esp, [esp]
sub ecx, 1
mov dword [esp + 0xa0], ecx
xor ecx, ecx
cmp ebx, ecx
jle 0x4d3d7c
mov eax, ebx
and eax, 0xffff0000
mov dword [esp + 0x3c], eax
sar eax, 0x10
lea edx, [ebp - 1]
cmp eax, edx
mov eax, dword [esp + 0xc]
setl cl
jmp 0x4d3d80
mov dword [esp + 0x3c], ecx
test eax, eax
mov dword [esp + 0x38], ecx
jle 0x4d3db9
mov ecx, dword [esp + 0xb4]
mov edx, eax
and edx, 0xffff0000
xor ebx, ebx
mov eax, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
mov eax, dword [esp + 0xc]
setge bl
sub ebx, 1
and ebx, ebp
mov dword [esp + 0x54], ebx
mov ebx, dword [esp + 0x50]
jmp 0x4d3dbf
xor edx, edx
mov dword [esp + 0x54], edx
mov ecx, edx
sub ebx, dword [esp + 0x3c]
sar ecx, 0x10
imul ecx, ebp
mov ebp, dword [esp + 0x3c]
sar ebp, 0x10
add ecx, ebp
mov ebp, dword [esi + ecx*4]
sub eax, edx
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x38]
add ebp, ecx
mov ebp, dword [esi + ebp*4]
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x54]
add ecx, ebp
mov ebp, dword [esi + ecx*4]
and ebx, 0xfffe
add ebx, 1
mov dword [esp + 0x10], ebp
mov ebp, dword [esp + 0x38]
and eax, 0xfffe
add eax, 1
add ecx, ebp
mov dword [esp + 0x38], ebx
mov ebp, 0x10000
sub ebp, ebx
mov ebx, dword [esp + 0x14]
mov dword [esp + 0x28], ebp
mov edx, 0x10000
sub edx, eax
imul ebp, edx
imul edx, dword [esp + 0x38]
shr ebx, 0x18
shr edx, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, dword [esp + 0x24]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x10]
mov ecx, dword [esi + ecx*4]
shr edx, 0x10
mov dword [esp + 0x3c], edx
mov edx, dword [esp + 0x28]
imul edx, eax
imul eax, dword [esp + 0x38]
shr edx, 0x10
shr ebx, 0x18
imul edx, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
shr edx, 0x10
mov dword [esp + 0x38], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x10]
mov dword [esp + 0x54], edx
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x24]
and edx, 0xff0000
imul edx, dword [esp + 0x3c]
add eax, ebx
movzx ebx, byte [esp + 0x10]
add eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
shr ebp, 0x10
imul edx, ebp
add eax, edx
movzx edx, cl
imul edx, dword [esp + 0x38]
and eax, 0xff0000ff
imul ebx, dword [esp + 0x54]
mov dword [esp + 0xb8], ebp
add edx, ebx
movzx ebx, byte [esp + 0x24]
imul ebx, dword [esp + 0x3c]
movzx ebp, byte [esp + 0x14]
add edx, ebx
mov ebx, dword [esp + 0xb8]
imul ebp, ebx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x10]
and ecx, 0xff00
imul ecx, dword [esp + 0x38]
and edx, 0xff00
imul edx, dword [esp + 0x54]
add ecx, edx
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x3c]
and edx, 0xff00
imul edx, ebp
add ecx, edx
mov edx, dword [esp + 0x14]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x54]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x38]
add ecx, edx
add ecx, ebp
add ecx, ebx
shr eax, 8
shl ecx, 0x18
and ecx, 0xff000000
or eax, ecx
mov edx, eax
movzx ecx, al
imul ecx, dword [edi + 0xc]
and eax, 0xff00
imul eax, dword [edi + 8]
mov ebx, dword [edi]
and edx, 0xff0000
imul edx, dword [edi + 4]
and eax, 0xff0000
and edx, 0xff0000ff
and ecx, 0xff00
or edx, ecx
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
imul eax, ebx
and ecx, 0xff0000
movzx edx, dl
imul ecx, ebx
imul edx, ebx
mov ebx, dword [esp + 0x44]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [ebx]
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 edx, 0x7e0
add eax, ebp
or edx, 0x18
and ecx, 0xff00
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
mov ebp, dword [esp + 0x58]
shr ecx, 5
shr edx, 5
or ecx, edx
mov edx, eax
and ecx, 0x7e0
shr edx, 3
shr eax, 8
and edx, 0x1f
and eax, 0xf800
or ecx, edx
or ecx, eax
mov eax, dword [esp + 0xc]
add eax, dword [esp + 0x84]
mov word [ebx], cx
mov ecx, dword [esp + 0xa0]
add ebx, 2
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x50]
add ebx, dword [esp + 0x8c]
test ecx, ecx
mov dword [esp + 0x50], ebx
mov dword [esp + 0xc], eax
jg 0x4d3d50
mov eax, dword [esp + 0x9c]
add dword [esp + 0x40], eax
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0x30]
add dword [esp + 0x18], eax
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xb0]
add dword [esp + 0x5c], ecx
add dword [esp + 0x60], edx
add eax, eax
add dword [esp + 0x68], eax
cmp dword [esp + 0x34], 0
jg 0x4d3ca6
jmp 0x4d4571
jle 0x4d4571
cmp dword [esp + 0x34], 0
jle 0x4d4571
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
add eax, 0xffff
add ecx, 0xffff
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], eax
mov dword [esp + 0x38], ecx
mov ebx, dword [esp + 0x38]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x34], 1
and ebx, 0xffff0000
mov eax, ebx
sub eax, dword [esp + 0x40]
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.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x90]
mov edx, dword [esp + 0x4c]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x94]
push eax
mov eax, dword [esp + 0x4c]
push ecx
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x68]
add eax, dword [esp + 0x60]
mov ecx, ebx
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x3c]
and ecx, 0xffff0000
sub ecx, ebx
sar ecx, 0x10
test ecx, ecx
jle 0x4d452c
mov ebx, dword [esp + 0xa0]
add eax, 0xffff8000
add ebx, 0xffff8000
mov dword [esp + 0x10], eax
mov dword [esp + 0x54], ebx
sub ecx, 1
mov dword [esp + 0x78], ecx
xor ecx, ecx
cmp ebx, ecx
jle 0x4d4209
mov eax, ebx
and eax, 0xffff0000
mov dword [esp + 0x1c], eax
sar eax, 0x10
lea edx, [ebp - 1]
cmp eax, edx
mov eax, dword [esp + 0x10]
setl cl
jmp 0x4d420d
mov dword [esp + 0x1c], ecx
test eax, eax
mov dword [esp + 0x18], ecx
jle 0x4d4246
mov ecx, dword [esp + 0xb4]
mov edx, eax
and edx, 0xffff0000
xor ebx, ebx
mov eax, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
mov eax, dword [esp + 0x10]
setge bl
sub ebx, 1
and ebx, ebp
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x54]
jmp 0x4d424c
xor edx, edx
mov dword [esp + 0x44], edx
mov ecx, edx
sub ebx, dword [esp + 0x1c]
sar ecx, 0x10
imul ecx, ebp
mov ebp, dword [esp + 0x1c]
sar ebp, 0x10
add ecx, ebp
mov ebp, dword [esi + ecx*4]
sub eax, edx
mov dword [esp + 0x24], ebp
mov ebp, dword [esp + 0x18]
add ebp, ecx
mov ebp, dword [esi + ebp*4]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x44]
add ecx, ebp
mov ebp, dword [esi + ecx*4]
and ebx, 0xfffe
add ebx, 1
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x18]
and eax, 0xfffe
add eax, 1
add ecx, ebp
mov dword [esp + 0x44], ebx
mov ebp, 0x10000
sub ebp, ebx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0xa0], ebp
mov edx, 0x10000
sub edx, eax
imul ebp, edx
imul edx, dword [esp + 0x44]
shr ebx, 0x18
shr edx, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0xc]
mov ecx, dword [esi + ecx*4]
shr edx, 0x10
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0xa0]
imul edx, eax
imul eax, dword [esp + 0x44]
shr edx, 0x10
shr ebx, 0x18
imul edx, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
shr edx, 0x10
mov dword [esp + 0x1c], ebx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0xc]
mov dword [esp + 0x50], edx
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
imul edx, dword [esp + 0x18]
add eax, ebx
movzx ebx, byte [esp + 0xc]
add eax, edx
mov edx, dword [esp + 0x24]
and edx, 0xff0000
shr ebp, 0x10
imul edx, ebp
add eax, edx
movzx edx, cl
imul edx, dword [esp + 0x1c]
and eax, 0xff0000ff
imul ebx, dword [esp + 0x50]
mov dword [esp + 0xb8], ebp
add edx, ebx
movzx ebx, byte [esp + 0x14]
imul ebx, dword [esp + 0x18]
movzx ebp, byte [esp + 0x24]
add edx, ebx
mov ebx, dword [esp + 0xb8]
imul ebp, ebx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0xc]
and ecx, 0xff00
imul ecx, dword [esp + 0x1c]
and edx, 0xff00
imul edx, dword [esp + 0x50]
add ecx, edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x18]
and edx, 0xff00
imul edx, ebp
add ecx, edx
mov edx, dword [esp + 0x24]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x50]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x1c]
add ecx, edx
add ecx, ebp
add ecx, ebx
shr eax, 8
shl ecx, 0x18
and ecx, 0xff000000
or eax, ecx
mov edx, eax
movzx ecx, al
imul ecx, dword [edi + 0xc]
and eax, 0xff00
imul eax, dword [edi + 8]
mov ebx, dword [edi]
and edx, 0xff0000
imul edx, dword [edi + 4]
and eax, 0xff0000
and edx, 0xff0000ff
and ecx, 0xff00
or edx, ecx
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
imul eax, ebx
and ecx, 0xff0000
movzx edx, dl
imul ecx, ebx
imul edx, ebx
mov ebx, dword [esp + 0x28]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [ebx]
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 edx, 0x7e0
add eax, ebp
or edx, 0x18
and ecx, 0xff00
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
mov ebp, dword [esp + 0x58]
shr ecx, 5
shr edx, 5
or ecx, edx
mov edx, eax
and ecx, 0x7e0
shr edx, 3
shr eax, 8
and edx, 0x1f
and eax, 0xf800
or ecx, edx
or ecx, eax
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x84]
mov word [ebx], cx
mov ecx, dword [esp + 0x78]
add ebx, 2
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x54]
add ebx, dword [esp + 0x8c]
test ecx, ecx
mov dword [esp + 0x54], ebx
mov dword [esp + 0x10], eax
jg 0x4d41e0
mov eax, dword [esp + 0x9c]
add dword [esp + 0x40], eax
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x30]
add dword [esp + 0x38], eax
mov eax, dword [esp + 0xac]
mov ecx, dword [esp + 0xa8]
mov edx, dword [esp + 0xb0]
add dword [esp + 0x5c], ecx
add dword [esp + 0x60], edx
add eax, eax
add dword [esp + 0x68], eax
cmp dword [esp + 0x34], 0
jg 0x4d412e
mov eax, dword [esp + 0x6c]
sub eax, dword [esp + 0x20]
mov dword [esp + 0x34], eax
je 0x4d4f2a
mov eax, dword [esp + 0x64]
mov ecx, dword [eax + 4]
mov ebx, dword [eax]
mov eax, dword [esp + 0x88]
mov eax, dword [eax + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x88], ecx
mov dword [esp + 0x1c], ebx
call fcn.0062e060
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x88]
mov dword [esp + 0x6c], eax
mov eax, dword [edx]
sub eax, ebx
cdq
push edx
push eax
mov eax, dword [esp + 0x74]
push eax
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, eax
mov eax, dword [esp + 0x20]
shl eax, 0x10
sub eax, dword [esp + 0x78]
mov dword [esp + 0x38], ecx
imul ecx
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x2c]
mov ecx, eax
mov eax, ebx
add ecx, eax
cmp edx, eax
jge 0x4d4a90
cmp dword [esp + 0x34], 0
jle 0x4d4f2a
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x4c], edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x40]
add ecx, 0xffff
add eax, 0xffff
mov dword [esp + 0x54], edx
mov dword [esp + 0x50], ecx
mov dword [esp + 0x1c], eax
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x34], 1
and ebx, 0xffff0000
push ecx
mov ecx, dword [esp + 0x74]
mov eax, ebx
sub eax, dword [esp + 0x44]
push ecx
cdq
push edx
push eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x4c]
push eax
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x68]
add eax, dword [esp + 0x60]
mov ecx, ebx
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x50]
and ecx, 0xffff0000
sub ecx, ebx
sar ecx, 0x10
test ecx, ecx
jle 0x4d4a46
mov edx, dword [esp + 0x6c]
add eax, 0xffff8000
add edx, 0xffff8000
mov dword [esp + 0x10], eax
mov dword [esp + 0x3c], edx
sub ecx, 1
xor ebx, ebx
cmp edx, ebx
mov dword [esp + 0x6c], ecx
jle 0x4d472b
mov eax, edx
and eax, 0xffff0000
mov dword [esp + 0x2c], eax
sar eax, 0x10
lea ecx, [ebp - 1]
cmp eax, ecx
mov eax, dword [esp + 0x10]
setl bl
jmp 0x4d472f
mov dword [esp + 0x2c], ebx
test eax, eax
mov dword [esp + 0x30], ebx
jle 0x4d4767
mov ecx, dword [esp + 0xb4]
and eax, 0xffff0000
xor ebx, ebx
mov dword [esp + 0x20], eax
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
mov eax, dword [esp + 0x10]
setge bl
sub ebx, 1
and ebx, ebp
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x30]
jmp 0x4d4777
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
mov ecx, dword [esp + 0x20]
sar ecx, 0x10
imul ecx, ebp
mov ebp, dword [esp + 0x2c]
sub eax, dword [esp + 0x20]
sar ebp, 0x10
add ecx, ebp
mov ebp, dword [esi + ecx*4]
mov dword [esp + 0x14], ebp
lea ebp, [ecx + ebx]
mov ebp, dword [esi + ebp*4]
mov dword [esp + 0xc], ebp
mov ebp, dword [esp + 0x28]
add ecx, ebp
mov ebp, dword [esi + ecx*4]
add ecx, ebx
mov ecx, dword [esi + ecx*4]
mov dword [esp + 0x18], ecx
mov ecx, edx
sub ecx, dword [esp + 0x2c]
and eax, 0xfffe
add eax, 1
and ecx, 0xfffe
add ecx, 1
mov dword [esp + 0x30], ecx
mov ebx, 0x10000
sub ebx, ecx
mov ecx, ebx
imul ebx, eax
mov edx, 0x10000
sub edx, eax
imul eax, dword [esp + 0x30]
imul ecx, edx
imul edx, dword [esp + 0x30]
shr edx, 0x10
mov dword [esp + 0x28], ebp
mov ebp, dword [esp + 0x14]
shr ebp, 0x18
shr ecx, 0x10
imul ecx, ebp
mov ebp, dword [esp + 0xc]
shr ebp, 0x18
imul edx, ebp
mov ebp, dword [esp + 0x28]
shr edx, 0x10
mov dword [esp + 0x2c], edx
shr ebx, 0x10
mov edx, ebp
shr edx, 0x18
imul ebx, edx
mov edx, dword [esp + 0x18]
shr ebx, 0x10
shr eax, 0x10
mov dword [esp + 0x24], ebx
mov ebx, edx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
mov eax, edx
and eax, 0xff00
mov edx, ebp
imul eax, ebx
and edx, 0xff00
imul edx, dword [esp + 0x24]
add eax, edx
mov edx, dword [esp + 0xc]
and edx, 0xff00
imul edx, dword [esp + 0x2c]
add eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff00
shr ecx, 0x10
imul edx, ecx
add eax, edx
mov edx, dword [esp + 0x18]
and edx, 0xff0000
and eax, 0xff0000
imul edx, ebx
mov dword [esp + 0x20], ebx
and ebp, 0xff0000
imul ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0xc]
and ebx, 0xff0000
imul ebx, dword [esp + 0x2c]
add edx, ebp
add edx, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff0000
imul ebx, ecx
add edx, ebx
movzx ebx, byte [esp + 0x18]
imul ebx, dword [esp + 0x20]
and edx, 0xff0000ff
or eax, edx
movzx edx, byte [esp + 0x28]
imul edx, dword [esp + 0x24]
movzx ebp, byte [esp + 0xc]
add ebx, edx
mov edx, dword [esp + 0x2c]
imul ebp, edx
add ebx, ebp
movzx ebp, byte [esp + 0x14]
imul ebp, ecx
add ebx, ebp
mov ebp, dword [esp + 0x24]
and ebx, 0xff00
or eax, ebx
mov ebx, dword [esp + 0x20]
add ebx, ebp
add ebx, edx
add ebx, ecx
shr eax, 8
shl ebx, 0x18
and ebx, 0xff000000
or eax, ebx
mov edx, eax
movzx ecx, al
imul ecx, dword [edi + 0xc]
and eax, 0xff00
imul eax, dword [edi + 8]
mov ebx, dword [edi]
and edx, 0xff0000
imul edx, dword [edi + 4]
and eax, 0xff0000
and edx, 0xff0000ff
and ecx, 0xff00
or edx, ecx
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
imul eax, ebx
and ecx, 0xff0000
movzx edx, dl
imul ecx, ebx
imul edx, ebx
mov ebx, dword [esp + 0x44]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [ebx]
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
and edx, 0x7e0
or eax, 0x70007
and ebp, 0xff00ff
or edx, 0x18
add eax, ebp
shl edx, 5
and ecx, 0xff00
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
mov ebp, dword [esp + 0x58]
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
mov edx, dword [esp + 0x3c]
add edx, dword [esp + 0x8c]
and eax, 0xf800
or ecx, eax
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x84]
mov word [ebx], cx
mov ecx, dword [esp + 0x6c]
add ebx, 2
test ecx, ecx
mov dword [esp + 0x44], ebx
mov dword [esp + 0x3c], edx
mov dword [esp + 0x10], eax
jg 0x4d4702
mov eax, dword [esp + 0x9c]
add dword [esp + 0x40], eax
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
add dword [esp + 0x50], eax
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xb0]
add dword [esp + 0x68], ecx
add dword [esp + 0x5c], edx
add dword [esp + 0x60], eax
cmp dword [esp + 0x34], 0
jg 0x4d4656
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret
jle 0x4d4f2a
cmp dword [esp + 0x34], 0
jle 0x4d4f2a
mov eax, dword [esp + 0x8c]
cdq
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x84]
mov dword [esp + 0x74], edx
cdq
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0xac]
mov dword [esp + 0x48], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x40]
add edx, 0xffff
add ecx, 0xffff
mov dword [esp + 0x54], eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x50], ecx
mov ebx, dword [esp + 0x50]
mov ecx, dword [esp + 0x74]
sub dword [esp + 0x34], 1
and ebx, 0xffff0000
push ecx
mov ecx, dword [esp + 0x74]
mov eax, ebx
sub eax, dword [esp + 0x44]
push ecx
cdq
push edx
push eax
mov dword [esp + 0xa0], eax
mov dword [esp + 0xa4], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x94]
push edx
mov edx, dword [esp + 0x94]
mov dword [esp + 0x70], eax
mov eax, dword [esp + 0x4c]
push eax
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x68]
add eax, dword [esp + 0x60]
mov ecx, ebx
sar ecx, 0x10
lea ecx, [edx + ecx*2]
mov dword [esp + 0x44], ecx
mov ecx, dword [esp + 0x1c]
and ecx, 0xffff0000
sub ecx, ebx
sar ecx, 0x10
test ecx, ecx
jle 0x4d4eea
mov ebx, dword [esp + 0x6c]
add eax, 0xffff8000
add ebx, 0xffff8000
mov dword [esp + 0x10], eax
mov dword [esp + 0x3c], ebx
sub ecx, 1
xor edx, edx
cmp ebx, edx
mov dword [esp + 0xa0], ecx
jle 0x4d4bc7
mov eax, ebx
and eax, 0xffff0000
mov dword [esp + 0x2c], eax
xor ecx, ecx
sar eax, 0x10
lea edx, [ebp - 1]
cmp eax, edx
mov eax, dword [esp + 0x10]
setl cl
mov edx, ecx
mov dword [esp + 0x30], ecx
jmp 0x4d4bcf
mov dword [esp + 0x2c], edx
mov dword [esp + 0x30], edx
test eax, eax
jle 0x4d4c03
mov edx, dword [esp + 0xb4]
and eax, 0xffff0000
add edx, 0xffffffff
mov dword [esp + 0x20], eax
sar eax, 0x10
xor ecx, ecx
cmp eax, edx
mov edx, dword [esp + 0x30]
mov eax, dword [esp + 0x10]
setge cl
sub ecx, 1
and ecx, ebp
mov dword [esp + 0x28], ecx
jmp 0x4d4c13
mov dword [esp + 0x20], 0
mov dword [esp + 0x28], 0
mov ecx, dword [esp + 0x20]
sub ebx, dword [esp + 0x2c]
sub eax, dword [esp + 0x20]
sar ecx, 0x10
imul ecx, ebp
mov ebp, dword [esp + 0x2c]
sar ebp, 0x10
add ecx, ebp
mov ebp, dword [esi + ecx*4]
mov dword [esp + 0x24], ebp
lea ebp, [ecx + edx]
mov ebp, dword [esi + ebp*4]
mov dword [esp + 0x14], ebp
mov ebp, dword [esp + 0x28]
and ebx, 0xfffe
add ebx, 1
add ecx, ebp
mov ebp, dword [esi + ecx*4]
add ecx, edx
and eax, 0xfffe
add eax, 1
mov dword [esp + 0xc], ebp
mov dword [esp + 0x30], ebx
mov ebp, 0x10000
sub ebp, ebx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0x6c], ebp
mov edx, 0x10000
sub edx, eax
imul ebp, edx
imul edx, dword [esp + 0x30]
shr ebx, 0x18
shr edx, 0x10
shr ebp, 0x10
imul ebp, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0xc]
mov ecx, dword [esi + ecx*4]
shr edx, 0x10
mov dword [esp + 0x2c], edx
mov edx, dword [esp + 0x6c]
imul edx, eax
imul eax, dword [esp + 0x30]
shr edx, 0x10
shr ebx, 0x18
imul edx, ebx
shr eax, 0x10
mov ebx, ecx
shr ebx, 0x18
imul eax, ebx
shr eax, 0x10
mov ebx, eax
shr edx, 0x10
mov dword [esp + 0x20], ebx
mov dword [esp + 0x18], edx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0xc]
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
imul edx, dword [esp + 0x2c]
add eax, ebx
movzx ebx, byte [esp + 0xc]
imul ebx, dword [esp + 0x18]
add eax, edx
mov edx, dword [esp + 0x24]
and edx, 0xff0000
shr ebp, 0x10
imul edx, ebp
add eax, edx
movzx edx, cl
imul edx, dword [esp + 0x20]
and eax, 0xff0000ff
add edx, ebx
movzx ebx, byte [esp + 0x14]
mov dword [esp + 0x78], ebp
imul ebx, dword [esp + 0x2c]
movzx ebp, byte [esp + 0x24]
add edx, ebx
mov ebx, dword [esp + 0x78]
imul ebp, ebx
add edx, ebp
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0xc]
and ecx, 0xff00
imul ecx, dword [esp + 0x20]
and edx, 0xff00
imul edx, dword [esp + 0x18]
add ecx, edx
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0x2c]
and edx, 0xff00
imul edx, ebp
add ecx, edx
mov edx, dword [esp + 0x24]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x18]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x20]
add ecx, edx
add ecx, ebp
add ecx, ebx
shr eax, 8
shl ecx, 0x18
and ecx, 0xff000000
or eax, ecx
mov edx, eax
mov ecx, eax
movzx eax, al
imul eax, dword [edi + 0xc]
mov ebx, dword [edi]
and edx, 0xff00
imul edx, dword [edi + 8]
and ecx, 0xff0000
imul ecx, dword [edi + 4]
and eax, 0xff00
and edx, 0xff0000
and ecx, 0xff0000ff
or edx, ecx
or edx, eax
shr edx, 8
mov ecx, edx
mov eax, edx
and eax, 0xff00
imul eax, ebx
and ecx, 0xff0000
movzx edx, dl
imul ecx, ebx
imul edx, ebx
mov ebx, dword [esp + 0x44]
and eax, 0xff0000
and ecx, 0xff0000ff
or ecx, eax
and edx, 0xff00
or ecx, edx
movzx edx, word [ebx]
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
and edx, 0x7e0
or eax, 0x70007
and ebp, 0xff00ff
or edx, 0x18
add eax, ebp
shl edx, 5
and ecx, 0xff00
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
mov ebp, dword [esp + 0x58]
shr ecx, 5
shr edx, 5
or ecx, edx
mov edx, eax
and ecx, 0x7e0
shr edx, 3
shr eax, 8
and edx, 0x1f
and eax, 0xf800
or ecx, edx
or ecx, eax
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x84]
mov word [ebx], cx
mov ecx, dword [esp + 0xa0]
add ebx, 2
mov dword [esp + 0x44], ebx
mov ebx, dword [esp + 0x3c]
add ebx, dword [esp + 0x8c]
test ecx, ecx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x10], eax
jg 0x4d4b93
mov eax, dword [esp + 0x9c]
add dword [esp + 0x40], eax
add dword [esp + 0x1c], eax
mov eax, dword [esp + 0x38]
add dword [esp + 0x50], eax
mov ecx, dword [esp + 0x54]
mov edx, dword [esp + 0xa8]
mov eax, dword [esp + 0xb0]
add dword [esp + 0x68], ecx
add dword [esp + 0x5c], edx
add dword [esp + 0x60], eax
cmp dword [esp + 0x34], 0
jg 0x4d4ae7
pop esi
pop ebp
pop ebx
add esp, 0xb4
ret