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

Disassembly:
push ebp
mov ebp, esp
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
sub esp, 0x24
push ebx
push esi
push edi
xor ebx, ebx
push ebx
push str.protect
push ebx
push eax
call dword [ecx + 0x24]
mov esi, dword [ebp + 8]
xor edi, edi
inc edi
test eax, eax
jne 0x100f17d6
mov eax, dword [esi]
push edi
push ebx
push 0x3f2
push esi
call dword [eax + 0x1c]
mov byte [ebp - 1], bl
test eax, eax
je 0x100f17da
mov byte [ebp - 1], 1
mov eax, dword [esi + 0xe0]
mov ebx, dword [ebp + 0xc]
cmp dword [eax + 0x24], edi
jle 0x100f1813
mov eax, dword [esi + 0xe0]
mov ecx, dword [eax]
push edi
push eax
call dword [ecx + 0x10]
mov ecx, dword [ebx]
push 0x1007
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [esi + 0xe0]
inc edi
cmp edi, dword [eax + 0x24]
jl 0x100f17e8
mov eax, dword [ebx]
push pe_nt_image_headers32
push ebx
call dword [eax + 0xa0]
push dword [ebp + 0x10]
push ebx
push esi
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
cmp byte [ebp - 1], 0
je 0x100f1859
mov eax, dword [ebx]
push 0x100c
push ebx
call dword [eax + 0xa0]
mov eax, dword [ebx]
push 0xa
push ebx
call dword [eax + 0x68]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
cmp byte [esi + 0x349], 0
je 0x100f1887
mov eax, dword [ebx]
push 0x101f
push ebx
call dword [eax + 0xa0]
movzx ecx, byte [esi + 0x349]
mov eax, dword [ebx]
push ecx
push ebx
call dword [eax + 0x60]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
lea edi, [esi + 0x118]
mov ecx, edi
call fcn.10099749
test al, al
jne 0x100f18d1
mov eax, dword [ebx]
push 0x102a
push ebx
call dword [eax + 0xa0]
mov eax, dword [ebx]
push 4
push 3
push edi
push ebx
call dword [eax + 0xbc]
mov eax, dword [ebx]
push 4
push 3
lea ecx, [esi + 0x124]
push ecx
push ebx
call dword [eax + 0xbc]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
mov eax, dword [esi]
push 5
lea ecx, [ebp - 0x18]
push ecx
push 0x3ec
push esi
call dword [eax + 0x1c]
fldz
lea eax, [ebp - 0x24]
fst dword [ebp - 0x1c]
push eax
fst dword [ebp - 0x20]
lea eax, [ebp - 0x18]
fstp dword [ebp - 0x24]
push eax
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
pop ecx
pop ecx
test al, al
je 0x100f190f
push 0x1001
push ebx
lea eax, [ebp - 0x18]
push eax
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 5
lea edx, [ebp - 0x24]
push edx
mov eax, esi
mov eax, dword [eax + 0x28]
mov ecx, dword [eax]
push 0x405
push eax
call dword [ecx + 0x1c]
fldz
lea esi, [ebp - 0x24]
lea edi, [ebp - 0x18]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
lea eax, [ebp - 0x24]
movsd dword es:[edi], dword [esi]
fst dword [ebp - 0x1c]
fst dword [ebp - 0x20]
push eax
fstp dword [ebp - 0x24]
lea eax, [ebp - 0x18]
push eax
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
pop ecx
pop ecx
test al, al
je 0x100f195b
push 0x1002
push ebx
lea eax, [ebp - 0x18]
push eax
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
xor edi, edi
push edi
push str.viewports
push edi
push eax
call dword [ecx + 0x24]
mov esi, dword [ebp + 8]
test eax, eax
je 0x100f1dbc
cmp dword [esi + 0x164], edi
je 0x100f1dbc
mov al, byte [esi + 0x348]
mov byte [ebp + 0xf], 1
test al, al
je 0x100f19bb
cmp al, 0xff
je 0x100f19bb
mov eax, dword [ebx]
push 0x101d
push ebx
call dword [eax + 0xa0]
movzx ecx, byte [esi + 0x348]
mov eax, dword [ebx]
push ecx
push ebx
call dword [eax + 0x60]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
mov eax, dword [ebx]
push 0x100e
push ebx
call dword [eax + 0xa0]
mov eax, dword [esi + 0x164]
mov al, byte [eax + 0x14]
xor edi, edi
inc edi
push edi
lea ecx, [ebp + 0xb]
push ecx
mov byte [ebp + 0xb], al
mov eax, dword [ebx]
push ebx
call dword [eax + 0x40]
mov eax, dword [esi + 0x164]
mov al, byte [eax + 0x1c]
push edi
lea ecx, [ebp + 0xb]
push ecx
mov byte [ebp + 0xb], al
mov eax, dword [ebx]
push ebx
call dword [eax + 0x40]
mov eax, dword [esi + 0x164]
mov al, byte [eax + 0x20]
push edi
lea ecx, [ebp + 0xb]
push ecx
mov byte [ebp + 0xb], al
mov eax, dword [ebx]
push ebx
call dword [eax + 0x40]
mov eax, dword [esi + 0x164]
mov al, byte [eax + 0x2e]
push edi
lea ecx, [ebp + 0xb]
push ecx
mov byte [ebp + 0xb], al
mov eax, dword [ebx]
push ebx
call dword [eax + 0x40]
mov ecx, dword [esi + 0x164]
fld dword [ecx + 0x24]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov ecx, dword [esi + 0x164]
fld dword [ecx + 0x50]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov ecx, dword [esi + 0x164]
fld dword [ecx + 0x54]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov ecx, dword [esi + 0x164]
fld dword [ecx + 0x58]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov ecx, dword [esi + 0x164]
fld dword [ecx + 0x90]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov ecx, dword [esi + 0x164]
mov eax, dword [ebx]
fld dword [ecx + 0x94]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov ecx, dword [esi + 0x164]
fld dword [ecx + 0x94]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov ecx, dword [esi + 0x164]
mov eax, dword [ebx]
push 4
pop edi
push edi
push edi
sub ecx, 0xffffff80
push ecx
push ebx
call dword [eax + 0xbc]
mov ecx, dword [esi + 0x164]
mov eax, dword [ebx]
push edi
push edi
add ecx, 0x70
push ecx
push ebx
call dword [eax + 0xbc]
mov eax, dword [esi + 0x164]
xor edx, edx
test byte [eax + 0x18], 1
je 0x100f1b07
inc edx
mov eax, dword [eax + 0x28]
test al, 1
je 0x100f1b11
or edx, 2
test al, 2
je 0x100f1b17
or edx, edi
test al, 4
je 0x100f1b1e
or edx, 8
test al, 8
je 0x100f1b25
or edx, 0x10
test al, 0x10
je 0x100f1b2c
or edx, 0x20
test al, 0x20
je 0x100f1b33
or edx, 0x40
test al, 0x40
je 0x100f1b3d
or edx, 0x80
test al, al
jns 0x100f1b47
or edx, 0x100
mov ecx, 0x200
test eax, 0x100
je 0x100f1b55
or edx, ecx
mov edi, 0x400
test ecx, eax
je 0x100f1b60
or edx, edi
mov ecx, 0x800
test eax, 0x10000
je 0x100f1b6e
or edx, ecx
test edi, eax
je 0x100f1b78
or edx, 0x1000
test ecx, eax
je 0x100f1b82
or edx, 0x2000
mov eax, dword [ebx]
push edx
push ebx
call dword [eax + 0x68]
mov eax, dword [esi + 0x164]
cmp byte [eax + 0x60], 0
je 0x100f1bbd
mov eax, dword [ebx]
push 0x1024
push ebx
call dword [eax + 0xa0]
mov ecx, dword [esi + 0x164]
movzx ecx, byte [ecx + 0x60]
mov eax, dword [ebx]
push ecx
push ebx
call dword [eax + 0x60]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
mov eax, dword [esi + 0x164]
test dword [eax + 0x28], 0x4000
je 0x100f1c42
cmp dword [esi + 0x2a8], 0
je 0x100f1c42
mov eax, dword [ebx]
push 0x1020
push ebx
call dword [eax + 0xa0]
mov eax, dword [esi + 0x2a8]
mov eax, dword [eax + 0x68]
test eax, eax
je 0x100f1c07
push 1
push 0x1021
push ebx
push eax
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
mov eax, dword [ebx]
push 0x1022
push ebx
call dword [eax + 0xa0]
mov ecx, dword [esi + 0x2a8]
mov ecx, dword [ecx + 0x70]
mov ecx, dword [ecx + 0x62]
fld dword [ecx]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
mov eax, dword [esi + 0xf4]
and dword [ebp - 8], 0
cmp dword [eax + 0x24], 0
jle 0x100f1ec6
mov eax, dword [esi + 0xf4]
push dword [ebp - 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
mov edi, eax
cmp dword [edi + 0x7c], 0
jne 0x100f1c77
cmp byte [ebp + 0xf], 0
je 0x100f1eb1
cmp edi, dword [esi + 0x10c]
jne 0x100f1c8a
cmp byte [ebp + 0xf], 0
mov eax, 0x100f
jne 0x100f1c8f
mov eax, 0x100d
mov ecx, dword [ebx]
push eax
push ebx
call dword [ecx + 0xa0]
mov eax, dword [edi + 0xc]
test eax, eax
je 0x100f1cb2
mov ecx, dword [ebx]
push 0x1009
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [edi + 0x10]
test eax, eax
je 0x100f1ccb
mov ecx, dword [ebx]
push 0x100a
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [edi + 0x18]
test eax, eax
je 0x100f1ce4
mov ecx, dword [ebx]
push 0x101b
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
cmp dword [edi + 0x28], 0
je 0x100f1cf9
push 0x1027
push ebx
lea eax, [edi + 0x24]
push eax
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1010
push dword [edi + 0x38]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1012
push dword [edi + 0x3c]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1012
push dword [edi + 0x40]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1013
push dword [edi + 0x44]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1014
push dword [edi + 0x48]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1015
push dword [edi + 0x4c]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
add esp, 0x48
push 0x1016
push dword [edi + 0x50]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1017
push dword [edi + 0x54]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1018
push dword [edi + 0x58]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1019
push dword [edi + 0x5c]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x101a
push dword [edi + 0x60]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
push 0x1025
push dword [edi + 0x64]
push ebx
call sym.rt3d.dll_public:_void___stdcall_MATRIX3D::Invert_struct_MATRIX3D_const__
mov eax, dword [edi + 0x7c]
add esp, 0x48
test eax, eax
je 0x100f1dda
cmp eax, 1
mov eax, dword [ebx]
jne 0x100f1dc5
push 0x101c
jmp 0x100f1dca
mov byte [ebp + 0xf], 0
jmp 0x100f1c42
push 0x1026
push ebx
call dword [eax + 0xa0]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
mov eax, dword [esi + 0xf4]
cmp dword [eax + 0x24], 0
je 0x100f1e21
mov eax, dword [ebx]
push 0x101e
push ebx
call dword [eax + 0xa0]
push dword [edi + 0x6c]
mov eax, dword [ebx]
push ebx
call dword [eax + 0x68]
push dword [edi + 0x70]
mov eax, dword [ebx]
push ebx
call dword [eax + 0x68]
push dword [edi + 0x74]
mov eax, dword [ebx]
push ebx
call dword [eax + 0x68]
push dword [edi + 0x78]
mov eax, dword [ebx]
push ebx
call dword [eax + 0x68]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
cmp dword [edi + 0x2c], 0
je 0x100f1e48
mov eax, dword [edi + 0x2c]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x64]
test eax, eax
je 0x100f1e48
mov eax, dword [ebx]
push 0x1023
push dword [ebp + 0x10]
push dword [edi + 0x2c]
push ebx
call dword [eax + 0xcc]
mov eax, dword [edi + 0x30]
test eax, eax
je 0x100f1ea8
and dword [ebp + 8], 0
cmp dword [eax + 0x24], 0
jle 0x100f1ea8
mov eax, dword [edi + 0x30]
push dword [ebp + 8]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x10]
push 0x1028
mov dword [ebp - 0xc], eax
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa0]
mov eax, dword [ebp - 0xc]
mov eax, dword [eax]
test eax, eax
je 0x100f1e91
mov ecx, dword [ebx]
push 0x1029
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
inc dword [ebp + 8]
mov eax, dword [edi + 0x30]
mov ecx, dword [ebp + 8]
cmp ecx, dword [eax + 0x24]
jl 0x100f1e59
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
inc dword [ebp - 8]
mov eax, dword [esi + 0xf4]
mov ecx, dword [ebp - 8]
cmp ecx, dword [eax + 0x24]
jl 0x100f1c56
cmp byte [ebp + 0xf], 0
jne 0x100f1f0e
mov eax, dword [esi + 0x10c]
test eax, eax
je 0x100f1eef
mov eax, dword [eax + 0x10]
test eax, eax
je 0x100f1eef
mov ecx, dword [ebx]
push 0x100a
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [esi]
push esi
call dword [eax + 0x154]
test eax, eax
je 0x100f1f0e
mov ecx, dword [ebx]
push 0x1009
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
fld dword [esi + 0x294]
fldz
fucompp
fnstsw ax
test ah, 0x44
jnp 0x100f1f49
mov eax, dword [ebx]
push 0x1003
push ebx
call dword [eax + 0xa0]
fld dword [esi + 0x294]
mov eax, dword [ebx]
push ecx
fstp dword [esp]
push ebx
call dword [eax + 0xdc]
mov eax, dword [ebx]
push ebx
call dword [eax + 0xa4]
xor edi, edi
cmp dword [esi + 0xe8], edi
je 0x100f1fda
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax]
push 1
push str.animation
push edi
push eax
call dword [ecx + 0x24]
test eax, eax
je 0x100f1fda
mov eax, dword [esi + 0xe8]
cmp dword [eax + 0x24], edi
jle 0x100f1fa2
mov eax, dword [esi + 0xe8]
mov ecx, dword [eax]
push edi
push eax
call dword [ecx + 0x10]
mov ecx, dword [ebx]
push 0x1004
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [esi + 0xe8]
inc edi
cmp edi, dword [eax + 0x24]
jl 0x100f1f77
mov eax, dword [esi + 0xfc]
test eax, eax
je 0x100f1fbe
mov ecx, dword [ebx]
push 0x1006
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [esi + 0xf8]
test eax, eax
je 0x100f1fda
mov ecx, dword [ebx]
push 0x1005
push dword [ebp + 0x10]
push eax
push ebx
call dword [ecx + 0xcc]
mov eax, dword [esi + 0xec]
test eax, eax
je 0x100f2020
and dword [ebp + 8], 0
cmp dword [eax + 0x24], 0
jle 0x100f2020
mov eax, dword [esi + 0xec]
mov ecx, dword [eax]
mov edi, dword [ebx]
push 0x100b
push dword [ebp + 0x10]
push dword [ebp + 8]
push eax
call dword [ecx + 0x10]
push eax
push ebx
call dword [edi + 0xcc]
inc dword [ebp + 8]
mov eax, dword [esi + 0xec]
mov ecx, dword [ebp + 8]
cmp ecx, dword [eax + 0x24]
jl 0x100f1fee
mov eax, dword [ebx]
push ebx
call dword [eax + 0xd8]
push dword [esi + 0x170]
mov ecx, dword [eax]
push eax
call dword [ecx + 0x2c]
test eax, eax
js 0x100f2050
mov eax, dword [ebx]
push 0x1008
push dword [ebp + 0x10]
push dword [esi + 0x170]
push ebx
call dword [eax + 0xcc]
pop edi
xor eax, eax
pop esi
inc eax
pop ebx
leave
ret 0xc