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

Disassembly:
push 0xed0
mov eax, 0x555b04
call fcn.00527be2
mov eax, dword [ebp + 8]
and dword [ebp - 0xeb8], 0
mov dword [ebp - 0xebc], eax
add eax, 0xb4
push eax
lea esi, [ebp - 0xd74]
call fcn.00408277
xor edi, edi
inc edi
mov dword [ebp - 4], edi
mov ebx, eax
lea esi, [ebp - 0xc58]
mov dword [ebp - 0xeb8], 2
call fcn.004082bf
push edi
mov dword [ebp - 4], 3
and dword [ebp - 0xeb8], 0
xor edi, edi
lea esi, [ebp - 0xd74]
call fcn.00409659
push str.test.ini
lea esi, [ebp - 0xc74]
mov byte [ebp - 4], 4
call fcn.0040829d
lea eax, [ebp - 0x420]
push eax
mov esi, 0x104
push esi
mov byte [ebp - 4], 5
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
lea eax, [ebp - 0x218]
push eax
push edi
push str.mycab
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push edi
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
push 0x585004
lea eax, [ebp - 0x218]
push esi
push eax
call fcn.005258ef
add esp, 0xc
lea eax, [ebp - 0x218]
push eax
lea esi, [ebp - 0xc3c]
call fcn.0040829d
push edi
lea eax, [ebp - 0xc74]
push eax
or eax, 0xffffffff
mov byte [ebp - 4], 6
call fcn.00409c4f
push 0x24
call fcn.00423341
pop ecx
mov dword [ebp - 0xec8], eax
mov byte [ebp - 4], 7
cmp eax, edi
je 0x405bd4
cmp dword [ebp - 0xc44], 8
mov ebx, dword [ebp - 0xc58]
jae 0x405bc9
lea ebx, [ebp - 0xc58]
mov edi, eax
call fcn.00404fce
mov esi, eax
jmp 0x405bd6
xor esi, esi
xor ebx, ebx
mov dword [ebp - 0xed4], esi
mov byte [ebp - 4], 8
mov ecx, dword [esi + 0x20]
cmp ecx, ebx
je 0x405bf8
push ebx
push ebx
push ebx
lea eax, [ebp - 0x218]
push eax
call fcn.00405411
mov eax, dword [esi]
push 1
mov ecx, esi
mov dword [ebp - 0xed4], ebx
call dword [eax]
mov esi, dword [ebp - 0xebc]
lea edi, [esi + 8]
mov dword [ebp - 0xed0], edi
call fcn.00408fc8
lea edi, [esi + 0x18]
call fcn.0040904b
lea edi, [esi + 0x28]
mov dword [ebp - 0xec4], edi
call fcn.00408ee5
lea eax, [ebp - 0xd58]
push eax
mov dword [esi + 0x58], ebx
mov dword [esi + 0x5c], ebx
call fcn.00405601
mov ebx, 0x1000
xor ecx, ecx
push 2
pop edx
mov eax, ebx
mul edx
seto cl
mov byte [ebp - 4], 9
mov edi, ebx
neg ecx
or ecx, eax
push ecx
call fcn.0042337b
cmp dword [ebp - 0xc28], 8
mov dword [ebp - 0xeb4], eax
mov eax, dword [ebp - 0xc3c]
pop ecx
jae 0x405c7f
lea eax, [ebp - 0xc3c]
push eax
push ebx
push dword [ebp - 0xeb4]
mov esi, str.Files
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
mov ecx, ebx
jmp 0x405ce8
push dword [ebp - 0xeb4]
add edi, edi
call fcn.00423370
xor ecx, ecx
push 2
pop edx
mov eax, edi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042337b
cmp dword [ebp - 0xc28], 8
pop ecx
mov dword [ebp - 0xeb4], eax
mov eax, dword [ebp - 0xc3c]
pop ecx
jae 0x405cd7
lea eax, [ebp - 0xc3c]
push eax
push edi
push dword [ebp - 0xeb4]
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
mov ecx, edi
sub ecx, eax
cmp ecx, 2
jbe 0x405c97
mov eax, dword [ebp - 0xeb4]
mov esi, eax
mov dword [ebp - 0xeb8], esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405d00
jmp 0x405e12
push 0x5856d0
push esi
call fcn.005233e6
mov edi, eax
pop ecx
pop ecx
test edi, edi
je 0x405df2
xor eax, eax
mov word [edi], ax
mov eax, esi
add edi, 2
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x405d34
sub eax, ecx
mov ecx, dword [ebp - 0xeb8]
sar eax, 1
lea esi, [ebp - 0xd58]
call fcn.00409cec
mov ecx, edi
test edi, edi
jne 0x405d5f
mov ecx, 0x585d54
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x405d64
sub eax, esi
sar eax, 1
lea esi, [ebp - 0xc94]
call fcn.00409cec
lea eax, [ebp - 0xd58]
push eax
lea esi, [ebp - 0xeb0]
call fcn.00408277
lea eax, [ebp - 0xe94]
push eax
lea ecx, [ebp - 0xd58]
mov byte [ebp - 4], 0xa
call fcn.0040bc04
mov edi, dword [ebp - 0xebc]
mov ecx, esi
lea edx, [edi + 0x18]
mov byte [ebp - 4], 0xb
call fcn.0040bb14
push eax
lea esi, [ebp - 0xecc]
lea eax, [edi + 0x18]
call fcn.0040b310
lea eax, [ebp - 0xe94]
push eax
mov byte [ebp - 4], 0xc
call fcn.00406618
push 1
xor edi, edi
lea esi, [ebp - 0xeb0]
mov byte [ebp - 4], 9
call fcn.00409659
mov esi, dword [ebp - 0xeb8]
mov eax, dword [ebp - 0xec0]
lea esi, [esi + eax*2 + 2]
mov eax, esi
mov dword [ebp - 0xeb8], esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405e07
sub eax, edx
sar eax, 1
mov dword [ebp - 0xec0], eax
test eax, eax
jg 0x405d10
push dword [ebp - 0xeb4]
call fcn.00423370
pop ecx
lea eax, [ebp - 0xd58]
push eax
mov byte [ebp - 4], 8
call fcn.00406618
cmp dword [ebp - 0xc28], 8
mov eax, dword [ebp - 0xc3c]
jae 0x405e55
lea eax, [ebp - 0xc3c]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
push eax
push 0x800
lea eax, [ebp - 0xc20]
push eax
push 0x5851d4
push str.EstimatedSize
mov edi, str.Size
push edi
call esi
push 0xa
lea eax, [ebp - 0xec8]
push eax
lea eax, [ebp - 0xc20]
push eax
call fcn.00525c0b
mov ecx, dword [ebp - 0xebc]
add esp, 0xc
cmp dword [ebp - 0xc28], 8
mov dword [ecx + 0x58], eax
mov eax, dword [ebp - 0xc3c]
mov dword [ecx + 0x5c], edx
jae 0x405eb3
lea eax, [ebp - 0xc3c]
push eax
push 0x800
lea eax, [ebp - 0xc20]
push eax
push 0x585d54
push str.VersionPath
push edi
call esi
lea eax, [ebp - 0xc20]
lea ecx, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x405ed6
mov esi, dword [ebp - 0xebc]
sub eax, ecx
sar eax, 1
add esi, 0xd0
lea ecx, [ebp - 0xc20]
call fcn.00409cec
xor ecx, ecx
push 2
pop edx
mov eax, ebx
mul edx
seto cl
mov edi, ebx
neg ecx
or ecx, eax
push ecx
call fcn.0042337b
cmp dword [ebp - 0xc28], 8
mov dword [ebp - 0xeb4], eax
mov eax, dword [ebp - 0xc3c]
pop ecx
jae 0x405f30
lea eax, [ebp - 0xc3c]
push eax
push ebx
push dword [ebp - 0xeb4]
mov esi, str.Property
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
mov ecx, ebx
jmp 0x405f99
push dword [ebp - 0xeb4]
add edi, edi
call fcn.00423370
xor ecx, ecx
push 2
pop edx
mov eax, edi
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042337b
cmp dword [ebp - 0xc28], 8
pop ecx
mov dword [ebp - 0xeb4], eax
mov eax, dword [ebp - 0xc3c]
pop ecx
jae 0x405f88
lea eax, [ebp - 0xc3c]
push eax
push edi
push dword [ebp - 0xeb4]
push esi
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
mov ecx, edi
sub ecx, eax
cmp ecx, 2
jbe 0x405f48
mov eax, dword [ebp - 0xeb4]
mov dword [ebp - 0xeb8], eax
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x405faf
sub eax, edx
sar eax, 1
mov dword [ebp - 0xebc], eax
mov edi, 0x585d54
test eax, eax
jle 0x406093
mov esi, dword [ebp - 0xeb8]
push 0x5856d0
push esi
call fcn.005233e6
pop ecx
pop ecx
test eax, eax
je 0x406061
xor ecx, ecx
mov word [eax], cx
inc eax
inc eax
mov dword [ebp - 0xec0], eax
jne 0x405ffd
mov dword [ebp - 0xec0], edi
test esi, esi
jne 0x406003
mov esi, edi
push esi
lea esi, [ebp - 0xdac]
call fcn.0040829d
push dword [ebp - 0xec0]
lea esi, [ebp - 0xd90]
mov byte [ebp - 4], 0xd
call fcn.0040829d
mov edx, dword [ebp - 0xec4]
lea ecx, [ebp - 0xdac]
mov byte [ebp - 4], 0xe
call fcn.0040baa0
push eax
push dword [ebp - 0xec4]
lea esi, [ebp - 0xecc]
call fcn.0040b16c
lea eax, [ebp - 0xdac]
push eax
mov byte [ebp - 4], 8
call fcn.00404616
mov esi, dword [ebp - 0xeb8]
mov eax, dword [ebp - 0xebc]
lea esi, [esi + eax*2 + 2]
mov eax, esi
mov dword [ebp - 0xeb8], esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x406076
sub eax, edx
sar eax, 1
mov dword [ebp - 0xebc], eax
test eax, eax
jg 0x405fd7
push dword [ebp - 0xeb4]
call fcn.00423370
pop ecx
push edi
lea esi, [ebp - 0xd40]
call fcn.0040829d
push edi
lea esi, [ebp - 0xd24]
mov byte [ebp - 4], 0xf
call fcn.0040829d
push edi
lea esi, [ebp - 0xd08]
mov byte [ebp - 4], 0x10
call fcn.0040829d
push edi
lea esi, [ebp - 0xcec]
mov byte [ebp - 4], 0x11
call fcn.0040829d
push edi
lea esi, [ebp - 0xcd0]
mov byte [ebp - 4], 0x12
call fcn.0040829d
push edi
lea esi, [ebp - 0xcb4]
mov byte [ebp - 4], 0x13
call fcn.0040829d
push edi
lea esi, [ebp - 0xc98]
mov byte [ebp - 4], 0x14
call fcn.0040829d
xor ecx, ecx
push 2
pop edx
mov eax, ebx
mul edx
seto cl
mov byte [ebp - 4], 0x15
mov dword [ebp - 0xec4], ebx
neg ecx
or ecx, eax
push ecx
call fcn.0042337b
cmp dword [ebp - 0xc28], 8
mov dword [ebp - 0xeb4], eax
mov eax, dword [ebp - 0xc3c]
pop ecx
jae 0x406147
lea eax, [ebp - 0xc3c]
mov esi, dword [sym.imp.KERNEL32.dll_GetPrivateProfileSectionW]
push eax
push ebx
push dword [ebp - 0xeb4]
mov edi, 0x58569c
push edi
call esi
sub ebx, eax
cmp ebx, 2
ja 0x4061be
mov ebx, dword [ebp - 0xec4]
push dword [ebp - 0xeb4]
add ebx, ebx
call fcn.00423370
xor ecx, ecx
push 2
pop edx
mov eax, ebx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0042337b
cmp dword [ebp - 0xc28], 8
pop ecx
mov dword [ebp - 0xeb4], eax
mov eax, dword [ebp - 0xc3c]
pop ecx
jae 0x4061aa
lea eax, [ebp - 0xc3c]
push eax
push ebx
push dword [ebp - 0xeb4]
push edi
call esi
mov ecx, ebx
sub ecx, eax
cmp ecx, 2
jbe 0x40616a
mov eax, dword [ebp - 0xeb4]
mov ebx, eax
mov dword [ebp - 0xebc], ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x4061cf
sub eax, edx
sar eax, 1
mov dword [ebp - 0xec4], eax
test eax, eax
jle 0x406428
mov esi, 0x585698
push 0x5856d0
push ebx
call fcn.005233e6
pop ecx
pop ecx
test eax, eax
je 0x4063f6
xor ecx, ecx
mov word [eax], cx
add eax, 2
push esi
push eax
mov dword [ebp - 0xeb8], eax
call fcn.005233e6
pop ecx
pop ecx
test eax, eax
je 0x406406
xor ecx, ecx
mov word [eax], cx
add eax, 2
push esi
push eax
mov edi, eax
call fcn.005233e6
pop ecx
pop ecx
test eax, eax
je 0x406406
xor ecx, ecx
mov word [eax], cx
add eax, 2
push esi
push eax
mov dword [ebp - 0xec0], eax
call fcn.005233e6
pop ecx
pop ecx
test eax, eax
je 0x406406
xor ecx, ecx
mov word [eax], cx
add eax, 2
mov dword [ebp - 0xec8], eax
test ebx, ebx
je 0x40627a
mov ecx, ebx
mov ebx, 0x585d54
jmp 0x406281
mov ebx, 0x585d54
mov ecx, ebx
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x406286
sub eax, esi
sar eax, 1
lea esi, [ebp - 0xd40]
call fcn.00409cec
cmp dword [ebp - 0xeb8], 0
mov ecx, dword [ebp - 0xeb8]
jne 0x4062b1
mov ecx, ebx
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x4062b6
sub eax, esi
sar eax, 1
lea esi, [ebp - 0xd24]
call fcn.00409cec
mov ecx, edi
test edi, edi
jne 0x4062d8
mov ecx, ebx
mov eax, ecx
push 2
lea esi, [eax + 2]
pop edi
mov dx, word [eax]
add eax, edi
test dx, dx
jne 0x4062e0
sub eax, esi
sar eax, 1
lea esi, [ebp - 0xd08]
call fcn.00409cec
mov ecx, dword [ebp - 0xec0]
test ecx, ecx
jne 0x406305
mov ecx, ebx
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
add eax, edi
test dx, dx
jne 0x40630a
sub eax, esi
sar eax, 1
lea esi, [ebp - 0xcec]
call fcn.00409cec
mov ecx, dword [ebp - 0xec8]
test ecx, ecx
jne 0x40632f
mov ecx, ebx
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
add eax, edi
test dx, dx
jne 0x406334
sub eax, esi
sar eax, 1
lea esi, [ebp - 0xcd0]
call fcn.00409cec
mov ecx, dword [ebp - 0xeb8]
test ecx, ecx
jne 0x406359
mov ecx, ebx
mov eax, ecx
lea esi, [eax + 2]
mov dx, word [eax]
add eax, edi
test dx, dx
jne 0x40635e
sub eax, esi
sar eax, 1
lea esi, [ebp - 0xd24]
call fcn.00409cec
mov eax, dword [ebp - 0xebc]
test eax, eax
jne 0x406383
mov eax, ebx
push eax
lea esi, [ebp - 0xe98]
call fcn.0040829d
lea eax, [ebp - 0xe7c]
push eax
lea ecx, [ebp - 0xd40]
mov byte [ebp - 4], 0x16
call fcn.0040bca9
mov edx, dword [ebp - 0xed0]
mov ecx, esi
mov byte [ebp - 4], 0x17
call fcn.0040bb8c
push eax
mov eax, dword [ebp - 0xed0]
lea esi, [ebp - 0xedc]
call fcn.0040b254
lea eax, [ebp - 0xe7c]
push eax
mov byte [ebp - 4], 0x18
call fcn.004066dd
push 1
xor edi, edi
lea esi, [ebp - 0xe98]
mov byte [ebp - 4], 0x15
call fcn.00409659
mov ebx, dword [ebp - 0xebc]
mov esi, 0x585698
mov eax, dword [ebp - 0xec4]
lea ebx, [ebx + eax*2 + 2]
mov dword [ebp - 0xebc], ebx
mov eax, ebx
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x40640b
sub eax, edx
sar eax, 1
mov dword [ebp - 0xec4], eax
test eax, eax
jg 0x4061f1
push dword [ebp - 0xeb4]
call fcn.00423370
pop ecx
lea eax, [ebp - 0xd40]
push eax
mov byte [ebp - 4], 8
call fcn.004066dd
cmp dword [ebp - 0xc28], 8
mov eax, dword [ebp - 0xc3c]
jae 0x406459
lea eax, [ebp - 0xc3c]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
push 1
xor edi, edi
lea esi, [ebp - 0xc3c]
mov byte [ebp - 4], 5
call fcn.00409659
push 1
lea esi, [ebp - 0xc74]
mov byte [ebp - 4], 4
call fcn.00409659
or dword [ebp - 4], 0xffffffff
push 1
lea esi, [ebp - 0xc58]
call fcn.00409659
call fcn.00527c65
ret 4