Function at 0x412ca0
Capabilities:
Set registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x451548
mov eax, dword fs:[0]
push eax
sub esp, 0x48
mov eax, dword [0x468738]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov eax, dword [ebp + 8]
mov esi, ecx
xor ebx, ebx
mov dword [ebp - 0x3c], esi
mov dword [ebp - 0x38], ebx
mov dword [ebp - 4], ebx
xor ecx, ecx
mov dword [ebp - 0x1c], 7
mov dword [ebp - 0x20], ebx
mov word [ebp - 0x30], cx
mov dword [ebp - 0x50], ebx
mov dword [ebp - 0x4c], ebx
mov dword [ebp - 0x48], ebx
mov byte [ebp - 4], 2
mov dword [ebp - 0x40], 0x1000
cmp byte [esi + 0x42], cl
je 0x412f81
push ebx
lea edx, [ebp - 0x38]
push edx
push ebx
push 0xf003f
push ebx
push ebx
push ebx
push eax
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x38], ebx
mov dword [ebp - 0x34], ebx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
cmp eax, ebx
jne 0x412f6f
push 0x4585e4
call fcn.00402130
test eax, eax
je 0x412d4a
mov ecx, 0x4585e4
call fcn.00402200
jmp 0x412d56
mov edx, 0x4585e8
mov ecx, esi
call fcn.00410c90
mov ecx, eax
lea edi, [ecx + 2]
jmp 0x412d60
mov dx, word [ecx]
add ecx, 2
cmp dx, bx
jne 0x412d60
mov edx, dword [ebp - 0x38]
mov esi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
sub ecx, edi
sar ecx, 1
add ecx, ecx
push ecx
push eax
push 1
push ebx
push str.InstallPath
push edx
call esi
lea eax, [ebp - 0x30]
push eax
call fcn.00424340
mov edx, dword [ebp - 0x30]
add esp, 4
cmp dword [ebp - 0x1c], 8
jae 0x412d9f
lea edx, [ebp - 0x30]
mov eax, edx
lea edi, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x412da4
sub eax, edi
sar eax, 1
lea ecx, [eax + eax]
push ecx
push edx
mov edx, dword [ebp - 0x38]
push 1
push ebx
push str.Version
push edx
call esi
mov eax, dword [ebp - 0x3c]
mov edx, 0x457de4
cmp dword [eax + 0x38], ebx
jne 0x412dd8
mov edx, 0x457dec
mov eax, edx
lea edi, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x412de0
sub eax, edi
sar eax, 1
lea ecx, [eax + eax]
push ecx
push edx
mov edx, dword [ebp - 0x38]
push 1
push ebx
push str.Reboot
push edx
call esi
mov eax, dword [ebp - 0x3c]
mov edx, str.success
cmp dword [eax + 0x3c], ebx
je 0x412e14
mov edx, str.failure
mov eax, edx
lea edi, [eax + 2]
lea esp, [esp]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x412e20
sub eax, edi
sar eax, 1
lea ecx, [eax + eax]
push ecx
push edx
mov edx, dword [ebp - 0x38]
push 1
push ebx
push str.Install
push edx
call esi
mov ecx, dword [0x46adb8]
add ecx, 0xa38
mov eax, ecx
lea edx, [eax + 2]
mov di, word [eax]
add eax, 2
cmp di, bx
jne 0x412e53
sub eax, edx
sar eax, 1
add eax, eax
push eax
push ecx
mov ecx, dword [ebp - 0x38]
push 1
push ebx
push 0x458648
push ecx
call esi
mov edx, dword [ebp - 0x3c]
mov eax, dword [edx + 0x48]
mov ebx, dword [eax]
cmp ebx, eax
je 0x412eef
cmp byte [ebx + 0x28], 0
je 0x412ea3
cmp dword [ebx + 0x20], 8
lea ecx, [ebx + 0xc]
jb 0x412e93
mov eax, dword [ecx]
jmp 0x412e95
mov eax, ecx
cmp word [eax], 0x40
je 0x412ea3
lea edi, [ebp - 0x50]
call fcn.0040c5c0
cmp byte [ebx + 0x2d], 0
jne 0x412ee7
mov eax, dword [ebx + 8]
cmp byte [eax + 0x2d], 0
jne 0x412ecc
mov ebx, eax
mov eax, dword [ebx]
cmp byte [eax + 0x2d], 0
jne 0x412ee7
lea esp, [esp]
mov ebx, eax
mov eax, dword [ebx]
cmp byte [eax + 0x2d], 0
je 0x412ec0
jmp 0x412ee7
mov eax, dword [ebx + 4]
cmp byte [eax + 0x2d], 0
jne 0x412ee5
cmp ebx, dword [eax + 8]
jne 0x412ee5
mov ebx, eax
mov eax, dword [eax + 4]
cmp byte [eax + 0x2d], 0
je 0x412ed5
mov ebx, eax
mov eax, dword [ebp - 0x3c]
cmp ebx, dword [eax + 0x48]
jne 0x412e80
xor ecx, ecx
mov eax, 0x1000
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.00437647
mov edi, eax
add esp, 4
push edi
lea eax, [ebp - 0x40]
lea ebx, [ebp - 0x50]
call fcn.00436530
mov eax, dword [ebp - 0x40]
mov edx, dword [ebp - 0x38]
add esp, 4
lea ecx, [eax + eax]
push ecx
push edi
push 7
push 0
push str.InstallConfig
push edx
call esi
push edi
call fcn.00439ca1
mov eax, dword [ebp - 0x38]
add esp, 4
test eax, eax
je 0x412f4c
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov esi, dword [ebp - 0x50]
mov dword [ebp - 0x38], 0
test esi, esi
je 0x412f6d
mov edi, dword [ebp - 0x4c]
mov eax, esi
call fcn.0040d660
push esi
call fcn.00438b4b
add esp, 4
xor ebx, ebx
cmp dword [ebp - 0x1c], 8
jb 0x412f81
mov eax, dword [ebp - 0x30]
push eax
call fcn.00438b4b
add esp, 4
mov eax, dword [ebp - 0x38]
xor ecx, ecx
mov dword [ebp - 0x1c], 7
mov dword [ebp - 0x20], ebx
mov word [ebp - 0x30], cx
cmp eax, ebx
je 0x412f9f
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004377c1
mov esp, ebp
pop ebp
ret 4