Function at 0x40ef80
Capabilities:
Check if file exists

Disassembly:
push 0xffffffffffffffff
push 0x54b8a0
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push ebx
push ebp
push esi
push edi
mov eax, dword [0x5a5084]
xor eax, esp
push eax
lea eax, [esp + 0x38]
mov dword fs:[0], eax
call fcn.004053b0
call fcn.004029d0
fstp dword [esp + 0x1c]
fld1
fcomp dword [esp + 0x1c]
fnstsw ax
test ah, 0x44
jnp 0x40f006
call fcn.004053b0
lea esi, [esp + 0x14]
call fcn.0040f3d0
mov dword [esp + 0x40], 0
mov eax, dword [esp + 0x14]
cmp dword [eax - 0xc], 0
jne 0x40f00d
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 0x40f006
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
xor eax, eax
jmp 0x40f3b9
mov edx, dword [0x5b06b0]
mov eax, dword [edx + 0xc]
mov ecx, 0x5b06b0
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 0x58b878
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.00412d70
mov esi, dword [esp + 0x3c]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
add esp, 0x24
push esi
call ebx
test eax, eax
je 0x40f093
mov edx, dword [esp + 0x54]
fld dword [esp + 0x1c]
mov eax, edi
fstp qword [edx]
mov edi, dword [esp + 0x50]
call fcn.00412ba0
mov byte [esp + 0x40], 0
lea eax, [esi - 0x10]
jmp 0x40f373
call fcn.004053b0
push eax
call fcn.004036e0
mov esi, eax
mov eax, dword [esi + 4]
test eax, eax
je 0x40f0b1
mov ecx, dword [esi + 8]
sub ecx, eax
sar ecx, 3
jne 0x40f0ca
lea eax, [esp + 0x18]
call fcn.0044dd60
lea eax, [esp + 0x14]
call fcn.0044dd60
xor eax, eax
jmp 0x40f3b9
mov edx, dword [0x5b06b0]
mov eax, dword [edx + 0xc]
mov ecx, 0x5b06b0
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 0x40f0fe
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
mov ebp, edi
mov edi, dword [esi + 8]
cmp dword [esi + 4], edi
jbe 0x40f10e
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
cmp ebp, edi
je 0x40f26e
cmp ebp, dword [esi + 8]
jb 0x40f121
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
fld qword [ebp]
fst qword [esp + 0x24]
fld dword [esp + 0x1c]
fucomp st(1)
fnstsw ax
test ah, 0x44
jnp 0x40f259
fld1
fcompp
fnstsw ax
test ah, 1
je 0x40f25b
mov edx, dword [0x5b06b0]
mov eax, dword [edx + 0xc]
mov ecx, 0x5b06b0
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 0x58b878
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.00412d70
mov edx, dword [esp + 0x44]
add esp, 0x24
push edx
call ebx
test eax, eax
jne 0x40f1b7
mov eax, edi
mov byte [esp + 0x40], 2
call fcn.0044dd60
jmp 0x40f25b
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 0x40f1dc
fstp st(1)
fld st(0)
fchs
fsubrp st(2)
fxch st(1)
jmp 0x40f1de
fstp st(2)
fst qword [esp + 0x24]
fldz
fld dword [esp + 0x2c]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jnp 0x40f218
fld dword [esp + 0x34]
fcom st(2)
fnstsw ax
test ah, 0x41
je 0x40f216
fucomp st(2)
fnstsw ax
fstp st(1)
test ah, 0x44
jp 0x40f245
fcomp st(1)
fnstsw ax
test ah, 5
jp 0x40f247
jmp 0x40f21c
fstp st(2)
fstp st(1)
fstp st(0)
lea eax, [esp + 0x20]
fstp dword [esp + 0x2c]
lea edi, [esp + 0x30]
call fcn.00412ba0
fld qword [esp + 0x24]
lea eax, [esp + 0x20]
fstp dword [esp + 0x34]
mov byte [esp + 0x40], 2
call fcn.0044dd60
jmp 0x40f25b
fstp st(1)
lea eax, [esp + 0x20]
fstp st(0)
mov byte [esp + 0x40], 2
call fcn.0044dd60
jmp 0x40f25b
fstp st(0)
cmp ebp, dword [esi + 8]
jb 0x40f266
call dword [sym.imp.MSVCR80.dll__invalid_parameter_noinfo]
add ebp, 8
jmp 0x40f100
fldz
fld dword [esp + 0x2c]
fucom st(1)
fnstsw ax
fstp st(1)
test ah, 0x44
jp 0x40f2dc
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 0x40f2a6
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 0x40f2cb
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 0x40efea
fld dword [esp + 0x1c]
fld st(0)
fld1
fsub st(1), st(0)
fldz
fcom st(2)
fnstsw ax
test ah, 0x41
jne 0x40f2fb
fstp st(2)
fld st(2)
fchs
fsubrp st(1)
jmp 0x40f2ff
fstp st(1)
fxch st(1)
fld st(3)
fsub st(3)
fcom st(2)
fnstsw ax
fstp st(2)
test ah, 5
jp 0x40f318
fstp st(1)
fxch st(2)
fchs
fsubrp st(1)
jmp 0x40f31e
fstp st(2)
fstp st(2)
fxch st(1)
fcompp
fnstsw ax
test ah, 0x41
je 0x40f281
mov edi, dword [esp + 0x50]
lea eax, [esp + 0x30]
call fcn.00412ba0
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 0x40f367
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 0x40f38c
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 0x40f3b4
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [esp + 0x38]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x30
ret 0x10