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

Disassembly:
sub esp, 0xac
shr edx, 2
push ebx
mov ebx, dword [ecx + 0x10]
mov dword [esp + 0x6c], edx
mov edx, dword [ecx + 0x18]
push ebp
mov ebp, dword [ecx]
push esi
mov dword [esp + 0xb4], edx
mov edx, dword [eax + 4]
cmp edx, dword [eax + 0x24]
lea ecx, [eax + 0x20]
lea esi, [eax + 0x40]
push edi
mov dword [esp + 0x3c], ebx
mov edi, eax
mov dword [esp + 0x30], ecx
mov dword [esp + 0x50], esi
jle 0x4bf474
mov edi, ecx
mov dword [esp + 0x30], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [esi + 4]
jle 0x4bf48a
mov dword [esp + 0x50], ecx
mov dword [esp + 0x30], esi
mov ecx, esi
mov esi, dword [esp + 0x50]
mov edx, dword [edi + 4]
cmp edx, dword [ecx + 4]
jle 0x4bf49c
mov eax, edi
mov edi, ecx
mov dword [esp + 0x30], eax
mov ecx, eax
mov eax, dword [edi + 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 + 0x24], edx
mov dword [esp + 0x2c], esi
je 0x4c0895
mov ecx, dword [ecx + 4]
mov dword [esp + 0x1c], ecx
add ecx, 0xffff
sar ecx, 0x10
mov dword [esp + 0x64], ecx
mov ecx, dword [edi + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov esi, eax
mov eax, dword [esp + 0x50]
mov eax, dword [eax]
mov ecx, edx
mov edx, dword [edi]
push ecx
sub eax, edx
mov dword [esp + 0x18], edx
cdq
push esi
push edx
push eax
mov dword [esp + 0xa8], ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x50]
mov dword [esp + 0xb4], eax
mov eax, dword [ecx + 0x18]
sub eax, dword [edi + 0x18]
mov ecx, dword [esp + 0x98]
push ecx
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov edx, dword [esp + 0x50]
mov ecx, dword [esp + 0x98]
mov dword [esp + 0xac], eax
mov eax, dword [edx + 0x1c]
sub eax, dword [edi + 0x1c]
push ecx
cdq
push esi
push edx
push eax
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x1c]
sub eax, dword [edi + 4]
cdq
mov ecx, eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x58], edx
cdq
mov esi, eax
mov eax, dword [esp + 0x58]
push eax
push ecx
push edx
push esi
mov dword [esp + 0x64], ecx
mov dword [esp + 0xa8], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x30]
mov ecx, dword [ecx]
cmp ecx, eax
mov dword [esp + 0x68], eax
mov dword [esp + 0x18], ecx
je 0x4c0895
mov eax, dword [esp + 0x24]
shl eax, 0x10
sub eax, dword [edi + 4]
cdq
push edx
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x9c]
push eax
push edx
push esi
mov dword [esp + 0x7c], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov ecx, dword [edi + 0x18]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x70]
mov esi, eax
mov eax, dword [esp + 0xac]
add esi, dword [esp + 0x14]
push ecx
mov ecx, dword [esp + 0x70]
cdq
push ecx
push edx
push eax
mov dword [esp + 0x90], esi
mov dword [esp + 0xac], eax
mov dword [esp + 0xb0], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x70]
mov edi, dword [edi + 0x1c]
push ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xb4]
cdq
push ecx
push edx
push eax
mov dword [esp + 0xb4], eax
mov dword [esp + 0xb8], edx
mov dword [esp + 0x5c], edi
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, edi
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x68]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.006372b0
mov ecx, dword [esp + 0xa0]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0xa0]
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0x58]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edi, edx
mov edx, dword [esp + 0x30]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
mov ecx, eax
mov eax, dword [esp + 0x20]
sbb edx, edi
mov edi, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x84]
sbb edi, edx
mov edx, dword [esp + 0x88]
push edx
push eax
push edi
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x58]
mov edx, dword [esp + 0x54]
push ecx
mov ecx, dword [esp + 0xa8]
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xac]
push edx
push eax
push ecx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edi, edx
mov edx, dword [esp + 0x30]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, edi
mov ecx, eax
mov eax, dword [esp + 0x4c]
mov edi, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x84]
sbb edi, edx
mov edx, dword [esp + 0x88]
push edx
push eax
push edi
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x24]
mov edx, ecx
imul edx, dword [esp + 0x78]
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xc0]
lea edx, [eax + edx*4]
mov eax, dword [esp + 0x64]
sub eax, ecx
mov dword [esp + 0x44], edx
mov dword [esp + 0x28], eax
je 0x4c0002
mov eax, dword [esp + 0x18]
sub eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x54]
cdq
mov edi, eax
mov eax, dword [esp + 0x58]
push eax
push ecx
push 0x10000
push 0
mov ebx, edx
call fcn.006372b0
push edx
push eax
push ebx
push edi
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, dword [esp + 0x70]
push ecx
mov ecx, dword [esp + 0x70]
mov dword [esp + 0x20], eax
cdq
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0x3c]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x68]
add ecx, dword [esp + 0x14]
cmp edx, eax
jge 0x4bfbf1
cmp dword [esp + 0x28], 0
jle 0x4c0002
mov eax, dword [esp + 0x7c]
cdq
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x70], edx
cdq
mov dword [esp + 0x54], eax
add ecx, 0xffff
lea eax, [esi + 0xffff]
mov dword [esp + 0x58], edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], eax
mov edi, dword [esp + 0x24]
mov ecx, dword [esp + 0x70]
sub dword [esp + 0x28], 1
and edi, 0xffff0000
mov eax, edi
sub eax, esi
cdq
push edx
push eax
mov dword [esp + 0x90], edx
mov edx, dword [esp + 0x74]
push ecx
push edx
mov dword [esp + 0x94], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x84]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x88]
push eax
mov eax, dword [esp + 0x58]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x44]
add eax, dword [esp + 0x40]
mov ecx, edi
sar ecx, 0x10
lea ecx, [edx + ecx*4]
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x20]
and ecx, 0xffff0000
sub ecx, edi
sar ecx, 0x10
test ecx, ecx
jle 0x4bfba3
mov edi, dword [esp + 0x10]
lea edx, [eax - 0x8000]
add edi, 0xffff8000
mov dword [esp + 0xa4], edx
mov dword [esp + 0x60], edi
sub ecx, 1
test edi, edi
mov dword [esp + 0x9c], ecx
jle 0x4bf916
and edi, 0xffff0000
mov eax, edi
mov dword [esp + 0x10], edx
xor edx, edx
sar eax, 0x10
lea ecx, [ebx - 1]
cmp eax, ecx
setl dl
mov esi, edx
mov dword [esp + 0x34], edx
mov edx, dword [esp + 0x10]
jmp 0x4bf91e
xor edi, edi
xor esi, esi
mov dword [esp + 0x34], esi
test edx, edx
jle 0x4bf955
mov ecx, dword [esp + 0xb8]
mov esi, dword [esp + 0x34]
and edx, 0xffff0000
mov eax, edx
mov dword [esp + 0x10], edx
xor edx, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge dl
sub edx, 1
and edx, ebx
mov dword [esp + 0x38], edx
mov edx, dword [esp + 0x10]
jmp 0x4bf95b
xor edx, edx
mov dword [esp + 0x38], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebx
mov eax, edi
sar eax, 0x10
add ecx, eax
mov ebx, dword [ebp + ecx*4]
lea eax, [ecx + esi]
mov eax, dword [ebp + eax*4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
add ecx, eax
mov eax, dword [ebp + ecx*4]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0xa4]
sub eax, edx
add ecx, esi
mov esi, dword [esp + 0x60]
sub esi, edi
and eax, 0xfffe
add eax, 1
and esi, 0xfffe
add esi, 1
mov dword [esp + 0x38], esi
mov edi, 0x10000
sub edi, esi
mov esi, edi
imul edi, eax
mov edx, 0x10000
sub edx, eax
imul eax, dword [esp + 0x38]
imul esi, edx
imul edx, dword [esp + 0x38]
shr edx, 0x10
mov ecx, dword [ebp + ecx*4]
mov dword [esp + 0x4c], ebx
shr ebx, 0x18
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x14]
shr ebx, 0x18
imul edx, ebx
mov ebx, dword [esp + 0x10]
shr edx, 0x10
mov dword [esp + 0x18], edx
shr edi, 0x10
shr eax, 0x10
mov edx, ebx
shr edx, 0x18
imul edi, edx
mov edx, ecx
shr edx, 0x18
imul eax, edx
shr eax, 0x10
mov edx, eax
mov dword [esp + 0x38], edx
mov eax, ecx
and eax, 0xff0000
imul eax, edx
shr edi, 0x10
mov edx, ebx
and edx, 0xff0000
imul edx, edi
add eax, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
imul edx, dword [esp + 0x18]
add eax, edx
mov edx, dword [esp + 0x4c]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
mov dword [esp + 0x34], edi
movzx edi, cl
imul edi, dword [esp + 0x38]
movzx edx, bl
imul edx, dword [esp + 0x34]
and eax, 0xff0000ff
add edi, edx
movzx edx, byte [esp + 0x14]
imul edx, dword [esp + 0x18]
add edi, edx
mov edx, dword [esp + 0x4c]
movzx ebx, dl
imul ebx, esi
add edi, ebx
mov ebx, dword [esp + 0x18]
and ecx, 0xff00
imul ecx, dword [esp + 0x38]
and edi, 0xff00
or eax, edi
mov edi, dword [esp + 0x10]
and edi, 0xff00
imul edi, dword [esp + 0x34]
add ecx, edi
mov edi, dword [esp + 0x14]
and edi, 0xff00
and edx, 0xff00
imul edi, ebx
imul edx, esi
add ecx, edi
add ecx, edx
mov edx, dword [esp + 0x34]
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x38]
add ecx, edx
add ecx, ebx
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 0x4bfb63
mov edi, dword [esp + 0x74]
mov edx, dword [edi]
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov edi, dword [esp + 0x60]
mov edx, dword [esp + 0xa4]
add edi, dword [esp + 0x7c]
add edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x9c]
add dword [esp + 0x74], 4
test ecx, ecx
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x60], edi
mov dword [esp + 0xa4], edx
jg 0x4bf8e3
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0xb4]
add dword [esp + 0x24], eax
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0xb0]
add dword [esp + 0x20], edx
add dword [esp + 0x40], ecx
add esi, eax
mov eax, dword [esp + 0x78]
add eax, eax
add eax, eax
add dword [esp + 0x44], eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x48], eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x80], esi
jg 0x4bf835
jmp 0x4c0002
jle 0x4c0002
cmp dword [esp + 0x28], 0
jle 0x4c0002
mov eax, dword [esp + 0x7c]
cdq
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x70], edx
cdq
mov dword [esp + 0x58], edx
lea edx, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x54], eax
mov dword [esp + 0x34], edx
mov dword [esp + 0x38], ecx
mov edi, dword [esp + 0x38]
mov ecx, dword [esp + 0x6c]
sub dword [esp + 0x28], 1
and edi, 0xffff0000
mov eax, edi
sub eax, esi
cdq
push edx
push eax
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x78]
push eax
push ecx
mov dword [esp + 0xa8], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x48]
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0xa0], eax
mov eax, dword [esp + 0x98]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x44]
add eax, dword [esp + 0x40]
mov ecx, edi
sar ecx, 0x10
lea ecx, [edx + ecx*4]
mov dword [esp + 0xa4], ecx
mov ecx, dword [esp + 0x34]
and ecx, 0xffff0000
sub ecx, edi
sar ecx, 0x10
test ecx, ecx
jle 0x4bffb9
mov esi, dword [esp + 0x9c]
lea edx, [eax - 0x8000]
add esi, 0xffff8000
mov dword [esp + 0x74], edx
mov dword [esp + 0x60], esi
jmp 0x4bfcf0
sub ecx, 1
test esi, esi
mov dword [esp + 0x84], ecx
jle 0x4bfd29
and esi, 0xffff0000
mov eax, esi
mov dword [esp + 0x9c], edx
xor edx, edx
sar eax, 0x10
lea ecx, [ebx - 1]
cmp eax, ecx
setl dl
mov edi, edx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x9c]
jmp 0x4bfd31
xor esi, esi
xor edi, edi
mov dword [esp + 0x10], edi
test edx, edx
jle 0x4bfd6e
mov ecx, dword [esp + 0xb8]
mov edi, dword [esp + 0x10]
and edx, 0xffff0000
mov eax, edx
mov dword [esp + 0x9c], edx
xor edx, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge dl
sub edx, 1
and edx, ebx
mov dword [esp + 0x4c], edx
mov edx, dword [esp + 0x9c]
jmp 0x4bfd74
xor edx, edx
mov dword [esp + 0x4c], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebx
mov eax, esi
sar eax, 0x10
add ecx, eax
mov ebx, dword [ebp + ecx*4]
lea eax, [ecx + edi]
mov eax, dword [ebp + eax*4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x4c]
add ecx, eax
mov eax, dword [ebp + ecx*4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x74]
sub eax, edx
add edi, ecx
mov ecx, dword [ebp + edi*4]
mov edi, dword [esp + 0x60]
sub edi, esi
and eax, 0xfffe
add eax, 1
and edi, 0xfffe
add edi, 1
mov dword [esp + 0x4c], edi
mov edx, 0x10000
sub edx, eax
mov esi, 0x10000
sub esi, edi
imul edi, edx
mov dword [esp + 0x9c], esi
imul esi, edx
mov edx, dword [esp + 0x18]
shr edx, 0x18
mov dword [esp + 0x20], ebx
shr edi, 0x10
imul edi, edx
mov edx, eax
imul eax, dword [esp + 0x4c]
imul edx, dword [esp + 0x9c]
shr ebx, 0x18
shr edx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x14]
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 + 0x24], ebx
mov dword [esp + 0x10], edx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x18]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add eax, ebx
movzx ebx, byte [esp + 0x14]
imul ebx, dword [esp + 0x10]
add eax, edx
mov edx, dword [esp + 0x20]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
movzx edx, cl
imul edx, dword [esp + 0x24]
add edx, ebx
movzx ebx, byte [esp + 0x18]
and eax, 0xff0000ff
imul ebx, edi
add edx, ebx
movzx ebx, byte [esp + 0x20]
imul ebx, esi
add edx, ebx
mov ebx, dword [esp + 0x10]
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x14]
and ecx, 0xff00
imul ecx, dword [esp + 0x24]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x18]
and edx, 0xff00
imul edx, edi
add ecx, edx
mov edx, dword [esp + 0x20]
and edx, 0xff00
imul edx, esi
add ecx, edx
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x24]
add ecx, ebx
add ecx, edi
add ecx, esi
shl ecx, 0x18
shr eax, 8
and ecx, 0xff000000
or eax, ecx
mov edx, eax
and edx, 0xff000000
cmp edx, 0x8000000
jbe 0x4bff7c
mov edi, dword [esp + 0xa4]
mov edx, dword [edi]
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov esi, dword [esp + 0x60]
mov edx, dword [esp + 0x74]
add esi, dword [esp + 0x7c]
add edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x84]
add dword [esp + 0xa4], 4
test ecx, ecx
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x60], esi
mov dword [esp + 0x74], edx
jg 0x4bfcf0
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0xb4]
add dword [esp + 0x34], eax
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 0xb0]
add dword [esp + 0x38], edx
add dword [esp + 0x40], ecx
add esi, eax
mov eax, dword [esp + 0x78]
add eax, eax
add eax, eax
add dword [esp + 0x44], eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x48], eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x80], esi
jg 0x4bfc33
mov eax, dword [esp + 0x2c]
sub eax, dword [esp + 0x64]
mov dword [esp + 0x28], eax
je 0x4c0895
mov eax, dword [esp + 0x30]
mov ecx, dword [eax + 4]
mov edi, dword [eax]
mov edx, dword [esp + 0x50]
mov eax, dword [edx + 4]
sub eax, ecx
cdq
push edx
push eax
push 0x10000
push 0
mov dword [esp + 0x94], ecx
mov dword [esp + 0x28], edi
call fcn.006372b0
mov ecx, eax
mov eax, edx
mov edx, dword [esp + 0x50]
mov dword [esp + 0x2c], eax
mov eax, dword [edx]
sub eax, edi
cdq
push edx
push eax
mov eax, dword [esp + 0x34]
push eax
push ecx
call fcn.0063a250
mov cl, 0x20
call fcn.00643e20
mov ecx, eax
mov eax, dword [esp + 0x64]
shl eax, 0x10
sub eax, dword [esp + 0x84]
mov dword [esp + 0x4c], ecx
imul ecx
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x68]
mov ecx, eax
mov eax, edi
add ecx, eax
cmp edx, eax
jge 0x4c048a
cmp dword [esp + 0x28], 0
jle 0x4c0895
mov eax, dword [esp + 0x7c]
cdq
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x70], edx
cdq
mov dword [esp + 0x54], eax
mov eax, dword [esp + 0x78]
mov dword [esp + 0x58], edx
lea edx, [eax*4]
add ecx, 0xffff
lea eax, [esi + 0xffff]
mov dword [esp + 0x34], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x20], eax
mov edi, dword [esp + 0x20]
mov ecx, dword [esp + 0x70]
sub dword [esp + 0x28], 1
and edi, 0xffff0000
mov eax, edi
sub eax, esi
cdq
push edx
push eax
mov dword [esp + 0xa0], edx
mov edx, dword [esp + 0x74]
push ecx
push edx
mov dword [esp + 0xa4], eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x94]
mov edx, dword [esp + 0x58]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x98]
push eax
mov eax, dword [esp + 0x58]
push ecx
push edx
push eax
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x44]
add eax, dword [esp + 0x40]
mov ecx, edi
sar ecx, 0x10
lea ecx, [edx + ecx*4]
mov dword [esp + 0x64], ecx
mov ecx, dword [esp + 0x24]
and ecx, 0xffff0000
sub ecx, edi
sar ecx, 0x10
test ecx, ecx
jle 0x4c043a
lea edi, [eax - 0x8000]
mov eax, dword [esp + 0x2c]
add eax, 0xffff8000
mov dword [esp + 0x30], edi
mov dword [esp + 0x50], eax
jmp 0x4c0198
mov edi, dword [esp + 0x30]
mov eax, dword [esp + 0x50]
sub ecx, 1
test eax, eax
mov dword [esp + 0x84], ecx
jle 0x4c01ca
and eax, 0xffff0000
mov edx, eax
mov dword [esp + 0x2c], eax
xor eax, eax
sar edx, 0x10
lea ecx, [ebx - 1]
cmp edx, ecx
setl al
mov edx, eax
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x2c]
jmp 0x4c01d2
xor eax, eax
xor edx, edx
mov dword [esp + 0x1c], edx
test edi, edi
jle 0x4c0209
mov ecx, dword [esp + 0xb8]
and edi, 0xffff0000
mov dword [esp + 0x2c], eax
xor eax, eax
mov edx, edi
sar edx, 0x10
add ecx, 0xffffffff
cmp edx, ecx
mov edx, dword [esp + 0x1c]
setge al
sub eax, 1
and eax, ebx
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x2c]
jmp 0x4c020f
xor edi, edi
mov dword [esp + 0x10], edi
mov ecx, edi
sar ecx, 0x10
imul ecx, ebx
mov esi, eax
sar esi, 0x10
add ecx, esi
mov esi, dword [ebp + ecx*4]
lea ebx, [ecx + edx]
mov ebx, dword [ebp + ebx*4]
mov dword [esp + 0x78], ebx
mov ebx, dword [esp + 0x10]
add ecx, ebx
mov ebx, dword [ebp + ecx*4]
add edx, ecx
mov edx, dword [ebp + edx*4]
mov dword [esp + 0x18], edx
mov edx, dword [esp + 0x50]
sub edx, eax
mov eax, dword [esp + 0x30]
sub eax, edi
mov dword [esp + 0x14], ebx
and eax, 0xfffe
add eax, 1
and edx, 0xfffe
add edx, 1
mov ebx, 0x10000
sub ebx, edx
mov ecx, ebx
mov edi, 0x10000
sub edi, eax
imul ecx, edi
mov dword [esp + 0x68], esi
shr esi, 0x18
shr ecx, 0x10
imul ecx, esi
mov esi, edx
imul esi, edi
mov edi, dword [esp + 0x78]
shr edi, 0x18
shr esi, 0x10
imul esi, edi
mov edi, eax
imul eax, edx
mov edx, dword [esp + 0x18]
imul edi, ebx
mov ebx, dword [esp + 0x14]
shr eax, 0x10
shr edx, 0x18
imul eax, edx
shr ebx, 0x18
shr eax, 0x10
mov edx, eax
mov eax, dword [esp + 0x78]
shr edi, 0x10
imul edi, ebx
mov ebx, dword [esp + 0x68]
and ebx, 0xff00
and eax, 0xff00
shr ecx, 0x10
imul ebx, ecx
shr esi, 0x10
imul eax, esi
add eax, ebx
mov ebx, dword [esp + 0x18]
and ebx, 0xff00
imul ebx, edx
add eax, ebx
mov ebx, dword [esp + 0x14]
and ebx, 0xff00
shr edi, 0x10
imul ebx, edi
add eax, ebx
mov ebx, dword [esp + 0x18]
and ebx, 0xff0000
imul ebx, edx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
imul edx, edi
and eax, 0xff0000
add ebx, edx
mov edx, dword [esp + 0x78]
and edx, 0xff0000
imul edx, esi
add ebx, edx
mov edx, dword [esp + 0x68]
and edx, 0xff0000
imul edx, ecx
add ebx, edx
movzx edx, byte [esp + 0x18]
imul edx, dword [esp + 0x1c]
and ebx, 0xff0000ff
or eax, ebx
movzx ebx, byte [esp + 0x14]
imul ebx, edi
add edx, ebx
movzx ebx, byte [esp + 0x78]
imul ebx, esi
add edx, ebx
movzx ebx, byte [esp + 0x68]
imul ebx, ecx
add edx, ebx
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x1c]
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 0x4c0408
mov edi, dword [esp + 0x64]
mov edx, dword [edi]
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov edx, dword [esp + 0x7c]
mov eax, dword [esp + 0x90]
mov ecx, dword [esp + 0x84]
add dword [esp + 0x64], 4
add dword [esp + 0x50], edx
add dword [esp + 0x30], eax
test ecx, ecx
mov ebx, dword [esp + 0x3c]
jg 0x4c0190
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0x4c]
add dword [esp + 0x20], eax
add dword [esp + 0x24], ecx
mov edx, dword [esp + 0x34]
mov ecx, dword [esp + 0xb0]
add dword [esp + 0x44], edx
add dword [esp + 0x40], ecx
add esi, eax
mov eax, dword [esp + 0xac]
add dword [esp + 0x48], eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x80], esi
jg 0x4c00df
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xac
ret
jle 0x4c0895
cmp dword [esp + 0x28], 0
jle 0x4c0895
mov eax, dword [esp + 0x7c]
cdq
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x90]
mov dword [esp + 0x70], edx
cdq
mov dword [esp + 0x58], edx
mov edx, dword [esp + 0x78]
mov dword [esp + 0x54], eax
lea eax, [edx*4]
lea edx, [esi + 0xffff]
add ecx, 0xffff
mov dword [esp + 0x34], eax
mov dword [esp + 0x60], edx
mov dword [esp + 0x74], ecx
mov edi, dword [esp + 0x74]
mov ecx, dword [esp + 0x6c]
sub dword [esp + 0x28], 1
and edi, 0xffff0000
mov eax, edi
sub eax, esi
cdq
push edx
push eax
mov dword [esp + 0x9c], eax
mov eax, dword [esp + 0x78]
push eax
push ecx
mov dword [esp + 0xa8], edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
add eax, dword [esp + 0x48]
mov edx, dword [esp + 0x98]
mov ecx, dword [esp + 0x58]
push edx
mov edx, dword [esp + 0x58]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x98]
push eax
push ecx
push edx
call fcn.0063a250
mov cl, 0x10
call fcn.00643e20
mov edx, dword [esp + 0x44]
add eax, dword [esp + 0x40]
mov ecx, edi
sar ecx, 0x10
lea ecx, [edx + ecx*4]
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x60]
and ecx, 0xffff0000
sub ecx, edi
sar ecx, 0x10
test ecx, ecx
jle 0x4c0850
mov esi, dword [esp + 0x2c]
lea edx, [eax - 0x8000]
add esi, 0xffff8000
mov dword [esp + 0xa4], edx
mov dword [esp + 0x24], esi
lea esp, [esp]
sub ecx, 1
test esi, esi
mov dword [esp + 0x9c], ecx
jle 0x4c05c3
and esi, 0xffff0000
mov eax, esi
mov dword [esp + 0x2c], edx
xor edx, edx
sar eax, 0x10
lea ecx, [ebx - 1]
cmp eax, ecx
setl dl
mov edi, edx
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0x2c]
jmp 0x4c05cb
xor esi, esi
xor edi, edi
mov dword [esp + 0x1c], edi
test edx, edx
jle 0x4c0602
mov ecx, dword [esp + 0xb8]
mov edi, dword [esp + 0x1c]
and edx, 0xffff0000
mov eax, edx
mov dword [esp + 0x2c], edx
xor edx, edx
sar eax, 0x10
add ecx, 0xffffffff
cmp eax, ecx
setge dl
sub edx, 1
and edx, ebx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x2c]
jmp 0x4c0608
xor edx, edx
mov dword [esp + 0x10], edx
mov ecx, edx
sar ecx, 0x10
imul ecx, ebx
mov eax, esi
sar eax, 0x10
add ecx, eax
mov ebx, dword [ebp + ecx*4]
lea eax, [ecx + edi]
mov eax, dword [ebp + eax*4]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
add ecx, eax
mov eax, dword [ebp + ecx*4]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xa4]
sub eax, edx
add edi, ecx
mov ecx, dword [ebp + edi*4]
mov edi, dword [esp + 0x24]
sub edi, esi
and eax, 0xfffe
add eax, 1
and edi, 0xfffe
add edi, 1
mov dword [esp + 0x84], edi
mov edx, 0x10000
sub edx, eax
mov esi, 0x10000
sub esi, edi
imul edi, edx
mov dword [esp + 0x2c], esi
imul esi, edx
mov edx, dword [esp + 0x14]
shr edx, 0x18
mov dword [esp + 0x68], ebx
shr edi, 0x10
imul edi, edx
mov edx, eax
imul eax, dword [esp + 0x84]
imul edx, dword [esp + 0x2c]
shr ebx, 0x18
shr edx, 0x10
shr esi, 0x10
imul esi, ebx
mov ebx, dword [esp + 0x18]
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 + 0x64], ebx
mov dword [esp + 0x1c], edx
mov eax, ecx
and eax, 0xff0000
imul eax, ebx
mov ebx, dword [esp + 0x18]
and ebx, 0xff0000
imul ebx, edx
mov edx, dword [esp + 0x14]
and edx, 0xff0000
shr edi, 0x10
imul edx, edi
add eax, ebx
movzx ebx, byte [esp + 0x18]
imul ebx, dword [esp + 0x1c]
add eax, edx
mov edx, dword [esp + 0x68]
and edx, 0xff0000
shr esi, 0x10
imul edx, esi
add eax, edx
movzx edx, cl
imul edx, dword [esp + 0x64]
add edx, ebx
movzx ebx, byte [esp + 0x14]
and eax, 0xff0000ff
imul ebx, edi
add edx, ebx
movzx ebx, byte [esp + 0x68]
imul ebx, esi
add edx, ebx
mov ebx, dword [esp + 0x1c]
and edx, 0xff00
or eax, edx
mov edx, dword [esp + 0x18]
and ecx, 0xff00
imul ecx, dword [esp + 0x64]
and edx, 0xff00
imul edx, ebx
add ecx, edx
mov edx, dword [esp + 0x14]
and edx, 0xff00
imul edx, edi
add ecx, edx
mov edx, dword [esp + 0x68]
and edx, 0xff00
imul edx, esi
add ecx, edx
and ecx, 0xff0000
or eax, ecx
mov ecx, dword [esp + 0x64]
add ecx, ebx
add ecx, edi
add ecx, esi
shl ecx, 0x18
shr eax, 8
and ecx, 0xff000000
or eax, ecx
mov edx, eax
and edx, 0xff000000
cmp edx, 0x8000000
jbe 0x4c0810
mov edi, dword [esp + 0x20]
mov edx, dword [edi]
mov esi, eax
and eax, 0xff00
and esi, 0xff00ff
mov ecx, edx
and ecx, 0xff00ff
add ecx, esi
mov esi, ecx
and edx, 0xff00
add edx, eax
mov eax, ecx
shr eax, 8
and eax, 1
shr esi, 0x18
imul eax, eax, 0xff
and esi, 1
imul esi, esi, 0xffff0000
or eax, esi
or eax, ecx
mov ecx, edx
shr ecx, 0x10
and ecx, 1
neg ecx
shl ecx, 8
or ecx, edx
and eax, 0xffff00ff
and ecx, 0xff00
or eax, ecx
or eax, 0xff000000
mov dword [edi], eax
mov esi, dword [esp + 0x24]
mov edx, dword [esp + 0xa4]
add esi, dword [esp + 0x7c]
add edx, dword [esp + 0x90]
mov ecx, dword [esp + 0x9c]
add dword [esp + 0x20], 4
test ecx, ecx
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x24], esi
mov dword [esp + 0xa4], edx
jg 0x4c0590
mov esi, dword [esp + 0x80]
mov eax, dword [esp + 0xb4]
mov edx, dword [esp + 0x4c]
add dword [esp + 0x60], eax
add dword [esp + 0x74], edx
mov ecx, dword [esp + 0xac]
mov edx, dword [esp + 0xb0]
add dword [esp + 0x48], ecx
add dword [esp + 0x40], edx
add esi, eax
mov eax, dword [esp + 0x34]
add dword [esp + 0x44], eax
cmp dword [esp + 0x28], 0
mov dword [esp + 0x80], esi
jg 0x4c04db
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xac
ret