Function at 0x4081bd
Capabilities:
Get common file path
Get installed programs
Set registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xfffffee8
push ebx
push esi
push edi
lea esi, [ebp - 0x118]
mov edi, 0x42441c
cmp dword [0x424418], 0
jne 0x4081e4
xor eax, eax
jmp 0x4087db
lea edx, [ebp - 4]
push edx
push 0xf003f
push 0
push 0
push 0x80000000
call sub.ADVAPI32.dll_RegOpenKeyExA
test eax, eax
je 0x40820c
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
xor ebx, ebx
jmp 0x408647
lea eax, [ebp - 8]
push eax
imul edx, ebx, 0x8b
add edx, dword [edi]
push edx
push dword [ebp - 4]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x40823c
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
imul edx, ebx, 0x8b
add edx, dword [edi]
add edx, 5
push edx
call fcn.0041ab64
pop ecx
push eax
imul ecx, ebx, 0x8b
add ecx, dword [edi]
add ecx, 5
push ecx
push 1
push 0
push 0
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x40827a
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x408293
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
lea edx, [ebp - 8]
push edx
imul ecx, ebx, 0x8b
add ecx, dword [edi]
add ecx, 5
push ecx
push dword [ebp - 4]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x4082bf
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x42e88c
push esi
call fcn.0041ab34
add esp, 8
push esi
call fcn.0041ab64
pop ecx
movsx edx, byte [esi + eax - 1]
cmp edx, 0x5c
je 0x4082ec
push 0x42563e
push esi
call fcn.0041aaa4
add esp, 8
imul ecx, ebx, 0x8b
add ecx, dword [edi]
add ecx, 0x37
push ecx
push esi
call fcn.0041aaa4
add esp, 8
lea eax, [ebp - 0xc]
push eax
push 0x425640
push dword [ebp - 8]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x408326
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push esi
call fcn.0041ab64
pop ecx
push eax
push esi
push 1
push 0
push 0
push dword [ebp - 0xc]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x40834e
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 0xc]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x408367
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
lea edx, [ebp - 0xc]
push edx
push 0x42564c
push dword [ebp - 8]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x40838c
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
imul edx, ebx, 0x8b
mov ecx, dword [edi]
test byte [ecx + edx + 0x87], 1
je 0x4084d0
lea eax, [ebp - 0x10]
push eax
push 0x425652
push dword [ebp - 0xc]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x4083c7
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x29
call fcn.00409299
pop ecx
push eax
push esi
call fcn.0041ab34
add esp, 8
push esi
call fcn.0041ab64
pop ecx
push eax
push esi
push 1
push 0
push 0
push dword [ebp - 0x10]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x408401
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
lea edx, [ebp - 0x14]
push edx
push 0x425657
push dword [ebp - 0x10]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x408426
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x42e88c
push esi
call fcn.0041ab34
add esp, 8
push esi
call fcn.0041ab64
pop ecx
movsx edx, byte [esi + eax - 1]
cmp edx, 0x5c
je 0x408453
push 0x42565f
push esi
call fcn.0041aaa4
add esp, 8
imul ecx, ebx, 0x8b
add ecx, dword [edi]
add ecx, 0x37
push ecx
push esi
call fcn.0041aaa4
add esp, 8
push 0x425661
push esi
call fcn.0041aaa4
add esp, 8
push esi
call fcn.0041ab64
pop ecx
push eax
push esi
push 1
push 0
push 0
push dword [ebp - 0x14]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x40849e
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 0x14]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x4084b7
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 0x10]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x4084d0
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
imul edx, ebx, 0x8b
mov ecx, dword [edi]
test byte [ecx + edx + 0x87], 2
je 0x40862d
lea eax, [ebp - 0x10]
push eax
push 0x425668
push dword [ebp - 0xc]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x40850b
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x2a
call fcn.00409299
pop ecx
push eax
push esi
call fcn.0041ab34
add esp, 8
push esi
call fcn.0041ab64
pop ecx
push eax
push esi
push 1
push 0
push 0
push dword [ebp - 0x10]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x408545
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
lea edx, [ebp - 0x14]
push edx
push 0x42566e
push dword [ebp - 0x10]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x40856a
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x42e88c
push esi
call fcn.0041ab34
add esp, 8
push esi
call fcn.0041ab64
pop ecx
movsx edx, byte [esi + eax - 1]
cmp edx, 0x5c
je 0x408597
push 0x425676
push esi
call fcn.0041aaa4
add esp, 8
imul ecx, ebx, 0x8b
add ecx, dword [edi]
add ecx, 0x37
push ecx
push esi
call fcn.0041aaa4
add esp, 8
push 0x425678
push esi
call fcn.0041aaa4
add esp, 8
push esi
call fcn.0041ab64
pop ecx
push eax
push esi
push 1
push 0
push 0
push dword [ebp - 0x14]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x4085e2
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 0x14]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x4085fb
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 0x10]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x408614
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 0xc]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x40862d
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x408646
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
inc ebx
cmp ebx, dword [0x424418]
jl 0x408213
push dword [ebp - 4]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x40866c
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
lea edx, [ebp - 4]
push edx
push 0xf003f
push 0
push 0
push 0x80000002
call sub.ADVAPI32.dll_RegOpenKeyExA
test eax, eax
je 0x408694
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x425681
push esi
call fcn.0041ab34
add esp, 8
push 0x424080
push esi
call fcn.0041aaa4
add esp, 8
lea edx, [ebp - 8]
push edx
push esi
push dword [ebp - 4]
call fcn.00408173
add esp, 0xc
test eax, eax
je 0x4086d1
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x424080
call fcn.0041ab64
pop ecx
push eax
push 0x424080
push 1
push 0
push 0x4256b6
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x408704
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push 0x104
push esi
call sub.KERNEL32.DLL_GetWindowsDirectoryA
push esi
call fcn.0041ab64
pop ecx
movsx edx, byte [esi + eax - 1]
cmp edx, 0x5c
je 0x40872e
push 0x4256c2
push esi
call fcn.0041aaa4
add esp, 8
push 0x42417c
push esi
call fcn.0041aaa4
add esp, 8
push 0x4256c4
push esi
call fcn.0041aaa4
add esp, 8
push 0x42e88c
push esi
call fcn.0041aaa4
add esp, 8
push esi
call fcn.0041ab64
pop ecx
movsx ecx, byte [esi + eax - 1]
cmp ecx, 0x5c
je 0x408777
push 0x4256c9
push esi
call fcn.0041aaa4
add esp, 8
push 0x4241ae
push esi
call fcn.0041aaa4
add esp, 8
push esi
call fcn.0041ab64
pop ecx
push eax
push esi
push 1
push 0
push 0x4256cb
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegSetValueExA
test eax, eax
je 0x4087ad
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 8]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x4087c3
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
push dword [ebp - 4]
call sub.ADVAPI32.dll_RegCloseKey
test eax, eax
je 0x4087d9
call fcn.0040816e
or eax, 0xffffffff
jmp 0x4087db
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret