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

Disassembly:
sub esp, 0xa0
push ebx
push ebp
push esi
mov esi, dword [esp + 0xb0]
test esi, esi
push edi
je 0x4ba09c
mov eax, dword [esi + 0x14]
test eax, eax
je 0x4ba09c
fld dword [esp + 0xc4]
fmul qword [0x4f0530]
sub esp, 8
mov dword [esp + 0x4c], 0
fadd qword [0x4f0ed8]
fistp qword [esp + 0x54]
mov ebp, dword [esp + 0x54]
fld dword [esp + 0xc8]
fmul qword [0x4f0530]
fadd qword [0x4f0ed8]
fstp qword [esp]
call fcn.004bcf6f
fistp qword [esp + 0x54]
mov eax, dword [esp + 0x54]
add esp, 8
test eax, eax
mov dword [esp + 0x3c], eax
jne 0x4b7d0c
xor edi, edi
jmp 0x4b7d13
mov edi, dword [esp + 0xb8]
mov eax, dword [0x522024]
mov ecx, dword [esi + 0x24]
cmp eax, ecx
mov dword [esp + 0x48], eax
jg 0x4b7d2a
mov ecx, dword [esi + 0x20]
cmp eax, ecx
jge 0x4b7d2e
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0xbc]
test eax, eax
jle 0x4ba08d
mov ebx, dword [esp + 0xb4]
push ebx
call fcn.004ba0b0
add esp, 4
test eax, eax
jne 0x4ba08d
mov eax, dword [ebx + 0x14]
mov ecx, eax
xor ecx, ebp
jge 0x4b7d60
neg ebp
mov edx, dword [ebx + 8]
mov esi, dword [ebx + 4]
push 0
push 0x10000
test eax, eax
mov dword [esp + 0x20], edx
jge 0x4b7dae
mov ecx, dword [ebx + 0xc]
mov eax, esi
sub eax, ecx
cdq
push edx
push eax
call fcn.004be890
mov ecx, eax
mov eax, ebp
mov ebx, edx
cdq
sub ecx, eax
mov eax, dword [esp + 0x18]
sbb ebx, edx
cdq
add ecx, eax
mov eax, ebp
adc ebx, edx
neg eax
cdq
push edx
push eax
push ebx
push ecx
call fcn.004c1190
mov ecx, eax
mov dword [esp + 0x34], ecx
jmp 0x4b7dfe
mov eax, ebp
cdq
mov dword [esp + 0x68], eax
mov eax, dword [ebx + 0x10]
sub eax, esi
mov dword [esp + 0x6c], edx
cdq
push edx
push eax
call fcn.004be890
mov ebx, eax
mov eax, edx
mov dword [esp + 0x40], eax
mov eax, dword [esp + 0x18]
cdq
sub ebx, eax
mov eax, dword [esp + 0x40]
mov ecx, dword [esp + 0x64]
sbb eax, edx
push ecx
mov edx, eax
mov eax, dword [esp + 0x64]
add ebx, eax
adc edx, ecx
sub ebx, 1
sbb edx, 0
push eax
push edx
push ebx
call fcn.004c1190
mov dword [esp + 0x34], eax
mov ecx, eax
test ecx, ecx
jge 0x4b7e0c
mov dword [esp + 0x34], 0
jmp 0x4b7e21
mov eax, dword [esp + 0xbc]
mov ebx, dword [esp + 0x44]
sub eax, ebx
cmp ecx, eax
jle 0x4b7e25
mov dword [esp + 0x34], eax
mov ecx, dword [esp + 0x34]
mov eax, dword [esp + 0x44]
mov ebx, esi
add eax, ecx
mov esi, dword [esp + 0x18]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0xb4]
mov dword [esp + 0x40], ebx
mov edx, dword [eax]
mov dword [esp + 0x38], edx
mov edx, dword [eax + 0x14]
test edx, edx
jge 0x4b8f74
test edi, edi
jne 0x4b7e76
mov eax, ecx
mov ecx, 0x10
imul eax, ebp
add eax, esi
cdq
mov esi, eax
call fcn.004bcd40
add ebx, eax
and esi, 0xffff
jmp 0x4b8ec8
mov edx, dword [esp + 0x48]
test edx, edx
jg 0x4b8118
lea edx, [esp + 0x58]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x2c]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x58], edx
test ecx, ecx
mov dword [esp + 0x5c], eax
je 0x4b7eed
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x60]
cmp eax, edx
jae 0x4b7ee9
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
shl eax, 0xc
mov edx, dword [edx]
add esi, ebp
shl edx, 4
imul edx
mov eax, edx
add edi, 4
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
neg eax
dec ecx
lea eax, [edx + eax*4]
mov dword [esp + 0x10], eax
jne 0x4b7e9c
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x4b7f99
mov eax, dword [esp + 0x3c]
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
mov ecx, edx
lea eax, [eax + ebx*4]
mov dword [esp + 0x30], ecx
push ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + 8]
push ecx
shl eax, 4
cdq
push edx
push eax
call fcn.004be890
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov eax, dword [edi]
mov ecx, esi
add eax, edx
mov edx, dword [esp + 0x38]
mov dword [edi], eax
add edi, 4
sar ecx, 0x10
lea eax, [edx + ebx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
and esi, 0xffff
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
mov ecx, esi
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi], eax
sar ecx, 0x10
add edi, 4
and esi, 0xffff
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x10], eax
test cl, 1
je 0x4b7fd9
mov edx, dword [esp + 0x10]
add esi, ebp
add edi, 4
mov eax, dword [edx + 8]
mov edx, dword [esp + 0x3c]
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, esi
mov dword [edi - 4], eax
mov eax, dword [esp + 0x10]
sar edx, 0x10
and esi, 0xffff
lea edx, [eax + edx*4]
mov dword [esp + 0x10], edx
sar ecx, 2
je 0x4b8101
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [eax + 8]
push ecx
shl eax, 4
cdq
push edx
push eax
call fcn.004be890
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov eax, dword [edi]
mov ecx, esi
add eax, edx
mov edx, dword [esp + 0x10]
sar ecx, 0x10
mov dword [edi], eax
add edi, 4
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
and esi, 0xffff
add ecx, edx
add esi, ebp
mov dword [edi], ecx
mov ecx, esi
mov eax, edx
mov edx, dword [esp + 0x10]
sar ecx, 0x10
sar eax, 0x1f
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
add edi, 4
call fcn.004be890
mov ecx, dword [edi]
and esi, 0xffff
add ecx, edx
add esi, ebp
mov dword [edi], ecx
mov ecx, esi
mov eax, edx
mov edx, dword [esp + 0x10]
sar ecx, 0x10
sar eax, 0x1f
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax + 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
add edi, 4
call fcn.004be890
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi]
and esi, 0xffff
add esi, ebp
add eax, edx
mov edx, dword [esp + 0x10]
mov ecx, esi
sar ecx, 0x10
mov dword [edi], eax
add edi, 4
lea eax, [edx + ecx*4]
and esi, 0xffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
dec eax
mov dword [esp + 0x18], eax
jne 0x4b7ff6
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
lea ecx, [ecx + ebx*4]
sub eax, ecx
sar eax, 2
add ebx, eax
jmp 0x4b8ec8
cmp edx, 1
jg 0x4b84c4
lea edx, [esp + 0x78]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x2c]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x74], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x78], eax
test ecx, ecx
mov eax, dword [edx + ebx*4]
mov dword [esp + 0x7c], eax
je 0x4b81ba
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x80]
cmp eax, edx
jae 0x4b81b6
mov edx, dword [eax]
mov eax, dword [eax - 4]
sub eax, edx
mov edx, esi
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
add edi, 4
mov edx, dword [esp + 0x10]
add eax, dword [edx]
mov edx, dword [esp + 0x3c]
shl edx, 0xc
shl eax, 4
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
neg eax
dec ecx
lea eax, [edx + eax*4]
mov dword [esp + 0x10], eax
jne 0x4b8146
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x4b82a8
mov ecx, eax
mov eax, dword [esp + 0x3c]
shl eax, 0xc
mov ecx, dword [ecx + 4]
cdq
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [edx + 8]
mov edx, esi
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x10]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add edi, 4
add ebx, eax
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x10], edx
and esi, 0xffff
test cl, 1
je 0x4b830f
mov eax, dword [esp + 0x10]
add edi, 4
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, edx
mov edx, esi
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
add eax, dword [edx + 4]
mov edx, dword [esp + 0x3c]
shl edx, 0xc
shl eax, 4
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea eax, [edx + eax*4]
mov dword [esp + 0x10], eax
sar ecx, 2
je 0x4b8ec8
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x10]
mov edx, esi
shl edx, 0xc
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, ecx
shl eax, 4
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax + 4]
mov eax, dword [eax + 8]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
add edi, 4
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x18]
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
jne 0x4b832c
jmp 0x4b8ec8
lea edx, [esp + 0x8c]
mov dword [esp + 0x1c], edx
xor edx, edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0x80], edx
mov edx, dword [eax + 0x2c]
mov dword [esp + 0x84], edx
mov edx, dword [eax + 0x30]
mov eax, dword [eax + 0xc]
mov dword [esp + 0x88], edx
mov edx, dword [esp + 0x38]
mov edx, dword [edx + ebx*4]
mov dword [esp + 0x8c], edx
lea edx, [ebx - 1]
cmp edx, eax
jl 0x4b8526
mov edx, dword [esp + 0x38]
mov edx, dword [edx + ebx*4 - 4]
mov dword [esp + 0x90], edx
lea edx, [ebx - 2]
cmp edx, eax
jl 0x4b853b
mov eax, dword [esp + 0x38]
mov edx, dword [eax + edx*4]
mov dword [esp + 0x94], edx
test ecx, ecx
je 0x4b867b
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x98]
cmp edx, eax
jae 0x4b867b
cmp dword [esp + 0x20], edx
je 0x4b85bd
mov ecx, dword [edx - 8]
mov eax, dword [edx - 4]
mov dword [esp + 0x14], ecx
mov ecx, dword [edx - 0xc]
mov dword [esp + 0x20], edx
mov edx, dword [edx]
mov dword [esp + 0x18], ecx
mov dword [esp + 0x10], edx
mov edx, dword [esp + 0x14]
mov ecx, eax
sub ecx, edx
mov edx, dword [esp + 0x10]
add ecx, ecx
sub ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x18]
add ecx, edx
add ecx, eax
lea edx, [edx + eax*4]
sar ecx, 1
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x14]
add eax, edx
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x10]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x1c]
add esi, ebp
add edi, 4
mov edx, dword [ecx - 4]
add eax, edx
mov edx, dword [esp + 0x3c]
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
neg eax
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x34]
dec eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x34], eax
mov ecx, eax
jne 0x4b8543
mov edx, dword [esp + 0x38]
mov dword [esp + 0x20], 0
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x1c], eax
je 0x4b88ed
test eax, eax
je 0x4b86fe
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [eax]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
mov edx, ecx
sub edx, eax
add edx, edx
mov eax, edx
mov edx, dword [esp + 0x14]
sub eax, edx
mov edx, dword [esp + 0x10]
sub eax, edx
mov edx, dword [esp + 0x18]
add eax, edx
add eax, ecx
sar eax, 1
mov dword [esp + 0x18], eax
lea eax, [edx + ecx*4]
add ecx, eax
mov eax, dword [esp + 0x10]
sar ecx, 1
lea edx, [eax + eax]
sub edx, ecx
mov ecx, dword [esp + 0x14]
sub eax, ecx
add edx, ecx
sar eax, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x3c]
shl eax, 0xc
mov ecx, edx
cdq
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
shl eax, 4
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], edx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx + 4]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x20]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b8831
mov ecx, eax
mov dword [esp + 0x20], ecx
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 4]
mov dword [esp + 0x10], edx
mov edx, dword [ecx + 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x18]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x18], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx + 4]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add edi, 4
add ebx, eax
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1c], edx
and esi, 0xffff
mov eax, edx
test cl, 1
je 0x4b8a0e
cmp dword [esp + 0x20], eax
je 0x4b895f
mov edx, dword [eax + 8]
mov ecx, dword [eax + 4]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0xc]
mov dword [esp + 0x20], eax
mov eax, dword [eax]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x10]
mov edx, ecx
sub edx, eax
add edx, edx
mov eax, edx
mov edx, dword [esp + 0x14]
sub eax, edx
mov edx, dword [esp + 0x10]
sub eax, edx
mov edx, dword [esp + 0x18]
add eax, edx
add eax, ecx
sar eax, 1
mov dword [esp + 0x18], eax
lea eax, [edx + ecx*4]
add ecx, eax
mov eax, dword [esp + 0x10]
sar ecx, 1
lea edx, [eax + eax]
sub edx, ecx
mov ecx, dword [esp + 0x14]
sub eax, ecx
add edx, ecx
sar eax, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x1c]
add esi, ebp
add edi, 4
mov edx, dword [ecx + 4]
add eax, edx
mov edx, dword [esp + 0x3c]
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea ecx, [ecx + eax*4]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x34]
sar ecx, 2
je 0x4b8ec8
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x34], ecx
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
cmp eax, ecx
je 0x4b8a9a
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 4]
mov dword [esp + 0x10], edx
mov edx, dword [ecx + 0xc]
mov dword [esp + 0x20], ecx
mov ecx, dword [ecx]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x18]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x18], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx + 4]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x20]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b8bbd
mov ecx, eax
mov dword [esp + 0x20], ecx
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 4]
mov dword [esp + 0x10], edx
mov edx, dword [ecx + 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x18]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x18], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx + 4]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x20]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b8ce0
mov ecx, eax
mov dword [esp + 0x20], ecx
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 4]
mov dword [esp + 0x10], edx
mov edx, dword [ecx + 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x18]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x18], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx + 4]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x20]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b8e03
mov ecx, eax
mov dword [esp + 0x20], ecx
mov edx, dword [ecx + 8]
mov eax, dword [ecx + 4]
mov dword [esp + 0x10], edx
mov edx, dword [ecx + 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x18], edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x18]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x18], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x18]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx + 4]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x1c]
add edi, 4
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x34]
dec eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x34], eax
jne 0x4b8a2b
mov edx, dword [esp + 0xb4]
mov ecx, dword [esp + 0x40]
sub ecx, ebx
mov eax, dword [edx + 0xc]
mov dword [esp + 0x40], ecx
sub eax, ebx
dec eax
cmp ecx, 3
jl 0x4b8f01
cmp eax, 3
jl 0x4b8eed
xor ecx, ecx
jmp 0x4b8ef5
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4 + 0xc]
cmp eax, 2
mov dword [edx + 0x28], ecx
jl 0x4b8f15
xor ecx, ecx
jmp 0x4b8f1d
cmp ecx, 2
jl 0x4b8f39
mov ecx, dword [edx + 0x30]
cmp eax, 2
mov dword [edx + 0x28], ecx
jl 0x4b8f15
xor ecx, ecx
jmp 0x4b8f1d
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4 + 8]
cmp eax, 1
mov dword [edx + 0x2c], ecx
jl 0x4b8f2c
xor eax, eax
jmp 0x4ba06c
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4 + 4]
jmp 0x4ba06c
cmp ecx, 1
jl 0x4ba06f
mov ecx, dword [esp + 0xb4]
cmp eax, 1
mov edx, dword [ecx + 0x2c]
mov dword [ecx + 0x28], edx
mov edx, dword [ecx + 0x30]
mov dword [ecx + 0x2c], edx
jl 0x4b8f64
xor eax, eax
mov dword [ecx + 0x30], eax
jmp 0x4ba06f
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4 + 4]
mov dword [ecx + 0x30], eax
jmp 0x4ba06f
test edi, edi
jne 0x4b8f99
mov eax, ecx
mov ecx, 0x10
imul eax, ebp
add eax, esi
cdq
mov esi, eax
call fcn.004bcd40
add ebx, eax
and esi, 0xffff
jmp 0x4b9fec
mov edx, dword [0x522024]
test edx, edx
jg 0x4b923b
lea edx, [esp + 0x4c]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x2c]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x4c], edx
test ecx, ecx
mov dword [esp + 0x50], eax
je 0x4b9010
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x54]
cmp eax, edx
jae 0x4b900c
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x3c]
shl eax, 0xc
mov edx, dword [edx]
add esi, ebp
shl edx, 4
imul edx
mov eax, edx
add edi, 4
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea eax, [edx + eax*4]
dec ecx
mov dword [esp + 0x10], eax
jne 0x4b8fc1
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x4b90bc
mov eax, dword [esp + 0x3c]
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x38]
mov ecx, edx
lea eax, [eax + ebx*4]
mov dword [esp + 0x30], ecx
push ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [eax - 8]
push ecx
shl eax, 4
cdq
push edx
push eax
call fcn.004be890
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov eax, dword [edi]
mov ecx, esi
add eax, edx
mov edx, dword [esp + 0x38]
mov dword [edi], eax
add edi, 4
sar ecx, 0x10
lea eax, [edx + ebx*4]
lea eax, [eax + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax - 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
and esi, 0xffff
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
mov ecx, esi
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi], eax
sar ecx, 0x10
add edi, 4
and esi, 0xffff
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x10], eax
test cl, 1
je 0x4b90fc
mov edx, dword [esp + 0x10]
add esi, ebp
add edi, 4
mov eax, dword [edx - 8]
mov edx, dword [esp + 0x3c]
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, esi
mov dword [edi - 4], eax
mov eax, dword [esp + 0x10]
sar edx, 0x10
and esi, 0xffff
lea edx, [eax + edx*4]
mov dword [esp + 0x10], edx
sar ecx, 2
je 0x4b9224
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x30]
push ecx
mov ecx, dword [esp + 0x30]
mov eax, dword [eax - 8]
push ecx
shl eax, 4
cdq
push edx
push eax
call fcn.004be890
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov eax, dword [edi]
mov ecx, esi
add eax, edx
mov edx, dword [esp + 0x10]
sar ecx, 0x10
mov dword [edi], eax
add edi, 4
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax - 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
and esi, 0xffff
add ecx, edx
add esi, ebp
mov dword [edi], ecx
mov ecx, esi
mov eax, edx
mov edx, dword [esp + 0x10]
sar ecx, 0x10
sar eax, 0x1f
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax - 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
add edi, 4
call fcn.004be890
mov ecx, dword [edi]
and esi, 0xffff
add ecx, edx
add esi, ebp
mov dword [edi], ecx
mov ecx, esi
mov eax, edx
mov edx, dword [esp + 0x10]
sar ecx, 0x10
sar eax, 0x1f
lea eax, [edx + ecx*4]
mov ecx, dword [esp + 0x30]
mov dword [esp + 0x10], eax
push ecx
mov eax, dword [eax - 8]
mov ecx, dword [esp + 0x30]
shl eax, 4
cdq
push ecx
push edx
push eax
add edi, 4
call fcn.004be890
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi]
and esi, 0xffff
add esi, ebp
add eax, edx
mov edx, dword [esp + 0x10]
mov ecx, esi
sar ecx, 0x10
mov dword [edi], eax
add edi, 4
lea eax, [edx + ecx*4]
and esi, 0xffff
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x18]
dec eax
mov dword [esp + 0x18], eax
jne 0x4b9119
mov ecx, dword [esp + 0x38]
mov eax, dword [esp + 0x10]
lea ecx, [ecx + ebx*4]
sub eax, ecx
sar eax, 2
add ebx, eax
jmp 0x4b9fec
cmp edx, 1
jg 0x4b95e3
lea edx, [esp + 0x6c]
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x2c]
mov eax, dword [eax + 0x30]
mov dword [esp + 0x68], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x6c], eax
test ecx, ecx
mov eax, dword [edx + ebx*4]
mov dword [esp + 0x70], eax
je 0x4b92d9
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x74]
cmp eax, edx
jae 0x4b92d5
mov edx, dword [eax - 4]
mov eax, dword [eax]
sub eax, edx
mov edx, esi
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
add edi, 4
mov edx, dword [esp + 0x10]
add eax, dword [edx - 4]
mov edx, dword [esp + 0x3c]
shl edx, 0xc
shl eax, 4
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea eax, [edx + eax*4]
dec ecx
mov dword [esp + 0x10], eax
jne 0x4b9269
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x4b93c7
mov ecx, eax
mov eax, dword [esp + 0x3c]
shl eax, 0xc
mov ecx, dword [ecx - 8]
cdq
mov dword [esp + 0x30], edx
mov edx, dword [esp + 0x10]
mov dword [esp + 0x2c], eax
mov eax, dword [edx - 4]
mov edx, esi
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax - 8]
mov eax, dword [eax - 4]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x10]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add edi, 4
add ebx, eax
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x10], edx
and esi, 0xffff
test cl, 1
je 0x4b942e
mov eax, dword [esp + 0x10]
add edi, 4
mov edx, dword [eax - 8]
mov eax, dword [eax - 4]
sub eax, edx
mov edx, esi
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
add esi, ebp
sar eax, 0x1f
mov dword [esp + 0x18], eax
mov eax, edx
mov edx, dword [esp + 0x18]
mov edx, dword [esp + 0x10]
add eax, dword [edx - 8]
mov edx, dword [esp + 0x3c]
shl edx, 0xc
shl eax, 4
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov edx, dword [esp + 0x10]
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea eax, [edx + eax*4]
mov dword [esp + 0x10], eax
sar ecx, 2
je 0x4b9fec
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x18], ecx
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x10]
mov edx, esi
shl edx, 0xc
mov ecx, dword [eax - 8]
mov eax, dword [eax - 4]
sub eax, ecx
shl eax, 4
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax - 8]
mov eax, dword [eax - 4]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax - 8]
mov eax, dword [eax - 4]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
and esi, 0xffff
sar eax, 0x10
add ebx, eax
mov edx, esi
lea eax, [ecx + eax*4]
add edi, 4
mov dword [esp + 0x10], eax
mov ecx, dword [eax - 8]
mov eax, dword [eax - 4]
sub eax, ecx
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov dword [esp + 0x20], eax
mov eax, edx
mov edx, dword [esp + 0x20]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x10]
add edi, 4
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x18]
dec eax
mov dword [esp + 0x10], edx
mov dword [esp + 0x18], eax
jne 0x4b944b
jmp 0x4b9fec
lea edx, [esp + 0xa4]
mov dword [esp + 0x1c], edx
xor edx, edx
mov dword [esp + 0x18], edx
mov dword [esp + 0x20], edx
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], edx
mov edx, dword [eax + 0x28]
mov dword [esp + 0x98], edx
mov edx, dword [eax + 0x2c]
mov dword [esp + 0x9c], edx
mov edx, dword [eax + 0x30]
mov eax, dword [eax + 0x10]
mov dword [esp + 0xa0], edx
mov edx, dword [esp + 0x38]
mov dword [esp + 0x54], eax
mov edx, dword [edx + ebx*4]
mov dword [esp + 0xa4], edx
lea edx, [ebx + 1]
cmp edx, eax
jge 0x4b964c
mov eax, dword [esp + 0x38]
mov edx, dword [eax + edx*4]
mov eax, dword [esp + 0x54]
mov dword [esp + 0xa8], edx
lea edx, [ebx + 2]
cmp edx, eax
jge 0x4b9661
mov eax, dword [esp + 0x38]
mov edx, dword [eax + edx*4]
mov dword [esp + 0xac], edx
test ecx, ecx
je 0x4b979f
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xb0]
cmp edx, eax
jae 0x4b979f
cmp dword [esp + 0x18], edx
je 0x4b96e3
mov ecx, dword [edx - 4]
mov eax, dword [edx - 8]
mov dword [esp + 0x14], ecx
mov ecx, dword [edx - 0xc]
mov dword [esp + 0x18], edx
mov edx, dword [edx]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x54], edx
mov edx, dword [esp + 0x14]
mov ecx, eax
sub ecx, edx
mov edx, dword [esp + 0x10]
add ecx, ecx
sub ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x54]
add ecx, edx
add ecx, eax
lea edx, [edx + eax*4]
sar ecx, 1
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x14]
add eax, edx
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x10]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x1c]
add esi, ebp
add edi, 4
mov edx, dword [ecx - 8]
add eax, edx
mov edx, dword [esp + 0x3c]
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea ecx, [ecx + eax*4]
mov eax, dword [esp + 0x34]
dec eax
mov dword [esp + 0x1c], ecx
mov dword [esp + 0x34], eax
mov ecx, eax
jne 0x4b9669
mov edx, dword [esp + 0x38]
mov dword [esp + 0x18], 0
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x1c], eax
je 0x4b9a11
test eax, eax
je 0x4b9822
mov edx, dword [eax - 4]
mov ecx, dword [eax - 8]
mov dword [esp + 0x10], edx
mov edx, dword [eax - 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
mov edx, ecx
sub edx, eax
add edx, edx
mov eax, edx
mov edx, dword [esp + 0x14]
sub eax, edx
mov edx, dword [esp + 0x10]
sub eax, edx
mov edx, dword [esp + 0x20]
add eax, edx
add eax, ecx
sar eax, 1
mov dword [esp + 0x20], eax
lea eax, [edx + ecx*4]
add ecx, eax
mov eax, dword [esp + 0x10]
sar ecx, 1
lea edx, [eax + eax]
sub edx, ecx
mov ecx, dword [esp + 0x14]
sub eax, ecx
add edx, ecx
sar eax, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x3c]
shl eax, 0xc
mov ecx, edx
cdq
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x20]
shl eax, 4
mov dword [esp + 0x28], ecx
mov dword [esp + 0x30], edx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx - 8]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x18]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b9955
mov ecx, eax
mov dword [esp + 0x18], ecx
mov edx, dword [ecx - 4]
mov eax, dword [ecx - 8]
mov dword [esp + 0x10], edx
mov edx, dword [ecx - 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x20]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x20], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx - 8]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add edi, 4
add ebx, eax
lea edx, [ecx + eax*4]
mov ecx, dword [esp + 0x34]
mov dword [esp + 0x1c], edx
and esi, 0xffff
mov eax, edx
test cl, 1
je 0x4b9b32
cmp dword [esp + 0x18], eax
je 0x4b9a83
mov edx, dword [eax - 4]
mov ecx, dword [eax - 8]
mov dword [esp + 0x10], edx
mov edx, dword [eax - 0xc]
mov dword [esp + 0x18], eax
mov eax, dword [eax]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x10]
mov edx, ecx
sub edx, eax
add edx, edx
mov eax, edx
mov edx, dword [esp + 0x14]
sub eax, edx
mov edx, dword [esp + 0x10]
sub eax, edx
mov edx, dword [esp + 0x20]
add eax, edx
add eax, ecx
sar eax, 1
mov dword [esp + 0x20], eax
lea eax, [edx + ecx*4]
add ecx, eax
mov eax, dword [esp + 0x10]
sar ecx, 1
lea edx, [eax + eax]
sub edx, ecx
mov ecx, dword [esp + 0x14]
sub eax, ecx
add edx, ecx
sar eax, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], eax
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x1c]
add esi, ebp
add edi, 4
mov edx, dword [ecx - 8]
add eax, edx
mov edx, dword [esp + 0x3c]
shl eax, 4
shl edx, 0xc
imul edx
mov eax, edx
sar eax, 0x1f
mov eax, dword [edi - 4]
add eax, edx
mov dword [edi - 4], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea ecx, [ecx + eax*4]
mov dword [esp + 0x1c], ecx
mov ecx, dword [esp + 0x34]
sar ecx, 2
je 0x4b9fec
mov eax, dword [esp + 0x3c]
mov dword [esp + 0x34], ecx
shl eax, 0xc
cdq
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], edx
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + 0x18]
cmp eax, ecx
je 0x4b9bbe
mov edx, dword [ecx - 4]
mov eax, dword [ecx - 8]
mov dword [esp + 0x10], edx
mov edx, dword [ecx - 0xc]
mov dword [esp + 0x18], ecx
mov ecx, dword [ecx]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x20]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x20], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx - 8]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x18]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b9ce1
mov ecx, eax
mov dword [esp + 0x18], ecx
mov edx, dword [ecx - 4]
mov eax, dword [ecx - 8]
mov dword [esp + 0x10], edx
mov edx, dword [ecx - 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x20]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x20], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx - 8]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x18]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b9e04
mov ecx, eax
mov dword [esp + 0x18], ecx
mov edx, dword [ecx - 4]
mov eax, dword [ecx - 8]
mov dword [esp + 0x10], edx
mov edx, dword [ecx - 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x20]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x20], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx - 8]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov eax, edx
mov ecx, dword [esp + 0x1c]
sar eax, 0x1f
mov eax, dword [edi]
add esi, ebp
add eax, edx
mov dword [edi], eax
mov eax, esi
sar eax, 0x10
add ebx, eax
add edi, 4
lea eax, [ecx + eax*4]
mov ecx, dword [esp + 0x18]
and esi, 0xffff
cmp ecx, eax
mov dword [esp + 0x1c], eax
je 0x4b9f27
mov ecx, eax
mov dword [esp + 0x18], ecx
mov edx, dword [ecx - 4]
mov eax, dword [ecx - 8]
mov dword [esp + 0x10], edx
mov edx, dword [ecx - 0xc]
mov ecx, dword [ecx]
mov dword [esp + 0x14], edx
mov dword [esp + 0x20], ecx
mov ecx, dword [esp + 0x10]
mov edx, eax
sub edx, ecx
add edx, edx
mov ecx, edx
mov edx, dword [esp + 0x14]
sub ecx, edx
mov edx, dword [esp + 0x10]
sub ecx, edx
mov edx, dword [esp + 0x20]
add ecx, edx
add ecx, eax
sar ecx, 1
mov dword [esp + 0x20], ecx
lea ecx, [edx + eax*4]
add eax, ecx
mov ecx, dword [esp + 0x10]
sar eax, 1
lea edx, [ecx + ecx]
sub edx, eax
mov eax, dword [esp + 0x14]
sub ecx, eax
add edx, eax
sar ecx, 1
mov dword [esp + 0x14], edx
mov dword [esp + 0x10], ecx
mov eax, esi
shl eax, 0xc
cdq
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x20]
mov ecx, edx
shl eax, 4
mov dword [esp + 0x28], ecx
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x14]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
sar ecx, 0x1f
mov ecx, dword [esp + 0x10]
add eax, ecx
mov ecx, dword [esp + 0x28]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x28]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, edx
mov eax, edx
mov edx, dword [esp + 0x1c]
sar ecx, 0x1f
mov ecx, dword [edx - 8]
add eax, ecx
mov ecx, dword [esp + 0x30]
shl eax, 4
push ecx
mov ecx, dword [esp + 0x30]
cdq
push ecx
push edx
push eax
call fcn.004be890
mov ecx, dword [edi]
mov eax, edx
sar eax, 0x1f
add esi, ebp
add ecx, edx
mov eax, esi
mov dword [edi], ecx
mov ecx, dword [esp + 0x1c]
add edi, 4
sar eax, 0x10
add ebx, eax
and esi, 0xffff
lea edx, [ecx + eax*4]
mov eax, dword [esp + 0x34]
dec eax
mov dword [esp + 0x1c], edx
mov dword [esp + 0x34], eax
jne 0x4b9b4f
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0xb4]
mov ecx, ebx
sub ecx, eax
mov eax, ebx
sub eax, dword [edx + 0x10]
cmp ecx, 3
jl 0x4ba022
cmp eax, 3
jl 0x4ba00e
xor ecx, ecx
jmp 0x4ba016
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4 - 0xc]
cmp eax, 2
mov dword [edx + 0x28], ecx
jl 0x4ba036
xor ecx, ecx
jmp 0x4ba03e
cmp ecx, 2
jl 0x4ba04a
mov ecx, dword [edx + 0x30]
cmp eax, 2
mov dword [edx + 0x28], ecx
jl 0x4ba036
xor ecx, ecx
jmp 0x4ba03e
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4 - 8]
cmp eax, 1
mov dword [edx + 0x2c], ecx
jl 0x4ba064
xor eax, eax
jmp 0x4ba06c
cmp ecx, 1
jl 0x4ba06f
mov ecx, dword [edx + 0x2c]
cmp eax, 1
mov dword [edx + 0x28], ecx
mov ecx, dword [edx + 0x30]
mov dword [edx + 0x2c], ecx
jl 0x4ba064
xor eax, eax
jmp 0x4ba06c
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4 - 4]
mov dword [edx + 0x30], eax
mov eax, dword [esp + 0xb4]
mov ecx, dword [esp + 0xbc]
mov dword [eax + 4], ebx
mov dword [eax + 8], esi
cmp dword [esp + 0x44], ecx
jl 0x4b7d3d
mov eax, dword [esp + 0x44]
pop edi
pop esi
pop ebp
pop ebx
add esp, 0xa0
ret
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0xa0
ret