Function at 0x442410
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4db430
mov eax, dword fs:[0]
push eax
mov eax, 0x1044
call fcn.004b4820
mov eax, dword [0x540c80]
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 dword [ebp - 0x1038], ebx
mov dword [ebp - 0x1030], 0
mov ecx, dword [0x545d90]
mov dword [ebp - 0x1050], ebx
lea eax, [ecx + 1]
lea esi, [ecx + 2]
imul esi, eax
imul esi, ecx
mov eax, esi
cdq
mov ecx, 0xd
idiv ecx
lea edi, [ecx + 0xb]
cmp edx, 4
jne 0x4424c1
mov eax, esi
cdq
mov ecx, 0xc
idiv ecx
cmp edx, 0xb
je 0x4424aa
mov eax, esi
cdq
idiv edi
cmp edx, 3
jne 0x4424aa
push 4
call fcn.004afe4a
mov ecx, eax
mov eax, dword [0x545d90]
add esp, 4
mov dword [ecx], eax
push 0xe0
push 0xdf
push 0x525f54
call fcn.004b05f1
add esp, 0xc
mov dword [ebp - 0x102c], 0
mov dword [ebp - 0x1028], 0
mov dword [ebp - 0x1024], 0
mov dword [ebp - 4], 1
push 1
push 0x525e98
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x102c]
call fcn.00419460
test eax, eax
je 0x4425a0
push 1
push 0x525ef8
push reloc.OLEAUT32.dll_SysReAllocString
lea ecx, [ebp - 0x102c]
call fcn.00419460
mov esi, dword [0x545d90]
mov edi, eax
mov eax, esi
imul eax, esi
imul eax, esi
and eax, reloc.OLEAUT32.dll_VariantInit
jns 0x442538
dec eax
or eax, 0xfffffff8
inc eax
cmp eax, 6
jne 0x442560
mov eax, 0xd
mov esi, 0x2a
test esi, esi
je 0x442558
cdq
idiv esi
mov ecx, esi
mov eax, ecx
mov esi, edx
test ecx, ecx
jne 0x442547
add esi, eax
mov dword [0x545d90], esi
test edi, edi
je 0x4425a8
push 0x525f84
mov ecx, ebx
call fcn.004025a0
mov dword [ebp - 0x1030], 1
mov byte [ebp - 4], 0
mov ecx, dword [ebp - 0x102c]
test ecx, ecx
je 0x442599
push ecx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x102c], 0
mov eax, ebx
jmp 0x442b37
mov esi, dword [0x545d90]
jmp 0x4425ad
mov edi, 0x18
xor eax, eax
push 0x7fe
push eax
mov word [ebp - 0x810], ax
lea eax, [ebp - 0x80e]
push eax
call fcn.004b4a90
lea eax, [esi + 2]
lea ecx, [esi + 1]
imul eax, ecx
imul eax, esi
cdq
idiv edi
add esp, 0xc
cmp edx, 7
jne 0x442668
xor ecx, ecx
mov dword [ebp - 0x1018], ecx
lea eax, [ebp - 0xcfc]
xor ebx, ebx
mov dword [ebp - 0x1014], eax
lea esp, [esp]
inc ecx
mov eax, esi
cdq
idiv ecx
mov eax, esi
sub eax, dword [ebp - 0x1018]
lea edi, [ebx + 1]
mov ecx, edx
imul ecx, eax
mov eax, esi
cdq
idiv edi
mov esi, dword [ebp - 0x1014]
add ecx, eax
sub ecx, ebx
push ecx
push 0x525f8c
call fcn.004b05f1
mov ecx, dword [ebp - 0x1018]
add esi, 4
mov ebx, edi
add esp, 8
mov dword [ebp - 0x1014], esi
mov esi, dword [0x545d90]
cmp ebx, 0x15
jl 0x442600
inc ecx
mov dword [ebp - 0x1018], ecx
cmp ecx, 0xf
jge 0x442663
mov eax, dword [ebp - 0x1014]
jmp 0x4425f1
mov edi, 0x18
lea eax, [esi + 2]
lea ecx, [esi + 1]
imul eax, ecx
imul eax, esi
cdq
idiv edi
cmp edx, 7
jne 0x442698
mov esi, 1
mov eax, esi
mov edx, 0x24
dec edx
lea ecx, [eax + esi]
lea esi, [eax]
mov eax, ecx
jns 0x442688
mov dword [0x545d90], ecx
mov eax, dword [0x5406d8]
mov ecx, 0x5406d8
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1018], eax
mov byte [ebp - 4], 2
mov eax, 0x525f5c
test eax, 0xffff0000
jne 0x4426db
movzx esi, ax
mov ecx, esi
call fcn.00401b90
test eax, eax
je 0x4426ed
push esi
push eax
lea ecx, [ebp - 0x1018]
call fcn.00402a00
jmp 0x4426ed
push 3
push 0x525f5c
lea ecx, [ebp - 0x1018]
call fcn.00402790
mov byte [ebp - 4], 3
mov ebx, dword [ebp - 0x102c]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [ebp - 0x1014]
push eax
lea eax, [ebp - 0x810]
push eax
lea eax, [ebp - 0x101c]
push eax
push 0
push str.CurrentVersion
push ebx
mov dword [ebp - 0x1014], 0x800
call edi
test eax, eax
jne 0x442a62
mov eax, dword [ebp - 0x101c]
cmp eax, 1
je 0x442742
cmp eax, 2
jne 0x442a62
mov eax, dword [ebp - 0x1014]
test eax, eax
je 0x442766
test al, 1
jne 0x442a62
shr eax, 1
cmp word [ebp + eax*2 - 0x812], 0
je 0x44276f
jmp 0x442a62
xor eax, eax
mov word [ebp - 0x810], ax
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
jmp 0x442780
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x442780
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x1018]
call fcn.00402790
mov ecx, dword [0x545d90]
mov esi, 0x16
lea eax, [ecx + 1]
imul eax, ecx
cdq
idiv esi
cmp edx, 0xe
jne 0x44289a
mov eax, ecx
cdq
sub eax, edx
sar eax, 1
mov dword [ebp - 0x104c], eax
mov eax, 0x55555556
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x1040], eax
mov eax, ecx
cdq
and edx, 3
add eax, edx
sar eax, 2
mov dword [ebp - 0x1044], eax
mov eax, 0x66666667
imul ecx
sar edx, 1
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x1034], eax
mov eax, 0x2aaaaaab
imul ecx
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x1048], eax
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 2
mov eax, edx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x103c], eax
mov eax, ecx
cdq
and edx, 7
xor ebx, ebx
add eax, edx
sar eax, 3
mov dword [ebp - 0x101c], ebx
mov dword [ebp - 0x1020], eax
lea esi, [ebp - 0x100f]
jmp 0x442860
mov edi, 1
mov dword [ebp - 0x1014], 0x10
nop
add esi, 8
inc edi
dec dword [ebp - 0x1014]
jne 0x442870
mov ebx, dword [ebp - 0x101c]
inc ebx
mov dword [ebp - 0x101c], ebx
cmp ebx, 0x10
jl 0x442860
mov ebx, dword [ebp - 0x102c]
mov edi, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov eax, dword [0x5406d8]
mov ecx, 0x5406d8
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x1014], eax
mov byte [ebp - 4], 4
mov eax, 0x525fa0
test eax, 0xffff0000
jne 0x4428dd
movzx esi, ax
mov ecx, esi
call fcn.00401b90
test eax, eax
je 0x4428ef
push esi
push eax
lea ecx, [ebp - 0x1014]
call fcn.00402a00
jmp 0x4428ef
push 1
push 0x525fa0
lea ecx, [ebp - 0x1014]
call fcn.00402790
mov byte [ebp - 4], 5
lea eax, [ebp - 0x101c]
push eax
lea eax, [ebp - 0x810]
push eax
lea eax, [ebp - 0x1020]
push eax
push 0
push 0x525fa4
push ebx
mov dword [ebp - 0x101c], 0x800
call edi
mov ebx, eax
test ebx, ebx
jne 0x442966
mov eax, dword [ebp - 0x1020]
cmp eax, 1
je 0x442939
cmp eax, 2
je 0x442939
mov ebx, 0xd
jmp 0x442966
mov eax, dword [ebp - 0x101c]
test eax, eax
je 0x44295b
test al, 1
jne 0x442954
shr eax, 1
cmp word [ebp + eax*2 - 0x812], 0
je 0x442964
mov ebx, 0xd
jmp 0x442966
xor eax, eax
mov word [ebp - 0x810], ax
xor ebx, ebx
mov ecx, dword [0x545d90]
lea eax, [ecx + 1]
imul eax, ecx
cdq
mov ecx, 0x16
idiv ecx
cmp edx, 0xd
jne 0x4429b6
push 0x28
call fcn.004aed89
add esp, 4
mov edi, eax
xor esi, esi
lea ecx, [ecx]
call fcn.004aff67
add eax, dword [0x545d90]
inc esi
mov dword [edi + esi*4 - 4], eax
cmp esi, 0xa
jl 0x442990
mov eax, dword [edi + 0x24]
push edi
mov dword [0x545d90], eax
call fcn.004afe1b
add esp, 4
test ebx, ebx
jne 0x442a38
lea ecx, [ebp - 0x810]
lea edx, [ecx + 2]
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4429c3
sub ecx, edx
sar ecx, 1
push ecx
lea eax, [ebp - 0x810]
push eax
lea ecx, [ebp - 0x1014]
call fcn.00402790
lea eax, [ebp - 0x1014]
push eax
mov edx, 0x525f90
lea ecx, [ebp - 0x1020]
call fcn.00418740
add esp, 4
mov byte [ebp - 4], 6
mov eax, dword [eax]
lea ecx, [ebp - 0x1018]
push dword [eax - 0xc]
push eax
call fcn.0040fe40
mov byte [ebp - 4], 5
mov edx, dword [ebp - 0x1020]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x442a38
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x1014]
add edx, 0xfffffff0
or ecx, 0xffffffff
lea eax, [edx + 0xc]
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x442a5c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ebx, dword [ebp - 0x102c]
test ebx, ebx
je 0x442a75
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
xor ebx, ebx
mov dword [ebp - 0x102c], ebx
mov esi, dword [ebp - 0x1018]
add esi, 0xfffffff0
mov dword [ebp - 0x1028], 0
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 0x442aab
cmp ecx, dword [esi]
jne 0x442aab
mov edi, esi
mov eax, 1
lock xadd dword [edx], eax
jmp 0x442ae8
mov eax, dword [ecx]
push 2
push dword [esi + 4]
call dword [eax]
mov edi, eax
test edi, edi
jne 0x442abf
call fcn.00402930
mov eax, dword [esi + 4]
mov dword [edi + 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, [edi + 0x10]
push eax
call fcn.004aff8a
add esp, 0x10
lea eax, [edi + 0x10]
mov edi, dword [ebp - 0x1038]
mov dword [edi], eax
mov byte [ebp - 4], 3
mov dword [ebp - 0x1030], 1
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x442b1c
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
test ebx, ebx
je 0x442b35
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x102c], 0
mov eax, edi
mov dword [ebp - 0x1028], 0
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.004af5ba
mov esp, ebp
pop ebp
ret