Function at 0x40b890
Capabilities:
Create directory
Get common file path

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x479ccf
mov eax, dword fs:[0]
push eax
sub esp, 0x4e0
mov eax, dword [0x4a3140]
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
xor esi, esi
cmp dword [0x52ce84], esi
jne 0x40b8f6
push 0x58
call dword [sym.imp.MSVCR100.dll_void____cdecl_operator_new_unsigned_int_]
add esp, 4
mov dword [ebp - 0x4ec], eax
mov dword [ebp - 4], esi
cmp eax, esi
je 0x40b8e8
push eax
call fcn.00424cd0
jmp 0x40b8ea
xor eax, eax
mov dword [ebp - 4], 0xffffffff
mov dword [0x52ce84], eax
lea edi, [ebp - 0x4ac]
call fcn.004251e0
mov dword [ebp - 4], 1
cmp dword [eax + 0x14], 8
jb 0x40b912
mov edx, dword [eax]
jmp 0x40b914
mov edx, eax
xor eax, eax
mov word [ebp - 0x4c8], ax
mov ebx, 7
mov eax, edx
mov dword [ebp - 0x4b4], ebx
mov dword [ebp - 0x4b8], esi
lea edi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, si
jne 0x40b933
sub eax, edi
sar eax, 1
push eax
push edx
lea ecx, [ebp - 0x4c8]
call fcn.004042f0
mov byte [ebp - 4], 3
cmp dword [ebp - 0x498], 8
jb 0x40b96c
mov ecx, dword [ebp - 0x4ac]
push ecx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
push 0xffffffffffffffff
push esi
lea ecx, [ebp - 0x4c8]
xor edx, edx
xor eax, eax
push ecx
lea ecx, [ebp - 0x458]
mov dword [ebp - 0x498], ebx
mov dword [ebp - 0x49c], esi
mov word [ebp - 0x4ac], dx
mov dword [ebp - 0x444], ebx
mov dword [ebp - 0x448], esi
mov word [ebp - 0x458], ax
call fcn.00401390
push 1
push 0x484350
lea ecx, [ebp - 0x458]
mov byte [ebp - 4], 4
call fcn.0040c300
cmp dword [0x52ce84], esi
jne 0x40b9f5
push 0x58
call dword [sym.imp.MSVCR100.dll_void____cdecl_operator_new_unsigned_int_]
add esp, 4
mov dword [ebp - 0x4ec], eax
mov byte [ebp - 4], 5
cmp eax, esi
je 0x40b9ea
push eax
call fcn.00424cd0
jmp 0x40b9ec
xor eax, eax
mov byte [ebp - 4], 4
mov dword [0x52ce84], eax
lea esi, [ebp - 0x4ac]
call fcn.00424da0
push 0xffffffffffffffff
xor esi, esi
push esi
push eax
lea ecx, [ebp - 0x458]
mov byte [ebp - 4], 6
call fcn.0040c1f0
mov byte [ebp - 4], 4
cmp dword [ebp - 0x498], 8
jb 0x40ba32
mov edx, dword [ebp - 0x4ac]
push edx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
push 0xffffffffffffffff
push esi
lea ecx, [ebp - 0x4c8]
xor eax, eax
push ecx
lea ecx, [ebp - 0x43c]
mov dword [ebp - 0x428], ebx
mov dword [ebp - 0x42c], esi
mov word [ebp - 0x43c], ax
call fcn.00401390
push 1
push 0x484350
lea ecx, [ebp - 0x43c]
mov byte [ebp - 4], bl
call fcn.0040c300
push 9
push str.Unins.exe
lea ecx, [ebp - 0x43c]
call fcn.0040c300
push 5
xor edx, edx
push 0x484354
lea ecx, [ebp - 0x474]
mov dword [ebp - 0x460], ebx
mov dword [ebp - 0x464], esi
mov word [ebp - 0x474], dx
call fcn.004042f0
push 4
push str..lnk
lea ecx, [ebp - 0x474]
mov byte [ebp - 4], 8
call fcn.0040c300
push 5
xor eax, eax
push str.unins
lea ecx, [ebp - 0x490]
mov dword [ebp - 0x47c], ebx
mov dword [ebp - 0x480], esi
mov word [ebp - 0x490], ax
call fcn.004042f0
push 4
push str..lnk
lea ecx, [ebp - 0x490]
mov byte [ebp - 4], 9
call fcn.0040c300
mov ebx, dword [sym.imp.MSVCR100.dll_void____cdecl_operator_new_unsigned_int_]
push 1
call ebx
push 0x206
lea edx, [ebp - 0x216]
xor ecx, ecx
push esi
push edx
mov dword [ebp - 0x4ec], eax
mov word [ebp - 0x218], cx
call sub.MSVCR100.dll_memset
add esp, 0x10
lea eax, [ebp - 0x4e8]
push eax
push 2
push esi
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
test eax, eax
jne 0x40bb60
mov edx, dword [ebp - 0x4e8]
lea ecx, [ebp - 0x218]
push ecx
push edx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
mov eax, dword [ebp - 0x4e8]
push eax
call dword [sym.imp.ole32.dll_CoTaskMemFree]
mov edi, dword [sym.imp.SHLWAPI.dll_StrCatW]
push 0x484350
lea ecx, [ebp - 0x218]
push ecx
call edi
push 0x484354
lea edx, [ebp - 0x218]
push edx
call edi
push 0x206
lea ecx, [ebp - 0x41e]
xor eax, eax
push esi
push ecx
mov word [ebp - 0x420], ax
call sub.MSVCR100.dll_memset
add esp, 0xc
lea edx, [ebp - 0x218]
push edx
lea eax, [ebp - 0x420]
push eax
call edi
push 0x484350
lea ecx, [ebp - 0x420]
push ecx
call edi
push 0x484540
lea edx, [ebp - 0x420]
push edx
call edi
mov edi, dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push esi
lea eax, [ebp - 0x218]
push eax
call edi
push esi
lea ecx, [ebp - 0x420]
push ecx
call edi
cmp dword [0x52ce84], esi
jne 0x40bc16
push 0x58
call ebx
add esp, 4
mov dword [ebp - 0x4e8], eax
mov byte [ebp - 4], 0xa
cmp eax, esi
je 0x40bc0b
push eax
call fcn.00424cd0
jmp 0x40bc0d
xor eax, eax
mov byte [ebp - 4], 9
mov dword [0x52ce84], eax
lea edi, [ebp - 0x4ac]
call fcn.004251e0
mov edx, 8
mov byte [ebp - 4], 0xb
cmp dword [eax + 0x14], edx
jb 0x40bc31
mov eax, dword [eax]
mov ecx, dword [ebp - 0x474]
cmp dword [ebp - 0x460], edx
jae 0x40bc45
lea ecx, [ebp - 0x474]
mov ebx, dword [ebp - 0x458]
cmp dword [ebp - 0x444], edx
jae 0x40bc59
lea ebx, [ebp - 0x458]
push eax
lea edx, [ebp - 0x218]
push edx
xor edi, edi
mov edx, 0x484354
call fcn.004244b0
mov bl, 9
mov esi, 8
mov byte [ebp - 4], bl
cmp dword [ebp - 0x498], esi
jb 0x40bc8f
mov eax, dword [ebp - 0x4ac]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
cmp dword [0x52ce84], edi
jne 0x40bcc2
push 0x58
call dword [sym.imp.MSVCR100.dll_void____cdecl_operator_new_unsigned_int_]
add esp, 4
mov dword [ebp - 0x4e8], eax
mov byte [ebp - 4], 0xc
test eax, eax
je 0x40bcb8
push eax
call fcn.00424cd0
jmp 0x40bcba
xor eax, eax
mov byte [ebp - 4], bl
mov dword [0x52ce84], eax
lea edi, [ebp - 0x4e4]
call fcn.004251e0
mov byte [ebp - 4], 0xd
cmp dword [eax + 0x14], esi
jb 0x40bcd8
mov eax, dword [eax]
mov ecx, dword [ebp - 0x490]
cmp dword [ebp - 0x47c], esi
jae 0x40bcec
lea ecx, [ebp - 0x490]
mov ebx, dword [ebp - 0x43c]
cmp dword [ebp - 0x428], esi
jae 0x40bd00
lea ebx, [ebp - 0x43c]
push eax
lea edx, [ebp - 0x420]
push edx
xor edi, edi
mov edx, str.unins
call fcn.004244b0
mov edi, dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
mov ebx, 8
cmp dword [ebp - 0x4d0], ebx
jb 0x40bd33
mov eax, dword [ebp - 0x4e4]
push eax
call edi
add esp, 4
mov eax, dword [ebp - 0x4ec]
xor esi, esi
cmp eax, esi
je 0x40bd45
push eax
call edi
add esp, 4
cmp dword [ebp - 0x47c], ebx
jb 0x40bd59
mov ecx, dword [ebp - 0x490]
push ecx
call edi
add esp, 4
xor edx, edx
mov edi, 7
mov dword [ebp - 0x47c], edi
mov dword [ebp - 0x480], esi
mov word [ebp - 0x490], dx
cmp dword [ebp - 0x460], ebx
jb 0x40bd8b
mov eax, dword [ebp - 0x474]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x460], edi
mov dword [ebp - 0x464], esi
mov word [ebp - 0x474], cx
cmp dword [ebp - 0x428], ebx
jb 0x40bdb8
mov edx, dword [ebp - 0x43c]
push edx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
xor eax, eax
mov dword [ebp - 0x428], edi
mov dword [ebp - 0x42c], esi
mov word [ebp - 0x43c], ax
cmp dword [ebp - 0x444], ebx
jb 0x40bde5
mov ecx, dword [ebp - 0x458]
push ecx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
xor edx, edx
mov dword [ebp - 0x444], edi
mov dword [ebp - 0x448], esi
mov word [ebp - 0x458], dx
cmp dword [ebp - 0x4b4], ebx
jb 0x40be12
mov eax, dword [ebp - 0x4c8]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
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.00456bde
mov esp, ebp
pop ebp
ret