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

Disassembly:
mov ecx, dword [0x8cbf38]
mov ecx, dword fs:[ecx]
mov ecx, dword [ecx]
lea eax, [esp - 0x188]
cmp eax, dword [ecx + 8]
jbe 0x5907e3
sub esp, 0x208
mov eax, dword [esp + 0x218]
test eax, eax
je 0x58f377
mov eax, dword [esp + 0x20c]
mov ecx, dword [eax + 0x1c]
mov edx, dword [esp + 0x210]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 4]
mov eax, dword [eax + 4]
cvtsi2sd xmm0, eax
movsd xmm1, qword [0x700eb0]
divsd xmm0, xmm1
mov eax, dword [esp + 0x248]
cvtsi2sd xmm1, eax
mulsd xmm1, xmm0
movsd qword [esp + 0x10c], xmm1
nop
mov eax, dword [esp + 0x238]
mov dword [esp], eax
mov eax, dword [esp + 0x23c]
mov dword [esp + 4], eax
mov eax, dword [esp + 0x240]
mov dword [esp + 8], eax
mov eax, dword [esp + 0x244]
mov dword [esp + 0xc], eax
movsd qword [esp + 0x10], xmm0
call fcn.005c0570
nop
mov eax, dword [esp + 0x18]
mov dword [esp + 0x100], eax
mov ecx, dword [esp + 0x20]
mov dword [esp + 0xfc], ecx
mov edx, dword [esp + 0x1c]
mov dword [esp + 0xf8], edx
mov ebx, dword [esp + 0x24]
mov dword [esp + 0xf4], ebx
nop
movsd xmm0, qword [esp + 0x10c]
movsd qword [esp + 0x114], xmm0
mov ebp, dword [esp + 0x118]
mov esi, ebp
shr ebp, 0x14
and ebp, 0x7ff
cmp ebp, 0x3ff
jae 0x58f0c1
and esi, 0x80000000
cmp ebp, 0x3fe
jne 0x58f0ba
or esi, 0x3ff00000
xor edi, edi
jmp 0x58f1c2
mov edi, dword [esp + 0x114]
cmp ebp, 0x433
jae 0x58f1c2
mov dword [esp + 0xf0], esi
lea ecx, [ebp - 0x3ff]
mov dword [esp + 0xbc], ecx
mov ebx, 0x80000
shr ebx, cl
mov dword [esp + 0xec], ebx
mov eax, 0xfffff
shr eax, cl
mov dword [esp + 0xe8], eax
mov edx, 0xffffffff
shr edx, cl
mov dword [esp + 0xe4], edx
add ebp, 0xfffffbe1
mov ecx, ebp
mov eax, 0x80000
shr eax, cl
neg ecx
mov dword [esp + 0xe0], ecx
mov edx, 0x80000
shl edx, cl
mov esi, 0xfffff
shl esi, cl
mov ecx, ebp
mov ebx, 0xfffff
shr ebx, cl
cmp ecx, 0x20
sbb ecx, ecx
and eax, ecx
and ebx, ecx
mov ecx, ebx
mov ebx, dword [esp + 0xe0]
cmp ebx, 0x20
sbb ebx, ebx
and edx, ebx
or eax, edx
and esi, ebx
mov edx, edi
add edi, eax
mov ebx, dword [esp + 0xbc]
cmp ebx, 0x20
sbb ebp, ebp
mov ebx, dword [esp + 0xec]
and ebx, ebp
add edx, eax
mov eax, dword [esp + 0xf0]
adc eax, ebx
mov edx, dword [esp + 0xe4]
and edx, ebp
mov ebx, dword [esp + 0xe8]
and ebp, ebx
xchg ebp, ebx
not ebx
xchg ebp, ebx
or esi, edx
or ecx, esi
not ecx
and ebp, eax
and edi, ecx
mov eax, dword [esp + 0x100]
mov ecx, dword [esp + 0xfc]
mov edx, dword [esp + 0xf8]
mov ebx, dword [esp + 0xf4]
mov esi, ebp
mov dword [esp + 0x12c], edi
mov dword [esp + 0x130], esi
movsd xmm0, qword [esp + 0x12c]
movsd qword [esp + 0x104], xmm0
mov dword [esp + 0x164], 0
mov dword [esp + 0x168], 0
mov dword [esp + 0x16c], 0
lea eax, [0x62f160]
mov dword [esp], eax
mov ecx, dword [esp + 0x218]
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1cc], eax
lea ecx, [0x62f160]
mov dword [esp], ecx
mov edx, dword [esp + 0x218]
mov dword [esp + 4], edx
mov dword [esp + 8], edx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c8], eax
lea ecx, [0x62f160]
mov dword [esp], ecx
mov edx, dword [esp + 0x218]
mov dword [esp + 4], edx
mov dword [esp + 8], edx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c4], eax
lea ecx, [0x62f160]
mov dword [esp], ecx
mov edx, dword [esp + 0x218]
mov dword [esp + 4], edx
mov dword [esp + 8], edx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1c0], eax
lea ecx, [0x62f160]
mov dword [esp], ecx
mov edx, dword [esp + 0x218]
mov dword [esp + 4], edx
mov dword [esp + 8], edx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1bc], eax
lea ecx, [0x62f160]
mov dword [esp], ecx
mov ecx, dword [esp + 0x218]
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1b8], eax
lea ecx, [0x62f020]
mov dword [esp], ecx
mov edx, dword [esp + 0x218]
mov dword [esp + 4], edx
mov dword [esp + 8], edx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1b4], eax
lea ecx, [0x62f020]
mov dword [esp], ecx
mov ecx, dword [esp + 0x218]
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1b0], eax
lea ecx, [0x6537c0]
mov dword [esp], ecx
mov ecx, dword [esp + 0x218]
mov dword [esp + 4], ecx
mov dword [esp + 8], ecx
call fcn.004519e0
mov eax, dword [esp + 0xc]
mov dword [esp + 0x1ac], eax
xor ecx, ecx
xor edx, edx
xor ebx, ebx
xor ebp, ebp
xor esi, esi
jmp 0x58f3b4
mov dword [esp + 0x250], 0
mov dword [esp + 0x254], 0
mov dword [esp + 0x258], 0
add esp, 0x208
ret
inc eax
mov ecx, eax
mov ebp, esi
mov esi, ebx
mov eax, dword [esp + 0x1ac]
mov ebx, dword [esp + 0xb4]
mov dword [esp + 0x5c], esi
mov dword [esp + 0xb0], ebp
mov dword [esp + 0xb4], ebx
mov dword [esp + 0x80], edx
mov edi, dword [esp + 0x218]
cmp edi, ecx
jle 0x58fa3e
mov dword [esp + 0xa0], ecx
mov eax, dword [esp + 0x214]
lea edx, [eax + ecx*8]
mov ebx, dword [edx]
mov dword [esp + 0x94], ebx
mov edx, dword [edx + 4]
mov dword [esp + 0x190], edx
mov ebp, dword [ebx + 0x1c]
mov dword [esp], edx
call ebp
mov eax, dword [esp + 4]
lea ecx, [0x633ca0]
mov dword [esp], ecx
mov edx, dword [esp + 0x24c]
mov dword [esp + 4], edx
mov dword [esp + 8], eax
call fcn.004128e0
mov eax, dword [esp + 0xc]
mov eax, dword [eax]
test eax, eax
jne 0x58f438
mov eax, 1
mov dword [esp + 0x60], eax
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x1cc]
mov dword [edx + ecx*4], eax
mov ebx, dword [esp + 0x94]
mov ebp, dword [ebx + 0x18]
mov esi, dword [esp + 0x190]
mov dword [esp], esi
call ebp
mov eax, dword [esp + 4]
mov dword [esp + 0x19c], eax
mov ecx, dword [esp + 0x94]
mov edx, dword [ecx + 0x20]
mov ebx, dword [esp + 0x190]
mov dword [esp], ebx
call edx
movzx eax, byte [esp + 4]
mov byte [esp + 0x2a], al
mov ecx, dword [esp + 0x19c]
mov edx, dword [ecx + 0xc]
mov dword [esp + 0xdc], edx
mov ecx, dword [ecx + 0x10]
mov dword [esp + 0xd8], ecx
lea ebx, [0x63df60]
mov dword [esp], ebx
mov ebp, dword [esp + 0x94]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x190]
mov dword [esp + 8], esi
call fcn.0040d750
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x58f4db
mov eax, 1
jmp 0x58f4ef
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp], ecx
call eax
movzx eax, byte [esp + 4]
xor eax, 1
test al, al
jne 0x58f4f9
xor ecx, ecx
xor eax, eax
jmp 0x58f53f
lea eax, [0x639bc0]
mov dword [esp], eax
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x190]
mov dword [esp + 8], edx
call fcn.0040d750
mov eax, dword [esp + 0xc]
test eax, eax
jne 0x58f52b
xor ecx, ecx
xor eax, eax
jmp 0x58f53f
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp], ecx
call eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 8]
mov dword [esp + 0x78], ecx
mov dword [esp + 0x74], eax
movzx edx, byte [esp + 0x220]
cmp dl, 1
jne 0x58f63c
movzx eax, byte [esp + 0x2a]
test al, 8
seta cl
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x1b0]
mov byte [ebx + edx], cl
mov ecx, dword [esp + 0x20c]
mov ebp, dword [ecx + 0x38]
mov esi, dword [esp + 0x210]
mov dword [esp], esi
mov edi, dword [esp + 0x94]
mov dword [esp + 4], edi
mov esi, dword [esp + 0x190]
mov dword [esp + 8], esi
call ebp
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x1c8]
mov dword [edx + ecx*4], eax
mov eax, dword [esp + 0xdc]
test eax, eax
jle 0x58f5dc
mov ebx, dword [esp + 0x1c4]
mov dword [ebx + ecx*4], eax
mov eax, dword [esp + 0x74]
movzx ebx, byte [esp + 0x2a]
mov ebp, dword [esp + 0x1c4]
jmp 0x58f60f
mov eax, dword [esp + 0x74]
test eax, eax
jle 0x58f5fb
movzx ebx, byte [esp + 0x2a]
test bl, 4
jne 0x58f600
mov ebp, dword [esp + 0x1c4]
mov dword [ebp + ecx*4], eax
jmp 0x58f60f
movzx ebx, byte [esp + 0x2a]
mov ebp, dword [esp + 0x1c4]
mov dword [ebp + ecx*4], 0x8000
mov esi, dword [esp + 0x78]
mov edi, dword [esp + 0x1bc]
mov dword [edi + ecx*4], esi
mov esi, ecx
shl ecx, 5
mov edi, dword [esp + 0x1ac]
mov dword [edi + ecx + 0xc], eax
test bl, 0x10
seta al
mov byte [edi + ecx + 0x1c], al
jmp 0x58f85c
movzx eax, byte [esp + 0x2a]
test al, 4
seta cl
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x1b0]
mov byte [ebx + edx], cl
lea ecx, [0x63df60]
mov dword [esp], ecx
mov ebp, dword [esp + 0x94]
mov dword [esp + 4], ebp
mov esi, dword [esp + 0x190]
mov dword [esp + 8], esi
call fcn.0040d750
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
test eax, eax
jne 0x58f68c
xor edx, edx
jmp 0x58f6b7
mov dword [esp + 0xa8], eax
mov dword [esp + 0x198], ecx
mov edx, dword [eax + 0x10]
mov dword [esp], ecx
call edx
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 0x198]
mov edx, eax
mov eax, dword [esp + 0xa8]
test dl, dl
je 0x58f6f7
mov eax, dword [eax + 0x14]
mov dword [esp], ecx
mov ecx, dword [esp + 0x230]
mov edx, dword [esp + 0x100]
sub ecx, edx
mov ebp, dword [esp + 0xfc]
sub ecx, ebp
mov dword [esp + 4], ecx
call eax
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x1c8]
mov dword [edx + ecx*4], eax
jmp 0x58f738
mov eax, dword [esp + 0x20c]
mov ecx, dword [eax + 0x38]
mov edx, dword [esp + 0x210]
mov dword [esp], edx
mov ebx, dword [esp + 0x94]
mov dword [esp + 4], ebx
mov ebp, dword [esp + 0x190]
mov dword [esp + 8], ebp
call ecx
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0xa0]
mov edx, dword [esp + 0x1c8]
mov dword [edx + ecx*4], eax
mov eax, dword [esp + 0xd8]
test eax, eax
jle 0x58f762
mov ebx, dword [esp + 0x1c4]
mov dword [ebx + ecx*4], eax
mov eax, dword [esp + 0x78]
movzx ecx, byte [esp + 0x2a]
mov edx, dword [esp + 0xa0]
jmp 0x58f81f
lea eax, [0x63df60]
mov dword [esp], eax
mov ecx, dword [esp + 0x94]
mov dword [esp + 4], ecx
mov edx, dword [esp + 0x190]
mov dword [esp + 8], edx
call fcn.0040d750
mov eax, dword [esp + 0xc]
test eax, eax
je 0x58f7b4
movzx ecx, byte [esp + 0x2a]
test cl, 8
je 0x58f79c
xor eax, eax
jmp 0x58f7bb
mov eax, dword [eax + 0x10]
mov ecx, dword [esp + 0x10]
mov dword [esp], ecx
call eax
movzx eax, byte [esp + 4]
movzx ecx, byte [esp + 0x2a]
jmp 0x58f7bb
movzx ecx, byte [esp + 0x2a]
xor eax, eax
test al, al
je 0x58f7ea
mov eax, dword [esp + 0xa0]
mov edx, dword [esp + 0x1c8]
mov ebx, dword [edx + eax*4]
mov ebp, dword [esp + 0x1c4]
mov dword [ebp + eax*4], ebx
mov eax, dword [esp + 0x78]
mov edx, dword [esp + 0xa0]
mov ebx, ebp
jmp 0x58f81f
mov eax, dword [esp + 0x78]
test eax, eax
jle 0x58f80a
test cl, 8
jne 0x58f80a
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x1c4]
mov dword [ebx + edx*4], eax
jmp 0x58f81f
mov edx, dword [esp + 0xa0]
mov ebx, dword [esp + 0x1c4]
mov dword [ebx + edx*4], 0x8000
mov ebp, dword [esp + 0x74]
mov esi, dword [esp + 0x1bc]
mov dword [esi + edx*4], ebp
shl edx, 5
mov edi, dword [esp + 0x1ac]
mov dword [edi + edx + 0xc], eax
test cl, 0x20
seta al
mov byte [edi + edx + 0x1c], al
mov edx, dword [esp + 0x1c8]
mov ebx, ecx
mov ebp, dword [esp + 0x1c4]
mov esi, dword [esp + 0xa0]
mov eax, esi
shl esi, 5
mov dword [edi + esi + 8], eax
mov ecx, dword [edx + eax*4]
mov dword [edi + esi + 0x10], ecx
mov ecx, dword [ebp + eax*4]
mov dword [edi + esi + 0x14], ecx
mov ecx, dword [esp + 0x60]
mov dword [edi + esi + 0x18], ecx
mov ebp, dword [esp + 0x94]
mov dword [edi + esi], ebp
mov ecx, dword [0x8cc0e0]
test ecx, ecx
jne 0x58f89d
movzx ecx, byte [esp + 0x220]
cmp cl, 1
jmp 0x58f8dc
mov ecx, edi
call fcn.0046bec0
mov ebp, dword [esp + 0x190]
mov dword [edi], ebp
mov eax, dword [ecx + esi + 4]
mov dword [edi + 4], eax
movzx eax, byte [esp + 0x220]
cmp al, 1
mov eax, dword [esp + 0xa0]
movzx ecx, byte [esp + 0x220]
mov ebp, dword [esp + 0x94]
mov edi, dword [esp + 0x1ac]
mov ebp, dword [esp + 0x190]
mov dword [edi + esi + 4], ebp
jne 0x58f8f5
mov ebp, ebx
and ebx, 0x15
cmp bl, 1
je 0x58f90a
jmp 0x58f8f7
mov ebp, ebx
cmp cl, 2
jne 0x58f94c
mov ebx, ebp
and ebp, 0x2a
xchg ebp, eax
cmp al, 2
xchg ebp, eax
jne 0x58f93a
mov ebp, ebx
mov ebx, dword [edi + esi + 0xc]
sub ebx, dword [edx + eax*4]
test ebx, ebx
jle 0x58f92a
mov edx, dword [esp + 0x1b8]
mov dword [edx + eax*4], ebx
mov edi, dword [esp + 0x5c]
add ebx, edi
cmp cl, 1
jmp 0x58f95a
cmp cl, 1
mov edx, dword [esp + 0x1b8]
mov ebx, dword [esp + 0x5c]
jmp 0x58f95a
cmp cl, 1
mov edx, dword [esp + 0x1b8]
mov ebp, ebx
mov ebx, dword [esp + 0x5c]
jmp 0x58f95a
cmp cl, 1
mov edx, dword [esp + 0x1b8]
mov ebx, dword [esp + 0x5c]
jne 0x58f96a
xchg ebp, eax
test al, 2
xchg ebp, eax
je 0x58f96a
mov ebp, 1
jmp 0x58f97f
cmp cl, 2
jne 0x58f97d
xchg ebp, eax
test al, 1
xchg ebp, eax
xchg ebp, ebx
setne bl
xchg ebp, ebx
jmp 0x58f97f
xor ebp, ebp
mov edi, dword [esp + 0x1b4]
xchg ebp, ebx
mov byte [edi + eax], bl
xchg ebp, ebx
mov ebp, dword [edx + eax*4]
test ebp, ebp
jle 0x58f9aa
mov ebp, dword [esp + 0x1ac]
mov edi, dword [ebp + esi + 0xc]
mov edx, dword [esp + 0x80]
add edx, edi
jmp 0x58f9c7
mov ebp, dword [esp + 0x1c8]
mov edi, dword [ebp + eax*4]
mov ebp, dword [esp + 0x80]
add ebp, edi
mov edx, ebp
mov ebp, dword [esp + 0x1ac]
movzx esi, byte [ebp + esi + 0x1c]
xchg esi, eax
test al, al
xchg esi, eax
je 0x58fa21
mov esi, dword [esp + 0x94]
lea edi, [0x7023a8]
cmp esi, edi
jne 0x58f9fb
mov esi, dword [esp + 0x60]
add dword [esp + 0x168], esi
mov esi, dword [esp + 0xb0]
inc esi
jmp 0x58f39f
mov esi, dword [esp + 0x60]
add dword [esp + 0x164], esi
mov esi, dword [esp + 0xb4]
inc esi
mov dword [esp + 0xb4], esi
mov esi, dword [esp + 0xb0]
jmp 0x58f39f
mov edi, dword [esp + 0x60]
add dword [esp + 0x16c], edi
lea edi, [0x7023a8]
mov esi, dword [esp + 0xb0]
jmp 0x58f39f
mov dword [esp], eax
mov dword [esp + 4], edi
mov dword [esp + 8], edi
call fcn.0040d5c0
mov eax, dword [esp + 0xc]
lea ecx, [0x701dac]
mov dword [esp], ecx
mov dword [esp + 4], eax
call fcn.004af260
movzx eax, byte [esp + 0x220]
cmp al, 1
jne 0x58fabb
mov edx, dword [esp + 0x230]
mov ebx, dword [esp + 0x100]
sub edx, ebx
mov ebp, dword [esp + 0x234]
mov ecx, edx
mov edx, dword [esp + 0xf8]
sub ebp, edx
mov esi, ebp
mov ebp, dword [esp + 0x228]
add ebx, ebp
mov ebp, dword [esp + 0x22c]
add edx, ebp
mov ebp, dword [esp + 0xfc]
sub ecx, ebp
mov ebp, dword [esp + 0xf4]
sub esi, ebp
jmp 0x58fb0d
mov ecx, dword [esp + 0x234]
mov ebp, dword [esp + 0xf8]
sub ecx, ebp
mov esi, dword [esp + 0x230]
mov edx, ebp
mov ebp, dword [esp + 0x100]
sub esi, ebp
mov ebx, ebp
mov ebp, dword [esp + 0x22c]
add ebp, edx
mov edx, ebp
mov ebp, dword [esp + 0x228]
add ebp, ebx
mov ebx, ebp
mov ebp, dword [esp + 0xf4]
sub ecx, ebp
mov ebp, dword [esp + 0xfc]
sub esi, ebp
mov ebp, ebx
mov ebx, edx
mov edx, ebp
mov dword [esp + 0x58], ecx
mov dword [esp + 0x64], esi
mov dword [esp + 0x50], edx
mov dword [esp + 0x7c], ebx
mov dword [esp + 0x170], 0
mov dword [esp + 0x174], 0
mov dword [esp + 0x178], 0
mov ebp, dword [esp + 0xb4]
mov dword [esp + 0x174], ebp
mov edi, ebx
mov ebx, dword [esp + 0x218]
lea edx, [ebx - 1]
mov ebx, dword [esp + 0x80]
sub ecx, ebx
mov ebx, dword [esp + 0xb0]
lea esi, [ebp + ebx]
mov dword [esp + 0x178], esi
mov dword [esp + 0x17c], 0
mov dword [esp + 0x180], 0
mov dword [esp + 0x184], 0
mov dword [esp + 0x17c], ebp
mov dword [esp + 0x180], ebx
mov esi, ebx
mov ebx, dword [esp + 0x218]
sub ebx, ebp
sub ebx, esi
mov dword [esp + 0x184], ebx
movsd xmm0, qword [esp + 0x104]
cvttsd2si ebx, xmm0
mov dword [esp + 0x38], ebx
imul edx, ebx
sub ecx, edx
cvtsi2sd xmm0, ecx
mov ebp, dword [esp + 0x1ac]
mov ecx, dword [esp + 0x5c]
mov esi, dword [esp + 0x1b8]
mov byte [esp + 0x15c], al
xor eax, eax
mov dword [esp + 0x9c], eax
movzx eax, byte [esp + 0x15c]
jmp 0x58fc32
lea eax, [ebx + 1]
mov edx, dword [esp + 0x218]
mov ebx, dword [esp + 0x1cc]
mov edi, dword [esp + 0x100]
mov ebx, dword [esp + 0x38]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x9c], eax
mov edx, dword [esp + 0x100]
movzx eax, byte [esp + 0x220]
mov ebx, dword [esp + 0x9c]
cmp ebx, 3
jge 0x58fc61
mov eax, dword [esp + ebx*4 + 0x164]
mov dword [esp + 0x14c], eax
xor eax, eax
mov dword [esp + 0x8c], eax
mov eax, dword [esp + 0x14c]
jmp 0x590296
mov dword [esp + 0x54], edx
lea eax, [0x6418c0]
mov dword [esp], eax
mov dword [esp + 4], 0
mov ecx, dword [esp + 0x218]
mov dword [esp + 8], ecx
call fcn.004519e0
mov eax, dword [esp + 0x58]
mov ecx, dword [esp + 0x80]
sub eax, ecx
mov ecx, dword [esp + 0x54]
sub eax, ecx
mov ecx, dword [esp + 0x218]
mov edx, ecx
shl ecx, 1
mov ebx, edx
mov ebp, eax
cdq
idiv ebx
test ecx, ecx
je 0x59023d
mov dword [esp + 0xb8], eax
mov edx, dword [esp + 0xc]
mov dword [esp + 0x1cc], edx
mov esi, eax
mov eax, ebp
cmp ecx, 0xffffffff
je 0x58fcd3
cdq
idiv ecx
jmp 0x58fcd5
neg eax
mov dword [esp + 0xac], eax
mov ecx, ebx
xor edx, edx
mov ebp, dword [esp + 0x7c]
mov edi, dword [esp + 0x1cc]
xor ecx, ecx
mov dword [esp + 0x6c], ecx
mov ecx, ebx
jmp 0x58fd2a
mov ebp, edi
mov edi, esi
lea esi, [esp + 0x1d0]
call fcn.0046c594
mov ecx, dword [esp + 0x98]
inc ecx
mov eax, dword [esp + 0xac]
mov esi, dword [esp + 0xb8]
mov edx, ecx
mov edi, ebp
mov ecx, dword [esp + 0x218]
mov ebp, dword [esp + 0x7c]
cmp ecx, edx
jle 0x59021d
mov dword [esp + 0x70], ebx
mov dword [esp + 0x188], edi
mov dword [esp + 0x98], edx
mov dword [esp + 0x7c], ebp
mov eax, dword [esp + 0x214]
lea ecx, [eax + edx*8]
mov ebx, dword [ecx]
mov dword [esp + 0x90], ebx
mov ecx, dword [ecx + 4]
mov dword [esp + 0x18c], ecx
mov ebp, dword [esp + 0x1c0]
mov esi, dword [ebp + edx*4]
mov dword [esp + 0x68], esi
lea edi, [0x63df60]
mov dword [esp], edi
mov dword [esp + 4], ebx
mov dword [esp + 8], ecx
call fcn.0040d750
mov eax, dword [esp + 0xc]
mov ecx, dword [esp + 0x10]
test eax, eax
je 0x58fddc
movzx edx, byte [esp + 0x220]
cmp dl, 1
je 0x58fda7
xor ebx, ebx
jmp 0x58fde6
mov dword [esp + 0x194], ecx
mov dword [esp + 0xa4], eax
mov edx, dword [eax + 0x10]
mov dword [esp], ecx
call edx
movzx eax, byte [esp + 4]
mov ecx, dword [esp + 0x194]
movzx edx, byte [esp + 0x220]
mov ebx, eax
mov eax, dword [esp + 0xa4]
jmp 0x58fde6
movzx edx, byte [esp + 0x220]
xor ebx, ebx
test bl, bl
jne 0x58fe34
mov eax, dword [esp + 0x98]
mov ecx, dword [esp + 0x1b4]
movzx ebx, byte [ecx + eax]
test bl, bl
je 0x58fe09
mov ebx, dword [esp + 0x1b0]
jmp 0x58fe1a
mov ebx, dword [esp + 0x1b0]
movzx ebp, byte [ebx + eax]
xchg ebp, eax
test al, al
xchg ebp, eax
je 0x58fe27
mov ebp, dword [esp + 0x1bc]
mov esi, dword [esp + 0x64]
jmp 0x58fe48
mov ebp, dword [esp + 0x1bc]
mov esi, dword [ebp + eax*4]
jmp 0x58fe48
mov eax, dword [eax + 0x14]
mov dword [esp], ecx
mov ecx, dword [esp + 0x68]
mov dword [esp + 4], ecx
call eax
mov esi, dword [esp + 8]
mov dword [esp + 0x100], esi
mov eax, dword [esp + 0x90]
mov ecx, dword [eax + 0x18]
mov edx, dword [esp + 0x18c]
mov dword [esp], edx
call ecx
mov eax, dword [esp + 4]
mov eax, dword [eax]
test eax, eax
jne 0x58fe83
movzx ecx, byte [esp + 0x220]
cmp cl, 1
mov eax, dword [esp + 0x224]
jmp 0x58fe8e
movzx ecx, byte [esp + 0x220]
cmp cl, 1
jne 0x58ff87
cmp eax, 4
ja 0x58feaa
cmp eax, 1
je 0x58feb4
cmp eax, 3
je 0x58fec6
cmp eax, 4
je 0x58feb4
jmp 0x58fed6
cmp eax, 6
je 0x58fec6
cmp eax, 7
jne 0x58fec1
mov edx, dword [esp + 0xb8]
mov ebp, dword [esp + 0x7c]
jmp 0x58feeb
cmp eax, 9
jne 0x58fed6
mov edx, dword [esp + 0xb8]
mov ebx, dword [esp + 0x7c]
lea ebp, [ebx + edx]
jmp 0x58feeb
mov edx, dword [esp + 0xac]
mov ebx, dword [esp + 0x7c]
lea ebp, [ebx + edx]
mov edx, dword [esp + 0xb8]
test eax, eax
je 0x58ff0a
cmp eax, 3
ja 0x58ff0a
cmp cl, 1
mov ebx, dword [esp + 0x64]
mov esi, ebp
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x100]
jmp 0x58ff68
lea ebx, [eax - 7]
cmp ebx, 2
ja 0x58ff2e
mov ebx, dword [esp + 0x64]
mov esi, ebp
mov ebp, dword [esp + 0x50]
lea edi, [ebp + ebx]
mov ebp, dword [esp + 0x100]
sub edi, ebp
cmp cl, 1
jmp 0x58ff68
mov ebx, dword [esp + 0x64]
mov esi, ebp
mov ebp, dword [esp + 0x100]
sub ebx, ebp
mov dword [esp + 0xfc], ebx
shr ebx, 0x1f
mov ebp, dword [esp + 0xfc]
add ebx, ebp
sar ebx, 1
mov ebp, dword [esp + 0x50]
add ebx, ebp
cmp cl, 1
mov ebp, dword [esp + 0x100]
mov edi, ebx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x40], esi
mov dword [esp + 0x154], eax
mov eax, dword [esp + 0x68]
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x154]
jmp 0x590071
test eax, eax
je 0x58ff9d
cmp eax, 3
ja 0x58ff9d
mov edx, dword [esp + 0xb8]
mov ebp, dword [esp + 0x7c]
jmp 0x58ffca
lea edx, [eax - 7]
cmp edx, 2
ja 0x58ffb5
mov edx, dword [esp + 0xb8]
mov ebx, dword [esp + 0x7c]
lea ebp, [ebx + edx]
jmp 0x58ffca
mov edx, dword [esp + 0xac]
mov ebx, dword [esp + 0x7c]
lea ebp, [ebx + edx]
mov edx, dword [esp + 0xb8]
cmp eax, 4
ja 0x58ffe8
cmp eax, 1
jne 0x58ffd9
cmp cl, 1
jmp 0x58fff5
cmp eax, 3
je 0x59000d
cmp eax, 4
jne 0x590029
cmp cl, 1
jmp 0x58fff5
cmp eax, 6
je 0x59000d
cmp eax, 7
jne 0x590008
cmp cl, 1
mov ebx, dword [esp + 0x64]
mov esi, ebp
mov edi, dword [esp + 0x50]
mov ebp, dword [esp + 0x100]
jmp 0x590063
cmp eax, 9
jne 0x590029
mov ebx, dword [esp + 0x64]
mov esi, ebp
mov ebp, dword [esp + 0x50]
lea edi, [ebp + ebx]
mov ebp, dword [esp + 0x100]
sub edi, ebp
cmp cl, 1
jmp 0x590063
mov ebx, dword [esp + 0x64]
mov esi, ebp
mov ebp, dword [esp + 0x100]
sub ebx, ebp
mov dword [esp + 0xfc], ebx
shr ebx, 0x1f
mov ebp, dword [esp + 0xfc]
add ebx, ebp
sar ebx, 1
mov ebp, dword [esp + 0x50]
add ebx, ebp
cmp cl, 1
mov ebp, dword [esp + 0x100]
mov edi, ebx
mov ebx, dword [esp + 0x64]
mov dword [esp + 0x40], edi
mov edi, esi
mov dword [esp + 0x44], ebp
mov ebp, dword [esp + 0x68]
jne 0x5900bd
cmp eax, 4
ja 0x590089
cmp eax, 1
je 0x590093
cmp eax, 3
je 0x5900a5
cmp eax, 4
je 0x590093
jmp 0x5900b0
cmp eax, 6
je 0x5900a5
cmp eax, 7
jne 0x5900a0
add esi, edx
mov eax, edx
mov edx, dword [esp + 0xac]
jmp 0x5900f1
cmp eax, 9
jne 0x5900b0
mov eax, edx
mov edx, dword [esp + 0xac]
jmp 0x5900f1
mov eax, edx
mov edx, dword [esp + 0xac]
add esi, edx
jmp 0x5900f1
test eax, eax
je 0x5900d3
cmp eax, 3
ja 0x5900d3
add esi, edx
mov eax, edx
mov edx, dword [esp + 0xac]
jmp 0x5900f1
add eax, 0xfffffff9
cmp eax, 2
ja 0x5900e6
mov eax, edx
mov edx, dword [esp + 0xac]
jmp 0x5900f1
mov eax, edx
mov edx, dword [esp + 0xac]
add esi, edx
mov dword [esp + 0x3c], edi
mov edx, dword [esp + 0x68]
mov ebx, dword [esp + 0x38]
add edx, ebx
lea edi, [esp + 0x1d0]
xor eax, eax
call fcn.0046c0ba
mov ecx, dword [esp + 0x6c]
inc ecx
mov eax, ebx
mov ebx, dword [esp + 0x90]
mov dword [esp + 0x1d0], ebx
mov ebx, dword [esp + 0x18c]
mov dword [esp + 0x1d4], ebx
mov ebx, dword [esp + 0x40]
mov dword [esp + 0x1d8], ebx
mov ebx, dword [esp + 0x3c]
mov dword [esp + 0x1dc], ebx
mov ebx, dword [esp + 0x44]
mov dword [esp + 0x1e0], ebx
mov dword [esp + 0x1e4], ebp
add edx, esi
mov dword [esp + 0x7c], edx
mov ebx, dword [esp + 0x70]
cmp ebx, ecx
jb 0x59016f
mov edi, dword [esp + 0x188]
jmp 0x5901ac
mov eax, dword [esp + 0x188]
mov dword [esp], eax
mov dword [esp + 4], ecx
mov dword [esp + 8], ebx
mov dword [esp + 0xc], 1
lea eax, [0x6418c0]
mov dword [esp + 0x10], eax
call fcn.00451aa0
mov edi, dword [esp + 0x14]
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x1c]
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x7c]
mov dword [esp + 0x6c], ecx
mov ebp, dword [0x8cc0e0]
lea esi, [ecx + ecx*2]
lea esi, [edi + esi*8 - 0x18]
test ebp, ebp
je 0x58fcf5
mov dword [esp + 0x1a8], edi
mov dword [esp + 0xd4], ebx
mov dword [esp + 0x1a4], esi
lea eax, [0x6418c0]
mov dword [esp], eax
mov dword [esp + 4], esi
lea eax, [esp + 0x1d0]
mov dword [esp + 8], eax
call fcn.004152e0
mov eax, dword [esp + 0x38]
mov ecx, dword [esp + 0x6c]
mov edx, dword [esp + 0x7c]
mov ebx, dword [esp + 0xd4]
mov esi, dword [esp + 0x1a4]
mov edi, dword [esp + 0x1a8]
jmp 0x58fcf5
mov dword [esp + 0x250], edi
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x254], eax
mov dword [esp + 0x258], ebx
add esp, 0x208
ret
call fcn.0043b1e0
mov ebx, dword [esp + 0x38]
add esi, ebx
mov edi, dword [esp + 0x8c]
inc edi
mov ecx, dword [esp + 0x4c]
sub eax, ecx
mov ecx, dword [esp + 0x58]
sub ecx, esi
mov esi, dword [esp + 0x100]
sub esi, ebx
mov ebx, dword [esp + 0x9c]
mov ebp, dword [esp + 0x1ac]
mov dword [esp + 0x8c], edi
mov dword [esp + 0x80], edx
mov dword [esp + 0x58], ecx
mov edx, esi
mov ecx, dword [esp + 0x5c]
mov esi, dword [esp + 0x1b8]
mov edi, dword [esp + 0x7c]
mov dword [esp + 0x100], edx
lea edi, [esp + ebx*4 + 0x17c]
mov edx, dword [esp + 0x8c]
cmp dword [edi], edx
jle 0x58fbfc
mov edi, dword [esp + ebx*4 + 0x170]
add edi, edx
mov ebx, dword [esp + 0x218]
cmp ebx, edi
jbe 0x5907d9
shl edi, 5
add edi, ebp
mov dword [esp + 0x1a0], edi
lea edi, [esp + 0x1e8]
mov esi, dword [esp + 0x1a0]
call fcn.0046c580
mov ecx, dword [esp + 0x1f0]
cmp ebx, ecx
jbe 0x5907d0
mov dword [esp + 0x88], ecx
mov dword [esp + 0x48], eax
mov ebp, dword [esp + 0x1b8]
mov edi, dword [ebp + ecx*4]
mov ebx, dword [esp + 0x1cc]
mov ebx, dword [ebx + ecx*4]
mov dword [esp + 0x4c], ebx
mov esi, dword [esp + 0x1f8]
mov edx, dword [esp + 0x1fc]
mov dword [esp + 0x84], edx
test edi, edi
jle 0x590544
mov eax, dword [esp + 0x1f4]
xorps xmm1, xmm1
ucomisd xmm1, xmm0
jbe 0x59052d
movsd xmm2, qword [0x700dbc]
pxor xmm2, xmm0
mov ebx, dword [esp + 0x5c]
cvtsi2sd xmm3, ebx
divsd xmm2, xmm3
cvtsi2sd xmm3, edi
mulsd xmm2, xmm3
movsd qword [esp + 0x124], xmm2
mov edi, dword [esp + 0x128]
mov dword [esp + 0x34], edi
shr edi, 0x14
and edi, 0x7ff
cmp edi, 0x3ff
jae 0x5903b2
mov ebx, dword [esp + 0x34]
and ebx, 0x80000000
cmp edi, 0x3fe
jne 0x5903ab
or ebx, 0x3ff00000
xor edi, edi
jmp 0x5904fe
mov ebx, dword [esp + 0x124]
cmp edi, 0x433
jae 0x5904e6
lea edx, [edi - 0x3ff]
mov dword [esp + 0xc0], edx
mov ecx, edx
mov ebp, 0x80000
shr ebp, cl
mov dword [esp + 0xf0], ebp
add edi, 0xfffffbe1
mov dword [esp + 0xec], edi
mov ecx, edi
mov ebp, 0x80000
shr ebp, cl
mov dword [esp + 0xe8], ebp
mov ecx, edx
mov ebp, 0xfffff
shr ebp, cl
mov dword [esp + 0xe4], ebp
mov ecx, edi
mov ebp, 0xfffff
shr ebp, cl
mov dword [esp + 0xe0], ebp
mov ecx, edx
mov ebp, 0xffffffff
shr ebp, cl
mov dword [esp + 0xd0], ebp
xchg edi, ebx
neg ebx
xchg edi, ebx
mov ecx, edi
mov ebp, 0x80000
shl ebp, cl
mov edx, 0xfffff
shl edx, cl
cmp ecx, 0x20
sbb ecx, ecx
and ebp, ecx
and edx, ecx
mov ecx, ebp
mov ebp, dword [esp + 0xc0]
cmp ebp, 0x20
sbb edi, edi
mov ebp, dword [esp + 0xf0]
and ebp, edi
mov dword [esp + 0xf0], ebp
mov ebp, dword [esp + 0xd0]
and ebp, edi
or edx, ebp
mov dword [esp + 0xd0], edx
mov ebp, dword [esp + 0xe4]
and edi, ebp
xchg edi, ebx
not ebx
xchg edi, ebx
mov ebp, dword [esp + 0xec]
cmp ebp, 0x20
sbb ebp, ebp
mov edx, dword [esp + 0xe8]
and edx, ebp
or edx, ecx
mov ecx, edx
mov edx, dword [esp + 0xe0]
and edx, ebp
mov ebp, dword [esp + 0xd0]
or edx, ebp
not edx
add ebx, ecx
mov ebp, dword [esp + 0x34]
mov ecx, edx
mov edx, dword [esp + 0xf0]
adc ebp, edx
and edi, ebp
and ebx, ecx
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
mov ebp, dword [esp + 0x1b8]
jmp 0x5904ea
mov edi, dword [esp + 0x34]
mov dword [esp + 0x144], eax
mov eax, edi
mov edi, ebx
mov ebx, eax
mov eax, dword [esp + 0x144]
mov dword [esp + 0x13c], edi
mov dword [esp + 0x140], ebx
mov ebx, dword [ebp + ecx*4]
movsd xmm2, qword [esp + 0x13c]
cvttsd2si edi, xmm2
cmp ebx, edi
jl 0x590523
mov ebx, edi
sub eax, ebx
ucomisd xmm1, xmm0
mov ebx, dword [esp + 0x4c]
xchg edi, ebx
seta bl
xchg edi, ebx
xchg edi, eax
mov byte [esp + 0x2b], al
xchg edi, eax
mov edi, esi
mov esi, eax
mov eax, dword [esp + 0x48]
jmp 0x590550
mov edi, esi
xor esi, esi
xchg esi, eax
mov byte [esp + 0x2b], al
xchg esi, eax
mov esi, edi
movzx ebx, byte [esp + 0x2b]
test bl, bl
jne 0x590795
cmp edx, edi
jle 0x590795
mov ebx, dword [esp + 0x58]
mov ebp, dword [esp + 0x80]
sub ebx, ebp
mov ebp, dword [esp + 0x100]
sub ebx, ebp
cvtsi2sd xmm1, ebx
mov ebx, dword [esp + 0x4c]
cvtsi2sd xmm2, ebx
mulsd xmm1, xmm2
cvtsi2sd xmm2, eax
divsd xmm1, xmm2
movsd qword [esp + 0x11c], xmm1
mov ebp, dword [esp + 0x120]
mov dword [esp + 0x30], ebp
shr ebp, 0x14
and ebp, 0x7ff
cmp ebp, 0x3ff
jae 0x5905d7
mov ebx, dword [esp + 0x30]
and ebx, 0x80000000
cmp ebp, 0x3fe
jne 0x5905d0
or ebx, 0x3ff00000
xor ebp, ebp
jmp 0x590761
mov eax, dword [esp + 0x11c]
cmp ebp, 0x433
jae 0x590755
mov dword [esp + 0x2c], eax
lea ebx, [ebp - 0x3ff]
mov ecx, ebx
mov edx, 0x80000
shr edx, cl
mov dword [esp + 0xf0], edx
add ebp, 0xfffffbe1
mov ecx, ebp
mov edx, 0x80000
shr edx, cl
mov dword [esp + 0xec], edx
neg ecx
mov dword [esp + 0xe8], ecx
mov edx, 0x80000
shl edx, cl
mov dword [esp + 0xe4], edx
mov ecx, ebp
mov edx, 0xfffff
shr edx, cl
mov dword [esp + 0xe0], edx
mov ecx, dword [esp + 0xe8]
mov edx, 0xfffff
shl edx, cl
mov dword [esp + 0xd0], edx
mov ecx, ebx
mov edx, 0xffffffff
shr edx, cl
mov dword [esp + 0xcc], edx
mov edx, 0xfffff
shr edx, cl
mov dword [esp + 0xc8], edx
cmp ebp, 0x20
sbb ebp, ebp
mov edx, dword [esp + 0xec]
and edx, ebp
mov dword [esp + 0xec], edx
mov ebx, dword [esp + 0xe0]
and ebx, ebp
mov ebp, ebx
mov ebx, dword [esp + 0xe8]
cmp ebx, 0x20
sbb ebx, ebx
mov dword [esp + 0xe8], ebx
mov edx, dword [esp + 0xe4]
and edx, ebx
mov ebx, dword [esp + 0xec]
or ebx, edx
mov dword [esp + 0xec], ebx
mov edx, dword [esp + 0xd0]
mov ebx, dword [esp + 0xe8]
and edx, ebx
mov dword [esp + 0xe8], edx
mov ebx, dword [esp + 0xec]
add eax, ebx
cmp ecx, 0x20
sbb ecx, ecx
mov edx, dword [esp + 0xf0]
and edx, ecx
mov dword [esp + 0xf0], edx
mov edx, dword [esp + 0x2c]
add edx, ebx
mov edx, dword [esp + 0x30]
mov ebx, dword [esp + 0xf0]
adc edx, ebx
mov dword [esp + 0xc4], edx
mov ebx, dword [esp + 0xcc]
and ebx, ecx
mov edx, dword [esp + 0xc8]
and edx, ecx
not edx
mov ecx, edx
mov edx, dword [esp + 0xe8]
or edx, ebx
or ebp, edx
xchg ebp, ebx
not ebx
xchg ebp, ebx
and eax, ebp
mov ebp, dword [esp + 0xc4]
and ebp, ecx
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x84]
mov ebx, dword [esp + 0x4c]
jmp 0x590759
mov ebp, dword [esp + 0x30]
mov ebx, ebp
mov ebp, eax
mov eax, dword [esp + 0x48]
mov dword [esp + 0x134], ebp
mov dword [esp + 0x138], ebx
movsd xmm1, qword [esp + 0x134]
cvttsd2si ebx, xmm1
add ebx, esi
cmp edi, ebx
jle 0x590786
mov edx, edi
jmp 0x59078c
cmp edx, ebx
jl 0x59078c
mov edx, ebx
mov ebp, dword [esp + 0x1b8]
mov esi, edx
mov edx, dword [esp + 0x1c0]
mov dword [edx + ecx*4], esi
mov ebx, dword [ebp + ecx*4]
test ebx, ebx
jle 0x5907be
mov ebx, dword [esp + 0x1f4]
mov ecx, edx
mov edx, dword [esp + 0x80]
sub edx, ebx
jmp 0x590242
mov ebx, dword [esp + 0x80]
sub ebx, edi
mov ecx, edx
mov edx, ebx
jmp 0x590242
mov eax, ecx
mov ecx, ebx
call fcn.0046bf30
mov eax, edi
mov ecx, ebx
call fcn.0046bf30
nop
call fcn.0046aab0
jmp fcn.0058efa0