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

Disassembly:
mov ebx, dword [esp + 0xb4]
push ebx
call fcn.00504ff0
add esp, 4
test eax, eax
jne 0x504fcd
mov eax, dword [ebx + 0x14]
mov ecx, eax
xor ecx, ebp
jge 0x502ca0
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 0x502cee
mov ecx, dword [ebx + 0xc]
mov eax, esi
sub eax, ecx
cdq
push edx
push eax
call fcn.004eb110
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.004eed40
mov ecx, eax
mov dword [esp + 0x34], ecx
jmp 0x502d3e
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.004eb110
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.004eed40
mov dword [esp + 0x34], eax
mov ecx, eax
test ecx, ecx
jge 0x502d4c
mov dword [esp + 0x34], 0
jmp 0x502d61
mov eax, dword [esp + 0xbc]
mov ebx, dword [esp + 0x44]
sub eax, ebx
cmp ecx, eax
jle 0x502d65
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 0x503eb4
test edi, edi
jne 0x502db6
mov eax, ecx
mov ecx, 0x10
imul eax, ebp
add eax, esi
cdq
mov esi, eax
call fcn.00533d80
add ebx, eax
and esi, 0xffff
jmp 0x503e08
mov edx, dword [esp + 0x48]
test edx, edx
jg 0x503058
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 0x502e2d
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x60]
cmp eax, edx
jae 0x502e29
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 0x502ddc
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x502ed9
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.004eb110
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.004eb110
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 0x502f19
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 0x503041
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x502f36
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 0x503e08
cmp edx, 1
jg 0x503404
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 0x5030fa
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x80]
cmp eax, edx
jae 0x5030f6
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 0x503086
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x5031e8
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.004eb110
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.004eb110
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 0x50324f
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 0x503e08
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x50326c
jmp 0x503e08
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 0x503466
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 0x50347b
mov eax, dword [esp + 0x38]
mov edx, dword [eax + edx*4]
mov dword [esp + 0x94], edx
test ecx, ecx
je 0x5035bb
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0x98]
cmp edx, eax
jae 0x5035bb
cmp dword [esp + 0x20], edx
je 0x5034fd
mov ecx, dword [edx - 8]
mov eax, dword [edx - 4]
mov dword [esp + 0x14], 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.004eb110
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.004eb110
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.004eb110
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 0x503483
mov edx, dword [esp + 0x38]
mov dword [esp + 0x20], 0
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x1c], eax
je 0x50382d
test eax, eax
je 0x50363e
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x503771
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x50394e
cmp dword [esp + 0x20], eax
je 0x50389f
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.004eb110
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.004eb110
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.004eb110
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 0x503e08
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 0x5039da
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x503afd
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x503c20
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x503d43
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x50396b
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 0x503e41
cmp eax, 3
jl 0x503e2d
xor ecx, ecx
jmp 0x503e35
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4 + 0xc]
cmp eax, 2
mov dword [edx + 0x28], ecx
jl 0x503e55
xor ecx, ecx
jmp 0x503e5d
cmp ecx, 2
jl 0x503e79
mov ecx, dword [edx + 0x30]
cmp eax, 2
mov dword [edx + 0x28], ecx
jl 0x503e55
xor ecx, ecx
jmp 0x503e5d
mov ecx, dword [esp + 0x38]
mov ecx, dword [ecx + ebx*4 + 8]
cmp eax, 1
mov dword [edx + 0x2c], ecx
jl 0x503e6c
xor eax, eax
jmp 0x504fac
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4 + 4]
jmp 0x504fac
cmp ecx, 1
jl 0x504faf
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 0x503ea4
xor eax, eax
mov dword [ecx + 0x30], eax
jmp 0x504faf
mov eax, dword [esp + 0x38]
mov eax, dword [eax + ebx*4 + 4]
mov dword [ecx + 0x30], eax
jmp 0x504faf
test edi, edi
jne 0x503ed9
mov eax, ecx
mov ecx, 0x10
imul eax, ebp
add eax, esi
cdq
mov esi, eax
call fcn.00533d80
add ebx, eax
and esi, 0xffff
jmp 0x504f2c
mov edx, dword [0x56c204]
test edx, edx
jg 0x50417b
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 0x503f50
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x54]
cmp eax, edx
jae 0x503f4c
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 0x503f01
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x503ffc
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.004eb110
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.004eb110
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 0x50403c
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 0x504164
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x504059
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 0x504f2c
cmp edx, 1
jg 0x504523
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 0x504219
mov eax, dword [esp + 0x10]
lea edx, [esp + 0x74]
cmp eax, edx
jae 0x504215
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 0x5041a9
mov dword [esp + 0x34], ecx
mov edx, dword [esp + 0x38]
test cl, 2
lea eax, [edx + ebx*4]
mov dword [esp + 0x10], eax
je 0x504307
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.004eb110
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.004eb110
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 0x50436e
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 0x504f2c
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.004eb110
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.004eb110
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.004eb110
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.004eb110
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 0x50438b
jmp 0x504f2c
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 0x50458c
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 0x5045a1
mov eax, dword [esp + 0x38]
mov edx, dword [eax + edx*4]
mov dword [esp + 0xac], edx
test ecx, ecx
je 0x5046df
mov edx, dword [esp + 0x1c]
lea eax, [esp + 0xb0]
cmp edx, eax
jae 0x5046df
cmp dword [esp + 0x18], edx
je 0x504623
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
invalid
invalid
invalid