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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0xd4
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0xc]
movss xmm1, dword [0x49f9c8]
mov ecx, dword [eax]
movss xmm0, dword [edx]
mov dword [esp + 0xd0], ecx
subss xmm0, dword [edx + ecx*4 - 4]
andps xmm0, xmmword [0x49f800]
comiss xmm1, xmm0
jbe 0x40b404
mov eax, dword [ebp + 0x10]
mov edx, ecx
movss xmm0, dword [eax]
subss xmm0, dword [eax + edx*4 - 4]
andps xmm0, xmmword [0x49f800]
comiss xmm1, xmm0
jbe 0x40b404
mov dword [esp + 0xb8], 0xffffffff
jmp 0x40b40f
mov dword [esp + 0xb8], 0
mov ebx, dword [ebp + 0x14]
xor eax, eax
mov ecx, dword [ebp + 0x18]
mov edx, dword [ebp + 0x2c]
movss xmm1, dword [ebx]
movss xmm2, dword [ecx]
mov dword [edx], eax
mov dword [0x4ed920], eax
mov dword [0x5011a0], eax
movss xmm0, dword [0x49f9cc]
mov dword [0x514a20], 0x47c34f80
mov dword [0x5282a0], 2
comiss xmm1, xmm2
jbe 0x40b455
pxor xmm7, xmm7
jmp 0x40b487
movaps xmm3, xmm1
divss xmm3, xmm2
movss xmm5, dword [0x49f9ec]
movaps xmm4, xmm5
movss xmm7, dword [0x49f9d0]
subss xmm4, xmm3
mulss xmm7, xmm2
mulss xmm4, xmm4
subss xmm5, xmm4
sqrtss xmm5, xmm5
mulss xmm7, xmm5
mov eax, 1
cmp dword [esp + 0xd0], 3
jl 0x40bca7
cvtss2sd xmm3, dword [0x4ac804]
movss xmm4, dword [0x4ac810]
mov edx, 3
movss xmm6, dword [0x49f9d4]
movsd qword [esp + 0xb0], xmm3
movss dword [esp + 0xc0], xmm4
movss dword [esp + 0xbc], xmm7
movss dword [esp + 0xcc], xmm1
movss dword [esp + 0xc8], xmm2
mov ecx, dword [esp + 0xd0]
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebp + 0xc]
movss xmm4, dword [esi + edx*4 - 0xc]
comiss xmm4, xmm6
ja 0x40bc37
movss xmm2, dword [esi + edx*4 - 8]
comiss xmm2, xmm6
ja 0x40bc37
movss xmm1, dword [esi + edx*4 - 4]
movss dword [esp + 0xc4], xmm1
comiss xmm1, xmm6
ja 0x40bc37
movaps xmm1, xmm4
movss xmm3, dword [esp + 0xc0]
subss xmm1, xmm2
movaps xmm5, xmm1
andps xmm5, xmmword [0x49f800]
comiss xmm3, xmm5
jbe 0x40b56b
movss xmm5, dword [ebx + edx*4 - 0xc]
movss xmm3, dword [esp + 0xc0]
subss xmm5, dword [ebx + edx*4 - 8]
andps xmm5, xmmword [0x49f800]
comiss xmm3, xmm5
ja 0x40bc37
movss xmm5, dword [esp + 0xc4]
movss xmm3, dword [esp + 0xc0]
subss xmm5, xmm2
movss dword [esp + 0xac], xmm5
andps xmm5, xmmword [0x49f800]
comiss xmm3, xmm5
jbe 0x40b5bb
movss xmm7, dword [ebx + edx*4 - 4]
movss xmm3, dword [esp + 0xc0]
subss xmm7, dword [ebx + edx*4 - 8]
andps xmm7, xmmword [0x49f800]
comiss xmm3, xmm7
ja 0x40bc37
xorps xmm1, xmmword [0x49f810]
movaps xmm3, xmm1
andps xmm3, xmmword [0x49f800]
comiss xmm3, dword [esp + 0xbc]
ja 0x40bc37
movss xmm7, dword [ebx + edx*4 - 8]
movss xmm3, dword [ebx + edx*4 - 0xc]
movss dword [esp + 0xa4], xmm7
subss xmm7, xmm3
movss dword [esp + 0xa8], xmm7
andps xmm7, xmmword [0x49f800]
movss dword [esp + 0xa0], xmm3
comiss xmm7, dword [esp + 0xbc]
ja 0x40bc37
comiss xmm5, dword [esp + 0xbc]
ja 0x40bc37
movss xmm3, dword [ebx + edx*4 - 4]
movss dword [esp + 0x98], xmm3
subss xmm3, dword [esp + 0xa4]
movss dword [esp + 0x9c], xmm3
andps xmm3, xmmword [0x49f800]
comiss xmm3, dword [esp + 0xbc]
ja 0x40bc37
cvtss2sd xmm1, xmm1
cvtss2sd xmm3, dword [esp + 0xa8]
movsd qword [esp + 0x58], xmm1
movsd qword [esp + 0x60], xmm3
mulsd xmm1, xmm1
mulsd xmm3, xmm3
movsd xmm5, qword [esp + 0xb0]
addsd xmm1, xmm3
sqrtsd xmm1, xmm1
cvtsd2ss xmm1, xmm1
cvtss2sd xmm1, xmm1
comisd xmm5, xmm1
jbe 0x40b6c4
movss dword [esp + 0x88], xmm0
movss dword [esp + 0x8c], xmm0
movss dword [esp + 0x80], xmm0
movss dword [esp + 0x7c], xmm0
jmp 0x40b850
movsd xmm6, qword [esp + 0x60]
movsd xmm7, qword [esp + 0x58]
mulsd xmm6, qword [0x49f890]
cvtss2sd xmm5, xmm4
mulsd xmm7, qword [0x49f890]
divsd xmm6, xmm1
divsd xmm7, xmm1
movss xmm3, dword [esp + 0xa0]
cvtss2sd xmm1, xmm3
movsd qword [esp + 0x28], xmm5
addsd xmm5, xmm6
movsd qword [esp + 0x20], xmm1
subsd xmm1, xmm7
cvtsd2ss xmm5, xmm5
cvtsd2ss xmm1, xmm1
movsd qword [esp + 0x60], xmm6
subss xmm3, xmm1
movss xmm6, dword [esp + 0xa4]
movsd qword [esp + 0x58], xmm7
movaps xmm7, xmm6
movss dword [esp + 0x94], xmm4
subss xmm4, xmm5
subss xmm7, xmm1
cvtss2sd xmm3, xmm3
cvtss2sd xmm6, xmm6
cvtss2sd xmm4, xmm4
cvtss2sd xmm7, xmm7
mulsd xmm4, xmm7
movaps xmm7, xmm2
subss xmm7, xmm5
movss dword [esp + 0x88], xmm5
cvtss2sd xmm5, xmm7
mulsd xmm5, xmm3
movss dword [esp + 0x8c], xmm1
subsd xmm4, xmm5
cvtss2sd xmm1, xmm2
cvtsd2ss xmm4, xmm4
pxor xmm5, xmm5
movsd qword [esp + 0x38], xmm6
movsd qword [esp + 8], xmm1
movss xmm6, dword [0x49f9d4]
comiss xmm4, xmm5
movss xmm4, dword [esp + 0x94]
jbe 0x40b7cf
movsd xmm1, qword [esp + 0x60]
movsd xmm3, qword [esp + 0x38]
addsd xmm1, qword [esp + 8]
subsd xmm3, qword [esp + 0x58]
movsd qword [esp + 0x60], xmm1
movsd qword [esp + 0x38], xmm3
jmp 0x40b835
movss dword [esp + 0x40], xmm2
movsd xmm2, qword [esp + 0x28]
movsd xmm1, qword [esp + 0x60]
movsd xmm3, qword [esp + 0x20]
subsd xmm2, xmm1
movsd xmm5, qword [esp + 0x58]
movsd xmm7, qword [esp + 8]
addsd xmm3, xmm5
cvtsd2ss xmm2, xmm2
cvtsd2ss xmm3, xmm3
subsd xmm7, xmm1
movsd xmm1, qword [esp + 0x38]
movss dword [esp + 0x88], xmm2
addsd xmm1, xmm5
movsd qword [esp + 0x60], xmm7
movsd qword [esp + 0x38], xmm1
movss dword [esp + 0x8c], xmm3
movss xmm2, dword [esp + 0x40]
cvtsd2ss xmm1, qword [esp + 0x60]
cvtsd2ss xmm3, qword [esp + 0x38]
movss dword [esp + 0x80], xmm1
movss dword [esp + 0x7c], xmm3
movss xmm5, dword [esp + 0x88]
movaps xmm3, xmm2
movss xmm7, dword [esp + 0x8c]
addss xmm3, xmm4
addss xmm5, dword [esp + 0x80]
addss xmm7, dword [esp + 0x7c]
mulss xmm3, dword [0x49f9d8]
mulss xmm5, dword [0x49f9d8]
mulss xmm7, dword [0x49f9d8]
movss dword [esp + 0x88], xmm5
movss dword [esp + 0x8c], xmm7
cvtss2sd xmm5, dword [esp + 0xac]
cvtss2sd xmm7, dword [esp + 0x9c]
movsd qword [esp + 0x50], xmm5
movsd qword [esp + 0x68], xmm7
mulsd xmm5, xmm5
mulsd xmm7, xmm7
movss xmm1, dword [esp + 0xa4]
addsd xmm5, xmm7
addss xmm1, dword [esp + 0xa0]
sqrtsd xmm5, xmm5
mulss xmm1, dword [0x49f9d8]
cvtsd2ss xmm5, xmm5
cvtss2sd xmm5, xmm5
movsd xmm7, qword [esp + 0xb0]
comisd xmm7, xmm5
jbe 0x40b91e
movss dword [esp + 0x90], xmm0
movaps xmm5, xmm0
movss dword [esp + 0x74], xmm0
movss dword [esp + 0x78], xmm0
jmp 0x40badd
movss dword [esp + 0x94], xmm4
movsd xmm6, qword [esp + 0x68]
movsd xmm4, qword [esp + 0x50]
mulsd xmm6, qword [0x49f890]
cvtss2sd xmm7, xmm2
mulsd xmm4, qword [0x49f890]
divsd xmm6, xmm5
divsd xmm4, xmm5
movss dword [esp + 0x44], xmm3
movss xmm3, dword [esp + 0xa4]
movss dword [esp + 0x48], xmm1
cvtss2sd xmm1, xmm3
movsd qword [esp + 0x10], xmm7
addsd xmm7, xmm6
movsd qword [esp + 0x18], xmm1
subsd xmm1, xmm4
cvtsd2ss xmm7, xmm7
cvtsd2ss xmm1, xmm1
movsd qword [esp + 0x68], xmm6
subss xmm3, xmm1
movss xmm6, dword [esp + 0x98]
movaps xmm5, xmm6
movss dword [esp + 0x40], xmm2
subss xmm2, xmm7
subss xmm5, xmm1
cvtss2sd xmm3, xmm3
cvtss2sd xmm6, xmm6
cvtss2sd xmm2, xmm2
cvtss2sd xmm5, xmm5
mulsd xmm2, xmm5
movss xmm5, dword [esp + 0xc4]
movsd qword [esp + 0x50], xmm4
movaps xmm4, xmm5
cvtss2sd xmm5, xmm5
subss xmm4, xmm7
cvtss2sd xmm4, xmm4
mulsd xmm4, xmm3
movss dword [esp + 0x74], xmm1
subsd xmm2, xmm4
cvtsd2ss xmm2, xmm2
pxor xmm1, xmm1
movsd qword [esp + 0x30], xmm6
movss dword [esp + 0x90], xmm7
movsd qword [esp], xmm5
movss xmm3, dword [esp + 0x44]
movss xmm4, dword [esp + 0x94]
movss xmm6, dword [0x49f9d4]
comiss xmm2, xmm1
movss xmm1, dword [esp + 0x48]
movss xmm2, dword [esp + 0x40]
jbe 0x40ba51
movsd xmm5, qword [esp + 0x68]
movsd xmm7, qword [esp + 0x30]
addsd xmm5, qword [esp]
subsd xmm7, qword [esp + 0x50]
movsd qword [esp + 0x68], xmm5
movsd qword [esp + 0x30], xmm7
jmp 0x40bacb
movss dword [esp + 0x44], xmm3
movss dword [esp + 0x48], xmm1
movss dword [esp + 0x40], xmm2
movsd xmm2, qword [esp + 0x10]
movsd xmm1, qword [esp + 0x68]
movsd xmm3, qword [esp + 0x18]
subsd xmm2, xmm1
movsd xmm5, qword [esp + 0x50]
movsd xmm7, qword [esp]
addsd xmm3, xmm5
subsd xmm7, xmm1
cvtsd2ss xmm2, xmm2
cvtsd2ss xmm3, xmm3
movsd xmm1, qword [esp + 0x30]
movss dword [esp + 0x90], xmm2
addsd xmm1, xmm5
movsd qword [esp + 0x30], xmm1
movss dword [esp + 0x74], xmm3
movsd qword [esp + 0x68], xmm7
movss xmm2, dword [esp + 0x40]
movss xmm1, dword [esp + 0x48]
movss xmm3, dword [esp + 0x44]
cvtsd2ss xmm7, qword [esp + 0x30]
cvtsd2ss xmm5, qword [esp + 0x68]
movss dword [esp + 0x78], xmm7
movss dword [esp + 0x94], xmm4
movss xmm4, dword [esp + 0x90]
movss xmm7, dword [esp + 0xa4]
addss xmm4, xmm5
addss xmm2, dword [esp + 0xc4]
addss xmm7, dword [esp + 0x98]
mulss xmm4, dword [0x49f9d8]
mulss xmm2, dword [0x49f9d8]
mulss xmm7, dword [0x49f9d8]
movss xmm5, dword [esp + 0x74]
movss dword [esp + 0xa4], xmm7
movss xmm6, dword [esp + 0x88]
addss xmm5, dword [esp + 0x78]
subss xmm6, xmm3
mulss xmm5, dword [0x49f9d8]
movss dword [esp + 0x88], xmm6
subss xmm7, xmm5
movaps xmm5, xmm2
mulss xmm6, xmm7
subss xmm5, xmm4
movss xmm4, dword [esp + 0x8c]
movss dword [esp + 0x70], xmm7
subss xmm4, xmm1
movss dword [esp + 0x8c], xmm4
mulss xmm4, xmm5
movss dword [esp + 0x84], xmm5
subss xmm6, xmm4
movss dword [esp + 0x4c], xmm6
andps xmm6, xmmword [0x49f800]
movss xmm4, dword [esp + 0x94]
comiss xmm6, dword [0x49f9dc]
movss xmm6, dword [0x49f9d4]
jbe 0x40bc37
movss xmm7, dword [esp + 0xa4]
subss xmm2, xmm3
subss xmm7, xmm1
mulss xmm2, dword [esp + 0x70]
movss xmm5, dword [esp + 0x84]
mulss xmm5, xmm7
subss xmm5, xmm2
movss xmm2, dword [esp + 0x88]
divss xmm5, dword [esp + 0x4c]
mulss xmm2, xmm5
mulss xmm5, dword [esp + 0x8c]
subss xmm3, xmm2
subss xmm1, xmm5
subss xmm4, xmm3
movss xmm2, dword [esp + 0xa0]
cvtss2sd xmm4, xmm4
subss xmm2, xmm1
mulsd xmm4, xmm4
cvtss2sd xmm2, xmm2
mulsd xmm2, xmm2
addsd xmm4, xmm2
sqrtsd xmm4, xmm4
cvtsd2ss xmm4, xmm4
jmp 0x40bc42
movaps xmm4, xmm0
pxor xmm3, xmm3
pxor xmm1, xmm1
comiss xmm4, dword [esp + 0xc8]
jbe 0x40bc4f
movaps xmm4, xmm0
comiss xmm4, xmm6
jbe 0x40bc62
movss xmm2, dword [eax*4 + 0x514a1c]
comiss xmm2, xmm6
ja 0x40bc95
inc eax
comiss xmm4, xmm6
movss dword [eax*4 + 0x514a1c], xmm4
movss dword [eax*4 + 0x4ed91c], xmm3
movss dword [eax*4 + 0x50119c], xmm1
mov dword [eax*4 + 0x52829c], 0
jbe 0x40bc95
mov dword [eax*4 + 0x52829c], edx
inc edx
cmp edx, ecx
jle 0x40b4f1
movss xmm1, dword [esp + 0xcc]
inc eax
xor edx, edx
mov ecx, dword [esp + 0xd0]
test eax, eax
mov dword [eax*4 + 0x4ed91c], edx
mov dword [eax*4 + 0x50119c], edx
mov dword [eax*4 + 0x514a1c], 0x47c34f80
mov dword [eax*4 + 0x52829c], ecx
jle 0x40bd20
movss xmm4, dword [0x4ac808]
mov ecx, 1
movss xmm3, dword [0x49f9d0]
pxor xmm0, xmm0
movss xmm2, dword [0x49f9dc]
xor edx, edx
mov dword [ecx*4 + 0x53bb1c], edx
mov dword [ecx*8 + 0x54f398], edx
mov dword [ecx*8 + 0x54f39c], edx
cmp dword [ecx*4 + 0x52829c], 0
jle 0x40c2f2
inc ecx
cmp ecx, eax
jle 0x40bcf8
cmp dword [esp + 0xd0], 0
jle 0x40be37
push 1
pop edx
xor ecx, ecx
mov ebx, ecx
test eax, eax
jle 0x40bd6a
mov esi, ecx
mov edi, 1
cmp edx, dword [edi*8 + 0x54f398]
jl 0x40bd63
cmp edx, dword [edi*8 + 0x54f39c]
jg 0x40bd63
mov ecx, dword [edi*4 + 0x53bb1c]
cmp ecx, esi
cmovge esi, ecx
cmp esi, ecx
cmove ebx, edi
inc edi
cmp edi, eax
jle 0x40bd40
xor ecx, ecx
mov dword [edx*4 + 0x52829c], ebx
test ebx, ebx
je 0x40be13
mov dword [esp + 0x3c], eax
mov edi, dword [ebx*8 + 0x54f398]
mov esi, dword [ebx*8 + 0x54f39c]
mov eax, dword [esp + 0xd0]
jmp 0x40bd9b
mov dword [edx*4 + 0x52829c], ebx
inc edx
mov dword [ebx*4 + 0x53bb1c], ecx
cmp edx, eax
mov dword [ebx*8 + 0x54f398], ecx
mov dword [ebx*8 + 0x54f39c], ecx
jg 0x40c2e4
test edi, edi
je 0x40be29
test esi, esi
je 0x40be29
cmp edx, edi
jl 0x40bdc9
cmp edx, esi
jle 0x40bd94
mov eax, dword [esp + 0x3c]
mov ebx, ecx
test eax, eax
jle 0x40be04
mov esi, ecx
mov edi, 1
cmp edx, dword [edi*8 + 0x54f398]
jl 0x40bdfd
cmp edx, dword [edi*8 + 0x54f39c]
jg 0x40bdfd
mov ecx, dword [edi*4 + 0x53bb1c]
cmp ecx, esi
cmovge esi, ecx
cmp esi, ecx
cmove ebx, edi
inc edi
cmp edi, eax
jle 0x40bdda
xor ecx, ecx
mov dword [edx*4 + 0x52829c], ebx
test ebx, ebx
jne 0x40bd79
lea esi, [esi]
inc edx
cmp edx, dword [esp + 0xd0]
jle 0x40bd33
jmp 0x40be32
mov eax, dword [esp + 0x3c]
jmp 0x40bd33
mov dword [0x5d803c], eax
mov ebx, dword [ebp + 0x1c]
mov eax, dword [esp + 0xd0]
cmp eax, 2
mov dword [0x5d8040], eax
mov dword [ebx], 0
lea edx, [eax - 1]
jl 0x40bed1
xor ecx, ecx
xor eax, eax
pxor xmm0, xmm0
xor edi, edi
mov dword [esp + 8], edx
xor esi, esi
mov edx, dword [esi*4 + 0x5282a4]
test edx, edx
jle 0x40be86
cmp edx, dword [esi*4 + 0x5282a0]
jne 0x40be86
test eax, eax
lea edx, [esi + 1]
lea edi, [esi + 2]
cmove eax, edx
inc ecx
jmp 0x40bec6
test ecx, ecx
jle 0x40bebd
mov ecx, edi
sub ecx, eax
cmp ecx, 3
jge 0x40bebd
cmp edi, eax
jl 0x40bebd
lea edx, [ecx + 1]
cmp edx, 0x18
jle 0x40c194
lea ecx, [ecx*4 + 4]
push ecx
push 0
lea eax, [eax*4 + 0x52829c]
push eax
call fcn.004816b0
add esp, 0xc
xor ecx, ecx
lea edx, [esi + 1]
xor eax, eax
xor edi, edi
mov esi, edx
cmp edx, dword [esp + 8]
jb 0x40be64
mov ebx, dword [ebp + 0x1c]
mov edi, dword [ebp + 0x24]
xor ecx, ecx
mov esi, dword [ebp + 0x28]
cmp dword [esp + 0xd0], 0
jle 0x40c238
movss xmm2, dword [0x49f9d4]
xor edx, edx
movss xmm1, dword [0x49f9e0]
push 1
pop eax
movss xmm0, dword [0x49f9e4]
mov edi, dword [eax*4 + 0x52829c]
test edi, edi
jne 0x40bf78
cmp ecx, 1
jle 0x40bf44
mov edx, dword [ebp + 0x28]
movss xmm3, dword [edx + ecx*4 - 4]
comiss xmm3, xmm2
jbe 0x40bf44
inc ecx
mov ebx, dword [ebp + 0x20]
mov edi, dword [ebp + 0x24]
mov edx, dword [ebx + ecx*4 - 8]
mov dword [ebx + ecx*4 - 4], edx
mov edx, dword [ebp + 0x28]
mov esi, dword [edi + ecx*4 - 8]
mov dword [edi + ecx*4 - 4], esi
mov dword [edx + ecx*4 - 4], 0
mov edx, dword [ebp + 0x1c]
inc ecx
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x20]
mov dword [edx], ecx
mov esi, dword [ebx + eax*4 - 4]
mov edx, dword [ebp + 0x10]
mov dword [edi + ecx*4 - 4], esi
mov esi, dword [ebp + 0x24]
mov edi, dword [ebp + 0x28]
mov ebx, dword [edx + eax*4 - 4]
xor edx, edx
mov dword [esi + ecx*4 - 4], ebx
mov dword [edi + ecx*4 - 4], 0
jmp 0x40c162
cmp eax, 1
je 0x40c2a2
cmp edi, dword [eax*4 + 0x528298]
je 0x40bfec
cmp ecx, 1
jle 0x40bfbf
mov ebx, dword [ebp + 0x28]
movss xmm3, dword [ebx + ecx*4 - 4]
comiss xmm3, xmm2
jbe 0x40bfbf
inc ecx
mov esi, dword [ebp + 0x20]
mov ebx, dword [esi + ecx*4 - 8]
mov dword [esi + ecx*4 - 4], ebx
mov esi, dword [ebp + 0x24]
mov ebx, dword [esi + ecx*4 - 8]
mov dword [esi + ecx*4 - 4], ebx
mov ebx, dword [ebp + 0x28]
mov dword [ebx + ecx*4 - 4], 0
mov ebx, dword [ebp + 0x1c]
inc ecx
mov esi, dword [ebp + 0xc]
mov dword [ebx], ecx
mov ebx, dword [esi + eax*4 - 4]
mov esi, dword [ebp + 0x20]
mov dword [esi + ecx*4 - 4], ebx
mov ebx, dword [ebp + 0x10]
mov esi, dword [ebx + eax*4 - 4]
mov ebx, dword [ebp + 0x24]
mov dword [ebx + ecx*4 - 4], esi
mov esi, dword [ebp + 0x28]
mov dword [esi + ecx*4 - 4], 0
test edx, edx
jne 0x40bff2
mov edx, eax
cmp eax, edx
jle 0x40c0e0
mov esi, dword [ebp + 0xc]
movss xmm5, dword [edi*4 + 0x514a1c]
mulss xmm5, xmm1
movss xmm3, dword [esi + eax*4 - 4]
mov ebx, dword [esi + eax*4 - 4]
cmp eax, dword [esp + 0xd0]
mov dword [esp + 0xc], ebx
subss xmm3, dword [esi + edx*4 - 4]
mov esi, dword [ebp + 0x10]
cvtss2sd xmm3, xmm3
movss xmm4, dword [esi + eax*4 - 4]
mulsd xmm3, xmm3
subss xmm4, dword [esi + edx*4 - 4]
cvtss2sd xmm4, xmm4
mulsd xmm4, xmm4
mov ebx, dword [esi + eax*4 - 4]
addsd xmm3, xmm4
sqrtsd xmm3, xmm3
cvtsd2ss xmm3, xmm3
mov dword [esp + 8], ebx
jne 0x40c05d
movaps xmm3, xmm0
mov ebx, dword [edi*4 + 0x514a1c]
mov dword [esp + 0x10], ebx
comiss xmm3, xmm5
jbe 0x40c0e0
cmp eax, edx
je 0x40c0e0
mov ebx, dword [ebp + 0x24]
mov dword [esp + 4], eax
mov dword [esp], edi
mov esi, dword [edi*4 + 0x4ed91c]
mov eax, dword [ebp + 0x20]
mov edi, dword [edi*4 + 0x50119c]
mov dword [ebx + ecx*4], edi
mov edi, dword [ebp + 0x28]
mov dword [eax + ecx*4], esi
mov esi, dword [esp + 0x10]
mov dword [edi + ecx*4], esi
mov esi, dword [ebp + 0xc]
mov esi, dword [esi + edx*4 - 4]
mov dword [eax + ecx*4 + 4], esi
mov esi, dword [ebp + 0x10]
mov edx, dword [esi + edx*4 - 4]
mov esi, dword [ebp + 0x1c]
mov dword [ebx + ecx*4 + 4], edx
mov edx, 0x47c34f80
mov dword [edi + ecx*4 + 4], edx
add ecx, 3
mov dword [esi], ecx
mov esi, dword [esp + 0xc]
mov dword [eax + ecx*4 - 4], esi
mov eax, dword [esp + 8]
mov dword [ebx + ecx*4 - 4], eax
mov dword [edi + ecx*4 - 4], edx
mov eax, dword [esp + 4]
mov edx, eax
mov edi, dword [esp]
cmp edi, dword [eax*4 + 0x5282a0]
je 0x40c162
cmp eax, edx
je 0x40c160
mov esi, dword [ebp + 0x20]
mov ebx, dword [ebp + 0x24]
mov dword [esp + 4], eax
mov eax, dword [edi*4 + 0x4ed91c]
mov dword [esi + ecx*4], eax
mov eax, dword [edi*4 + 0x50119c]
mov dword [ebx + ecx*4], eax
mov eax, dword [ebp + 0x28]
mov edi, dword [edi*4 + 0x514a1c]
mov dword [eax + ecx*4], edi
mov edi, dword [ebp + 0xc]
mov dword [eax + ecx*4 + 4], 0x47c34f80
mov eax, dword [ebp + 0x1c]
mov edi, dword [edi + edx*4 - 4]
mov dword [esi + ecx*4 + 4], edi
mov edi, dword [ebp + 0x10]
mov edx, dword [edi + edx*4 - 4]
mov dword [ebx + ecx*4 + 4], edx
add ecx, 3
mov dword [eax], ecx
mov eax, dword [esp + 4]
mov edx, dword [ebp + 0xc]
mov edx, dword [edx + eax*4 - 4]
mov dword [esi + ecx*4 - 4], edx
mov esi, dword [edi + eax*4 - 4]
mov dword [ebx + ecx*4 - 4], esi
mov ebx, dword [ebp + 0x28]
mov dword [ebx + ecx*4 - 4], 0x47c34f80
xor edx, edx
inc eax
cmp eax, dword [esp + 0xd0]
jg 0x40c22f
cmp ecx, 0x4e16
jle 0x40bf04
mov eax, dword [ebp + 0x2c]
mov dword [eax], 1
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x28
cmp edx, 4
jl 0x40c22b
lea edi, [eax*4]
mov dword [esp + 4], edi
lea edi, [eax*4 + 0x5282ac]
and edi, 0xf
mov ecx, edi
neg ecx
add ecx, 0x10
shr ecx, 2
test edi, edi
cmovne edi, ecx
lea ebx, [edi + 4]
cmp edx, ebx
jl 0x40c22b
mov ecx, edx
sub ecx, edi
and ecx, 3
neg ecx
add ecx, edx
test edi, edi
jbe 0x40c1f3
mov dword [esp], esi
xor ebx, ebx
mov esi, dword [esp + 4]
mov dword [esi + ebx*4 + 0x52829c], 0
inc ebx
cmp ebx, edi
jb 0x40c1e0
mov esi, dword [esp]
mov ebx, dword [esp + 4]
pxor xmm0, xmm0
movdqa xmmword [ebx + edi*4 + 0x52829c], xmm0
add edi, 4
cmp edi, ecx
jb 0x40c1fb
cmp ecx, edx
jae 0x40bebd
shl eax, 2
mov dword [eax + ecx*4 + 0x52829c], 0
inc ecx
cmp ecx, edx
jb 0x40c216
jmp 0x40bebd
xor ecx, ecx
jmp 0x40c20b
mov esi, dword [ebp + 0x28]
mov edi, dword [ebp + 0x24]
mov ebx, dword [ebp + 0x1c]
test byte [esp + 0xb8], 1
je 0x40c185
movss xmm0, dword [0x49f9e8]
inc ecx
mov dword [ebx], ecx
mov eax, dword [esi]
comiss xmm0, dword [esi]
jbe 0x40c27a
mov ebx, dword [ebp + 0x20]
mov dword [esi + ecx*4 - 4], eax
mov edx, dword [ebx]
mov dword [ebx + ecx*4 - 4], edx
mov edx, dword [edi]
mov dword [edi + ecx*4 - 4], edx
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x28
mov edx, dword [ebp + 0x20]
mov ebx, dword [edi + 4]
mov dword [edi + ecx*4 - 4], ebx
mov eax, dword [edx + 4]
mov dword [edx + ecx*4 - 4], eax
mov dword [esi + ecx*4 - 4], 0
add esp, 0xd4
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret 0x28
cmp ecx, 1
jle 0x40bfbf
mov ebx, dword [ebp + 0x28]
movss xmm3, dword [ebx + ecx*4 - 4]
comiss xmm3, xmm2
jbe 0x40bfbf
inc ecx
mov esi, dword [ebp + 0x20]
mov ebx, dword [esi + ecx*4 - 8]
mov dword [esi + ecx*4 - 4], ebx
mov esi, dword [ebp + 0x24]
mov ebx, dword [esi + ecx*4 - 8]
mov dword [esi + ecx*4 - 4], ebx
mov ebx, dword [ebp + 0x28]
mov dword [ebx + ecx*4 - 4], 0
jmp 0x40bfbf
mov eax, dword [esp + 0x3c]
mov dword [0x5d803c], eax
jmp 0x40be37
mov dword [esp + 0x30], edx
mov ebx, edx
mov dword [0x5d8038], eax
mov esi, 1
mov edi, dword [esi*4 + 0x52829c]
test edi, edi
jle 0x40c31b
cmp ecx, esi
jle 0x40c315
mov edx, edi
jmp 0x40c31b
test ebx, ebx
jne 0x40c325
mov ebx, edi
test edx, edx
je 0x40c329
test ebx, ebx
jne 0x40c32e
jmp 0x40c329
test edx, edx
jne 0x40c32e
inc esi
cmp esi, eax
jle 0x40c302
mov dword [esp + 0x30], edx
xor edx, edx
movss xmm0, dword [ecx*4 + 0x514a1c]
comiss xmm1, xmm0
jbe 0x40c348
pxor xmm6, xmm6
jmp 0x40c37a
movaps xmm5, xmm1
divss xmm5, xmm0
movss xmm6, dword [0x49f9ec]
movss xmm7, dword [0x49f9ec]
subss xmm6, xmm5
mulss xmm6, xmm6
subss xmm7, xmm6
movaps xmm6, xmm0
mulss xmm6, xmm3
sqrtss xmm7, xmm7
mulss xmm6, xmm7
movaps xmm5, xmm6
andps xmm5, xmmword [0x49f800]
comiss xmm2, xmm5
jbe 0x40c38f
mov dword [esp + 0x34], edx
jmp 0x40c3b5
mulss xmm0, xmm4
mov edi, 3
divss xmm0, xmm6
cvttss2si esi, xmm0
cmp esi, 3
cmovl esi, edi
mov edi, 7
cmp esi, 7
cmovge esi, edi
mov dword [esp + 0x34], esi
cmp ebx, dword [esp + 0x30]
jl 0x40bd1b
movss xmm0, dword [ecx*4 + 0x514a1c]
movaps xmm5, xmm1
mov dword [esp + 0x3c], eax
addss xmm5, xmm0
movss xmm6, dword [ecx*4 + 0x4ed91c]
mov esi, dword [ecx*4 + 0x53bb1c]
movss dword [esp + 0x2c], xmm0
movss dword [esp + 0x28], xmm4
movss dword [esp + 0xcc], xmm1
mov edi, dword [esp + 0x30]
mov eax, dword [ebp + 0xc]
movss xmm4, dword [eax + edi*4 - 8]
movaps xmm2, xmm6
subss xmm2, xmm4
movaps xmm0, xmm2
andps xmm0, xmmword [0x49f800]
comiss xmm0, xmm5
ja 0x40c647
mov edx, dword [ebp + 0x10]
movss xmm3, dword [ecx*4 + 0x50119c]
movaps xmm1, xmm3
movss xmm0, dword [edx + edi*4 - 8]
movss dword [esp + 0x38], xmm0
subss xmm1, xmm0
movaps xmm7, xmm1
andps xmm7, xmmword [0x49f800]
comiss xmm7, xmm5
ja 0x40c647
movss xmm0, dword [eax + edi*4 - 4]
movaps xmm7, xmm6
movss dword [esp + 0x20], xmm0
subss xmm7, xmm0
movss dword [esp + 0x24], xmm7
andps xmm7, xmmword [0x49f800]
comiss xmm7, xmm5
ja 0x40c647
mov edx, dword [ebp + 0x10]
movaps xmm7, xmm3
movss xmm0, dword [edx + edi*4 - 4]
movss dword [esp + 0x18], xmm0
subss xmm7, xmm0
movss dword [esp + 0x1c], xmm7
andps xmm7, xmmword [0x49f800]
comiss xmm7, xmm5
ja 0x40c647
xorps xmm2, xmmword [0x49f810]
xorps xmm1, xmmword [0x49f810]
cvtss2sd xmm7, xmm2
cvtss2sd xmm0, xmm1
mulsd xmm7, xmm7
mulsd xmm0, xmm0
addsd xmm7, xmm0
sqrtsd xmm7, xmm7
cvtsd2ss xmm7, xmm7
subss xmm7, dword [esp + 0x2c]
andps xmm7, xmmword [0x49f800]
comiss xmm7, dword [esp + 0xcc]
ja 0x40c647
movss xmm0, dword [esp + 0x24]
movss xmm7, dword [esp + 0x1c]
xorps xmm0, xmmword [0x49f810]
xorps xmm7, xmmword [0x49f810]
cvtss2sd xmm0, xmm0
cvtss2sd xmm7, xmm7
mulsd xmm0, xmm0
mulsd xmm7, xmm7
addsd xmm0, xmm7
sqrtsd xmm0, xmm0
cvtsd2ss xmm0, xmm0
subss xmm0, dword [esp + 0x2c]
andps xmm0, xmmword [0x49f800]
comiss xmm0, dword [esp + 0xcc]
ja 0x40c647
movss xmm7, dword [esp + 0x20]
movss xmm0, dword [esp + 0x18]
subss xmm7, xmm4
subss xmm0, dword [esp + 0x38]
cvtss2sd xmm7, xmm7
cvtss2sd xmm0, xmm0
movsd qword [esp + 0x10], xmm7
movsd qword [esp + 8], xmm0
mulsd xmm7, xmm7
mulsd xmm0, xmm0
addsd xmm7, xmm0
pxor xmm0, xmm0
movsd qword [esp], xmm7
comisd xmm7, xmm0
jbe 0x40c66a
cvtss2sd xmm2, xmm2
cvtss2sd xmm1, xmm1
mulsd xmm2, qword [esp + 0x10]
mulsd xmm1, qword [esp + 8]
pxor xmm0, xmm0
addsd xmm2, xmm1
comisd xmm0, xmm2
jb 0x40c66a
divsd xmm2, qword [esp]
xorps xmm2, xmmword [0x49f820]
pxor xmm0, xmm0
comisd xmm2, xmm0
jb 0x40c66a
movsd xmm0, qword [0x49f898]
comisd xmm0, xmm2
jb 0x40c66a
movsd xmm0, qword [esp + 0x10]
movsd xmm1, qword [esp + 8]
cvtss2sd xmm7, dword [esp + 0x38]
cvtss2sd xmm4, xmm4
mulsd xmm0, xmm2
mulsd xmm1, xmm2
addsd xmm4, xmm0
addsd xmm7, xmm1
cvtsd2ss xmm4, xmm4
cvtsd2ss xmm7, xmm7
movaps xmm2, xmm6
subss xmm3, xmm7
subss xmm2, xmm4
cvtss2sd xmm3, xmm3
cvtss2sd xmm2, xmm2
mulsd xmm3, xmm3
mulsd xmm2, xmm2
movss xmm0, dword [esp + 0x2c]
addsd xmm2, xmm3
sqrtsd xmm2, xmm2
cvtsd2ss xmm2, xmm2
subss xmm0, xmm2
andps xmm0, xmmword [0x49f800]
comiss xmm0, dword [esp + 0xcc]
jbe 0x40c66a
cmp esi, dword [esp + 0x34]
jge 0x40c696
test esi, esi
jle 0x40c68d
xor esi, esi
mov dword [ecx*4 + 0x53bb1c], esi
mov dword [ecx*8 + 0x54f398], esi
mov dword [ecx*8 + 0x54f39c], esi
jmp 0x40c68d
inc esi
mov dword [ecx*4 + 0x53bb1c], esi
cmp dword [ecx*8 + 0x54f398], 0
jne 0x40c686
lea edx, [edi - 1]
mov dword [ecx*8 + 0x54f398], edx
mov dword [ecx*8 + 0x54f39c], edi
inc edi
cmp edi, ebx
jle 0x40c3ff
movss xmm2, dword [0x49f9dc]
xor edx, edx
movss xmm3, dword [0x49f9d0]
movss xmm4, dword [esp + 0x28]
movss xmm1, dword [esp + 0xcc]
mov eax, dword [esp + 0x3c]
jmp 0x40bd1b