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

Disassembly:
push 0xffffffffffffffff
push 0x4758db
mov eax, dword fs:[0]
push eax
sub esp, 0x49c
mov eax, dword [0x4995d0]
xor eax, esp
mov dword [esp + 0x498], eax
push esi
push edi
mov eax, dword [0x4995d0]
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.00458440
add esp, 0xc
xor edx, edx
push 0x206
push edx
lea eax, [esp + 0x9e]
push eax
mov word [esp + 0xa0], dx
call fcn.00458440
mov ecx, dword [0x480708]
mov edx, dword [0x48070c]
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.00458440
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 0x480204
lea edx, [esp + 0x98]
push 0x104
push edx
call fcn.0045456e
add esp, 0xc
lea eax, [esp + 0x94]
push eax
push 0x20
lea ecx, [esp + 0x1c]
push ecx
push 0x480f44
push 0x480240
call fcn.004133b0
push eax
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
xor edx, edx
cmp dx, word [esp + 0x14]
jne 0x404fcb
xor eax, eax
cmp eax, 0x480958
je 0x404f0f
mov esi, 0x480958
call fcn.00418be0
call fcn.00413030
test eax, eax
je 0x404f1f
mov esi, eax
call fcn.00418be0
call fcn.00413030
test eax, eax
je 0x404f2f
mov esi, eax
call fcn.00419050
push 0x480708
lea ecx, [esp + 0x14]
call fcn.0040a4d0
mov esi, eax
mov byte [esp + 0x4b0], 1
call fcn.00413030
push eax
lea ecx, [esp + 0x10]
push esi
push ecx
call fcn.00408ae0
add esp, 0xc
mov byte [esp + 0x4b0], 2
mov esi, dword [eax]
test esi, esi
je 0x404f6e
call fcn.00419050
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 0x404f96
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 0x404fbe
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.00413030
test eax, eax
je 0x405024
mov ecx, eax
jmp 0x40501f
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x58]
push 0x20
push edx
call fcn.0045456e
xor eax, eax
add esp, 0xc
cmp eax, 0x480958
je 0x404ff2
mov esi, 0x480958
call fcn.00418be0
lea ecx, [esp + 0x14]
test ecx, ecx
je 0x405006
mov esi, ecx
call fcn.00418be0
call fcn.00419050
lea edx, [esp + 0x54]
test edx, edx
je 0x405015
mov esi, edx
call fcn.00419050
lea eax, [esp + 0x14]
test eax, eax
je 0x405024
mov ecx, eax
call fcn.00418e20
lea ecx, [esp + 0x94]
push ecx
push 0x480f44
push 0x48096c
call fcn.004133b0
mov esi, dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
push eax
call esi
lea edx, [esp + 0x94]
push edx
push 0x480f44
push 0x480240
call fcn.004133b0
push eax
call esi
xor eax, eax
push 0x206
push eax
lea ecx, [esp + 0x2a6]
push ecx
mov word [esp + 0x2a8], ax
call fcn.00458440
add esp, 0xc
lea edx, [esp + 0x29c]
push edx
push 0
push 0
push 0x17
push 0
call edi
push 0x480980
lea eax, [esp + 0x2a0]
push 0x104
push eax
call fcn.0045456e
lea ecx, [esp + 0x2a8]
add esp, 0xc
push ecx
call fcn.00417770
add esp, 4
test eax, eax
jne 0x4050cc
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.004541a5
add esp, 0x4a8
ret