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

Disassembly:
push ebp
lea ebp, [esp - 0x60]
sub esp, 0x12c
mov eax, dword [0x64786c]
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 0x56f59d
cmp dword [ebp + 0x6c], 0
je 0x56f59d
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 0x56f59d
mov edx, dword [ebx + 0x2c]
mov ecx, edi
shl edx, cl
cmp edx, dword [ebp + 0x70]
je 0x56d344
inc edi
cmp edi, dword [ebx + 0x24]
jle 0x56d332
cmp edi, dword [ebx + 0x24]
mov dword [ebp + 0x48], edi
jg 0x56f59d
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 0x56d3cc
mov edx, 1
mov dword [ebp + 0x58], edx
mov dword [ebp - 0x80], edx
mov dword [ebp + 0x18], 0
jmp 0x56d3fa
mov eax, dword [ebp + 0x7c]
push eax
call fcn.0057f6d0
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 0x56d40d
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 0x56d440
mov eax, dword [esi + 0x28]
cmp eax, 0xffffffff
je 0x56d440
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 0x56d499
mov eax, dword [esi + 0x28]
imul eax, dword [ebp + 0x70]
cmp edx, 1
mov dword [ebp - 0x68], 0
jle 0x56d455
add eax, edx
cmp dword [esi + 0x28], 0xffffffff
je 0x56d493
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 0x56d47e
mov edx, eax
cmp edx, 2
jge 0x56d48a
mov ecx, 2
jmp 0x56d490
cmp ecx, eax
jl 0x56d493
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 0x56d4e1
mov ecx, dword [esi + 0x28]
sub ecx, eax
cmp edx, ecx
jl 0x56d4e1
mov dword [ebp - 0x60], ecx
cmp dword [ebp + 0x7c], 0
mov edi, dword [ebp + 0x78]
jne 0x56d507
mov eax, dword [ebp + 0x74]
push edi
push eax
lea ecx, [ebp - 0xcc]
push ecx
call fcn.00573c70
lea edx, [ebp - 0xcc]
add esp, 0xc
mov dword [ebp + 0x7c], edx
mov eax, dword [ebp - 0x68]
test eax, eax
jle 0x56d55f
cmp dword [esi + 0x34], 0
je 0x56d55f
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 0x56d536
mov edx, ecx
cmp edx, dword [ebp - 0x4c]
jge 0x56d55f
cmp eax, ecx
jg 0x56d541
mov eax, ecx
cmp eax, dword [ebp - 0x4c]
jge 0x56d55f
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.00573ef0
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 0x56d57c
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.00599900
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.005698f0
fcom dword [esi + 0xe0]
add esp, 4
fnstsw ax
test ah, 5
jp 0x56d5ca
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.005698f0
fst dword [esi + 0xe0]
fld dword [ebp + 0x40]
add esp, 4
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x56d602
fstp st(0)
fst dword [ebp + 0x40]
jmp 0x56d604
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 0x56d628
mov edi, 1
jmp 0x56d62a
xor edi, edi
cmp dword [ebp + 0x58], 1
mov dword [ebp - 0x6c], edi
jne 0x56d681
mov ecx, dword [ebp + 0x7c]
push 0xf
push edi
push ecx
call fcn.00573d60
add esp, 0xc
test edi, edi
je 0x56d6a3
cmp dword [ebp - 0x68], 0
jle 0x56d68a
mov ecx, dword [ebp + 0x18]
mov eax, dword [ebp + 0x78]
add ecx, 2
cmp eax, ecx
jl 0x56d65e
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.00573ef0
add esp, 8
jmp 0x56d68d
mov dword [ebp - 0x6c], 0
jmp 0x56d6a3
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 0x56d6e0
fld dword [0x603f04]
fcomp dword [ebp + 0x40]
fnstsw ax
test ah, 5
jp 0x56d6e0
mov eax, 1
jmp 0x56d6e2
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.0056a660
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 0x56d6c3
cmp dword [esi + 0x40], 0
mov edx, dword [ebp - 0x4c]
je 0x56d72c
cmp edx, 3
jg 0x56d73a
mov eax, dword [ebp + 0x38]
lea eax, [eax + eax*2]
add eax, eax
add eax, eax
cmp edx, eax
jle 0x56d759
cmp dword [ebp - 0x1c], 0
jne 0x56d759
cmp dword [ebp - 0x6c], 0
jne 0x56d759
cmp dword [esi + 0x14], 0
jne 0x56d759
cmp dword [esi + 0x18], 5
jl 0x56d759
mov ecx, 1
jmp 0x56d75b
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.0056cb50
fld dword [0x603f60]
fcom dword [ebp - 0x58]
mov ecx, eax
add esp, 0x2c
mov dword [ebp - 0x44], ecx
fnstsw ax
test ah, 5
jnp 0x56d7ad
fcomp dword [esi + 0x6c]
fnstsw ax
test ah, 5
jp 0x56d7fa
jmp 0x56d7af
fstp st(0)
cmp dword [edi], 0
je 0x56d7c4
fld dword [esi + 0x7c]
fcomp qword [0x631838]
fnstsw ax
test ah, 0x41
jne 0x56d7fa
fild dword [ebp - 0x78]
fild dword [esi + 0x68]
fld qword [0x603fb0]
fmul st(1)
fcomp st(2)
fnstsw ax
test ah, 5
jnp 0x56d7ec
fmul qword [0x603fa8]
fcompp
fnstsw ax
test ah, 0x41
jne 0x56d7fa
jmp 0x56d7f0
fstp st(1)
fstp st(0)
mov dword [ebp - 0x88], 1
test ecx, ecx
jne 0x56d823
cmp dword [ebp - 0x1c], ecx
jne 0x56d88a
mov eax, dword [ebp + 0x58]
add eax, 0x10
cmp eax, dword [ebp - 0x20]
jg 0x56d88a
push 1
push ecx
mov ecx, dword [ebp + 0x7c]
push ecx
call fcn.00573d60
add esp, 0xc
jmp 0x56d88a
mov edx, dword [ebp + 0x7c]
push 1
push 1
push edx
call fcn.00573d60
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.00574060
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.00573df0
mov edx, dword [ebp + 0x1c]
push 3
push edx
dec edi
push ebx
mov dword [ebp - 0x78], edi
call fcn.00573df0
mov eax, dword [ebp + 0xc]
push 2
push 0x603d98
push eax
push ebx
call fcn.00573d90
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 0x56d8e1
cmp dword [esi + 0x40], ebx
jne 0x56d8e1
cmp dword [ebp - 0x1c], ebx
je 0x56d8bb
cmp dword [ebp - 0x48], 0xf
jge 0x56d8bb
cmp dword [esi + 0xb8], 2
je 0x56d8bb
mov eax, edi
jmp 0x56d8bd
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.005699f0
add esp, 0x1c
mov dword [ebp + 4], eax
cmp dword [ebp + 0x48], 0
jle 0x56d90a
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 0x56d90a
test eax, eax
je 0x56d917
mov ebx, dword [ebp - 0x34]
mov dword [ebp + 0x18], ebx
jmp 0x56d917
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.00599900
mov edi, dword [ebp - 0x8c]
mov eax, edi
mov dword [ebp - 0x38], esp
call fcn.00599900
mov eax, edi
mov dword [ebp], esp
call fcn.00599900
mov dword [ebp + 0x10], esp
test ebx, ebx
je 0x56d955
cmp dword [esi + 0x18], 8
mov dword [ebp + 0x24], 1
jge 0x56d95c
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.00599900
cmp dword [ebp + 0x24], 0
mov dword [ebp + 0x14], esp
je 0x56da4d
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.0056a410
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.00579a70
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.0057da00
add esp, 0x54
xor ecx, ecx
cmp ebx, 4
jl 0x56da2d
mov eax, dword [ebp + 0x14]
fild dword [ebp + 0x48]
lea edx, [ebx - 4]
shr edx, 2
fmul dword [0x631728]
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 0x56da03
fstp st(0)
cmp ecx, ebx
jge 0x56da4d
fild dword [ebp + 0x48]
mov eax, dword [ebp + 0x14]
fmul dword [0x631728]
fld dword [eax + ecx*4]
inc ecx
cmp ecx, ebx
fadd st(1)
fstp dword [eax + ecx*4 - 4]
jl 0x56da3d
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.0056a410
add esp, 0x20
cmp ebx, 2
jne 0x56da86
cmp edi, 1
jne 0x56da86
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.00579a70
add esp, 0x1c
cmp dword [esi + 0x40], 0
je 0x56dbd7
mov edx, 2
cmp dword [ebp + 0x54], edx
jle 0x56dbd7
mov ecx, dword [ebp + 0x54]
fld dword [0x603fa0]
fld dword [0x603d24]
add ecx, 0xfffffffe
cmp ecx, 4
jl 0x56db9d
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 0x56db07
fstp st(0)
fld dword [ecx - 8]
fst dword [ecx - 8]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x56db17
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 0x56db30
fstp st(0)
fld dword [ecx - 4]
fst dword [ecx - 4]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x56db40
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 0x56db57
fstp st(0)
fld dword [ecx]
fst dword [ecx]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x56db66
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 0x56db7e
fstp st(0)
fld dword [ecx + 4]
fst dword [ecx + 4]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x56db8e
fstp st(0)
fld st(0)
fstp dword [ecx + 4]
add ecx, 0x10
sub ebx, 1
jne 0x56daf1
cmp edx, dword [ebp + 0x54]
jge 0x56dbd3
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 0x56dbbb
fstp st(0)
fld dword [ecx + edx*4]
fst dword [ecx + edx*4]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x56dbcb
fstp st(0)
fld st(0)
fstp dword [ecx + edx*4]
inc edx
cmp edx, ebx
jl 0x56dba8
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.0057da00
mov eax, dword [ebp - 0x3c]
add eax, eax
add esp, 0x18
add eax, eax
call fcn.00599900
mov ecx, esp
lea eax, [ebx*4]
push eax
push 0
push ecx
mov dword [ebp - 0xc], ecx
call fcn.00597130
fld dword [0x603f18]
add esp, 0xc
cmp dword [ebp - 0x1c], 0
jne 0x56e28c
mov ecx, dword [esi + 0xec]
mov dword [ebp - 0x54], ecx
test ecx, ecx
je 0x56e28c
cmp dword [esi + 0x40], 0
jne 0x56e28c
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 0x56dc61
mov eax, 2
cmp edi, edx
mov dword [ebp + 0x58], eax
jle 0x56dec1
mov dword [ebp - 0x2c], edx
mov dword [ebp - 0x18], ecx
mov dword [ebp + 0x44], edi
jmp 0x56dc79
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 0x56ddd6
mov edx, dword [ebp + 0x58]
fstp st(4)
mov ecx, dword [ebp - 0x74]
fstp st(4)
mov edi, dword [ebp - 0x18]
fld dword [0x603d40]
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 0x56dcd0
fld dword [0x603d40]
fxch st(1)
fxch st(6)
fxch st(1)
fxch st(6)
fcom dword [edi]
fnstsw ax
test ah, 0x41
jne 0x56dd06
fxch st(6)
fcom dword [edi]
fnstsw ax
test ah, 5
jp 0x56dd2a
fstp st(0)
fxch st(5)
fcom dword [edi]
fnstsw ax
test ah, 0x41
jne 0x56dd18
fld dword [edi]
fcom st(5)
fnstsw ax
test ah, 0x41
jne 0x56dd30
fmul dword [0x631728]
jmp 0x56dd30
fstp st(6)
fld st(5)
fxch st(1)
fxch st(6)
fxch st(1)
fmul dword [0x631728]
jmp 0x56dd30
fxch st(5)
fld st(5)
fxch st(1)
fxch st(6)
fxch st(1)
fmul dword [0x631728]
jmp 0x56dd30
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 0x56dd6f
fld dword [edi + 4]
fcomp dword [0x603d40]
fnstsw ax
test ah, 0x41
jne 0x56de5e
fcom dword [edi + 4]
fnstsw ax
test ah, 0x41
jne 0x56de57
fld dword [edi + 4]
fcom st(5)
fnstsw ax
test ah, 0x41
jne 0x56dd8f
fmul dword [0x631728]
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 0x56dcc4
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 0x56de75
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 0x56de0e
fld dword [edx]
fcomp dword [0x603d40]
fnstsw ax
test ah, 0x41
jne 0x56de6d
fcom dword [edx]
fnstsw ax
test ah, 0x41
jne 0x56de69
fld dword [edx]
fcom st(5)
fnstsw ax
test ah, 0x41
jne 0x56de28
fmul dword [0x631728]
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 0x56de81
fld st(0)
jmp 0x56dd89
fld dword [0x603d40]
jmp 0x56dd8f
fld st(0)
jmp 0x56de22
fld dword [0x603d40]
jmp 0x56de28
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 0x56dc77
mov edi, dword [ebp + 0x38]
mov eax, dword [ebp + 0x58]
jmp 0x56dec3
fxch st(1)
fidiv dword [ebp + 0x34]
lea edx, [eax - 1]
lea ecx, [eax + 1]
fadd dword [0x603d3c]
imul edx, ecx
fxch st(1)
fmul dword [0x63168c]
imul edx, eax
imul edx, edi
mov dword [ebp + 0x50], edx
fidiv dword [ebp + 0x50]
fmul dword [0x631728]
fld dword [0x603f9c]
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x56df13
fstp st(0)
fld dword [0x603f98]
fcom st(1)
fnstsw ax
test ah, 5
jp 0x56df13
fstp st(0)
jmp 0x56df15
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 0x56df43
movsx edx, word [ecx + 2]
add ecx, 2
inc ebx
cmp edx, eax
jl 0x56df34
mov dword [ebp - 0x2c], ebx
xor ecx, ecx
cmp dword [ebp + 0x58], 4
mov dword [ebp + 0x4c], ecx
jl 0x56e0f9
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 0x56dfae
mov eax, dword [ebp + 0x34]
fld dword [eax]
fcomp dword [edx - 4]
fnstsw ax
test ah, 5
jnp 0x56dfae
mov eax, dword [ebp + 0x34]
fld dword [eax]
jmp 0x56dfb1
fld dword [edx - 4]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x56dfbe
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x56dfd6
mov eax, dword [ebp + 0x40]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax - 0xc]
jmp 0x56dfd8
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 0x56e001
mov eax, dword [ebp + 0x34]
fld dword [eax + 4]
fcomp dword [edx]
fnstsw ax
test ah, 5
jnp 0x56e001
mov eax, dword [ebp + 0x34]
fld dword [eax + 4]
jmp 0x56e003
fld dword [edx]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x56e010
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x56e028
mov eax, dword [ebp + 0x1c]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax + edx]
jmp 0x56e02a
fstp st(0)
fild dword [ebp - 0x18]
fmul st(1)
fadd st(2)
cmp edi, 2
jne 0x56e053
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 0x56e07b
mov ebx, dword [ebp - 0x18]
fld dword [edx + 4]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x56e063
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x56e082
mov eax, dword [ebp + 0x40]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax - 4]
jmp 0x56e084
fld dword [ebx]
mov ebx, dword [ebp - 0x18]
jmp 0x56e056
fstp st(0)
inc ebx
mov dword [ebp + 0x44], ebx
fild dword [ebp + 0x44]
fmul st(1)
fadd st(2)
cmp edi, 2
jne 0x56e0b2
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 0x56e0b2
fld dword [ebx]
jmp 0x56e0b5
fld dword [edx + 8]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x56e0c2
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x56e0d9
mov eax, dword [ebp + 0x40]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax]
jmp 0x56e0db
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 0x56df7d
cmp ecx, dword [ebp + 0x58]
jge 0x56e182
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 0x56e14a
fld dword [ecx]
fcomp dword [edi]
fnstsw ax
test ah, 5
jnp 0x56e14a
fld dword [ecx]
jmp 0x56e14c
fld dword [edi]
fcom st(4)
fnstsw ax
test ah, 5
jnp 0x56e159
fstp st(0)
fld st(3)
fsubrp st(1)
fcom st(4)
fnstsw ax
test ah, 0x41
jne 0x56e171
mov eax, dword [ebp + 0x1c]
fsub st(4)
inc dword [ebp + 0x4c]
fstp dword [eax + edi]
jmp 0x56e173
fstp st(0)
inc edx
add ecx, 4
add edi, 4
sub ebx, 1
mov dword [ebp + 0x44], edx
jne 0x56e12e
cmp dword [ebp + 0x4c], 3
jl 0x56e288
fxch st(1)
fadd st(3)
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x56e1cd
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.00597130
fld dword [ebp + 0x40]
fld dword [ebp + 0x20]
add esp, 0xc
fldz
fxch st(1)
jmp 0x56e26a
mov ebx, dword [ebp + 0x58]
xor edi, edi
cmp ebx, 4
jl 0x56e245
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 0x56e1fd
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 0x56e212
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 0x56e226
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 0x56e23a
fstp st(0)
fld st(2)
fstp dword [ecx + 4]
add ecx, 0x10
sub edx, 1
jne 0x56e1eb
cmp edi, ebx
jge 0x56e266
mov ecx, dword [ebp - 0xc]
fld dword [ecx + edi*4]
fsub st(4)
fcom st(3)
fnstsw ax
test ah, 5
jp 0x56e25e
fstp st(0)
fld st(2)
fstp dword [ecx + edi*4]
inc edi
cmp edi, ebx
jl 0x56e249
fstp st(3)
fxch st(2)
mov edi, dword [ebp + 0x38]
fxch st(2)
fmul dword [0x603ef0]
mov ebx, dword [ebp + 0x54]
fstp dword [ebp - 0x2c]
fxch st(1)
fadd dword [0x603d3c]
fstp dword [ebp - 0x64]
jmp 0x56e290
fstp st(3)
jmp 0x56e26a
fstp st(0)
fldz
cmp dword [esi + 0x40], 0
jne 0x56e420
cmp dword [ebp + 0x18], 0
fld dword [0x603f94]
fld st(1)
je 0x56e2b3
fild dword [ebp + 0x48]
fmul dword [0x631728]
jmp 0x56e2b5
fld st(2)
mov edx, dword [ebp + 0x30]
fld st(3)
cmp edx, ebx
mov ecx, edx
jge 0x56e3b6
fld1
mov eax, ebx
sub eax, edx
cmp eax, 2
jl 0x56e362
mov eax, dword [ebp + 0x28]
add edx, eax
mov eax, dword [ebp + 0x10]
lea edx, [eax + edx*4]
jmp 0x56e2e4
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 0x56e2fb
fstp st(0)
jmp 0x56e2fd
fstp st(5)
cmp edi, 2
jne 0x56e315
fld dword [edx]
fsub st(3)
fcom st(5)
fnstsw ax
test ah, 5
jnp 0x56e313
fstp st(5)
jmp 0x56e315
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 0x56e333
fstp st(0)
jmp 0x56e335
fstp st(1)
cmp edi, 2
jne 0x56e34e
fld dword [edx + 4]
fsub st(3)
fcom st(1)
fnstsw ax
test ah, 5
jnp 0x56e34c
fstp st(1)
jmp 0x56e34e
fstp st(0)
add ecx, 2
fadd st(5), st(0)
lea eax, [ebx - 1]
add edx, 8
cmp ecx, eax
jl 0x56e2e0
mov edx, dword [ebp + 0x30]
jmp 0x56e366
fxch st(1)
fxch st(4)
cmp ecx, ebx
jge 0x56e3a8
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 0x56e383
fstp st(0)
jmp 0x56e385
fstp st(2)
cmp edi, 2
jne 0x56e3ac
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 0x56e3ac
fstp st(1)
fxch st(2)
faddp st(1)
faddp st(1)
jmp 0x56e3be
fstp st(0)
fstp st(1)
fstp st(0)
fxch st(2)
faddp st(1)
faddp st(1)
jmp 0x56e3be
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 [0x603f90]
fcom st(1)
fnstsw ax
test ah, 0x41
je 0x56e403
fld dword [0x603f48]
fcom st(2)
fnstsw ax
test ah, 5
jp 0x56e3f8
fstp st(2)
fstp st(0)
fst dword [ebp - 0x30]
jmp 0x56e40c
fstp st(0)
fcom st(1)
fnstsw ax
test ah, 0x41
jne 0x56e40a
fstp st(1)
fst dword [ebp - 0x30]
jmp 0x56e40c
fstp st(0)
fmul dword [0x603d20]
fadd dword [esi + 0xf0]
fstp dword [esi + 0xf0]
jmp 0x56e422
fstp st(0)
cmp dword [ebp + 0x24], 0
jne 0x56e440
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.00597e30
add esp, 0xc
cmp dword [ebp + 0x48], 0
jle 0x56e5ba
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 0x56e594
cmp dword [ebp + 4], 0
jne 0x56e594
cmp dword [esi + 0x18], 5
jl 0x56e594
cmp dword [esi + 0x40], 0
jne 0x56e594
cmp dword [ebp - 0x1c], 0
jne 0x56e594
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.00569eb0
add esp, 0x18
test eax, eax
je 0x56e594
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.0056a410
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.00579a70
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.0057da00
add esp, 0x54
xor ecx, ecx
cmp dword [ebp - 0x3c], 4
jl 0x56e568
mov edx, dword [ebp - 0x3c]
fild dword [ebp + 0x48]
mov eax, dword [ebp + 0x14]
add edx, 0xfffffffc
fmul dword [0x631728]
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 0x56e53e
fstp st(0)
mov edx, dword [ebp - 0x3c]
cmp ecx, edx
jge 0x56e58b
fild dword [ebp + 0x48]
mov eax, dword [ebp + 0x14]
fmul dword [0x631728]
fld dword [eax + ecx*4]
inc ecx
cmp ecx, edx
fadd st(1)
fstp dword [eax + ecx*4 - 4]
jl 0x56e57b
fstp st(0)
fld dword [0x603d3c]
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 0x56e5ba
mov ecx, dword [ebp + 4]
push 3
push ecx
push eax
call fcn.00573d60
add esp, 0xc
mov eax, dword [ebp - 0x28]
imul eax, edi
add eax, eax
add eax, eax
call fcn.00599900
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.00579b20
mov edx, edi
shl edx, 4
sub edx, edi
add esp, 0x1c
cmp dword [ebp - 0x48], edx
jl 0x56e611
cmp dword [ebp - 0x1c], 0
jne 0x56e611
cmp dword [esi + 0x18], 2
jl 0x56e611
cmp dword [esi + 0x40], 0
mov dword [ebp + 0x44], 1
je 0x56e618
mov dword [ebp + 0x44], 0
mov edi, dword [ebp + 0x28]
add edi, edi
add edi, edi
mov eax, edi
call fcn.00599900
mov eax, edi
mov dword [ebp + 0x34], esp
call fcn.00599900
mov eax, edi
mov ebx, esp
call fcn.00599900
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.0056b840
fstp dword [ebp - 0x38]
add esp, 0x54
mov eax, edi
call fcn.00599900
cmp dword [ebp + 0x44], 0
mov edi, esp
mov dword [ebp - 0x70], edi
je 0x56e70e
mov eax, 0x5000
cdq
idiv dword [ebp - 0x48]
add eax, 2
cmp eax, 0x50
jge 0x56e6c2
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.0056ab80
mov ecx, dword [ebp + 0x54]
add esp, 0x2c
cmp ebx, ecx
mov dword [ebp + 0x20], eax
mov eax, ebx
jge 0x56e757
lea esp, [esp]
mov edx, dword [edi + ebx*4 - 4]
mov dword [edi + eax*4], edx
inc eax
cmp eax, ecx
jl 0x56e700
jmp 0x56e757
xor edx, edx
cmp dword [ebp - 0x1c], edx
je 0x56e748
cmp dword [ebp - 0x24], edx
je 0x56e726
mov ecx, dword [ebp + 0x54]
cmp ecx, edx
jle 0x56e754
lea eax, [edx + 1]
jmp 0x56e752
cmp dword [ebp - 0x48], 0xf
jge 0x56e748
cmp dword [esi + 0xb8], 2
je 0x56e748
mov ecx, dword [ebp + 0x54]
cmp ecx, edx
jle 0x56e740
xor eax, eax
rep stosd dword es:[edi], eax
mov eax, dword [ebp + 4]
mov dword [ebp + 0x20], eax
jmp 0x56e757
mov ecx, dword [ebp + 0x54]
cmp ecx, edx
jle 0x56e754
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.00599900
fld dword [0x631794]
mov ebx, dword [ebp - 0x7c]
fld dword [0x603f18]
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 0x56e8c8
mov ecx, dword [ebp + 0x54]
sub ecx, eax
cmp ecx, 4
jl 0x56e879
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 0x56e803
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 0x56e824
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 0x56e843
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 0x56e85e
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 0x56e7e5
mov ebx, dword [ebp - 0x7c]
mov eax, dword [ebp + 0x4c]
cmp eax, dword [ebp + 0x54]
jge 0x56e8c8
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 0x56e8a0
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 0x56e8c0
mov eax, dword [ebp + 0x50]
fld dword [eax]
fmul st(1)
fsubr dword [ecx]
fstp dword [ecx]
add ecx, 4
sub edx, 1
jne 0x56e89d
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 0x56e79a
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.0057d140
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.0056b100
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 0x56e9a9
xor ecx, ecx
cmp dword [esi + 0x40], ecx
je 0x56ea6d
mov dword [esi + 0x64], ecx
mov dword [esi + 0x50], 2
mov edx, dword [esi + 0x50]
push 5
push 0x603d94
push edx
push ebx
call fcn.00573d90
add esp, 0x10
cmp dword [esi + 0x40], 0
je 0x56e9cd
mov eax, 0x55555556
imul dword [ebp - 0x48]
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 8
jle 0x56e9c8
mov eax, 8
mov ecx, dword [ebp + 0x34]
mov dword [ecx], eax
mov eax, edi
call fcn.00599900
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.005797a0
shl dword [ebp - 0x20], 3
push ebx
mov dword [ebp + 0x20], 6
mov dword [ebp + 0x40], 0
call fcn.0057f6d0
mov dword [ebp + 0x58], eax
mov eax, dword [ebp + 0x30]
add esp, 0x14
cmp eax, dword [ebp + 0x54]
mov dword [ebp + 0x4c], eax
jge 0x56ebc2
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 0x56ea56
mov edx, eax
lea ecx, [eax*8]
cmp ecx, edx
jge 0x56eaf9
mov dword [ebp - 0x34], ecx
jmp 0x56eb08
cmp dword [ebp - 0x1c], ecx
je 0x56ea90
cmp dword [esi + 0x18], ecx
jne 0x56ea7f
mov dword [esi + 0x50], ecx
jmp 0x56e995
cmp dword [ebp + 4], ecx
jne 0x56e98e
mov dword [esi + 0x50], eax
jmp 0x56e995
cmp dword [ebp + 0x18], ecx
jne 0x56eae8
cmp dword [esi + 0x18], eax
jl 0x56eae8
mov eax, dword [ebp + 0x38]
lea edx, [eax + eax*4]
add edx, edx
cmp dword [ebp - 0x4c], edx
jl 0x56eae8
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.0057a350
add esp, 0x2c
mov dword [esi + 0x50], eax
jmp 0x56e995
cmp dword [esi + 0x18], ecx
jne 0x56e98e
mov dword [esi + 0x50], ecx
jmp 0x56e995
cmp eax, 0x30
mov dword [ebp - 0x34], 0x30
jl 0x56eb08
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 0x56eba4
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 0x56eb8d
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.00573d60
mov ecx, dword [ebp + 0x7c]
push ecx
call fcn.0057f6d0
add esp, 0x10
mov dword [ebp + 0x58], eax
test edi, edi
je 0x56eb8d
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 0x56eb2f
test ebx, ebx
je 0x56eba4
mov eax, dword [ebp + 0x20]
dec eax
cmp eax, 2
mov dword [ebp + 0x20], 2
jl 0x56eba4
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 0x56ea30
mov ebx, dword [ebp + 0x38]
cmp ebx, 2
jne 0x56ec4e
mov ecx, dword [ebp + 0x48]
test ecx, ecx
je 0x56ebef
mov edx, dword [ebp - 0x28]
mov eax, dword [ebp - 8]
push edx
mov edx, dword [ebp + 0x3c]
push eax
push edx
call fcn.0056b5f0
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 0x603e78
mov dword [ebp - 0x44], ecx
push 0x603e20
push ecx
fild dword [ebp - 0x44]
fstp dword [esp]
call fcn.005798c0
mov ecx, dword [ebp + 0x30]
add esp, 0x14
cmp ecx, eax
mov dword [esi + 0xe8], eax
mov edx, ecx
jg 0x56ec37
mov edx, eax
mov edi, dword [ebp + 0x54]
cmp edi, edx
jge 0x56ec42
mov eax, edi
jmp 0x56ec48
cmp ecx, eax
jle 0x56ec48
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 0x56ecec
cmp dword [ebp + 0x30], 0
jg 0x56ecbf
cmp dword [esi + 0x40], 0
jne 0x56ecbf
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.0056b240
add esp, 0x34
jmp 0x56eccc
fldz
mov eax, 5
fstp dword [esi + 0xe4]
mov edi, dword [ebp + 0x7c]
push 7
push 0x603d88
push eax
push edi
mov dword [ebp + 0x2c], eax
call fcn.00573d90
push edi
call fcn.0057f6d0
add esp, 0x14
mov dword [ebp + 0x58], eax
mov eax, dword [ebp - 0x68]
test eax, eax
jle 0x56ef43
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 0x56ed15
mov dword [ebp + 0x78], edx
cmp dword [ebp - 0x1c], 0
jne 0x56ed2a
lea edx, [ebx + ebx*4]
shl edx, 6
sub eax, edx
sub eax, 0xa0
jmp 0x56ed42
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 0x56ed55
mov ecx, edi
mov edi, dword [esi + 0xd8]
sar edi, cl
add eax, edi
cmp dword [ebp - 0x1c], 0
jne 0x56edc6
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.0056cfa0
add esp, 0x40
mov edi, eax
jmp 0x56ee22
mov edx, dword [esi + 0xbc]
cmp edx, 0x64
mov edi, eax
jge 0x56ede2
mov ecx, dword [ebp - 0x14]
mov edi, 0x60
sar edi, cl
add edi, eax
cmp edx, 0x64
jle 0x56edf0
mov ecx, dword [ebp - 0x14]
mov eax, 0x90
sar eax, cl
sub edi, eax
fld dword [ebp - 0x5c]
fld dword [0x603f18]
fsubr st(1)
fmul dword [0x603f8c]
call fcn.0059c610
fcomp dword [0x603f64]
add edi, eax
fnstsw ax
test ah, 0x41
jne 0x56ee22
cmp edi, 0x190
jg 0x56ee22
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 0x56ee4d
mov edx, dword [ebp - 0x80]
lea ecx, [ecx + edx + 0x167]
sar ecx, 6
cmp eax, ecx
jg 0x56ee4d
mov eax, ecx
lea ebx, [edi + 0x20]
sar ebx, 6
cmp eax, ebx
jle 0x56ee59
mov ebx, eax
mov ecx, dword [ebp + 0x78]
cmp ecx, ebx
jge 0x56ee62
mov ebx, ecx
sub edi, dword [ebp - 0x68]
mov eax, ebx
shl eax, 6
cmp dword [ebp - 0x6c], 0
mov edx, edi
je 0x56ee7c
mov ebx, 2
lea eax, [ebx + 0x7e]
xor edx, edx
mov edi, dword [esi + 0xdc]
cmp edi, 0x3ca
jge 0x56eea0
inc edi
mov dword [esi + 0xdc], edi
add edi, 0x14
mov dword [ebp - 0x40], edi
fild dword [ebp - 0x40]
fld1
fdivrp st(1)
jmp 0x56eea6
fld dword [0x603f88]
mov edi, dword [esi + 0x34]
test edi, edi
je 0x56eef5
sub eax, dword [ebp - 0x68]
add dword [esi + 0xd0], eax
test edi, edi
je 0x56eef5
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.0059c610
mov ecx, dword [ebp + 0x78]
add eax, edi
mov dword [esi + 0xd4], eax
neg eax
mov dword [esi + 0xd8], eax
jmp 0x56eef7
fstp st(0)
cmp dword [esi + 0x34], 0
je 0x56ef29
mov eax, dword [esi + 0xd0]
test eax, eax
jge 0x56ef29
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 0x56ef30
mov dword [ebp + 0x78], ebx
mov eax, dword [ebp + 0x78]
mov ecx, dword [ebp + 0x7c]
push eax
push ecx
call fcn.00573ef0
mov ebx, dword [ebp + 0x38]
add esp, 8
mov edi, dword [ebp + 0x28]
add edi, edi
add edi, edi
mov eax, edi
call fcn.00599900
mov eax, edi
mov dword [ebp + 0x24], esp
call fcn.00599900
mov eax, edi
mov dword [ebp - 0x80], esp
call fcn.00599900
mov edx, dword [ebp + 0x7c]
mov edi, dword [ebp + 0x78]
mov dword [ebp - 0x24], esp
push edx
shl edi, 6
call fcn.0057f6d0
mov ecx, eax
mov eax, edi
sub eax, ecx
add esp, 4
dec eax
cmp dword [ebp + 4], 0
je 0x56efa1
mov ecx, dword [ebp + 0x48]
cmp ecx, 2
jl 0x56efa1
lea edx, [ecx*8 + 0x10]
cmp eax, edx
jl 0x56efa1
mov ecx, 8
jmp 0x56efa3
xor ecx, ecx
sub eax, ecx
mov dword [ebp - 0x14], ecx
mov ecx, dword [ebp + 0x54]
dec ecx
cmp dword [esi + 0x78], 0
je 0x56f00b
mov ecx, dword [ebp - 0x60]
mov edx, ebx
imul edx, edx, 0x7d00
cmp ecx, edx
jge 0x56efc8
mov ecx, 0xd
jmp 0x56efff
mov edx, ebx
imul edx, edx, 0xbb80
cmp ecx, edx
jge 0x56efdb
mov ecx, 0x10
jmp 0x56efff
mov edx, ebx
imul edx, edx, 0xea60
cmp ecx, edx
jge 0x56efee
mov ecx, 0x12
jmp 0x56efff
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 0x56f00b
mov ecx, edx
cmp dword [esi + 0x40], 0
je 0x56f016
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.0057f270
mov dword [ebp - 0x30], eax
mov eax, dword [esi + 0x5c]
add esp, 0x4c
test eax, eax
je 0x56f091
mov edx, dword [ebp - 0x30]
lea ecx, [eax - 1]
cmp ecx, edx
jle 0x56f081
mov edx, ecx
inc eax
cmp eax, edx
jl 0x56f08d
mov eax, dword [ebp - 0x30]
cmp ecx, eax
jg 0x56f094
mov ecx, eax
jmp 0x56f094
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.0057d490
mov eax, dword [ebp - 0x3c]
add esp, 0x20
call fcn.00599900
cmp dword [ebp + 0x38], 2
mov ecx, esp
jne 0x56f0e0
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 0x28]
lea edx, [edx + eax*4]
mov dword [ebp - 0x88], edx
jmp 0x56f0ea
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.0057c260
mov edi, dword [ebp + 0x7c]
add esp, 0x5c
cmp dword [ebp - 0x14], 0
jle 0x56f172
xor eax, eax
cmp dword [esi + 0x74], 2
push 1
setl al
push eax
push edi
call fcn.00573df0
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.0057d5c0
mov ecx, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x7c]
push ecx
push 0
push edi
call fcn.00597130
mov edx, dword [ebp + 0x14]
fld dword [0x603f84]
fld dword [0x631728]
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 0x56f33c
sub eax, ebx
cmp eax, 4
jl 0x56f2ed
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 0x56f242
fld dword [edx - 4]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x56f242
fld st(1)
jmp 0x56f253
fcom dword [edx - 4]
fnstsw ax
test ah, 5
jp 0x56f250
fld st(0)
jmp 0x56f253
fld dword [edx - 4]
fstp dword [edi - 8]
fcom dword [edx]
fnstsw ax
test ah, 5
jnp 0x56f26e
fld dword [edx]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x56f26e
fld st(1)
jmp 0x56f27d
fcom dword [edx]
fnstsw ax
test ah, 5
jp 0x56f27b
fld st(0)
jmp 0x56f27d
fld dword [edx]
mov eax, dword [ebp - 0x40]
fstp dword [eax + edx]
fcom dword [edx + 4]
fnstsw ax
test ah, 5
jnp 0x56f29d
fld dword [edx + 4]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x56f29d
fld st(1)
jmp 0x56f2ae
fcom dword [edx + 4]
fnstsw ax
test ah, 5
jp 0x56f2ab
fld st(0)
jmp 0x56f2ae
fld dword [edx + 4]
fstp dword [edi]
fcom dword [edx + 8]
fnstsw ax
test ah, 5
jnp 0x56f2ca
fld dword [edx + 8]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x56f2ca
fld st(1)
jmp 0x56f2db
fcom dword [edx + 8]
fnstsw ax
test ah, 5
jp 0x56f2d8
fld st(0)
jmp 0x56f2db
fld dword [edx + 8]
fstp dword [edi + 4]
add edx, 0x10
add edi, 0x10
sub ecx, 1
jne 0x56f228
mov eax, dword [ebp + 0x4c]
mov edx, dword [ebp + 0x54]
cmp eax, edx
jge 0x56f33c
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 0x56f322
fld dword [ecx]
fcomp st(2)
fnstsw ax
test ah, 5
jp 0x56f322
fld st(1)
jmp 0x56f331
fcom dword [ecx]
fnstsw ax
test ah, 5
jp 0x56f32f
fld st(0)
jmp 0x56f331
fld dword [ecx]
fstp dword [edi + ecx]
add ecx, 4
sub edx, 1
jne 0x56f30a
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 0x56f1ee
cmp dword [ebp - 0x6c], 0
fstp st(0)
fstp st(0)
je 0x56f379
cmp dword [ebp - 0x3c], 0
jle 0x56f379
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 0x56f3ae
cmp dword [ebp + 0x38], 1
jne 0x56f3ae
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.00597e30
add esp, 0xc
cmp dword [ebp + 4], 0
jne 0x56f3e4
mov ecx, dword [ebp - 0x8c]
mov edi, dword [ebp - 0x84]
mov ebx, dword [ebp - 0x50]
push ecx
push edi
push ebx
call fcn.00597e30
mov edx, dword [ebp - 0x8c]
mov eax, dword [ebp + 8]
push edx
push eax
push edi
call fcn.00597e30
add esp, 0x18
jmp 0x56f4c3
mov ebx, dword [ebp - 0x9c]
xor eax, eax
cmp ebx, 4
jl 0x56f48f
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 0x56f432
fld dword [ecx - 4]
jmp 0x56f435
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 0x56f44b
fld dword [ecx]
jmp 0x56f451
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 0x56f465
fld dword [ecx + 4]
jmp 0x56f468
fld dword [edi - 4]
fstp dword [ecx + 4]
fld dword [edi]
fcomp dword [ecx + 8]
fnstsw ax
test ah, 0x41
jne 0x56f47c
fld dword [ecx + 8]
jmp 0x56f47e
fld dword [edi]
fstp dword [ecx + 8]
add ecx, 0x10
add edi, 0x10
sub edx, 1
jne 0x56f420
mov eax, dword [ebp + 0x4c]
cmp eax, ebx
jge 0x56f4c0
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 0x56f4b3
fld dword [ecx]
jmp 0x56f4b6
fld dword [ecx + edx]
fstp dword [ecx]
add ecx, 4
sub ebx, 1
jne 0x56f4a3
mov ebx, dword [ebp - 0x50]
mov eax, dword [ebp + 0x54]
fld dword [0x603f80]
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 0x56f50e
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 0x56f4f8
mov ecx, dword [ebp + 0x28]
cmp dword [ebp + 0x54], ecx
jge 0x56f53f
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 0x56f529
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 0x56f4e1
cmp dword [ebp + 4], 0
fstp st(1)
fstp st(0)
jne 0x56f574
cmp dword [ebp - 0x94], 0
jne 0x56f574
mov dword [esi + 0x74], 0
jmp 0x56f577
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.00573f20
add esp, 4
cmp dword [esi + 0x2c], 0
je 0x56f598
mov eax, 0xfffffffd
jmp 0x56f5a0
mov eax, dword [ebp + 0x78]
jmp 0x56f5a0
or eax, 0xffffffff
lea esp, [ebp - 0xd8]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x5c]
xor ecx, ebp
call fcn.0059709c
add ebp, 0x60
mov esp, ebp
pop ebp
ret