Function at 0x580b60
Capabilities:
Check http status code
Resolve function by parsing pe exports

Disassembly:
push ebp
lea ebp, [esp - 0x60]
sub esp, 0x12c
mov eax, dword [0x698b9c]
xor eax, ebp
mov dword [ebp + 0x5c], eax
push ebx
push esi
push edi
fldz
fst dword [ebp - 0x58]
mov esi, dword [ebp + 0x68]
fst dword [ebp - 0x64]
mov eax, dword [esi + 4]
fst dword [ebp - 0x30]
mov ebx, dword [esi]
fst dword [ebp - 0x2c]
mov ecx, dword [esi + 8]
fstp dword [ebp - 0x5c]
mov dword [ebp - 4], eax
xor eax, eax
mov dword [ebp - 0x90], eax
mov edx, dword [ebx + 8]
mov dword [ebp + 0x38], ecx
mov ecx, dword [ebx + 0x20]
mov dword [ebp + 0x28], edx
mov edx, dword [esi + 0x24]
mov dword [ebp - 0x74], ecx
mov ecx, dword [esi + 0x20]
mov dword [ebp + 0x54], edx
xor edx, edx
test ecx, ecx
setne dl
cmp dword [ebp + 0x78], 2
mov dword [ebp + 0x2c], eax
mov dword [ebp - 0x88], eax
mov dword [ebp - 0x94], eax
mov dword [ebp - 0x24], eax
mov eax, dword [ebx + 4]
mov dword [ebp - 0x78], 0xf
mov dword [ebp + 0x3c], ebx
mov dword [ebp + 0x20], eax
mov dword [ebp + 0x30], ecx
mov dword [ebp - 0x1c], edx
jl 0x582e7d
cmp dword [ebp + 0x6c], 0
je 0x582e7d
mov ecx, dword [esi + 0x1c]
imul ecx, dword [ebp + 0x70]
xor edi, edi
cmp edi, dword [ebx + 0x24]
mov dword [ebp + 0x70], ecx
mov dword [ebp + 0x48], edi
jg 0x582e7d
mov edx, dword [ebx + 0x2c]
mov ecx, edi
shl edx, cl
cmp edx, dword [ebp + 0x70]
je 0x580c24
inc edi
cmp edi, dword [ebx + 0x24]
jle 0x580c12
cmp edi, dword [ebx + 0x24]
mov dword [ebp + 0x48], edi
jg 0x582e7d
mov ecx, edi
mov edx, 1
shl edx, cl
mov ecx, dword [ebx + 0x2c]
imul ecx, edx
mov dword [ebp - 0x34], edx
mov edx, eax
add eax, 0x400
mov dword [ebp - 0x28], ecx
mov ecx, dword [ebp - 4]
imul eax, ecx
imul edx, ecx
lea ecx, [esi + eax*4 + 0xf4]
mov eax, dword [ebp + 0x28]
imul eax, dword [ebp - 4]
mov dword [ebp - 0x9c], eax
add eax, eax
add eax, eax
mov dword [ebp + 8], ecx
add ecx, eax
mov dword [ebp - 0x84], ecx
add ecx, eax
mov dword [ebp - 0x8c], eax
add eax, ecx
cmp dword [ebp + 0x7c], 0
lea edx, [esi + edx*4 + 0xf4]
mov dword [ebp + 0x1c], edx
mov dword [ebp - 0x50], ecx
mov dword [ebp - 0x7c], eax
jne 0x580cac
mov edx, 1
mov dword [ebp + 0x58], edx
mov dword [ebp - 0x80], edx
mov dword [ebp + 0x18], 0
jmp 0x580cda
mov eax, dword [ebp + 0x7c]
push eax
call fcn.00593090
mov dword [ebp - 0x80], eax
mov eax, dword [ebp + 0x7c]
bsr ecx, dword [eax + 0x1c]
mov eax, dword [eax + 0x14]
sub eax, ecx
dec eax
mov dword [ebp + 0x58], eax
mov edx, dword [ebp + 0x58]
add eax, 4
add esp, 4
sar eax, 3
mov dword [ebp + 0xc], ecx
mov dword [ebp + 0x18], eax
mov ecx, dword [ebp + 0x78]
cmp ecx, 0x4fb
jl 0x580ced
mov ecx, 0x4fb
mov dword [ebp + 0x78], ecx
mov eax, ecx
sub eax, dword [ebp + 0x18]
cmp dword [esi + 0x2c], 0
mov dword [ebp - 0x4c], eax
je 0x580d20
mov eax, dword [esi + 0x28]
cmp eax, 0xffffffff
je 0x580d20
imul eax, dword [ebp + 0x70]
mov ecx, dword [ebx]
sar ecx, 3
mov edx, ecx
sar edx, 1
add eax, edx
cdq
idiv ecx
mov dword [ebp - 0x68], eax
sar eax, 6
mov dword [ebp - 0x48], eax
jmp 0x580d79
mov eax, dword [esi + 0x28]
imul eax, dword [ebp + 0x70]
cmp edx, 1
mov dword [ebp - 0x68], 0
jle 0x580d35
add eax, edx
cmp dword [esi + 0x28], 0xffffffff
je 0x580d73
mov ecx, dword [ebx]
lea eax, [eax + ecx*4]
add ecx, ecx
add ecx, ecx
add ecx, ecx
cdq
idiv ecx
mov ecx, dword [ebp + 0x78]
xor edx, edx
cmp dword [esi + 0x30], edx
setne dl
sub eax, edx
cmp ecx, eax
mov edx, ecx
jl 0x580d5e
mov edx, eax
cmp edx, 2
jge 0x580d6a
mov ecx, 2
jmp 0x580d70
cmp ecx, eax
jl 0x580d73
mov ecx, eax
mov dword [ebp + 0x78], ecx
sub ecx, dword [ebp + 0x18]
mov dword [ebp - 0x48], ecx
mov ecx, edi
mov eax, 0x190
sar eax, cl
mov ecx, dword [ebp + 0x38]
lea ecx, [ecx + ecx*4]
lea edx, [ecx*8 + 0x14]
sub eax, 0x32
imul eax, edx
mov edx, dword [ebp + 0x78]
imul edx, edx, 0x190
mov ecx, 3
sub ecx, edi
sar edx, cl
mov dword [ebp - 0x14], ecx
sub edx, eax
cmp dword [esi + 0x28], 0xffffffff
mov dword [ebp - 0x60], edx
je 0x580dc1
mov ecx, dword [esi + 0x28]
sub ecx, eax
cmp edx, ecx
jl 0x580dc1
mov dword [ebp - 0x60], ecx
cmp dword [ebp + 0x7c], 0
mov edi, dword [ebp + 0x78]
jne 0x580de7
mov eax, dword [ebp + 0x74]
push edi
push eax
lea ecx, [ebp - 0xcc]
push ecx
call fcn.00587630
lea edx, [ebp - 0xcc]
add esp, 0xc
mov dword [ebp + 0x7c], edx
mov eax, dword [ebp - 0x68]
test eax, eax
jle 0x580e3f
cmp dword [esi + 0x34], 0
je 0x580e3f
lea ecx, [eax + eax]
sub ecx, dword [esi + 0xd0]
mov eax, dword [ebp + 0x58]
dec eax
sar ecx, 6
neg eax
sbb eax, eax
and eax, 0xfffffffe
add eax, 2
cmp eax, ecx
mov edx, eax
jg 0x580e16
mov edx, ecx
cmp edx, dword [ebp - 0x4c]
jge 0x580e3f
cmp eax, ecx
jg 0x580e21
mov eax, ecx
cmp eax, dword [ebp - 0x4c]
jge 0x580e3f
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x7c]
lea edi, [eax + ecx]
push edi
push edx
mov dword [ebp + 0x78], edi
mov dword [ebp - 0x4c], eax
call fcn.005878b0
add esp, 8
mov ecx, dword [ebp + 0x54]
lea eax, [edi*8]
mov dword [ebp + 0x44], eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebx + 0xc]
cmp ecx, eax
mov dword [ebp - 0x10], ecx
jle 0x580e5c
mov dword [ebp - 0x10], eax
mov edi, dword [ebp + 0x20]
mov eax, dword [ebp - 0x28]
add eax, edi
mov dword [ebp + 0x24], eax
imul eax, dword [ebp - 4]
add eax, eax
add eax, eax
call fcn.005c2560
mov eax, dword [ebp - 0x28]
mov ecx, dword [esi + 0x1c]
sub eax, edi
imul eax, dword [ebp + 0x38]
cdq
idiv ecx
mov edi, dword [ebp + 0x6c]
mov dword [ebp - 8], esp
push eax
mov dword [ebp + 0xc], eax
call fcn.0057d1d0
fcom dword [esi + 0xe0]
add esp, 4
fnstsw ax
test ah, 5
jp 0x580eaa
fstp st(0)
fld dword [esi + 0xe0]
mov eax, dword [ebp + 0x20]
fstp dword [ebp + 0x40]
imul eax, dword [ebp + 0x38]
cdq
idiv dword [esi + 0x1c]
mov edx, dword [ebp + 0xc]
mov ecx, edi
lea edi, [ecx + edx*4]
push eax
call fcn.0057d1d0
fst dword [esi + 0xe0]
fld dword [ebp + 0x40]
add esp, 4
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x580ee2
fstp st(0)
fst dword [ebp + 0x40]
jmp 0x580ee4
fstp st(1)
mov ecx, dword [esi + 0x3c]
mov eax, 1
shl eax, cl
mov dword [ebp + 0xc], eax
fild dword [ebp + 0xc]
fld1
fdivrp st(1)
fcompp
fnstsw ax
test ah, 1
jne 0x580f08
mov edi, 1
jmp 0x580f0a
xor edi, edi
cmp dword [ebp + 0x58], 1
mov dword [ebp - 0x6c], edi
jne 0x580f61
mov ecx, dword [ebp + 0x7c]
push 0xf
push edi
push ecx
call fcn.00587720
add esp, 0xc
test edi, edi
je 0x580f83
cmp dword [ebp - 0x68], 0
jle 0x580f6a
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x78]
add ecx, 2
cmp eax, ecx
jl 0x580f3e
mov eax, ecx
mov dword [ebp + 0x78], eax
mov edx, dword [ebp + 0x7c]
push eax
lea edi, [eax*8]
push edx
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x4c], 2
call fcn.005878b0
add esp, 8
jmp 0x580f6d
mov dword [ebp - 0x6c], 0
jmp 0x580f83
mov edi, dword [ebp + 0x44]
mov eax, dword [ebp + 0x7c]
bsr ecx, dword [eax + 0x1c]
mov edx, ecx
mov dword [ebp + 0xc], ecx
lea ecx, [edx + edi + 1]
mov dword [ebp + 0x58], edi
mov dword [eax + 0x14], ecx
mov edx, dword [ebp + 0x6c]
mov ecx, dword [ebp - 8]
xor edi, edi
add ebx, 0x10
mov dword [ebp + 0x34], edx
mov edx, dword [ebp + 0x20]
lea eax, [esi + 0xc0]
mov dword [ebp + 0xc], ebx
mov dword [ebp + 0x18], eax
lea ebx, [ecx + edx*4]
cmp dword [esi + 0x10], 0
je 0x580fc0
fld dword [0x656764]
fcomp dword [ebp + 0x40]
fnstsw ax
test ah, 5
jp 0x580fc0
mov eax, 1
jmp 0x580fc2
xor eax, eax
mov ecx, dword [ebp + 0xc]
mov edx, dword [esi + 0x1c]
push eax
mov eax, dword [ebp + 0x18]
push eax
mov eax, dword [ebp - 4]
push ecx
mov ecx, dword [ebp - 0x28]
push edx
mov edx, dword [ebp + 0x34]
push eax
push ecx
push ebx
push edx
call fcn.0057df40
mov eax, dword [ebp + 0x24]
add eax, eax
add eax, eax
add ebx, eax
mov eax, 4
add dword [ebp + 0x18], eax
add dword [ebp + 0x34], eax
inc edi
add esp, 0x20
cmp edi, dword [ebp - 4]
jl 0x580fa3
cmp dword [esi + 0x40], 0
mov edx, dword [ebp - 0x4c]
je 0x58100c
cmp edx, 3
jg 0x58101a
mov eax, dword [ebp + 0x38]
lea eax, [eax + eax*2]
add eax, eax
add eax, eax
cmp edx, eax
jle 0x581039
cmp dword [ebp - 0x1c], 0
jne 0x581039
cmp dword [ebp - 0x6c], 0
jne 0x581039
cmp dword [esi + 0x14], 0
jne 0x581039
cmp dword [esi + 0x18], 5
jl 0x581039
mov ecx, 1
jmp 0x58103b
xor ecx, ecx
mov eax, dword [esi + 0x64]
lea edi, [esi + 0x78]
push edi
push edx
push ecx
lea ecx, [ebp + 0x1c]
push ecx
lea edx, [ebp - 0x58]
push edx
mov edx, dword [ebp - 0x28]
lea ecx, [ebp - 0x78]
push ecx
mov ecx, dword [ebp + 0x1c]
push eax
push edx
mov edx, dword [ebp - 8]
mov dword [ebp + 0xc], eax
mov eax, dword [ebp - 4]
push eax
push ecx
push edx
call fcn.00580430
fld dword [0x6567c0]
fcom dword [ebp - 0x58]
mov ecx, eax
add esp, 0x2c
mov dword [ebp - 0x44], ecx
fnstsw ax
test ah, 5
jnp 0x58108d
fcomp dword [esi + 0x6c]
fnstsw ax
test ah, 5
jp 0x5810da
jmp 0x58108f
fstp st(0)
cmp dword [edi], 0
je 0x5810a4
fld dword [esi + 0x7c]
fcomp qword [0x680930]
fnstsw ax
test ah, 0x41
jne 0x5810da
fild dword [ebp - 0x78]
fild dword [esi + 0x68]
fld qword [0x656810]
fmul st(1)
fcomp st(2)
fnstsw ax
test ah, 5
jnp 0x5810cc
fmul qword [0x656808]
fcompp
fnstsw ax
test ah, 0x41
jne 0x5810da
jmp 0x5810d0
fstp st(1)
fstp st(0)
mov dword [ebp - 0x88], 1
test ecx, ecx
jne 0x581103
cmp dword [ebp - 0x1c], ecx
jne 0x58116a
mov eax, dword [ebp + 0x58]
add eax, 0x10
cmp eax, dword [ebp - 0x20]
jg 0x58116a
push 1
push ecx
mov ecx, dword [ebp + 0x7c]
push ecx
call fcn.00587720
add esp, 0xc
jmp 0x58116a
mov edx, dword [ebp + 0x7c]
push 1
push 1
push edx
call fcn.00587720
mov edi, dword [ebp - 0x78]
mov ecx, dword [ebp + 0x7c]
inc edi
bsr eax, edi
mov ebx, eax
push 6
add ebx, 0xfffffffc
push ebx
push ecx
mov dword [ebp + 0x44], eax
call fcn.00587a20
mov ecx, ebx
mov eax, 0x10
shl eax, cl
lea edx, [ebx + 4]
mov ebx, dword [ebp + 0x7c]
push edx
mov ecx, edi
sub ecx, eax
push ecx
push ebx
call fcn.005877b0
mov edx, dword [ebp + 0x1c]
push 3
push edx
dec edi
push ebx
mov dword [ebp - 0x78], edi
call fcn.005877b0
mov eax, dword [ebp + 0xc]
push 2
push 0x6565f8
push eax
push ebx
call fcn.00587750
add esp, 0x40
xor eax, eax
xor ebx, ebx
mov edi, 1
cmp dword [esi + 0x18], edi
mov dword [ebp + 4], eax
mov dword [ebp + 0x18], ebx
jl 0x5811c1
cmp dword [esi + 0x40], ebx
jne 0x5811c1
cmp dword [ebp - 0x1c], ebx
je 0x58119b
cmp dword [ebp - 0x48], 0xf
jge 0x58119b
cmp dword [esi + 0xb8], 2
je 0x58119b
mov eax, edi
jmp 0x58119d
xor eax, eax
lea ecx, [ebp - 0x24]
push ecx
mov ecx, dword [ebp - 4]
push eax
lea edx, [ebp + 0x2c]
push edx
mov edx, dword [ebp + 0x24]
lea eax, [ebp - 0x5c]
push eax
mov eax, dword [ebp - 8]
push ecx
push edx
push eax
call fcn.0057d2d0
add esp, 0x1c
mov dword [ebp + 4], eax
cmp dword [ebp + 0x48], 0
jle 0x5811ea
mov ecx, dword [ebp + 0x7c]
bsr edx, dword [ecx + 0x1c]
mov ecx, dword [ecx + 0x14]
sub ecx, edx
add ecx, 2
cmp ecx, dword [ebp - 0x20]
mov dword [ebp + 0x44], edx
jg 0x5811ea
test eax, eax
je 0x5811f7
mov ebx, dword [ebp - 0x34]
mov dword [ebp + 0x18], ebx
jmp 0x5811f7
mov dword [ebp + 4], 0
mov dword [ebp - 0x94], edi
mov eax, dword [ebp - 0x28]
imul eax, dword [ebp - 4]
add eax, eax
add eax, eax
call fcn.005c2560
mov edi, dword [ebp - 0x8c]
mov eax, edi
mov dword [ebp - 0x38], esp
call fcn.005c2560
mov eax, edi
mov dword [ebp], esp
call fcn.005c2560
mov dword [ebp + 0x10], esp
test ebx, ebx
je 0x581235
cmp dword [esi + 0x18], 8
mov dword [ebp + 0x24], 1
jge 0x58123c
mov dword [ebp + 0x24], 0
mov ebx, dword [ebp + 0x28]
mov edi, dword [ebp + 0x38]
imul ebx, edi
lea eax, [ebx*4]
mov dword [ebp - 0x3c], ebx
call fcn.005c2560
cmp dword [ebp + 0x24], 0
mov dword [ebp + 0x14], esp
je 0x58132d
mov edx, dword [esi + 0x48]
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp - 4]
push edx
mov edx, dword [ebp - 0x38]
push eax
mov eax, dword [ebp - 8]
push ecx
mov ecx, dword [ebp + 0x3c]
push edi
push edx
push eax
push 0
push ecx
mov ecx, dword [ebp + 0x48]
call fcn.0057dcf0
mov edx, dword [esi + 0x48]
mov eax, dword [ebp + 0x48]
mov ecx, dword [ebp - 0x10]
push edx
mov edx, dword [ebp]
push eax
mov eax, dword [ebp - 0x38]
push edi
push ecx
mov ecx, dword [ebp + 0x3c]
push edx
push eax
push ecx
call fcn.0058d430
mov edx, dword [ebp + 0x14]
mov eax, dword [ebp]
mov ecx, dword [ebp + 0x54]
push edi
push edx
mov edx, dword [ebp - 0x10]
push eax
mov eax, dword [ebp + 0x3c]
push ecx
push edx
push eax
call fcn.005913c0
add esp, 0x54
xor ecx, ecx
cmp ebx, 4
jl 0x58130d
mov eax, dword [ebp + 0x14]
fild dword [ebp + 0x48]
lea edx, [ebx - 4]
shr edx, 2
fmul dword [0x680850]
add eax, 8
inc edx
lea ecx, [edx*4]
fld dword [eax - 8]
add eax, 0x10
sub edx, 1
fadd st(1)
fstp dword [eax - 0x18]
fld dword [eax - 0x14]
fadd st(1)
fstp dword [eax - 0x14]
fld dword [eax - 0x10]
fadd st(1)
fstp dword [eax - 0x10]
fld dword [eax - 0xc]
fadd st(1)
fstp dword [eax - 0xc]
jne 0x5812e3
fstp st(0)
cmp ecx, ebx
jge 0x58132d
fild dword [ebp + 0x48]
mov eax, dword [ebp + 0x14]
fmul dword [0x680850]
fld dword [eax + ecx*4]
inc ecx
cmp ecx, ebx
fadd st(1)
fstp dword [eax + ecx*4 - 4]
jl 0x58131d
fstp st(0)
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x1c]
mov ebx, dword [ebp - 4]
mov eax, dword [ebp - 0x38]
push ecx
mov ecx, dword [ebp - 8]
push edx
mov edx, dword [ebp + 0x18]
push ebx
push edi
push eax
mov eax, dword [ebp + 0x3c]
push ecx
mov ecx, dword [ebp + 0x48]
push edx
push eax
call fcn.0057dcf0
add esp, 0x20
cmp ebx, 2
jne 0x581366
cmp edi, 1
jne 0x581366
mov dword [ebp + 0x2c], 0
mov ecx, dword [esi + 0x48]
mov edx, dword [ebp + 0x48]
mov eax, dword [ebp - 0x10]
push ecx
mov ecx, dword [ebp]
push edx
mov edx, dword [ebp - 0x38]
push edi
push eax
mov eax, dword [ebp + 0x3c]
push ecx
push edx
push eax
call fcn.0058d430
add esp, 0x1c
cmp dword [esi + 0x40], 0
je 0x5814b7
mov edx, 2
cmp dword [ebp + 0x54], edx
jle 0x5814b7
mov ecx, dword [ebp + 0x54]
fld dword [0x656800]
fld dword [0x656584]
add ecx, 0xfffffffe
cmp ecx, 4
jl 0x58147d
mov ebx, dword [ebp + 0x54]
mov ecx, dword [ebp]
add ebx, 0xfffffffa
shr ebx, 2
add ecx, 0x10
inc ebx
lea edx, [ebx*4 + 2]
mov eax, dword [ebp]
fld dword [eax]
fmul st(2)
fcom dword [ecx - 8]
fnstsw ax
test ah, 0x41
jne 0x5813e7
fstp st(0)
fld dword [ecx - 8]
fst dword [ecx - 8]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x5813f7
fstp st(0)
fld st(0)
mov eax, dword [ebp]
fstp dword [ecx - 8]
fld dword [eax]
fmul st(2)
fcom dword [ecx - 4]
fnstsw ax
test ah, 0x41
jne 0x581410
fstp st(0)
fld dword [ecx - 4]
fst dword [ecx - 4]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x581420
fstp st(0)
fld st(0)
mov eax, dword [ebp]
fstp dword [ecx - 4]
fld dword [eax]
fmul st(2)
fcom dword [ecx]
fnstsw ax
test ah, 0x41
jne 0x581437
fstp st(0)
fld dword [ecx]
fst dword [ecx]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x581446
fstp st(0)
fld st(0)
mov eax, dword [ebp]
fstp dword [ecx]
fld dword [eax]
fmul st(2)
fcom dword [ecx + 4]
fnstsw ax
test ah, 0x41
jne 0x58145e
fstp st(0)
fld dword [ecx + 4]
fst dword [ecx + 4]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x58146e
fstp st(0)
fld st(0)
fstp dword [ecx + 4]
add ecx, 0x10
sub ebx, 1
jne 0x5813d1
cmp edx, dword [ebp + 0x54]
jge 0x5814b3
mov ecx, dword [ebp]
mov ebx, dword [ebp + 0x54]
fld dword [ecx]
fmul st(2)
fcom dword [ecx + edx*4]
fnstsw ax
test ah, 0x41
jne 0x58149b
fstp st(0)
fld dword [ecx + edx*4]
fst dword [ecx + edx*4]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x5814ab
fstp st(0)
fld st(0)
fstp dword [ecx + edx*4]
inc edx
cmp edx, ebx
jl 0x581488
fstp st(0)
fstp st(0)
mov ecx, dword [ebp + 0x10]
mov edx, dword [ebp]
mov ebx, dword [ebp + 0x54]
mov eax, dword [ebp - 0x10]
push edi
push ecx
mov ecx, dword [ebp + 0x3c]
push edx
push ebx
push eax
push ecx
call fcn.005913c0
mov eax, dword [ebp - 0x3c]
add eax, eax
add esp, 0x18
add eax, eax
call fcn.005c2560
mov ecx, esp
lea eax, [ebx*4]
push eax
push 0
push ecx
mov dword [ebp - 0xc], ecx
call fcn.005bfd50
fld dword [0x656778]
add esp, 0xc
cmp dword [ebp - 0x1c], 0
jne 0x581b6c
mov ecx, dword [esi + 0xec]
mov dword [ebp - 0x54], ecx
test ecx, ecx
je 0x581b6c
cmp dword [esi + 0x40], 0
jne 0x581b6c
fldz
mov eax, dword [esi + 0x5c]
fld st(0)
xor edx, edx
cmp eax, 2
fst dword [ebp + 0x20]
fld st(1)
mov dword [ebp + 0x34], edx
fst dword [ebp + 0x40]
jge 0x581541
mov eax, 2
cmp edi, edx
mov dword [ebp + 0x58], eax
jle 0x5817a1
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x18], ecx
mov dword [ebp + 0x44], edi
jmp 0x581559
fxch st(1)
fld st(2)
xor ecx, ecx
cmp dword [ebp + 0x58], 2
fld st(3)
fst dword [ebp + 0x1c]
mov dword [ebp - 0x64], ecx
fld st(4)
mov dword [ebp - 0x70], ecx
fld st(5)
jl 0x5816b6
mov edx, dword [ebp + 0x58]
fstp st(4)
mov ecx, dword [ebp - 0x74]
fstp st(4)
mov edi, dword [ebp - 0x18]
fld dword [0x6565a0]
mov esi, 3
sub esi, edx
add edx, 0xfffffffe
shr edx, 1
add ecx, 2
inc edx
lea eax, [edx + edx]
mov dword [ebp + 0x1c], esi
mov dword [ebp + 0x4c], eax
jmp 0x5815b0
fld dword [0x6565a0]
fxch st(1)
fxch st(6)
fxch st(1)
fxch st(6)
fcom dword [edi]
fnstsw ax
test ah, 0x41
jne 0x5815e6
fxch st(6)
fcom dword [edi]
fnstsw ax
test ah, 5
jp 0x58160a
fstp st(0)
fxch st(5)
fcom dword [edi]
fnstsw ax
test ah, 0x41
jne 0x5815f8
fld dword [edi]
fcom st(5)
fnstsw ax
test ah, 0x41
jne 0x581610
fmul dword [0x680850]
jmp 0x581610
fstp st(6)
fld st(5)
fxch st(1)
fxch st(6)
fxch st(1)
fmul dword [0x680850]
jmp 0x581610
fxch st(5)
fld st(5)
fxch st(1)
fxch st(6)
fxch st(1)
fmul dword [0x680850]
jmp 0x581610
fxch st(1)
fxch st(6)
fxch st(1)
movsx ebx, word [ecx - 2]
movsx eax, word [ecx]
sub eax, ebx
add dword [ebp - 0x64], eax
mov dword [ebp + 0x50], eax
lea eax, [esi - 2]
fild dword [ebp + 0x50]
mov dword [ebp + 0x50], eax
fmul st(1)
faddp st(5)
fimul dword [ebp + 0x50]
faddp st(2)
fcom dword [edi + 4]
fnstsw ax
test ah, 0x41
jne 0x58164f
fld dword [edi + 4]
fcomp dword [0x6565a0]
fnstsw ax
test ah, 0x41
jne 0x58173e
fcom dword [edi + 4]
fnstsw ax
test ah, 0x41
jne 0x581737
fld dword [edi + 4]
fcom st(5)
fnstsw ax
test ah, 0x41
jne 0x58166f
fmul dword [0x680850]
movsx eax, word [ecx + 2]
movsx ebx, word [ecx]
sub eax, ebx
add dword [ebp - 0x70], eax
mov dword [ebp + 0x50], eax
add esi, 4
fild dword [ebp + 0x50]
add edi, 8
add ecx, 4
sub edx, 1
fmul st(1)
faddp st(4)
fimul dword [ebp + 0x1c]
mov dword [ebp + 0x1c], esi
faddp st(6)
jne 0x5815a4
mov ecx, dword [ebp + 0x4c]
fxch st(5)
mov esi, dword [ebp + 0x68]
fst dword [ebp + 0x1c]
fld dword [ebp + 0x40]
fld dword [ebp + 0x20]
fxch st(5)
fxch st(1)
fxch st(4)
mov edi, dword [ebp + 0x58]
cmp ecx, edi
jge 0x581755
mov edx, dword [ebp - 0x2c]
fstp st(4)
mov eax, dword [esi + 0xec]
fstp st(1)
add edx, ecx
fxch st(5)
fcom dword [eax + edx*4]
lea edx, [eax + edx*4]
fnstsw ax
test ah, 0x41
jne 0x5816ee
fld dword [edx]
fcomp dword [0x6565a0]
fnstsw ax
test ah, 0x41
jne 0x58174d
fcom dword [edx]
fnstsw ax
test ah, 0x41
jne 0x581749
fld dword [edx]
fcom st(5)
fnstsw ax
test ah, 0x41
jne 0x581708
fmul dword [0x680850]
mov edx, dword [ebp - 0x74]
lea eax, [ecx + ecx]
movsx ecx, word [eax + edx + 2]
movsx edx, word [eax + edx]
sub ecx, edx
add dword [ebp + 0x34], ecx
mov dword [ebp + 0x50], ecx
sub eax, edi
fild dword [ebp + 0x50]
inc eax
mov dword [ebp + 0x50], eax
fmul st(1)
faddp st(5)
fimul dword [ebp + 0x50]
fadd dword [ebp + 0x40]
fld dword [ebp + 0x1c]
jmp 0x581761
fld st(0)
jmp 0x581669
fld dword [0x6565a0]
jmp 0x58166f
fld st(0)
jmp 0x581702
fld dword [0x6565a0]
jmp 0x581708
fxch st(1)
fxch st(7)
fxch st(1)
fxch st(4)
fxch st(1)
fxch st(2)
mov eax, dword [ebp - 0x70]
faddp st(3)
mov ecx, dword [ebp - 0x64]
add eax, ecx
add dword [ebp + 0x34], eax
faddp st(2)
mov eax, dword [ebp + 0x28]
fxch st(1)
add dword [ebp - 0x2c], eax
fst dword [ebp + 0x40]
add eax, eax
fxch st(2)
add eax, eax
add dword [ebp - 0x18], eax
faddp st(5)
sub dword [ebp + 0x44], 1
fxch st(4)
faddp st(2)
fxch st(1)
fst dword [ebp + 0x20]
jne 0x581557
mov edi, dword [ebp + 0x38]
mov eax, dword [ebp + 0x58]
jmp 0x5817a3
fxch st(1)
fidiv dword [ebp + 0x34]
lea edx, [eax - 1]
lea ecx, [eax + 1]
fadd dword [0x65659c]
imul edx, ecx
fxch st(1)
fmul dword [0x6807ac]
imul edx, eax
imul edx, edi
mov dword [ebp + 0x50], edx
fidiv dword [ebp + 0x50]
fmul dword [0x680850]
fld dword [0x6567fc]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x5817f3
fstp st(0)
fld dword [0x6567f8]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x5817f3
fstp st(0)
jmp 0x5817f5
fstp st(1)
mov ecx, dword [ebp - 0x74]
mov edx, dword [ebp + 0x58]
movsx eax, word [ecx + edx*2]
cdq
sub eax, edx
movsx edx, word [ecx + 2]
add ecx, 2
xor ebx, ebx
sar eax, 1
cmp edx, eax
mov dword [ebp - 0x2c], ebx
jge 0x581823
movsx edx, word [ecx + 2]
add ecx, 2
inc ebx
cmp edx, eax
jl 0x581814
mov dword [ebp - 0x2c], ebx
xor ecx, ecx
cmp dword [ebp + 0x58], 4
mov dword [ebp + 0x4c], ecx
jl 0x5819d9
mov eax, dword [ebp - 0xc]
mov ebx, dword [ebp - 0x54]
add eax, 0xc
mov dword [ebp + 0x40], eax
mov eax, dword [ebp + 0x28]
lea eax, [ebx + eax*4]
mov dword [ebp + 0x34], eax
mov eax, dword [ebp - 0xc]
sub eax, ebx
mov dword [ebp + 0x1c], eax
mov eax, 2
sub eax, dword [ebp - 0x2c]
lea edx, [ebx + 4]
mov dword [ebp + 0x50], eax
mov eax, dword [ebp + 0x50]
lea ebx, [eax + ecx]
lea eax, [ebx - 2]
mov dword [ebp + 0x44], eax
fild dword [ebp + 0x44]
mov dword [ebp - 0x18], ebx
fmul st(1)
fadd st(2)
cmp edi, 2
jne 0x58188e
mov eax, dword [ebp + 0x34]
fld dword [eax]
fcomp dword [edx - 4]
fnstsw ax
test ah, 5
jnp 0x58188e
mov eax, dword [ebp + 0x34]
fld dword [eax]
jmp 0x581891
fld dword [edx - 4]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x58189e
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x5818b6
mov eax, dword [ebp + 0x40]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax - 0xc]
jmp 0x5818b8
fstp st(0)
lea eax, [ebx - 1]
mov dword [ebp + 0x44], eax
fild dword [ebp + 0x44]
fmul st(1)
fadd st(2)
cmp edi, 2
jne 0x5818e1
mov eax, dword [ebp + 0x34]
fld dword [eax + 4]
fcomp dword [edx]
fnstsw ax
test ah, 5
jnp 0x5818e1
mov eax, dword [ebp + 0x34]
fld dword [eax + 4]
jmp 0x5818e3
fld dword [edx]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x5818f0
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x581908
mov eax, dword [ebp + 0x1c]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax + edx]
jmp 0x58190a
fstp st(0)
fild dword [ebp - 0x18]
fmul st(1)
fadd st(2)
cmp edi, 2
jne 0x581933
mov eax, dword [ebp + 0x28]
mov ebx, dword [ebp - 0x54]
add eax, ecx
fld dword [ebx + eax*4 + 8]
lea ebx, [ebx + eax*4 + 8]
fcomp dword [edx + 4]
fnstsw ax
test ah, 5
jp 0x58195b
mov ebx, dword [ebp - 0x18]
fld dword [edx + 4]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x581943
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x581962
mov eax, dword [ebp + 0x40]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax - 4]
jmp 0x581964
fld dword [ebx]
mov ebx, dword [ebp - 0x18]
jmp 0x581936
fstp st(0)
inc ebx
mov dword [ebp + 0x44], ebx
fild dword [ebp + 0x44]
fmul st(1)
fadd st(2)
cmp edi, 2
jne 0x581992
mov eax, dword [ebp + 0x28]
mov ebx, dword [ebp - 0x54]
add eax, ecx
fld dword [ebx + eax*4 + 0xc]
lea ebx, [ebx + eax*4 + 0xc]
fcomp dword [edx + 8]
fnstsw ax
test ah, 5
jnp 0x581992
fld dword [ebx]
jmp 0x581995
fld dword [edx + 8]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x5819a2
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x5819b9
mov eax, dword [ebp + 0x40]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax]
jmp 0x5819bb
fstp st(0)
mov eax, 0x10
add dword [ebp + 0x34], eax
add dword [ebp + 0x40], eax
add edx, eax
mov eax, dword [ebp + 0x58]
add ecx, 4
add eax, 0xfffffffd
cmp ecx, eax
jl 0x58185d
cmp ecx, dword [ebp + 0x58]
jge 0x581a62
mov eax, dword [esi + 0xec]
mov ebx, dword [ebp + 0x28]
add ebx, ecx
lea ebx, [eax + ebx*4]
mov dword [ebp + 0x50], ebx
mov ebx, dword [ebp - 0xc]
sub ebx, eax
mov edx, ecx
sub edx, dword [ebp - 0x2c]
mov dword [ebp + 0x1c], ebx
mov ebx, dword [ebp + 0x58]
lea edi, [eax + ecx*4]
sub ebx, ecx
mov ecx, dword [ebp + 0x50]
mov dword [ebp + 0x44], edx
cmp dword [ebp + 0x38], 2
fild dword [ebp + 0x44]
fmul st(1)
fadd st(2)
jne 0x581a2a
fld dword [ecx]
fcomp dword [edi]
fnstsw ax
test ah, 5
jnp 0x581a2a
fld dword [ecx]
jmp 0x581a2c
fld dword [edi]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x581a39
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x581a51
mov eax, dword [ebp + 0x1c]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax + edi]
jmp 0x581a53
fstp st(0)
inc edx
add ecx, 4
add edi, 4
sub ebx, 1
mov dword [ebp + 0x44], edx
jne 0x581a0e
cmp dword [ebp + 0x4c], 3
jl 0x581b68
fxch st(1)
fadd st(3)
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x581aad
mov ecx, dword [ebp + 0x58]
fstp st(3)
mov eax, dword [ebp - 0xc]
fstp st(0)
lea edx, [ecx*4]
fstp st(1)
push edx
fst dword [ebp + 0x20]
push 0
fstp dword [ebp + 0x40]
push eax
call fcn.005bfd50
fld dword [ebp + 0x40]
fld dword [ebp + 0x20]
add esp, 0xc
fldz
fxch st(1)
jmp 0x581b4a
mov ebx, dword [ebp + 0x58]
xor edi, edi
cmp ebx, 4
jl 0x581b25
mov ecx, dword [ebp - 0xc]
lea edx, [ebx - 4]
shr edx, 2
add ecx, 8
inc edx
lea edi, [edx*4]
fld dword [ecx - 8]
fsub st(4)
fcom st(3)
fnstsw ax
test ah, 5
jp 0x581add
fstp st(0)
fld st(2)
fstp dword [ecx - 8]
fld dword [ecx - 4]
fsub st(4)
fcom st(3)
fnstsw ax
test ah, 5
jp 0x581af2
fstp st(0)
fld st(2)
fstp dword [ecx - 4]
fld dword [ecx]
fsub st(4)
fcom st(3)
fnstsw ax
test ah, 5
jp 0x581b06
fstp st(0)
fld st(2)
fstp dword [ecx]
fld dword [ecx + 4]
fsub st(4)
fcom st(3)
fnstsw ax
test ah, 5
jp 0x581b1a
fstp st(0)
fld st(2)
fstp dword [ecx + 4]
add ecx, 0x10
sub edx, 1
jne 0x581acb
cmp edi, ebx
jge 0x581b46
mov ecx, dword [ebp - 0xc]
fld dword [ecx + edi*4]
fsub st(4)
fcom st(3)
fnstsw ax
test ah, 5
jp 0x581b3e
fstp st(0)
fld st(2)
fstp dword [ecx + edi*4]
inc edi
cmp edi, ebx
jl 0x581b29
fstp st(3)
fxch st(2)
mov edi, dword [ebp + 0x38]
fxch st(2)
fmul dword [0x656750]
mov ebx, dword [ebp + 0x54]
fstp dword [ebp - 0x2c]
fxch st(1)
fadd dword [0x65659c]
fstp dword [ebp - 0x64]
jmp 0x581b70
fstp st(3)
jmp 0x581b4a
fstp st(0)
fldz
cmp dword [esi + 0x40], 0
jne 0x581d00
cmp dword [ebp + 0x18], 0
fld dword [0x6567f4]
fld st(1)
je 0x581b93
fild dword [ebp + 0x48]
fmul dword [0x680850]
jmp 0x581b95
fld st(2)
mov edx, dword [ebp + 0x30]
fld st(3)
cmp edx, ebx
mov ecx, edx
jge 0x581c96
fld1
mov eax, ebx
sub eax, edx
cmp eax, 2
jl 0x581c42
mov eax, dword [ebp + 0x28]
add edx, eax
mov eax, dword [ebp + 0x10]
lea edx, [eax + edx*4]
jmp 0x581bc4
fxch st(4)
fxch st(1)
mov eax, dword [ebp + 0x10]
fsub st(4), st(0)
fld dword [eax + ecx*4]
fsub st(3)
fcom st(5)
fnstsw ax
test ah, 5
jp 0x581bdb
fstp st(0)
jmp 0x581bdd
fstp st(5)
cmp edi, 2
jne 0x581bf5
fld dword [edx]
fsub st(3)
fcom st(5)
fnstsw ax
test ah, 5
jnp 0x581bf3
fstp st(5)
jmp 0x581bf5
fstp st(0)
mov eax, dword [ebp + 0x10]
fxch st(1)
fadd st(4)
fxch st(4)
fsub st(1)
fld dword [eax + ecx*4 + 4]
fsub st(3)
fcom st(1)
fnstsw ax
test ah, 5
jp 0x581c13
fstp st(0)
jmp 0x581c15
fstp st(1)
cmp edi, 2
jne 0x581c2e
fld dword [edx + 4]
fsub st(3)
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x581c2c
fstp st(1)
jmp 0x581c2e
fstp st(0)
add ecx, 2
fadd st(5), st(0)
lea eax, [ebx - 1]
add edx, 8
cmp ecx, eax
jl 0x581bc0
mov edx, dword [ebp + 0x30]
jmp 0x581c46
fxch st(1)
fxch st(4)
cmp ecx, ebx
jge 0x581c88
mov eax, dword [ebp + 0x10]
fstp st(3)
fsubp st(2)
fld dword [eax + ecx*4]
fsub st(1)
fcom st(2)
fnstsw ax
test ah, 5
jp 0x581c63
fstp st(0)
jmp 0x581c65
fstp st(2)
cmp edi, 2
jne 0x581c8c
mov eax, dword [ebp + 0x28]
add ecx, eax
mov eax, dword [ebp + 0x10]
fsubr dword [eax + ecx*4]
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x581c8c
fstp st(1)
fxch st(2)
faddp st(1)
faddp st(1)
jmp 0x581c9e
fstp st(0)
fstp st(1)
fstp st(0)
fxch st(2)
faddp st(1)
faddp st(1)
jmp 0x581c9e
fstp st(3)
fstp st(0)
fstp st(1)
fstp st(1)
mov ecx, ebx
sub ecx, edx
mov dword [ebp + 0x50], ecx
fidiv dword [ebp + 0x50]
fsub dword [esi + 0xf0]
fst dword [ebp - 0x30]
fld dword [0x6567f0]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x581ce3
fld dword [0x6567a8]
fcom st(2)
fnstsw ax
test ah, 5
jp 0x581cd8
fstp st(2)
fstp st(0)
fst dword [ebp - 0x30]
jmp 0x581cec
fstp st(0)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x581cea
fstp st(1)
fst dword [ebp - 0x30]
jmp 0x581cec
fstp st(0)
fmul dword [0x656580]
fadd dword [esi + 0xf0]
fstp dword [esi + 0xf0]
jmp 0x581d02
fstp st(0)
cmp dword [ebp + 0x24], 0
jne 0x581d20
mov eax, dword [ebp - 0x3c]
mov edx, dword [ebp + 0x10]
add eax, eax
add eax, eax
push eax
mov eax, dword [ebp + 0x14]
push edx
push eax
call fcn.005bfdd0
add esp, 0xc
cmp dword [ebp + 0x48], 0
jle 0x581e9a
mov eax, dword [ebp + 0x7c]
bsr ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x14]
sub edx, ecx
add edx, 2
cmp edx, dword [ebp - 0x20]
mov dword [ebp + 0x50], ecx
jg 0x581e74
cmp dword [ebp + 4], 0
jne 0x581e74
cmp dword [esi + 0x18], 5
jl 0x581e74
cmp dword [esi + 0x40], 0
jne 0x581e74
cmp dword [ebp - 0x1c], 0
jne 0x581e74
mov eax, dword [ebp + 0x30]
mov ecx, dword [ebp + 0x28]
mov edx, dword [ebp + 8]
push edi
push ebx
push eax
mov eax, dword [ebp + 0x10]
push ecx
push edx
push eax
call fcn.0057d790
add esp, 0x18
test eax, eax
je 0x581e74
mov ecx, dword [esi + 0x48]
mov edx, dword [esi + 0x1c]
mov eax, dword [ebp - 0x34]
push ecx
mov ecx, dword [ebp - 4]
push edx
mov edx, dword [ebp - 0x38]
push ecx
mov ecx, dword [ebp - 8]
push edi
push edx
mov edx, dword [ebp + 0x3c]
push ecx
mov ecx, dword [ebp + 0x48]
push eax
push edx
mov dword [ebp + 4], 1
mov dword [ebp + 0x18], eax
call fcn.0057dcf0
mov eax, dword [esi + 0x48]
mov ecx, dword [ebp + 0x48]
mov edx, dword [ebp - 0x10]
push eax
mov eax, dword [ebp]
push ecx
mov ecx, dword [ebp - 0x38]
push edi
push edx
mov edx, dword [ebp + 0x3c]
push eax
push ecx
push edx
call fcn.0058d430
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp]
mov edx, dword [ebp - 0x10]
push edi
push eax
mov eax, dword [ebp + 0x3c]
push ecx
push ebx
push edx
push eax
call fcn.005913c0
add esp, 0x54
xor ecx, ecx
cmp dword [ebp - 0x3c], 4
jl 0x581e48
mov edx, dword [ebp - 0x3c]
fild dword [ebp + 0x48]
mov eax, dword [ebp + 0x14]
add edx, 0xfffffffc
fmul dword [0x680850]
shr edx, 2
add eax, 8
inc edx
lea ecx, [edx*4]
fld dword [eax - 8]
add eax, 0x10
sub edx, 1
fadd st(1)
fstp dword [eax - 0x18]
fld dword [eax - 0x14]
fadd st(1)
fstp dword [eax - 0x14]
fld dword [eax - 0x10]
fadd st(1)
fstp dword [eax - 0x10]
fld st(0)
fadd dword [eax - 0xc]
fstp dword [eax - 0xc]
jne 0x581e1e
fstp st(0)
mov edx, dword [ebp - 0x3c]
cmp ecx, edx
jge 0x581e6b
fild dword [ebp + 0x48]
mov eax, dword [ebp + 0x14]
fmul dword [0x680850]
fld dword [eax + ecx*4]
inc ecx
cmp ecx, edx
fadd st(1)
fstp dword [eax + ecx*4 - 4]
jl 0x581e5b
fstp st(0)
fld dword [0x65659c]
fstp dword [ebp - 0x5c]
mov eax, dword [ebp + 0x7c]
bsr ecx, dword [eax + 0x1c]
mov edx, dword [eax + 0x14]
sub edx, ecx
add edx, 2
cmp edx, dword [ebp - 0x20]
mov dword [ebp + 0x50], ecx
jg 0x581e9a
mov ecx, dword [ebp + 4]
push 3
push ecx
push eax
call fcn.00587720
add esp, 0xc
mov eax, dword [ebp - 0x28]
imul eax, edi
add eax, eax
add eax, eax
call fcn.005c2560
mov edx, dword [ebp - 0x34]
mov ecx, dword [ebp - 0x10]
mov eax, esp
push edx
mov edx, dword [ebp]
push edi
push ecx
mov ecx, dword [ebp + 0x3c]
push edx
push eax
mov dword [ebp - 8], eax
mov eax, dword [ebp - 0x38]
push eax
push ecx
call fcn.0058d4e0
mov edx, edi
shl edx, 4
sub edx, edi
add esp, 0x1c
cmp dword [ebp - 0x48], edx
jl 0x581ef1
cmp dword [ebp - 0x1c], 0
jne 0x581ef1
cmp dword [esi + 0x18], 2
jl 0x581ef1
cmp dword [esi + 0x40], 0
mov dword [ebp + 0x44], 1
je 0x581ef8
mov dword [ebp + 0x44], 0
mov edi, dword [ebp + 0x28]
add edi, edi
add edi, edi
mov eax, edi
call fcn.005c2560
mov eax, edi
mov dword [ebp + 0x34], esp
call fcn.005c2560
mov eax, edi
mov ebx, esp
call fcn.005c2560
mov ecx, dword [esi + 0x40]
mov eax, esp
push eax
push ebx
mov dword [ebp + 0x40], eax
lea eax, [esi + 0x78]
push eax
mov eax, dword [ebp - 0xc]
push eax
mov eax, dword [ebp - 0x48]
push ecx
mov ecx, dword [ebp + 0x48]
lea edx, [ebp - 0x40]
push edx
mov edx, dword [ebp - 0x74]
push eax
mov eax, dword [esi + 0x34]
push ecx
mov ecx, dword [esi + 0x2c]
push edx
mov edx, dword [ebp + 4]
push eax
mov eax, dword [ebp + 0x3c]
push ecx
mov ecx, dword [eax + 0x38]
mov eax, dword [ebp + 0x34]
push edx
mov edx, dword [esi + 0x3c]
push ecx
mov ecx, dword [ebp + 0x38]
push edx
mov edx, dword [ebp + 0x54]
push eax
mov eax, dword [ebp + 0x30]
push ecx
mov ecx, dword [ebp + 0x28]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 0x10]
push ecx
push edx
push eax
call fcn.0057f120
fstp dword [ebp - 0x38]
add esp, 0x54
mov eax, edi
call fcn.005c2560
cmp dword [ebp + 0x44], 0
mov edi, esp
mov dword [ebp - 0x70], edi
je 0x581fee
mov eax, 0x5000
cdq
idiv dword [ebp - 0x48]
add eax, 2
cmp eax, 0x50
jge 0x581fa2
mov eax, 0x50
mov ecx, dword [ebp + 0x2c]
fld dword [ebp - 0x5c]
mov edx, dword [ebp + 0x48]
push ebx
mov ebx, dword [ebp - 0x10]
push ecx
push ecx
mov ecx, dword [ebp - 0x28]
fstp dword [esp]
push edx
mov edx, dword [ebp - 8]
push ecx
mov ecx, dword [ebp + 0x3c]
push edx
push eax
mov eax, dword [ebp + 4]
push edi
push eax
push ebx
push ecx
call fcn.0057e460
mov ecx, dword [ebp + 0x54]
add esp, 0x2c
cmp ebx, ecx
mov dword [ebp + 0x20], eax
mov eax, ebx
jge 0x582037
lea esp, [esp]
mov edx, dword [edi + ebx*4 - 4]
mov dword [edi + eax*4], edx
inc eax
cmp eax, ecx
jl 0x581fe0
jmp 0x582037
xor edx, edx
cmp dword [ebp - 0x1c], edx
je 0x582028
cmp dword [ebp - 0x24], edx
je 0x582006
mov ecx, dword [ebp + 0x54]
cmp ecx, edx
jle 0x582034
lea eax, [edx + 1]
jmp 0x582032
cmp dword [ebp - 0x48], 0xf
jge 0x582028
cmp dword [esi + 0xb8], 2
je 0x582028
mov ecx, dword [ebp + 0x54]
cmp ecx, edx
jle 0x582020
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 4]
mov dword [ebp + 0x20], eax
jmp 0x582037
mov ecx, dword [ebp + 0x54]
cmp ecx, edx
jle 0x582034
mov eax, dword [ebp + 4]
rep stosd dword es:[edi], eax
mov dword [ebp + 0x20], edx
mov eax, dword [ebp - 0x3c]
add eax, eax
add eax, eax
call fcn.005c2560
fld dword [0x680878]
mov ebx, dword [ebp - 0x7c]
fld dword [0x656778]
mov edx, dword [ebp + 0x10]
xor eax, eax
mov dword [ebp + 0x58], eax
mov dword [ebp + 0x24], eax
mov eax, dword [ebp + 0x30]
lea ecx, [ebx + eax*4]
mov dword [ebp - 0x18], ecx
mov ecx, dword [ebp + 8]
lea edx, [edx + eax*4 + 4]
lea eax, [ecx + eax*4 + 0xc]
mov dword [ebp + 0x14], esp
mov dword [ebp + 0x1c], edx
mov dword [ebp - 0x54], eax
mov eax, dword [ebp + 0x30]
cmp eax, dword [ebp + 0x54]
mov dword [ebp + 0x4c], eax
jge 0x5821a8
mov ecx, dword [ebp + 0x54]
sub ecx, eax
cmp ecx, 4
jl 0x582159
mov eax, dword [ebp - 0x54]
mov ecx, dword [ebp + 0x54]
mov edi, dword [ebp - 0x18]
mov dword [ebp + 0x44], eax
mov eax, ebx
sub eax, dword [ebp + 0x10]
mov dword [ebp + 0x2c], eax
mov eax, dword [ebp + 8]
sub eax, ebx
mov dword [ebp - 0x24], eax
mov eax, dword [ebp + 0x30]
sub ecx, eax
sub ecx, 4
shr ecx, 2
inc ecx
lea eax, [eax + ecx*4]
mov dword [ebp + 0x4c], eax
mov eax, dword [ebp - 0x24]
fld dword [edx - 4]
fsub dword [edi + eax]
fabs
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x5820e3
fld dword [edi]
fmul st(1)
fsubr dword [edx - 4]
fstp dword [edx - 4]
mov eax, dword [ebp + 0x2c]
fld dword [edx]
lea ebx, [eax + edx]
mov eax, dword [ebp - 0x24]
fsub dword [ebx + eax]
fabs
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x582104
fld dword [ebx]
fmul st(1)
fsubr dword [edx]
fstp dword [edx]
fld dword [edx + 4]
mov ebx, dword [ebp + 0x44]
fsub dword [ebx - 4]
fabs
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x582123
fld dword [edi + 8]
fmul st(1)
fsubr dword [edx + 4]
fstp dword [edx + 4]
fld dword [edx + 8]
fsub dword [ebx]
fabs
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x58213e
fld dword [edi + 0xc]
fmul st(1)
fsubr dword [edx + 8]
fstp dword [edx + 8]
add ebx, 0x10
add edi, 0x10
add edx, 0x10
sub ecx, 1
mov dword [ebp + 0x44], ebx
jne 0x5820c5
mov ebx, dword [ebp - 0x7c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [ebp + 0x54]
jge 0x5821a8
mov ecx, dword [ebp + 0x24]
mov edx, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
add ecx, eax
mov eax, ebx
sub eax, edx
lea ecx, [edx + ecx*4]
mov edx, dword [ebp + 0x54]
sub edi, ebx
sub edx, dword [ebp + 0x4c]
mov dword [ebp + 0x2c], eax
jmp 0x582180
mov eax, dword [ebp + 0x2c]
fld dword [ecx]
add eax, ecx
fsub dword [eax + edi]
mov dword [ebp + 0x50], eax
fabs
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x5821a0
mov eax, dword [ebp + 0x50]
fld dword [eax]
fmul st(1)
fsubr dword [ecx]
fstp dword [ecx]
add ecx, 4
sub edx, 1
jne 0x58217d
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x58]
mov edx, dword [ebp + 0x1c]
add dword [ebp + 0x24], eax
lea edi, [eax*4]
add dword [ebp - 0x54], edi
add dword [ebp - 0x18], edi
inc ecx
add edx, edi
cmp ecx, dword [ebp + 0x38]
mov dword [ebp + 0x58], ecx
mov dword [ebp + 0x1c], edx
jl 0x58207a
mov ecx, dword [esi + 0x40]
fstp st(1)
mov edx, dword [esi + 0x38]
fstp st(0)
push ecx
mov ebx, dword [ebp + 0x7c]
push edx
mov edx, dword [esi + 0xc]
xor eax, eax
cmp dword [esi + 0x18], 4
lea ecx, [esi + 0x54]
setge al
push eax
mov eax, dword [ebp - 0x4c]
push ecx
mov ecx, dword [ebp + 0x48]
push edx
mov edx, dword [ebp + 0x38]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp - 0x20]
push edx
mov edx, dword [ebp + 8]
push ebx
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp - 0x10]
push edx
mov edx, dword [ebp + 0x54]
push eax
mov eax, dword [ebp + 0x30]
push ecx
mov ecx, dword [ebp + 0x3c]
push edx
push eax
push ecx
call fcn.00590b00
mov edx, dword [ebp + 0x20]
mov eax, dword [ebp + 0x48]
mov ecx, dword [ebp - 0x70]
push edx
mov edx, dword [ebp + 4]
push eax
mov eax, dword [ebp + 0x54]
push ecx
mov ecx, dword [ebp + 0x30]
push edx
push eax
push ecx
mov eax, ebx
call fcn.0057e9e0
bsr edx, dword [ebx + 0x1c]
mov ecx, dword [ebx + 0x14]
sub ecx, edx
mov eax, 3
add ecx, eax
add esp, 0x5c
cmp ecx, dword [ebp - 0x20]
mov dword [ebp + 0x50], edx
jg 0x582289
xor ecx, ecx
cmp dword [esi + 0x40], ecx
je 0x58234d
mov dword [esi + 0x64], ecx
mov dword [esi + 0x50], 2
mov edx, dword [esi + 0x50]
push 5
push 0x6565f4
push edx
push ebx
call fcn.00587750
add esp, 0x10
cmp dword [esi + 0x40], 0
je 0x5822ad
mov eax, 0x55555556
imul dword [ebp - 0x48]
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 8
jle 0x5822a8
mov eax, 8
mov ecx, dword [ebp + 0x34]
mov dword [ecx], eax
mov eax, edi
call fcn.005c2560
mov edx, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x48]
mov eax, esp
push edx
mov edx, dword [ebp + 0x3c]
push ecx
push eax
push edx
mov dword [ebp + 0x44], eax
call fcn.0058d160
shl dword [ebp - 0x20], 3
push ebx
mov dword [ebp + 0x20], 6
mov dword [ebp + 0x40], 0
call fcn.00593090
mov dword [ebp + 0x58], eax
mov eax, dword [ebp + 0x30]
add esp, 0x14
cmp eax, dword [ebp + 0x54]
mov dword [ebp + 0x4c], eax
jge 0x5824a2
mov ecx, dword [ebp + 0x34]
lea edx, [ecx + eax*4]
mov eax, dword [ebp + 0x44]
sub eax, ecx
mov dword [ebp + 0x2c], edx
mov dword [ebp - 0x44], eax
lea esp, [esp]
mov edx, dword [ebp - 0x74]
mov ecx, dword [ebp + 0x4c]
movsx eax, word [edx + ecx*2 + 2]
movsx ecx, word [edx + ecx*2]
sub eax, ecx
imul eax, dword [ebp + 0x38]
mov ecx, dword [ebp + 0x48]
shl eax, cl
mov edx, 0x30
cmp eax, 0x30
jl 0x582336
mov edx, eax
lea ecx, [eax*8]
cmp ecx, edx
jge 0x5823d9
mov dword [ebp - 0x34], ecx
jmp 0x5823e8
cmp dword [ebp - 0x1c], ecx
je 0x582370
cmp dword [esi + 0x18], ecx
jne 0x58235f
mov dword [esi + 0x50], ecx
jmp 0x582275
cmp dword [ebp + 4], ecx
jne 0x58226e
mov dword [esi + 0x50], eax
jmp 0x582275
cmp dword [ebp + 0x18], ecx
jne 0x5823c8
cmp dword [esi + 0x18], eax
jl 0x5823c8
mov eax, dword [ebp + 0x38]
lea edx, [eax + eax*4]
add edx, edx
cmp dword [ebp - 0x4c], edx
jl 0x5823c8
mov ecx, dword [ebp + 0x40]
mov edx, dword [ebp - 0x34]
push ecx
mov ecx, dword [ebp + 0x38]
xor eax, eax
cmp dword [ebp - 0x44], eax
push edx
mov edx, dword [ebp - 0x10]
push ecx
mov ecx, dword [esi + 0x50]
setne al
push edx
lea edx, [esi + 0x58]
push eax
lea eax, [esi + 0x64]
push eax
lea eax, [esi + 0x60]
push eax
mov eax, dword [ebp - 8]
push ecx
mov ecx, dword [ebp + 0x3c]
push edx
push eax
push ecx
call fcn.0058dd10
add esp, 0x2c
mov dword [esi + 0x50], eax
jmp 0x582275
cmp dword [esi + 0x18], ecx
jne 0x58226e
mov dword [esi + 0x50], ecx
jmp 0x582275
cmp eax, 0x30
mov dword [ebp - 0x34], 0x30
jl 0x5823e8
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp + 0x20]
mov edx, dword [ebp + 0x58]
sub eax, dword [ebp + 0x40]
xor ebx, ebx
lea edx, [edx + ecx*8]
cmp edx, eax
mov dword [ebp - 0xc], ebx
jge 0x582484
mov edx, dword [ebp - 0x34]
neg edx
mov dword [ebp + 0x50], edx
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x44]
mov edx, dword [ebp - 0xc]
mov edi, dword [ebp + 0x2c]
cmp edx, dword [eax + edi]
jge 0x58246d
mov edx, dword [ebp + 0x34]
mov edi, dword [ebp + 0x4c]
xor eax, eax
cmp ebx, dword [edx + edi*4]
push ecx
setl al
mov edi, eax
mov eax, dword [ebp + 0x7c]
push edi
push eax
call fcn.00587720
mov ecx, dword [ebp + 0x7c]
push ecx
call fcn.00593090
add esp, 0x10
mov dword [ebp + 0x58], eax
test edi, edi
je 0x58246d
mov eax, dword [ebp - 0x34]
add dword [ebp - 0xc], eax
add dword [ebp + 0x40], eax
mov eax, dword [ebp - 0x24]
add eax, dword [ebp + 0x50]
mov edx, dword [ebp + 0x58]
add edx, 8
inc ebx
cmp edx, eax
mov dword [ebp - 0x24], eax
mov ecx, 1
jl 0x58240f
test ebx, ebx
je 0x582484
mov eax, dword [ebp + 0x20]
dec eax
cmp eax, 2
mov dword [ebp + 0x20], 2
jl 0x582484
mov dword [ebp + 0x20], eax
mov ecx, dword [ebp + 0x2c]
mov eax, dword [ebp - 0xc]
mov dword [ecx], eax
mov eax, dword [ebp + 0x4c]
inc eax
add ecx, 4
cmp eax, dword [ebp + 0x54]
mov dword [ebp + 0x4c], eax
mov dword [ebp + 0x2c], ecx
jl 0x582310
mov ebx, dword [ebp + 0x38]
cmp ebx, 2
jne 0x58252e
mov ecx, dword [ebp + 0x48]
test ecx, ecx
je 0x5824cf
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 8]
push edx
mov edx, dword [ebp + 0x3c]
push eax
push edx
call fcn.0057eed0
add esp, 0xc
mov dword [ebp - 0x90], eax
mov eax, dword [esi + 0xe8]
push eax
mov eax, 0x10624dd3
imul dword [ebp - 0x60]
sar edx, 6
mov ecx, edx
shr ecx, 0x1f
push 0x15
add ecx, edx
push 0x6566d8
mov dword [ebp - 0x44], ecx
push 0x656680
push ecx
fild dword [ebp - 0x44]
fstp dword [esp]
call fcn.0058d280
mov ecx, dword [ebp + 0x30]
add esp, 0x14
cmp ecx, eax
mov dword [esi + 0xe8], eax
mov edx, ecx
jg 0x582517
mov edx, eax
mov edi, dword [ebp + 0x54]
cmp edi, edx
jge 0x582522
mov eax, edi
jmp 0x582528
cmp ecx, eax
jle 0x582528
mov eax, ecx
mov dword [esi + 0xe8], eax
mov eax, dword [ebp - 0x20]
mov edx, dword [ebp + 0x58]
sub eax, dword [ebp + 0x40]
add edx, 0x30
cmp edx, eax
mov dword [ebp + 0x2c], 5
jg 0x5825cc
cmp dword [ebp + 0x30], 0
jg 0x58259f
cmp dword [esi + 0x40], 0
jne 0x58259f
mov eax, dword [esi + 0x48]
fld dword [ebp - 0x2c]
mov ecx, dword [ebp - 0x60]
mov edx, dword [esi + 0xe8]
push eax
push ecx
push ecx
fstp dword [esp]
push edx
fld dword [ebp - 0x5c]
mov edx, dword [ebp + 0x54]
push ecx
mov ecx, dword [ebp - 0x28]
fstp dword [esp]
lea eax, [esi + 0xe4]
push eax
lea eax, [esi + 0x78]
push eax
mov eax, dword [ebp + 0x10]
push ecx
mov ecx, dword [ebp - 8]
push ebx
push edx
mov edx, dword [ebp + 0x3c]
push eax
push ecx
push edx
mov edx, dword [ebp + 0x48]
call fcn.0057eb20
add esp, 0x34
jmp 0x5825ac
fldz
mov eax, 5
fstp dword [esi + 0xe4]
mov edi, dword [ebp + 0x7c]
push 7
push 0x6565e8
push eax
push edi
mov dword [ebp + 0x2c], eax
call fcn.00587750
push edi
call fcn.00593090
add esp, 0x14
mov dword [ebp + 0x58], eax
mov eax, dword [ebp - 0x68]
test eax, eax
jle 0x582823
mov ecx, dword [ebp + 0x3c]
mov edi, dword [ecx + 0x24]
mov ecx, dword [ebp - 0x14]
sub edi, dword [ebp + 0x48]
mov edx, 0x4fb
sar edx, cl
mov dword [ebp + 0x50], edi
cmp dword [ebp + 0x78], edx
jl 0x5825f5
mov dword [ebp + 0x78], edx
cmp dword [ebp - 0x1c], 0
jne 0x58260a
lea edx, [ebx + ebx*4]
shl edx, 6
sub eax, edx
sub eax, 0xa0
jmp 0x582622
lea ecx, [ebx + ebx*8]
add ecx, ecx
add ecx, ecx
add ecx, ecx
sub eax, ecx
add eax, 0xffffffe0
xor edx, edx
test eax, eax
setl dl
dec edx
and eax, edx
mov edx, dword [esi + 0x34]
test edx, edx
je 0x582635
mov ecx, edi
mov edi, dword [esi + 0xd8]
sar edi, cl
add eax, edi
cmp dword [ebp - 0x1c], 0
jne 0x5826a6
fld dword [ebp - 0x30]
sub esp, 8
fstp dword [esp + 4]
xor ecx, ecx
cmp dword [esi + 0xec], ecx
fld dword [ebp - 0x64]
fstp dword [esp]
fld dword [ebp - 0x38]
setne cl
push ecx
mov ecx, dword [esi + 0x40]
push ecx
push ecx
mov ecx, dword [ebp - 0x88]
fstp dword [esp]
fld dword [ebp - 0x5c]
push ecx
push ecx
mov ecx, dword [ebp - 0x40]
fstp dword [esp]
fld dword [esi + 0xe4]
push ecx
push ecx
mov ecx, dword [ebp - 0x60]
fstp dword [esp]
push edx
mov edx, dword [esi + 0xe8]
push edx
mov edx, dword [ebp + 0x48]
push ebx
push ecx
mov ecx, dword [esi + 0x5c]
push edx
push eax
lea eax, [esi + 0x78]
push eax
mov eax, dword [ebp + 0x3c]
call fcn.00580880
add esp, 0x40
mov edi, eax
jmp 0x582702
mov edx, dword [esi + 0xbc]
cmp edx, 0x64
mov edi, eax
jge 0x5826c2
mov ecx, dword [ebp - 0x14]
mov edi, 0x60
sar edi, cl
add edi, eax
cmp edx, 0x64
jle 0x5826d0
mov ecx, dword [ebp - 0x14]
mov eax, 0x90
sar eax, cl
sub edi, eax
fld dword [ebp - 0x5c]
fld dword [0x656778]
fsubr st(1)
fmul dword [0x6567ec]
call fcn.005c52f0
fcomp dword [0x6567c4]
add edi, eax
fnstsw ax
test ah, 0x41
jne 0x582702
cmp edi, 0x190
jg 0x582702
mov edi, 0x190
mov eax, dword [ebp + 0x58]
mov ecx, dword [ebp + 0x40]
add edi, eax
lea eax, [ecx + eax + 0x3f]
sar eax, 6
add eax, 2
cmp dword [ebp - 0x1c], 0
je 0x58272d
mov edx, dword [ebp - 0x80]
lea ecx, [ecx + edx + 0x167]
sar ecx, 6
cmp eax, ecx
jg 0x58272d
mov eax, ecx
lea ebx, [edi + 0x20]
sar ebx, 6
cmp eax, ebx
jle 0x582739
mov ebx, eax
mov ecx, dword [ebp + 0x78]
cmp ecx, ebx
jge 0x582742
mov ebx, ecx
sub edi, dword [ebp - 0x68]
mov eax, ebx
shl eax, 6
cmp dword [ebp - 0x6c], 0
mov edx, edi
je 0x58275c
mov ebx, 2
lea eax, [ebx + 0x7e]
xor edx, edx
mov edi, dword [esi + 0xdc]
cmp edi, 0x3ca
jge 0x582780
inc edi
mov dword [esi + 0xdc], edi
add edi, 0x14
mov dword [ebp - 0x40], edi
fild dword [ebp - 0x40]
fld1
fdivrp st(1)
jmp 0x582786
fld dword [0x6567e8]
mov edi, dword [esi + 0x34]
test edi, edi
je 0x5827d5
sub eax, dword [ebp - 0x68]
add dword [esi + 0xd0], eax
test edi, edi
je 0x5827d5
mov ecx, dword [ebp + 0x50]
mov edi, dword [esi + 0xd4]
mov eax, 1
shl eax, cl
imul eax, edx
sub eax, edi
sub eax, dword [esi + 0xd8]
mov dword [ebp - 0x40], eax
fimul dword [ebp - 0x40]
call fcn.005c52f0
mov ecx, dword [ebp + 0x78]
add eax, edi
mov dword [esi + 0xd4], eax
neg eax
mov dword [esi + 0xd8], eax
jmp 0x5827d7
fstp st(0)
cmp dword [esi + 0x34], 0
je 0x582809
mov eax, dword [esi + 0xd0]
test eax, eax
jge 0x582809
cdq
and edx, 0x3f
add eax, edx
mov edx, dword [ebp - 0x6c]
sar eax, 6
neg eax
neg edx
sbb edx, edx
not edx
and edx, eax
add ebx, edx
mov dword [esi + 0xd0], 0
cmp ecx, ebx
jl 0x582810
mov dword [ebp + 0x78], ebx
mov eax, dword [ebp + 0x78]
mov ecx, dword [ebp + 0x7c]
push eax
push ecx
call fcn.005878b0
mov ebx, dword [ebp + 0x38]
add esp, 8
mov edi, dword [ebp + 0x28]
add edi, edi
add edi, edi
mov eax, edi
call fcn.005c2560
mov eax, edi
mov dword [ebp + 0x24], esp
call fcn.005c2560
mov eax, edi
mov dword [ebp - 0x80], esp
call fcn.005c2560
mov edx, dword [ebp + 0x7c]
mov edi, dword [ebp + 0x78]
mov dword [ebp - 0x24], esp
push edx
shl edi, 6
call fcn.00593090
mov ecx, eax
mov eax, edi
sub eax, ecx
add esp, 4
dec eax
cmp dword [ebp + 4], 0
je 0x582881
mov ecx, dword [ebp + 0x48]
cmp ecx, 2
jl 0x582881
lea edx, [ecx*8 + 0x10]
cmp eax, edx
jl 0x582881
mov ecx, 8
jmp 0x582883
xor ecx, ecx
sub eax, ecx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0x54]
dec ecx
cmp dword [esi + 0x78], 0
je 0x5828eb
mov ecx, dword [ebp - 0x60]
mov edx, ebx
imul edx, edx, 0x7d00
cmp ecx, edx
jge 0x5828a8
mov ecx, 0xd
jmp 0x5828df
mov edx, ebx
imul edx, edx, 0xbb80
cmp ecx, edx
jge 0x5828bb
mov ecx, 0x10
jmp 0x5828df
mov edx, ebx
imul edx, edx, 0xea60
cmp ecx, edx
jge 0x5828ce
mov ecx, 0x12
jmp 0x5828df
imul ebx, ebx, 0x13880
xor ecx, ecx
cmp dword [ebp - 0x60], ebx
setge cl
add ecx, 0x13
mov edx, dword [esi + 0x98]
cmp edx, ecx
jle 0x5828eb
mov ecx, edx
cmp dword [esi + 0x40], 0
je 0x5828f6
mov ecx, 1
mov edx, dword [ebp + 0x7c]
push ecx
mov ecx, dword [esi + 0x5c]
push ecx
mov ecx, dword [ebp + 0x48]
push 1
push edx
mov edx, dword [ebp + 0x38]
push ecx
mov ecx, dword [ebp - 0x24]
push edx
mov edx, dword [ebp + 0x24]
push ecx
mov ecx, dword [ebp - 0x80]
push edx
push ecx
mov ecx, dword [ebp + 0x2c]
lea edx, [ebp - 0x98]
push edx
mov edx, dword [ebp + 0x44]
push eax
lea eax, [ebp - 0x90]
push eax
mov eax, dword [ebp + 0x34]
lea ebx, [esi + 0xe8]
push ebx
push ecx
mov ecx, dword [ebp + 0x54]
push edx
mov edx, dword [ebp + 0x30]
push eax
mov eax, dword [ebp + 0x3c]
push ecx
push edx
push eax
call fcn.00592c30
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x5c]
add esp, 0x4c
test eax, eax
je 0x582971
mov edx, dword [ebp - 0x30]
lea ecx, [eax - 1]
cmp ecx, edx
jle 0x582961
mov edx, ecx
inc eax
cmp eax, edx
jl 0x58296d
mov eax, dword [ebp - 0x30]
cmp ecx, eax
jg 0x582974
mov ecx, eax
jmp 0x582974
mov ecx, dword [ebp - 0x30]
mov edx, dword [ebp + 0x38]
mov eax, dword [ebp + 0x7c]
push edx
mov edx, dword [ebp + 0x14]
push eax
mov eax, dword [ebp + 8]
mov dword [esi + 0x5c], ecx
mov ecx, dword [ebp + 0x24]
push ecx
mov ecx, dword [ebp + 0x54]
push edx
mov edx, dword [ebp + 0x30]
push eax
mov eax, dword [ebp + 0x3c]
push ecx
push edx
push eax
call fcn.00590e50
mov eax, dword [ebp - 0x3c]
add esp, 0x20
call fcn.005c2560
cmp dword [ebp + 0x38], 2
mov ecx, esp
jne 0x5829c0
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x28]
lea edx, [edx + eax*4]
mov dword [ebp - 0x88], edx
jmp 0x5829ca
mov dword [ebp - 0x88], 0
mov edx, dword [esi + 0x44]
push edx
mov edx, dword [esi + 0x48]
push edx
mov edx, dword [esi + 0x18]
push edx
mov edx, dword [ebp + 0x48]
sub edi, dword [ebp - 0x14]
lea eax, [esi + 0x4c]
push eax
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x30]
push eax
mov eax, dword [ebp + 0x7c]
push edx
mov edx, dword [ebp - 0x98]
push eax
mov eax, dword [ebp - 0x70]
push edx
mov edx, dword [ebx]
push edi
push eax
mov eax, dword [ebp - 0x90]
push edx
mov edx, dword [esi + 0x50]
push eax
mov eax, dword [ebp + 0x18]
push edx
mov edx, dword [ebp - 0x80]
push eax
mov eax, dword [ebp]
push edx
mov edx, dword [ebp - 8]
push eax
mov eax, dword [ebp + 0x54]
push ecx
mov ecx, dword [ebp - 0x88]
push ecx
mov ecx, dword [ebp + 0x30]
push edx
mov edx, dword [ebp + 0x3c]
push eax
push ecx
push edx
push 1
call fcn.0058fc20
mov edi, dword [ebp + 0x7c]
add esp, 0x5c
cmp dword [ebp - 0x14], 0
jle 0x582a52
xor eax, eax
cmp dword [esi + 0x74], 2
push 1
setl al
push eax
push edi
call fcn.005877b0
add esp, 0xc
bsr ecx, dword [edi + 0x1c]
mov eax, dword [ebp + 0x78]
mov edx, dword [ebp + 0x38]
mov ebx, dword [ebp + 0x30]
push edx
mov dword [ebp - 0x40], ecx
mov edx, dword [ebp - 0x40]
lea ecx, [eax*8]
sub ecx, dword [edi + 0x14]
push edi
lea eax, [ecx + edx + 1]
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp + 0x24]
push eax
mov eax, dword [ebp + 0x14]
push ecx
mov ecx, dword [ebp + 8]
push edx
mov edx, dword [ebp + 0x54]
push eax
mov eax, dword [ebp + 0x3c]
push ecx
push edx
push ebx
push eax
call fcn.00590f80
mov ecx, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x7c]
push ecx
push 0
push edi
call fcn.005bfd50
mov edx, dword [ebp + 0x14]
fld dword [0x6567e4]
fld dword [0x680850]
add esp, 0x34
xor eax, eax
mov dword [ebp + 0x58], eax
mov dword [ebp - 0x14], eax
lea eax, [edx + ebx*4 + 4]
lea ecx, [edi + ebx*4 + 8]
mov dword [ebp + 0x24], eax
mov dword [ebp + 0x2c], ecx
mov eax, dword [ebp + 0x54]
cmp ebx, eax
mov dword [ebp + 0x4c], ebx
jge 0x582c1c
sub eax, ebx
cmp eax, 4
jl 0x582bcd
mov ecx, dword [ebp + 0x54]
mov eax, dword [ebp - 0x7c]
sub eax, dword [ebp + 0x14]
mov edi, dword [ebp + 0x2c]
mov edx, dword [ebp + 0x24]
sub ecx, ebx
sub ecx, 4
shr ecx, 2
inc ecx
mov dword [ebp - 0x40], eax
lea eax, [ebx + ecx*4]
mov dword [ebp + 0x4c], eax
fcom dword [edx - 4]
fnstsw ax
test ah, 5
jnp 0x582b22
fld dword [edx - 4]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x582b22
fld st(1)
jmp 0x582b33
fcom dword [edx - 4]
fnstsw ax
test ah, 5
jp 0x582b30
fld st(0)
jmp 0x582b33
fld dword [edx - 4]
fstp dword [edi - 8]
fcom dword [edx]
fnstsw ax
test ah, 5
jnp 0x582b4e
fld dword [edx]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x582b4e
fld st(1)
jmp 0x582b5d
fcom dword [edx]
fnstsw ax
test ah, 5
jp 0x582b5b
fld st(0)
jmp 0x582b5d
fld dword [edx]
mov eax, dword [ebp - 0x40]
fstp dword [eax + edx]
fcom dword [edx + 4]
fnstsw ax
test ah, 5
jnp 0x582b7d
fld dword [edx + 4]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x582b7d
fld st(1)
jmp 0x582b8e
fcom dword [edx + 4]
fnstsw ax
test ah, 5
jp 0x582b8b
fld st(0)
jmp 0x582b8e
fld dword [edx + 4]
fstp dword [edi]
fcom dword [edx + 8]
fnstsw ax
test ah, 5
jnp 0x582baa
fld dword [edx + 8]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x582baa
fld st(1)
jmp 0x582bbb
fcom dword [edx + 8]
fnstsw ax
test ah, 5
jp 0x582bb8
fld st(0)
jmp 0x582bbb
fld dword [edx + 8]
fstp dword [edi + 4]
add edx, 0x10
add edi, 0x10
sub ecx, 1
jne 0x582b08
mov eax, dword [ebp + 0x4c]
mov edx, dword [ebp + 0x54]
cmp eax, edx
jge 0x582c1c
mov ecx, dword [ebp - 0x14]
mov edi, dword [ebp + 0x14]
add ecx, eax
lea ecx, [edi + ecx*4]
mov edi, dword [ebp - 0x7c]
sub edi, dword [ebp + 0x14]
sub edx, eax
fcom dword [ecx]
fnstsw ax
test ah, 5
jnp 0x582c02
fld dword [ecx]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x582c02
fld st(1)
jmp 0x582c11
fcom dword [ecx]
fnstsw ax
test ah, 5
jp 0x582c0f
fld st(0)
jmp 0x582c11
fld dword [ecx]
fstp dword [edi + ecx]
add ecx, 4
sub edx, 1
jne 0x582bea
mov eax, dword [ebp + 0x28]
add dword [ebp - 0x14], eax
mov ecx, dword [ebp + 0x58]
add eax, eax
add eax, eax
add dword [ebp + 0x2c], eax
add dword [ebp + 0x24], eax
inc ecx
cmp ecx, dword [ebp + 0x38]
mov dword [ebp + 0x58], ecx
jl 0x582ace
cmp dword [ebp - 0x6c], 0
fstp st(0)
fstp st(0)
je 0x582c59
cmp dword [ebp - 0x3c], 0
jle 0x582c59
mov ecx, dword [ebp - 0x3c]
mov edi, dword [ebp + 8]
mov eax, 0xc1e00000
rep stosd dword es:[edi], eax
cmp dword [ebp - 4], 2
fld dword [ebp - 0x58]
mov edx, dword [ebp - 0x78]
fstp dword [esi + 0x6c]
mov eax, dword [ebp + 0xc]
mov dword [esi + 0x68], edx
mov dword [esi + 0x70], eax
jne 0x582c8e
cmp dword [ebp + 0x38], 1
jne 0x582c8e
mov ecx, dword [ebp + 0x28]
mov eax, dword [ebp + 8]
add ecx, ecx
add ecx, ecx
push ecx
push eax
add ecx, eax
push ecx
call fcn.005bfdd0
add esp, 0xc
cmp dword [ebp + 4], 0
jne 0x582cc4
mov ecx, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x50]
push ecx
push edi
push ebx
call fcn.005bfdd0
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp + 8]
push edx
push eax
push edi
call fcn.005bfdd0
add esp, 0x18
jmp 0x582da3
mov ebx, dword [ebp - 0x9c]
xor eax, eax
cmp ebx, 4
jl 0x582d6f
mov eax, dword [ebp + 8]
mov edx, dword [ebp - 0x84]
lea edi, [eax + 0xc]
sub eax, edx
lea ecx, [edx + 4]
lea edx, [ebx - 4]
shr edx, 2
inc edx
mov dword [ebp + 0xc], eax
lea eax, [edx*4]
mov dword [ebp + 0x4c], eax
lea ebx, [ebx]
fld dword [edi - 0xc]
fcomp dword [ecx - 4]
fnstsw ax
test ah, 0x41
jne 0x582d12
fld dword [ecx - 4]
jmp 0x582d15
fld dword [edi - 0xc]
mov eax, dword [ebp + 0xc]
fstp dword [ecx - 4]
fld dword [eax + ecx]
fcomp dword [ecx]
fnstsw ax
test ah, 0x41
jne 0x582d2b
fld dword [ecx]
jmp 0x582d31
mov eax, dword [ebp + 0xc]
fld dword [eax + ecx]
fstp dword [ecx]
fld dword [edi - 4]
fcomp dword [ecx + 4]
fnstsw ax
test ah, 0x41
jne 0x582d45
fld dword [ecx + 4]
jmp 0x582d48
fld dword [edi - 4]
fstp dword [ecx + 4]
fld dword [edi]
fcomp dword [ecx + 8]
fnstsw ax
test ah, 0x41
jne 0x582d5c
fld dword [ecx + 8]
jmp 0x582d5e
fld dword [edi]
fstp dword [ecx + 8]
add ecx, 0x10
add edi, 0x10
sub edx, 1
jne 0x582d00
mov eax, dword [ebp + 0x4c]
cmp eax, ebx
jge 0x582da0
mov edi, dword [ebp - 0x84]
mov edx, dword [ebp + 8]
sub edx, edi
lea ecx, [edi + eax*4]
sub ebx, eax
fld dword [ecx + edx]
fcomp dword [ecx]
fnstsw ax
test ah, 0x41
jne 0x582d93
fld dword [ecx]
jmp 0x582d96
fld dword [ecx + edx]
fstp dword [ecx]
add ecx, 4
sub ebx, 1
jne 0x582d83
mov ebx, dword [ebp - 0x50]
mov eax, dword [ebp + 0x54]
fld dword [0x6567e0]
fldz
add eax, eax
add eax, eax
add eax, ebx
mov dword [ebp + 0x58], 0
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x58], eax
mov edi, dword [ebp + 0x30]
test edi, edi
jle 0x582dee
mov ecx, dword [ebp + 8]
mov edx, dword [ebp - 0x84]
mov eax, dword [ebp - 0x50]
sub ecx, ebx
sub edx, ebx
fst dword [ecx + eax]
add eax, 4
sub edi, 1
fxch st(1)
fst dword [eax - 4]
fst dword [edx + eax - 4]
fxch st(1)
jne 0x582dd8
mov ecx, dword [ebp + 0x28]
cmp dword [ebp + 0x54], ecx
jge 0x582e1f
mov edx, dword [ebp + 8]
mov edi, dword [ebp - 0x84]
mov eax, dword [ebp - 0x58]
sub edx, ebx
sub edi, ebx
sub ecx, dword [ebp + 0x54]
fst dword [edx + eax]
add eax, 4
sub ecx, 1
fxch st(1)
fst dword [eax - 4]
fst dword [edi + eax - 4]
fxch st(1)
jne 0x582e09
mov eax, dword [ebp + 0x28]
mov ecx, dword [ebp + 0x58]
add eax, eax
add eax, eax
add dword [ebp - 0x50], eax
add dword [ebp - 0x58], eax
inc ecx
cmp ecx, dword [ebp - 4]
mov dword [ebp + 0x58], ecx
jl 0x582dc1
cmp dword [ebp + 4], 0
fstp st(1)
fstp st(0)
jne 0x582e54
cmp dword [ebp - 0x94], 0
jne 0x582e54
mov dword [esi + 0x74], 0
jmp 0x582e57
inc dword [esi + 0x74]
mov esi, dword [ebp + 0x7c]
mov edx, dword [esi + 0x1c]
mov eax, dword [ebp - 0x44]
push esi
mov dword [eax], edx
call fcn.005878e0
add esp, 4
cmp dword [esi + 0x2c], 0
je 0x582e78
mov eax, 0xfffffffd
jmp 0x582e80
mov eax, dword [ebp + 0x78]
jmp 0x582e80
or eax, 0xffffffff
lea esp, [ebp - 0xd8]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x5c]
xor ecx, ebp
call fcn.005bfcb8
add ebp, 0x60
mov esp, ebp
pop ebp
ret