Function at 0x404f60
Capabilities:
Delete directory
Get common file path
Read .ini file

Disassembly:
push 0xffffffffffffffff
push 0x47b20b
mov eax, dword fs:[0]
push eax
sub esp, 0x49c
mov eax, dword [0x4a05d0]
xor eax, esp
mov dword [esp + 0x498], eax
push esi
push edi
mov eax, dword [0x4a05d0]
xor eax, esp
push eax
lea eax, [esp + 0x4a8]
mov dword fs:[0], eax
push 0
call dword [sym.imp.ole32.dll_CoInitialize]
xor eax, eax
push 0x3e
push eax
lea ecx, [esp + 0x1e]
mov dword [esp + 0x4b8], 0
push ecx
mov word [esp + 0x20], ax
call fcn.0045db90
add esp, 0xc
xor edx, edx
push 0x206
push edx
lea eax, [esp + 0x9e]
push eax
mov word [esp + 0xa0], dx
call fcn.0045db90
mov ecx, dword [0x4857a8]
mov edx, dword [0x4857ac]
add esp, 0xc
push 0x38
lea eax, [esp + 0x60]
push 0
push eax
mov dword [esp + 0x60], ecx
mov dword [esp + 0x64], edx
call fcn.0045db90
mov edi, dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
add esp, 0xc
lea ecx, [esp + 0x94]
push ecx
push 0
push 0
push 0x23
push 0
call edi
push 0x485264
lea edx, [esp + 0x98]
push 0x104
push edx
call fcn.00459b8e
add esp, 0xc
lea eax, [esp + 0x94]
push eax
push 0x20
lea ecx, [esp + 0x1c]
push ecx
push 0x485fe4
push 0x4852a0
call fcn.00413560
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor edx, edx
cmp dx, word [esp + 0x14]
jne 0x40513b
xor eax, eax
cmp eax, 0x4859f8
je 0x40507f
mov esi, 0x4859f8
call fcn.00418e90
call fcn.004131e0
test eax, eax
je 0x40508f
mov esi, eax
call fcn.00418e90
call fcn.004131e0
test eax, eax
je 0x40509f
mov esi, eax
call fcn.00419300
push 0x4857a8
lea ecx, [esp + 0x14]
call fcn.0040a630
mov esi, eax
mov byte [esp + 0x4b0], 1
call fcn.004131e0
push eax
lea ecx, [esp + 0x10]
push esi
push ecx
call fcn.00408c50
add esp, 0xc
mov byte [esp + 0x4b0], 2
mov esi, dword [eax]
test esi, esi
je 0x4050de
call fcn.00419300
mov byte [esp + 0x4b0], 1
mov eax, dword [esp + 0xc]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x405106
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [esp + 0x4b0], 0
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40512e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.004131e0
test eax, eax
je 0x405194
mov ecx, eax
jmp 0x40518f
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x58]
push 0x20
push edx
call fcn.00459b8e
xor eax, eax
add esp, 0xc
cmp eax, 0x4859f8
je 0x405162
mov esi, 0x4859f8
call fcn.00418e90
lea ecx, [esp + 0x14]
test ecx, ecx
je 0x405176
mov esi, ecx
call fcn.00418e90
call fcn.00419300
lea edx, [esp + 0x54]
test edx, edx
je 0x405185
mov esi, edx
call fcn.00419300
lea eax, [esp + 0x14]
test eax, eax
je 0x405194
mov ecx, eax
call fcn.004190d0
lea ecx, [esp + 0x94]
push ecx
push 0x485fe4
push str.iconTime
call fcn.00413560
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push eax
call esi
lea edx, [esp + 0x94]
push edx
push 0x485fe4
push 0x4852a0
call fcn.00413560
push eax
call esi
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x2a6]
push ecx
mov word [esp + 0x2a8], ax
call fcn.0045db90
add esp, 0xc
lea edx, [esp + 0x29c]
push edx
push 0
push 0
push 0x17
push 0
call edi
push 0x485a20
lea eax, [esp + 0x2a0]
push 0x104
push eax
call fcn.00459b8e
lea ecx, [esp + 0x2a8]
add esp, 0xc
push ecx
call fcn.004179f0
add esp, 4
test eax, eax
jne 0x40523c
lea edx, [esp + 0x29c]
push edx
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, 1
mov ecx, dword [esp + 0x4a8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [esp + 0x498]
xor ecx, esp
call fcn.004597c7
add esp, 0x4a8
ret