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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x14
push ebx
push esi
mov esi, dword [0x43bd20]
mov ebx, edx
push edi
xor edi, edi
mov dword [ebp - 0x14], ebx
mov dword [ebp - 8], ecx
mov dword [ebp - 0xc], edi
test esi, esi
je 0x4159a5
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, dword [0x43bd20]
cmp esi, eax
mov eax, dword [0x43acbc]
je 0x4159aa
mov eax, dword [0x43ac6c]
mov dword [ebp - 0x10], eax
test ebx, 0x300000
je 0x4159d7
test esi, esi
je 0x4159cc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x43bd20], eax
mov eax, 0x43acbc
je 0x4159d1
mov eax, 0x43ac6c
or dword [eax], 0x200000
mov esi, dword [ebp - 8]
mov ecx, esi
call fcn.004190e0
mov ebx, eax
test ebx, ebx
jne 0x415a04
test esi, esi
mov eax, 0x4370b4
cmovne eax, esi
push eax
push 0xa001001b
call fcn.00413190
add esp, 8
jmp 0x415c83
push 0x210
call fcn.0041d6de
mov edi, eax
add esp, 4
test edi, edi
jne 0x415a5d
movzx eax, word [0x43ad06]
sub eax, 7
je 0x415a3b
sub eax, 2
je 0x415a2d
sub eax, 1
je 0x415a34
mov eax, dword [str.The_system_cannot_allocate_enough_memory]
jmp 0x415a40
mov eax, dword [str.El_sistema_no_puede_asignar_suficiente_memoria]
jmp 0x415a40
mov eax, dword [str.Der_Speicher_reicht_nicht]
push eax
push 0xa8010f00
call fcn.00413190
add esp, 8
push 0xe
call dword [sym.imp.KERNEL32.dll_SetLastError]
xor edi, edi
jmp 0x415c83
test esi, esi
je 0x415a93
lea ecx, [esi + 2]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x415a64
sub esi, ecx
sar esi, 1
cmp esi, 0x104
jge 0x415c6c
test esi, esi
jle 0x415a93
lea eax, [esi + esi]
push eax
push dword [ebp - 8]
push edi
call fcn.0041cd00
add esp, 0xc
xor eax, eax
mov word [edi + esi*2], ax
cmp esi, 0xffffffff
je 0x415c77
test byte [ebp - 0x14], 0x10
je 0x415b09
mov edx, ebx
test ebx, ebx
jns 0x415ab7
mov ecx, edi
call fcn.004190e0
mov edx, eax
test edx, edx
jle 0x415af8
mov ecx, edi
lea esi, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x415ac0
sub ecx, esi
sar ecx, 1
test ecx, ecx
jle 0x415adc
cmp word [edi + ecx*2 - 2], 0x5c
jne 0x415adc
dec ecx
cmp ecx, edx
jl 0x415af8
cmp word [edi + ecx*2], 0x5c
je 0x415aee
dec ecx
cmp ecx, edx
jge 0x415ae0
jmp 0x415af8
xor eax, eax
mov word [edi + ecx*2], ax
test ecx, ecx
jne 0x415b09
cmp word [edi + 2], 0x3a
jne 0x415b9c
xor eax, eax
mov word [edi + 4], ax
mov ecx, edi
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x415b10
sub ecx, edx
sar ecx, 1
test ecx, ecx
jle 0x415b2c
cmp word [edi + ecx*2 - 2], 0x5c
jne 0x415b2c
dec ecx
cmp ecx, ebx
jl 0x415b9c
je 0x415c63
xor eax, eax
xor esi, esi
push edi
mov word [edi + ecx*2], ax
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x415bce
mov edx, ebx
test ebx, ebx
jns 0x415b60
mov ecx, edi
call fcn.004190e0
mov edx, eax
test edx, edx
jle 0x415b9c
mov ecx, edi
lea esi, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x415b70
sub ecx, esi
sar ecx, 1
test ecx, ecx
jle 0x415b8c
cmp word [edi + ecx*2 - 2], 0x5c
jne 0x415b8c
dec ecx
cmp ecx, edx
jl 0x415b9c
cmp word [edi + ecx*2], 0x5c
je 0x415bb1
dec ecx
cmp ecx, edx
jge 0x415b90
push dword [ebp - 8]
push 0xe0010002
call fcn.00413190
add esp, 8
jmp 0x415c77
xor eax, eax
mov word [edi + ecx*2], ax
test ecx, ecx
je 0x415b9c
mov esi, dword [ebp - 4]
inc esi
push edi
mov dword [ebp - 4], esi
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x415b51
test al, 0x10
je 0x415b9c
test esi, esi
jle 0x415c63
test byte [ebp - 0x14], 2
je 0x415c77
mov ecx, edi
mov ebx, 0x5c
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x415bf0
sub ecx, edx
sar ecx, 1
mov word [edi + ecx*2], bx
push 0
push edi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x415c58
mov ebx, 0xe0010003
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov ecx, eax
xor esi, esi
mov eax, 0x13
cmp eax, ecx
je 0x415c38
mov eax, dword [esi*4 + 0x4364c8]
add esi, 2
test eax, eax
jne 0x415c24
jmp 0x415c47
push 0
call dword [sym.imp.KERNEL32.dll_SetLastError]
mov ebx, dword [esi*4 + 0x4364c4]
push edi
push ebx
call fcn.00413190
add esp, 8
cmp eax, 4
je 0x415c03
jmp 0x415c77
mov esi, dword [ebp - 4]
dec esi
mov dword [ebp - 4], esi
test esi, esi
jg 0x415be4
mov dword [ebp - 0xc], 1
jmp 0x415c77
push 0x2001001f
call dword [sym.imp.KERNEL32.dll_SetLastError]
push edi
call fcn.0041d6c3
mov edi, dword [ebp - 0xc]
add esp, 4
cmp dword [0x43bd20], 0
je 0x415cab
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
cmp dword [0x43bd20], eax
jne 0x415cab
mov eax, dword [ebp - 0x10]
mov dword [0x43acbc], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
mov eax, dword [ebp - 0x10]
mov dword [0x43ac6c], eax
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret