Function at 0x407750
Capabilities:
Check os version
Delete registry value
Persist via windows service
Set registry value

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xdf4
mov eax, dword [0x446044]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor ebx, ebx
push 0x93
lea eax, [ebp - 0x9f]
push ebx
push eax
mov byte [ebp - 0xa0], bl
call fcn.00426670
add esp, 0xc
push 0x115
lea ecx, [ebp - 0x4bf]
push ebx
push ecx
mov byte [ebp - 0x4c0], bl
call fcn.00426670
add esp, 0xc
push 0x7fe
lea eax, [ebp - 0xcbe]
xor edx, edx
push ebx
push eax
mov word [ebp - 0xcc0], dx
call fcn.00426670
add esp, 0xc
push 0xff
lea ecx, [ebp - 0x3a7]
push ebx
push ecx
mov byte [ebp - 0x3a8], bl
call fcn.00426670
add esp, 0xc
push 0x206
lea eax, [ebp - 0x2a6]
xor edx, edx
push ebx
push eax
mov byte [ebp - 0xde1], bl
mov byte [ebp - 0xde2], bl
mov word [ebp - 0x2a8], dx
call fcn.00426670
add esp, 0xc
lea ecx, [ebp - 0xdf0]
push ecx
lea edx, [ebp - 0xde8]
push edx
push ebx
push 0xf003f
push ebx
push ebx
push ebx
push str.systemcurrentcontrolset_servicesWin_Win7
push reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0xdf0], ebx
call dword [sym.imp.ADVAPI32.dll_RegCreateKeyExW]
test eax, eax
je 0x407845
xor eax, eax
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0041e7be
mov esp, ebp
pop ebp
ret
push 0x11c
lea eax, [ebp - 0xde0]
push ebx
push eax
mov dword [ebp - 0xdec], 3
call fcn.00426670
add esp, 0xc
lea ecx, [ebp - 0xde0]
push ecx
mov dword [ebp - 0xde0], 0x11c
call dword [sym.imp.KERNEL32.dll_GetVersionExW]
cmp dword [ebp - 0xddc], 6
mov ecx, dword [ebp - 0xde8]
mov edi, dword [sym.imp.ADVAPI32.dll_RegSetValueExW]
push 4
lea eax, [ebp - 0xdec]
push eax
push 4
push ebx
sbb edx, edx
push str.Start
add edx, 3
push ecx
mov dword [ebp - 0xdec], edx
call edi
xor eax, eax
nop
movzx ecx, word [eax + 0xc97d34]
mov word [ebp + eax - 0x2a8], cx
add eax, 2
cmp cx, bx
jne 0x4078b0
lea eax, [ebp - 0x2a8]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4078d0
mov ecx, dword [ebp - 0xde8]
sub eax, edx
sar eax, 1
lea edx, [eax + eax + 2]
push edx
lea eax, [ebp - 0x2a8]
push eax
push 1
push ebx
push str.Version
push ecx
call edi
cmp dword [0xc9a814], ebx
je 0x40794d
push 0x439c60
call fcn.00403960
add esp, 4
xor eax, eax
jmp 0x407920
movzx ecx, word [eax + str.4901_5BVH_29ZM]
mov word [ebp + eax - 0x2a8], cx
add eax, 2
cmp cx, bx
jne 0x407920
lea eax, [ebp - 0x2a8]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x407940
jmp 0x4079ab
mov eax, 0xc99580
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x407955
sub eax, edx
sar eax, 1
cmp eax, 0xe
jne 0x4079ce
push 0x4398c8
call fcn.00403960
add esp, 4
xor eax, eax
jmp 0x407980
movzx ecx, word [eax + 0xc99580]
mov word [ebp + eax - 0x2a8], cx
add eax, 2
cmp cx, bx
jne 0x407980
lea eax, [ebp - 0x2a8]
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x4079a0
mov ecx, dword [ebp - 0xde8]
sub eax, edx
sar eax, 1
lea edx, [eax + eax + 2]
push edx
lea eax, [ebp - 0x2a8]
push eax
push 1
push ebx
push str.SerialNumber
push ecx
call edi
jmp 0x4079db
push 0x439c8c
call fcn.00403960
add esp, 4
mov edx, dword [ebp - 0xde8]
push str.ConsolePublicKey
push edx
call dword [sym.imp.ADVAPI32.dll_RegDeleteValueW]
push 0x439cb0
call fcn.00403960
mov eax, 0xc995a0
add esp, 4
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x407a02
sub eax, edx
sar eax, 1
cmp eax, 0x12a
jne 0x407a4e
push 0x439940
call fcn.00403960
lea eax, [ebp - 0xa0]
add esp, 4
push eax
call fcn.00403f10
add esp, 4
test eax, eax
je 0x407a41
mov byte [ebp - 0xde1], 1
jmp 0x407a5b
mov byte [ebp - 0xde1], bl
push 0x439968
jmp 0x407a53
push str._quP_n0RlQ
call fcn.00403960
add esp, 4
mov eax, 0xc997f8
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x407a63
sub eax, edx
sar eax, 1
je 0x407aaa
push 0x4399a8
call fcn.00403960
lea ecx, [ebp - 0x4c0]
add esp, 4
push ecx
call fcn.004042e0
add esp, 4
test eax, eax
je 0x407a9d
mov byte [ebp - 0xde2], 1
jmp 0x407ab7
mov byte [ebp - 0xde2], bl
push 0x4399d0
jmp 0x407aaf
push str._quP_n0R
call fcn.00403960
add esp, 4
cmp byte [ebp - 0xde1], 1
jne 0x407add
mov eax, dword [ebp - 0xde8]
push 0x94
lea edx, [ebp - 0xa0]
push edx
push 3
push ebx
push str.ConsolePublicKey
push eax
call edi
cmp byte [ebp - 0xde2], 1
jne 0x407b03
mov edx, dword [ebp - 0xde8]
push 0x114
lea ecx, [ebp - 0x4c0]
push ecx
push 3
push ebx
push str.SignedPublicKey
push edx
call edi
lea esi, [ebp - 0xcc0]
call fcn.004045c0
mov eax, esi
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x407b13
sub eax, edx
sar eax, 1
cmp eax, 0x1f4
jbe 0x407b5e
push str.uP_n_tg
call fcn.00403960
lea eax, [ebp - 0x3a8]
add esp, 4
push eax
lea ecx, [ebp - 0xcc0]
call fcn.004040e0
add esp, 4
test eax, eax
jne 0x407b87
push 0x439d24
call fcn.00403960
add esp, 4
jmp 0x407ba4
lea ecx, [ebp - 0xcc0]
push ecx
push str._quP_n0RI
push 0xc97518
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
push 0xc97518
call fcn.00403960
add esp, 4
jmp 0x407ba4
mov eax, dword [ebp - 0xde8]
push pe_nt_image_headers32
lea edx, [ebp - 0x3a8]
push edx
push 3
push ebx
push str.ConsoleIdentify
push eax
call edi
mov ecx, dword [ebp - 0xde8]
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
mov eax, 1
pop ebx
call fcn.0041e7be
mov esp, ebp
pop ebp
ret