Function at 0x401639
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x328
push ebx
push edi
lea edx, [ebp - 0x328]
mov edi, eax
mov dword [ebp - 8], 1
call fcn.004020f6
lea eax, [ebp - 0xc]
push eax
lea eax, [ebp - 4]
push eax
mov eax, dword [0x4061a0]
xor ebx, ebx
push ebx
or eax, 0x20006
push eax
push ebx
push ebx
push ebx
lea eax, [ebp - 0x328]
push eax
push reloc.OLEAUT32.dll_SysReAllocString
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExA]
test eax, eax
jne 0x4018b5
mov ecx, dword [0x4061c8]
mov edx, edi
movzx eax, word [ecx]
inc ecx
mov word [edx], ax
inc ecx
inc edx
inc edx
cmp ax, bx
jne 0x401693
push 0x22
pop eax
mov word [ebp - 0x224], ax
mov eax, dword [ebp + 8]
lea edx, [ebp - 0x222]
sub edx, eax
movzx ecx, word [eax]
mov word [edx + eax], cx
inc eax
inc eax
cmp cx, bx
jne 0x4016b7
mov eax, dword [ebp + 8]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, bx
jne 0x4016cb
push esi
sub eax, edx
sar eax, 1
lea esi, [ebp + eax*2 - 0x222]
push 0x22
pop eax
mov word [esi], ax
inc esi
inc esi
cmp dword [0x4061e4], ebx
je 0x40172f
push 0x20
pop eax
push 0x406140
push dword [ebp + 0xc]
mov word [esi], ax
push dword [0x4061e4]
lea eax, [esi + 2]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [ebp - 0x224]
push eax
push str.Config:__s_r_n
call fcn.0040140b
lea eax, [ebp - 0x224]
push eax
call fcn.00403393
add esp, 0x1c
cmp dword [0x4061e8], ebx
je 0x401757
push 0x20
pop eax
mov word [esi], ax
mov ecx, dword [0x4061e8]
add esi, 2
movzx eax, word [ecx]
inc ecx
mov word [esi], ax
inc ecx
inc esi
inc esi
cmp ax, bx
jne 0x401746
jmp 0x40175c
xor eax, eax
mov word [esi], ax
lea eax, [ebp - 0x224]
lea edx, [eax + 2]
mov cx, word [eax]
inc eax
inc eax
cmp cx, bx
jne 0x401765
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
sub eax, edx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
lea eax, [ebp - 0x224]
push eax
push 1
push ebx
push str.UninstallString
push dword [ebp - 4]
call esi
mov eax, dword [ebp + 8]
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
cmp dx, bx
jne 0x401798
sub eax, ecx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
push dword [ebp + 8]
push 1
push ebx
push str.DisplayIcon
push dword [ebp - 4]
call esi
xor eax, eax
mov word [edi], ax
sub edi, dword [ebp + 8]
sar edi, 1
lea eax, [edi + edi + 2]
push eax
push dword [ebp + 8]
push 1
push ebx
push str.InstallLocation
push dword [ebp - 4]
call esi
mov edi, dword [ebp + 8]
call fcn.004023cc
mov eax, edi
lea ecx, [eax + 2]
mov dx, word [eax]
inc eax
inc eax
cmp dx, bx
jne 0x4017e7
sub eax, ecx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
push edi
push 1
push ebx
push str.DisplayName
push dword [ebp - 4]
call esi
mov ecx, dword [0x4061c4]
mov eax, ecx
lea edx, [eax + 2]
mov di, word [eax]
inc eax
inc eax
cmp di, bx
jne 0x401813
sub eax, edx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
push ecx
push 1
push ebx
push str.DisplayVersion
push dword [ebp - 4]
call esi
mov ecx, dword [0x4061dc]
mov eax, ecx
lea edx, [eax + 2]
mov di, word [eax]
inc eax
inc eax
cmp di, bx
jne 0x40183f
sub eax, edx
sar eax, 1
lea eax, [eax + eax + 2]
push eax
push ecx
push 1
push ebx
push str.Publisher
push dword [ebp - 4]
call esi
push 4
pop edi
push edi
lea eax, [ebp - 8]
push eax
push edi
push ebx
push str.NoModify
push dword [ebp - 4]
call esi
push edi
lea eax, [ebp - 8]
push eax
push edi
push ebx
push str.NoRepair
push dword [ebp - 4]
call esi
mov eax, dword [0x406190]
mov ecx, dword [0x406194]
shrd eax, ecx, 0xa
push edi
mov dword [ebp - 8], eax
lea eax, [ebp - 8]
push eax
push edi
push ebx
push str.EstimatedSize
push dword [ebp - 4]
shr ecx, 0xa
call esi
push dword [ebp - 4]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
pop esi
pop edi
pop ebx
leave
ret