Function at 0x46a4d0
Capabilities:
Check os version

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x573063
mov eax, dword fs:[0]
push eax
sub esp, 0x1a8
push ebx
push esi
push edi
mov eax, dword [0x59ad00]
xor eax, esp
push eax
lea eax, [esp + 0x1b8]
mov dword fs:[0], eax
mov esi, ecx
mov ebx, dword [ebp + 0x10]
mov edi, dword [ebp + 0x1c]
xor ecx, ecx
mov dword [esp + 0x40], ecx
movq xmm0, qword [ebx]
mov al, byte [esi + 0x39]
movq qword [esp + 0x8c], xmm0
movq xmm0, qword [ebx + 8]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [edi]
movq qword [esp + 0xa4], xmm0
movq xmm0, qword [edi + 8]
movq qword [esp + 0xac], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [esp + 0xb4], xmm0
movsd xmm0, qword [esi + 0x20]
movsd qword [esp + 0x1c], xmm0
movsd xmm0, qword [0x57b8f8]
mov byte [esp + 0x1b], al
mov dword [esi + 0x88], ecx
movsd qword [esi + 0x30], xmm0
mov eax, dword [esi + 0xc0]
cmp eax, ecx
je 0x46a59d
push eax
call dword [sym.imp.MSVCR100.dll_free]
add esp, 4
xor ecx, ecx
mov dword [esi + 0xc0], ecx
mov dword [esi + 0xc8], ecx
mov eax, dword [esi + 0xcc]
cmp eax, ecx
je 0x46a5bf
push eax
call dword [sym.imp.MSVCR100.dll_free]
add esp, 4
xor ecx, ecx
mov dword [esi + 0xcc], ecx
mov dword [esi + 0xd4], ecx
movsd xmm0, qword [esi + 0x28]
mov dword [esi + 0xd8], ecx
movsd xmm1, qword [0x57ca30]
andpd xmm0, xmm1
comisd xmm0, xmmword [0x57e370]
mov byte [esp + 0x13], 1
ja 0x46a5f6
mov byte [esp + 0x13], 0
movsd xmm2, qword [ebp + 0x14]
subsd xmm2, qword [ebp + 8]
xorps xmm0, xmm0
andpd xmm2, xmm1
movsd xmm1, qword [0x57b958]
comisd xmm1, xmm2
movsd qword [esp + 0x13c], xmm0
movsd qword [esp + 0x144], xmm0
movsd qword [esp + 0x14c], xmm0
jbe 0x46a6eb
push 8
push 2
push 2
mov ecx, esi
call fcn.0045db10
mov ecx, dword [esi + 0xb4]
xorps xmm0, xmm0
movsd xmm1, qword [0x57b708]
movsd qword [ecx + 8], xmm0
mov edx, dword [esi + 0xb4]
movsd qword [edx], xmm0
mov eax, dword [esi + 0xb4]
movsd qword [eax + 0x18], xmm1
mov ecx, dword [esi + 0xb4]
movsd qword [ecx + 0x10], xmm1
mov eax, dword [esi + 0x9c]
movq xmm1, qword [ebx]
movq qword [eax], xmm1
movq xmm1, qword [ebx + 8]
movq qword [eax + 8], xmm1
movq xmm1, qword [ebx + 0x10]
movq qword [eax + 0x10], xmm1
mov eax, dword [esi + 0x9c]
movq xmm1, qword [edi]
movq qword [eax + 0x18], xmm1
movq xmm1, qword [edi + 8]
lea edx, [esp + 0x13c]
push edx
movq qword [eax + 0x20], xmm1
movq xmm1, qword [edi + 0x10]
sub esp, 8
mov ecx, esi
movq qword [eax + 0x28], xmm1
movsd qword [esp], xmm0
call fcn.00476ba0
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [esi + 0x94]
cmp dword [esi + 0xbc], eax
jl 0x46a705
mov ecx, dword [esi + 0xb4]
movsd xmm0, qword [ecx + eax*8 - 8]
mov ecx, esi
movsd qword [esp + 0x2c], xmm0
call fcn.0045cfd0
fstp qword [esp + 0x5c]
movsd xmm4, qword [ebp + 8]
movsd xmm7, qword [esp + 0x2c]
movsd xmm6, qword [0x57ca30]
movsd xmm1, qword [0x57b958]
movapd xmm0, xmm4
subsd xmm0, xmm7
andpd xmm0, xmm6
comisd xmm1, xmm0
jbe 0x46a77a
cmp byte [esp + 0x13], 0
movapd xmm4, xmm7
movsd qword [ebp + 8], xmm4
jne 0x46a77a
mov eax, dword [esi + 0x9c]
movq xmm0, qword [ebx]
movq qword [eax], xmm0
movq xmm0, qword [ebx + 8]
movq qword [eax + 8], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [eax + 0x10], xmm0
movsd xmm4, qword [ebp + 8]
movsd xmm0, qword [ebp + 0x14]
movapd xmm2, xmm0
subsd xmm2, xmm7
andpd xmm2, xmm6
comisd xmm1, xmm2
jbe 0x46a79a
movapd xmm0, xmm7
movsd qword [ebp + 0x14], xmm0
movsd xmm3, qword [esp + 0x5c]
movapd xmm2, xmm4
subsd xmm2, xmm3
andpd xmm2, xmm6
comisd xmm1, xmm2
jbe 0x46a7bb
movapd xmm4, xmm3
movsd qword [ebp + 8], xmm4
movapd xmm2, xmm0
subsd xmm2, xmm3
andpd xmm2, xmm6
comisd xmm1, xmm2
jbe 0x46a818
cmp byte [esp + 0x13], 0
movapd xmm0, xmm3
movsd qword [ebp + 0x14], xmm0
jne 0x46a818
mov eax, dword [esi + 0x90]
movq xmm0, qword [edi]
lea edx, [eax + eax*2]
mov eax, dword [esi + 0x9c]
movq qword [eax + edx*8 - 0x18], xmm0
movq xmm0, qword [edi + 8]
lea eax, [eax + edx*8 - 0x18]
movq qword [eax + 8], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [eax + 0x10], xmm0
movsd xmm0, qword [ebp + 0x14]
movsd xmm4, qword [ebp + 8]
movsd xmm5, qword [0x57e398]
movapd xmm1, xmm5
addsd xmm1, xmm4
comisd xmm1, xmm0
jbe 0x46a8da
cmp byte [esp + 0x1b], 0
jne 0x46a8c7
lea ecx, [ebp + 0x14]
push ecx
lea edx, [ebp + 8]
push edx
call fcn.004d5f50
movq xmm0, qword [edi]
movsd xmm4, qword [ebp + 8]
movsd xmm5, qword [0x57e398]
movsd xmm3, qword [esp + 0x64]
movsd xmm7, qword [esp + 0x34]
movsd xmm6, qword [0x57ca30]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [edi + 8]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [edi + 0x10]
movq qword [esp + 0xa4], xmm0
movq xmm0, qword [ebx]
movq qword [esp + 0xac], xmm0
movq xmm0, qword [ebx + 8]
movq qword [esp + 0xb4], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [esp + 0xbc], xmm0
movsd xmm0, qword [ebp + 0x14]
add esp, 8
jmp 0x46a8da
movsd xmm1, qword [esp + 0x1c]
addsd xmm1, xmm0
movapd xmm0, xmm1
movsd qword [ebp + 0x14], xmm0
mov eax, dword [esi + 0x98]
shr eax, 2
test al, 1
je 0x46aa1b
mov ecx, esi
call fcn.00465ab0
mov eax, dword [esi + 0x94]
cmp dword [esi + 0xbc], eax
jl 0x46a90e
mov ecx, dword [esi + 0xb4]
movsd xmm0, qword [ecx + eax*8 - 8]
jmp 0x46a911
xorps xmm0, xmm0
mov ecx, esi
movsd qword [esp + 0x2c], xmm0
call fcn.0045cfd0
fst qword [esp + 0x5c]
fsub qword [esp + 0x2c]
mov edx, dword [esi]
mov edx, dword [edx + 0x64]
lea eax, [esp + 0x8c]
push eax
fstp qword [esp + 0x20]
mov ecx, esi
call edx
fstp qword [ebp + 8]
movsd xmm0, qword [esp + 0x8c]
subsd xmm0, qword [esp + 0xa4]
movsd qword [esp + 0x74], xmm0
movsd xmm0, qword [esp + 0x94]
subsd xmm0, qword [esp + 0xac]
movsd qword [esp + 0x7c], xmm0
movsd xmm0, qword [esp + 0x9c]
subsd xmm0, qword [esp + 0xb4]
lea ecx, [esp + 0x74]
movsd qword [esp + 0x84], xmm0
call fcn.00473c80
fld qword [0x57e370]
movsd xmm2, qword [esp + 0x1c]
fxch st(1)
fcompi st(1)
fstp st(0)
jbe 0x46a9cc
mov eax, dword [esi]
mov edx, dword [eax + 0x64]
lea ecx, [esp + 0xa4]
push ecx
mov ecx, esi
call edx
fstp qword [ebp + 0x14]
movsd xmm0, qword [ebp + 0x14]
movsd xmm4, qword [ebp + 8]
movsd xmm2, qword [esp + 0x1c]
jmp 0x46a9de
movsd xmm4, qword [ebp + 8]
movapd xmm0, xmm2
addsd xmm0, xmm4
movsd qword [ebp + 0x14], xmm0
movsd xmm5, qword [0x57e398]
movsd xmm3, qword [esp + 0x5c]
movsd xmm7, qword [esp + 0x2c]
movsd xmm6, qword [0x57ca30]
movapd xmm1, xmm5
addsd xmm1, xmm4
comisd xmm1, xmm0
jbe 0x46aa23
movapd xmm1, xmm2
addsd xmm1, xmm0
movapd xmm0, xmm1
movsd qword [ebp + 0x14], xmm0
jmp 0x46aa23
movapd xmm2, xmm3
subsd xmm2, xmm7
movapd xmm1, xmm0
subsd xmm1, xmm4
andpd xmm1, xmm6
comisd xmm5, xmm1
jbe 0x46aa46
movapd xmm6, xmm2
addsd xmm0, xmm6
movsd qword [ebp + 0x14], xmm0
addsd xmm1, xmm2
subsd xmm2, xmm5
comisd xmm1, xmm2
jbe 0x46aad9
cmp byte [esp + 0x1b], 0
je 0x46ac1f
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
sub esp, 8
lea ecx, [esp + 0xc4]
movsd qword [esp], xmm7
push ecx
mov ecx, esi
movsd qword [esi + 0x10], xmm7
movsd qword [esi + 0x18], xmm3
call edx
movsd xmm0, qword [esi + 0x18]
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
sub esp, 8
lea ecx, [esp + 0x7c]
movsd qword [esp], xmm0
push ecx
mov ecx, esi
call edx
movsd xmm0, qword [0x57e370]
sub esp, 8
lea eax, [esp + 0x7c]
movsd qword [esp], xmm0
push eax
lea ecx, [esp + 0xc8]
call fcn.00473c20
mov byte [esi + 0x38], al
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp byte [esp + 0x1b], 0
je 0x46ac1f
movapd xmm1, xmm5
addsd xmm1, xmm3
comisd xmm0, xmm1
jbe 0x46ac1f
movapd xmm1, xmm3
subsd xmm1, xmm5
comisd xmm4, xmm1
jbe 0x46ab1b
subsd xmm4, xmm3
subsd xmm0, xmm3
movsd qword [ebp + 8], xmm4
movsd qword [ebp + 0x14], xmm0
jmp 0x46ac1f
mov edx, dword [esi]
mov eax, dword [edx + 0x28]
mov ecx, esi
call eax
mov edx, dword [esi]
movsd xmm0, qword [esp + 0x2c]
mov edx, dword [edx + 0x68]
sub esp, 8
mov ebx, eax
lea eax, [esp + 0x7c]
movsd qword [esp], xmm0
push eax
mov ecx, esi
call edx
movsd xmm0, qword [ebp + 8]
lea eax, [esp + 0x8c]
push eax
sub esp, 8
movsd qword [esp], xmm0
movsd xmm0, qword [esp + 0x38]
lea ecx, [esp + 0x80]
push ecx
sub esp, 8
mov ecx, ebx
movsd qword [esp], xmm0
call fcn.0046a4d0
mov edx, dword [esi]
mov eax, dword [edx + 0x28]
mov ecx, esi
call eax
movsd xmm0, qword [esp + 0x5c]
lea ecx, [esp + 0x74]
push ecx
sub esp, 8
movsd qword [esp], xmm0
movsd xmm0, qword [ebp + 8]
lea edx, [esp + 0x98]
push edx
mov edi, eax
sub esp, 8
mov ecx, edi
movsd qword [esp], xmm0
call fcn.0046a4d0
mov eax, dword [edi]
mov edx, dword [eax + 0x58]
push ebx
mov ecx, edi
call edx
mov dword [esp + 0x1c], eax
test ebx, ebx
je 0x46abca
mov eax, dword [ebx]
mov edx, dword [eax]
push 1
mov ecx, ebx
call edx
mov eax, dword [edi]
mov edx, dword [eax]
push 1
mov ecx, edi
call edx
mov edi, dword [esp + 0x1c]
push edi
mov ecx, esi
call fcn.0046a3f0
test edi, edi
je 0x46abee
mov eax, dword [edi]
mov edx, dword [eax]
push 1
mov ecx, edi
call edx
mov ecx, esi
call fcn.0045cf90
fstp qword [esp + 0x2c]
mov ecx, esi
call fcn.0045cfd0
fstp qword [esp + 0x5c]
mov eax, dword [esi]
fld qword [esp + 0x2c]
mov edx, dword [eax + 0x64]
fstp qword [ebp + 8]
lea ecx, [esp + 0xa4]
push ecx
mov ecx, esi
call edx
fstp qword [ebp + 0x14]
mov eax, dword [esi + 0x9c]
movq xmm0, qword [eax]
mov ecx, dword [esi + 0x90]
movq qword [esp + 0x16c], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x174], xmm0
movq xmm0, qword [eax + 0x10]
lea ecx, [ecx + ecx*2]
lea eax, [eax + ecx*8 - 0x18]
movq qword [esp + 0x17c], xmm0
movq xmm0, qword [eax]
movq qword [esp + 0x154], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x15c], xmm0
movq xmm0, qword [eax + 0x10]
sub esp, 8
movq qword [esp + 0x16c], xmm0
movsd xmm0, qword [0x57e370]
lea edx, [esp + 0x15c]
movsd qword [esp], xmm0
push edx
lea ecx, [esp + 0x178]
call fcn.00473c20
movsd xmm1, qword [esp + 0x2c]
movsd xmm3, qword [ebp + 8]
mov bl, al
test bl, bl
je 0x46ad8a
movsd xmm0, qword [0x57e398]
addsd xmm0, xmm1
comisd xmm0, xmm3
jbe 0x46ad1e
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
sub esp, 8
lea ecx, [esp + 0x7c]
movsd qword [esp], xmm1
push ecx
mov ecx, esi
movsd qword [ebp + 8], xmm1
call edx
movq xmm0, qword [eax]
movsd xmm3, qword [ebp + 8]
movsd xmm1, qword [esp + 0x2c]
movq qword [esp + 0x8c], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x9c], xmm0
movsd xmm0, qword [esp + 0x5c]
movsd xmm4, qword [ebp + 0x14]
movapd xmm2, xmm0
subsd xmm2, qword [0x57e398]
comisd xmm4, xmm2
jbe 0x46ad90
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
sub esp, 8
lea ecx, [esp + 0x7c]
movsd qword [esp], xmm0
push ecx
mov ecx, esi
movsd qword [ebp + 0x14], xmm0
call edx
movq xmm0, qword [eax]
movsd xmm3, qword [ebp + 8]
movsd xmm1, qword [esp + 0x2c]
movq qword [esp + 0xa4], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0xac], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0xb4], xmm0
movsd xmm0, qword [esp + 0x5c]
movsd xmm2, qword [0x57e398]
movapd xmm4, xmm2
addsd xmm4, xmm1
comisd xmm4, xmm3
jbe 0x46aeb7
movapd xmm4, xmm0
subsd xmm4, xmm2
movsd xmm2, qword [ebp + 0x14]
comisd xmm2, xmm4
jbe 0x46aeb7
test bl, bl
je 0x46adeb
mov byte [esi + 0x38], 1
movsd qword [esi + 0x10], xmm1
movsd qword [esi + 0x18], xmm0
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
sub esp, 8
lea ecx, [esp + 0x7c]
movsd qword [esp], xmm3
push ecx
mov ecx, esi
movsd qword [esi + 0x10], xmm3
movsd qword [esi + 0x18], xmm2
call edx
movq xmm0, qword [eax]
movq qword [esp + 0x8c], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [eax + 0x10]
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
sub esp, 8
movq qword [esp + 0xa4], xmm0
movsd xmm0, qword [ebp + 0x14]
lea ecx, [esp + 0x7c]
movsd qword [esp], xmm0
push ecx
mov ecx, esi
call edx
movq xmm0, qword [eax]
movq qword [esp + 0xa4], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0xac], xmm0
movq xmm0, qword [eax + 0x10]
sub esp, 8
movq qword [esp + 0xbc], xmm0
movsd xmm0, qword [0x57e370]
lea eax, [esp + 0xac]
movsd qword [esp], xmm0
push eax
lea ecx, [esp + 0x98]
call fcn.00473c20
mov byte [esi + 0x38], al
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
cmp byte [esp + 0x13], 0
movq xmm0, qword [esp + 0x8c]
movq xmm1, qword [esp + 0xac]
movq xmm2, qword [esp + 0xb4]
movq qword [esp + 0xbc], xmm0
movq xmm0, qword [esp + 0x94]
movq qword [esp + 0xc4], xmm0
movq xmm0, qword [esp + 0x9c]
movq qword [esp + 0xcc], xmm0
movq xmm0, qword [esp + 0xa4]
movq qword [esp + 0x74], xmm0
movq qword [esp + 0x7c], xmm1
movq qword [esp + 0x84], xmm2
je 0x46afc9
movsd xmm0, qword [esi + 0x28]
mov edx, dword [esi]
mov edx, dword [edx + 0x68]
sub esp, 8
lea eax, [esp + 0xdc]
movsd qword [esp + 0x24], xmm0
xorps xmm0, xmm0
movsd qword [esp], xmm3
push eax
mov ecx, esi
movsd qword [esi + 0x28], xmm0
call edx
movq xmm0, qword [eax]
movq qword [esp + 0xbc], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0xc4], xmm0
movq xmm0, qword [eax + 0x10]
mov eax, dword [esi]
mov edx, dword [eax + 0x68]
sub esp, 8
movq qword [esp + 0xd4], xmm0
movsd xmm0, qword [ebp + 0x14]
lea ecx, [esp + 0xdc]
movsd qword [esp], xmm0
push ecx
mov ecx, esi
call edx
movq xmm0, qword [eax]
movq xmm1, qword [eax + 8]
movq xmm2, qword [eax + 0x10]
movsd xmm3, qword [esp + 0x1c]
movq qword [esp + 0x74], xmm0
movq qword [esp + 0x7c], xmm1
movq qword [esp + 0x84], xmm2
movsd qword [esi + 0x28], xmm3
mov ecx, dword [esi + 0x90]
cmp ecx, 2
jne 0x46b0a7
mov eax, dword [esi + 0x9c]
movq xmm3, qword [esp + 0xbc]
movq qword [eax], xmm3
movq xmm3, qword [esp + 0xc4]
movq qword [eax + 8], xmm3
movq xmm3, qword [esp + 0xcc]
movq qword [eax + 0x10], xmm3
mov eax, dword [esi + 0x90]
mov ecx, dword [esi + 0x9c]
lea eax, [eax + eax*2]
movq qword [ecx + eax*8 - 0x18], xmm0
movq qword [ecx + eax*8 - 0x10], xmm1
movq qword [ecx + eax*8 - 8], xmm2
mov edx, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 8]
lea eax, [ecx + eax*8 - 0x18]
movsd qword [edx + 8], xmm0
mov eax, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 8]
movsd qword [eax], xmm0
mov ecx, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 0x14]
movsd qword [ecx + 0x18], xmm0
mov edx, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 0x14]
movsd qword [edx + 0x10], xmm0
movsd xmm0, qword [ebp + 8]
movsd qword [esi + 0x10], xmm0
movsd xmm0, qword [ebp + 0x14]
mov ecx, esi
movsd qword [esi + 0x18], xmm0
call fcn.0045b790
mov byte [esi + 0x38], 0
call fcn.0045dd30
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [esi + 0x94]
lea ebx, [ecx + eax - 1]
mov ecx, dword [esi + 0x90]
lea edx, [ecx + eax*2]
push edx
lea ecx, [esi + 0x9c]
call fcn.00401b40
test byte [esi + 0x98], 1
je 0x46b0ea
mov ecx, dword [esi + 0x90]
mov eax, dword [esi + 0x94]
lea edx, [ecx + eax*2]
push edx
lea ecx, [esi + 0xa8]
call fcn.00401a80
mov ecx, dword [esi + 0x94]
mov eax, dword [esi + 0x90]
add eax, ecx
mov dword [esp + 0x28], eax
lea eax, [eax + ecx*2]
push eax
lea ecx, [esi + 0xb4]
call fcn.00401a80
xor eax, eax
push ebx
lea ecx, [esp + 0xd8]
mov dword [esp + 0xdc], 1
mov dword [esp + 0xe0], eax
mov dword [esp + 0xd8], eax
call fcn.00401b40
xor eax, eax
mov dword [esp + 0x1c0], eax
mov dword [esp + 0x6c], 1
mov dword [esp + 0x70], eax
mov dword [esp + 0x68], eax
test byte [esi + 0x98], 1
mov byte [esp + 0x1c0], 1
je 0x46b167
push ebx
lea ecx, [esp + 0x6c]
call fcn.00401a80
mov eax, dword [esi + 0x94]
xor ecx, ecx
add eax, ebx
mov dword [esp + 0x58], ecx
mov dword [esp + 0x50], ecx
push eax
lea ecx, [esp + 0x54]
mov dword [esp + 0x58], 1
call fcn.00401a80
mov ebx, dword [esi + 0x94]
movsd xmm0, qword [ebp + 8]
sub esp, 8
dec ebx
mov ecx, esi
mov byte [esp + 0x1c8], 2
mov dword [esp + 0x40], ebx
movsd qword [esi + 0x10], xmm0
movsd qword [esp], xmm0
call fcn.0045d050
movsd xmm5, qword [esp + 0x2c]
test al, al
je 0x46b6ee
movsd xmm1, qword [0x57e398]
movsd xmm0, qword [ebp + 8]
movapd xmm2, xmm1
addsd xmm2, xmm5
comisd xmm0, xmm2
jbe 0x46b6ee
movsd xmm2, qword [esp + 0x5c]
subsd xmm2, xmm1
comisd xmm2, xmm0
movsd xmm2, qword [0x57b958]
jbe 0x46b6f6
mov eax, dword [esi + 0xb4]
xor ecx, ecx
movapd xmm1, xmm0
subsd xmm1, xmm2
comisd xmm1, xmmword [eax]
mov dword [esp + 0x44], ecx
jbe 0x46b22e
mov edx, eax
lea esp, [esp]
add edx, 8
inc ecx
comisd xmm1, xmmword [edx]
ja 0x46b220
mov dword [esp + 0x44], ecx
movsd xmm4, qword [0x57ca30]
lea edx, [ecx*8]
movsd xmm1, qword [edx + eax]
subsd xmm1, xmm0
andpd xmm1, xmm4
comisd xmm2, xmm1
jbe 0x46b28a
mov eax, dword [esi + 0xb4]
movsd qword [edx + eax], xmm0
mov eax, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 8]
inc ecx
movsd xmm1, qword [eax + ecx*8]
lea edx, [ecx*8]
subsd xmm1, xmm0
dec ebx
andpd xmm1, xmm4
comisd xmm2, xmm1
ja 0x46b250
mov dword [esp + 0x44], ecx
mov dword [esp + 0x38], ebx
mov edx, dword [esi + 0x94]
mov eax, ecx
sub eax, edx
add eax, ebx
dec edx
mov dword [esp + 0x48], eax
cmp eax, edx
jl 0x46b6fe
mov edx, dword [esi + 0x90]
sub edx, dword [esi + 0x94]
add edx, ebx
cmp eax, edx
jg 0x46b6fe
xor eax, eax
cmp ebx, eax
jle 0x46b4c5
mov dword [esp + 0x14], eax
mov dword [esp + 0x3c], eax
cmp ecx, 4
jl 0x46b36d
mov ebx, dword [esp + 0x50]
mov edx, 8
sub edx, ebx
mov dword [esp + 0x1c], edx
add ecx, 0xfffffffc
mov edx, 0xfffffff0
sub edx, ebx
shr ecx, 2
inc ecx
lea eax, [ebx + 0x10]
lea ebx, [ecx*4]
mov dword [esp + 0x34], 0x10
mov dword [esp + 0x4c], edx
mov dword [esp + 0x14], ebx
mov dword [esp + 0x3c], ebx
jmp 0x46b315
mov edx, dword [esp + 0x4c]
mov ebx, dword [esi + 0xb4]
add edx, eax
fld qword [edx + ebx]
fstp qword [eax - 0x10]
mov ebx, dword [esi + 0xb4]
fld qword [edx + ebx + 8]
mov ebx, dword [esp + 0x34]
add dword [esp + 0x34], 0x20
fstp qword [eax - 8]
mov edx, dword [esi + 0xb4]
fld qword [ebx + edx]
mov edx, dword [esp + 0x1c]
fstp qword [eax]
mov ebx, dword [esi + 0xb4]
add edx, eax
fld qword [edx + ebx]
add eax, 0x20
dec ecx
fstp qword [eax - 0x18]
jne 0x46b311
movsd xmm0, qword [ebp + 8]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
mov ebx, dword [esp + 0x38]
cmp eax, ecx
jge 0x46b39c
mov edx, dword [esi + 0xb4]
fld qword [edx + eax*8]
mov eax, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
fstp qword [edx + eax*8]
inc eax
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x3c]
inc eax
mov dword [esp + 0x3c], eax
cmp eax, ecx
jl 0x46b371
movsd xmm0, qword [ebp + 8]
test ebx, ebx
jle 0x46b3c9
mov eax, dword [esp + 0x14]
mov dword [esp + 0x1c], ebx
jmp 0x46b3b5
movsd xmm0, qword [ebp + 8]
mov edx, dword [esp + 0x50]
movsd qword [edx + eax*8], xmm0
inc eax
dec dword [esp + 0x1c]
jne 0x46b3b0
mov dword [esp + 0x14], eax
mov edx, dword [esp + 0x28]
mov eax, ecx
cmp ecx, edx
jge 0x46b47a
sub edx, ecx
cmp edx, 4
jl 0x46b454
mov ebx, dword [esp + 0x14]
mov edx, dword [esp + 0x50]
lea edx, [edx + ebx*8 + 0x10]
mov ebx, dword [esp + 0x28]
add ebx, 0xfffffffd
sub ebx, ecx
mov ecx, dword [esp + 0x14]
dec ebx
shr ebx, 2
lea ecx, [ecx + ebx*4 + 4]
mov ebx, dword [esp + 0x28]
mov dword [esp + 0x14], ecx
jmp 0x46b410
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8]
add eax, 4
fstp qword [edx - 0x10]
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8 - 0x18]
add edx, 0x20
fstp qword [edx - 0x28]
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8 - 0x10]
fstp qword [edx - 0x20]
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8 - 8]
lea ecx, [ebx - 3]
fstp qword [edx - 0x18]
cmp eax, ecx
jl 0x46b410
mov ebx, dword [esp + 0x38]
cmp eax, dword [esp + 0x28]
jge 0x46b47a
mov edx, dword [esp + 0x14]
mov ecx, dword [esp + 0x50]
lea ecx, [ecx + edx*8]
mov edx, dword [esi + 0xb4]
fld qword [edx + eax*8]
inc eax
fstp qword [ecx]
add ecx, 8
cmp eax, dword [esp + 0x28]
jl 0x46b465
mov dl, byte [esi + 0x98]
mov eax, dword [esi + 0x90]
lea ecx, [esp + 0x50]
push ecx
and dl, 1
movzx ecx, dl
mov edx, dword [esi + 0x94]
push ecx
push 0
add eax, ebx
push edx
push eax
mov dword [esp + 0x60], eax
lea eax, [esp + 0x7c]
push eax
lea ecx, [esp + 0xec]
push ecx
mov ecx, esi
call fcn.00462ba0
mov edx, dword [esp + 0x4c]
mov dword [esi + 0x90], edx
jmp 0x46b556
xor edx, edx
cmp dword [esi + 0x90], eax
jle 0x46b50c
xor ecx, ecx
mov eax, dword [esi + 0x9c]
movq xmm0, qword [eax + ecx]
mov ebx, dword [esp + 0xd4]
movq qword [ebx + ecx], xmm0
movq xmm0, qword [eax + ecx + 8]
movq qword [ebx + ecx + 8], xmm0
movq xmm0, qword [eax + ecx + 0x10]
movq qword [ebx + ecx + 0x10], xmm0
inc edx
add ecx, 0x18
cmp edx, dword [esi + 0x90]
jl 0x46b4d1
mov eax, dword [esp + 0x28]
mov edx, dword [esi + 0xb4]
lea ecx, [eax*8]
mov eax, dword [esp + 0x50]
push ecx
push edx
push eax
call sub.MSVCR100.dll_memcpy
add esp, 0xc
test byte [esi + 0x98], 1
je 0x46b556
mov ecx, dword [esi + 0x90]
mov edx, dword [esi + 0xa8]
mov eax, dword [esp + 0x68]
add ecx, ecx
add ecx, ecx
add ecx, ecx
push ecx
push edx
push eax
call sub.MSVCR100.dll_memcpy
add esp, 0xc
mov edx, dword [esi + 0x90]
mov eax, dword [esi + 0x9c]
movq xmm0, qword [esp + 0xbc]
mov ecx, dword [esp + 0x48]
movq qword [eax], xmm0
movq xmm0, qword [esp + 0xc4]
sub edx, ecx
movq qword [eax + 8], xmm0
movq xmm0, qword [esp + 0xcc]
movq qword [eax + 0x10], xmm0
cmp edx, 1
jle 0x46b5e5
mov eax, dword [esp + 0xd4]
lea ecx, [ecx + ecx*2 + 3]
lea ecx, [eax + ecx*8]
lea eax, [edx - 1]
mov ebx, 0x18
mov dword [esp + 0x1c], eax
movq xmm0, qword [ecx]
mov eax, dword [esi + 0x9c]
movq qword [eax + ebx], xmm0
movq xmm0, qword [ecx + 8]
movq qword [eax + ebx + 8], xmm0
movq xmm0, qword [ecx + 0x10]
movq qword [eax + ebx + 0x10], xmm0
add ebx, 0x18
add ecx, 0x18
dec dword [esp + 0x1c]
jne 0x46b5b0
mov ecx, dword [esp + 0x48]
test byte [esi + 0x98], 1
je 0x46b667
xor eax, eax
cmp edx, 4
jl 0x46b643
mov ebx, dword [esp + 0x68]
lea ecx, [ebx + ecx*8]
mov ebx, dword [esi + 0xa8]
fld qword [ecx]
fstp qword [ebx + eax*8]
mov ebx, dword [esi + 0xa8]
fld qword [ecx + 8]
add eax, 4
fstp qword [ebx + eax*8 - 0x18]
mov ebx, dword [esi + 0xa8]
fld qword [ecx + 0x10]
add ecx, 0x20
fstp qword [ebx + eax*8 - 0x10]
mov ebx, dword [esi + 0xa8]
fld qword [ecx - 8]
fstp qword [ebx + eax*8 - 8]
lea ebx, [edx - 3]
cmp eax, ebx
jl 0x46b600
mov ecx, dword [esp + 0x48]
cmp eax, edx
jge 0x46b667
mov ebx, dword [esp + 0x68]
add ecx, eax
lea ecx, [ebx + ecx*8]
fld qword [ecx]
mov ebx, dword [esi + 0xa8]
fstp qword [ebx + eax*8]
inc eax
add ecx, 8
cmp eax, edx
jl 0x46b650
mov ecx, dword [esp + 0x48]
xor eax, eax
mov dword [esi + 0x90], edx
cmp dword [esi + 0x94], eax
jle 0x46b699
jmp 0x46b680
mov edx, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 8]
movsd qword [edx + eax*8], xmm0
inc eax
cmp eax, dword [esi + 0x94]
jl 0x46b680
mov eax, dword [esi + 0x94]
mov edx, dword [esi + 0x90]
add edx, eax
cmp eax, edx
jge 0x46b6d3
mov edx, dword [esp + 0x50]
add ecx, eax
lea ecx, [edx + ecx*8]
mov edx, dword [esi + 0xb4]
fld qword [ecx]
fstp qword [edx + eax*8]
mov edx, dword [esi + 0x90]
add edx, dword [esi + 0x94]
inc eax
add ecx, 8
cmp eax, edx
jl 0x46b6b4
movsd xmm0, qword [ebp + 8]
and dword [esi + 0x98], 0xfffffff7
movapd xmm5, xmm0
movsd qword [esi + 0x10], xmm0
movsd qword [esp + 0x2c], xmm5
movsd xmm2, qword [0x57b958]
movsd xmm4, qword [0x57ca30]
mov ebx, dword [esi + 0xbc]
mov eax, dword [esi + 0x94]
movsd xmm0, qword [ebp + 0x14]
movsd qword [esi + 0x18], xmm0
cmp ebx, eax
jl 0x46b726
mov ecx, dword [esi + 0xb4]
movsd xmm3, qword [ecx + eax*8 - 8]
jmp 0x46b729
xorps xmm3, xmm3
movsd xmm1, qword [0x57e398]
subsd xmm3, xmm1
comisd xmm0, xmm3
jbe 0x46bd3c
mov edx, dword [esi + 0x90]
lea ecx, [edx + eax]
mov dword [esp + 0x14], ecx
cmp ebx, ecx
jl 0x46b779
mov ebx, dword [esi + 0x98]
shr ebx, 2
test bl, 1
je 0x46b76c
mov edx, dword [esi + 0xb4]
movsd xmm3, qword [edx + ecx*8 - 8]
jmp 0x46b781
mov ecx, dword [esi + 0xb4]
movsd xmm3, qword [ecx + edx*8]
jmp 0x46b781
movsd xmm3, qword [0x57b708]
addsd xmm3, xmm1
comisd xmm3, xmm0
jbe 0x46bd3c
movapd xmm3, xmm1
addsd xmm3, xmm5
comisd xmm0, xmm3
jbe 0x46bd3c
movsd xmm3, qword [esp + 0x5c]
subsd xmm3, xmm1
comisd xmm3, xmm0
jbe 0x46bd3c
mov edx, dword [esi + 0xb4]
xor ecx, ecx
movapd xmm1, xmm0
lea ebx, [eax - 1]
subsd xmm1, xmm2
comisd xmm1, xmmword [edx]
mov dword [esp + 0x44], ecx
mov dword [esp + 0x38], ebx
jbe 0x46b7e6
mov eax, edx
add eax, 8
inc ecx
comisd xmm1, xmmword [eax]
ja 0x46b7d8
mov dword [esp + 0x44], ecx
lea eax, [ecx*8]
movsd xmm1, qword [eax + edx]
subsd xmm1, xmm0
andpd xmm1, xmm4
comisd xmm2, xmm1
jbe 0x46b83a
mov edx, dword [esi + 0xb4]
movsd qword [eax + edx], xmm0
mov edx, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 0x14]
inc ecx
lea eax, [ecx*8]
movsd xmm1, qword [eax + edx]
subsd xmm1, xmm0
dec ebx
andpd xmm1, xmm4
comisd xmm2, xmm1
ja 0x46b800
mov dword [esp + 0x44], ecx
mov dword [esp + 0x38], ebx
mov edx, dword [esi + 0x94]
mov eax, ecx
sub eax, edx
add eax, ebx
lea ebx, [edx - 1]
mov dword [esp + 0x48], eax
cmp eax, ebx
jl 0x46bcdb
mov ebx, dword [esi + 0x90]
sub ebx, edx
mov edx, dword [esp + 0x38]
add ebx, edx
cmp eax, ebx
jg 0x46bcdb
xor ebx, ebx
test edx, edx
jle 0x46ba6b
xor eax, eax
mov dword [esp + 0x28], ebx
cmp ecx, 4
jl 0x46b921
mov ebx, dword [esp + 0x50]
mov edx, 8
sub edx, ebx
mov dword [esp + 0x1c], edx
add ecx, 0xfffffffc
mov edx, 0xfffffff0
sub edx, ebx
shr ecx, 2
inc ecx
lea eax, [ebx + 0x10]
lea ebx, [ecx*4]
mov dword [esp + 0x34], 0x10
mov dword [esp + 0x4c], edx
mov dword [esp + 0x3c], ebx
mov dword [esp + 0x28], ebx
jmp 0x46b8c5
mov edx, dword [esp + 0x4c]
mov ebx, dword [esi + 0xb4]
add edx, eax
fld qword [edx + ebx]
fstp qword [eax - 0x10]
mov ebx, dword [esi + 0xb4]
fld qword [edx + ebx + 8]
mov ebx, dword [esp + 0x34]
add dword [esp + 0x34], 0x20
fstp qword [eax - 8]
mov edx, dword [esi + 0xb4]
fld qword [ebx + edx]
mov edx, dword [esp + 0x1c]
fstp qword [eax]
mov ebx, dword [esi + 0xb4]
add edx, eax
fld qword [edx + ebx]
add eax, 0x20
dec ecx
fstp qword [eax - 0x18]
jne 0x46b8c1
movsd xmm0, qword [ebp + 0x14]
mov ebx, dword [esp + 0x28]
mov eax, dword [esp + 0x3c]
mov ecx, dword [esp + 0x44]
mov edx, dword [esp + 0x38]
cmp eax, ecx
jge 0x46b967
lea edx, [eax*8]
mov dword [esp + 0x40], edx
mov edx, ecx
sub edx, eax
mov eax, dword [esp + 0x40]
mov dword [esp + 0x1c], edx
lea esp, [esp]
mov edx, dword [esi + 0xb4]
fld qword [eax + edx]
mov edx, dword [esp + 0x50]
fstp qword [edx + ebx*8]
inc ebx
add eax, 8
dec dword [esp + 0x1c]
jne 0x46b940
movsd xmm0, qword [ebp + 0x14]
mov edx, dword [esp + 0x38]
mov dword [esp + 0x28], ebx
test edx, edx
jle 0x46b985
mov eax, edx
mov edx, dword [esp + 0x50]
jmp 0x46b978
movsd xmm0, qword [ebp + 0x14]
movsd qword [edx + ebx*8], xmm0
inc ebx
dec eax
jne 0x46b973
mov dword [esp + 0x28], ebx
mov edx, dword [esp + 0x14]
mov eax, ecx
cmp ecx, edx
jge 0x46ba26
sub edx, ecx
cmp edx, 4
jl 0x46ba04
mov edx, dword [esp + 0x14]
add edx, 0xfffffffd
mov dword [esp + 0x40], edx
mov edx, dword [esp + 0x50]
lea edx, [edx + ebx*8 + 0x10]
mov ebx, dword [esp + 0x40]
sub ebx, ecx
mov ecx, dword [esp + 0x28]
dec ebx
shr ebx, 2
lea ebx, [ecx + ebx*4 + 4]
nop
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8]
add eax, 4
fstp qword [edx - 0x10]
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8 - 0x18]
add edx, 0x20
fstp qword [edx - 0x28]
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8 - 0x10]
fstp qword [edx - 0x20]
mov ecx, dword [esi + 0xb4]
fld qword [ecx + eax*8 - 8]
mov ecx, dword [esp + 0x14]
fstp qword [edx - 0x18]
add ecx, 0xfffffffd
cmp eax, ecx
jl 0x46b9c0
mov ecx, dword [esp + 0x14]
cmp eax, ecx
jge 0x46ba26
mov edx, dword [esp + 0x50]
lea ebx, [edx + ebx*8]
mov edx, dword [esi + 0xb4]
fld qword [edx + eax*8]
inc eax
fstp qword [ebx]
add ebx, 8
cmp eax, ecx
jl 0x46ba13
mov cl, byte [esi + 0x98]
mov ebx, dword [esi + 0x90]
add ebx, dword [esp + 0x38]
and cl, 1
movzx edx, cl
lea eax, [esp + 0x50]
push eax
mov eax, dword [esi + 0x94]
push edx
push 0
push eax
push ebx
lea ecx, [esp + 0x7c]
push ecx
lea edx, [esp + 0xec]
push edx
mov ecx, esi
call fcn.00462ba0
mov dword [esi + 0x90], ebx
jmp 0x46bafa
cmp dword [esi + 0x90], ebx
jle 0x46bab0
xor ecx, ecx
mov eax, dword [esi + 0x9c]
movq xmm0, qword [eax + ecx]
mov edx, dword [esp + 0xd4]
movq qword [edx + ecx], xmm0
movq xmm0, qword [eax + ecx + 8]
movq qword [edx + ecx + 8], xmm0
movq xmm0, qword [eax + ecx + 0x10]
movq qword [edx + ecx + 0x10], xmm0
inc ebx
add ecx, 0x18
cmp ebx, dword [esi + 0x90]
jl 0x46ba75
mov eax, dword [esp + 0x14]
mov edx, dword [esi + 0xb4]
lea ecx, [eax*8]
mov eax, dword [esp + 0x50]
push ecx
push edx
push eax
call sub.MSVCR100.dll_memcpy
add esp, 0xc
test byte [esi + 0x98], 1
je 0x46bafa
mov ecx, dword [esi + 0x90]
mov edx, dword [esi + 0xa8]
mov eax, dword [esp + 0x68]
add ecx, ecx
add ecx, ecx
add ecx, ecx
push ecx
push edx
push eax
call sub.MSVCR100.dll_memcpy
add esp, 0xc
mov ecx, dword [esp + 0x48]
inc ecx
lea eax, [ecx - 1]
mov dword [esp + 0x4c], ecx
test eax, eax
jle 0x46bb49
xor edx, edx
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0xd4]
movq xmm0, qword [edx + eax]
lea ebx, [edx + eax]
mov eax, dword [esi + 0x9c]
movq qword [eax + edx], xmm0
movq xmm0, qword [ebx + 8]
movq qword [eax + edx + 8], xmm0
movq xmm0, qword [ebx + 0x10]
movq qword [eax + edx + 0x10], xmm0
add edx, 0x18
dec dword [esp + 0x1c]
jne 0x46bb10
mov eax, dword [esi + 0x9c]
movq xmm0, qword [esp + 0x74]
lea edx, [ecx + ecx*2]
lea eax, [eax + edx*8 - 0x18]
movq qword [eax], xmm0
movq xmm0, qword [esp + 0x7c]
movq qword [eax + 8], xmm0
movq xmm0, qword [esp + 0x84]
movq qword [eax + 0x10], xmm0
test byte [esi + 0x98], 1
je 0x46bc41
xor eax, eax
cmp ecx, 4
jl 0x46bc23
mov ebx, dword [esp + 0x68]
mov edx, 8
sub edx, ebx
mov dword [esp + 0x34], edx
add ecx, 0xfffffffc
mov edx, 0xfffffff0
sub edx, ebx
shr ecx, 2
inc ecx
lea eax, [ebx + 0x10]
lea ebx, [ecx*4]
mov dword [esp + 0x1c], 0x10
mov dword [esp + 0x40], edx
mov dword [esp + 0x3c], ebx
jmp 0x46bbd4
mov edx, dword [esp + 0x40]
mov ebx, dword [esi + 0xa8]
fld qword [eax - 0x10]
add edx, eax
fstp qword [edx + ebx]
mov ebx, dword [esi + 0xa8]
fld qword [eax - 8]
add eax, 0x20
fstp qword [ebx + edx + 8]
mov edx, dword [esi + 0xa8]
fld qword [eax - 0x20]
mov ebx, dword [esp + 0x1c]
add dword [esp + 0x1c], 0x20
fstp qword [ebx + edx]
mov edx, dword [esi + 0xa8]
fld qword [eax - 0x18]
add edx, dword [esp + 0x34]
dec ecx
fstp qword [edx + eax - 0x20]
jne 0x46bbd0
mov ecx, dword [esp + 0x4c]
mov eax, dword [esp + 0x3c]
cmp eax, ecx
jge 0x46bc41
mov edx, dword [esp + 0x68]
jmp 0x46bc30
fld qword [edx + eax*8]
mov ebx, dword [esi + 0xa8]
fstp qword [ebx + eax*8]
inc eax
cmp eax, ecx
jl 0x46bc30
xor eax, eax
mov dword [esi + 0x90], ecx
test ecx, ecx
jle 0x46bc66
mov ecx, dword [esp + 0x50]
fld qword [ecx + eax*8]
mov edx, dword [esi + 0xb4]
fstp qword [edx + eax*8]
inc eax
cmp eax, dword [esi + 0x90]
jl 0x46bc51
mov eax, dword [esi + 0x90]
mov ecx, dword [esi + 0x94]
add ecx, eax
cmp eax, ecx
jge 0x46bca1
jmp 0x46bc80
mov edx, dword [esi + 0xb4]
movsd xmm0, qword [ebp + 0x14]
movsd qword [edx + eax*8], xmm0
mov ecx, dword [esi + 0x90]
add ecx, dword [esi + 0x94]
inc eax
cmp eax, ecx
jl 0x46bc80
movsd xmm0, qword [ebp + 0x14]
and dword [esi + 0x98], 0xfffffff7
movsd qword [esi + 0x18], xmm0
movsd xmm0, qword [esp + 0x2c]
subsd xmm0, qword [0x57e398]
comisd xmm0, xmmword [esi + 0x10]
jbe 0x46bcdb
mov edx, dword [esi]
mov edx, dword [edx + 0x64]
lea eax, [esp + 0x8c]
push eax
mov ecx, esi
call edx
fstp qword [esi + 0x10]
mov eax, dword [esi + 0x90]
push eax
lea ecx, [esi + 0x9c]
call fcn.00401b40
test byte [esi + 0x98], 1
je 0x46bd08
mov ecx, dword [esi + 0x90]
push ecx
lea ecx, [esi + 0xa8]
call fcn.00401a80
mov edx, dword [esi + 0x90]
add edx, dword [esi + 0x94]
lea ecx, [esi + 0xb4]
push edx
call fcn.00401a80
cmp dword [esi + 0x94], 2
mov eax, dword [esi + 0x90]
jne 0x46be8b
dec eax
mov dword [esi + 0x3c], eax
jmp 0x46beda
addsd xmm1, xmm5
comisd xmm1, xmm0
jbe 0x46bcdb
push 0xe0
call sub.MSVCR100.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x1c], eax
xor edi, edi
cmp eax, edi
je 0x46be3a
movq xmm0, qword [esp + 0x74]
movq qword [esp + 0xfc], xmm0
movq xmm0, qword [esp + 0x7c]
mov edx, vtable.CGeom_Point.0
movq qword [esp + 0x104], xmm0
movq xmm0, qword [esp + 0x84]
mov ecx, 0xa
mov byte [esp + 0xf0], 1
mov dword [esp + 0xf4], edi
mov dword [esp + 0xec], edx
movq qword [esp + 0x10c], xmm0
mov dword [esp + 0xf8], ecx
movq xmm0, qword [esp + 0xbc]
movq qword [esp + 0x124], xmm0
movq xmm0, qword [esp + 0xc4]
movq qword [esp + 0x12c], xmm0
movq xmm0, qword [esp + 0xcc]
mov byte [esp + 0x118], 1
mov dword [esp + 0x11c], edi
mov dword [esp + 0x114], edx
movq qword [esp + 0x134], xmm0
mov dword [esp + 0x120], ecx
lea ecx, [esp + 0xec]
push ecx
lea edx, [esp + 0x118]
mov ebx, 3
push edx
mov ecx, eax
mov dword [esp + 0x1c8], 5
mov dword [esp + 0x48], ebx
call fcn.00495900
mov edi, eax
jmp 0x46be3e
mov ebx, dword [esp + 0x40]
mov eax, vtable.CGeom_Abs.0
test bl, 2
je 0x46be52
and ebx, 0xfffffffd
mov dword [esp + 0x114], eax
mov dword [esp + 0x1c0], 2
test bl, 1
je 0x46be69
mov dword [esp + 0xec], eax
push edi
mov ecx, esi
call fcn.004634c0
mov byte [esi + 4], al
test edi, edi
je 0x46bf08
mov eax, dword [edi]
mov edx, dword [eax]
push 1
mov ecx, edi
call edx
jmp 0x46bf08
test byte [esi + 0x98], 1
je 0x46be9c
lea ecx, [eax + eax*4]
mov dword [esi + 0x3c], ecx
jmp 0x46beda
cmp eax, 0x96
jle 0x46beac
mov dword [esi + 0x3c], 0x96
jmp 0x46beda
cmp eax, 0x19
jle 0x46beb7
dec eax
mov dword [esi + 0x3c], eax
jmp 0x46beda
cmp eax, 0xa
jle 0x46bec2
lea edx, [eax + eax - 2]
jmp 0x46bed7
cmp eax, 6
jle 0x46bed0
lea eax, [eax + eax*2 - 3]
mov dword [esi + 0x3c], eax
jmp 0x46beda
lea ecx, [eax + eax*2]
lea edx, [ecx + ecx - 6]
mov dword [esi + 0x3c], edx
movsd xmm0, qword [0x57e370]
sub esp, 8
lea eax, [esp + 0xac]
movsd qword [esp], xmm0
push eax
lea ecx, [esp + 0x98]
call fcn.00473c20
mov ecx, esi
mov byte [esi + 0x38], al
call fcn.0045dd30
mov eax, dword [esp + 0x50]
mov esi, dword [sym.imp.MSVCR100.dll_free]
test eax, eax
je 0x46bf1c
push eax
call esi
add esp, 4
mov eax, dword [esp + 0x68]
test eax, eax
je 0x46bf2a
push eax
call esi
add esp, 4
mov eax, dword [esp + 0xd4]
test eax, eax
je 0x46bf3b
push eax
call esi
add esp, 4
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18