Function at 0x461870
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x50263d
mov eax, dword fs:[0]
push eax
sub esp, 0xc30
mov eax, dword [0x559680]
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 eax, dword [0x55aac0]
mov ebx, dword [ebp + 8]
lea ecx, [eax + 1]
imul eax, ecx
cdq
mov ecx, 0xd
idiv ecx
mov dword [ebp - 0xc38], ebx
mov dword [ebp - 0xc24], ebx
mov dword [ebp - 0xc3c], 0
cmp edx, 8
jne 0x461938
xor esi, esi
call fcn.004dff94
movd xmm0, eax
cvtdq2pd xmm0, xmm0
inc esi
movsd qword [ebp + esi*8 - 0xc20], xmm0
cmp esi, 0x81
jb 0x4618d1
xor ecx, ecx
mov eax, 0x80
cmp ecx, eax
jge 0x46192f
jmp 0x461900
movsd xmm0, qword [ebp + eax*8 - 0xc18]
movsd xmm1, qword [ebp + eax*8 - 0xc20]
comisd xmm0, xmm1
jbe 0x46192a
movsd qword [ebp + eax*8 - 0xc18], xmm1
movsd qword [ebp + eax*8 - 0xc20], xmm0
dec eax
cmp eax, ecx
jg 0x461900
inc ecx
cmp ecx, 0x81
jl 0x4618f2
mov dword [ebp - 0xc34], 0
mov dword [ebp - 0xc30], 0
mov dword [ebp - 0xc2c], 0
push 1
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0xc34]
mov dword [ebp - 4], 0
call fcn.0040abf0
test eax, eax
je 0x4619f4
push 1
push str.SOFTWAREMicrosoftWindows_NTCurrentVersion
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0xc34]
call fcn.0040abf0
test eax, eax
je 0x4619f4
mov eax, dword [0x5591b8]
mov ecx, 0x5591b8
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebx], eax
mov eax, 0x516b98
mov byte [ebp - 4], 1
test eax, 0xffff0000
jne 0x4619d2
movzx esi, ax
push 0
push esi
call fcn.00402e50
add esp, 8
test eax, eax
je 0x4619e0
push esi
push eax
mov ecx, ebx
call fcn.00406a90
jmp 0x4619e0
push 3
push 0x516b98
mov ecx, ebx
call fcn.00409230
mov ecx, dword [ebp - 0xc34]
test ecx, ecx
je 0x461dea
push ecx
jmp 0x461de4
xor eax, eax
push 0x7fe
push eax
mov word [ebp - 0x810], ax
lea eax, [ebp - 0x80e]
push eax
call fcn.004e0ad0
add esp, 0xc
call fcn.004620a0
test al, al
jne 0x461a32
push 0xdf
push 0xde
push str._d__d_n
call fcn.004e09e9
add esp, 0xc
mov eax, dword [0x5591b8]
mov ecx, 0x5591b8
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xc20], eax
mov eax, 0x516b98
mov byte [ebp - 4], 2
test eax, 0xffff0000
jne 0x461a79
movzx esi, ax
push 0
push esi
call fcn.00402e50
add esp, 8
test eax, eax
je 0x461a8b
push esi
push eax
lea ecx, [ebp - 0xc20]
call fcn.00406a90
jmp 0x461a8b
push 3
push 0x516b98
lea ecx, [ebp - 0xc20]
call fcn.00409230
mov edi, dword [ebp - 0xc34]
mov ebx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [ebp - 0xc1c]
push eax
lea eax, [ebp - 0x810]
push eax
lea eax, [ebp - 0xc28]
push eax
push 0
push str.CurrentVersion
push edi
mov byte [ebp - 4], 3
mov dword [ebp - 0xc1c], 0x800
call ebx
or esi, 0xffffffff
test eax, eax
jne 0x461cbc
mov eax, dword [ebp - 0xc28]
cmp eax, 1
je 0x461ae3
cmp eax, 2
jne 0x461cbc
mov eax, dword [ebp - 0xc1c]
test eax, eax
je 0x461b07
test al, 1
jne 0x461cbc
shr eax, 1
cmp word [ebp + eax*2 - 0x812], 0
je 0x461b10
jmp 0x461cbc
xor eax, eax
mov word [ebp - 0x810], ax
lea edx, [ebp - 0x810]
lea ecx, [edx + 2]
lea esp, [esp]
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x461b20
sub edx, ecx
sar edx, 1
push edx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0xc20]
call fcn.00409230
mov eax, dword [0x5591b8]
mov ecx, 0x5591b8
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0xc1c], eax
mov eax, 0x517098
mov byte [ebp - 4], 4
test eax, 0xffff0000
jne 0x461bfb
movzx esi, ax
push 0
push esi
call fcn.00402e50
add esp, 8
test eax, eax
je 0x461b8b
push esi
push eax
lea ecx, [ebp - 0xc1c]
call fcn.00406a90
or esi, 0xffffffff
lea eax, [ebp - 0xc28]
push eax
lea eax, [ebp - 0x810]
push eax
lea eax, [ebp - 0xc24]
push eax
push 0
push str.CurrentBuild
push edi
mov byte [ebp - 4], 5
mov dword [ebp - 0xc28], 0x800
call ebx
test eax, eax
jne 0x461c99
mov eax, dword [ebp - 0xc24]
cmp eax, 1
je 0x461bd7
cmp eax, 2
jne 0x461c99
mov eax, dword [ebp - 0xc28]
test eax, eax
je 0x461c12
test al, 1
jne 0x461c99
shr eax, 1
cmp word [ebp + eax*2 - 0x812], 0
je 0x461c1b
jmp 0x461c99
push 1
push 0x517098
lea ecx, [ebp - 0xc1c]
call fcn.00409230
jmp 0x461b8e
xor eax, eax
mov word [ebp - 0x810], ax
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x461c24
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0xc1c]
call fcn.00409230
lea eax, [ebp - 0xc1c]
push eax
lea eax, [ebp - 0xc24]
push 0x5171a0
push eax
call fcn.00402ac0
add esp, 0xc
mov eax, dword [eax]
lea ecx, [ebp - 0xc20]
push dword [eax - 0xc]
mov byte [ebp - 4], 6
push eax
call fcn.00402ce0
mov edx, dword [ebp - 0xc24]
add edx, 0xfffffff0
mov byte [ebp - 4], 5
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x461c99
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0xc1c]
add edx, 0xfffffff0
mov byte [ebp - 4], 3
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x461cbc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
test edi, edi
je 0x461ccf
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor edi, edi
mov dword [ebp - 0xc34], edi
mov ecx, dword [0x55aac0]
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
mov esi, 0x15
idiv esi
mov dword [ebp - 0xc30], 0
cmp edx, 0xb
jne 0x461d50
movsd xmm3, qword [0x50e600]
movsd xmm6, qword [0x50e608]
movsd xmm5, qword [0x50e5f8]
movd xmm4, ecx
xorps xmm2, xmm2
cvtdq2pd xmm4, xmm4
jmp 0x461d20
addsd xmm2, xmm3
movapd xmm0, xmm2
mulsd xmm0, xmm2
comisd xmm0, xmm4
jbe 0x461d3a
subsd xmm2, xmm3
divsd xmm3, xmm6
movapd xmm1, xmm2
mulsd xmm1, xmm2
movapd xmm0, xmm4
subsd xmm0, xmm1
comisd xmm0, xmm5
ja 0x461d20
mov esi, dword [ebp - 0xc20]
add esi, 0xfffffff0
mov ecx, dword [esi]
mov eax, dword [ecx]
call dword [eax + 0x10]
cmp dword [esi + 0xc], 0
lea edx, [esi + 0xc]
mov ecx, eax
jl 0x461d7c
cmp ecx, dword [esi]
jne 0x461d7c
mov ebx, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x461db9
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov ebx, eax
test ebx, ebx
jne 0x461d90
call fcn.00409540
mov eax, dword [esi + 4]
mov dword [ebx + 4], eax
mov ecx, dword [esi + 4]
lea eax, [ecx*2 + 2]
push eax
lea eax, [esi + 0x10]
push eax
lea eax, [ecx*2 + 2]
push eax
lea eax, [ebx + 0x10]
push eax
call fcn.004e00c8
add esp, 0x10
lea eax, [ebx + 0x10]
mov ebx, dword [ebp - 0xc38]
mov byte [ebp - 4], 0
mov dword [ebx], eax
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x461ddf
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
test edi, edi
je 0x461dea
push edi
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov eax, ebx
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.004df4f4
mov esp, ebp
pop ebp
ret