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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xffffffc0
push 0xffffffffffffffff
push 0x5f5646
mov eax, dword fs:[0]
push eax
sub esp, 0x328
push ebx
push esi
push edi
mov eax, dword [0x615cbc]
xor eax, esp
push eax
lea eax, [esp + 0x338]
mov dword fs:[0], eax
mov edi, ecx
mov esi, dword [ebp + 8]
mov al, byte [esi + 0x120]
test al, al
je 0x547533
cmp byte [esi + 0x151], 0
movsd xmm2, qword [edi + 0xd8]
movsd xmm4, qword [edi + 0x30]
movsd xmm1, qword [edi + 0x38]
xorps xmm5, xmm5
movapd xmm0, xmm4
addsd xmm0, xmm2
addsd xmm1, xmm2
movsd qword [esp + 0x34], xmm0
movsd qword [esp + 0x44], xmm1
je 0x5470ca
cmp byte [esi + 0x152], 0
je 0x5470ca
mulsd xmm1, xmm0
movsd xmm0, qword [0x5ff758]
xorpd xmm0, xmmword [0x5fc740]
comisd xmm1, xmm0
jbe 0x5470ca
movsd xmm1, qword [edi + 0xc8]
comisd xmm1, xmm5
jbe 0x5470ca
movsd xmm0, qword [edi + 0xd0]
comisd xmm0, xmm5
jbe 0x5470ca
comisd xmm0, xmm1
jbe 0x5470ca
push 0
lea ecx, [edi + 0xf0]
push esi
call fcn.004aaa60
mov dword [esp + 0x28], eax
lea eax, [edi + 0x148]
push eax
lea ecx, [esp + 0xf8]
call fcn.00424bc0
mov ebx, 1
push ebx
push esi
lea ecx, [esp + 0xfc]
mov dword [esp + 0x348], 0
call fcn.004aaa60
lea ecx, [edi + 0x118]
push ecx
lea ecx, [esp + 0x120]
mov dword [esp + 0x24], eax
call fcn.00424bc0
push ebx
push esi
lea ecx, [esp + 0x124]
mov byte [esp + 0x348], bl
call fcn.004aaa60
movzx edx, byte [esi + 0x132]
cmp byte [esi + 0x130], 0
push 0
push 0
mov dword [esp + 0x34], eax
movzx eax, byte [esi + 0x131]
push edx
seta cl
push eax
mov eax, dword [esi + 0x144]
movzx edx, cl
mov ecx, dword [eax + 0xa8]
push edx
push ecx
mov ecx, dword [esi + 0x148]
push 0xc6
call fcn.005318b0
mov edx, dword [esi + 0x148]
mov dword [edx + 0x28], ebx
mov eax, dword [0x6189c8]
mov ecx, dword [0x5feb84]
push eax
push ecx
mov ecx, dword [esi + 0x144]
push 0xc6
call fcn.00531470
mov edx, dword [0x5feb84]
mov eax, dword [esp + 0x28]
mov ecx, dword [esi + 0x144]
push 0xffffffffffffffff
push edx
push eax
call fcn.00531470
mov ecx, dword [0x5feb84]
mov edx, dword [esp + 0x20]
push 0xffffffffffffffff
push ecx
mov ecx, dword [esi + 0x144]
push edx
call fcn.00531470
fld qword [edi + 0xd0]
mov eax, dword [0x5feb84]
mov ecx, dword [esi + 0x144]
push eax
sub esp, 8
fstp qword [esp]
call fcn.005312b0
mov ecx, dword [0x5feb84]
fld qword [edi + 0xc8]
push ecx
mov ecx, dword [esi + 0x144]
sub esp, 8
fstp qword [esp]
call fcn.005312b0
mov edx, dword [0x5feb84]
mov eax, dword [esp + 0x2c]
mov ecx, dword [esi + 0x144]
push 0xffffffffffffffff
push edx
push eax
call fcn.00531470
mov ecx, dword [0x5feb88]
push 0xffffffffffffffff
push ecx
mov ecx, dword [esi + 0x144]
push 0
call fcn.00531470
mov edx, dword [esi + 0x144]
mov eax, dword [edx + 0xa8]
mov ecx, dword [esi + 0x148]
push eax
call fcn.00531930
mov byte [esi + 0x14d], bl
mov byte [esi + 0x14c], 0
movsd xmm2, qword [0x5fc740]
movsd xmm1, qword [0x5ff758]
movsd xmm0, qword [edi + 0xd8]
xorpd xmm1, xmm2
comisd xmm1, xmmword [esp + 0x34]
xorpd xmm0, xmm2
movsd xmm2, qword [0x616648]
ja 0x5470a9
comisd xmm1, xmmword [esp + 0x44]
jbe 0x5470ad
subsd xmm0, xmm2
movapd xmm1, xmm2
addsd xmm2, xmm0
movsd qword [esi + 0x160], xmm2
movsd qword [esi + 0x168], xmm1
jmp 0x547b53
movsd xmm3, qword [edi + 0xd0]
fldz
movq xmm0, qword [edi + 0x118]
movq xmm1, qword [edi + 0x120]
movq xmm2, qword [edi + 0x128]
mulsd xmm0, xmm3
mulsd xmm1, xmm3
mulsd xmm2, xmm3
movsd xmm3, qword [edi + 0x100]
addsd xmm3, xmm0
movsd xmm0, qword [edi + 0x108]
sub esp, 8
addsd xmm0, xmm1
fstp qword [esp]
lea edx, [esp + 0x54]
lea ecx, [edi + 0x130]
movsd qword [esp + 0x154], xmm0
movsd xmm0, qword [edi + 0x110]
push edx
lea eax, [esp + 0x200]
mov dword [esp + 0x34], ecx
addsd xmm0, xmm2
push eax
mov ecx, edi
movsd qword [esp + 0x154], xmm3
movsd qword [esp + 0x164], xmm0
movsd qword [esp + 0x5c], xmm4
movsd qword [esp + 0x64], xmm5
call fcn.0046a050
fldz
movsd xmm0, qword [edi + 0x38]
sub esp, 8
fstp qword [esp]
lea ecx, [esp + 0x54]
push ecx
lea edx, [esp + 0x1d0]
push edx
mov ecx, edi
movsd qword [esp + 0x5c], xmm0
call fcn.0046a050
movsd xmm0, qword [edi + 0x30]
movsd xmm4, qword [edi + 0x100]
movsd xmm2, qword [edi + 0x150]
movsd xmm3, qword [edi + 0x158]
movsd qword [esp + 0x34], xmm0
movsd xmm0, qword [edi + 0xc8]
movapd xmm1, xmm0
mulsd xmm1, qword [edi + 0x148]
mulsd xmm2, xmm0
subsd xmm4, xmm1
movsd xmm1, qword [edi + 0x108]
mulsd xmm3, xmm0
subsd xmm1, xmm2
movsd xmm2, qword [edi + 0x150]
movsd qword [esp + 0x1e4], xmm1
movsd xmm1, qword [edi + 0x110]
subsd xmm1, xmm3
movsd xmm3, qword [edi + 0x158]
movsd qword [esp + 0x1ec], xmm1
movapd xmm1, xmm0
mulsd xmm0, qword [edi + 0x148]
addsd xmm0, qword [edi + 0x100]
movsd qword [esp + 0x1ac], xmm0
movsd xmm0, qword [edi + 0x108]
push 2
lea eax, [esp + 0x1b0]
mulsd xmm2, xmm1
addsd xmm0, xmm2
movsd qword [esp + 0x1b8], xmm0
movsd xmm0, qword [edi + 0x110]
push eax
lea ecx, [esp + 0x1e4]
mulsd xmm3, xmm1
push ecx
addsd xmm0, xmm3
mov ebx, 1
add byte [esi + 0x130], bl
mov ecx, esi
movsd qword [esp + 0x1e8], xmm4
movsd qword [esp + 0x1c8], xmm0
call fcn.00531d40
mov edx, dword [0x6189c8]
movq xmm0, qword [esp + 0x144]
add edx, 0xfffffffe
movq qword [esp + 0x104], xmm0
movq xmm0, qword [esp + 0x14c]
mov dword [esp + 0x20], edx
xor edi, edi
mov edx, vtable.CGeom_Point.0
movq qword [esp + 0x10c], xmm0
movq xmm0, qword [esp + 0x154]
mov eax, 0xa
mov byte [esp + 0xf8], bl
mov dword [esp + 0xfc], edi
mov dword [esp + 0xf4], edx
movq qword [esp + 0x114], xmm0
mov dword [esp + 0x100], eax
movq xmm0, qword [esp + 0x1f4]
movq qword [esp + 0x12c], xmm0
movq xmm0, qword [esp + 0x1fc]
movq qword [esp + 0x134], xmm0
movq xmm0, qword [esp + 0x204]
mov dword [esp + 0x340], 2
mov byte [esp + 0x120], bl
mov dword [esp + 0x124], edi
mov dword [esp + 0x11c], edx
movq qword [esp + 0x13c], xmm0
mov dword [esp + 0x128], eax
movq xmm0, qword [esp + 0x1c4]
movq qword [esp + 0x194], xmm0
movq xmm0, qword [esp + 0x1cc]
movq qword [esp + 0x19c], xmm0
movq xmm0, qword [esp + 0x1d4]
mov byte [esp + 0x188], bl
mov dword [esp + 0x18c], edi
mov dword [esp + 0x184], edx
movq qword [esp + 0x1a4], xmm0
mov dword [esp + 0x190], eax
push 0x118
mov byte [esp + 0x344], 4
call sub.MSVCR90.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x40], eax
mov byte [esp + 0x340], 5
cmp eax, edi
je 0x5473ec
mov ecx, dword [esp + 0x28]
push ecx
lea edx, [esp + 0x188]
push edx
lea ecx, [esp + 0x124]
push ecx
lea edx, [esp + 0x100]
push edx
mov ecx, eax
call fcn.00539060
mov edi, eax
mov eax, dword [edi]
mov edx, dword [eax + 0x3c]
push esi
mov ecx, edi
mov byte [esp + 0x344], 4
call edx
mov eax, dword [edi]
mov edx, dword [eax]
push ebx
mov ecx, edi
call edx
mov edi, dword [0x6189c8]
dec byte [esi + 0x130]
mov al, byte [esi + 0x130]
movzx ecx, byte [esi + 0x132]
movzx edx, byte [esi + 0x131]
push 0
push 0
push ecx
add edi, 0xfffffffe
test al, al
seta al
push edx
mov edx, dword [esi + 0x144]
movzx ecx, al
mov eax, dword [edx + 0xa8]
push ecx
mov ecx, dword [esi + 0x148]
push eax
push 0x78
call fcn.005318b0
mov ecx, dword [0x6189c8]
mov edx, dword [0x5feb84]
push ecx
mov ecx, dword [esi + 0x144]
push edx
push 0x78
call fcn.00531470
mov eax, dword [0x5feb84]
mov ecx, dword [esp + 0x20]
push 0xffffffffffffffff
push eax
push ecx
mov ecx, dword [esi + 0x144]
call fcn.00531470
mov edx, dword [0x5feb84]
mov ecx, dword [esi + 0x144]
push 0xffffffffffffffff
push edx
push edi
call fcn.00531470
fldz
mov eax, dword [0x5feb84]
mov ecx, dword [esi + 0x144]
push eax
sub esp, 8
fstp qword [esp]
call fcn.005312b0
mov ecx, dword [0x5feb84]
fld qword [0x616648]
push ecx
mov ecx, dword [esi + 0x144]
sub esp, 8
fstp qword [esp]
call fcn.005312b0
mov edx, dword [0x5feb88]
mov ecx, dword [esi + 0x144]
push 0xffffffffffffffff
push edx
push 0
call fcn.00531470
mov eax, dword [esi + 0x144]
mov ecx, dword [eax + 0xa8]
push ecx
mov ecx, dword [esi + 0x148]
call fcn.00531930
movsd xmm0, qword [esp + 0x34]
mov byte [esi + 0x14d], bl
mov byte [esi + 0x14c], 0
movsd qword [esi + 0x160], xmm0
xorps xmm0, xmm0
movsd qword [esi + 0x168], xmm0
movsd xmm0, qword [0x5fb270]
jmp 0x547b5b
lea ecx, [esp + 0x224]
call fcn.004e3630
xorps xmm0, xmm0
mov byte [edi + 4], 0
mov eax, dword [esi + 0x3dc]
mov edx, eax
shl edx, 4
sub edx, eax
mov eax, dword [esi + 0x41c]
movsd qword [esp + 0xec], xmm0
movsd qword [esp + 0xe4], xmm0
movsd qword [esp + 0xdc], xmm0
mov eax, dword [eax + edx*4]
cmp eax, 0xc6
jne 0x547b6b
push 0xffffffffffffffff
lea ecx, [esp + 0xe0]
push ecx
lea edx, [esp + 0x22c]
push edx
mov ecx, esi
call fcn.005331d0
cmp eax, 0xc6
je 0x547626
mov eax, dword [esi + 0x3dc]
test eax, eax
jge 0x5475b4
xor eax, eax
jmp 0x5475b8
lea eax, [eax + eax + 1]
cmp byte [esi + 0x383], 0
jne 0x5475f3
mov ecx, dword [sym.imp.MSVCP90.dll_class_std::basic_ostream_char__struct_std::char_traits_char______cdecl_std::endl_class_std::basic_ostream_char__struct_std::char_traits_char____]
push ecx
push 0x5fcfd8
push eax
push str.Invalid_File_Parameter_Data___
lea ecx, [esi + 0x2e8]
call fcn.0042f6f0
mov ecx, eax
call fcn.00432040
mov ecx, eax
call fcn.0042f6f0
mov ecx, eax
call fcn.0042e970
lea edx, [esp + 0xdc]
push edx
lea eax, [esp + 0x228]
push eax
mov ecx, esi
mov byte [edi + 4], 0
call fcn.00532f60
mov ecx, dword [esp + 0x338]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
xorps xmm0, xmm0
lea ecx, [esp + 0x30]
movsd qword [edi + 0xd8], xmm0
push ecx
mov ecx, dword [esi + 0x144]
movsd qword [esp + 0x88], xmm0
movsd qword [esp + 0x80], xmm0
movsd qword [esp + 0x78], xmm0
movsd qword [esp + 0x70], xmm0
movsd qword [esp + 0x68], xmm0
movsd qword [esp + 0x60], xmm0
mov dword [esp + 0x24], 0
call fcn.00532920
mov ecx, dword [esi + 0x144]
lea edx, [esp + 0x2c]
push edx
call fcn.00532920
mov ecx, dword [esi + 0x144]
lea ebx, [edi + 0xd0]
push ebx
call fcn.005329a0
movsd xmm0, qword [ebx]
mulsd xmm0, qword [esi + 0x210]
movsd qword [ebx], xmm0
mov ecx, dword [esi + 0x144]
lea ebx, [edi + 0xc8]
push ebx
call fcn.005329a0
movsd xmm0, qword [ebx]
mulsd xmm0, qword [esi + 0x210]
movsd qword [ebx], xmm0
mov eax, dword [esi + 0x3dc]
mov edx, dword [esi + 0x41c]
mov ecx, eax
shl ecx, 4
sub ecx, eax
cmp dword [edx + ecx*4 + 0x28], 0
setne al
mov byte [esp + 0x27], al
test al, al
je 0x5476fa
mov ecx, dword [esi + 0x144]
lea eax, [esp + 0x20]
push eax
call fcn.00532920
xorps xmm0, xmm0
mov ebx, 1
xor ecx, ecx
mov edx, vtable.CGeom_Point.0
mov eax, 0xa
mov byte [esp + 0x160], bl
mov dword [esp + 0x164], ecx
mov dword [esp + 0x15c], edx
movsd qword [esp + 0x17c], xmm0
movsd qword [esp + 0x174], xmm0
movsd qword [esp + 0x16c], xmm0
mov dword [esp + 0x168], eax
mov dword [esp + 0x340], 6
mov byte [esp + 0xb8], bl
mov dword [esp + 0xbc], ecx
mov dword [esp + 0xb4], edx
movsd qword [esp + 0xd4], xmm0
movsd qword [esp + 0xcc], xmm0
movsd qword [esp + 0xc4], xmm0
mov dword [esp + 0xc0], eax
mov byte [esp + 0x90], bl
mov dword [esp + 0x94], ecx
mov dword [esp + 0x8c], edx
movsd qword [esp + 0xac], xmm0
movsd qword [esp + 0xa4], xmm0
movsd qword [esp + 0x9c], xmm0
mov dword [esp + 0x98], eax
mov eax, dword [esp + 0x30]
cmp eax, ecx
mov byte [esp + 0x340], 8
jg 0x5477d8
mov dword [esp + 0x30], 0xffffffff
jmp 0x5477e2
dec eax
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x2c]
cmp eax, ecx
jg 0x5477f4
mov dword [esp + 0x2c], 0xffffffff
jmp 0x5477fe
dec eax
cdq
sub eax, edx
sar eax, 1
mov dword [esp + 0x2c], eax
lea ecx, [esp + 0xdc]
push ecx
lea edx, [esp + 0x228]
push edx
mov ecx, esi
call fcn.00532f60
mov eax, dword [esp + 0x30]
push eax
push esi
lea ecx, [esp + 0x164]
call fcn.004aaf40
mov ecx, dword [esp + 0x2c]
push ecx
push esi
lea ecx, [esp + 0x94]
call fcn.004aaf40
movq xmm0, qword [esp + 0x9c]
movq qword [esp + 0x74], xmm0
movq xmm0, qword [esp + 0xa4]
movq qword [esp + 0x7c], xmm0
movq xmm0, qword [esp + 0xac]
lea ecx, [esp + 0x74]
movq qword [esp + 0x84], xmm0
call fcn.004a8b50
fstp st(0)
cmp byte [esp + 0x27], 0
je 0x54792a
mov eax, dword [esp + 0x20]
test eax, eax
jg 0x54788c
or eax, 0xffffffff
jmp 0x547892
dec eax
cdq
sub eax, edx
sar eax, 1
push eax
push esi
lea ecx, [esp + 0xbc]
mov dword [esp + 0x28], eax
call fcn.004aaf40
movsd xmm1, qword [esp + 0xc4]
movsd xmm0, qword [esp + 0xcc]
movsd xmm5, qword [esp + 0x7c]
movsd xmm7, qword [esp + 0x74]
movsd xmm3, qword [esp + 0xd4]
movdqa xmm2, xmm0
mulsd xmm0, xmm5
movapd xmm6, xmm1
mulsd xmm6, xmm7
movdqa xmm4, xmm3
addsd xmm0, xmm6
movsd xmm6, qword [esp + 0x84]
mulsd xmm3, xmm6
addsd xmm0, xmm3
movq qword [esp + 0x5c], xmm1
movapd xmm3, xmm0
mulsd xmm3, xmm7
mulsd xmm5, xmm0
mulsd xmm6, xmm0
subsd xmm1, xmm3
subsd xmm2, xmm5
subsd xmm4, xmm6
movsd qword [esp + 0x5c], xmm1
movsd qword [esp + 0x64], xmm2
movsd qword [esp + 0x6c], xmm4
jmp 0x54795b
lea edx, [esp + 0x26c]
push edx
lea ecx, [esp + 0x78]
call fcn.004a9090
movq xmm0, qword [eax]
movq qword [esp + 0x5c], xmm0
movq xmm0, qword [eax + 8]
movq qword [esp + 0x64], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [esp + 0x6c], xmm0
lea ecx, [esp + 0x5c]
call fcn.004a8b50
fstp st(0)
lea eax, [esp + 0x5c]
push eax
lea ecx, [esp + 0x210]
push ecx
lea ecx, [esp + 0x7c]
call fcn.004a8ae0
lea edx, [esp + 0x20c]
push edx
lea eax, [esp + 0x60]
push eax
lea ecx, [esp + 0x164]
push ecx
lea ecx, [esp + 0x290]
call fcn.004abba0
push eax
lea ecx, [edi + 0xe0]
call fcn.00427670
fld qword [edi + 0xc8]
mov eax, vtable.CGeom_Abs.0
sub esp, 8
fstp qword [esp]
mov dword [esp + 0x29c], eax
mov dword [esp + 0x28c], eax
call fcn.00468aa0
fld qword [edi + 0xd0]
fstp qword [esp]
mov dword [esp + 0x30], eax
call fcn.00468aa0
movsd xmm0, qword [0x616648]
movsd xmm1, qword [edi + 0xd0]
movsd xmm2, qword [0x5fc860]
movsd qword [esp + 0x54], xmm0
movsd xmm0, qword [edi + 0xc8]
movsd qword [esp + 0x3c], xmm0
movsd qword [esp + 0x4c], xmm1
addsd xmm1, qword [0x5ff758]
add esp, 8
andpd xmm0, xmm2
comisd xmm0, xmm1
mov dword [esp + 0x40], eax
jbe 0x547abd
fld qword [esp + 0x44]
movsd xmm0, qword [0x5ff700]
fdiv qword [esp + 0x34]
xorpd xmm0, xmmword [0x5fc740]
movsd qword [esp + 0x4c], xmm0
movsd qword [edi + 0xd8], xmm0
fabs
call sub.MSVCR90.dll__CIacos
fstp qword [esp + 0x34]
movsd xmm0, qword [esp + 0x44]
comisd xmm0, xmmword [0x5fa830]
jbe 0x547a7f
movsd xmm0, qword [0x5ff700]
subsd xmm0, qword [esp + 0x34]
jmp 0x547a85
movsd xmm0, qword [esp + 0x34]
mov edx, dword [esp + 0x28]
movsd xmm1, qword [esp + 0x4c]
push edx
sub esp, 0x10
movapd xmm2, xmm0
xorpd xmm0, xmmword [0x5fc740]
subsd xmm2, xmm1
movsd qword [esp + 8], xmm2
subsd xmm0, xmm1
movsd qword [esp], xmm0
push ebx
push ebx
mov ecx, edi
call fcn.004703e0
jmp 0x547ae0
mov eax, dword [esp + 0x28]
fld qword [esp + 0x4c]
push eax
sub esp, 0x10
fstp qword [esp + 8]
mov ecx, edi
fldz
fstp qword [esp]
push 0
push 0
call fcn.004703e0
mov byte [edi + 0x18], bl
mov ecx, dword [esp + 0x40]
fld qword [0x616648]
push ecx
sub esp, 0x10
fstp qword [esp + 8]
mov ecx, edi
fldz
fstp qword [esp]
push 0
push 0
call fcn.00470420
mov byte [edi + 0x19], bl
fld qword [0x616648]
sub esp, 8
mov ecx, edi
fstp qword [esp]
call fcn.00468b50
fld qword [0x616648]
sub esp, 8
mov ecx, edi
fstp qword [esp]
call fcn.00468b90
mov byte [edi + 4], bl
mov byte [esi + 0x14d], bl
mov byte [esi + 0x14c], 0
movsd xmm0, qword [0x616648]
movsd qword [esi + 0x160], xmm0
movsd qword [esi + 0x168], xmm0
movsd xmm0, qword [0x5fc888]
movsd qword [esi + 0x178], xmm0
movsd qword [esi + 0x170], xmm0
mov ecx, dword [esp + 0x338]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4