Function at 0x401b60
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
push ebx
push esi
lea eax, [ebp - 0x1c]
mov dword [ebp - 0xc], 0
push edi
push eax
call fcn.00402220
lea eax, [ebp - 8]
push eax
call fcn.004012c0
mov eax, dword [ebp - 8]
add esp, 8
mov dword [ebp - 0x30], 0xc
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x2c], eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov edi, dword [sym.imp.KERNEL32.dll_HeapAlloc]
xor ebx, ebx
mov dword [ebp - 4], eax
lea ebx, [ebx]
push 0x104
push 8
push dword [0x434000]
mov dword [ebp - 0x10], 0
call edi
mov ecx, eax
test ecx, ecx
je 0x401da8
mov esi, dword [ebp - 0x1c]
mov dword [ebp - 0x10], 0x104
lea edx, [esi + 2]
lea ecx, [ecx]
mov ax, word [esi]
add esi, 2
test ax, ax
jne 0x401be0
sub esi, edx
sar esi, 1
lea esi, [esi*2 + 2]
push esi
push ecx
push 0
push dword [0x434000]
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov dword [ebp - 0x14], eax
test eax, eax
je 0x401da8
mov dword [ebp - 0x10], esi
test esi, esi
je 0x401c2e
mov edx, dword [ebp - 0x1c]
sub edx, eax
lea ecx, [ecx]
mov cl, byte [edx + eax]
lea eax, [eax + 1]
mov byte [eax - 1], cl
sub esi, 1
jne 0x401c20
push 0x104
push 8
push dword [0x434000]
call edi
test eax, eax
je 0x401da8
push 0xa
push eax
push 0
push dword [0x434000]
call dword [sym.imp.KERNEL32.dll_HeapReAlloc]
mov edi, eax
test edi, edi
je 0x401da8
mov esi, str.sfl_
mov edx, 0xa
mov ecx, edi
sub esi, edi
mov edi, edi
mov al, byte [esi + ecx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
sub edx, 1
jne 0x401c70
push edi
lea ecx, [ebp - 0x14]
call fcn.004011a0
push edi
mov edi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [0x434000]
call edi
test eax, eax
je 0x401db2
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x24]
push ecx
inc ecx
push eax
mov dword [ebp - 4], ecx
call fcn.00401f80
add esp, 8
lea ecx, [ebp - 0x14]
push dword [ebp - 0x24]
call fcn.004011a0
push dword [ebp - 0x24]
push 0
push dword [0x434000]
call edi
test eax, eax
je 0x401db2
mov esi, dword [ebp - 0x14]
lea eax, [ebp - 0x30]
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x401d1f
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401d9e
push esi
push 0
push dword [0x434000]
call edi
test eax, eax
je 0x401db2
mov edi, dword [sym.imp.KERNEL32.dll_HeapAlloc]
inc ebx
cmp ebx, 0x3e8
jl 0x401bb0
jmp 0x401d94
mov edi, dword [ebp + 8]
push 0x104
push 8
mov dword [edi], 0
mov dword [edi + 4], 0
push dword [0x434000]
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [edi], eax
test eax, eax
je 0x401da8
push esi
mov ecx, edi
mov dword [edi + 4], 0x104
call fcn.00401250
push esi
mov esi, dword [sym.imp.KERNEL32.dll_HeapFree]
push 0
push dword [0x434000]
call esi
test eax, eax
je 0x401db2
mov eax, dword [ebp - 8]
test eax, eax
je 0x401d7a
push eax
call dword [sym.imp.KERNEL32.dll_LocalFree]
push dword [ebp - 0x1c]
push 0
push dword [0x434000]
call esi
test eax, eax
je 0x401dbc
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push str.Giving_up_creating_temporary_directory__too_many_failed_attempts
call fcn.00401dd0
push str.Unable_to_create_temporary_directory
call fcn.00401dd0
push str.Out_of_heap_memory
call fcn.00401dd0
push str.Error_freeing_memory
call fcn.00401dd0
push str.Error_freeing_memory
call fcn.00401dd0
int3