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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0xf8
cmp dword [sym.XR_3DA.exe_class_IGame_Level__g_pGameLevel], 0
push ebx
push ebp
push esi
push edi
mov ebx, ecx
je 0x4a06e4
mov eax, dword [sym.XR_3DA.exe_class_IGame_Persistent__g_pGamePersistent]
mov edi, dword [eax + 0x46c]
fld dword [edi + 0x1cc]
fstp dword [esp + 0x24]
fld dword [0x4c875c]
fld dword [esp + 0x24]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 5
jnp 0x4a06e2
fld st(0)
mov ebp, 0xff
fld1
mov ecx, 0x9e
fadd st(1), st(0)
mov eax, 1
fld qword [0x4d0a60]
fmul st(2), st(0)
fxch st(2)
fmul qword [0x4d0db0]
fstp dword [esp + 0x24]
mov esi, dword [esp + 0x24]
fxch st(2)
mov edx, esi
fmul st(1)
sar edx, 0x17
and edx, ebp
sub ecx, edx
faddp st(1)
mov edx, esi
or edx, 0xff800000
shl edx, 8
fstp dword [esp + 0x64]
shr edx, cl
sub ecx, 0x60
shl eax, cl
sub eax, 1
sar eax, 8
and eax, esi
neg eax
sbb eax, eax
add eax, 1
sar esi, 0x1f
and eax, esi
sub edx, eax
mov eax, dword [edi + 0x1d0]
mov dword [esp + 0x50], eax
fld dword [esp + 0x50]
fld qword [0x4d0bf8]
add ecx, 0x40
sar ecx, 0x1f
fmul st(1), st(0)
and edx, ecx
fxch st(1)
mov ecx, dword [edi + 0x1d4]
xor edx, esi
fstp dword [esp + 0x24]
mov esi, dword [esp + 0x24]
mov dword [esp + 0x14], edx
mov edx, dword [edi + 0x1d8]
mov dword [esp + 0x58], edx
mov dword [esp + 0x54], ecx
mov eax, esi
sar eax, 0x17
and eax, ebp
mov edx, esi
or edx, 0xff800000
shl edx, 8
mov ecx, 0x9e
sub ecx, eax
shr edx, cl
sub ecx, 0x60
mov eax, 1
shl eax, cl
sub eax, 1
sar eax, 8
and eax, esi
neg eax
sbb eax, eax
add eax, 1
sar esi, 0x1f
and eax, esi
add ecx, 0x40
sub edx, eax
sar ecx, 0x1f
and edx, ecx
xor edx, esi
jge 0x49f548
mov dword [esp + 0x20], 0
jmp 0x49f554
cmp edx, ebp
mov dword [esp + 0x20], ebp
jg 0x49f554
mov dword [esp + 0x20], edx
fld dword [esp + 0x54]
mov ecx, 0x9e
fmul st(1)
mov eax, 1
fstp dword [esp + 0x24]
mov edi, dword [esp + 0x24]
mov edx, edi
sar edx, 0x17
and edx, ebp
sub ecx, edx
mov esi, edi
or esi, 0xff800000
shl esi, 8
shr esi, cl
sub ecx, 0x60
shl eax, cl
sub eax, 1
sar eax, 8
and eax, edi
neg eax
sbb eax, eax
add eax, 1
sar edi, 0x1f
and eax, edi
add ecx, 0x40
sub esi, eax
sar ecx, 0x1f
and esi, ecx
xor esi, edi
jge 0x49f5b3
mov dword [esp + 0x28], 0
jmp 0x49f5bf
cmp esi, ebp
mov dword [esp + 0x28], ebp
jg 0x49f5bf
mov dword [esp + 0x28], esi
fld dword [esp + 0x58]
mov ecx, 0x9e
fmul st(1)
fstp dword [esp + 0x24]
mov edi, dword [esp + 0x24]
mov eax, edi
sar eax, 0x17
and eax, ebp
sub ecx, eax
mov esi, edi
or esi, 0xff800000
shl esi, 8
shr esi, cl
sub ecx, 0x60
mov eax, 1
shl eax, cl
sub eax, 1
sar eax, 8
and eax, edi
neg eax
sbb eax, eax
add eax, 1
sar edi, 0x1f
and eax, edi
add ecx, 0x40
sub esi, eax
sar ecx, 0x1f
and esi, ecx
xor esi, edi
jge 0x49f618
xor edx, edx
jmp 0x49f620
cmp esi, ebp
mov edx, ebp
jg 0x49f620
mov edx, esi
fmul dword [esp + 0x64]
mov ecx, 0x9e
fstp dword [esp + 0x24]
mov edi, dword [esp + 0x24]
mov eax, edi
sar eax, 0x17
and eax, ebp
sub ecx, eax
mov esi, edi
or esi, 0xff800000
shl esi, 8
shr esi, cl
sub ecx, 0x60
mov eax, 1
shl eax, cl
sub eax, 1
sar eax, 8
and eax, edi
neg eax
sbb eax, eax
add eax, 1
sar edi, 0x1f
and eax, edi
add ecx, 0x40
sub esi, eax
sar ecx, 0x1f
and esi, ecx
xor esi, edi
jge 0x49f677
xor ecx, ecx
jmp 0x49f67f
cmp esi, ebp
mov ecx, ebp
jg 0x49f67f
mov ecx, esi
movzx eax, byte [esp + 0x20]
shl ecx, 8
or eax, ecx
movzx ecx, byte [esp + 0x28]
shl eax, 8
or eax, ecx
shl eax, 8
movzx edx, dl
or eax, edx
lea esi, [ebx + 0x10]
mov dword [esp + 0x24], eax
mov eax, dword [esi + 4]
xor ebp, ebp
cmp eax, ebp
jne 0x49f6af
xor eax, eax
jmp 0x49f6c5
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edi, dword [esp + 0x14]
cmp eax, edi
jae 0x49f720
fstp st(0)
mov eax, dword [esi + 4]
cmp eax, ebp
jne 0x49f6da
xor eax, eax
jmp 0x49f6f0
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, edi
jae 0x49f71e
fld dword [0x4c8804]
push ecx
lea eax, [esp + 0xc4]
fstp dword [esp]
push eax
mov ecx, ebx
call sym.XR_3DA.exe_private:_void___thiscall_CEffect_Rain::Born_struct_CEffect_Rain::Item___float_
lea ecx, [esp + 0xc0]
push ecx
mov eax, esi
call fcn.00432980
jmp 0x49f6cf
fld1
fld dword [0x503e94]
push ecx
fstp dword [esp + 0x54]
fld dword [0x503e98]
fadd qword [0x4d0c90]
fstp dword [esp + 0x58]
fld dword [0x503e9c]
fstp dword [esp + 0x5c]
fldz
fmul st(0), st(0)
fst qword [esp + 0x104]
fld st(0)
fadd st(2)
faddp st(1)
fdivp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [esp]
call fcn.004223d0
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
mov eax, dword [ebx + 4]
fld qword [0x4d0af8]
mov eax, dword [eax + 0x14]
fmul st(1)
add esp, 4
lea edx, [esp + 0x5c]
push edx
push eax
fstp dword [esp + 0x1c]
lea ecx, [edi*4]
fld dword [esp + 0x1c]
push ecx
fst dword [esp + 0x98]
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
fxch st(1)
fmul qword [0x4d0b50]
fstp dword [esp + 0x9c]
fstp dword [esp + 0xa0]
fld dword [esp + 0x9c]
fmul dword [esp + 0x60]
fld dword [esp + 0x98]
fmul dword [esp + 0x5c]
faddp st(1)
fld dword [esp + 0xa0]
fmul dword [esp + 0x64]
faddp st(1)
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fchs
fstp dword [esp + 0xa4]
call sym.XR_3DA.exe_public:_void____thiscall__VertexStream::Lock_unsigned_int__unsigned_int__unsigned_int__
mov edi, eax
mov dword [esp + 0x60], edi
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x40], ebp
mov eax, dword [ebx + 0x14]
test eax, eax
je 0x4a0036
mov ecx, dword [ebx + 0x18]
sub ecx, eax
mov eax, 0x4ec4ec4f
imul ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp dword [esp + 0x3c], eax
jae 0x4a0036
mov esi, dword [ebx + 0x14]
add esi, dword [esp + 0x40]
mov edx, dword [esi + 0x2c]
cmp edx, dword [0x503e8c]
jae 0x49f84a
lea eax, [esi + 0xc]
push eax
mov ecx, ebx
call sym.XR_3DA.exe_private:_void___thiscall_CEffect_Rain::Hit_struct__vector3_float___
mov ecx, dword [0x503e8c]
cmp dword [esi + 0x28], ecx
jae 0x49f867
fld dword [0x4c8804]
push ecx
fstp dword [esp]
push esi
mov ecx, ebx
call sym.XR_3DA.exe_private:_void___thiscall_CEffect_Rain::Born_struct_CEffect_Rain::Item___float_
fld dword [esi + 0x24]
mov edx, dword [0x4c43fc]
fmul dword [0x503e80]
fstp dword [esp + 0x14]
fld dword [esi + 0x18]
fld dword [esp + 0x14]
fld st(0)
fmulp st(2)
fld dword [esi]
faddp st(2)
fxch st(1)
fstp dword [esi]
fld dword [esi + 0x1c]
fmul st(1)
fadd dword [esi + 4]
fstp dword [esi + 4]
fmul dword [esi + 0x20]
fadd dword [esi + 8]
fstp dword [esi + 8]
mov ebp, dword [0x503e60]
add ebp, 0xc30
cmp dword [edx], 0
je 0x49f8dc
add dword [ebp + 0x44], 1
cmp dword [ebp + 0x18], 0
jne 0x49f8dc
call dword [0x4c45d4]
sub eax, dword [ebp + 0x10]
sbb edx, dword [ebp + 0x14]
mov dword [ebp], eax
xor eax, eax
mov dword [ebp + 4], edx
mov dword [ebp + 0x28], eax
mov dword [ebp + 0x2c], eax
mov dword [ebp + 0x30], eax
mov dword [ebp + 0x34], eax
fld dword [esi]
fsub dword [0x503e94]
fstp dword [esp + 0x80]
fld dword [esi + 8]
fsub dword [0x503e9c]
fstp dword [esp + 0x88]
fld dword [esp + 0x80]
fld dword [esp + 0x88]
fld st(1)
fmulp st(2)
fxch st(1)
fadd qword [esp + 0x100]
fld st(1)
fmulp st(2)
faddp st(1)
fstp dword [esp + 0x20]
fld dword [0x4d0da8]
fld dword [esp + 0x20]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 0x41
jne 0x49fba6
push ecx
fstp dword [esp]
call fcn.004223d0
fstp dword [esp + 0x24]
add esp, 4
fld dword [esi + 4]
fsub dword [0x503e98]
fld dword [0x503c20]
fcompp
fnstsw ax
test ah, 0x41
jne 0x49f96d
mov dword [esi + 0x28], 0
jmp 0x49fba8
fld dword [esi + 0x18]
lea ebp, [esi + 0x18]
fchs
push ecx
fstp dword [esp + 0xa0]
fld dword [ebp + 4]
fchs
fstp dword [esp + 0xa4]
fld dword [ebp + 8]
fchs
fstp dword [esp + 0xa8]
fld dword [esp + 0x84]
fld dword [esp + 0x24]
fld st(0)
fdivp st(2)
fxch st(1)
fstp dword [esp + 0x84]
fld st(0)
fldz
fdivrp st(1)
fstp dword [esp + 0x88]
fld dword [esp + 0x8c]
fdiv st(1)
fstp dword [esp + 0x8c]
fadd qword [0x4d0da0]
fchs
fstp dword [esp + 0x18]
fld dword [esp + 0x84]
fld dword [esp + 0x18]
fld st(0)
fmulp st(2)
fld dword [esi]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x30]
fld dword [esp + 0x30]
fstp dword [esi]
fld dword [esp + 0x88]
fmul st(1)
fadd dword [esi + 4]
fstp dword [esp + 0x2c]
fld dword [esp + 0x2c]
fstp dword [esi + 4]
fmul dword [esp + 0x8c]
fadd dword [esi + 8]
fstp dword [esp + 0x24]
fld dword [esp + 0x24]
fstp dword [esi + 8]
fld dword [esp + 0xa4]
fmul dword [esp + 0x94]
fld dword [esp + 0xa0]
fmul dword [esp + 0x90]
faddp st(1)
fld dword [esp + 0xa8]
fmul dword [esp + 0x98]
faddp st(1)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fstp dword [esp]
call fcn.00401120
fcomp qword [0x4d0c48]
add esp, 4
fnstsw ax
test ah, 5
jnp 0x49f961
fld dword [esp + 0x2c]
fld st(0)
fmul dword [esp + 0x8c]
fld dword [esp + 0x28]
fld st(0)
fmul dword [esp + 0x90]
faddp st(2)
fld dword [esp + 0x20]
fld st(0)
fmul dword [esp + 0x94]
faddp st(3)
fxch st(2)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fadd dword [esp + 0x98]
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fdiv dword [esp + 0x14]
fchs
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld st(0)
fmul dword [esp + 0x9c]
fadd st(4)
fstp dword [esp + 0x50]
fld dword [esp + 0xa0]
fmul st(1)
fadd st(2)
fstp dword [esp + 0x54]
fld dword [esp + 0xa4]
fmul st(1)
fadd st(3)
fstp dword [esp + 0x58]
fldz
fcomp st(1)
fnstsw ax
test ah, 5
jnp 0x49ffc3
fstp st(3)
push ecx
fstp st(0)
fstp st(0)
fstp dword [esp]
call fcn.00401120
fcomp qword [0x4d0c48]
add esp, 4
fnstsw ax
test ah, 5
jp 0x49f961
fld dword [esp + 0x20]
fld dword [esp + 0x28]
fld dword [esp + 0x2c]
fxch st(2)
fxch st(1)
fsub dword [esp + 0x54]
push 3
fld dword [esp + 0x54]
lea eax, [esp + 0x18]
fsubp st(3)
push eax
fld dword [esp + 0x60]
push ebp
fsubp st(2)
lea ecx, [esp + 0x5c]
push ecx
mov ecx, ebx
fld st(2)
fmulp st(3)
fmul st(0), st(0)
faddp st(2)
fmul st(0), st(0)
faddp st(1)
fstp dword [esp + 0x3c]
fld dword [0x501340]
fstp dword [esp + 0x24]
call sym.XR_3DA.exe_private:_int___thiscall_CEffect_Rain::RayPick_struct__vector3_float__const___struct__vector3_float__const___float___enum_collide::rq_target_
test eax, eax
je 0x49fffc
fld dword [esp + 0x14]
fld st(0)
fmul st(0), st(0)
fstp dword [esp + 0x18]
fld dword [esp + 0x18]
fld dword [esp + 0x2c]
fcom st(1)
fnstsw ax
fstp st(1)
test ah, 1
jne 0x49ffca
fstp st(1)
mov dword [esi + 0x28], 0
fstp st(0)
mov ebp, dword [0x503e60]
mov edx, dword [0x4c43fc]
add ebp, 0xc30
cmp dword [edx], 0
je 0x49fbcd
mov ecx, ebp
call dword [0x4c4568]
add dword [ebp + 0x38], eax
adc dword [ebp + 0x3c], edx
fld dword [esp + 0x64]
push ecx
fmul qword [0x4d0b48]
fstp dword [esp + 0x1c]
fld dword [esi + 0x18]
fld dword [esp + 0x1c]
fld st(0)
fmulp st(2)
fld dword [esi]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x78]
fld dword [esi + 0x1c]
fmul st(1)
fadd dword [esi + 4]
fstp dword [esp + 0x7c]
fmul dword [esi + 0x20]
fadd dword [esi + 8]
fstp dword [esp + 0x80]
fld dword [esi]
fsub dword [esp + 0x78]
fstp dword [esp + 0x34]
fld dword [esi + 4]
fsub dword [esp + 0x7c]
fstp dword [esp + 0x38]
fld dword [esi + 8]
fsub dword [esp + 0x80]
fstp dword [esp + 0x3c]
fld dword [esp + 0x38]
fld dword [esp + 0x34]
fld dword [esp + 0x3c]
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 + 0x34]
fld st(0)
fld dword [esp + 0x1c]
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esp + 0xb8]
fld dword [esp + 0x38]
fld st(0)
fmul st(2)
fstp dword [esp + 0xbc]
fld dword [esp + 0x3c]
fld st(0)
fmulp st(3)
fxch st(2)
fstp dword [esp + 0xc0]
fld qword [0x4d0a60]
fmul st(3), st(0)
fxch st(3)
fstp dword [esp + 0x34]
fmul st(2)
fstp dword [esp + 0x38]
fmulp st(1)
fstp dword [esp + 0x3c]
fld dword [esp + 0x38]
fld dword [esp + 0x34]
fld dword [esp + 0x3c]
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 + 0x1c]
fld dword [esp + 0x1c]
fstp dword [esp]
call fcn.004223d0
fstp dword [esp + 0x1c]
mov ecx, dword [sym.XR_3DA.exe_class_IRender_interface__Render]
fld dword [esp + 0x34]
lea eax, [esp + 0x34]
fadd dword [esp + 0x78]
add ecx, 8
fstp dword [esp + 0x34]
fld dword [esp + 0x38]
fadd dword [esp + 0x7c]
fstp dword [esp + 0x38]
fld dword [esp + 0x3c]
fadd dword [esp + 0x80]
fstp dword [esp + 0x3c]
fld dword [esp + 0x1c]
fstp dword [esp]
push eax
call sym.XR_3DA.exe_public:_int___thiscall_CFrustum::testSphere_dirty_struct__vector3_float____float_const
test eax, eax
je 0x49ffb4
fld dword [esp + 0x30]
push ecx
fsub dword [0x503e94]
fstp dword [esp + 0x6c]
fld dword [esp + 0x38]
fsub dword [0x503e98]
fstp dword [esp + 0x70]
fld dword [esp + 0x3c]
fsub dword [0x503e9c]
fstp dword [esp + 0x74]
fld dword [esp + 0x70]
fld dword [esp + 0x6c]
fld dword [esp + 0x74]
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 + 0x6c]
mov eax, dword [esi + 0x30]
fld dword [esp + 0x1c]
add esp, 4
fld st(0)
fmulp st(2)
fxch st(1)
fstp dword [esp + 0x68]
fld dword [esp + 0x6c]
fmul st(1)
fstp dword [esp + 0x6c]
fmul dword [esp + 0x70]
fstp dword [esp + 0x70]
fld dword [esp + 0x6c]
fld st(0)
fld dword [esp + 0xbc]
fld st(0)
fmulp st(2)
fld dword [esp + 0x70]
fld st(0)
fld dword [esp + 0xb8]
fld st(0)
fmulp st(2)
fxch st(4)
fsubrp st(1)
fstp dword [esp + 0xa8]
fld dword [esp + 0xb4]
fld st(0)
fmulp st(2)
fld dword [esp + 0x68]
fld st(0)
fmulp st(4)
fxch st(2)
fsubrp st(3)
fxch st(2)
fstp dword [esp + 0xac]
fmulp st(2)
fmulp st(2)
fsubrp st(1)
fstp dword [esp + 0xb0]
fld dword [esp + 0xa8]
fld st(0)
fld qword [0x4d0d98]
fmul st(1), st(0)
fld dword [esp + 0x74]
fld st(0)
fadd st(3)
fstp dword [esp + 0x44]
fld dword [esp + 0xac]
fmul st(2)
fld dword [esp + 0x78]
fld st(0)
fadd st(2)
fstp dword [esp + 0x48]
mov ecx, dword [esp + 0x24]
fld dword [esp + 0xb0]
shl eax, 5
fmulp st(4)
add edi, 0x18
fld dword [esp + 0x7c]
add edi, 0x18
fld st(0)
add edi, 0x18
fadd st(5)
fstp dword [esp + 0x4c]
fld dword [eax + 0x501f08]
fstp dword [esp + 0x18]
fld dword [eax + 0x501f0c]
mov dword [edi - 0x3c], ecx
fstp dword [esp + 0x14]
fld dword [esp + 0x44]
fstp dword [edi - 0x48]
fld dword [esp + 0x48]
fstp dword [edi - 0x44]
fld dword [esp + 0x4c]
fstp dword [edi - 0x40]
fld dword [esp + 0x18]
fstp dword [edi - 0x38]
fld dword [esp + 0x14]
fstp dword [edi - 0x34]
fld qword [0x4d0c60]
fmul st(7), st(0)
fxch st(4)
fadd st(7)
fstp dword [esp + 0x44]
fld dword [esp + 0xac]
fmul st(4)
fadd st(2), st(0)
fxch st(2)
fstp dword [esp + 0x48]
fld dword [esp + 0xb0]
fmulp st(4)
fadd st(3)
fstp dword [esp + 0x4c]
fld dword [eax + 0x501f10]
fstp dword [esp + 0x18]
fld dword [eax + 0x501f14]
mov dword [edi - 0x24], ecx
fstp dword [esp + 0x14]
fld dword [esp + 0x44]
fstp dword [edi - 0x30]
fld dword [esp + 0x48]
fstp dword [edi - 0x2c]
fld dword [esp + 0x4c]
fstp dword [edi - 0x28]
fld dword [esp + 0x18]
fstp dword [edi - 0x20]
fld dword [esp + 0x14]
fstp dword [edi - 0x1c]
fld dword [esi]
faddp st(5)
fxch st(4)
fstp dword [esp + 0x44]
fadd dword [esi + 4]
fstp dword [esp + 0x48]
fld dword [esi + 8]
faddp st(2)
fxch st(1)
fstp dword [esp + 0x4c]
fld dword [eax + 0x501f18]
fstp dword [esp + 0x18]
fld dword [eax + 0x501f1c]
mov dword [edi - 0xc], ecx
fstp dword [esp + 0x14]
fld dword [esp + 0x44]
fstp dword [edi - 0x18]
fld dword [esp + 0x48]
fstp dword [edi - 0x14]
fld dword [esp + 0x4c]
fstp dword [edi - 0x10]
fld dword [esp + 0x18]
fstp dword [edi - 8]
fld dword [esp + 0x14]
fstp dword [edi - 4]
fld dword [esi]
add edi, 0x18
faddp st(3)
fxch st(2)
fstp dword [esp + 0x44]
fadd dword [esi + 4]
fstp dword [esp + 0x48]
fadd dword [esi + 8]
fstp dword [esp + 0x4c]
fld dword [eax + 0x501f20]
fstp dword [esp + 0x18]
fld dword [eax + 0x501f24]
mov dword [edi - 0xc], ecx
fstp dword [esp + 0x14]
fld dword [esp + 0x44]
fstp dword [edi - 0x18]
fld dword [esp + 0x48]
fstp dword [edi - 0x14]
fld dword [esp + 0x4c]
fstp dword [edi - 0x10]
fld dword [esp + 0x18]
fstp dword [edi - 8]
fld dword [esp + 0x14]
fstp dword [edi - 4]
add dword [esp + 0x3c], 1
add dword [esp + 0x40], 0x34
jmp 0x49f802
fstp st(0)
jmp 0x49fb34
fxch st(1)
push 1
fstp qword [esp + 0x1c]
sub esp, 8
fstp dword [esp]
call fcn.004223d0
fsubr qword [esp + 0x24]
add esp, 4
mov ecx, ebx
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fstp dword [esp]
push esi
call sym.XR_3DA.exe_private:_void___thiscall_CEffect_Rain::RenewItem_struct_CEffect_Rain::Item___float__int_
jmp 0x49fba8
fld dword [0x501340]
push 0
fstp qword [esp + 0x1c]
sub esp, 8
fld dword [esp + 0x38]
fstp dword [esp]
call fcn.004223d0
fsubr qword [esp + 0x24]
add esp, 4
mov ecx, ebx
fstp dword [esp + 0x20]
fld dword [esp + 0x20]
fstp dword [esp]
push esi
call sym.XR_3DA.exe_private:_void___thiscall_CEffect_Rain::RenewItem_struct_CEffect_Rain::Item___float__int_
jmp 0x49fba8
sub edi, dword [esp + 0x60]
mov ecx, dword [ebx + 4]
mov eax, 0x2aaaaaab
imul edi
mov eax, dword [sym.XR_3DA.exe_class_CBackend_RCache]
sar edx, 2
mov esi, edx
shr esi, 0x1f
add esi, edx
mov edx, dword [ecx + 0x14]
imul edx, esi
add dword [0x5041e8], edx
mov ecx, dword [eax]
mov edx, dword [ecx + 0x30]
push eax
call edx
test esi, esi
je 0x4a018b
mov eax, dword [0x503ff0]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xe4]
push 1
push 0x16
push eax
call edx
mov eax, dword [0x4c4478]
push eax
mov ecx, 0x504210
call sym.XR_3DA.exe_public:_void___thiscall_R_xforms::set_W_struct__matrix_float__const__
mov ecx, dword [ebx]
mov edx, dword [ecx + 8]
push 0
push edx
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 edi, dword [ebx + 4]
mov eax, dword [edi + 8]
mov eax, dword [eax + 8]
cmp dword [0x5043bc], eax
je 0x4a00cd
mov ecx, dword [0x503ff0]
mov dword [0x5043bc], eax
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x15c]
push ecx
call eax
mov eax, dword [edi + 0xc]
cmp dword [0x5043c0], eax
mov ecx, dword [edi + 0x14]
jne 0x4a00e3
cmp dword [0x5043c8], ecx
je 0x4a0105
mov edx, dword [0x503ff0]
push ecx
push 0
push eax
mov dword [0x5043c8], ecx
mov dword [0x5043c0], eax
mov ebp, dword [edx]
mov ecx, dword [ebp + 0x190]
push 0
push edx
call ecx
mov edi, dword [edi + 0x10]
cmp dword [0x5043c4], edi
je 0x4a0127
mov eax, dword [0x503ff0]
mov dword [0x5043c4], edi
mov edx, dword [eax]
push edi
push eax
mov eax, dword [edx + 0x1a0]
call eax
add dword [0x5064b0], 1
add dword [0x5064ac], esi
mov edi, esi
shr edi, 1
add dword [0x5064a8], edi
cmp dword [0x5053e0], 0
jne 0x4a0150
cmp dword [0x506400], 0
je 0x4a015a
mov ecx, 0x5043d0
call sym.XR_3DA.exe_public:_void___thiscall_R_constants::flush_cache_void_
mov edx, dword [esp + 0x5c]
mov eax, dword [0x503ff0]
mov ecx, dword [eax]
push edi
push 0
push esi
push 0
push edx
push 4
push eax
mov eax, dword [ecx + 0x148]
call eax
mov eax, dword [0x503ff0]
mov ecx, dword [eax]
mov edx, dword [ecx + 0xe4]
push 3
push 0x16
push eax
call edx
mov esi, dword [ebx + 0x34]
test esi, esi
je 0x4a06e4
mov eax, dword [ebx + 8]
fld dword [0x503e80]
mov ecx, dword [eax + 0x38]
fstp dword [esp + 0x5c]
mov edx, dword [ecx + 8]
push 0
push edx
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 eax, dword [ebx + 8]
mov ebp, dword [eax + 0x40]
mov eax, dword [eax + 0x48]
imul ebp, ebp, 0x190
imul eax, eax, 0x190
mov dword [esp + 0x40], eax
mov eax, dword [ebx + 0xc]
mov edx, dword [eax + 0x14]
lea ecx, [esp + 0x2c]
push ecx
push edx
push ebp
mov ecx, sym.XR_3DA.exe_class_CBackend_RCache
xor edi, edi
call sym.XR_3DA.exe_public:_void____thiscall__VertexStream::Lock_unsigned_int__unsigned_int__unsigned_int__
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x3c]
push eax
push ecx
mov ecx, 0x5041f4
call sym.XR_3DA.exe_public:_unsigned_short_int____thiscall__IndexStream::Lock_unsigned_int__unsigned_int__
mov dword [esp + 0x20], eax
xor edx, edx
fld dword [esi + 0x58]
mov ecx, dword [esi]
fsub dword [esp + 0x5c]
mov dword [esp + 0x14], ecx
fstp dword [esp + 0x64]
fld dword [esp + 0x64]
fst dword [esi + 0x58]
fldz
fcompp
fnstsw ax
test ah, 0x41
jne 0x4a0262
mov eax, dword [esi + 4]
cmp eax, edx
mov dword [esi + 4], edx
mov dword [esi], edx
je 0x4a0237
mov dword [eax], ecx
cmp ecx, edx
je 0x4a023e
mov dword [ecx + 4], eax
cmp dword [ebx + 0x34], esi
jne 0x4a0246
mov dword [ebx + 0x34], ecx
mov dword [esi + 4], edx
mov eax, dword [ebx + 0x38]
mov dword [esi], eax
mov eax, dword [ebx + 0x38]
cmp eax, edx
je 0x4a0258
mov dword [eax + 4], esi
mov dword [ebx + 0x38], esi
mov esi, ecx
jmp 0x4a05aa
fld dword [esi + 0x54]
push ecx
lea ecx, [esi + 0x48]
fstp dword [esp]
push ecx
mov ecx, dword [sym.XR_3DA.exe_class_IRender_interface__Render]
add ecx, 8
call sym.XR_3DA.exe_public:_int___thiscall_CFrustum::testSphere_dirty_struct__vector3_float____float_const
test eax, eax
je 0x4a05a2
fld dword [esp + 0x64]
fdiv qword [0x4d0c60]
fstp dword [esp + 0x60]
fld dword [esi + 8]
fld dword [esp + 0x60]
fld st(0)
fmulp st(2)
fld dword [esi + 0x18]
fldz
fmul st(1), st(0)
fxch st(3)
faddp st(1)
fld dword [esi + 0x28]
fmul st(3)
faddp st(1)
fstp dword [esp + 0xc0]
fld dword [esi + 0xc]
fmul st(1)
fld dword [esi + 0x1c]
fmul st(3)
faddp st(1)
fld dword [esi + 0x2c]
fmul st(3)
faddp st(1)
fstp dword [esp + 0xc4]
fld dword [esi + 0x10]
fmul st(1)
fld dword [esi + 0x20]
fmul st(3)
faddp st(1)
fld dword [esi + 0x30]
fmul st(3)
faddp st(1)
fstp dword [esp + 0xc8]
fldz
fst dword [esp + 0xcc]
fld st(1)
fmul dword [esi + 0x18]
fld dword [esi + 8]
fmul st(4)
faddp st(1)
fld dword [esi + 0x28]
fmul st(4)
faddp st(1)
fstp dword [esp + 0xd0]
fld st(1)
fmul dword [esi + 0x1c]
fld dword [esi + 0xc]
fmul st(4)
faddp st(1)
fld dword [esi + 0x2c]
fmul st(4)
faddp st(1)
fstp dword [esp + 0xd4]
fld dword [esi + 0x20]
fmul st(2)
fld dword [esi + 0x10]
fmul st(4)
faddp st(1)
fld dword [esi + 0x30]
fmul st(4)
faddp st(1)
fstp dword [esp + 0xd8]
fst dword [esp + 0xdc]
fld dword [esi + 8]
fmul st(3)
fld dword [esi + 0x18]
fmul st(4)
faddp st(1)
fld st(2)
fmul dword [esi + 0x28]
faddp st(1)
fstp dword [esp + 0xe0]
fld dword [esi + 0xc]
fmul st(3)
fld dword [esi + 0x1c]
fmul st(4)
faddp st(1)
fld dword [esi + 0x2c]
fmul st(3)
faddp st(1)
fstp dword [esp + 0xe4]
mov ecx, dword [ebx + 8]
fld dword [esi + 0x10]
fmul st(3)
fld dword [esi + 0x20]
fmul st(4)
faddp st(1)
fld dword [esi + 0x30]
fmulp st(3)
faddp st(2)
fxch st(1)
fstp dword [esp + 0xe8]
fstp dword [esp + 0xec]
fld dword [esi + 8]
fmul st(1)
fld dword [esi + 0x18]
fmul st(2)
faddp st(1)
fld dword [esi + 0x28]
fmul st(2)
faddp st(1)
fadd dword [esi + 0x38]
fstp dword [esp + 0xf0]
fld dword [esi + 0xc]
fmul st(1)
fld dword [esi + 0x1c]
fmul st(2)
faddp st(1)
fld dword [esi + 0x2c]
fmul st(2)
faddp st(1)
fadd dword [esi + 0x3c]
fstp dword [esp + 0xf4]
fld dword [esi + 0x10]
fmul st(1)
fld dword [esi + 0x20]
fmul st(2)
faddp st(1)
fld dword [esi + 0x30]
fmulp st(2)
faddp st(1)
fadd dword [esi + 0x40]
fstp dword [esp + 0xf8]
fld1
fstp dword [esp + 0xfc]
mov eax, dword [ecx + 0x40]
mov edx, dword [ecx]
imul eax, edi
mov edx, dword [edx + 4]
push eax
mov eax, dword [esp + 0x24]
push eax
mov eax, dword [esp + 0x2c]
push eax
mov eax, dword [esp + 0x34]
push eax
lea eax, [esp + 0xd0]
push eax
call edx
mov eax, dword [ebx + 8]
mov ecx, dword [eax + 0x40]
mov edx, dword [esp + 0x28]
lea ecx, [ecx + ecx*2]
lea ecx, [edx + ecx*8]
mov edx, dword [eax + 0x48]
mov eax, dword [esp + 0x20]
mov dword [esp + 0x28], ecx
add edi, 1
cmp edi, 0x190
lea ecx, [eax + edx*2]
mov dword [esp + 0x20], ecx
jl 0x4a05a2
mov edi, dword [esp + 0x40]
mov eax, 0xaaaaaaab
mul edi
mov esi, edx
mov edx, dword [ebx + 0xc]
mov eax, dword [edx + 0x14]
imul eax, ebp
add dword [0x5041e8], eax
mov eax, dword [sym.XR_3DA.exe_class_CBackend_RCache]
mov ecx, dword [eax]
mov edx, dword [ecx + 0x30]
push eax
shr esi, 1
call edx
mov eax, dword [0x5041f4]
add dword [0x5041fc], edi
mov ecx, dword [eax]
mov edx, dword [ecx + 0x30]
push eax
call edx
mov edi, dword [ebx + 0xc]
mov eax, dword [edi + 8]
mov eax, dword [eax + 8]
cmp dword [0x5043bc], eax
je 0x4a04bd
mov ecx, dword [0x503ff0]
mov dword [0x5043bc], eax
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x15c]
push ecx
call eax
mov eax, dword [edi + 0xc]
cmp dword [0x5043c0], eax
mov ecx, dword [edi + 0x14]
mov dword [esp + 0x60], ecx
jne 0x4a04d7
cmp dword [0x5043c8], ecx
je 0x4a04fc
push dword [esp + 0x60]
mov dword [0x5043c8], ecx
mov ecx, dword [0x503ff0]
push 0
push eax
mov dword [0x5043c0], eax
mov edx, dword [ecx]
mov eax, dword [edx + 0x190]
push 0
push ecx
call eax
mov edi, dword [edi + 0x10]
cmp dword [0x5043c4], edi
je 0x4a051e
mov eax, dword [0x503ff0]
mov dword [0x5043c4], edi
mov ecx, dword [eax]
mov edx, dword [ecx + 0x1a0]
push edi
push eax
call edx
add dword [0x5064b0], 1
add dword [0x5064ac], ebp
add dword [0x5064a8], esi
cmp dword [0x5053e0], 0
jne 0x4a0543
cmp dword [0x506400], 0
je 0x4a054d
mov ecx, 0x5043d0
call sym.XR_3DA.exe_public:_void___thiscall_R_constants::flush_cache_void_
mov edx, dword [esp + 0x3c]
mov eax, dword [0x503ff0]
mov ecx, dword [eax]
push esi
push edx
mov edx, dword [esp + 0x34]
push ebp
push 0
push edx
push 4
push eax
mov eax, dword [ecx + 0x148]
call eax
mov eax, dword [ebx + 0xc]
mov edx, dword [eax + 0x14]
lea ecx, [esp + 0x2c]
push ecx
push edx
push ebp
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__
mov ecx, dword [esp + 0x40]
mov dword [esp + 0x28], eax
lea eax, [esp + 0x3c]
push eax
push ecx
mov ecx, 0x5041f4
call sym.XR_3DA.exe_public:_unsigned_short_int____thiscall__IndexStream::Lock_unsigned_int__unsigned_int__
mov dword [esp + 0x20], eax
xor edi, edi
mov esi, dword [esp + 0x14]
mov ecx, esi
xor edx, edx
cmp ecx, edx
jne 0x4a0206
mov eax, dword [ebx + 8]
mov esi, dword [eax + 0x48]
mov ebp, dword [eax + 0x40]
imul esi, edi
mov eax, 0xaaaaaaab
imul ebp, edi
mul esi
shr edx, 1
mov dword [esp + 0x5c], edx
mov edx, dword [ebx + 0xc]
mov eax, dword [edx + 0x14]
imul eax, ebp
add 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 [0x5041f4]
add dword [0x5041fc], esi
mov ecx, dword [eax]
mov edx, dword [ecx + 0x30]
push eax
call edx
test edi, edi
je 0x4a06e4
mov ebx, dword [ebx + 0xc]
mov eax, dword [ebx + 8]
mov eax, dword [eax + 8]
cmp dword [0x5043bc], eax
je 0x4a062d
mov ecx, dword [0x503ff0]
mov dword [0x5043bc], eax
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 0x15c]
push ecx
call eax
mov eax, dword [ebx + 0xc]
cmp dword [0x5043c0], eax
mov ecx, dword [ebx + 0x14]
jne 0x4a0643
cmp dword [0x5043c8], ecx
je 0x4a0665
mov edx, dword [0x503ff0]
push ecx
push 0
push eax
mov dword [0x5043c8], ecx
mov dword [0x5043c0], eax
mov esi, dword [edx]
mov ecx, dword [esi + 0x190]
push 0
push edx
call ecx
mov ebx, dword [ebx + 0x10]
cmp dword [0x5043c4], ebx
je 0x4a0687
mov eax, dword [0x503ff0]
mov dword [0x5043c4], ebx
mov edx, dword [eax]
push ebx
push eax
mov eax, dword [edx + 0x1a0]
call eax
mov esi, dword [esp + 0x5c]
add dword [0x5064b0], 1
add dword [0x5064ac], ebp
add dword [0x5064a8], esi
cmp dword [0x5053e0], 0
jne 0x4a06b0
cmp dword [0x506400], 0
je 0x4a06ba
mov ecx, 0x5043d0
call sym.XR_3DA.exe_public:_void___thiscall_R_constants::flush_cache_void_
mov edx, dword [esp + 0x3c]
mov eax, dword [0x503ff0]
mov ecx, dword [eax]
push esi
push edx
mov edx, dword [esp + 0x34]
push ebp
push 0
push edx
push 4
push eax
mov eax, dword [ecx + 0x148]
call eax
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret
fstp st(0)
pop edi
pop esi
pop ebp
pop ebx
mov esp, ebp
pop ebp
ret