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

Disassembly:
push 0xffffffffffffffff
push 0x467586
mov eax, dword fs:[0]
push eax
sub esp, 0x654
mov eax, dword [0x487bb0]
xor eax, esp
mov dword [esp + 0x650], eax
push esi
mov eax, dword [0x487bb0]
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.0044fe60
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 0x4065cf
push str..common.cpp
push 0x24f
push str.Line_no_d_source_s_SHGetSpecialFolderPath_failed._r_n
call fcn.0040cfa0
add esp, 0xc
xor eax, eax
jmp 0x406855
lea edx, [esp + 0x24]
push 9
push edx
call fcn.00424560
add esp, 8
mov eax, dword [esp + 0x28]
mov esi, 8
mov dword [esp + 0x664], 0
cmp dword [esp + 0x3c], esi
jae 0x4065fc
lea eax, [esp + 0x28]
push eax
lea eax, [esp + 0x44]
push eax
mov ecx, eax
push 0x46c8b4
push ecx
call fcn.00401040
lea edx, [esp + 0x50]
push edx
call fcn.00423030
add esp, 0x14
test eax, eax
je 0x40662f
lea eax, [esp + 0x40]
push 1
push eax
call fcn.00423ce0
add esp, 8
push 0x46cbb0
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 0x406673
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea eax, [esp + 0x44]
push eax
push str..common.cpp
push 0x25a
push str.Line_no_d_source_s_CreateDirectory___s__failed_error_d._r_n
call fcn.0040cfa0
add esp, 0x14
push 0x208
lea ecx, [esp + 0x24c]
push 0
push ecx
call fcn.0044fe60
push 0x208
lea edx, [esp + 0x460]
push 0
push edx
call fcn.0044fe60
mov eax, dword [0x486e58]
add esp, 0x18
cmp dword [0x486e6c], esi
jae 0x4066b0
mov eax, 0x486e58
push str.ADSafe.exe
push eax
lea eax, [esp + 0x250]
push 0x46c8b4
push eax
call fcn.00401040
mov eax, dword [esp + 0x38]
add esp, 0x10
cmp dword [esp + 0x3c], esi
jae 0x4066d9
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.00423030
add esp, 0x14
test eax, eax
jne 0x406723
cmp dword [esp + 0x3c], esi
jb 0x406831
mov ecx, dword [esp + 0x28]
push ecx
call fcn.0044fc16
add esp, 4
xor eax, eax
jmp 0x406855
push 1
lea edx, [esp + 0x454]
push edx
lea eax, [esp + 0x250]
push eax
call fcn.00404f70
add esp, 0xc
test eax, eax
je 0x406828
push 0x208
lea ecx, [esp + 0x24c]
push 0
push ecx
call fcn.0044fe60
push 0x208
lea edx, [esp + 0x460]
push 0
push edx
call fcn.0044fe60
lea eax, [esp + 0x20]
push 0x1a
push eax
call fcn.00424560
add esp, 0x20
push 0xffffffffffffffff
push 0
push eax
lea ecx, [esp + 0x30]
mov byte [esp + 0x670], 1
call fcn.004034a0
lea ecx, [esp + 8]
mov byte [esp + 0x664], 0
call fcn.004021f0
mov eax, dword [0x486e58]
cmp dword [0x486e6c], esi
jae 0x4067b5
mov eax, 0x486e58
push str.uninst.exe
push eax
lea ecx, [esp + 0x250]
push 0x46c8b4
push ecx
call fcn.00401040
mov eax, dword [esp + 0x38]
add esp, 0x10
cmp dword [esp + 0x3c], esi
jae 0x4067de
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.00423030
add esp, 0x14
test eax, eax
je 0x406828
push 0
lea edx, [esp + 0x454]
push edx
lea eax, [esp + 0x250]
push eax
call fcn.00404f70
add esp, 0xc
test eax, eax
jne 0x406835
lea ecx, [esp + 0x24]
call fcn.004021f0
xor eax, eax
jmp 0x406855
lea ecx, [esp + 0x40]
push ecx
push reloc.OLEAUT32.dll_VariantClear
call fcn.00401120
add esp, 8
lea ecx, [esp + 0x24]
call fcn.004021f0
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.0044ffb3
add esp, 0x660
ret