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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x48
push ebx
mov ebx, dword [ebp + 0xc]
push esi
push edi
xor edi, edi
cmp dword [ebx + 4], edi
jne 0x100a323f
push edi
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::_FromUpDir_struct_MATRIX3D___struct_POINT3D___struct_POINT3D___struct_POINT3D__
pop ecx
fld qword [0x10131298]
or dword [ebx + 0x80], 0xffffffff
mov esi, dword [ebp + 8]
fstp qword [ebx + 0x86]
fld dword [0x1012c570]
lea eax, [ebx + 0x7c]
fstp dword [ebx + 0xba]
mov dword [ebp - 4], eax
mov dword [eax], edi
cmp dword [ebx + 4], edi
jne 0x100a3277
mov eax, dword [esi + 0x10c]
mov dword [ebx + 4], eax
mov eax, dword [ebx + 4]
cmp eax, edi
jne 0x100a3285
xor eax, eax
jmp 0x100a34bb
mov byte [ebp + 0xf], 0
cmp dword [ebx], edi
je 0x100a329a
test dword [ebx + 8], 0x800
je 0x100a329a
mov byte [ebp + 0xf], 1
push eax
mov ecx, esi
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::NoRotate_void_
mov edx, dword [esi]
push edi
mov ecx, esi
call sym.rt3d.dll_public_virtual:_void____stdcall_e3_STREAM::GetHANDLE_void_
push eax
push dword [ebx + 4]
push esi
call dword [edx + 0x34c]
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
lea edx, [ebx + 0x14]
push edx
lea edx, [ebx + 0xc]
push edx
push eax
call dword [ecx + 0x6c]
test al, al
je 0x100a327e
test dword [ebx + 8], 0x1000
je 0x100a3365
mov esi, dword [esi + 0x28]
mov eax, dword [esi]
push edi
lea ecx, [ebp - 0x48]
push ecx
push 1
push esi
call dword [eax + 0x2e4]
lea eax, [ebp - 0x24]
push eax
lea ecx, [ebp - 0x48]
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::_FromUpDir_struct_MATRIX3D___struct_POINT3D___struct_POINT3D___struct_POINT3D__
mov eax, dword [ebx + 4]
lea esi, [ebp - 0x24]
lea edi, [ebp - 0x18]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
lea edx, [ebp - 0x18]
push edx
push eax
call dword [ecx + 0x3c]
mov eax, dword [ebx + 4]
fld dword [ebx + 0x74]
lea edx, [ebp - 0x18]
fadd dword [ebp - 0x18]
push edx
fstp dword [ebp - 0x18]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x34]
fld dword [ebp - 0x18]
fsub dword [ebp - 0x24]
lea eax, [ebp - 0x30]
push eax
fstp dword [ebp - 0x30]
fld dword [ebp - 0x14]
fsub dword [ebp - 0x20]
fstp dword [ebp - 0x2c]
fld dword [ebp - 0x10]
fsub dword [ebp - 0x1c]
fstp dword [ebp - 0x28]
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::_FromUpDir_struct_MATRIX3D___struct_POINT3D___struct_POINT3D___struct_POINT3D__
mov esi, dword [ebp + 8]
fstp dword [ebp - 8]
fld dword [ebp - 8]
xor edi, edi
fstp dword [ebx + 0x74]
fld dword [ebp - 8]
fstp dword [ebx + 0x78]
mov eax, dword [ebx + 4]
mov eax, dword [eax + 0x1c]
mov ecx, dword [eax]
push ebx
push eax
call dword [ecx + 0x7c]
test al, al
je 0x100a327e
cmp byte [ebx + 8], 0
je 0x100a33ad
push edi
push ebx
push esi
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::_FromUpDir_struct_MATRIX3D___struct_POINT3D___struct_POINT3D___struct_POINT3D__
cmp byte [ebp + 0xf], 0
je 0x100a33ad
mov eax, dword [ebx]
cmp dword [eax + 0x24], edi
je 0x100a33ad
mov ecx, dword [eax]
push edi
push eax
call dword [ecx + 0x10]
mov edi, dword [ebp - 4]
push 0xd
pop ecx
mov esi, eax
rep movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
mov esi, dword [ebp + 8]
xor edi, edi
mov eax, dword [ebp - 4]
mov edx, dword [eax]
cmp edx, edi
je 0x100a33e4
mov eax, edx
mov ecx, eax
test dword [eax + 0x44], 0x8000
je 0x100a33c5
mov ecx, eax
mov eax, dword [eax + 0x4c]
cmp eax, edi
jne 0x100a33ba
cmp ecx, edx
je 0x100a33e4
mov eax, dword [ebp - 4]
mov dword [eax], ecx
xor eax, eax
mov dword [ebx + 0x80], edi
mov word [ebx + 0x84], ax
test dword [ebx + 8], 0x400
je 0x100a34b6
mov eax, dword [esi + 0x114]
cmp eax, edi
je 0x100a34b6
cmp dword [eax], edi
je 0x100a34b6
mov eax, dword [esi + 0x2a8]
mov dword [ebp - 0xc], eax
mov eax, dword [esi + 0xe4]
mov dword [esi + 0x2a8], edi
mov dword [ebp - 8], edi
mov dword [ebp + 8], edi
cmp dword [eax + 0x24], edi
jle 0x100a3479
mov eax, dword [esi + 0xe4]
push dword [ebp + 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
mov edi, eax
mov eax, dword [ebx + 4]
cmp edi, dword [eax + 0xc]
je 0x100a344d
push ebx
push edi
mov ecx, esi
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::_FromUpDir_struct_MATRIX3D___struct_POINT3D___struct_POINT3D___struct_POINT3D__
test al, al
jne 0x100a346b
mov ecx, esi
call fcn.100dfab1
test al, al
jne 0x100a3477
inc dword [ebp + 8]
mov eax, dword [esi + 0xe4]
mov ecx, dword [ebp + 8]
cmp ecx, dword [eax + 0x24]
jl 0x100a3427
jmp 0x100a3477
mov eax, dword [ebp - 4]
mov dword [eax], edi
mov dword [ebp - 8], 1
xor edi, edi
mov eax, dword [ebp - 0xc]
mov dword [esi + 0x2a8], eax
cmp dword [ebp - 8], edi
je 0x100a34b6
cmp byte [ebp + 0xf], 0
je 0x100a34b6
mov eax, dword [ebx]
xor esi, esi
cmp dword [eax + 0x24], edi
jle 0x100a34ae
mov eax, dword [ebx]
mov ecx, dword [eax]
push esi
push eax
call dword [ecx + 0x10]
push eax
call sub.MSVCR100.dll_void___cdecl_operator_delete_void__
mov eax, dword [ebx]
inc esi
pop ecx
cmp esi, dword [eax + 0x24]
jl 0x100a3496
mov ebx, dword [ebx]
mov eax, dword [ebx]
push ebx
call dword [eax + 0x28]
mov eax, dword [ebp - 4]
mov eax, dword [eax]
pop edi
pop esi
pop ebx
leave
ret 8