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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push esi
mov esi, dword [ebp + 8]
test esi, esi
je 0x40de48
cmp byte [esi], 0
je 0x40de48
push ebx
mov ebx, 0x104
push edi
push ebx
call fcn.00424dd9
test eax, eax
pop ecx
mov dword [ebp - 4], eax
mov edi, 0x47e924
jne 0x40dc53
mov ecx, edi
call fcn.0041cd1e
push eax
call fcn.0041d881
pop ecx
push ebx
call fcn.00424dd9
test eax, eax
pop ecx
mov dword [ebp - 0x10], eax
jne 0x40dc6f
mov ecx, edi
call fcn.0041cd1e
push eax
call fcn.0041d881
pop ecx
push dword [ebp - 0x10]
push ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov al, byte [esi + 1]
cmp al, 0x3a
jne 0x40dca6
cmp byte [esi + 2], 0x5c
jne 0x40dca6
mov al, byte [esi]
and byte [ebp + 0xb], 0
mov byte [ebp + 8], al
lea eax, [ebp + 8]
push eax
mov byte [ebp + 9], 0x3a
mov byte [ebp + 0xa], 0x5c
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
add esi, 3
jmp 0x40dd01
cmp byte [esi], 0x5c
jne 0x40de21
cmp al, 0x5c
jne 0x40de21
lea eax, [esi + 2]
push 0x5c
push eax
call fcn.004248b0
pop ecx
test eax, eax
pop ecx
je 0x40de21
inc eax
push 0x5c
push eax
call fcn.004248b0
mov edi, eax
pop ecx
test edi, edi
pop ecx
je 0x40de2e
cmp byte [edi + 1], 0
lea eax, [edi + 1]
mov dword [ebp + 8], eax
je 0x40de2e
and byte [edi], 0
push esi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov esi, dword [ebp + 8]
mov byte [edi], 0x5c
push dword [ebp - 4]
push ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
and byte [ebp + 0xb], 0
push esi
call edi
cmp byte [eax + esi - 1], 0x5c
jne 0x40dd2b
push esi
call edi
and byte [eax + esi - 1], 0
mov byte [ebp + 0xb], 1
and dword [ebp - 0x14], 0
push esi
call edi
and dword [ebp - 0xc], 0
mov dword [ebp - 8], eax
mov edi, dword [ebp - 0x14]
cmp edi, dword [ebp - 8]
jge 0x40dd4d
cmp byte [edi + esi], 0x5c
je 0x40dd4a
inc edi
jmp 0x40dd3c
cmp edi, dword [ebp - 8]
jg 0x40de25
and byte [edi + esi], 0
add esi, dword [ebp - 0xc]
push esi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
test eax, eax
jne 0x40dda2
push eax
push esi
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
je 0x40ddc2
push esi
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push ebx
push 0
push dword [ebp - 4]
call fcn.00424500
add esp, 0xc
push dword [ebp - 4]
push ebx
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryA]
push 0x47e7ac
mov ecx, 0x47e788
push dword [ebp - 4]
call fcn.00421ce6
sub esi, dword [ebp - 0xc]
cmp edi, dword [ebp - 8]
lea eax, [edi + 1]
mov dword [ebp - 0xc], eax
jne 0x40ddb6
cmp byte [ebp + 0xb], 0
je 0x40ddba
mov byte [edi + esi], 0x5c
mov dword [ebp - 0x14], eax
jmp 0x40dd39
cmp byte [ebp + 0xc], 0
jne 0x40de21
call dword [sym.imp.KERNEL32.dll_GetLastError]
lea ecx, [ebp - 0x20]
mov edi, eax
call fcn.0041bdc5
push esi
lea eax, [ebp - 0x20]
push str.Couldnt_create_directory__s.
push eax
call fcn.0041c467
add esp, 0xc
cmp edi, 5
jne 0x40ddfe
push 0
push str._Error:_Access_denied__You_may_not_have_required_privileges_for_installing_this_software._Please_have_your_system_administrator__or_other_user_with_higher_privileges__install_this_software.
lea ecx, [ebp - 0x20]
call fcn.0041c047
push 0
lea ecx, [ebp - 0x20]
call fcn.0041cd1e
push eax
mov ecx, 0x47dfb8
push dword [0x47e178]
call fcn.0041b2a8
lea ecx, [ebp - 0x20]
call fcn.0041befb
xor bl, bl
jmp 0x40de30
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
mov bl, 1
push dword [ebp - 4]
call fcn.00424dce
push dword [ebp - 0x10]
call fcn.00424dce
pop ecx
mov al, bl
pop ecx
pop edi
pop ebx
jmp 0x40de4a
xor al, al
pop esi
leave
ret