Function at 0x411b00
Capabilities:
Query or enumerate registry key

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4c6068
mov eax, dword fs:[0]
push eax
sub esp, 0x85c
mov eax, dword [0x51fee0]
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 dword [ebp - 0x10], esp
mov eax, dword [ebp + 8]
mov ecx, dword [0x521340]
mov dword [ebp - 0x818], eax
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x854], eax
mov eax, ecx
imul eax, ecx
imul eax, ecx
cdq
mov ecx, 0xc
idiv ecx
cmp edx, 6
jne 0x411b7c
push 0
push 0
push 0
push 0
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateFileW]
push 0
push 0
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
push 0
lea ecx, [ebp - 0x864]
mov dword [ebp - 0x83c], 0
call fcn.00443cd0
mov dword [ebp - 4], 0
call fcn.00417750
test al, al
jne 0x411c00
movd xmm4, dword [0x521340]
movsd xmm3, qword [0x4da448]
movsd xmm6, qword [0x4da450]
movsd xmm5, qword [0x4da440]
xorps xmm2, xmm2
cvtdq2pd xmm4, xmm4
lea ebx, [ebx]
addsd xmm2, xmm3
movapd xmm0, xmm2
mulsd xmm0, xmm2
comisd xmm0, xmm4
jbe 0x411bea
subsd xmm2, xmm3
divsd xmm3, xmm6
movapd xmm1, xmm2
mulsd xmm1, xmm2
movapd xmm0, xmm4
subsd xmm0, xmm1
comisd xmm0, xmm5
ja 0x411bd0
mov eax, dword [0x51fab0]
mov ecx, 0x51fab0
call dword [eax + 0xc]
lea esi, [eax + 0x10]
mov dword [ebp - 0x830], esi
mov eax, dword [0x51fab0]
mov ecx, 0x51fab0
mov byte [ebp - 4], 1
call dword [eax + 0xc]
lea edi, [eax + 0x10]
mov dword [ebp - 0x838], edi
mov eax, dword [0x51fab0]
mov ecx, 0x51fab0
mov byte [ebp - 4], 2
call dword [eax + 0xc]
lea ebx, [eax + 0x10]
mov dword [ebp - 0x840], ebx
mov ecx, dword [ebp - 0x818]
push str.hive
mov byte [ebp - 4], 4
call fcn.00444250
sub esp, 0x18
mov ecx, eax
push esp
call fcn.00444a40
lea eax, [ebp - 0x824]
push eax
call fcn.0044ff60
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [esi - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 5
mov dword [ebp - 0x81c], eax
mov dword [ebp - 0x82c], ecx
cmp eax, ecx
je 0x411cf7
cmp dword [ecx + 0xc], 0
lea esi, [ecx + 0xc]
jl 0x411ce2
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x411ce2
push dword [ebp - 0x81c]
call fcn.00404880
add esp, 4
mov dword [ebp - 0x81c], eax
or ecx, 0xffffffff
lock xadd dword [esi], ecx
dec ecx
test ecx, ecx
jg 0x411cd7
mov edx, dword [ebp - 0x82c]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x81c]
lea esi, [eax + 0x10]
mov dword [ebp - 0x830], esi
jmp 0x411cf7
push dword [edx - 0xc]
lea ecx, [ebp - 0x830]
push edx
call fcn.004097a0
mov esi, dword [ebp - 0x830]
mov edx, dword [ebp - 0x824]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411d1b
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [esi - 0x10]
push ecx
mov ecx, dword [eax]
mov dword [ebp - 0x81c], eax
mov eax, dword [ecx]
mov dword [ebp - 0x82c], esp
call dword [eax + 0x10]
lea ecx, [esi - 0x10]
mov edx, eax
cmp dword [ecx + 0xc], 0
lea eax, [ecx + 0xc]
mov dword [ebp - 0x824], eax
jl 0x411d5b
cmp edx, dword [ecx]
jne 0x411d5b
mov edx, dword [ebp - 0x824]
mov eax, 1
lock xadd dword [edx], eax
jmp 0x411da3
mov eax, dword [edx]
push 2
push dword [ecx + 4]
mov ecx, edx
call dword [eax]
mov edx, eax
mov dword [ebp - 0x824], edx
test edx, edx
jne 0x411d77
call fcn.0040c350
mov eax, dword [esi - 0xc]
mov dword [edx + 4], eax
mov ecx, dword [esi - 0xc]
lea eax, [ecx*2 + 2]
push eax
lea eax, [ecx*2 + 2]
push esi
push eax
lea eax, [edx + 0x10]
push eax
call fcn.004a8205
mov ecx, dword [ebp - 0x824]
add esp, 0x10
lea eax, [ecx + 0x10]
mov ecx, dword [ebp - 0x82c]
mov dword [ecx], eax
call fcn.00415480
add esp, 4
mov dword [ebp - 0x828], eax
test eax, eax
jne 0x411edb
lea eax, [ebp - 0x830]
push eax
lea eax, [ebp - 0x818]
push str.enumRegKeys_hive_error_
push eax
call fcn.0040b870
add esp, 0xc
lea eax, [ebp - 0x818]
push eax
lea eax, [ebp - 0x7f4]
push eax
mov byte [ebp - 4], 6
call fcn.00450030
add esp, 8
push eax
lea ecx, [ebp - 0x850]
mov byte [ebp - 4], 7
call fcn.00443bf0
push 0x4da4ec
lea ecx, [ebp - 0x864]
mov byte [ebp - 4], 8
call fcn.00444170
lea ecx, [ebp - 0x850]
push ecx
mov ecx, eax
call fcn.00443f80
lea ecx, [ebp - 0x850]
mov byte [ebp - 4], 7
call fcn.00443ee0
cmp dword [ebp - 0x7e0], 0x10
jb 0x411e51
push dword [ebp - 0x7f4]
call fcn.004a6c2e
add esp, 4
mov edx, dword [ebp - 0x818]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411e75
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebx - 0x10]
or ebx, 0xffffffff
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411e95
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411eb2
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x81c]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411ed2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x4124e8
mov ecx, dword [ebp - 0x818]
push 0x4da994
call fcn.00444250
sub esp, 0x18
mov ecx, eax
push esp
call fcn.00444a40
lea eax, [ebp - 0x868]
push eax
call fcn.0044ff60
add esp, 0x1c
mov edx, dword [eax]
lea ecx, [edi - 0x10]
lea eax, [edx - 0x10]
mov byte [ebp - 4], 9
mov dword [ebp - 0x824], eax
mov dword [ebp - 0x82c], ecx
cmp eax, ecx
je 0x411f84
cmp dword [ecx + 0xc], 0
lea edi, [ecx + 0xc]
jl 0x411f6f
mov eax, dword [eax]
cmp eax, dword [ecx]
jne 0x411f6f
push dword [ebp - 0x824]
call fcn.00404880
add esp, 4
mov dword [ebp - 0x824], eax
or ecx, 0xffffffff
lock xadd dword [edi], ecx
dec ecx
test ecx, ecx
jg 0x411f64
mov edx, dword [ebp - 0x82c]
push edx
mov ecx, dword [edx]
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x824]
lea edi, [eax + 0x10]
mov dword [ebp - 0x838], edi
jmp 0x411f84
push dword [edx - 0xc]
lea ecx, [ebp - 0x838]
push edx
call fcn.004097a0
mov edi, dword [ebp - 0x838]
mov edx, dword [ebp - 0x868]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411fa8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x818]
push 0x4da9a0
call fcn.004452a0
test al, al
je 0x411fd5
mov ecx, dword [ebp - 0x818]
push 0x4da9a0
call fcn.00444250
mov ecx, eax
call fcn.00444940
jmp 0x411fd7
xor eax, eax
mov ecx, 0x20019
cmp eax, 0x20
jne 0x411fe8
mov ecx, 0x20219
jmp 0x411ff3
mov edx, 0x20119
cmp eax, 0x40
cmove ecx, edx
lea eax, [ebp - 0x83c]
push eax
push ecx
push 0
push edi
push dword [ebp - 0x828]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x41215c
push eax
lea eax, [ebp - 0x828]
push eax
call fcn.0043f5e0
add esp, 8
push eax
lea eax, [ebp - 0x818]
push str.enumRegKeys_RegOpenKeyEx_
push eax
mov byte [ebp - 4], 0xa
call fcn.0040b870
add esp, 0xc
mov edx, dword [ebp - 0x828]
add edx, 0xfffffff0
or esi, 0xffffffff
mov byte [ebp - 4], 0xc
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412061
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x818]
push eax
lea eax, [ebp - 0x7f4]
push eax
call fcn.00450030
add esp, 8
push eax
lea ecx, [ebp - 0x850]
mov byte [ebp - 4], 0xd
call fcn.00443bf0
push 0x4da4ec
lea ecx, [ebp - 0x864]
mov byte [ebp - 4], 0xe
call fcn.00444170
lea ecx, [ebp - 0x850]
push ecx
mov ecx, eax
call fcn.00443f80
lea ecx, [ebp - 0x850]
mov byte [ebp - 4], 0xd
call fcn.00443ee0
cmp dword [ebp - 0x7e0], 0x10
jb 0x4120cf
push dword [ebp - 0x7f4]
call fcn.004a6c2e
add esp, 4
mov edx, dword [ebp - 0x818]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
mov ecx, esi
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4120f2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebx - 0x10]
or ebx, 0xffffffff
mov byte [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412112
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41212f
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x81c]
mov byte [ebp - 4], 0
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x411ed2
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0
jmp 0x4124e8
mov eax, dword [0x51fab0]
mov ecx, 0x51fab0
mov dword [ebp - 0x818], 0
mov dword [ebp - 0x834], 0x104
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x820], eax
mov ecx, dword [ebp - 0x834]
mov byte [ebp - 4], 0xf
test ecx, ecx
jns 0x41219e
push 0x80070057
call fcn.004044c0
mov ecx, dword [eax - 8]
sub ecx, dword [ebp - 0x834]
mov edx, 1
sub edx, dword [eax - 4]
or ecx, edx
jge 0x4121ca
push dword [ebp - 0x834]
lea ecx, [ebp - 0x820]
call fcn.00408680
mov eax, dword [ebp - 0x820]
push 0
push 0
push 0
push 0
lea ecx, [ebp - 0x834]
push ecx
push eax
push dword [ebp - 0x818]
push dword [ebp - 0x83c]
call dword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
mov dword [ebp - 0x828], eax
cmp eax, 0x103
je 0x412358
mov ecx, dword [ebp - 0x820]
push dword [ecx - 8]
push ecx
call fcn.004a872a
mov edx, eax
add esp, 8
test edx, edx
js 0x412194
mov ecx, dword [ebp - 0x820]
cmp edx, dword [ecx - 8]
jg 0x412194
mov dword [ecx - 0xc], edx
mov eax, dword [ebp - 0x820]
xor ecx, ecx
mov word [eax + edx*2], cx
call fcn.00417a20
mov ecx, dword [0x521470]
test al, al
mov eax, 0xb2015ee1
cmove ecx, eax
cmp dword [ebp - 0x828], 0
mov dword [0x521470], ecx
jne 0x4122bb
lea eax, [ebp - 0x820]
push eax
lea eax, [ebp - 0x7f4]
push eax
call fcn.00450030
add esp, 8
push eax
lea ecx, [ebp - 0x850]
mov byte [ebp - 4], 0x10
call fcn.00443bf0
push eax
lea ecx, [ebp - 0x864]
mov byte [ebp - 4], 0x11
call fcn.004447e0
lea ecx, [ebp - 0x850]
mov byte [ebp - 4], 0x10
call fcn.00443ee0
cmp dword [ebp - 0x7e0], 0x10
mov byte [ebp - 4], 0xf
jb 0x4122bb
push dword [ebp - 0x7f4]
call fcn.004a6c2e
add esp, 4
mov eax, dword [ebp - 0x820]
cmp dword [eax - 0xc], 0
mov ecx, dword [eax - 0x10]
lea edx, [eax - 0x10]
mov dword [ebp - 0x828], ecx
je 0x412342
cmp dword [edx + 0xc], 0
lea ecx, [edx + 0xc]
jge 0x41231a
cmp dword [eax - 8], 0
jge 0x4122ec
push 0x80070057
call fcn.004044c0
mov dword [eax - 0xc], 0
mov eax, dword [ebp - 0x820]
xor ecx, ecx
inc dword [ebp - 0x818]
mov word [eax], cx
mov eax, dword [ebp - 0x820]
mov ecx, 0x104
mov dword [ebp - 0x834], ecx
jmp 0x412190
or eax, 0xffffffff
lock xadd dword [ecx], eax
dec eax
test eax, eax
jg 0x41232e
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 0x828]
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x820], eax
inc dword [ebp - 0x818]
mov ecx, 0x104
mov dword [ebp - 0x834], ecx
jmp 0x412190
lea ecx, [ebp - 0x864]
call fcn.00444c90
test al, al
je 0x4123a8
push str.empty
lea ecx, [ebp - 0x850]
call fcn.00443c90
push 0x4da4ec
lea ecx, [ebp - 0x864]
mov byte [ebp - 4], 0x12
call fcn.00444170
lea ecx, [ebp - 0x850]
push ecx
mov ecx, eax
call fcn.00443f80
lea ecx, [ebp - 0x850]
mov byte [ebp - 4], 0xf
call fcn.00443ee0
mov edx, dword [ebp - 0x820]
add edx, 0xfffffff0
mov byte [ebp - 4], 4
lea eax, [edx + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4123cc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea edx, [ebx - 0x10]
or ebx, 0xffffffff
mov dword [ebp - 4], 2
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4123ef
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
mov byte [ebp - 4], 1
lea eax, [edi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x41240c
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x4124e8
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
jmp 0x4124e8
mov esi, dword [0x521340]
mov edi, 0xc
lea eax, [esi + 2]
lea ecx, [esi + 1]
imul eax, ecx
imul eax, esi
cdq
idiv edi
cmp edx, 8
jne 0x41250e
dec esi
mov dword [0x521340], esi
mov eax, dword [ebp - 0x83c]
test eax, eax
je 0x412529
push eax
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x83c], 0
lea ecx, [ebp - 0x814]
call fcn.00445f40
mov esi, dword [0x521340]
mov byte [ebp - 4], 0x17
lea eax, [esi + 2]
lea ecx, [esi + 1]
imul eax, ecx
imul eax, esi
cdq
idiv edi
cmp edx, 7
jne 0x412570
xor edi, edi
test esi, esi
je 0x41256a
mov eax, esi
mov ecx, esi
cdq
sub eax, edx
and ecx, 1
mov esi, eax
add edi, ecx
sar esi, 1
jne 0x412558
mov dword [0x521340], edi
mov eax, dword [0x51fab0]
mov ecx, 0x51fab0
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x81c], eax
lea eax, [ebp - 0x864]
push eax
lea eax, [ebp - 0x7f4]
push eax
lea ecx, [ebp - 0x814]
mov byte [ebp - 4], 0x18
call fcn.00448e50
mov edx, eax
cmp dword [edx + 0x14], 0x10
mov byte [ebp - 4], 0x19
jb 0x4125b1
mov edx, dword [edx]
sub esp, 0x18
mov esi, esp
mov dword [esi + 0x14], 0xf
mov dword [esi + 0x10], 0
mov byte [esi], 0
cmp byte [edx], 0
jne 0x4125d0
xor ecx, ecx
jmp 0x4125de
mov ecx, edx
lea edi, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4125d5
sub ecx, edi
push ecx
push edx
mov ecx, esi
call fcn.00401460
lea eax, [ebp - 0x840]
push eax
call fcn.0044ff60
add esp, 0x1c
push eax
lea ecx, [ebp - 0x81c]
mov byte [ebp - 4], 0x1a
call fcn.00402b30
mov edx, dword [ebp - 0x840]
add edx, 0xfffffff0
mov byte [ebp - 4], 0x19
lea eax, [edx + 0xc]
mov ecx, ebx
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x412629
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x7e0], 0x10
mov byte [ebp - 4], 0x18
jb 0x412644
push dword [ebp - 0x7f4]
call fcn.004a6c2e
add esp, 4
mov edi, dword [ebp - 0x854]
mov esi, dword [ebp - 0x81c]
mov eax, 8
mov word [edi], ax
push dword [esi - 0xc]
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocStringLen]
test eax, eax
jne 0x41266b
call fcn.0040c350
mov dword [edi + 8], eax
mov ecx, dword [0x521340]
lea eax, [ecx + 1]
imul eax, ecx
cdq
mov ecx, 0xf
idiv ecx
cmp edx, 9
jne 0x4126f8
xor edi, edi
lea esp, [esp]
call fcn.004a8009
movd xmm0, eax
cvtdq2pd xmm0, xmm0
inc edi
movsd qword [ebp + edi*8 - 0x7e4], xmm0
cmp edi, 0xf9
jb 0x412690
xor ecx, ecx
mov eax, 0xf8
cmp ecx, eax
jge 0x4126ef
lea ebx, [ebx]
movsd xmm0, qword [ebp + eax*8 - 0x7dc]
movsd xmm1, qword [ebp + eax*8 - 0x7e4]
comisd xmm0, xmm1
jbe 0x4126ea
movsd qword [ebp + eax*8 - 0x7dc], xmm1
movsd qword [ebp + eax*8 - 0x7e4], xmm0
dec eax
cmp eax, ecx
jg 0x4126c0
inc ecx
cmp ecx, 0xf9
jl 0x4126b1
add esi, 0xfffffff0
mov byte [ebp - 4], 0x17
lea eax, [esi + 0xc]
lock xadd dword [eax], ebx
dec ebx
test ebx, ebx
jg 0x412713
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
cmp dword [ebp - 0x7fc], 0x10
mov byte [ebp - 4], 0
mov dword [ebp - 0x814], 0x4da4e4
jb 0x412738
push dword [ebp - 0x810]
call fcn.004a6c2e
add esp, 4
lea ecx, [ebp - 0x814]
mov dword [ebp - 0x7fc], 0xf
mov dword [ebp - 0x800], 0
mov byte [ebp - 0x810], 0
call fcn.00446040
lea ecx, [ebp - 0x864]
mov dword [ebp - 4], 0xffffffff
call fcn.00443ee0
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.004a7434
mov esp, ebp
pop ebp
ret