Function at 0x405300
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x431956
mov eax, dword fs:[0]
push eax
sub esp, 0x9c
mov eax, dword [0x44200c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
mov ecx, 0x1a
lea edi, [ebp - 0x78]
mov esi, str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall
xorps xmm0, xmm0
rep movsd dword es:[edi], dword [esi]
movq qword [ebp - 0x84], xmm0
mov esi, 0x80000002
mov dword [ebp - 0x84], vtable.CRegistry.0
mov dword [ebp - 0x80], esi
push 0x43f704
mov dword [ebp - 4], 0
push str.kernel32
mov dword [ebp - 0x8c], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x443ba0], eax
test eax, eax
je 0x4053a1
lea eax, [ebp - 0x8c]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [0x443ba0]
cmp dword [ebp - 0x8c], 0
mov ecx, 0x100
mov eax, 0x200
cmovne eax, ecx
lea ecx, [ebp - 0x88]
push ecx
or eax, 0xf003f
push eax
push 0
lea eax, [ebp - 0x78]
push eax
push 0x80000002
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test eax, eax
jne 0x40593c
mov esi, dword [ebp - 0x88]
push 0x43f704
push str.kernel32
mov dword [ebp - 0x80], esi
mov dword [ebp - 0x88], 0
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov dword [0x443ba0], eax
test eax, eax
je 0x405428
lea eax, [ebp - 0x88]
push eax
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [0x443ba0]
cmp dword [ebx + 0x18], 8
lea eax, [ebx + 4]
mov dword [ebp - 0x8c], eax
jb 0x405439
mov eax, dword [eax]
test eax, eax
je 0x4056f0
cmp dword [ebp - 0x88], 0
mov edx, 0x100
mov ecx, 0x200
cmovne ecx, edx
lea edx, [ebp - 0x7c]
push edx
or ecx, 0xf003f
push ecx
push 0
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4056f0
mov eax, dword [ebp - 0x7c]
lea ecx, [ebp - 0xa8]
mov dword [ebp - 0x80], eax
call fcn.00402930
lea eax, [ebp - 0xa8]
mov byte [ebp - 4], 1
push eax
push str.DisplayIcon
lea ecx, [ebp - 0x84]
call fcn.00406c00
cmp dword [ebx + 0x34], 8
jb 0x4054a9
mov ecx, dword [ebx + 0x20]
jmp 0x4054ac
lea ecx, [ebx + 0x20]
cmp dword [ebp - 0x90], 8
lea eax, [ebp - 0xa4]
push ecx
cmovae eax, dword [ebp - 0xa4]
push eax
call fcn.00416a30
add esp, 8
test eax, eax
je 0x4054f2
mov esi, dword [ebp - 0x80]
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
je 0x4054e0
push esi
call edi
xor esi, esi
lea ecx, [ebp - 0xa8]
xor bl, bl
call fcn.00402640
jmp 0x40593e
lea eax, [ebp - 0xa8]
push eax
push str.DisplayName
lea ecx, [ebp - 0x84]
call fcn.00406c00
cmp dword [ebx + 0x50], 8
lea esi, [ebx + 0x3c]
jb 0x405516
mov ecx, dword [esi]
jmp 0x405518
mov ecx, esi
cmp dword [ebp - 0x90], 8
lea eax, [ebp - 0xa4]
push ecx
cmovae eax, dword [ebp - 0xa4]
push eax
call fcn.00416a30
add esp, 8
test eax, eax
je 0x405553
cmp dword [ebx + 0x50], 8
jb 0x405542
mov esi, dword [esi]
push esi
push str.DisplayName
lea ecx, [ebp - 0x84]
call fcn.00406980
lea eax, [ebp - 0xa8]
push eax
push str.DisplayVersion
lea ecx, [ebp - 0x84]
call fcn.00406c00
cmp dword [ebx + 0x6c], 8
lea esi, [ebx + 0x58]
jb 0x405577
mov ecx, dword [esi]
jmp 0x405579
mov ecx, esi
cmp dword [ebp - 0x90], 8
lea eax, [ebp - 0xa4]
push ecx
cmovae eax, dword [ebp - 0xa4]
push eax
call fcn.00416a30
add esp, 8
test eax, eax
je 0x4055b4
cmp dword [ebx + 0x6c], 8
jb 0x4055a3
mov esi, dword [esi]
push esi
push str.DisplayVersion
lea ecx, [ebp - 0x84]
call fcn.00406980
lea eax, [ebp - 0xa8]
push eax
push str.Publisher
lea ecx, [ebp - 0x84]
call fcn.00406c00
cmp dword [ebx + 0xb4], 8
lea esi, [ebx + 0xa0]
jb 0x4055de
mov ecx, dword [esi]
jmp 0x4055e0
mov ecx, esi
cmp dword [ebp - 0x90], 8
lea eax, [ebp - 0xa4]
push ecx
cmovae eax, dword [ebp - 0xa4]
push eax
call fcn.00416a30
add esp, 8
test eax, eax
je 0x40561e
cmp dword [ebx + 0xb4], 8
jb 0x40560d
mov esi, dword [esi]
push esi
push str.Publisher
lea ecx, [ebp - 0x84]
call fcn.00406980
lea eax, [ebp - 0xa8]
push eax
push str.UninstallString
lea ecx, [ebp - 0x84]
call fcn.00406c00
cmp dword [ebx + 0xd0], 8
lea esi, [ebx + 0xbc]
jb 0x405648
mov ecx, dword [esi]
jmp 0x40564a
mov ecx, esi
cmp dword [ebp - 0x90], 8
lea eax, [ebp - 0xa4]
push ecx
cmovae eax, dword [ebp - 0xa4]
push eax
call fcn.00416a30
add esp, 8
test eax, eax
je 0x405688
cmp dword [ebx + 0xd0], 8
jb 0x405677
mov esi, dword [esi]
push esi
push str.UninstallString
lea ecx, [ebp - 0x84]
call fcn.00406980
lea eax, [ebp - 0x88]
mov dword [ebp - 0x88], 0
push eax
push ecx
lea ecx, [ebp - 0x84]
call fcn.004069e0
mov eax, dword [ebx + 0x98]
mov esi, dword [ebp - 0x80]
cmp dword [ebp - 0x88], eax
je 0x4056cf
push 4
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x7c]
push eax
push 4
push 0
push str.EstimatedSize
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov edi, dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test esi, esi
je 0x4056de
push esi
call edi
xor esi, esi
lea ecx, [ebp - 0xa8]
mov bl, 1
call fcn.00402640
jmp 0x40593e
cmp dword [ebx + 0x18], 8
jb 0x4056fb
mov eax, dword [ebx + 4]
jmp 0x4056fe
lea eax, [ebx + 4]
test eax, eax
je 0x405933
lea ecx, [ebp - 0x88]
push ecx
lea ecx, [ebp - 0x7c]
push ecx
push 0
push 0xf003f
push 0
push 0
push 0
push eax
push esi
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
jne 0x405933
cmp dword [ebx + 0x34], 8
mov esi, dword [ebp - 0x7c]
mov dword [ebp - 0x80], esi
jb 0x40573f
mov eax, dword [ebx + 0x20]
jmp 0x405742
lea eax, [ebx + 0x20]
push eax
push str.DisplayIcon
lea ecx, [ebp - 0x84]
call fcn.00406980
cmp dword [ebx + 0x50], 8
jb 0x40575e
mov eax, dword [ebx + 0x3c]
jmp 0x405761
lea eax, [ebx + 0x3c]
push eax
push str.DisplayName
lea ecx, [ebp - 0x84]
call fcn.00406980
cmp dword [ebx + 0x6c], 8
jb 0x40577d
mov eax, dword [ebx + 0x58]
jmp 0x405780
lea eax, [ebx + 0x58]
push eax
push str.DisplayVersion
lea ecx, [ebp - 0x84]
call fcn.00406980
cmp dword [ebx + 0x88], 8
jb 0x40579f
mov eax, dword [ebx + 0x74]
jmp 0x4057a2
lea eax, [ebx + 0x74]
push eax
push str.InstallLocation
lea ecx, [ebp - 0x84]
call fcn.00406980
mov eax, dword [ebx + 0x8c]
push 4
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x7c]
push eax
push 4
push 0
push str.Language
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov eax, dword [ebx + 0x90]
push 4
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x7c]
push eax
push 4
push 0
push str.NoModify
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov eax, dword [ebx + 0x94]
push 4
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x7c]
push eax
push 4
push 0
push str.NoRepair
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov eax, dword [ebx + 0x98]
push 4
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x7c]
push eax
push 4
push 0
push str.EstimatedSize
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
cmp dword [ebx + 0xb4], 8
jb 0x405840
mov eax, dword [ebx + 0xa0]
jmp 0x405846
lea eax, [ebx + 0xa0]
push eax
push str.Publisher
lea ecx, [ebp - 0x84]
call fcn.00406980
cmp dword [ebx + 0xd0], 8
jb 0x405868
mov eax, dword [ebx + 0xbc]
jmp 0x40586e
lea eax, [ebx + 0xbc]
push eax
push str.UninstallString
lea ecx, [ebp - 0x84]
call fcn.00406980
mov eax, dword [ebx + 0xd4]
push 4
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x7c]
push eax
push 4
push 0
push str.VersionMajor
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
mov eax, dword [ebx + 0xd8]
push 4
mov dword [ebp - 0x7c], eax
lea eax, [ebp - 0x7c]
push eax
push 4
push 0
push str.VersionMinor
push esi
call dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
test esi, esi
je 0x4058c4
push esi
call edi
mov dword [ebp - 0x80], 0x80000002
call fcn.00401a50
test eax, eax
lea ecx, [ebp - 0x84]
setne al
movzx eax, al
push eax
lea eax, [ebp - 0x78]
push eax
call fcn.00406900
test eax, eax
je 0x40592e
cmp dword [ebx + 0x18], 8
jb 0x4058fb
mov eax, dword [ebx + 4]
mov dword [ebp - 0x8c], eax
call fcn.00401a50
test eax, eax
lea ecx, [ebp - 0x84]
setne al
movzx eax, al
push eax
push dword [ebp - 0x8c]
call fcn.00406900
mov esi, dword [ebp - 0x80]
test eax, eax
je 0x405933
test esi, esi
je 0x40592a
push esi
call edi
xor esi, esi
mov bl, 1
jmp 0x40593e
mov esi, dword [ebp - 0x80]
jmp 0x40593c
test esi, esi
je 0x40593c
push esi
call edi
xor esi, esi
xor bl, bl
test esi, esi
je 0x405945
push esi
call edi
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004078a0
mov esp, ebp
pop ebp
ret