Function at 0x40fdd0
Capabilities:
Check if file exists
Create directory
Delete file
Get common file path
Get file attributes
Move file
Read file on windows
Set file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5ba710
mov eax, dword fs:[0]
push eax
sub esp, 0x428
mov eax, dword [0x6877f0]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov edi, dword [ebp + 8]
lea eax, [ebp - 0x224]
push 0x104
push 0
push eax
call fcn.0058db90
push 0x104
lea eax, [ebp - 0x120]
push 0
push eax
call fcn.0058db90
push 0x104
lea eax, [ebp - 0x42c]
push 0
push eax
call fcn.0058db90
push 0x104
lea eax, [ebp - 0x328]
push 0
push eax
call fcn.0058db90
add esp, 0x30
mov dword [ebp - 4], 0
cmp byte [0x68deff], 0
je 0x40fe82
push ecx
mov ecx, 0x68df38
call fcn.00403010
cmp eax, 1
jne 0x40fe82
push 0x68e140
mov ecx, 0x68df38
call fcn.00405640
cmp byte [0x68defe], 1
jne 0x40fff4
push 0x104
xor esi, esi
push esi
push 0x68e758
call fcn.0058db90
push 0x104
push esi
push 0x68df38
call fcn.0058db90
add esp, 0x18
push esi
push 0x23
push 0x68df38
push esi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
je 0x40fee4
push 0x68df38
push str._sCtesComponentsCDCpolicies
push 0x68e758
mov esi, 1
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
test esi, esi
je 0x40ffd4
push str.CtesHostSvcPrv.conf
push 0x68e758
lea eax, [ebp - 0x120]
push str._s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0x68e758
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x40ff41
push 0x68e758
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x40ff3c
push 0
push 0x68e758
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov esi, eax
jmp 0x40ff41
mov esi, 1
mov ecx, 0x68df38
call fcn.00403070
test eax, eax
je 0x410091
push 0
push ecx
push 0x68e44c
call fcn.004032f0
test eax, eax
jne 0x410091
push ecx
mov ecx, 0x68df38
call fcn.00403190
cmp eax, 1
jne 0x40ffd4
push 0x671cd4
push 0x68e348
lea eax, [ebp - 0x328]
push str._sInstall__s.zip
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [ebp - 0x328]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x40ffd4
push 0x68e44c
lea eax, [ebp - 0x328]
mov ecx, 0x68df38
push eax
call fcn.00406340
push ecx
push str.AbtCdcSvc
mov bl, al
call fcn.0040db00
test bl, bl
jne 0x410091
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.00574c7a
mov esp, ebp
pop ebp
ret 0xc
push ecx
mov ecx, 0x68df38
call fcn.00403190
mov esi, eax
test esi, esi
je 0x40ffd4
push str.LastScan.json
push 0x68e348
lea eax, [ebp - 0x42c]
push str._s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [ebp - 0x42c]
push 0x80
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea eax, [ebp - 0x42c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push str.CtesHostSvcPrv.conf
push 0x68e348
lea eax, [ebp - 0x120]
push str._s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
push 0x68e348
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x410091
push 0x68e348
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x410099
push 0
push 0x68e348
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov esi, eax
test esi, esi
je 0x40ffd4
push edi
lea eax, [ebp - 0x224]
push 0x6723b8
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x40ffd4
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 1
lea eax, [ebp - 0x120]
push eax
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
test eax, eax
je 0x40ffd4
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x40ffd4
cmp byte [0x68defe], 0
jne 0x410298
mov ecx, str.CtesHostSvcPrv.conf
mov eax, str.policy_configuration.json
nop dword [eax]
mov dl, byte [eax]
cmp dl, byte [ecx]
jne 0x410140
test dl, dl
je 0x41013c
mov dl, byte [eax + 1]
cmp dl, byte [ecx + 1]
jne 0x410140
add eax, 2
add ecx, 2
test dl, dl
jne 0x410120
xor eax, eax
jmp 0x410145
sbb eax, eax
or eax, 1
test eax, eax
je 0x41028e
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x410237
push 0x672258
lea eax, [ebp - 0x120]
mov dword [ebp - 0x430], 0
push eax
lea eax, [ebp - 0x430]
push eax
call fcn.00596cc2
add esp, 0xc
test eax, eax
jne 0x410237
mov eax, dword [ebp - 0x430]
test eax, eax
je 0x410237
push eax
push 1
lea eax, [ebp - 0x1c]
mov dword [ebp - 0x1c], 0
push 2
push eax
mov byte [ebp - 0x18], 0
call fcn.0059ac71
push dword [ebp - 0x430]
call fcn.00596d80
add esp, 0x14
cmp byte [ebp - 0x1c], 0x50
jne 0x410237
cmp byte [ebp - 0x1b], 0x4b
jne 0x410237
push 0x68e348
lea eax, [ebp - 0x120]
mov ecx, 0x68df38
push eax
call fcn.00406340
test al, al
je 0x40ffd4
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
jmp 0x410285
lea eax, [ebp - 0x120]
push eax
lea eax, [ebp - 0x224]
push 0x6723b8
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
push str.policy_configuration.json
push 0x68e348
lea eax, [ebp - 0x120]
push str._s_s
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x1c
lea eax, [ebp - 0x120]
push 1
push eax
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
cmp byte [0x68defe], 0
jne 0x410298
mov ecx, 0x68df38
call fcn.00405740
mov eax, 1
jmp 0x40ffd6