Function at 0x46e920
Capabilities:
Check if file exists

Disassembly:
push 0xffffffffffffffff
push 0x4d9c40
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x28
push ebx
push ebp
push esi
push edi
call fcn.0045dd80
call fcn.0045e830
fstp dword [esp + 0x1c]
fld1
fcomp dword [esp + 0x1c]
fnstsw ax
test ah, 0x44
jnp 0x46e99b
call fcn.0045dd80
lea eax, [esp + 0x14]
call fcn.0046ed80
mov dword [esp + 0x40], 0
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 0
jne 0x46e9b2
mov dword [esp + 0x40], 0xffffffff
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46e99b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
mov ecx, dword [esp + 0x38]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret 0x10
mov edx, dword [0x507fec]
mov eax, dword [edx + 0xc]
mov ecx, 0x507fec
call eax
add eax, 0x10
mov dword [esp + 0x18], eax
fld dword [esp + 0x1c]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
push 0x4ed054
sub esp, 8
mov byte [esp + 0x4c], 1
fst qword [esp]
mov eax, dword [edx]
push ecx
mov ecx, dword [esp + 0x24]
push eax
sub esp, 8
fstp qword [esp]
push ecx
push str._s_.1f_s_d__.1f._s
lea edi, [esp + 0x3c]
call fcn.00404190
mov esi, dword [esp + 0x3c]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 0x24
push esi
call ebx
test eax, eax
je 0x46ea38
mov edx, dword [esp + 0x54]
fld dword [esp + 0x1c]
mov eax, edi
fstp qword [edx]
mov edi, dword [esp + 0x50]
call fcn.00403880
mov byte [esp + 0x40], 0
lea eax, [esi - 0x10]
jmp 0x46ed24
call fcn.0045dd80
push eax
call fcn.0045eb40
mov esi, eax
mov eax, dword [esi + 4]
test eax, eax
je 0x46ea56
mov ecx, dword [esi + 8]
sub ecx, eax
sar ecx, 3
jne 0x46ea7f
lea ecx, [esp + 0x18]
call fcn.00403580
lea ecx, [esp + 0x14]
call fcn.00403580
xor eax, eax
mov ecx, dword [esp + 0x38]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x34
ret 0x10
mov edx, dword [0x507fec]
mov eax, dword [edx + 0xc]
mov ecx, 0x507fec
call eax
fldz
add eax, 0x10
fst dword [esp + 0x2c]
fstp dword [esp + 0x34]
mov dword [esp + 0x30], eax
mov byte [esp + 0x40], 2
mov edi, dword [esi + 4]
cmp edi, dword [esi + 8]
jbe 0x46eab2
call fcn.004a089d
mov ebp, edi
mov edi, dword [esi + 8]
cmp dword [esi + 4], edi
jbe 0x46eac1
call fcn.004a089d
cmp ebp, edi
je 0x46ec1f
cmp ebp, dword [esi + 8]
jb 0x46ead3
call fcn.004a089d
fld qword [ebp]
fst qword [esp + 0x24]
fld dword [esp + 0x1c]
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x46ec0b
fld1
fcompp
fnstsw ax
test ah, 1
je 0x46ec0d
mov edx, dword [0x507fec]
mov eax, dword [edx + 0xc]
mov ecx, 0x507fec
call eax
add eax, 0x10
mov dword [esp + 0x20], eax
fld qword [esp + 0x24]
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x48]
push 0x4ed054
sub esp, 8
mov byte [esp + 0x4c], 3
fst qword [esp]
mov eax, dword [edx]
push ecx
mov ecx, dword [esp + 0x24]
push eax
sub esp, 8
fstp qword [esp]
push ecx
push str._s_.1f_s_d__.1f._s
lea edi, [esp + 0x44]
call fcn.00404190
mov edx, dword [esp + 0x44]
add esp, 0x24
push edx
call ebx
test eax, eax
jne 0x46eb69
mov ecx, edi
mov byte [esp + 0x40], 2
call fcn.00403580
jmp 0x46ec0d
fld dword [esp + 0x1c]
fld st(0)
fld qword [esp + 0x24]
fld st(0)
fsubrp st(2)
fldz
fcomp st(2)
fnstsw ax
test ah, 0x41
jne 0x46eb8e
fstp st(1)
fld st(0)
fchs
fsubrp st(2)
fxch st(1)
jmp 0x46eb90
fstp st(2)
fst qword [esp + 0x24]
fldz
fld dword [esp + 0x2c]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x46ebca
fld dword [esp + 0x34]
fcom st(2)
fnstsw ax
test ah, 0x41
je 0x46ebc8
fucomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x44
jp 0x46ebf7
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x46ebf9
jmp 0x46ebce
fstp st(2)
fstp st(1)
fstp st(0)
lea eax, [esp + 0x20]
fstp dword [esp + 0x2c]
lea edi, [esp + 0x30]
call fcn.00403880
fld qword [esp + 0x24]
lea ecx, [esp + 0x20]
fstp dword [esp + 0x34]
mov byte [esp + 0x40], 2
call fcn.00403580
jmp 0x46ec0d
fstp st(1)
lea ecx, [esp + 0x20]
fstp st(0)
mov byte [esp + 0x40], 2
call fcn.00403580
jmp 0x46ec0d
fstp st(0)
cmp ebp, dword [esi + 8]
jb 0x46ec17
call fcn.004a089d
add ebp, 8
jmp 0x46eab4
fldz
fld dword [esp + 0x2c]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jp 0x46ec8d
fstp st(0)
mov byte [esp + 0x40], 1
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46ec57
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x40], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46ec7c
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x40], 0xffffffff
mov eax, dword [esp + 0x14]
jmp 0x46e97f
fld dword [esp + 0x1c]
fld st(0)
fld1
fsub st(1), st(0)
fldz
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x46ecac
fstp st(2)
fld st(2)
fchs
fsubrp st(1)
jmp 0x46ecb0
fstp st(1)
fxch st(1)
fld st(3)
fsub st(3)
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 5
jp 0x46ecc9
fstp st(1)
fxch st(2)
fchs
fsubrp st(1)
jmp 0x46eccf
fstp st(2)
fstp st(2)
fxch st(1)
fcompp
fnstsw ax
test ah, 0x41
je 0x46ec32
mov edi, dword [esp + 0x50]
lea eax, [esp + 0x30]
call fcn.00403880
fld dword [esp + 0x2c]
mov ecx, dword [esp + 0x54]
mov byte [esp + 0x40], 1
fstp qword [ecx]
mov eax, dword [esp + 0x30]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46ed18
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x40], 0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46ed3d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [esp + 0x40], 0xffffffff
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46ed65
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x38]
pop edi
pop esi
pop ebp
mov eax, 1
mov dword fs:[0], ecx
pop ebx
add esp, 0x34
ret 0x10