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

Disassembly:
sub esp, 0xfc
shr edx, 1
mov dword [esp + 0xe4], edx
mov edx, dword [ecx + 0x10]
mov dword [esp + 0xf0], edx
mov edx, dword [ecx + 0x14]
mov ecx, dword [ecx]
push ebx
push ebp
mov dword [esp + 0xf4], edx
mov edx, dword [eax + 4]
cmp edx, dword [eax + 0x24]
mov dword [esp + 0xf0], ecx
lea ecx, [eax + 0x20]
lea ebp, [eax + 0x40]
push edi
mov edi, eax
mov dword [esp + 0x34], ecx
mov dword [esp + 0x58], ebp
jle 0x4f486f
mov edi, ecx
mov dword [esp + 0x34], eax
mov ecx, eax
mov eax, dword [ecx + 4]
cmp eax, dword [ebp + 4]
jle 0x4f4885
mov dword [esp + 0x34], ebp
mov dword [esp + 0x58], ecx
mov ebp, ecx
mov ecx, dword [esp + 0x34]
mov edx, dword [edi + 4]
cmp edx, dword [ecx + 4]
jle 0x4f4897
mov eax, edi
mov edi, ecx
mov dword [esp + 0x34], eax
mov ecx, eax
mov eax, dword [edi + 8]
imul eax, dword [esi]
shr eax, 8
mov dword [edi + 8], eax
mov edx, dword [esi + 4]
imul edx, dword [edi + 0xc]
shr edx, 8
mov dword [edi + 0xc], edx
mov eax, dword [esi + 8]
imul eax, dword [edi + 0x10]
shr eax, 8
mov dword [edi + 0x10], eax
mov edx, dword [esi + 0xc]
imul edx, dword [edi + 0x14]
shr edx, 8
mov dword [edi + 0x14], edx
mov eax, dword [ecx + 8]
imul eax, dword [esi]
mov edx, dword [ecx + 0xc]
shr eax, 8
mov dword [ecx + 8], eax
imul edx, dword [esi + 4]
mov eax, dword [ecx + 0x10]
shr edx, 8
mov dword [ecx + 0xc], edx
imul eax, dword [esi + 8]
shr eax, 8
mov dword [ecx + 0x10], eax
mov edx, dword [esi + 0xc]
imul edx, dword [ecx + 0x14]
shr edx, 8
mov dword [ecx + 0x14], edx
mov eax, dword [ebp + 8]
imul eax, dword [esi]
mov edx, dword [ebp + 0xc]
shr eax, 8
mov dword [ebp + 8], eax
imul edx, dword [esi + 4]
mov eax, dword [ebp + 0x10]
shr edx, 8
mov dword [ebp + 0xc], edx
imul eax, dword [esi + 8]
shr eax, 8
mov dword [ebp + 0x10], eax
mov eax, dword [esi + 0xc]
imul eax, dword [ebp + 0x14]
shr eax, 8
mov dword [ebp + 0x14], eax
mov edx, dword [edi + 4]
mov dword [esp + 0x14], eax
lea eax, [edx + 0xffff]
sar eax, 0x10
mov dword [esp + 0xc], eax
mov eax, dword [ebp + 4]
lea ebx, [eax + 0xffff]
sar ebx, 0x10
cmp dword [esp + 0xc], ebx
mov dword [esp + 0x10], edx
mov dword [esp + 0xc4], ebx
je 0x4f5f7b
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 + 0x74], ecx
call fcn.0062e060
mov ebx, eax
mov eax, dword [ebp]
mov ecx, edx
mov edx, dword [edi]
push ecx
sub eax, edx
mov dword [esp + 0x54], edx
cdq
push ebx
push edx
push eax
mov dword [esp + 0x2c], ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [edi + 8]
mov dword [esp + 0xec], eax
mov eax, dword [ebp + 8]
sub eax, ecx
mov dword [esp + 0x24], ecx
mov ecx, dword [esp + 0x1c]
push ecx
cdq
push ebx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [edi + 0xc]
mov dword [esp + 0xe8], eax
mov eax, dword [ebp + 0xc]
sub eax, ecx
mov dword [esp + 0x28], ecx
mov ecx, dword [esp + 0x1c]
push ecx
cdq
push ebx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [edi + 0x10]
mov dword [esp + 0xe4], eax
mov eax, dword [ebp + 0x10]
sub eax, ecx
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x1c]
push ecx
cdq
push ebx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [edi + 0x14]
mov dword [esp + 0xdc], eax
mov eax, dword [esp + 0x14]
sub eax, ecx
mov dword [esp + 0x78], ecx
mov ecx, dword [esp + 0x1c]
push ecx
cdq
push ebx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [edi + 0x18]
mov dword [esp + 0xe0], eax
mov eax, dword [ebp + 0x18]
sub eax, ecx
mov dword [esp + 0x74], ecx
mov ecx, dword [esp + 0x1c]
push ecx
cdq
push ebx
push edx
push eax
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov edi, dword [edi + 0x1c]
mov ecx, dword [esp + 0x1c]
mov dword [esp + 0xd8], eax
mov eax, dword [ebp + 0x1c]
push ecx
sub eax, edi
cdq
push ebx
push edx
push eax
mov dword [esp + 0x8c], edi
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x10]
mov dword [esp + 0xd4], eax
mov eax, dword [edx + 4]
sub eax, edi
cdq
mov ebp, eax
mov eax, dword [esp + 0xec]
mov ecx, edx
cdq
push ecx
push ebp
push edx
push eax
mov dword [esp + 0x7c], ecx
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x34]
mov ecx, dword [ecx]
cmp ecx, eax
mov dword [esp + 0x5c], eax
mov dword [esp + 0x60], ecx
je 0x4f5f7b
mov eax, dword [esp + 0xc]
shl eax, 0x10
sub eax, edi
cdq
mov ebx, edx
mov edx, dword [esp + 0x1c]
push ebx
mov edi, eax
mov eax, dword [esp + 0x1c]
push edi
push edx
push eax
mov dword [esp + 0x114], ebx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x50]
push ebx
mov dword [esp + 0x3c], eax
mov eax, dword [esp + 0xec]
cdq
push edi
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 + 0x24]
push ebx
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0xe8]
cdq
push edi
push edx
push eax
mov dword [esp + 0xa8], eax
mov dword [esp + 0xac], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x28]
push ebx
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0xe0]
cdq
push edi
push edx
push eax
mov dword [esp + 0x98], eax
mov dword [esp + 0x9c], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x2c]
push ebx
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0xe4]
cdq
push edi
push edx
push eax
mov dword [esp + 0x90], eax
mov dword [esp + 0x94], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x78]
push ebx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0xdc]
cdq
push edi
push edx
push eax
mov dword [esp + 0xd8], eax
mov dword [esp + 0xdc], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x74]
push ebx
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xd8]
cdq
push edi
push edx
push eax
mov dword [esp + 0xc8], eax
mov dword [esp + 0xcc], edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x7c]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x5c]
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov ecx, dword [esp + 0x6c]
push ecx
mov dword [esp + 0x20], edx
mov edx, dword [esp + 0x98]
push ebp
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x98]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [edx + 8]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x24]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb ebx, edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x9c]
push ecx
push ebp
mov dword [esp + 0xbc], eax
mov eax, dword [esp + 0xa0]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [edx + 0xc]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x28]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb ebx, edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x8c]
push ecx
push ebp
mov dword [esp + 0xb0], eax
mov eax, dword [esp + 0x90]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [edx + 0x10]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x2c]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb ebx, edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x84]
push ecx
push ebp
mov dword [esp + 0xb8], eax
mov eax, dword [esp + 0x88]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [edx + 0x14]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x78]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb ebx, edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0xcc]
push ecx
push ebp
mov dword [esp + 0xac], eax
mov eax, dword [esp + 0xd0]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [edx + 0x18]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x74]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb ebx, edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0xbc]
push ecx
push ebp
mov dword [esp + 0xb4], eax
mov eax, dword [esp + 0xc0]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ebx, edx
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [edx + 0x1c]
cdq
sub eax, ecx
sbb edx, ebx
mov ecx, eax
mov eax, dword [esp + 0x7c]
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb ebx, edx
mov edx, dword [esp + 0x1c]
push edx
push eax
push ebx
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0xc]
mov edx, ecx
imul edx, dword [esp + 0xf0]
mov dword [esp + 0xc8], eax
mov eax, dword [esp + 0x10c]
lea edx, [eax + edx*2]
mov eax, dword [esp + 0x64]
mov dword [esp + 0xb8], edx
sub eax, ecx
mov dword [esp + 0x30], eax
je 0x4f570d
mov eax, dword [esp + 0x60]
sub eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x6c]
push ecx
cdq
push ebp
mov ebx, eax
push 0x10000
mov eax, edx
push 0
mov dword [esp + 0x24], eax
call fcn.0062e060
push edx
push eax
mov eax, dword [esp + 0x1c]
push eax
push ebx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, dword [esp + 0x104]
push ecx
mov dword [esp + 0x18], eax
cdq
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x34]
mov ecx, eax
mov eax, dword [edx]
mov edx, dword [esp + 0x5c]
add ecx, dword [esp + 0x50]
cmp edx, eax
jge 0x4f531e
cmp dword [esp + 0x30], 0
jle 0x4f570d
mov eax, dword [esp + 0xb4]
cdq
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0xf0]
mov dword [esp + 0x1c], edx
lea edx, [eax + eax]
mov eax, dword [esp + 0x38]
add ecx, 0xffff
add eax, 0xffff
mov dword [esp + 0x50], edx
mov dword [esp + 0x24], ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x84]
sub dword [esp + 0x30], 1
and eax, 0xffff0000
mov dword [esp + 0xc], eax
sub eax, dword [esp + 0x38]
cdq
mov ebx, edx
mov edx, dword [esp + 0x80]
push ebx
mov edi, eax
push edi
push ecx
push edx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x88]
push ebx
mov ebp, eax
mov eax, dword [esp + 0x90]
add ebp, dword [esp + 0x58]
push edi
push eax
push ecx
mov dword [esp + 0x70], ebp
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x44]
mov edx, dword [esp + 0x9c]
push ebx
push edi
mov dword [esp + 0x84], eax
mov eax, dword [esp + 0xa0]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x94]
add eax, dword [esp + 0x48]
mov edx, dword [esp + 0x90]
push ebx
push edi
push ecx
push edx
mov dword [esp + 0x84], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x68]
push ebx
mov dword [esp + 0x7c], eax
mov eax, dword [esp + 0x70]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x40]
mov edx, dword [esp + 0x1c]
push ebx
push edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x20]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0xb8]
mov ecx, eax
add ecx, dword [esp + 0x4c]
mov eax, edx
sar eax, 0x10
mov dword [esp + 0x10], ecx
lea eax, [edi + eax*2]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x24]
and eax, 0xffff0000
sub eax, edx
sar eax, 0x10
test eax, eax
jle 0x4f52aa
lea ecx, [ecx]
mov edi, dword [esp + 0x2c]
mov edx, ecx
shr edx, 0x10
imul edx, dword [esp + 0xfc]
shr edi, 0x10
add edx, edi
sub eax, 1
cmp edx, dword [esp + 0xf8]
jae 0x4f512e
mov edi, dword [esp + 0xf4]
mov edx, dword [edi + edx*4]
jmp 0x4f5130
xor edx, edx
mov ebx, edx
shr ebx, 0x18
cmp ebx, 8
jbe 0x4f525b
mov edi, dword [esi]
mov ecx, dword [esi + 4]
imul edi, ebp
imul ecx, dword [esp + 0x7c]
shr edi, 0x18
imul edi, ebx
mov ebx, edx
and ebx, 0xff0000
shr ecx, 0x18
imul ecx, ebx
mov ebx, dword [esi + 0xc]
imul ebx, dword [esp + 0x78]
movzx ebp, dl
shr ebx, 0x18
imul ebx, ebp
and ebx, 0xff00
and ecx, 0xff0000ff
or ecx, ebx
mov ebx, dword [esi + 8]
imul ebx, dword [esp + 0x74]
and edx, 0xff00
shr ebx, 0x18
imul ebx, edx
mov edx, dword [esp + 0xc]
and ebx, 0xff0000
or ecx, ebx
movzx ebx, word [edx]
mov edx, ebx
and edx, 0xf800
shr edi, 8
shr ecx, 8
shl edx, 5
mov ebp, ebx
and ebp, 0x1f
or edx, ebp
mov ebp, ecx
and ecx, 0xff00
imul ecx, edi
and ebp, 0xff00ff
imul ebp, edi
add edx, edx
add edx, edx
and ebx, 0x7e0
add edx, edx
shr ecx, 8
or ebx, 0x18
or edx, 0x70007
and ecx, 0xff00
shl ebx, 5
add ecx, ebx
shr ebp, 8
and ebp, 0xff00ff
add edx, ebp
mov edi, edx
shr edi, 0x18
and edi, 1
mov ebx, edx
imul edi, edi, 0xff0000
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or edi, ebx
or edx, edi
mov edi, ecx
shr edi, 0x10
and edi, 1
imul edi, edi, 0xff00
shr ecx, 5
shr edi, 5
or edi, ecx
mov ecx, edx
shr ecx, 3
and ecx, 0x1f
shr edx, 8
and edi, 0x7e0
or edi, ecx
mov ecx, dword [esp + 0x10]
and edx, 0xf800
or edi, edx
mov edx, dword [esp + 0xc]
mov word [edx], di
mov ebp, dword [esp + 0x60]
mov edx, dword [esp + 0xa8]
add dword [esp + 0x7c], edx
mov edx, dword [esp + 0xb0]
add dword [esp + 0x74], edx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x78], edx
add ebp, dword [esp + 0xb4]
mov edx, dword [esp + 0xac]
add ecx, dword [esp + 0xc8]
add dword [esp + 0xc], 2
add dword [esp + 0x2c], edx
test eax, eax
mov dword [esp + 0x60], ebp
mov dword [esp + 0x10], ecx
jg 0x4f5100
mov eax, dword [esp + 0xec]
add dword [esp + 0x38], eax
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
add dword [esp + 0x24], eax
add dword [esp + 0xb8], ecx
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xdc]
add dword [esp + 0x54], edx
add dword [esp + 0x44], eax
add dword [esp + 0x48], ecx
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
add dword [esp + 0x3c], edx
add dword [esp + 0x40], eax
add dword [esp + 0x4c], ecx
cmp dword [esp + 0x30], 0
jg 0x4f4fd3
jmp 0x4f570d
jle 0x4f570d
cmp dword [esp + 0x30], 0
jle 0x4f570d
mov eax, dword [esp + 0xb4]
cdq
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0xf0]
mov dword [esp + 0x18], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x38]
add edx, 0xffff
add ecx, 0xffff
mov dword [esp + 0x50], eax
mov dword [esp + 0x74], edx
mov dword [esp + 0x7c], ecx
mov eax, dword [esp + 0x7c]
mov ecx, dword [esp + 0x80]
sub dword [esp + 0x30], 1
and eax, 0xffff0000
mov dword [esp + 0xc], eax
sub eax, dword [esp + 0x38]
cdq
mov ebx, edx
push ebx
mov edi, eax
mov eax, dword [esp + 0x88]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x8c]
push ebx
mov ebp, eax
mov eax, dword [esp + 0x8c]
add ebp, dword [esp + 0x58]
push edi
push edx
push eax
mov dword [esp + 0x20], ebp
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x9c]
add eax, dword [esp + 0x44]
mov edx, dword [esp + 0x98]
push ebx
push edi
push ecx
push edx
mov dword [esp + 0x34], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x90]
push ebx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x98]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x6c]
push ebx
push edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x70]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x1c]
add eax, dword [esp + 0x40]
mov edx, dword [esp + 0x18]
push ebx
push edi
push ecx
push edx
mov dword [esp + 0x88], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0xc]
mov edi, dword [esp + 0xb8]
mov ecx, eax
add ecx, dword [esp + 0x4c]
mov eax, edx
sar eax, 0x10
mov dword [esp + 0x60], ecx
lea eax, [edi + eax*2]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x74]
and eax, 0xffff0000
sub eax, edx
sar eax, 0x10
test eax, eax
jle 0x4f569e
mov edi, dword [esp + 0x78]
mov edx, ecx
shr edx, 0x10
imul edx, dword [esp + 0xfc]
shr edi, 0x10
add edx, edi
sub eax, 1
cmp edx, dword [esp + 0xf8]
jae 0x4f5522
mov edi, dword [esp + 0xf4]
mov edx, dword [edi + edx*4]
jmp 0x4f5524
xor edx, edx
mov ebx, edx
shr ebx, 0x18
cmp ebx, 8
jbe 0x4f564f
mov edi, dword [esi]
mov ecx, dword [esi + 4]
imul edi, ebp
imul ecx, dword [esp + 0x24]
shr edi, 0x18
imul edi, ebx
mov ebx, edx
and ebx, 0xff0000
shr ecx, 0x18
imul ecx, ebx
mov ebx, dword [esi + 0xc]
imul ebx, dword [esp + 0x2c]
movzx ebp, dl
shr ebx, 0x18
imul ebx, ebp
and ebx, 0xff00
and ecx, 0xff0000ff
or ecx, ebx
mov ebx, dword [esi + 8]
imul ebx, dword [esp + 0x28]
and edx, 0xff00
shr ebx, 0x18
imul ebx, edx
mov edx, dword [esp + 0xc]
and ebx, 0xff0000
or ecx, ebx
movzx ebx, word [edx]
mov edx, ebx
and edx, 0xf800
shr edi, 8
shr ecx, 8
shl edx, 5
mov ebp, ebx
and ebp, 0x1f
or edx, ebp
mov ebp, ecx
and ecx, 0xff00
imul ecx, edi
and ebp, 0xff00ff
imul ebp, edi
add edx, edx
add edx, edx
and ebx, 0x7e0
add edx, edx
shr ecx, 8
or ebx, 0x18
or edx, 0x70007
and ecx, 0xff00
shl ebx, 5
add ecx, ebx
shr ebp, 8
and ebp, 0xff00ff
add edx, ebp
mov edi, edx
shr edi, 0x18
and edi, 1
mov ebx, edx
imul edi, edi, 0xff0000
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or edi, ebx
or edx, edi
mov edi, ecx
shr edi, 0x10
and edi, 1
imul edi, edi, 0xff00
shr ecx, 5
shr edi, 5
or edi, ecx
mov ecx, edx
shr ecx, 3
and ecx, 0x1f
shr edx, 8
and edi, 0x7e0
or edi, ecx
mov ecx, dword [esp + 0x60]
and edx, 0xf800
or edi, edx
mov edx, dword [esp + 0xc]
mov word [edx], di
mov ebp, dword [esp + 0x10]
mov edx, dword [esp + 0xa8]
add dword [esp + 0x24], edx
mov edx, dword [esp + 0xb0]
add dword [esp + 0x28], edx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x2c], edx
add ebp, dword [esp + 0xb4]
mov edx, dword [esp + 0xac]
add ecx, dword [esp + 0xc8]
add dword [esp + 0xc], 2
add dword [esp + 0x78], edx
test eax, eax
mov dword [esp + 0x10], ebp
mov dword [esp + 0x60], ecx
jg 0x4f54f4
mov eax, dword [esp + 0xec]
add dword [esp + 0x38], eax
add dword [esp + 0x74], eax
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
add dword [esp + 0x7c], eax
add dword [esp + 0xb8], ecx
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xdc]
add dword [esp + 0x54], edx
add dword [esp + 0x44], eax
add dword [esp + 0x48], ecx
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
add dword [esp + 0x3c], edx
add dword [esp + 0x40], eax
add dword [esp + 0x4c], ecx
cmp dword [esp + 0x30], 0
jg 0x4f53cd
mov eax, dword [esp + 0xc4]
sub eax, dword [esp + 0x64]
mov dword [esp + 0x30], eax
je 0x4f5f7b
mov eax, dword [esp + 0x34]
mov ebx, dword [eax + 4]
mov edi, dword [eax]
mov ebp, dword [esp + 0x58]
mov eax, dword [ebp + 4]
sub eax, ebx
cdq
push edx
push eax
push 0x10000
push 0
call fcn.0062e060
mov ecx, eax
mov eax, edx
mov dword [esp + 0xc4], eax
mov eax, dword [ebp]
sub eax, edi
cdq
push edx
push eax
mov eax, dword [esp + 0xcc]
push eax
push ecx
call fcn.00630410
mov cl, 0x20
call fcn.00639880
mov ecx, eax
mov eax, dword [esp + 0x64]
shl eax, 0x10
sub eax, ebx
imul ecx
mov dword [esp + 0x60], ecx
mov cl, 0x10
call fcn.00639880
mov ecx, eax
mov eax, dword [esp + 0x5c]
add ecx, edi
cmp eax, edi
jge 0x4f5b89
cmp dword [esp + 0x30], 0
jle 0x4f5f7b
mov eax, dword [esp + 0xb4]
cdq
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x6c], edx
cdq
add ecx, 0xffff
mov dword [esp + 0x2c], ecx
mov ecx, dword [esp + 0x38]
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0xf0]
mov dword [esp + 0x18], eax
lea eax, [edx + edx]
add ecx, 0xffff
mov dword [esp + 0x50], eax
mov dword [esp + 0x28], ecx
mov eax, dword [esp + 0x28]
sub dword [esp + 0x30], 1
and eax, 0xffff0000
mov dword [esp + 0xc4], eax
sub eax, dword [esp + 0x38]
cdq
mov ebx, edx
mov edx, dword [esp + 0x84]
push ebx
mov edi, eax
mov eax, dword [esp + 0x84]
push edi
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x8c]
mov edx, dword [esp + 0x88]
push ebx
push edi
mov ebp, eax
add ebp, dword [esp + 0x5c]
push ecx
push edx
mov dword [esp + 0x24], ebp
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x44]
mov ecx, dword [esp + 0x98]
push ebx
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0xa0]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x48]
mov edx, dword [esp + 0x94]
push ebx
push edi
mov dword [esp + 0x6c], eax
mov eax, dword [esp + 0x98]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x6c]
add eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x68]
push ebx
push edi
push ecx
push edx
mov dword [esp + 0x68], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x18]
push ebx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x20]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0xc4]
mov edi, dword [esp + 0xb8]
mov ecx, eax
add ecx, dword [esp + 0x4c]
mov eax, edx
sar eax, 0x10
mov dword [esp + 0x10], ecx
lea eax, [edi + eax*2]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x2c]
and eax, 0xffff0000
sub eax, edx
sar eax, 0x10
test eax, eax
jle 0x4f5b10
mov edi, dword [esp + 0x24]
mov edx, ecx
shr edx, 0x10
imul edx, dword [esp + 0xfc]
shr edi, 0x10
add edx, edi
sub eax, 1
cmp edx, dword [esp + 0xf8]
jae 0x4f5994
mov edi, dword [esp + 0xf4]
mov edx, dword [edi + edx*4]
jmp 0x4f5996
xor edx, edx
mov ebx, edx
shr ebx, 0x18
cmp ebx, 8
jbe 0x4f5ac1
mov edi, dword [esi]
mov ecx, dword [esi + 4]
imul edi, ebp
imul ecx, dword [esp + 0x5c]
shr edi, 0x18
imul edi, ebx
mov ebx, edx
and ebx, 0xff0000
shr ecx, 0x18
imul ecx, ebx
mov ebx, dword [esi + 0xc]
imul ebx, dword [esp + 0x58]
movzx ebp, dl
shr ebx, 0x18
imul ebx, ebp
and ebx, 0xff00
and ecx, 0xff0000ff
or ecx, ebx
mov ebx, dword [esi + 8]
imul ebx, dword [esp + 0x64]
and edx, 0xff00
shr ebx, 0x18
imul ebx, edx
mov edx, dword [esp + 0xc]
and ebx, 0xff0000
or ecx, ebx
movzx ebx, word [edx]
mov edx, ebx
and edx, 0xf800
shr edi, 8
shr ecx, 8
shl edx, 5
mov ebp, ebx
and ebp, 0x1f
or edx, ebp
mov ebp, ecx
and ecx, 0xff00
imul ecx, edi
and ebp, 0xff00ff
imul ebp, edi
add edx, edx
add edx, edx
and ebx, 0x7e0
add edx, edx
shr ecx, 8
or ebx, 0x18
or edx, 0x70007
and ecx, 0xff00
shl ebx, 5
add ecx, ebx
shr ebp, 8
and ebp, 0xff00ff
add edx, ebp
mov edi, edx
shr edi, 0x18
and edi, 1
mov ebx, edx
imul edi, edi, 0xff0000
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or edi, ebx
or edx, edi
mov edi, ecx
shr edi, 0x10
and edi, 1
imul edi, edi, 0xff00
shr ecx, 5
shr edi, 5
or edi, ecx
mov ecx, edx
shr ecx, 3
and ecx, 0x1f
shr edx, 8
and edi, 0x7e0
or edi, ecx
mov ecx, dword [esp + 0x10]
and edx, 0xf800
or edi, edx
mov edx, dword [esp + 0xc]
mov word [edx], di
mov ebp, dword [esp + 0x14]
mov edx, dword [esp + 0xa8]
add dword [esp + 0x5c], edx
mov edx, dword [esp + 0xb0]
add dword [esp + 0x64], edx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x58], edx
add ebp, dword [esp + 0xb4]
mov edx, dword [esp + 0xac]
add ecx, dword [esp + 0xc8]
add dword [esp + 0xc], 2
add dword [esp + 0x24], edx
test eax, eax
mov dword [esp + 0x14], ebp
mov dword [esp + 0x10], ecx
jg 0x4f5966
mov eax, dword [esp + 0xec]
add dword [esp + 0x38], eax
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x50]
add dword [esp + 0x2c], eax
add dword [esp + 0xb8], ecx
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xdc]
add dword [esp + 0x54], edx
add dword [esp + 0x44], eax
add dword [esp + 0x48], ecx
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
add dword [esp + 0x3c], edx
add dword [esp + 0x40], eax
add dword [esp + 0x4c], ecx
cmp dword [esp + 0x30], 0
jg 0x4f583c
pop edi
pop ebp
pop ebx
add esp, 0xfc
ret
jle 0x4f5f7b
cmp dword [esp + 0x30], 0
jle 0x4f5f7b
mov eax, dword [esp + 0xb4]
cdq
mov dword [esp + 0x80], eax
mov eax, dword [esp + 0xa8]
mov dword [esp + 0x84], edx
cdq
mov dword [esp + 0x88], eax
mov eax, dword [esp + 0xb0]
mov dword [esp + 0x8c], edx
cdq
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0xa4]
mov dword [esp + 0x9c], edx
cdq
mov dword [esp + 0x90], eax
mov eax, dword [esp + 0xac]
mov dword [esp + 0x94], edx
cdq
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0xc8]
mov dword [esp + 0x6c], edx
cdq
mov dword [esp + 0x1c], edx
mov edx, dword [esp + 0xf0]
mov dword [esp + 0x18], eax
lea eax, [edx + edx]
mov edx, dword [esp + 0x38]
add edx, 0xffff
add ecx, 0xffff
mov dword [esp + 0x50], eax
mov dword [esp + 0x28], edx
mov dword [esp + 0x2c], ecx
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x80]
sub dword [esp + 0x30], 1
and eax, 0xffff0000
mov dword [esp + 0xc4], eax
sub eax, dword [esp + 0x38]
cdq
mov ebx, edx
push ebx
mov edi, eax
mov eax, dword [esp + 0x88]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0x8c]
push ebx
mov ebp, eax
mov eax, dword [esp + 0x8c]
add ebp, dword [esp + 0x58]
push edi
push edx
push eax
mov dword [esp + 0x24], ebp
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x9c]
add eax, dword [esp + 0x44]
mov edx, dword [esp + 0x98]
push ebx
push edi
push ecx
push edx
mov dword [esp + 0x6c], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x48]
mov ecx, dword [esp + 0x90]
push ebx
mov dword [esp + 0x68], eax
mov eax, dword [esp + 0x98]
push edi
push eax
push ecx
call fcn.00630410
mov cl, 0x10
call fcn.00639880
add eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x6c]
push ebx
push edi
mov dword [esp + 0x60], eax
mov eax, dword [esp + 0x70]
push edx
push eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov ecx, dword [esp + 0x1c]
add eax, dword [esp + 0x40]
mov edx, dword [esp + 0x18]
push ebx
push edi
push ecx
push edx
mov dword [esp + 0x34], eax
call fcn.00630410
mov cl, 0x10
call fcn.00639880
mov edx, dword [esp + 0xc4]
mov edi, dword [esp + 0xb8]
mov ecx, eax
add ecx, dword [esp + 0x4c]
mov eax, edx
sar eax, 0x10
mov dword [esp + 0x10], ecx
lea eax, [edi + eax*2]
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x28]
and eax, 0xffff0000
sub eax, edx
sar eax, 0x10
test eax, eax
jle 0x4f5f0c
mov edi, dword [esp + 0x24]
mov edx, ecx
shr edx, 0x10
imul edx, dword [esp + 0xfc]
shr edi, 0x10
add edx, edi
sub eax, 1
cmp edx, dword [esp + 0xf8]
jae 0x4f5d90
mov edi, dword [esp + 0xf4]
mov edx, dword [edi + edx*4]
jmp 0x4f5d92
xor edx, edx
mov ebx, edx
shr ebx, 0x18
cmp ebx, 8
jbe 0x4f5ebd
mov edi, dword [esi]
mov ecx, dword [esi + 0xc]
imul edi, ebp
imul ecx, dword [esp + 0x58]
shr edi, 0x18
imul edi, ebx
movzx ebx, dl
shr ecx, 0x18
imul ecx, ebx
mov ebx, dword [esi + 4]
imul ebx, dword [esp + 0x5c]
mov ebp, edx
shr ebx, 0x18
and ebp, 0xff0000
imul ebx, ebp
and ebx, 0xff0000ff
and ecx, 0xff00
or ecx, ebx
mov ebx, dword [esi + 8]
imul ebx, dword [esp + 0x64]
and edx, 0xff00
shr ebx, 0x18
imul ebx, edx
mov edx, dword [esp + 0xc]
and ebx, 0xff0000
or ecx, ebx
movzx ebx, word [edx]
mov edx, ebx
and edx, 0xf800
shr edi, 8
shl edx, 5
shr ecx, 8
mov ebp, ebx
and ebp, 0x1f
or edx, ebp
mov ebp, ecx
and ecx, 0xff00
imul ecx, edi
and ebp, 0xff00ff
imul ebp, edi
add edx, edx
add edx, edx
and ebx, 0x7e0
add edx, edx
shr ecx, 8
or ebx, 0x18
or edx, 0x70007
shr ebp, 8
and ecx, 0xff00
shl ebx, 5
add ecx, ebx
and ebp, 0xff00ff
add edx, ebp
mov edi, edx
shr edi, 0x18
and edi, 1
mov ebx, edx
imul edi, edi, 0xff0000
shr ebx, 8
and ebx, 1
imul ebx, ebx, 0xff
or edi, ebx
or edx, edi
mov edi, ecx
shr edi, 0x10
and edi, 1
mov ebp, dword [esp + 0x14]
imul edi, edi, 0xff00
shr ecx, 5
shr edi, 5
or edi, ecx
mov ecx, edx
shr ecx, 3
shr edx, 8
and edi, 0x7e0
and ecx, 0x1f
and edx, 0xf800
or edi, ecx
or edi, edx
mov edx, dword [esp + 0xc]
mov word [edx], di
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0xa8]
add dword [esp + 0x5c], edx
mov edx, dword [esp + 0xb0]
add dword [esp + 0x64], edx
mov edx, dword [esp + 0xa4]
add dword [esp + 0x58], edx
add ebp, dword [esp + 0xb4]
mov edx, dword [esp + 0xac]
add ecx, dword [esp + 0xc8]
add dword [esp + 0xc], 2
add dword [esp + 0x24], edx
test eax, eax
mov dword [esp + 0x14], ebp
mov dword [esp + 0x10], ecx
jg 0x4f5d62
mov eax, dword [esp + 0xec]
add dword [esp + 0x38], eax
add dword [esp + 0x28], eax
mov eax, dword [esp + 0x60]
mov ecx, dword [esp + 0x50]
add dword [esp + 0x2c], eax
add dword [esp + 0xb8], ecx
mov edx, dword [esp + 0xe8]
mov eax, dword [esp + 0xe4]
mov ecx, dword [esp + 0xdc]
add dword [esp + 0x54], edx
add dword [esp + 0x44], eax
add dword [esp + 0x48], ecx
mov edx, dword [esp + 0xe0]
mov eax, dword [esp + 0xd8]
mov ecx, dword [esp + 0xd4]
add dword [esp + 0x3c], edx
add dword [esp + 0x40], eax
add dword [esp + 0x4c], ecx
cmp dword [esp + 0x30], 0
jg 0x4f5c38
pop edi
pop ebp
pop ebx
add esp, 0xfc
ret