Function at 0x404230
Capabilities:
Check if file exists
Get common file path
Query or enumerate registry value
Read .ini file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xf28
mov eax, dword [0x4e5114]
xor eax, ebp
mov dword [ebp - 4], eax
push edi
mov dword [ebp - 0xe40], ecx
push 0x208
push 0
lea eax, [ebp - 0x824]
push eax
call fcn.0048e340
add esp, 0xc
push 0x208
push 0
lea ecx, [ebp - 0xc34]
push ecx
call fcn.0048e340
add esp, 0xc
push 0x208
push 0
lea edx, [ebp - 0xa2c]
push edx
call fcn.0048e340
add esp, 0xc
push 0x208
push 0
lea eax, [ebp - 0x20c]
push eax
call fcn.0048e340
add esp, 0xc
push 0x208
push 0
lea ecx, [ebp - 0x414]
push ecx
call fcn.0048e340
add esp, 0xc
push 0x208
push 0
lea edx, [ebp - 0xe3c]
push edx
call fcn.0048e340
add esp, 0xc
mov dword [ebp - 0xf10], 0
push 0
push 0x2b
lea eax, [ebp - 0x824]
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea ecx, [ebp - 0x824]
add ecx, 0xfffffffe
mov dword [ebp - 0xe68], ecx
mov edx, dword [ebp - 0xe68]
mov ax, word [edx + 2]
mov word [ebp - 0xea6], ax
add dword [ebp - 0xe68], 2
cmp word [ebp - 0xea6], 0
jne 0x4042fa
mov edi, dword [ebp - 0xe68]
mov ecx, dword [0x4cfa14]
mov dword [edi], ecx
lea edx, [ebp - 0x824]
add edx, 0xfffffffe
mov dword [ebp - 0xe6c], edx
mov eax, dword [ebp - 0xe6c]
mov cx, word [eax + 2]
mov word [ebp - 0xea8], cx
add dword [ebp - 0xe6c], 2
cmp word [ebp - 0xea8], 0
jne 0x404339
mov edi, dword [ebp - 0xe6c]
mov edx, dword [0x4cfa18]
mov dword [edi], edx
mov eax, dword [0x4cfa1c]
mov dword [edi + 4], eax
mov ecx, dword [0x4cfa20]
mov dword [edi + 8], ecx
mov edx, dword [0x4cfa24]
mov dword [edi + 0xc], edx
mov ax, word [0x4cfa28]
mov word [edi + 0x10], ax
lea ecx, [ebp - 0x824]
add ecx, 0xfffffffe
mov dword [ebp - 0xe70], ecx
mov edx, dword [ebp - 0xe70]
mov ax, word [edx + 2]
mov word [ebp - 0xeaa], ax
add dword [ebp - 0xe70], 2
cmp word [ebp - 0xeaa], 0
jne 0x40439c
mov edi, dword [ebp - 0xe70]
mov ecx, dword [0x4cfa2c]
mov dword [edi], ecx
lea edx, [ebp - 0x824]
add edx, 0xfffffffe
mov dword [ebp - 0xe74], edx
mov eax, dword [ebp - 0xe74]
mov cx, word [eax + 2]
mov word [ebp - 0xee2], cx
add dword [ebp - 0xe74], 2
cmp word [ebp - 0xee2], 0
jne 0x4043db
mov edi, dword [ebp - 0xe74]
mov edx, dword [0x4cfa30]
mov dword [edi], edx
mov eax, dword [0x4cfa34]
mov dword [edi + 4], eax
mov ecx, dword [0x4cfa38]
mov dword [edi + 8], ecx
mov edx, dword [0x4cfa3c]
mov dword [edi + 0xc], edx
mov ax, word [0x4cfa40]
mov word [edi + 0x10], ax
lea ecx, [ebp - 0x824]
add ecx, 0xfffffffe
mov dword [ebp - 0xe78], ecx
mov edx, dword [ebp - 0xe78]
mov ax, word [edx + 2]
mov word [ebp - 0xee0], ax
add dword [ebp - 0xe78], 2
cmp word [ebp - 0xee0], 0
jne 0x40443e
mov edi, dword [ebp - 0xe78]
mov ecx, dword [0x4cfa44]
mov dword [edi], ecx
mov edx, dword [0x4cfa48]
mov dword [edi + 4], edx
mov ax, word [0x4cfa4c]
mov word [edi + 8], ax
lea ecx, [ebp - 0x824]
push ecx
push 0x104
lea edx, [ebp - 0xc34]
push edx
push 0x4cfa50
push 0x4cfa54
push 0x4cfa6c
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea eax, [ebp - 0xc34]
mov dword [ebp - 0xeb0], eax
lea ecx, [ebp - 0x20c]
mov dword [ebp - 0xe7c], ecx
mov edx, dword [ebp - 0xe7c]
mov dword [ebp - 0xf14], edx
mov eax, dword [ebp - 0xeb0]
mov cx, word [eax]
mov word [ebp - 0xe42], cx
mov edx, dword [ebp - 0xe7c]
mov ax, word [ebp - 0xe42]
mov word [edx], ax
mov ecx, dword [ebp - 0xeb0]
add ecx, 2
mov dword [ebp - 0xeb0], ecx
mov edx, dword [ebp - 0xe7c]
add edx, 2
mov dword [ebp - 0xe7c], edx
cmp word [ebp - 0xe42], 0
jne 0x4044cd
lea eax, [ebp - 0x20c]
mov dword [ebp - 0xeb4], eax
lea ecx, [ebp - 0x414]
mov dword [ebp - 0xe80], ecx
mov edx, dword [ebp - 0xe80]
mov dword [ebp - 0xf18], edx
mov eax, dword [ebp - 0xeb4]
mov cx, word [eax]
mov word [ebp - 0xe44], cx
mov edx, dword [ebp - 0xe80]
mov ax, word [ebp - 0xe44]
mov word [edx], ax
mov ecx, dword [ebp - 0xeb4]
add ecx, 2
mov dword [ebp - 0xeb4], ecx
mov edx, dword [ebp - 0xe80]
add edx, 2
mov dword [ebp - 0xe80], edx
cmp word [ebp - 0xe44], 0
jne 0x404539
lea eax, [ebp - 0x20c]
push eax
mov ecx, dword [ebp - 0xe40]
call fcn.004052d0
test eax, eax
je 0x4045c6
lea ecx, [ebp - 0x20c]
push ecx
mov ecx, dword [ebp - 0xe40]
add ecx, 0x40
call fcn.00406c60
lea edx, [ebp - 0x414]
push edx
mov ecx, dword [ebp - 0xe40]
add ecx, 0x70
call fcn.00406c60
jmp 0x404cb4
push 0x208
push 0
lea eax, [ebp - 0x61c]
push eax
call fcn.0048e340
add esp, 0xc
mov ecx, dword [str.SOFTWARE_]
mov dword [ebp - 0x61c], ecx
mov edx, dword [0x4cfa84]
mov dword [ebp - 0x618], edx
mov eax, dword [0x4cfa88]
mov dword [ebp - 0x614], eax
mov ecx, dword [0x4cfa8c]
mov dword [ebp - 0x610], ecx
mov edx, dword [0x4cfa90]
mov dword [ebp - 0x60c], edx
lea eax, [ebp - 0x61c]
add eax, 0xfffffffe
mov dword [ebp - 0xe84], eax
mov ecx, dword [ebp - 0xe84]
mov dx, word [ecx + 2]
mov word [ebp - 0xede], dx
add dword [ebp - 0xe84], 2
cmp word [ebp - 0xede], 0
jne 0x404626
mov edi, dword [ebp - 0xe84]
mov eax, dword [0x4cfa94]
mov dword [edi], eax
mov ecx, dword [0x4cfa98]
mov dword [edi + 4], ecx
mov edx, dword [0x4cfa9c]
mov dword [edi + 8], edx
mov eax, dword [0x4cfaa0]
mov dword [edi + 0xc], eax
mov cx, word [0x4cfaa4]
mov word [edi + 0x10], cx
lea edx, [ebp - 0xec4]
push edx
push 0x20019
push 0
lea eax, [ebp - 0x61c]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov dword [ebp - 0xeb8], eax
cmp dword [ebp - 0xeb8], 0
jne 0x404818
mov dword [ebp - 0xef0], 0x208
lea ecx, [ebp - 0xef0]
push ecx
lea edx, [ebp - 0xe3c]
push edx
push 0
push 0
push str.InstallPath
mov eax, dword [ebp - 0xec4]
push eax
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov dword [ebp - 0xeb8], eax
cmp dword [ebp - 0xeb8], 0
jne 0x404818
lea ecx, [ebp - 0xe3c]
mov dword [ebp - 0xebc], ecx
lea edx, [ebp - 0x20c]
mov dword [ebp - 0xe88], edx
mov eax, dword [ebp - 0xe88]
mov dword [ebp - 0xf1c], eax
mov ecx, dword [ebp - 0xebc]
mov dx, word [ecx]
mov word [ebp - 0xe46], dx
mov eax, dword [ebp - 0xe88]
mov cx, word [ebp - 0xe46]
mov word [eax], cx
mov edx, dword [ebp - 0xebc]
add edx, 2
mov dword [ebp - 0xebc], edx
mov eax, dword [ebp - 0xe88]
add eax, 2
mov dword [ebp - 0xe88], eax
cmp word [ebp - 0xe46], 0
jne 0x404712
lea ecx, [ebp - 0x20c]
mov dword [ebp - 0xec0], ecx
lea edx, [ebp - 0x414]
mov dword [ebp - 0xe8c], edx
mov eax, dword [ebp - 0xe8c]
mov dword [ebp - 0xf20], eax
mov ecx, dword [ebp - 0xec0]
mov dx, word [ecx]
mov word [ebp - 0xe48], dx
mov eax, dword [ebp - 0xe8c]
mov cx, word [ebp - 0xe48]
mov word [eax], cx
mov edx, dword [ebp - 0xec0]
add edx, 2
mov dword [ebp - 0xec0], edx
mov eax, dword [ebp - 0xe8c]
add eax, 2
mov dword [ebp - 0xe8c], eax
cmp word [ebp - 0xe48], 0
jne 0x40477e
lea ecx, [ebp - 0x20c]
push ecx
mov ecx, dword [ebp - 0xe40]
call fcn.004052d0
test eax, eax
je 0x404818
mov edx, dword [ebp - 0xec4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
lea eax, [ebp - 0x20c]
push eax
mov ecx, dword [ebp - 0xe40]
add ecx, 0x40
call fcn.00406c60
lea ecx, [ebp - 0x414]
push ecx
mov ecx, dword [ebp - 0xe40]
add ecx, 0x70
call fcn.00406c60
jmp 0x404cb4
mov edx, dword [ebp - 0xec4]
push edx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
push 0
push 0x26
lea eax, [ebp - 0xa2c]
push eax
push 0
call fcn.0040e440
add esp, 0x10
lea ecx, [ebp - 0xa2c]
add ecx, 0xfffffffe
mov dword [ebp - 0xe90], ecx
mov edx, dword [ebp - 0xe90]
mov ax, word [edx + 2]
mov word [ebp - 0xeea], ax
add dword [ebp - 0xe90], 2
cmp word [ebp - 0xeea], 0
jne 0x404849
mov edi, dword [ebp - 0xe90]
mov ecx, dword [0x4cfac0]
mov dword [edi], ecx
lea edx, [ebp - 0xa2c]
add edx, 0xfffffffe
mov dword [ebp - 0xe94], edx
mov eax, dword [ebp - 0xe94]
mov cx, word [eax + 2]
mov word [ebp - 0xee8], cx
add dword [ebp - 0xe94], 2
cmp word [ebp - 0xee8], 0
jne 0x404888
mov edi, dword [ebp - 0xe94]
mov edx, dword [0x4cfac4]
mov dword [edi], edx
mov eax, dword [str.sWiFi]
mov dword [edi + 4], eax
mov ecx, dword [0x4cfacc]
mov dword [edi + 8], ecx
mov edx, dword [0x4cfad0]
mov dword [edi + 0xc], edx
lea eax, [ebp - 0xa2c]
add eax, 0xfffffffe
mov dword [ebp - 0xe98], eax
mov ecx, dword [ebp - 0xe98]
mov dx, word [ecx + 2]
mov word [ebp - 0xee6], dx
add dword [ebp - 0xe98], 2
cmp word [ebp - 0xee6], 0
jne 0x4048e1
mov edi, dword [ebp - 0xe98]
mov eax, dword [0x4cfad4]
mov dword [edi], eax
lea ecx, [ebp - 0xa2c]
mov dword [ebp - 0xec8], ecx
lea edx, [ebp - 0x20c]
mov dword [ebp - 0xe9c], edx
mov eax, dword [ebp - 0xe9c]
mov dword [ebp - 0xf24], eax
mov ecx, dword [ebp - 0xec8]
mov dx, word [ecx]
mov word [ebp - 0xe4a], dx
mov eax, dword [ebp - 0xe9c]
mov cx, word [ebp - 0xe4a]
mov word [eax], cx
mov edx, dword [ebp - 0xec8]
add edx, 2
mov dword [ebp - 0xec8], edx
mov eax, dword [ebp - 0xe9c]
add eax, 2
mov dword [ebp - 0xe9c], eax
cmp word [ebp - 0xe4a], 0
jne 0x404934
lea ecx, [ebp - 0x20c]
mov dword [ebp - 0xecc], ecx
lea edx, [ebp - 0x414]
mov dword [ebp - 0xea0], edx
mov eax, dword [ebp - 0xea0]
mov dword [ebp - 0xf00], eax
mov ecx, dword [ebp - 0xecc]
mov dx, word [ecx]
mov word [ebp - 0xe4c], dx
mov eax, dword [ebp - 0xea0]
mov cx, word [ebp - 0xe4c]
mov word [eax], cx
mov edx, dword [ebp - 0xecc]
add edx, 2
mov dword [ebp - 0xecc], edx
mov eax, dword [ebp - 0xea0]
add eax, 2
mov dword [ebp - 0xea0], eax
cmp word [ebp - 0xe4c], 0
jne 0x4049a0
lea ecx, [ebp - 0x20c]
push ecx
mov ecx, dword [ebp - 0xe40]
call fcn.004052d0
test eax, eax
je 0x404a2d
lea edx, [ebp - 0x20c]
push edx
mov ecx, dword [ebp - 0xe40]
add ecx, 0x40
call fcn.00406c60
lea eax, [ebp - 0x414]
push eax
mov ecx, dword [ebp - 0xe40]
add ecx, 0x70
call fcn.00406c60
jmp 0x404cb4
lea ecx, [ebp - 0xc34]
mov dword [ebp - 0xe58], ecx
mov edx, dword [ebp - 0xe58]
add edx, 2
mov dword [ebp - 0xef4], edx
mov eax, dword [ebp - 0xe58]
mov cx, word [eax]
mov word [ebp - 0xee4], cx
add dword [ebp - 0xe58], 2
cmp word [ebp - 0xee4], 0
jne 0x404a48
mov edx, dword [ebp - 0xe58]
sub edx, dword [ebp - 0xef4]
sar edx, 1
mov dword [ebp - 0xef8], edx
mov eax, dword [ebp - 0xef8]
mov dword [ebp - 0xefc], eax
cmp dword [ebp - 0xefc], 0
jle 0x404bb2
lea ecx, [ebp - 0xc34]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x404bb2
lea edx, [ebp - 0xc34]
mov dword [ebp - 0xed0], edx
lea eax, [ebp - 0x20c]
mov dword [ebp - 0xea4], eax
mov ecx, dword [ebp - 0xea4]
mov dword [ebp - 0xf04], ecx
mov edx, dword [ebp - 0xed0]
mov ax, word [edx]
mov word [ebp - 0xe4e], ax
mov ecx, dword [ebp - 0xea4]
mov dx, word [ebp - 0xe4e]
mov word [ecx], dx
mov eax, dword [ebp - 0xed0]
add eax, 2
mov dword [ebp - 0xed0], eax
mov ecx, dword [ebp - 0xea4]
add ecx, 2
mov dword [ebp - 0xea4], ecx
cmp word [ebp - 0xe4e], 0
jne 0x404acf
lea edx, [ebp - 0x20c]
mov dword [ebp - 0xed4], edx
lea eax, [ebp - 0x414]
mov dword [ebp - 0xe5c], eax
mov ecx, dword [ebp - 0xe5c]
mov dword [ebp - 0xf28], ecx
mov edx, dword [ebp - 0xed4]
mov ax, word [edx]
mov word [ebp - 0xe50], ax
mov ecx, dword [ebp - 0xe5c]
mov dx, word [ebp - 0xe50]
mov word [ecx], dx
mov eax, dword [ebp - 0xed4]
add eax, 2
mov dword [ebp - 0xed4], eax
mov ecx, dword [ebp - 0xe5c]
add ecx, 2
mov dword [ebp - 0xe5c], ecx
cmp word [ebp - 0xe50], 0
jne 0x404b3b
lea edx, [ebp - 0x20c]
push edx
mov ecx, dword [ebp - 0xe40]
add ecx, 0x40
call fcn.00406c60
lea eax, [ebp - 0x414]
push eax
mov ecx, dword [ebp - 0xe40]
add ecx, 0x70
call fcn.00406c60
jmp 0x404cb4
lea ecx, [ebp - 0xa2c]
mov dword [ebp - 0xed8], ecx
lea edx, [ebp - 0x20c]
mov dword [ebp - 0xe60], edx
mov eax, dword [ebp - 0xe60]
mov dword [ebp - 0xf08], eax
mov ecx, dword [ebp - 0xed8]
mov dx, word [ecx]
mov word [ebp - 0xe52], dx
mov eax, dword [ebp - 0xe60]
mov cx, word [ebp - 0xe52]
mov word [eax], cx
mov edx, dword [ebp - 0xed8]
add edx, 2
mov dword [ebp - 0xed8], edx
mov eax, dword [ebp - 0xe60]
add eax, 2
mov dword [ebp - 0xe60], eax
cmp word [ebp - 0xe52], 0
jne 0x404bd6
lea ecx, [ebp - 0x20c]
mov dword [ebp - 0xedc], ecx
lea edx, [ebp - 0x414]
mov dword [ebp - 0xe64], edx
mov eax, dword [ebp - 0xe64]
mov dword [ebp - 0xf0c], eax
mov ecx, dword [ebp - 0xedc]
mov dx, word [ecx]
mov word [ebp - 0xe54], dx
mov eax, dword [ebp - 0xe64]
mov cx, word [ebp - 0xe54]
mov word [eax], cx
mov edx, dword [ebp - 0xedc]
add edx, 2
mov dword [ebp - 0xedc], edx
mov eax, dword [ebp - 0xe64]
add eax, 2
mov dword [ebp - 0xe64], eax
cmp word [ebp - 0xe54], 0
jne 0x404c42
lea ecx, [ebp - 0x20c]
push ecx
mov ecx, dword [ebp - 0xe40]
add ecx, 0x40
call fcn.00406c60
lea edx, [ebp - 0x414]
push edx
mov ecx, dword [ebp - 0xe40]
add ecx, 0x70
call fcn.00406c60
pop edi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0048b588
mov esp, ebp
pop ebp
ret