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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xe4
push ebx
push esi
mov esi, dword [ebp + 8]
push edi
mov ebx, ecx
lea eax, [esp + 0x40]
push eax
mov ecx, esi
mov dword [esp + 0x14], ebx
call fcn.0041a700
lea ecx, [esp + 0x14]
push ecx
mov ecx, esi
mov edi, eax
call fcn.0041a340
mov edx, dword [edi]
mov eax, dword [eax]
push edx
push eax
lea ecx, [esp + 0x44]
push ecx
mov ecx, esi
call fcn.00417700
mov eax, dword [ebp + 0xc]
mov edx, dword [eax]
fld dword [eax + 0x18]
mov esi, eax
fstp dword [esp + 0x30]
mov dword [esp + 0x18], edx
fldz
mov edx, dword [eax + 8]
fstp dword [esp + 0x4c]
mov ecx, 9
lea edi, [esp + 0x50]
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [eax + 4]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x2c], ecx
mov dword [esp + 0x20], edx
mov edx, dword [eax + 0x10]
mov dword [esp + 0x28], edx
mov edx, dword [eax + 0x1c]
mov eax, dword [eax + 0x20]
mov ecx, eax
and ecx, 0xd
mov dword [esp + 0x3c], ecx
mov ecx, eax
and ecx, 4
add ecx, ecx
add ecx, ecx
mov dword [esp + 0x38], eax
and eax, 8
or ecx, eax
add ecx, ecx
add ecx, ecx
add ecx, ecx
or edx, 4
or ecx, 4
mov dword [esp + 0x34], edx
mov dword [esp + 0x48], ecx
add ebx, 0x54
lea eax, [esp + 0xa8]
push eax
mov ecx, ebx
call fcn.0041a700
lea ecx, [esp + 0x98]
push ecx
mov ecx, ebx
mov esi, eax
call fcn.0041a340
mov edx, dword [esi]
mov eax, dword [eax]
push edx
push eax
lea ecx, [esp + 0xa8]
push ecx
mov ecx, ebx
call fcn.00417700
mov edi, dword [ebp + 0xc]
test byte [edi + 0x20], 2
mov esi, dword [esp + 0x10]
je 0x4b7685
mov edx, dword [esp + 0x34]
fld dword [esp + 0x30]
lea ecx, [esi + 0x38]
push ecx
fstp dword [esp]
lea eax, [esp + 0x28]
push eax
mov dword [ecx], edx
lea edx, [esp + 0x20]
push edx
lea eax, [esi + 4]
push eax
call dword [0x4c439c]
mov eax, dword [esi + 0x48]
test eax, eax
je 0x4b767d
mov ecx, dword [esi + 0x4c]
sub ecx, eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 5
mov ecx, edx
shr ecx, 0x1f
add ecx, edx
je 0x4b767d
mov eax, dword [esi + 0x48]
fld dword [eax + 0x2c]
mov ecx, dword [eax + 0x28]
fstp dword [esp + 0xc]
mov dword [esp + 0x7c], ecx
fld dword [esp + 0xc]
mov ecx, ebx
fst dword [esp + 0x68]
mov dword [esp + 0x74], 0
fld qword [0x4d0ca0]
fadd st(1), st(0)
fld dword [esp + 0x30]
fsub st(2)
fstp dword [esp + 0x30]
fxch st(1)
fstp dword [esp + 0xc]
fld dword [esp + 0x24]
fld dword [esp + 0xc]
fld st(0)
fmulp st(2)
fld dword [esp + 0x18]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x28]
fmul st(1)
fadd dword [esp + 0x1c]
fstp dword [esp + 0x1c]
fmul dword [esp + 0x2c]
fadd dword [esp + 0x20]
fstp dword [esp + 0x20]
fld dword [edi + 0x18]
fsub dword [esp + 0x30]
fsubrp st(1)
fstp dword [esp + 0x78]
call fcn.00412d70
test eax, eax
jne 0x4b766f
push ebx
call fcn.00435ac0
lea edx, [esp + 0x74]
push edx
mov eax, ebx
call fcn.00435bf0
jmp 0x4b7685
fld dword [esp + 0x30]
fstp dword [esp + 0x68]
mov eax, dword [esp + 0x3c]
test dword [edi + 0x20], eax
je 0x4b7895
mov ecx, dword [sym.XR_3DA.exe_class_ISpatial_DB__g_SpatialSpace]
fld dword [esp + 0x68]
mov edi, ecx
fstp dword [esp + 0x44]
mov dword [esp + 0xc], edi
call dword [0x4c4414]
lea ecx, [esp + 0x80]
add esi, 0x64
push ecx
mov ecx, esi
mov dword [edi + 0x40], esi
call fcn.0041a700
lea edx, [esp + 0x9c]
push edx
mov ecx, esi
mov dword [esp + 0x18], eax
call fcn.0041a340
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
mov eax, dword [eax]
push edx
push eax
lea ecx, [esp + 0x94]
push ecx
mov ecx, esi
call fcn.0041c960
fld dword [esp + 0x44]
mov edx, dword [0x4c441c]
test byte [edx + 0x4c], 2
push ecx
fstp dword [esp]
push edi
je 0x4b7738
mov esi, dword [esp + 0x50]
lea eax, [esp + 0xb8]
push eax
lea ecx, [esp + 0x68]
lea edx, [esp + 0x5c]
call fcn.00423f10
fld dword [edi + 0x3c]
mov edx, dword [edi + 0x2c]
push ecx
fstp dword [esp]
lea ecx, [edi + 0x30]
push ecx
push edx
lea ecx, [esp + 0xbc]
call fcn.00424b10
jmp 0x4b776e
mov ecx, dword [esp + 0x50]
lea edi, [esp + 0x64]
lea eax, [esp + 0x58]
lea esi, [esp + 0xb8]
call fcn.00424ec0
mov eax, dword [esp + 0xc]
fld dword [eax + 0x3c]
mov edx, dword [eax + 0x2c]
push ecx
lea ecx, [eax + 0x30]
fstp dword [esp]
push ecx
push edx
mov ecx, esi
call fcn.004262e0
mov edi, dword [esp + 0xc]
mov ecx, edi
call dword [0x4c4418]
mov esi, dword [esp + 0x10]
add esi, 0x64
xor edi, edi
mov ecx, esi
mov dword [esp + 0xc], edi
call fcn.004191d0
test eax, eax
jbe 0x4b7895
lea eax, [esp + 0xac]
push eax
mov ecx, esi
call fcn.0041a340
mov ecx, dword [eax]
lea edx, [ecx + edi*4]
lea ecx, [esp + 0x40]
mov dword [esp + 0x40], edx
call fcn.004191c0
mov ecx, dword [eax]
mov eax, dword [ecx]
mov edx, dword [eax + 0x10]
call edx
test eax, eax
je 0x4b7874
cmp eax, dword [ebp + 0x1c]
je 0x4b7874
mov ecx, dword [ebp + 0xc]
mov ecx, dword [ecx + 0x20]
test cl, 9
mov esi, dword [eax + 0xa0]
mov edx, dword [esi + 0x34]
je 0x4b77e5
test edx, edx
je 0x4b77f7
test cl, 4
je 0x4b7874
cmp edx, 1
jne 0x4b7874
mov ecx, dword [ebp + 0x18]
test ecx, ecx
je 0x4b7811
mov edx, dword [ebp + 0x14]
push edx
push eax
lea eax, [esp + 0x58]
push eax
call ecx
add esp, 0xc
test eax, eax
je 0x4b7874
mov ecx, ebx
call fcn.00417690
mov edx, dword [esi]
mov edx, dword [edx + 4]
mov edi, eax
push ebx
lea eax, [esp + 0x54]
push eax
mov ecx, esi
call edx
mov ecx, ebx
call fcn.00417690
cmp edi, eax
jge 0x4b7874
lea esi, [edi + edi*2]
add esi, esi
add esi, esi
jmp 0x4b7840
lea eax, [esp + 0x94]
push eax
mov ecx, ebx
call fcn.0041a340
mov ecx, eax
call fcn.004191c0
fld dword [eax + esi + 4]
fadd dword [esp + 0x4c]
add eax, esi
mov ecx, ebx
add edi, 1
fstp dword [eax + 4]
add esi, 0xc
call fcn.00417690
cmp edi, eax
jl 0x4b7840
mov edi, dword [esp + 0xc]
mov esi, dword [esp + 0x10]
add esi, 0x64
add edi, 1
mov ecx, esi
mov dword [esp + 0xc], edi
call fcn.004191d0
cmp edi, eax
jb 0x4b7792
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x50], ecx
mov ecx, dword [ebp + 0xc]
fld dword [ecx + 0x18]
mov ecx, ebx
fsub dword [esp + 0x30]
mov dword [esp + 0x54], edx
mov dword [esp + 0x58], eax
fstp dword [esp + 0x4c]
call fcn.00417690
test eax, eax
je 0x4b7987
lea edx, [esp + 0xa4]
push edx
mov ecx, ebx
call fcn.0041a700
mov esi, dword [eax]
lea eax, [esp + 0x84]
push eax
mov ecx, ebx
call fcn.0041a340
mov edi, dword [eax]
mov ecx, esi
sub ecx, edi
mov eax, 0x2aaaaaab
imul ecx
sar edx, 1
mov ecx, edx
shr ecx, 0x1f
push sym.XR_3DA.exe_public:_static_bool___cdecl_CEnvironment::sort_env_etl_pred_class_CEnvDescriptor_const___class_CEnvDescriptor_const__
add ecx, edx
push ecx
push esi
push edi
call fcn.00435ff0
add esp, 0x10
lea edx, [esp + 0x88]
push edx
mov ecx, ebx
call fcn.0041a340
mov ecx, eax
call fcn.004191c0
mov esi, eax
lea eax, [esp + 0x90]
push eax
mov ecx, ebx
call fcn.0041a700
mov ecx, eax
call fcn.004191c0
mov edi, eax
cmp esi, edi
je 0x4b7987
mov ecx, dword [ebp + 8]
call fcn.00412d70
test eax, eax
jne 0x4b7959
mov ecx, dword [ebp + 8]
push ecx
call fcn.00435ac0
mov eax, dword [ebp + 8]
push esi
call fcn.00435bf0
mov eax, dword [ebp + 0x10]
test eax, eax
je 0x4b7977
mov edx, dword [ebp + 0x14]
push edx
push esi
call eax
add esp, 8
test eax, eax
je 0x4b79ad
mov eax, dword [ebp + 0xc]
test byte [eax + 0x1c], 2
jne 0x4b79ad
add esi, 0xc
cmp esi, edi
jne 0x4b7944
mov ecx, dword [ebp + 0xc]
test byte [ecx + 0x1c], 6
je 0x4b799e
mov esi, dword [ebp + 8]
mov ecx, esi
call fcn.00417690
test eax, eax
jne 0x4b79be
mov ecx, ebx
call fcn.00417690
test eax, eax
jne 0x4b7552
mov ecx, dword [ebp + 8]
call fcn.00417690
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
mov ecx, esi
call fcn.00417690
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x18