Function at 0x10055af
Capabilities:
Check if file exists
Create directory
Delete directory
Get common file path
Get disk information
Get disk size
Get file attributes
Write file on windows

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
sub esp, 0x258
mov eax, dword [0x1009024]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push edi
mov edi, dword [ebp + 8]
xor ebx, ebx
or dword [ebp - 0x21c], 0xffffffff
mov eax, edi
mov dword [ebp - 0x240], ebx
mov dword [ebp - 0x214], ebx
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
cmp dx, bx
jne 0x10055e3
sub eax, ecx
sar eax, 1
inc eax
cmp eax, 0x104
ja 0x10055fe
mov eax, 0x105
mov dword [ebp - 0x228], eax
add eax, eax
push eax
call fcn.01001b24
mov dword [ebp - 0x218], eax
cmp eax, ebx
jne 0x100561e
push 8
pop eax
jmp 0x100596e
push esi
mov esi, dword [ebp - 0x228]
add esi, 9
lea eax, [esi + esi]
push eax
call fcn.01001b24
mov dword [ebp - 0x220], eax
cmp eax, ebx
jne 0x100564e
push dword [ebp - 0x218]
call fcn.01001b44
push 8
pop eax
jmp 0x100596d
push dword [ebp - 0x228]
push dword [ebp - 0x218]
push edi
call dword [sym.imp.KERNEL32.dll_GetVolumePathNameW]
test eax, eax
jne 0x1005676
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x214], eax
jmp 0x1005951
push dword [ebp - 0x218]
call dword [sym.imp.KERNEL32.dll_GetDriveTypeW]
cmp eax, 4
je 0x1005912
cmp eax, 5
je 0x1005912
push ebx
push ebx
lea eax, [ebp - 0x23c]
push eax
lea eax, [ebp - 0x258]
push eax
push dword [ebp - 0x218]
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceW]
test eax, eax
je 0x1005665
mov eax, dword [0x100b628]
mov edi, dword [0x100b62c]
mov dword [ebp - 0x244], eax
lea eax, [ebp - 0x254]
push eax
push ebx
push ebx
push dword [ebp - 0x218]
call dword [sym.imp.KERNEL32.dll_GetDiskFreeSpaceExW]
test eax, eax
je 0x1005665
push 0x1001660
push dword [ebp - 0x218]
push 0x1001654
push esi
push dword [ebp - 0x220]
call fcn.01001bd9
add esp, 0x14
test eax, eax
jge 0x1005710
mov dword [ebp - 0x214], 0x6f
jmp 0x1005951
push ebx
push dword [ebp - 0x220]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jne 0x100573a
call esi
mov dword [ebp - 0x214], eax
cmp eax, 0xb7
jne 0x1005951
lea eax, [ebp - 0x210]
push eax
push ebx
push 0x100164c
push dword [ebp - 0x220]
mov dword [ebp - 0x240], 1
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
jne 0x100576e
call esi
mov dword [ebp - 0x214], eax
jmp 0x1005945
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x224], eax
cmp eax, 0xffffffff
je 0x1005761
test eax, 0x4000
je 0x100579f
push ebx
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.ADVAPI32.dll_DecryptFileW]
test eax, eax
je 0x1005761
push ebx
push 0x24000080
push 3
push ebx
push ebx
push 3
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileW]
mov dword [ebp - 0x21c], eax
cmp eax, 0xffffffff
je 0x1005761
test dword [ebp - 0x224], 0x800
je 0x1005805
push ebx
lea ecx, [ebp - 0x228]
push ecx
push ebx
push ebx
push 2
lea ecx, [ebp - 0x224]
push ecx
push 0x9c040
push eax
mov dword [ebp - 0x224], ebx
call dword [sym.imp.KERNEL32.dll_DeviceIoControl]
test eax, eax
jne 0x1005805
call esi
mov dword [ebp - 0x214], eax
jmp 0x100591c
push ebx
push 0x64
push dword [ebp - 0x250]
mov dword [ebp - 0x238], ebx
push dword [ebp - 0x254]
mov dword [ebp - 0x234], ebx
call fcn.01007580
mov dword [ebp - 0x24c], eax
mov dword [ebp - 0x248], edx
mov dword [ebp - 0x230], eax
mov dword [ebp - 0x22c], edx
jmp 0x10058dc
mov eax, dword [ebp - 0x22c]
cmp dword [ebp - 0x234], eax
jb 0x1005884
ja 0x1005860
mov eax, dword [ebp - 0x230]
cmp dword [ebp - 0x238], eax
jb 0x1005884
push 0x10014c8
call dword [sym.imp.msvcrt.dll_printf]
mov eax, dword [ebp - 0x24c]
add dword [ebp - 0x230], eax
mov eax, dword [ebp - 0x248]
pop ecx
adc dword [ebp - 0x22c], eax
push 0x100b620
call fcn.01002d93
push ebx
lea eax, [ebp - 0x224]
push eax
push edi
push dword [ebp - 0x244]
push dword [ebp - 0x21c]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
jne 0x10058ca
call esi
cmp eax, 0x70
jne 0x10058e6
mov dword [ebp - 0x214], ebx
cmp edi, dword [ebp - 0x23c]
jbe 0x10058ee
mov edi, dword [ebp - 0x23c]
jmp 0x10058dc
mov eax, dword [ebp - 0x224]
add dword [ebp - 0x238], eax
adc dword [ebp - 0x234], ebx
cmp edi, ebx
ja 0x1005842
jmp 0x10058ee
call esi
mov dword [ebp - 0x214], eax
push dword [ebp - 0x21c]
push dword [ebp - 0x220]
call fcn.0100544d
push dword [ebp - 0x21c]
push dword [ebp - 0x218]
call fcn.01002e12
jmp 0x100591c
mov dword [ebp - 0x214], 0x32
cmp dword [ebp - 0x21c], 0xffffffff
je 0x100593d
push dword [ebp - 0x21c]
call dword [sym.imp.KERNEL32.dll_FlushFileBuffers]
push dword [ebp - 0x21c]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [ebp - 0x240], ebx
je 0x1005951
push dword [ebp - 0x220]
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
push dword [ebp - 0x218]
call fcn.01001b44
push dword [ebp - 0x220]
call fcn.01001b44
mov eax, dword [ebp - 0x214]
pop esi
mov ecx, dword [ebp - 4]
pop edi
xor ecx, ebp
pop ebx
call fcn.0100741c
leave
ret 4