Function at 0x424650
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c083f
mov eax, dword fs:[0]
push eax
sub esp, 0x140
mov eax, dword [0x515e20]
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 [ebp + 8]
mov edi, dword [ebp + 0xc]
mov esi, dword [ebp + 0x10]
mov dword [ebp - 0x13c], eax
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x148], edi
mov dword [ebp - 0x140], eax
mov eax, dword [0x5159f8]
mov ecx, 0x5159f8
mov dword [ebp - 4], 0
mov dword [ebp - 0x138], 4
mov dword [ebp - 0x130], 0
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x128], eax
mov eax, dword [ebp + 0x18]
or ebx, 0xffffffff
cmp dword [eax - 0xc], 0
mov byte [ebp - 4], 1
je 0x424728
push 0x4d3314
lea eax, [ebp + 0x18]
push eax
lea eax, [ebp - 0x124]
push eax
call fcn.00402ae0
add esp, 0xc
push eax
lea ecx, [ebp - 0x128]
mov byte [ebp - 4], 2
call fcn.00402610
mov edx, dword [ebp - 0x124]
add edx, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x424728
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [0x5159f8]
mov ecx, 0x5159f8
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x124], eax
push 0
lea eax, [ebp - 0x134]
push esi
push eax
mov byte [ebp - 4], 3
call fcn.00422ee0
push eax
lea eax, [ebp - 0x128]
push eax
lea eax, [ebp - 0x14c]
push eax
mov byte [ebp - 4], 4
call fcn.00402a20
add esp, 0x18
push eax
lea ecx, [ebp - 0x124]
mov byte [ebp - 4], 5
call fcn.00402610
mov edx, dword [ebp - 0x14c]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42479f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x134]
add edx, 0xfffffff0
mov byte [ebp - 4], 3
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4247c2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [0x517280]
lea edx, [ecx + 2]
lea eax, [ecx + 1]
imul edx, eax
imul edx, ecx
and edx, reloc.OLEAUT32.dll_VariantInit
jns 0x4247e1
dec edx
or edx, 0xfffffff8
inc edx
cmp edx, 5
jne 0x424851
mov eax, 0x8ca29c05
imul ecx
add edx, ecx
sar edx, 7
mov esi, edx
shr esi, 0x1f
add esi, edx
imul esi, esi, 0xe9
mov eax, ecx
sub eax, esi
xor edi, edi
cmp eax, 4
je 0x424845
lea ebx, [ebx]
mov eax, ecx
or eax, 0xffffff02
add ecx, eax
mov eax, ecx
imul eax, ecx
inc edi
cmp edi, eax
jg 0x424845
mov eax, 0x8ca29c05
imul ecx
add edx, ecx
sar edx, 7
mov esi, edx
shr esi, 0x1f
add esi, edx
imul esi, esi, 0xe9
mov eax, ecx
sub eax, esi
cmp eax, 4
jne 0x424810
mov dword [0x517280], edi
mov edi, dword [ebp - 0x148]
mov esi, dword [ebp - 0x124]
lea eax, [ebp - 0x12c]
push eax
push 0x20019
push 0
push esi
push dword [ebp - 0x140]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x424915
lea eax, [ebp - 0x138]
push eax
lea eax, [ebp - 0x130]
push eax
lea eax, [ebp - 0x144]
push eax
push 0
push dword [edi]
push dword [ebp - 0x12c]
call dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov edi, eax
call fcn.00424d60
test al, al
jne 0x4248e7
mov edx, dword [0x517280]
xor ecx, ecx
mov eax, dword [ebp + ecx*4 - 0x110]
add eax, dword [ebp + ecx*4 - 0x114]
add ecx, 4
add eax, dword [ebp + ecx*4 - 0x128]
add eax, dword [ebp + ecx*4 - 0x12c]
imul eax, eax, 0x9a
add edx, eax
cmp ecx, 0x10c
jb 0x4248b2
mov dword [0x517280], edx
mov ecx, dword [ebp - 0x13c]
mov eax, dword [ebp - 0x130]
push dword [ebp - 0x12c]
mov dword [ecx], eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x424915
cmp dword [ebp - 0x144], 4
mov byte [ebp - 0x11d], 1
je 0x42491c
mov byte [ebp - 0x11d], 0
add esi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x424939
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x128]
add edx, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x42495c
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp + 0x18]
add esi, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea eax, [esi + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x42497d
mov ecx, dword [esi]
push esi
mov edx, dword [ecx]
call dword [edx + 4]
mov al, byte [ebp - 0x11d]
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.0049e294
mov esp, ebp
pop ebp
ret