Function at 0x4e2270
Capabilities:
Access peb ldr_data

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x5f291f
mov eax, dword fs:[0]
push eax
sub esp, 0x1a8
push ebx
push esi
push edi
mov eax, dword [0x615cbc]
xor eax, esp
push eax
lea eax, [esp + 0x1b8]
mov dword fs:[0], eax
mov ebx, ecx
xor edi, edi
mov dword [esp + 0x2c], 1
mov dword [esp + 0x30], edi
mov dword [esp + 0x28], edi
mov ecx, dword [ebp + 8]
mov eax, dword [ecx + 0xc]
mov dword [esp + 0x1c0], edi
cmp eax, 0x31
jne 0x4e231f
mov esi, dword [ecx + 0x54]
push esi
lea ecx, [esp + 0x2c]
call fcn.00412b00
test esi, esi
jle 0x4e2383
mov dword [esp + 0x24], edi
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
add ecx, eax
push edi
lea edx, [esp + 0x70]
mov dword [esp + 0x38], ecx
mov ecx, dword [ebp + 8]
push edx
call fcn.004a4d50
movq xmm0, qword [eax]
mov ecx, dword [esp + 0x34]
add dword [esp + 0x24], 0x10
movq qword [ecx], xmm0
movq xmm0, qword [eax + 8]
inc edi
cmp edi, esi
movq qword [ecx + 8], xmm0
jl 0x4e22e1
jmp 0x4e2383
cmp eax, 0x13
jne 0x4e239a
mov ecx, dword [ecx + 0x54]
cmp ecx, 4
jle 0x4e239a
mov esi, ecx
push esi
lea ecx, [esp + 0x2c]
call fcn.00412b00
test esi, esi
jle 0x4e2383
mov dword [esp + 0x24], 0
mov eax, dword [esp + 0x28]
mov ecx, dword [esp + 0x24]
add ecx, eax
push edi
lea edx, [esp + 0x88]
mov dword [esp + 0x38], ecx
mov ecx, dword [ebp + 8]
push edx
call fcn.004cb960
movq xmm0, qword [eax]
mov ecx, dword [esp + 0x34]
add dword [esp + 0x24], 0x10
movq qword [ecx], xmm0
movq xmm0, qword [eax + 8]
inc edi
cmp edi, esi
movq qword [ecx + 8], xmm0
jl 0x4e2344
cmp esi, 2
jge 0x4e23b4
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4e239a
push eax
call dword [sym.imp.MSVCR90.dll_free]
add esp, 4
xor eax, eax
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
jne 0x4e2541
fldz
mov eax, dword [esp + 0x28]
sub esp, 8
fstp qword [esp]
push eax
lea ecx, [esp + 0x78]
push ecx
mov ecx, ebx
call fcn.0046a050
xorps xmm0, xmm0
movsd qword [esp + 0xa4], xmm0
movsd qword [esp + 0x9c], xmm0
movsd qword [esp + 0x94], xmm0
mov byte [esp + 0x88], 1
mov dword [esp + 0x8c], 0
mov esi, vtable.CGeom_Point.0
mov dword [esp + 0x84], esi
movq xmm0, qword [eax]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [eax + 0x10]
mov edi, 0xa
movq qword [esp + 0xa4], xmm0
mov dword [esp + 0x90], edi
fldz
mov eax, dword [esp + 0x28]
sub esp, 8
fstp qword [esp]
add eax, 0x10
push eax
lea edx, [esp + 0x40]
push edx
mov ecx, ebx
mov byte [esp + 0x1d0], 1
call fcn.0046a050
xorps xmm0, xmm0
movsd qword [esp + 0xd4], xmm0
movsd qword [esp + 0xcc], xmm0
movsd qword [esp + 0xc4], xmm0
mov byte [esp + 0xb8], 1
mov dword [esp + 0xbc], 0
mov dword [esp + 0xb4], esi
movq xmm0, qword [eax]
movq qword [esp + 0xc4], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0xcc], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0xd4], xmm0
mov dword [esp + 0xc0], edi
push 0xe0
mov byte [esp + 0x1c4], 2
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x34], eax
mov byte [esp + 0x1c0], 3
test eax, eax
je 0x4e2527
lea ecx, [esp + 0xb4]
push ecx
lea edx, [esp + 0x88]
push edx
mov ecx, eax
call fcn.004eddd0
mov esi, eax
mov eax, vtable.CGeom_Abs.0
mov dword [esp + 0xb4], eax
mov dword [esp + 0x84], eax
jmp 0x4e2c4e
mov eax, vtable.CGeom_Abs.0
xor esi, esi
mov dword [esp + 0xb4], eax
mov dword [esp + 0x84], eax
jmp 0x4e2c4e
mov ecx, dword [esp + 0x28]
xorps xmm0, xmm0
lea edi, [esi - 1]
mov eax, edi
movsd qword [esp + 0x54], xmm0
movsd qword [esp + 0x4c], xmm0
shl eax, 4
movsd xmm0, qword [eax + ecx]
subsd xmm0, qword [ecx]
add eax, ecx
movsd qword [esp + 0x4c], xmm0
movsd xmm0, qword [eax + 8]
subsd xmm0, qword [ecx + 8]
lea ecx, [esp + 0x4c]
mov dword [esp + 0x24], edi
movsd qword [esp + 0x54], xmm0
call fcn.004a7500
fld qword [0x5ff780]
fcompi st(1)
fstp st(0)
jbe 0x4e25b4
cmp esi, 3
jne 0x4e25af
lea eax, [esp + 0x28]
push eax
push esi
mov ecx, ebx
call fcn.004e0fa0
mov esi, eax
jmp 0x4e2c4e
dec edi
mov dword [esp + 0x24], edi
mov eax, edi
cdq
sub eax, edx
sar eax, 1
shl eax, 4
mov edi, eax
mov eax, dword [esp + 0x28]
movsd xmm0, qword [eax + edi]
movsd xmm1, qword [eax + edi + 8]
subsd xmm0, qword [eax]
subsd xmm1, qword [eax + 8]
lea ecx, [esp + 0x4c]
movq qword [esp + 0x4c], xmm0
movq qword [esp + 0x54], xmm1
call fcn.004a7bc0
fld qword [0x5ff758]
fcompi st(1)
fstp st(0)
jbe 0x4e260d
lea ecx, [esp + 0x28]
push ecx
push esi
mov ecx, ebx
call fcn.004e0fa0
mov esi, eax
jmp 0x4e2c4e
mov eax, dword [esp + 0x28]
xorps xmm0, xmm0
mov ecx, dword [esp + 0x24]
shl ecx, 4
movsd qword [esp + 0x64], xmm0
movsd qword [esp + 0x5c], xmm0
movsd xmm0, qword [eax + ecx]
subsd xmm0, qword [eax + edi]
movsd qword [esp + 0x5c], xmm0
movsd xmm0, qword [eax + ecx + 8]
subsd xmm0, qword [eax + edi + 8]
mov dword [esp + 0x34], ecx
lea ecx, [esp + 0x5c]
movsd qword [esp + 0x64], xmm0
call fcn.004a7500
fld qword [0x5ff758]
fcompi st(1)
fstp st(0)
jbe 0x4e2676
lea edx, [esp + 0x28]
push edx
push esi
mov ecx, ebx
call fcn.004e0fa0
mov esi, eax
jmp 0x4e2c4e
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x50]
call fcn.004a74a0
fstp qword [esp + 0xac]
movsd xmm0, qword [0x5ff758]
movsd xmm1, qword [esp + 0xac]
movsd xmm2, qword [0x5fc860]
andpd xmm1, xmm2
comisd xmm0, xmm1
movsd qword [esp + 0xdc], xmm0
jbe 0x4e28c9
mov edi, 1
cmp esi, edi
jle 0x4e273b
mov ecx, 0x10
mov dword [esp + 0x24], ecx
jmp 0x4e26d4
mov ecx, dword [esp + 0x24]
mov eax, dword [esp + 0x28]
movsd xmm0, qword [ecx + eax]
movsd xmm1, qword [ecx + eax + 8]
subsd xmm0, qword [eax]
subsd xmm1, qword [eax + 8]
lea ecx, [esp + 0x5c]
push ecx
lea ecx, [esp + 0x50]
movq qword [esp + 0x60], xmm0
movq qword [esp + 0x68], xmm1
call fcn.004a74a0
fstp qword [esp + 0xac]
movsd xmm0, qword [esp + 0xac]
movsd xmm1, qword [0x5fc860]
andpd xmm0, xmm1
comisd xmm0, xmmword [esp + 0xdc]
ja 0x4e2662
add dword [esp + 0x24], 0x10
inc edi
cmp edi, esi
jl 0x4e26d0
fldz
mov eax, dword [esp + 0x28]
sub esp, 8
fstp qword [esp]
push eax
lea ecx, [esp + 0x78]
push ecx
mov ecx, ebx
call fcn.0046a050
xorps xmm0, xmm0
movsd qword [esp + 0xd4], xmm0
movsd qword [esp + 0xcc], xmm0
movsd qword [esp + 0xc4], xmm0
mov byte [esp + 0xb8], 1
mov dword [esp + 0xbc], 0
mov dword [esp + 0xb4], vtable.CGeom_Point.0
movq xmm0, qword [eax]
movq qword [esp + 0xc4], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0xcc], xmm0
movq xmm0, qword [eax + 0x10]
mov edi, 0xa
movq qword [esp + 0xd4], xmm0
mov dword [esp + 0xc0], edi
fldz
mov edx, dword [esp + 0x28]
sub esp, 8
shl esi, 4
fstp qword [esp]
lea esi, [esi + edx - 0x10]
push esi
lea eax, [esp + 0x40]
push eax
mov ecx, ebx
mov byte [esp + 0x1d0], 4
call fcn.0046a050
xorps xmm0, xmm0
movsd qword [esp + 0xa4], xmm0
movsd qword [esp + 0x9c], xmm0
movsd qword [esp + 0x94], xmm0
mov byte [esp + 0x88], 1
mov dword [esp + 0x8c], 0
mov dword [esp + 0x84], vtable.CGeom_Point.0
movq xmm0, qword [eax]
movq qword [esp + 0x94], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x9c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0xa4], xmm0
mov dword [esp + 0x90], edi
push 0xe0
mov byte [esp + 0x1c4], 5
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x34], eax
mov byte [esp + 0x1c0], 6
test eax, eax
je 0x4e28af
lea ecx, [esp + 0x84]
push ecx
lea edx, [esp + 0xb8]
push edx
mov ecx, eax
call fcn.004eddd0
mov esi, eax
mov eax, vtable.CGeom_Abs.0
mov dword [esp + 0x84], eax
mov dword [esp + 0xb4], eax
jmp 0x4e2c4e
mov eax, vtable.CGeom_Abs.0
xor esi, esi
mov dword [esp + 0x84], eax
mov dword [esp + 0xb4], eax
jmp 0x4e2c4e
cmp esi, 8
jge 0x4e28eb
lea eax, [esp + 0x28]
push eax
push esi
mov ecx, ebx
call fcn.004e0fa0
lea ecx, [esp + 0x28]
mov esi, eax
call fcn.00428180
jmp 0x4e2c60
mov eax, dword [esp + 0x28]
movsd xmm4, qword [0x5fb9c8]
movsd xmm0, qword [eax + edi]
addsd xmm0, qword [eax]
mov ecx, dword [esp + 0x34]
movsd xmm1, qword [eax + edi + 8]
addsd xmm1, qword [eax + 8]
movsd xmm3, qword [eax + ecx + 8]
addsd xmm3, qword [eax + edi + 8]
movsd xmm5, qword [esp + 0x4c]
movsd xmm6, qword [esp + 0x64]
mulsd xmm0, xmm4
movapd xmm2, xmm0
movsd xmm0, qword [eax + edi]
addsd xmm0, qword [eax + ecx]
mulsd xmm0, xmm4
mulsd xmm1, xmm4
movapd xmm7, xmm0
movsd xmm0, qword [esp + 0x54]
mulsd xmm1, xmm0
mulsd xmm2, xmm5
addsd xmm2, xmm1
movsd xmm1, qword [esp + 0x5c]
mulsd xmm3, xmm4
movsd xmm4, qword [0x5fc740]
xorpd xmm2, xmm4
mulsd xmm7, xmm1
mulsd xmm3, xmm6
addsd xmm3, xmm7
xorpd xmm3, xmm4
movapd xmm7, xmm0
mulsd xmm7, xmm1
mulsd xmm1, xmm2
movapd xmm4, xmm6
mulsd xmm0, xmm3
mulsd xmm6, xmm2
xorps xmm2, xmm2
mulsd xmm4, xmm5
subsd xmm0, xmm6
subsd xmm4, xmm7
divsd xmm0, xmm4
mulsd xmm5, xmm3
movsd qword [esp + 0x3c], xmm2
movsd qword [esp + 0x34], xmm2
movsd qword [esp + 0xe4], xmm0
subsd xmm1, xmm5
divsd xmm1, xmm4
movsd qword [esp + 0xec], xmm1
movsd xmm2, qword [eax]
subsd xmm2, xmm0
movsd qword [esp + 0x34], xmm2
movsd xmm0, qword [eax + 8]
subsd xmm0, xmm1
lea ecx, [esp + 0x34]
movsd qword [esp + 0x3c], xmm0
call fcn.004a7500
fstp qword [esp + 0x34]
mov eax, dword [esp + 0x28]
xorps xmm0, xmm0
movsd qword [esp + 0x74], xmm0
movsd qword [esp + 0x6c], xmm0
movsd xmm0, qword [eax + edi]
subsd xmm0, qword [eax]
movsd qword [esp + 0x6c], xmm0
movsd xmm0, qword [eax + edi + 8]
subsd xmm0, qword [eax + 8]
lea ecx, [esp + 0x6c]
movsd qword [esp + 0x74], xmm0
call fcn.004a7500
fdivr qword [esp + 0x34]
fld qword [0x5fcc50]
fxch st(1)
fcompi st(1)
fstp st(0)
jbe 0x4e2a54
lea ecx, [esp + 0x28]
push ecx
jmp 0x4e28d3
mov edi, 2
cmp esi, edi
jle 0x4e2adc
mov eax, 0x20
mov dword [esp + 0x24], eax
jmp 0x4e2a74
mov eax, dword [esp + 0x24]
mov ecx, dword [esp + 0x28]
xorps xmm0, xmm0
movsd qword [esp + 0x74], xmm0
movsd qword [esp + 0x6c], xmm0
movsd xmm0, qword [eax + ecx]
subsd xmm0, qword [esp + 0xe4]
movsd qword [esp + 0x6c], xmm0
movsd xmm0, qword [eax + ecx + 8]
subsd xmm0, qword [esp + 0xec]
lea ecx, [esp + 0x6c]
movsd qword [esp + 0x74], xmm0
call fcn.004a7500
fsub qword [esp + 0x34]
fabs
fld qword [esp + 0xdc]
fxch st(1)
fcompi st(1)
fstp st(0)
ja 0x4e2c28
add dword [esp + 0x24], 0x10
inc edi
cmp edi, esi
jl 0x4e2a70
fldz
sub esp, 8
fstp qword [esp]
lea eax, [esp + 0xec]
push eax
lea ecx, [esp + 0x78]
push ecx
mov ecx, ebx
call fcn.0046a050
push eax
lea ecx, [esp + 0x160]
call fcn.00424bc0
fldz
mov edx, dword [esp + 0x28]
sub esp, 8
fstp qword [esp]
push edx
lea eax, [esp + 0x40]
push eax
mov ecx, ebx
mov byte [esp + 0x1d0], 7
call fcn.0046a050
push eax
lea ecx, [esp + 0x138]
call fcn.00424bc0
fldz
mov ecx, dword [esp + 0x28]
sub esp, 8
shl esi, 4
fstp qword [esp]
lea eax, [esi + ecx - 0x10]
push eax
lea edx, [esp + 0x78]
push edx
mov ecx, ebx
mov byte [esp + 0x1d0], 8
call fcn.0046a050
push eax
lea ecx, [esp + 0x110]
call fcn.00424bc0
xorps xmm3, xmm3
comisd xmm3, xmmword [esp + 0xac]
movq xmm0, qword [ebx + 0x130]
movq xmm1, qword [ebx + 0x138]
movq xmm2, qword [ebx + 0x140]
mov byte [esp + 0x1c0], 9
movsd qword [esp + 0xf4], xmm0
movsd qword [esp + 0xfc], xmm1
movsd qword [esp + 0x104], xmm2
jbe 0x4e2be0
movsd xmm3, qword [0x5fc740]
xorpd xmm0, xmm3
xorpd xmm1, xmm3
xorpd xmm2, xmm3
movsd qword [esp + 0xf4], xmm0
movsd qword [esp + 0xfc], xmm1
movsd qword [esp + 0x104], xmm2
push 0x118
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x34], eax
mov byte [esp + 0x1c0], 0xa
test eax, eax
je 0x4e2c32
lea ecx, [esp + 0xf4]
push ecx
lea edx, [esp + 0x110]
push edx
lea ecx, [esp + 0x13c]
push ecx
lea edx, [esp + 0x168]
push edx
mov ecx, eax
call fcn.00539060
mov esi, eax
jmp 0x4e2c34
lea edx, [esp + 0x28]
push edx
jmp 0x4e28d3
xor esi, esi
mov eax, vtable.CGeom_Abs.0
mov dword [esp + 0x10c], eax
mov dword [esp + 0x134], eax
mov dword [esp + 0x15c], eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x4e2c60
push eax
call dword [sym.imp.MSVCR90.dll_free]
add esp, 4
mov eax, esi
mov ecx, dword [esp + 0x1b8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4