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

Disassembly:
push 0xffffffffffffffff
push 0x45b7c6
mov eax, dword fs:[0]
push eax
sub esp, 0x654
mov eax, dword [0x4751f0]
xor eax, esp
mov dword [esp + 0x650], eax
push esi
mov eax, dword [0x4751f0]
xor eax, esp
push eax
lea eax, [esp + 0x65c]
mov dword fs:[0], eax
push 0x208
lea eax, [esp + 0x44]
push 0
push eax
call fcn.004449b0
add esp, 0xc
push 0
push 2
lea ecx, [esp + 0x48]
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
jne 0x405acf
push str..common.cpp
push 0x18e
push str.Line_no_d_source_s_SHGetSpecialFolderPath_failed._r_n
call fcn.0040c370
add esp, 0xc
xor eax, eax
jmp 0x405d55
lea edx, [esp + 0x24]
push 9
push edx
call fcn.00419370
add esp, 8
mov eax, dword [esp + 0x28]
mov esi, 8
mov dword [esp + 0x664], 0
cmp dword [esp + 0x3c], esi
jae 0x405afc
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x44]
push eax
mov ecx, eax
push 0x45f83c
push ecx
call fcn.00401040
lea edx, [esp + 0x50]
push edx
call fcn.00417f70
add esp, 0x14
test eax, eax
je 0x405b2f
lea eax, [esp + 0x40]
push 1
push eax
call fcn.00418b30
add esp, 8
push 0x45fc68
lea ecx, [esp + 0x44]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatW]
push 0
lea edx, [esp + 0x44]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x405b73
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [esp + 0x44]
push eax
push str..common.cpp
push 0x199
push str.Line_no_d_source_s_CreateDirectory___s__failed_error_d._r_n
call fcn.0040c370
add esp, 0x14
push 0x208
lea ecx, [esp + 0x24c]
push 0
push ecx
call fcn.004449b0
push 0x208
lea edx, [esp + 0x460]
push 0
push edx
call fcn.004449b0
mov eax, dword [0x474490]
add esp, 0x18
cmp dword [0x4744a4], esi
jae 0x405bb0
mov eax, 0x474490
push str.ADSafe.exe
push eax
lea eax, [esp + 0x250]
push 0x45f83c
push eax
call fcn.00401040
mov eax, dword [esp + 0x38]
add esp, 0x10
cmp dword [esp + 0x3c], esi
jae 0x405bd9
lea eax, [esp + 0x28]
push eax
lea ecx, [esp + 0x44]
push ecx
lea edx, [esp + 0x458]
push str._s_s.lnk
push edx
call fcn.00401040
lea eax, [esp + 0x258]
push eax
call fcn.00417f70
add esp, 0x14
test eax, eax
jne 0x405c23
cmp dword [esp + 0x3c], esi
jb 0x405d31
mov ecx, dword [esp + 0x28]
push ecx
call fcn.0044475c
add esp, 4
xor eax, eax
jmp 0x405d55
push 1
lea edx, [esp + 0x454]
push edx
lea eax, [esp + 0x250]
push eax
call fcn.004046f0
add esp, 0xc
test eax, eax
je 0x405d28
push 0x208
lea ecx, [esp + 0x24c]
push 0
push ecx
call fcn.004449b0
push 0x208
lea edx, [esp + 0x460]
push 0
push edx
call fcn.004449b0
lea eax, [esp + 0x20]
push 0x1a
push eax
call fcn.00419370
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x670], 1
call fcn.00403220
lea ecx, [esp + 8]
mov byte [esp + 0x664], 0
call fcn.00402300
mov eax, dword [0x474490]
cmp dword [0x4744a4], esi
jae 0x405cb5
mov eax, 0x474490
push str.uninst.exe
push eax
lea ecx, [esp + 0x250]
push 0x45f83c
push ecx
call fcn.00401040
mov eax, dword [esp + 0x38]
add esp, 0x10
cmp dword [esp + 0x3c], esi
jae 0x405cde
lea eax, [esp + 0x28]
push eax
lea edx, [esp + 0x44]
push edx
lea eax, [esp + 0x458]
push str._s_s.lnk
push eax
call fcn.00401040
lea ecx, [esp + 0x258]
push ecx
call fcn.00417f70
add esp, 0x14
test eax, eax
je 0x405d28
push 0
lea edx, [esp + 0x454]
push edx
lea eax, [esp + 0x250]
push eax
call fcn.004046f0
add esp, 0xc
test eax, eax
jne 0x405d35
lea ecx, [esp + 0x24]
call fcn.00402300
xor eax, eax
jmp 0x405d55
lea ecx, [esp + 0x40]
push ecx
push reloc.OLEAUT32.dll_VariantClear
call fcn.00401120
add esp, 8
lea ecx, [esp + 0x24]
call fcn.00402300
mov eax, 1
mov ecx, dword [esp + 0x65c]
mov dword fs:[0], ecx
pop ecx
pop esi
mov ecx, dword [esp + 0x650]
xor ecx, esp
call fcn.00444b03
add esp, 0x660
ret