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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x8c
xorps xmm4, xmm4
push ebx
push esi
mov esi, dword [ebp + 0x10]
lea ecx, [esi - 1]
mov eax, esi
imul eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x14]
add eax, 0xffffffff
push edi
mov dword [esp + 0x14], eax
je 0x578ba6
mov eax, esi
neg eax
xor edi, edi
test esi, esi
jle 0x578ba6
mov ecx, dword [ebp + 0xc]
movsd xmm1, qword [0x5fb270]
lea ebx, [esi*8]
lea edx, [ecx + eax*8]
add edx, ebx
xor eax, eax
mov ecx, edx
cmp eax, edi
jne 0x578b91
movapd xmm0, xmm1
jmp 0x578b95
movapd xmm0, xmm4
movsd qword [ecx], xmm0
inc eax
add ecx, 8
cmp eax, esi
jl 0x578b87
inc edi
cmp edi, esi
jl 0x578b81
xor edi, edi
movapd xmm0, xmm4
test esi, esi
jle 0x57940b
mov dword [esp + 0x10], esi
jmp 0x578bc0
cmp edi, esi
mov ebx, edi
jge 0x578cf7
cmp dword [esp + 0x10], 4
jl 0x578caf
lea ecx, [edi + 2]
mov dword [esp + 0xc], 0xfffffffe
mov edx, dword [esp + 0xc]
add edx, 2
je 0x578c0e
lea eax, [ecx - 1]
imul eax, ebx
cdq
sub eax, edx
mov edx, dword [ebp + 8]
sar eax, 1
add eax, edi
movsd xmm1, qword [edx + eax*8]
movapd xmm2, xmm1
mulsd xmm2, xmm1
addsd xmm2, xmm0
movapd xmm0, xmm2
mov eax, dword [esp + 0xc]
add eax, 1
je 0x578c3c
lea eax, [ecx - 1]
imul eax, ecx
cdq
sub eax, edx
mov edx, dword [ebp + 8]
sar eax, 1
add eax, edi
movsd xmm1, qword [edx + eax*8]
movapd xmm2, xmm1
mulsd xmm2, xmm1
addsd xmm2, xmm0
movapd xmm0, xmm2
cmp dword [esp + 0xc], 0
je 0x578c68
lea eax, [ecx + 1]
imul eax, ecx
cdq
sub eax, edx
mov edx, dword [ebp + 8]
sar eax, 1
add eax, edi
movsd xmm1, qword [edx + eax*8]
movapd xmm2, xmm1
mulsd xmm2, xmm1
addsd xmm2, xmm0
movapd xmm0, xmm2
mov eax, dword [esp + 0xc]
add eax, 0xffffffff
je 0x578c99
lea edx, [ecx + 1]
lea eax, [ecx + 2]
imul eax, edx
cdq
sub eax, edx
mov edx, dword [ebp + 8]
sar eax, 1
add eax, edi
movsd xmm1, qword [edx + eax*8]
movapd xmm2, xmm1
mulsd xmm2, xmm1
addsd xmm2, xmm0
movapd xmm0, xmm2
sub dword [esp + 0xc], 4
add ebx, 4
lea eax, [esi - 3]
add ecx, 4
cmp ebx, eax
jl 0x578be0
cmp ebx, esi
jge 0x578cf7
mov eax, edi
sub eax, ebx
lea ecx, [ebx + 1]
mov dword [esp + 0x40], eax
mov edi, edi
test eax, eax
je 0x578cec
mov eax, ecx
imul eax, ebx
cdq
sub eax, edx
mov edx, dword [ebp + 8]
sar eax, 1
add eax, edi
movsd xmm1, qword [edx + eax*8]
mov eax, dword [esp + 0x40]
movapd xmm2, xmm1
mulsd xmm2, xmm1
addsd xmm2, xmm0
movapd xmm0, xmm2
inc ebx
dec eax
inc ecx
cmp ebx, esi
mov dword [esp + 0x40], eax
jl 0x578cc0
dec dword [esp + 0x10]
inc edi
cmp edi, esi
jl 0x578bc0
comisd xmm0, xmm4
jbe 0x57940b
movsd xmm3, qword [0x5fc860]
movsd xmm2, qword [0x5fe6a8]
mov dword [esp + 0x30], 0
mov eax, dword [esp + 0x30]
inc eax
cmp eax, 0xa
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], eax
jg 0x5793f3
mov ecx, dword [ebp + 0x10]
mov eax, 2
sub eax, ecx
mov dword [esp + 0x68], eax
or eax, 0xffffffff
sub eax, ecx
mov dword [esp + 0x28], eax
mov eax, 1
sub eax, ecx
mov dword [esp + 0x2c], 0xffffffff
mov dword [esp + 0x10], 2
mov dword [esp + 0x54], eax
mov edx, dword [esp + 0x2c]
mov esi, dword [esp + 0x28]
add esi, dword [ebp + 0x10]
dec dword [esp + 0x10]
inc edx
lea ecx, [edx + 1]
mov eax, ecx
imul eax, edx
mov dword [esp + 0x2c], edx
cdq
sub eax, edx
sar eax, 1
dec eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x38], eax
mov dword [esp + 0x20], ecx
mov dword [esp + 0x24], 0
mov dword [esp + 0xc], esi
lea esp, [esp]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x2c]
inc edx
mov edi, dword [ebp + 0x10]
add dword [esp + 0xc], edi
dec dword [esp + 0x24]
lea ecx, [edx - 1]
mov eax, ecx
imul eax, edx
mov dword [esp + 0x20], edx
cdq
sub eax, edx
mov edx, dword [ebp + 8]
sar eax, 1
dec eax
inc ebx
lea esi, [ebx + eax]
movsd xmm0, qword [edx + esi*8]
movsd qword [esp + 0x60], xmm0
andpd xmm0, xmm3
movapd xmm1, xmm0
comisd xmm2, xmm1
mov dword [esp + 0x18], eax
mov dword [esp + 0x70], esi
jbe 0x578e02
inc dword [esp + 0x34]
mov esi, dword [esp + 0x38]
add esi, ebx
comisd xmm1, xmm2
movsd xmm0, qword [edx + esi*8]
lea ecx, [ecx + eax + 1]
subsd xmm0, qword [edx + ecx*8]
mulsd xmm0, qword [0x5fb9c8]
mov dword [esp + 0x6c], esi
mov dword [esp + 0x74], ecx
movsd qword [esp + 0x88], xmm0
movsd qword [esp + 0x58], xmm4
jae 0x578e45
andpd xmm0, xmm3
comisd xmm0, xmm2
jb 0x578e61
fld qword [esp + 0x60]
fchs
fld qword [esp + 0x88]
call sub.MSVCR90.dll__CIatan2
fmul qword [0x5fb9c8]
fstp qword [esp + 0x58]
fld qword [esp + 0x58]
call sub.MSVCR90.dll__CIsin
fstp qword [esp + 0x48]
fld qword [esp + 0x58]
call sub.MSVCR90.dll__CIcos
fst qword [esp + 0x40]
fld qword [esp + 0x48]
movsd xmm0, qword [esp + 0x48]
movsd xmm1, qword [esp + 0x40]
fld st(0)
fmul st(1)
xor ecx, ecx
cmp edi, 4
fstp qword [esp + 0x80]
fld st(1)
fmul st(2)
fstp qword [esp + 0x90]
fmulp st(1)
fstp qword [esp + 0x78]
jl 0x57922f
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x10]
lea eax, [edx + eax + 2]
mov dword [esp + 0x1c], eax
mov edx, dword [esp + 0x10]
mov ebx, dword [esp + 0x2c]
lea esi, [edx + ecx]
lea eax, [esi + ebx]
imul eax, ecx
cdq
sub eax, edx
sar eax, 1
lea edx, [esi - 1]
dec eax
test edx, edx
je 0x578f48
mov edi, dword [esp + 0x1c]
lea edi, [edi + ecx - 3]
test edi, edi
je 0x578f48
jge 0x578ef8
mov edi, dword [esp + 0x18]
lea edi, [edi + ecx + 1]
jmp 0x578efe
mov edi, dword [esp + 0x20]
add edi, eax
test edx, edx
jge 0x578f0c
mov eax, dword [esp + 0x38]
lea eax, [eax + ecx + 1]
jmp 0x578f11
lea edx, [ebx + 1]
add eax, edx
mov edx, dword [ebp + 8]
movsd xmm3, qword [edx + eax*8]
movsd xmm2, qword [edx + edi*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [edx + edi*8], xmm2
movsd qword [edx + eax*8], xmm4
cmp dword [esp + 0x14], 0
mov ebx, dword [ebp + 0xc]
je 0x578f96
mov edx, dword [esp + 0x28]
lea eax, [edx + ecx + 1]
mov edx, dword [esp + 0xc]
movsd xmm3, qword [ebx + eax*8]
lea edx, [edx + ecx + 1]
movsd xmm2, qword [ebx + edx*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [ebx + edx*8], xmm2
movsd qword [ebx + eax*8], xmm4
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x20]
lea edi, [eax + ecx]
lea edi, [edi + edx - 2]
mov edx, dword [esp + 0x2c]
add edx, esi
mov eax, edi
imul eax, edx
cdq
sub eax, edx
sar eax, 1
dec eax
test esi, esi
je 0x579036
mov edx, dword [esp + 0x24]
add edx, esi
je 0x579036
test edx, edx
jge 0x578fd4
mov edx, dword [esp + 0x18]
lea edx, [edx + ecx + 2]
jmp 0x578fda
mov edx, dword [esp + 0x20]
add edx, eax
mov dword [esp + 0x40], edx
test esi, esi
jge 0x578fec
mov eax, dword [esp + 0x38]
lea eax, [eax + ecx + 2]
jmp 0x578ff3
mov edx, dword [esp + 0x2c]
inc edx
add eax, edx
mov edx, dword [ebp + 8]
movsd xmm3, qword [edx + eax*8]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x40]
movsd xmm2, qword [edx + eax*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
addsd xmm2, xmm3
movsd qword [edx + eax*8], xmm2
mov eax, dword [esp + 0x48]
mulsd xmm4, xmm1
mulsd xmm5, xmm0
subsd xmm4, xmm5
movsd qword [edx + eax*8], xmm4
cmp dword [esp + 0x14], 0
je 0x579081
mov edx, dword [esp + 0x28]
lea eax, [edx + ecx + 2]
mov edx, dword [esp + 0xc]
movsd xmm3, qword [ebx + eax*8]
lea edx, [edx + ecx + 2]
movsd xmm2, qword [ebx + edx*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [ebx + edx*8], xmm2
movsd qword [ebx + eax*8], xmm4
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
dec eax
lea ebx, [edx + ecx]
add eax, ebx
mov dword [esp + 0x48], eax
imul eax, edi
cdq
sub eax, edx
sar eax, 1
lea edx, [esi + 1]
dec eax
test edx, edx
je 0x579108
lea edi, [ebx - 1]
test edi, edi
je 0x579108
jge 0x5790b6
mov edi, dword [esp + 0x18]
lea edi, [edi + ecx + 3]
jmp 0x5790bc
mov edi, dword [esp + 0x20]
add edi, eax
test edx, edx
jge 0x5790ca
mov eax, dword [esp + 0x38]
lea eax, [eax + ecx + 3]
jmp 0x5790d1
mov edx, dword [esp + 0x2c]
inc edx
add eax, edx
mov edx, dword [ebp + 8]
movsd xmm3, qword [edx + eax*8]
movsd xmm2, qword [edx + edi*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [edx + edi*8], xmm2
movsd qword [edx + eax*8], xmm4
cmp dword [esp + 0x14], 0
mov edi, dword [ebp + 0xc]
je 0x579156
mov edx, dword [esp + 0x28]
lea eax, [edx + ecx + 3]
mov edx, dword [esp + 0xc]
movsd xmm3, qword [edi + eax*8]
lea edx, [edx + ecx + 3]
movsd xmm2, qword [edi + edx*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [edi + edx*8], xmm2
movsd qword [edi + eax*8], xmm4
mov eax, dword [esp + 0x48]
lea edx, [ecx + 4]
imul eax, edx
mov dword [esp + 0x40], edx
cdq
sub eax, edx
sar eax, 1
dec eax
add esi, 2
je 0x5791d2
test ebx, ebx
je 0x5791d2
jge 0x57917f
mov edx, dword [esp + 0x18]
lea ebx, [edx + ecx + 4]
jmp 0x579186
mov edx, dword [esp + 0x20]
lea ebx, [edx + eax]
test esi, esi
jge 0x579194
mov eax, dword [esp + 0x38]
lea eax, [eax + ecx + 4]
jmp 0x57919b
mov edx, dword [esp + 0x2c]
inc edx
add eax, edx
mov edx, dword [ebp + 8]
movsd xmm3, qword [edx + eax*8]
movsd xmm2, qword [edx + ebx*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [edx + ebx*8], xmm2
movsd qword [edx + eax*8], xmm4
cmp dword [esp + 0x14], 0
je 0x57921d
mov edx, dword [esp + 0x28]
lea eax, [edx + ecx + 4]
mov edx, dword [esp + 0xc]
movsd xmm3, qword [edi + eax*8]
lea ecx, [edx + ecx + 4]
movsd xmm2, qword [edi + ecx*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [edi + ecx*8], xmm2
movsd qword [edi + eax*8], xmm4
mov eax, dword [ebp + 0x10]
mov ecx, dword [esp + 0x40]
add eax, 0xfffffffd
cmp ecx, eax
jl 0x578ec2
cmp ecx, dword [ebp + 0x10]
mov edi, dword [ebp + 8]
jge 0x579323
mov ebx, dword [ebp + 0xc]
mov esi, ecx
sub esi, dword [esp + 0x2c]
lea eax, [ecx + 1]
mov dword [esp + 0x1c], eax
jmp 0x579250
mov eax, dword [esp + 0x1c]
imul eax, ecx
cdq
sub eax, edx
sar eax, 1
dec eax
test esi, esi
je 0x5792c9
mov edx, dword [esp + 0x24]
add edx, esi
je 0x5792c9
test edx, edx
jge 0x579277
mov edx, dword [esp + 0x18]
lea edx, [edx + ecx + 1]
jmp 0x57927d
mov edx, dword [esp + 0x20]
add edx, eax
test esi, esi
jge 0x57928b
mov eax, dword [esp + 0x38]
lea eax, [eax + ecx + 1]
jmp 0x579295
mov ebx, dword [esp + 0x2c]
inc ebx
add eax, ebx
mov ebx, dword [ebp + 0xc]
movsd xmm3, qword [edi + eax*8]
movsd xmm2, qword [edi + edx*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [edi + edx*8], xmm2
movsd qword [edi + eax*8], xmm4
cmp dword [esp + 0x14], 0
je 0x579314
mov edx, dword [esp + 0x28]
lea eax, [edx + ecx + 1]
mov edx, dword [esp + 0xc]
movsd xmm3, qword [ebx + eax*8]
lea edx, [edx + ecx + 1]
movsd xmm2, qword [ebx + edx*8]
movapd xmm5, xmm2
movapd xmm4, xmm3
mulsd xmm2, xmm1
mulsd xmm3, xmm0
mulsd xmm4, xmm1
mulsd xmm5, xmm0
addsd xmm2, xmm3
subsd xmm4, xmm5
movsd qword [ebx + edx*8], xmm2
movsd qword [ebx + eax*8], xmm4
inc dword [esp + 0x1c]
inc ecx
inc esi
cmp ecx, dword [ebp + 0x10]
jl 0x579250
mov eax, dword [esp + 0x6c]
movsd xmm0, qword [edi + eax*8]
mov ecx, dword [esp + 0x74]
movsd xmm5, qword [edi + ecx*8]
movsd xmm6, qword [esp + 0x80]
movsd xmm2, qword [esp + 0x90]
mov edx, dword [esp + 0x70]
movsd xmm1, qword [edi + edx*8]
movapd xmm4, xmm0
mulsd xmm4, xmm2
movapd xmm3, xmm5
mulsd xmm3, xmm6
addsd xmm3, xmm4
movapd xmm7, xmm0
movsd qword [esp + 0x60], xmm1
mulsd xmm1, qword [0x5fcc60]
mulsd xmm1, qword [esp + 0x78]
movapd xmm4, xmm5
mulsd xmm4, xmm2
subsd xmm0, xmm5
mulsd xmm0, qword [esp + 0x78]
subsd xmm2, xmm6
mulsd xmm2, qword [esp + 0x60]
addsd xmm0, xmm2
movsd xmm2, qword [0x5fe6a8]
movsd qword [edi + edx*8], xmm0
subsd xmm3, xmm1
mulsd xmm7, xmm6
addsd xmm4, xmm7
movsd qword [edi + eax*8], xmm3
mov eax, dword [esp + 0x68]
addsd xmm4, xmm1
movsd qword [edi + ecx*8], xmm4
mov ecx, dword [esp + 0x20]
xorps xmm4, xmm4
movsd xmm3, qword [0x5fc860]
lea edx, [eax + ecx - 2]
test edx, edx
jne 0x578db0
mov eax, dword [esp + 0x2c]
mov ecx, dword [esp + 0x54]
inc eax
add ecx, eax
jne 0x578d72
mov edx, dword [esp + 0x3c]
cmp dword [esp + 0x34], edx
jge 0x579408
cmp dword [esp + 0x30], 0xa
jle 0x578d26
mov esi, dword [ebp + 0x10]
or edx, 0xffffffff
sub edx, esi
mov ebx, edx
xor ecx, ecx
mov dword [esp + 0x10], ebx
test esi, esi
jle 0x579596
mov eax, dword [ebp + 0xc]
lea ebx, [eax + ebx*8 + 0x10]
lea edi, [esi*8]
sub eax, edi
add eax, 8
mov dword [esp + 0x34], ebx
mov dword [esp + 0x18], edx
mov dword [esp + 0x24], eax
add dword [esp + 0x10], esi
lea eax, [esi*8]
add dword [esp + 0x34], eax
lea eax, [ecx + 1]
mov dword [esp + 0x54], eax
imul eax, ecx
cdq
sub eax, edx
mov ebx, eax
mov eax, dword [esp + 0x18]
sar ebx, 1
add ebx, ecx
cmp ecx, esi
mov dword [esp + 0x1c], eax
jge 0x57957b
mov edx, dword [esp + 0x24]
mov dword [esp + 0x30], edx
lea esp, [esp]
add dword [esp + 0x1c], esi
lea eax, [esi*8]
add dword [esp + 0x30], eax
lea eax, [ecx + 1]
mov dword [esp + 0x3c], eax
imul eax, ecx
cdq
sub eax, edx
sar eax, 1
add eax, ecx
mov ecx, dword [ebp + 8]
movsd xmm0, qword [ecx + ebx*8]
movsd xmm1, qword [ecx + eax*8]
movapd xmm2, xmm0
subsd xmm2, xmm1
comisd xmm4, xmm2
jbe 0x57956f
cmp dword [esp + 0x14], 0
movsd qword [ecx + ebx*8], xmm1
movsd qword [ecx + eax*8], xmm0
je 0x57956f
xor edi, edi
cmp esi, 4
jl 0x579538
mov ecx, dword [esp + 0x30]
mov eax, dword [esp + 0x34]
lea edx, [esi - 4]
shr edx, 2
inc edx
lea edi, [edx*4]
movsd xmm0, qword [eax - 8]
fld qword [ecx - 8]
fstp qword [eax - 8]
movsd qword [ecx - 8], xmm0
movsd xmm0, qword [eax]
fld qword [ecx]
fstp qword [eax]
movsd qword [ecx], xmm0
movsd xmm0, qword [eax + 8]
fld qword [ecx + 8]
fstp qword [eax + 8]
movsd qword [ecx + 8], xmm0
fld qword [ecx + 0x10]
movsd xmm0, qword [eax + 0x10]
fstp qword [eax + 0x10]
movsd qword [ecx + 0x10], xmm0
add eax, 0x20
add ecx, 0x20
sub edx, 1
jne 0x5794f1
cmp edi, esi
jge 0x57956f
mov eax, dword [esp + 0x1c]
mov edx, dword [esp + 0x10]
lea ecx, [edi + eax]
mov eax, dword [ebp + 0xc]
add edx, edi
lea ecx, [eax + ecx*8 + 8]
lea eax, [eax + edx*8 + 8]
mov edx, esi
sub edx, edi
fld qword [ecx]
movsd xmm0, qword [eax]
fstp qword [eax]
movsd qword [ecx], xmm0
add eax, 8
add ecx, 8
sub edx, 1
jne 0x579558
mov ecx, dword [esp + 0x3c]
cmp ecx, esi
jl 0x579480
mov ecx, dword [esp + 0x54]
add dword [esp + 0x18], esi
lea eax, [esi*8]
add dword [esp + 0x24], eax
cmp ecx, esi
jl 0x57943f
mov eax, dword [ebp + 0x18]
xor edi, edi
cmp eax, edi
je 0x579a23
cmp eax, 0xffffffff
mov dword [esp + 0x1c], edi
lea eax, [esi - 2]
jne 0x5797e7
cmp eax, edi
jl 0x579a23
mov ecx, dword [ebp + 8]
lea eax, [esi - 1]
mov dword [esp + 0x10], eax
lea eax, [ecx + esi*8]
mov dword [esp + 0x24], eax
mov eax, esi
shl eax, 4
add eax, ecx
mov dword [esp + 0x28], eax
lea edx, [esi + esi*2]
lea eax, [ecx + edx*8]
mov edx, esi
shl edx, 5
mov dword [esp + 0xc], eax
lea eax, [edx + ecx]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0xc]
sub eax, ecx
mov dword [esp + 0x20], edi
mov dword [esp + 0x18], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x18]
movsd xmm0, qword [eax]
lea eax, [edi + 1]
cmp eax, esi
mov dword [esp + 0x14], edi
mov dword [esp + 0x3c], eax
jge 0x5797aa
cmp dword [esp + 0x10], 4
jl 0x5796b6
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x30], ecx
movsd xmm1, qword [ebx]
comisd xmm1, xmm0
jbe 0x579652
mov dword [esp + 0x14], eax
movapd xmm0, xmm1
movsd xmm1, qword [edi]
comisd xmm1, xmm0
jbe 0x579667
lea ecx, [eax + 1]
mov dword [esp + 0x14], ecx
movapd xmm0, xmm1
mov ecx, dword [esp + 0x30]
movsd xmm1, qword [ecx]
comisd xmm1, xmm0
jbe 0x579680
lea ecx, [eax + 2]
mov dword [esp + 0x14], ecx
movapd xmm0, xmm1
mov ecx, dword [esp + 0x34]
movsd xmm1, qword [ecx]
comisd xmm1, xmm0
jbe 0x579699
lea ecx, [eax + 3]
mov dword [esp + 0x14], ecx
movapd xmm0, xmm1
add dword [esp + 0x30], edx
add dword [esp + 0x34], edx
add eax, 4
lea ecx, [esi - 3]
add ebx, edx
add edi, edx
cmp eax, ecx
jl 0x579640
mov ecx, dword [ebp + 8]
mov edi, dword [esp + 0x1c]
cmp eax, esi
jge 0x5796e6
mov edi, eax
imul edi, esi
lea edi, [ecx + edi*8]
movsd xmm1, qword [edi]
comisd xmm1, xmm0
jbe 0x5796d4
mov dword [esp + 0x14], eax
movapd xmm0, xmm1
lea ebx, [esi*8]
inc eax
add edi, ebx
cmp eax, esi
jl 0x5796c2
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x5797aa
mov edi, eax
mov eax, dword [esp + 0x18]
imul edi, esi
fld qword [eax]
xor ebx, ebx
cmp esi, 4
fstp qword [ecx + edi*8]
movsd qword [eax], xmm0
jl 0x579774
mov edx, dword [esp + 0x2c]
mov ecx, dword [ebp + 0xc]
add eax, edx
lea edx, [esi - 4]
shr edx, 2
inc edx
lea ecx, [ecx + edi*8 + 0x10]
lea ebx, [edx*4]
movsd xmm0, qword [eax]
fld qword [ecx - 0x10]
fstp qword [eax]
movsd qword [ecx - 0x10], xmm0
movsd xmm0, qword [eax + 8]
fld qword [ecx - 8]
fstp qword [eax + 8]
movsd qword [ecx - 8], xmm0
movsd xmm0, qword [eax + 0x10]
fld qword [ecx]
fstp qword [eax + 0x10]
movsd qword [ecx], xmm0
fld qword [ecx + 8]
movsd xmm0, qword [eax + 0x18]
fstp qword [eax + 0x18]
movsd qword [ecx + 8], xmm0
add eax, 0x20
add ecx, 0x20
sub edx, 1
jne 0x579726
mov ecx, dword [ebp + 8]
mov edx, dword [esp + 0x40]
cmp ebx, esi
jge 0x5797aa
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x20]
add edi, ebx
add ecx, ebx
lea edi, [eax + edi*8]
lea eax, [eax + ecx*8]
mov ecx, esi
sub ecx, ebx
lea ecx, [ecx]
fld qword [edi]
movsd xmm0, qword [eax]
fstp qword [eax]
movsd qword [edi], xmm0
add eax, 8
add edi, 8
sub ecx, 1
jne 0x579790
mov ecx, dword [ebp + 8]
mov edi, dword [esp + 0x3c]
dec dword [esp + 0x10]
add dword [esp + 0x20], esi
lea eax, [esi*8]
add dword [esp + 0x24], eax
add dword [esp + 0x38], eax
add dword [esp + 0xc], eax
add dword [esp + 0x28], eax
add dword [esp + 0x18], eax
lea eax, [esi - 2]
cmp edi, eax
mov dword [esp + 0x1c], edi
jle 0x579602
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, edi
jl 0x579a23
mov ecx, dword [ebp + 8]
lea eax, [esi - 1]
mov dword [esp + 0x18], eax
mov eax, esi
shl eax, 4
add eax, ecx
mov dword [esp + 0x28], eax
lea edx, [ecx + esi*8]
mov dword [esp + 0x24], edx
lea eax, [esi + esi*2]
lea edx, [ecx + eax*8]
mov dword [esp + 0xc], edx
mov edx, esi
shl edx, 5
lea eax, [edx + ecx]
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0xc]
sub eax, ecx
mov dword [esp + 0x20], 0
mov dword [esp + 0x10], ecx
mov dword [esp + 0x40], edx
mov dword [esp + 0x2c], eax
lea ebx, [ebx]
movsd xmm0, qword [ecx]
lea eax, [edi + 1]
cmp eax, esi
mov dword [esp + 0x14], edi
mov dword [esp + 0x3c], eax
jge 0x5799eb
cmp dword [esp + 0x18], 4
jl 0x5798f1
mov ecx, dword [esp + 0x38]
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x28]
mov dword [esp + 0x34], ecx
mov ecx, dword [esp + 0xc]
mov dword [esp + 0x30], ecx
movsd xmm1, qword [ebx]
comisd xmm0, xmm1
jbe 0x57988c
mov dword [esp + 0x14], eax
movapd xmm0, xmm1
movsd xmm1, qword [edi]
comisd xmm0, xmm1
jbe 0x5798a1
lea ecx, [eax + 1]
mov dword [esp + 0x14], ecx
movapd xmm0, xmm1
mov ecx, dword [esp + 0x30]
movsd xmm1, qword [ecx]
comisd xmm0, xmm1
jbe 0x5798ba
lea ecx, [eax + 2]
mov dword [esp + 0x14], ecx
movapd xmm0, xmm1
mov ecx, dword [esp + 0x34]
movsd xmm1, qword [ecx]
comisd xmm0, xmm1
jbe 0x5798d3
lea ecx, [eax + 3]
mov dword [esp + 0x14], ecx
movapd xmm0, xmm1
add dword [esp + 0x30], edx
add dword [esp + 0x34], edx
add eax, 4
lea ecx, [esi - 3]
add ebx, edx
add edi, edx
cmp eax, ecx
jl 0x57987a
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x1c]
cmp eax, esi
jge 0x579924
mov ebx, dword [ebp + 8]
mov edi, eax
imul edi, esi
lea edi, [ebx + edi*8]
movsd xmm1, qword [edi]
comisd xmm0, xmm1
jbe 0x579912
mov dword [esp + 0x14], eax
movapd xmm0, xmm1
lea ebx, [esi*8]
inc eax
add edi, ebx
cmp eax, esi
jl 0x579900
mov edi, dword [esp + 0x1c]
mov eax, dword [esp + 0x14]
cmp eax, edi
je 0x5799eb
fld qword [ecx]
mov edi, eax
mov eax, dword [ebp + 8]
imul edi, esi
xor ebx, ebx
cmp esi, 4
fstp qword [eax + edi*8]
movsd qword [ecx], xmm0
jl 0x5799b3
mov edx, dword [esp + 0x2c]
lea eax, [edx + ecx]
mov ecx, dword [ebp + 0xc]
lea edx, [esi - 4]
shr edx, 2
inc edx
lea ecx, [ecx + edi*8 + 0x10]
lea ebx, [edx*4]
movsd xmm0, qword [eax]
fld qword [ecx - 0x10]
fstp qword [eax]
movsd qword [ecx - 0x10], xmm0
movsd xmm0, qword [eax + 8]
fld qword [ecx - 8]
fstp qword [eax + 8]
movsd qword [ecx - 8], xmm0
movsd xmm0, qword [eax + 0x10]
fld qword [ecx]
fstp qword [eax + 0x10]
movsd qword [ecx], xmm0
fld qword [ecx + 8]
movsd xmm0, qword [eax + 0x18]
fstp qword [eax + 0x18]
movsd qword [ecx + 8], xmm0
add eax, 0x20
add ecx, 0x20
sub edx, 1
jne 0x579964
mov ecx, dword [esp + 0x10]
mov edx, dword [esp + 0x40]
cmp ebx, esi
jge 0x5799eb
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 0x20]
add edi, ebx
add ecx, ebx
lea edi, [eax + edi*8]
lea eax, [eax + ecx*8]
mov ecx, esi
sub ecx, ebx
lea esp, [esp]
fld qword [edi]
movsd xmm0, qword [eax]
fstp qword [eax]
movsd qword [edi], xmm0
add eax, 8
add edi, 8
sub ecx, 1
jne 0x5799d0
mov ecx, dword [esp + 0x10]
mov edi, dword [esp + 0x3c]
dec dword [esp + 0x18]
add dword [esp + 0x20], esi
lea eax, [esi*8]
add dword [esp + 0x24], eax
add dword [esp + 0x38], eax
add dword [esp + 0xc], eax
add dword [esp + 0x28], eax
add ecx, eax
lea eax, [esi - 2]
cmp edi, eax
mov dword [esp + 0x1c], edi
mov dword [esp + 0x10], ecx
jle 0x579840
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret