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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4f5d68
mov eax, dword fs:[0]
push eax
sub esp, 0x5c
mov eax, dword [0x52e1e0]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
push 0xc
lea ecx, [ebp - 0x20]
call fcn.004017d0
lea ecx, [ebp - 0x20]
call fcn.00402cd0
push esi
lea ecx, [ebp - 0x38]
mov dword [ebp - 4], 0
call fcn.0040a6c0
push 0x51d1e8
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 1
call fcn.0040a6c0
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 2
call fcn.0040de90
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x456910
test al, 0x10
ja 0x456aaa
sub esp, 8
mov dword [ebp - 0x14], 0x5c
lea eax, [ebp - 0x14]
lea ecx, [ebp - 0x38]
push eax
call fcn.004565a0
lea ecx, [ebp - 0x38]
mov esi, eax
call fcn.004080f0
mov ecx, dword [eax]
dec ecx
cmp esi, ecx
je 0x45695e
sub esp, 8
mov dword [ebp - 0x14], 0x2f
lea eax, [ebp - 0x14]
lea ecx, [ebp - 0x38]
push eax
call fcn.004565a0
lea ecx, [ebp - 0x38]
mov esi, eax
call fcn.004080f0
mov ecx, dword [eax]
dec ecx
cmp esi, ecx
jne 0x456988
lea ecx, [ebp - 0x38]
call fcn.004080f0
mov eax, dword [eax]
dec eax
push eax
push ecx
lea eax, [ebp - 0x68]
push eax
lea ecx, [ebp - 0x38]
call fcn.00456050
push eax
lea ecx, [ebp - 0x38]
call fcn.0040fd40
lea ecx, [ebp - 0x68]
call fcn.004091f0
lea ecx, [ebp - 0x38]
xor esi, esi
call fcn.004080f0
cmp dword [eax], esi
jbe 0x456a20
nop word [eax + eax]
lea ecx, [ebp - 0x38]
call fcn.004090a0
cmp word [eax + esi*2], 0x5c
lea eax, [eax + esi*2]
je 0x4569df
lea ecx, [ebp - 0x38]
call fcn.004090a0
cmp word [eax + esi*2], 0x2f
lea eax, [eax + esi*2]
je 0x4569df
lea ecx, [ebp - 0x38]
call fcn.004090a0
lea ecx, [ebp - 0x50]
lea eax, [eax + esi*2]
movzx eax, word [eax]
push eax
push 1
call fcn.00414340
jmp 0x4569f8
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0x20]
call fcn.00413080
push 0x51d1f0
lea ecx, [ebp - 0x50]
call fcn.0040ef00
lea ecx, [ebp - 0x38]
call fcn.004080f0
mov eax, dword [eax]
dec eax
cmp esi, eax
jne 0x456a13
lea eax, [ebp - 0x50]
push eax
lea ecx, [ebp - 0x20]
call fcn.00413080
lea ecx, [ebp - 0x38]
inc esi
call fcn.004080f0
cmp esi, dword [eax]
jb 0x4569a0
lea ecx, [ebp - 0x20]
mov esi, 1
call fcn.004137a0
cmp eax, esi
jbe 0x456a8a
mov ebx, dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea edi, [esi + 0x17]
nop word [eax + eax]
lea ecx, [ebp - 0x20]
call fcn.00403010
lea ecx, [ebp - 0x50]
mov eax, dword [eax]
add eax, edi
push eax
call fcn.00414220
push 0
lea ecx, [ebp - 0x50]
call fcn.0040de90
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x456a7a
push 0x80
lea ecx, [ebp - 0x50]
call fcn.0040de90
push eax
call ebx
lea ecx, [ebp - 0x20]
inc esi
add edi, 0x18
call fcn.004137a0
cmp esi, eax
jb 0x456a40
lea ecx, [ebp - 0x20]
call fcn.00413720
lea ecx, [ebp - 0x38]
call fcn.0040de90
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x456ab1
test al, 0x10
jbe 0x456ab1
mov esi, 1
jmp 0x456ab3
xor esi, esi
lea ecx, [ebp - 0x50]
call fcn.004091f0
lea ecx, [ebp - 0x38]
call fcn.004091f0
lea ecx, [ebp - 0x20]
call fcn.004134d0
mov eax, esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004b7060
mov esp, ebp
pop ebp
ret