Function at 0x8f84a6f
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
mov edi, edi
push ebp
mov ebp, esp
push ecx
and dword [ebp - 4], 0
push esi
push edi
mov eax, dword [0x8f8c004]
mov edi, 0x8f8c004
cmp eax, edi
je 0x8f84aa7
test byte [eax + 0x1c], 2
je 0x8f84aa7
cmp byte [eax + 0x19], 5
jb 0x8f84aa7
push 0x8f72040
push 0x12
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.08f72d19
push dword [ebp + 8]
call fcn.08f84747
mov esi, eax
mov dword [ebp + 8], esi
test esi, esi
jne 0x8f84afc
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 4], eax
mov eax, dword [0x8f8c004]
cmp eax, edi
je 0x8f84cfd
test byte [eax + 0x1c], 2
je 0x8f84cfd
cmp byte [eax + 0x19], 2
jb 0x8f84cfd
push dword [ebp - 4]
push 0x8f72040
push 0x13
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.08f72d3f
jmp 0x8f84cfd
push esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x8f84b15
test al, 0x10
je 0x8f84b15
and dword [ebp - 4], 0
jmp 0x8f84cfd
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
test cx, cx
jne 0x8f84b1a
mov edi, dword [sym.imp.msvcrt.dll_wcsncmp]
push ebx
sub eax, edx
push 2
sar eax, 1
pop ebx
cmp eax, ebx
jbe 0x8f84b6d
push ebx
push 0x8f72190
push esi
call edi
add esp, 0xc
test eax, eax
jne 0x8f84b6d
mov edi, dword [sym.imp.msvcrt.dll_wcschr]
push 0x5c
add esi, 4
push esi
call edi
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x8f84bdb
push 0x5c
add esi, ebx
push esi
call edi
mov esi, eax
pop ecx
pop ecx
test esi, esi
je 0x8f84bdb
jmp 0x8f84b96
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, ebx
test cx, cx
jne 0x8f84b72
sub eax, edx
sar eax, 1
cmp eax, 1
jbe 0x8f84b9a
push 1
push 0x8f71628
push esi
call edi
add esp, 0xc
test eax, eax
jne 0x8f84b9a
add esi, ebx
jmp 0x8f84bd7
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, ebx
test cx, cx
jne 0x8f84b9f
sub eax, edx
sar eax, 1
cmp eax, 3
jbe 0x8f84bd7
movzx eax, word [esi]
push eax
call dword [sym.imp.msvcrt.dll_iswalpha]
pop ecx
test eax, eax
je 0x8f84bd7
push ebx
lea eax, [esi + 2]
push 0x8f72188
push eax
call edi
add esp, 0xc
test eax, eax
jne 0x8f84bd7
add esi, 6
test esi, esi
jne 0x8f84c39
push 0
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x8f84c39
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 4], eax
cmp eax, 0xb7
je 0x8f84c30
mov eax, dword [0x8f8c004]
cmp eax, 0x8f8c004
je 0x8f84cfc
test byte [eax + 0x1c], 2
je 0x8f84cfc
cmp byte [eax + 0x19], 2
jb 0x8f84cfc
push dword [ebp - 4]
push dword [ebp + 8]
push 0x8f72040
push 0x14
jmp 0x8f84cf1
and dword [ebp - 4], 0
jmp 0x8f84cfc
add esi, ebx
cmp word [esi], 0
je 0x8f84cfc
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebx, 0xb7
push 0x5c
push esi
call dword [sym.imp.msvcrt.dll_wcschr]
pop ecx
pop ecx
mov esi, eax
push 0
push dword [ebp + 8]
test esi, esi
je 0x8f84c8b
xor eax, eax
mov word [esi], ax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x8f84c7b
call edi
cmp eax, ebx
jne 0x8f84cc7
push 0x5c
pop eax
mov word [esi], ax
inc esi
inc esi
cmp word [esi], 0
jne 0x8f84c50
jmp 0x8f84cfc
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x8f84cfc
call edi
cmp eax, ebx
je 0x8f84cfc
call edi
mov dword [ebp - 4], eax
mov eax, dword [0x8f8c004]
cmp eax, 0x8f8c004
je 0x8f84cfc
test byte [eax + 0x1c], 2
je 0x8f84cfc
cmp byte [eax + 0x19], 2
jb 0x8f84cfc
push dword [ebp - 4]
push dword [ebp + 8]
push 0x8f72040
push 0x15
jmp 0x8f84cf1
call edi
mov dword [ebp - 4], eax
mov eax, dword [0x8f8c004]
cmp eax, 0x8f8c004
je 0x8f84cfc
test byte [eax + 0x1c], 2
je 0x8f84cfc
cmp byte [eax + 0x19], 2
jb 0x8f84cfc
push dword [ebp - 4]
push dword [ebp + 8]
push 0x8f72040
push 0x16
push dword [eax + 0x14]
push dword [eax + 0x10]
call fcn.08f7392a
pop ebx
push dword [ebp + 8]
call fcn.08f837bd
cmp dword [ebp - 4], 0
pop edi
pop esi
je 0x8f84d16
push dword [ebp - 4]
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor eax, eax
cmp dword [ebp - 4], eax
sete al
leave
ret 4