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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x74
push ebx
push esi
mov esi, dword [ebp + 0x10]
fld dword [esi + 4]
push edi
fld dword [esi]
fld dword [esi + 8]
fld st(1)
fmulp st(2)
fld st(2)
fmulp st(3)
fxch st(1)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fcomp qword [0x4d0c48]
fnstsw ax
test ah, 5
jnp 0x474de6
fldz
mov eax, dword [esi]
mov ecx, dword [esi + 4]
fstp dword [esp + 0x1c]
fld1
mov edx, dword [esi + 8]
fstp dword [esp + 0x24]
mov dword [esp + 0x34], eax
fld dword [esp + 0x34]
mov dword [esp + 0x38], ecx
fldz
mov dword [esp + 0x3c], edx
push ecx
fmul st(1), st(0)
fxch st(1)
fst qword [esp + 0x14]
fld dword [esp + 0x3c]
fmulp st(2)
faddp st(1)
fadd dword [esp + 0x40]
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
call fcn.00401120
fcomp qword [0x4d0c20]
add esp, 4
fnstsw ax
test ah, 0x41
jne 0x4744f7
fld1
fstp dword [esp + 0x1c]
fldz
fstp dword [esp + 0x24]
fld dword [esp + 0x38]
push ecx
fld st(0)
fld dword [esp + 0x28]
fld st(0)
fmulp st(2)
fld dword [esp + 0x40]
fld qword [0x4d0af8]
fmul st(1)
fsubp st(3)
fxch st(2)
fstp dword [esp + 0x2c]
fld dword [esp + 0x20]
fld st(0)
fmulp st(3)
fld dword [esp + 0x38]
fmulp st(2)
fxch st(2)
fsubrp st(1)
fstp dword [esp + 0x30]
fmulp st(1)
fsubr qword [esp + 0x14]
fstp dword [esp + 0x34]
fld dword [esp + 0x30]
fld dword [esp + 0x2c]
fld dword [esp + 0x34]
fld st(1)
fmulp st(2)
fld st(2)
fmulp st(3)
fxch st(1)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
fld1
fdivrp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
call fcn.004223d0
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fld st(0)
fmul dword [esp + 0x2c]
fstp dword [esp + 0x2c]
fld dword [esp + 0x30]
fmul st(1)
fstp dword [esp + 0x30]
fmul dword [esp + 0x34]
fstp dword [esp + 0x34]
fld dword [esp + 0x30]
fld st(0)
fld dword [esp + 0x40]
fld st(0)
fmulp st(2)
fld dword [esp + 0x34]
fld st(0)
fld dword [esp + 0x3c]
fld st(0)
fmulp st(2)
fxch st(4)
fsubrp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x38]
fld st(0)
fmulp st(2)
fld dword [esp + 0x2c]
fld st(0)
fmulp st(4)
fxch st(2)
fsubrp st(3)
fxch st(2)
fstp dword [esp + 0x24]
fmulp st(2)
fmulp st(2)
fsubrp st(1)
fstp dword [esp + 0x28]
fld dword [esp + 0x24]
fld dword [esp + 0x20]
fld dword [esp + 0x28]
fld st(1)
fmulp st(2)
fld st(2)
fmulp st(3)
fxch st(1)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
fld1
fdivrp st(1)
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
call fcn.004223d0
fstp dword [esp + 0x1c]
fld dword [esp + 0x1c]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
fld st(0)
fmul dword [esp + 0x20]
mov edx, dword [esi + 8]
mov edi, dword [ebp + 8]
mov esi, dword [ebp + 0x14]
mov dword [esp + 0x54], eax
mov eax, dword [ebp + 0xc]
fstp dword [esp + 0x20]
fld dword [esp + 0x24]
mov dword [esp + 0x58], ecx
mov ecx, dword [eax]
fmul st(1)
mov dword [esp + 0x5c], edx
mov edx, dword [eax + 4]
mov eax, dword [eax + 8]
fstp dword [esp + 0x24]
add esp, 4
cmp dword [ebp + 0x24], 0
fmul dword [esp + 0x24]
mov dword [esp + 0x70], ecx
mov dword [esp + 0x74], edx
fstp dword [esp + 0x24]
mov dword [esp + 0x78], eax
je 0x474a4a
mov ecx, dword [0x503da4]
mov eax, dword [ecx + 8]
push 0
push eax
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
call sym.XR_3DA.exe_public:_void___thiscall_CBackend::set_Element_struct_ShaderElement___unsigned_int_
mov ecx, dword [0x506410]
test ecx, ecx
je 0x47477c
push str.tfactor
lea edx, [esp + 0x10]
push edx
call sym.XR_3DA.exe_public:_class_resptr_core_struct_R_constant__class_resptr_base_struct_R_constant_____thiscall_R_constant_table::get_char_const__
mov ecx, dword [eax]
test ecx, ecx
je 0x47473d
test byte [ecx + 0xa], 1
fld1
je 0x4746f0
movzx eax, word [ecx + 0xc]
shl eax, 4
add eax, 0x5043d0
fst dword [eax]
fst dword [eax + 4]
fst dword [eax + 8]
fst dword [eax + 0xc]
movzx eax, word [ecx + 0xc]
cmp eax, dword [0x5053d4]
lea edx, [eax + 1]
jae 0x4746d8
mov dword [0x5053d4], eax
cmp edx, dword [0x5053d8]
jbe 0x4746e6
mov dword [0x5053d8], edx
mov dword [0x5053e0], 1
test byte [ecx + 0xa], 2
je 0x47473b
movzx eax, word [ecx + 0x10]
shl eax, 4
add eax, 0x5053f0
fst dword [eax]
fst dword [eax + 4]
fst dword [eax + 8]
fstp dword [eax + 0xc]
movzx eax, word [ecx + 0x10]
cmp eax, dword [0x5063f4]
lea ecx, [eax + 1]
jae 0x474721
mov dword [0x5063f4], eax
cmp ecx, dword [0x5063f8]
jbe 0x47472f
mov dword [0x5063f8], ecx
mov dword [0x506400], 1
jmp 0x47473d
fstp st(0)
mov eax, dword [esp + 0xc]
test eax, eax
je 0x47477c
add dword [eax], 0xffffffff
mov ecx, dword [esp + 0xc]
cmp dword [ecx], 0
jne 0x47477c
mov eax, dword [ecx + 4]
add ecx, 4
test eax, eax
je 0x47476b
add dword [eax], 0xffffffff
mov eax, dword [ecx]
cmp dword [eax], 0
jne 0x47476b
mov dword [ecx], 0
mov ecx, dword [esp + 0xc]
push ecx
mov ecx, dword [0x4c45f4]
call dword [0x4c45f8]
mov eax, dword [edi + 0x124]
mov eax, dword [eax + 0x14]
lea edx, [esp + 0x18]
push edx
push eax
push 5
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
call sym.XR_3DA.exe_public:_void____thiscall__VertexStream::Lock_unsigned_int__unsigned_int__unsigned_int__
fld dword [esi]
fchs
mov ecx, dword [ebp + 0x18]
fstp dword [esp + 0x10]
add eax, 0x10
fld dword [esi + 4]
mov dword [eax - 4], ecx
fchs
fstp dword [esp + 0xc]
fld dword [esp + 0x50]
fldz
fmul st(1), st(0)
fld dword [esp + 0x10]
fld st(0)
fmul dword [esp + 0x28]
fadd st(3)
fld dword [esp + 0xc]
fld st(0)
fmul dword [esp + 0x1c]
faddp st(2)
fld dword [esp + 0x70]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x34]
fld dword [esp + 0x54]
fmulp st(3)
fld dword [esp + 0x2c]
fld st(0)
fmul st(3)
fadd st(4)
fld dword [esp + 0x20]
fmul st(3)
faddp st(1)
fadd dword [esp + 0x74]
fstp dword [esp + 0x38]
fld dword [esp + 0x58]
fmul qword [0x4d0af8]
fld dword [esp + 0x30]
fld st(0)
fmulp st(5)
fxch st(4)
fadd st(1)
fld dword [esp + 0x24]
fmulp st(4)
faddp st(3)
fld dword [esp + 0x78]
faddp st(3)
fxch st(2)
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x10]
fld dword [esp + 0x38]
fstp dword [eax - 0xc]
fld dword [esp + 0x3c]
fstp dword [eax - 8]
fld dword [esi]
fchs
fstp dword [esp + 0xc]
fld dword [esi + 4]
mov dword [eax + 0xc], ecx
fstp dword [esp + 0x10]
fld dword [esp + 0xc]
fmul dword [esp + 0x28]
fadd st(5)
fld dword [esp + 0x10]
fmul dword [esp + 0x1c]
faddp st(1)
fadd dword [esp + 0x70]
fstp dword [esp + 0x34]
fld st(0)
fmul dword [esp + 0xc]
fadd st(4)
fld dword [esp + 0x20]
fmul dword [esp + 0x10]
add eax, 0x10
add eax, 0x10
faddp st(1)
fadd dword [esp + 0x74]
fstp dword [esp + 0x38]
fld st(2)
fmul dword [esp + 0xc]
fadd st(2)
fld dword [esp + 0x24]
fmul dword [esp + 0x10]
faddp st(1)
fadd dword [esp + 0x78]
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x20]
fld dword [esp + 0x38]
fstp dword [eax - 0x1c]
fld dword [esp + 0x3c]
fstp dword [eax - 0x18]
fld dword [esi]
fstp dword [esp + 0x10]
fld dword [esi + 4]
mov dword [eax - 4], ecx
fstp dword [esp + 0xc]
fld dword [esp + 0x10]
fmul dword [esp + 0x28]
fadd st(5)
fld dword [esp + 0xc]
fmul dword [esp + 0x1c]
faddp st(1)
fadd dword [esp + 0x70]
fstp dword [esp + 0x34]
fld st(0)
fmul dword [esp + 0x10]
fadd st(4)
fld dword [esp + 0x20]
fmul dword [esp + 0xc]
faddp st(1)
fadd dword [esp + 0x74]
fstp dword [esp + 0x38]
fld st(2)
fmul dword [esp + 0x10]
fadd st(2)
fld dword [esp + 0x24]
fmul dword [esp + 0xc]
faddp st(1)
fld dword [esp + 0x78]
fld st(0)
faddp st(2)
fxch st(1)
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x10]
fld dword [esp + 0x38]
fstp dword [eax - 0xc]
fld dword [esp + 0x3c]
fstp dword [eax - 8]
fld dword [esi]
fstp dword [esp + 0x10]
fld dword [esi + 4]
mov dword [eax + 0xc], ecx
fchs
fstp dword [esp + 0xc]
fld dword [esp + 0x10]
fmul dword [esp + 0x28]
faddp st(6)
fld dword [esp + 0xc]
fmul dword [esp + 0x1c]
faddp st(6)
fld dword [esp + 0x70]
faddp st(6)
fxch st(5)
fstp dword [esp + 0x34]
fld dword [esp + 0x10]
fld st(0)
fmulp st(2)
fxch st(1)
faddp st(4)
fld dword [esp + 0x20]
fld dword [esp + 0xc]
fld st(0)
add eax, 0x10
fmulp st(2)
fxch st(5)
faddp st(1)
fadd dword [esp + 0x74]
fstp dword [esp + 0x38]
fmulp st(2)
faddp st(1)
fld dword [esp + 0x24]
fmulp st(2)
faddp st(1)
faddp st(1)
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x10]
fld dword [esp + 0x38]
fstp dword [eax - 0xc]
fld dword [esp + 0x3c]
fstp dword [eax - 8]
mov ecx, dword [eax - 0x40]
mov edx, dword [eax - 0x3c]
mov dword [eax], ecx
mov ecx, dword [eax - 0x38]
mov dword [eax + 4], edx
mov edx, dword [eax - 0x34]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov eax, dword [edi + 0x124]
mov eax, dword [eax + 0x14]
mov ecx, dword [0x5041e8]
lea edx, [eax + ecx]
lea eax, [edx + eax*4]
mov dword [0x5041e8], eax
mov eax, dword [sym.XR_3DA.exe_class_CBackend_RCache]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x30]
push eax
call edx
mov ebx, dword [ebp + 0x20]
test ebx, ebx
jne 0x474a0d
mov eax, dword [0x503ff0]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xe4]
push 1
push 0x16
push eax
call edx
mov eax, dword [esp + 0x18]
push 2
push eax
mov eax, dword [edi + 0x124]
test eax, eax
push ecx
mov ecx, esp
mov dword [ecx], eax
je 0x474a26
add dword [eax], 1
push 6
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
call sym.XR_3DA.exe_public:_void___thiscall_CBackend::dbg_DP_enum__D3DPRIMITIVETYPE__class_resptr_core_struct_SGeometry__struct_resptrcode_geom___unsigned_int__unsigned_int_
test ebx, ebx
jne 0x474a4a
mov eax, dword [0x503ff0]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xe4]
push 3
push 0x16
push eax
call edx
cmp dword [ebp + 0x28], 0
je 0x474de6
mov eax, dword [0x503da0]
mov eax, dword [eax + 8]
push 0
push eax
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
call sym.XR_3DA.exe_public:_void___thiscall_CBackend::set_Element_struct_ShaderElement___unsigned_int_
mov ecx, dword [0x506410]
test ecx, ecx
je 0x474b67
push str.tfactor
lea edx, [esp + 0x14]
push edx
call sym.XR_3DA.exe_public:_class_resptr_core_struct_R_constant__class_resptr_base_struct_R_constant_____thiscall_R_constant_table::get_char_const__
mov ecx, dword [eax]
test ecx, ecx
je 0x474b28
test byte [ecx + 0xa], 1
fld1
je 0x474adb
movzx eax, word [ecx + 0xc]
shl eax, 4
add eax, 0x5043d0
fst dword [eax]
fst dword [eax + 4]
fst dword [eax + 8]
fst dword [eax + 0xc]
movzx eax, word [ecx + 0xc]
cmp eax, dword [0x5053d4]
lea edx, [eax + 1]
jae 0x474ac3
mov dword [0x5053d4], eax
cmp edx, dword [0x5053d8]
jbe 0x474ad1
mov dword [0x5053d8], edx
mov dword [0x5053e0], 1
test byte [ecx + 0xa], 2
je 0x474b26
movzx eax, word [ecx + 0x10]
shl eax, 4
add eax, 0x5053f0
fst dword [eax]
fst dword [eax + 4]
fst dword [eax + 8]
fstp dword [eax + 0xc]
movzx eax, word [ecx + 0x10]
cmp eax, dword [0x5063f4]
lea ecx, [eax + 1]
jae 0x474b0c
mov dword [0x5063f4], eax
cmp ecx, dword [0x5063f8]
jbe 0x474b1a
mov dword [0x5063f8], ecx
mov dword [0x506400], 1
jmp 0x474b28
fstp st(0)
mov eax, dword [esp + 0x10]
test eax, eax
je 0x474b67
add dword [eax], 0xffffffff
mov ecx, dword [esp + 0x10]
cmp dword [ecx], 0
jne 0x474b67
mov eax, dword [ecx + 4]
add ecx, 4
test eax, eax
je 0x474b56
add dword [eax], 0xffffffff
mov eax, dword [ecx]
cmp dword [eax], 0
jne 0x474b56
mov dword [ecx], 0
mov ecx, dword [esp + 0x10]
push ecx
mov ecx, dword [0x4c45f4]
call dword [0x4c45f8]
mov eax, dword [edi + 0x124]
mov eax, dword [eax + 0x14]
lea edx, [esp + 0x18]
push edx
push eax
push 5
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
call sym.XR_3DA.exe_public:_void____thiscall__VertexStream::Lock_unsigned_int__unsigned_int__unsigned_int__
fld dword [esi + 4]
fchs
mov ecx, dword [ebp + 0x1c]
fstp dword [esp + 0x10]
add eax, 0x10
fld dword [esi]
mov dword [eax - 4], ecx
fchs
fstp dword [eax - 0x10]
fld dword [esp + 0x50]
fldz
fmul st(1), st(0)
fld dword [eax - 0x10]
fmul dword [esp + 0x28]
fadd st(2)
fld dword [esp + 0x10]
fld st(0)
fmul dword [esp + 0x1c]
faddp st(2)
fld dword [esp + 0x70]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x34]
fld dword [esp + 0x54]
fmul st(2)
fld dword [esp + 0x2c]
fld st(0)
fmul dword [eax - 0x10]
fadd st(2)
fld dword [esp + 0x20]
fmul st(4)
faddp st(1)
fadd dword [esp + 0x74]
fstp dword [esp + 0x38]
fld dword [esp + 0x58]
fmulp st(4)
fld dword [esp + 0x30]
fld st(0)
fmul dword [eax - 0x10]
fadd st(5)
fld dword [esp + 0x24]
fmulp st(5)
faddp st(4)
fld dword [esp + 0x78]
faddp st(4)
fxch st(3)
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x10]
fld dword [esp + 0x38]
fstp dword [eax - 0xc]
fld dword [esp + 0x3c]
fstp dword [eax - 8]
fld dword [esi + 4]
fchs
fstp dword [esp + 0x10]
fld dword [esi]
mov dword [eax + 0xc], ecx
fstp dword [eax]
fld dword [eax]
fmul dword [esp + 0x28]
fadd st(5)
fld dword [esp + 0x10]
fmul dword [esp + 0x1c]
faddp st(1)
fadd dword [esp + 0x70]
fstp dword [esp + 0x34]
fld st(0)
fmul dword [eax]
fadd st(2)
fld dword [esp + 0x20]
fmul dword [esp + 0x10]
faddp st(1)
fadd dword [esp + 0x74]
add eax, 0x10
add eax, 0x10
fstp dword [esp + 0x38]
fld st(2)
fmul dword [eax - 0x20]
fadd st(4)
fld dword [esp + 0x24]
fmul dword [esp + 0x10]
faddp st(1)
fadd dword [esp + 0x78]
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x20]
fld dword [esp + 0x38]
fstp dword [eax - 0x1c]
fld dword [esp + 0x3c]
fstp dword [eax - 0x18]
fld dword [esi + 4]
fstp dword [esp + 0x10]
fld dword [esi]
mov dword [eax - 4], ecx
fstp dword [eax - 0x10]
fld dword [eax - 0x10]
fmul dword [esp + 0x28]
fadd st(5)
fld dword [esp + 0x10]
fmul dword [esp + 0x1c]
faddp st(1)
fadd dword [esp + 0x70]
fstp dword [esp + 0x34]
fld st(0)
fmul dword [eax - 0x10]
fadd st(2)
fld dword [esp + 0x20]
fmul dword [esp + 0x10]
faddp st(1)
fadd dword [esp + 0x74]
fstp dword [esp + 0x38]
fld st(2)
fmul dword [eax - 0x10]
fadd st(4)
fld dword [esp + 0x24]
fmul dword [esp + 0x10]
faddp st(1)
fld dword [esp + 0x78]
fld st(0)
faddp st(2)
fxch st(1)
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x10]
fld dword [esp + 0x38]
fstp dword [eax - 0xc]
fld dword [esp + 0x3c]
fstp dword [eax - 8]
fld dword [esi + 4]
fstp dword [esp + 0x10]
fld dword [esi]
mov dword [eax + 0xc], ecx
fchs
fstp dword [eax]
fld dword [eax]
fmul dword [esp + 0x28]
faddp st(6)
fld dword [esp + 0x10]
fmul dword [esp + 0x1c]
faddp st(6)
fld dword [esp + 0x70]
faddp st(6)
fxch st(5)
fstp dword [esp + 0x34]
fmul dword [eax]
faddp st(1)
fld dword [esp + 0x20]
fld dword [esp + 0x10]
fld st(0)
fmulp st(2)
fxch st(2)
faddp st(1)
fadd dword [esp + 0x74]
fstp dword [esp + 0x38]
add eax, 0x10
fld dword [eax - 0x10]
fmulp st(2)
fxch st(1)
faddp st(2)
fmul dword [esp + 0x24]
faddp st(1)
faddp st(1)
fstp dword [esp + 0x3c]
fld dword [esp + 0x34]
fstp dword [eax - 0x10]
fld dword [esp + 0x38]
fstp dword [eax - 0xc]
fld dword [esp + 0x3c]
fstp dword [eax - 8]
mov ecx, dword [eax - 0x40]
mov edx, dword [eax - 0x3c]
mov dword [eax], ecx
mov ecx, dword [eax - 0x38]
mov dword [eax + 4], edx
mov edx, dword [eax - 0x34]
mov dword [eax + 8], ecx
mov dword [eax + 0xc], edx
mov eax, dword [edi + 0x124]
mov eax, dword [eax + 0x14]
mov ecx, dword [0x5041e8]
lea edx, [eax + ecx]
lea eax, [edx + eax*4]
mov dword [0x5041e8], eax
mov eax, dword [sym.XR_3DA.exe_class_CBackend_RCache]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x30]
push eax
call edx
mov eax, dword [esp + 0x18]
push 4
push eax
mov eax, dword [edi + 0x124]
test eax, eax
push ecx
mov ecx, esp
mov dword [ecx], eax
je 0x474dda
add dword [eax], 1
push 3
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
call sym.XR_3DA.exe_public:_void___thiscall_CBackend::dbg_DP_enum__D3DPRIMITIVETYPE__class_resptr_core_struct_SGeometry__struct_resptrcode_geom___unsigned_int__unsigned_int_
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x24