Function at 0x427500
Capabilities:
Create directory
Get common file path
Set current directory

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x44ee0b
mov eax, dword fs:[0]
push eax
sub esp, 0xa58
mov eax, dword [0x4672b4]
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
cmp byte [0x4a5828], 0
mov edi, dword [ebp + 8]
mov dword [ebp - 0xa58], edi
jne 0x427581
mov eax, dword [0x4a5824]
test eax, eax
jne 0x42755d
push str.shell32.dll
call dword [sym.imp.KERNEL32.dll_LoadLibraryW]
mov dword [0x4a5824], eax
test eax, eax
je 0x42757a
push str.SHCreateDirectoryExW
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov ecx, dword [0x4a5820]
test eax, eax
cmovne ecx, eax
mov dword [0x4a5820], ecx
mov byte [0x4a5828], 1
cmp dword [0x4a5820], 0
mov esi, dword [sym.imp.SHLWAPI.dll_PathRemoveBackslashW]
je 0x4275ce
push edi
lea eax, [ebp - 0x830]
push 0x104
push eax
call fcn.0042f9f7
add esp, 0xc
lea eax, [ebp - 0x830]
push eax
call esi
push 0
lea eax, [ebp - 0x830]
push eax
push 0
call dword [0x4a5820]
xor ebx, ebx
test eax, eax
sete bl
test eax, eax
je 0x42790d
push edi
lea eax, [ebp - 0x420]
push 0x104
push eax
call fcn.0042f9f7
add esp, 0xc
lea eax, [ebp - 0x420]
push eax
call esi
lea eax, [ebp - 0xa38]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
mov eax, dword [ebp - 0x41e]
lea esi, [ebp - 0x420]
lea ecx, [ebp - 0x218]
cmp ax, 0x3a
jne 0x427660
cmp word [ebp - 0x41c], 0x5c
lea ecx, [ebp - 0x214]
mov ax, word [ebp - 0x420]
lea esi, [ebp - 0x41c]
mov word [ebp - 0x218], ax
mov eax, 0x3a
mov word [ebp - 0x216], ax
jne 0x42769a
mov eax, 0x5c
lea ecx, [ebp - 0x212]
mov word [ebp - 0x214], ax
lea esi, [ebp - 0x41a]
jmp 0x42769a
cmp word [ebp - 0x420], 0x5c
jne 0x42769a
mov edx, 0x5c
lea ecx, [ebp - 0x216]
mov word [ebp - 0x218], dx
lea esi, [ebp - 0x41e]
cmp ax, dx
jne 0x42769a
mov word [ebp - 0x216], dx
lea ecx, [ebp - 0x214]
lea esi, [ebp - 0x41c]
mov edx, edi
xor bl, bl
mov dword [ebp - 0xa54], ebx
lea edi, [edx + 2]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x4276a7
sub edx, edi
mov edi, dword [ebp - 0xa58]
sar edx, 1
cmp edx, 3
jbe 0x4276dd
cmp word [edi], 0x5c
jne 0x4276dd
cmp word [edi + 2], 0x5c
mov eax, 1
movzx ebx, bl
cmove ebx, eax
mov dword [ebp - 0xa54], ebx
movzx eax, word [esi]
cmp ax, 0x5c
je 0x4276f6
test ax, ax
je 0x4276f6
mov word [ecx], ax
add ecx, 2
add esi, 2
jmp 0x4276dd
test bl, bl
je 0x427710
test ax, ax
je 0x4278e4
mov word [ecx], ax
add esi, 2
add ecx, 2
xor bl, bl
jmp 0x4276d7
xor eax, eax
mov dword [ebp - 0xa64], 0xc
mov word [ecx], ax
mov dword [ebp - 0xa60], eax
mov eax, edi
mov dword [ebp - 0xa5c], 1
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x427734
sub eax, edx
sar eax, 1
cmp eax, 0xf8
jbe 0x427898
xor eax, eax
mov dword [ebp - 0xa40], 0
mov dword [ebp - 0xa3c], 0
mov dword [ebp - 0xa40], 0
mov dword [ebp - 0xa3c], 7
mov word [ebp - 0xa50], ax
mov dword [ebp - 4], eax
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsRelativeW]
test eax, eax
je 0x42781d
lea eax, [ebp - 0x628]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
test eax, eax
je 0x4278e8
lea eax, [ebp - 0x628]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAddBackslashW]
test eax, eax
je 0x4278e8
push 4
push 0x451e2c
lea ecx, [ebp - 0xa50]
call fcn.004178e0
lea ecx, [ebp - 0x628]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4277e1
sub ecx, edx
lea eax, [ebp - 0x628]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0xa50]
call fcn.004088e0
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop dword [eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x427810
jmp 0x42784b
push 4
push 0x451e2c
lea ecx, [ebp - 0xa50]
call fcn.004178e0
lea ecx, [ebp - 0x218]
lea edx, [ecx + 2]
nop dword [eax + eax]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x427840
sub ecx, edx
lea eax, [ebp - 0x218]
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0xa50]
call fcn.004088e0
cmp dword [ebp - 0xa3c], 8
lea ecx, [ebp - 0xa64]
lea eax, [ebp - 0xa50]
cmovae eax, dword [ebp - 0xa50]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xa50]
call fcn.00403400
jmp 0x4278ac
lea eax, [ebp - 0xa64]
push eax
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
mov ebx, eax
test ebx, ebx
je 0x4278fc
cmp word [esi], 0
je 0x4278fc
movzx ecx, word [esi + 2]
add esi, 2
mov eax, ecx
test cx, cx
je 0x4278fc
mov ebx, dword [ebp - 0xa54]
lea ecx, [ebp - 0x218]
jmp 0x4276e0
xor ebx, ebx
jmp 0x4278fc
xor ebx, ebx
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0xa50]
call fcn.00403400
lea eax, [ebp - 0xa38]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryW]
test ebx, ebx
je 0x42791a
push 0
push edi
push 5
push 8
call dword [sym.imp.SHELL32.dll_SHChangeNotify]
mov eax, ebx
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.00428d9d
mov esp, ebp
pop ebp
ret