Function at 0x4643e0
Capabilities:
Create directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56e558
mov eax, dword fs:[0]
push eax
sub esp, 0x24
push ebx
push esi
push edi
mov eax, dword [0x5c1334]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ecx]
sub eax, 0x10
push eax
call fcn.0042b060
add esp, 4
lea edi, [eax + 0x10]
mov dword [ebp - 0x18], edi
mov dword [ebp - 4], 0
mov ebx, dword [edi - 0xc]
lea eax, [ebx - 1]
test eax, eax
js 0x464689
cmp eax, ebx
jg 0x464689
cmp word [edi + eax*2], 0x5c
je 0x464483
lea esi, [ebx + 1]
test esi, esi
js 0x464689
mov eax, dword [edi - 8]
mov ecx, 1
sub ecx, dword [edi - 4]
sub eax, esi
or eax, ecx
jge 0x464468
push esi
lea ecx, [ebp - 0x18]
call fcn.0042b0d0
mov edi, dword [ebp - 0x18]
mov eax, 0x5c
mov word [edi + ebx*2], ax
cmp esi, dword [edi - 8]
jg 0x464689
xor eax, eax
mov dword [edi - 0xc], esi
mov word [edi + esi*2], ax
mov dword [ebp - 0x30], 0
mov dword [ebp - 0x2c], 0
mov dword [ebp - 0x28], 0
mov byte [ebp - 4], 1
call fcn.00422040
mov ecx, eax
test ecx, ecx
je 0x464693
mov eax, dword [ecx]
mov edx, dword [eax + 0xc]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x46469d
lock inc dword [ecx + 0x14]
lea eax, [ecx + 8]
lea esi, [eax + 0x10]
mov dword [ebp - 0x14], esi
mov byte [ebp - 4], 2
xor ecx, ecx
mov edx, dword [edi - 0xc]
mov byte [ebp - 0xd], 0
mov dword [ebp - 0x1c], ecx
test edx, edx
jle 0x4645c9
test ecx, ecx
js 0x464689
cmp ecx, edx
jg 0x464689
movzx ebx, word [edi + ecx*2]
cmp ebx, 0x5c
je 0x46453c
cmp ecx, edx
jg 0x464689
mov eax, ebx
mov dword [ebp - 0x24], eax
mov eax, dword [esi - 0xc]
mov dword [ebp - 0x20], eax
lea ebx, [eax + 1]
test ebx, ebx
js 0x464689
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, ebx
or eax, ecx
jge 0x464534
push ebx
lea ecx, [ebp - 0x14]
call fcn.0042b0d0
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x24]
jmp 0x4645a1
mov ebx, dword [ebp - 0x2c]
cmp dword [ebp - 0x28], ebx
je 0x46455b
lea eax, [esi - 0x10]
push eax
call fcn.0042b060
add eax, 0x10
add esp, 4
mov dword [ebx], eax
add dword [ebp - 0x2c], 4
jmp 0x46456b
lea eax, [ebp - 0x14]
push eax
push ebx
lea ecx, [ebp - 0x30]
call fcn.0042dbe0
mov esi, dword [ebp - 0x14]
mov eax, dword [esi - 0xc]
mov dword [ebp - 0x24], eax
lea ebx, [eax + 1]
test ebx, ebx
js 0x464689
mov eax, dword [esi - 8]
mov ecx, 1
sub ecx, dword [esi - 4]
sub eax, ebx
or eax, ecx
jge 0x464599
push ebx
lea ecx, [ebp - 0x14]
call fcn.0042b0d0
mov esi, dword [ebp - 0x14]
mov eax, dword [ebp - 0x24]
mov ecx, 0x5c
mov word [esi + eax*2], cx
cmp ebx, dword [esi - 8]
jg 0x464689
mov ecx, dword [ebp - 0x1c]
xor eax, eax
mov dword [esi - 0xc], ebx
inc ecx
mov word [esi + ebx*2], ax
mov edx, dword [edi - 0xc]
mov dword [ebp - 0x1c], ecx
cmp ecx, edx
jl 0x4644e0
mov edi, dword [ebp - 0x30]
cmp edi, dword [ebp - 0x2c]
je 0x4645eb
mov ebx, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 0
push dword [edi]
call ebx
test eax, eax
setne byte [ebp - 0xd]
add edi, 4
cmp edi, dword [ebp - 0x2c]
jne 0x4645d7
or edi, 0xffffffff
mov byte [ebp - 4], 1
add esi, 0xfffffff0
mov eax, edi
lock xadd dword [esi + 0xc], eax
dec eax
mov ebx, dword [sym.imp.KERNEL32.dll_HeapFree]
test eax, eax
jg 0x464630
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x4646a4
mov ecx, dword [ecx + 4]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4646a4
push 0
push dword [ecx + 4]
call ebx
lea ecx, [ebp - 0x30]
call fcn.00429d60
mov dword [ebp - 4], 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], edi
dec edi
test edi, edi
jg 0x464674
mov edx, dword [ecx]
push ecx
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CAtlStringMgr.0
jne 0x4646a8
mov edx, dword [edx + 4]
mov eax, dword [edx]
mov esi, dword [eax + 4]
cmp eax, vtable.ATL::CWin32Heap.0
jne 0x4646a8
push 0
push dword [edx + 4]
call ebx
mov al, byte [ebp - 0xd]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
push 0x80070057
call fcn.004213a0
push 0x80004005
call fcn.004213a0
call edx
jmp 0x4644c2
call edx
jmp 0x464630
mov ecx, edx
call esi
jmp 0x464674