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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41ab54
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x78
push ebx
push esi
push edi
lea ecx, [ebp - 0x20]
call fcn.00411aa0
mov dword [ebp - 4], 0
mov eax, dword [ebp + 8]
push eax
lea ecx, [ebp - 0x24]
call fcn.0040ba30
mov byte [ebp - 4], 1
push 0x41d484
lea ecx, [ebp - 0x24]
call fcn.0040cb10
lea ecx, [ebp - 0x24]
call fcn.0040bea0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x10], eax
cmp dword [ebp - 0x10], 0xffffffff
je 0x40bca6
mov ecx, dword [ebp - 0x10]
and ecx, 0x10
test ecx, ecx
jbe 0x40bca6
mov dword [ebp - 0x30], 1
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x24]
call fcn.0040ea20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x20]
call fcn.00411ba0
mov eax, dword [ebp - 0x30]
jmp 0x40be46
mov dword [ebp - 0x28], 0
push 0x41d460
lea ecx, [ebp - 0x2c]
call fcn.0040ba30
mov byte [ebp - 4], 2
mov dword [ebp - 0x28], 0
jmp 0x40bcd0
mov edx, dword [ebp - 0x28]
add edx, 1
mov dword [ebp - 0x28], edx
lea ecx, [ebp - 0x24]
call fcn.0040be60
cmp dword [ebp - 0x28], eax
jge 0x40bd3f
mov eax, dword [ebp - 0x28]
push eax
lea ecx, [ebp - 0x24]
call fcn.0040be80
movsx ecx, al
cmp ecx, 0x5c
je 0x40bd08
mov edx, dword [ebp - 0x28]
push edx
lea ecx, [ebp - 0x24]
call fcn.0040be80
push eax
lea ecx, [ebp - 0x2c]
call fcn.0040c3e0
jmp 0x40bd21
lea eax, [ebp - 0x2c]
push eax
lea ecx, [ebp - 0x20]
call fcn.00411b60
push 0x41d484
lea ecx, [ebp - 0x2c]
call fcn.0040c410
lea ecx, [ebp - 0x24]
call fcn.0040be60
sub eax, 1
cmp dword [ebp - 0x28], eax
jne 0x40bd3d
lea ecx, [ebp - 0x2c]
push ecx
lea ecx, [ebp - 0x20]
call fcn.00411b60
jmp 0x40bcc7
mov dword [ebp - 0x28], 1
jmp 0x40bd51
mov edx, dword [ebp - 0x28]
add edx, 1
mov dword [ebp - 0x28], edx
lea ecx, [ebp - 0x20]
call fcn.00411ae0
cmp dword [ebp - 0x28], eax
jge 0x40bdbe
mov eax, dword [ebp - 0x28]
push eax
lea ecx, [ebp - 0x34]
push ecx
lea ecx, [ebp - 0x20]
call fcn.00411b20
mov dword [ebp - 0x40], eax
mov edx, dword [ebp - 0x40]
mov dword [ebp - 0x44], edx
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x44]
push eax
lea ecx, [ebp - 0x2c]
call fcn.0040bec0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x34]
call fcn.0040ea20
push 0
lea ecx, [ebp - 0x2c]
call fcn.0040bea0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x40bdbc
push 0x80
lea ecx, [ebp - 0x2c]
call fcn.0040bea0
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
jmp 0x40bd48
lea ecx, [ebp - 0x20]
call fcn.00411b00
lea ecx, [ebp - 0x24]
call fcn.0040bea0
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
mov dword [ebp - 0x10], eax
mov ecx, dword [ebp - 0x10]
and ecx, 0x10
test ecx, ecx
je 0x40be15
mov dword [ebp - 0x38], 1
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x2c]
call fcn.0040ea20
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x24]
call fcn.0040ea20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x20]
call fcn.00411ba0
mov eax, dword [ebp - 0x38]
jmp 0x40be46
mov dword [ebp - 0x3c], 0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x2c]
call fcn.0040ea20
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x24]
call fcn.0040ea20
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x20]
call fcn.00411ba0
mov eax, dword [ebp - 0x3c]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret