Function at 0x45f064
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffcc
push ebx
push esi
push edi
xor ebx, ebx
mov dword [ebp - 0x34], ebx
mov dword [ebp - 0x30], ebx
mov byte [ebp - 9], cl
mov dword [ebp - 8], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x45f421
push dword fs:[eax]
mov dword fs:[eax], esp
mov byte [ebp - 0xa], 0
cmp dword [ebp - 8], 0
sete byte [ebp - 0x18]
cmp byte [ebp - 0x18], 0
jne 0x45f0ac
mov eax, dword [ebp - 8]
mov edx, dword [0x45eb64]
call fcn.004051e0
cmp dword [ebp - 4], 0
sete byte [ebp - 0x19]
cmp byte [ebp - 0x19], 0
jne 0x45f0c8
mov eax, dword [ebp - 4]
mov edx, dword [0x45eba4]
call fcn.004051e0
mov al, byte [ebp - 0x18]
and al, byte [ebp - 0x19]
jne 0x45f3fd
xor eax, eax
mov dword [ebp - 0x20], eax
xor edx, edx
push ebp
push 0x45f3f6
push dword fs:[edx]
mov dword fs:[edx], esp
mov ebx, 0x10000
lea eax, [ebp - 0x20]
mov edx, ebx
call fcn.00402724
mov dword [ebp - 0x10], ebx
lea eax, [ebp - 0x10]
push eax
mov eax, dword [ebp - 0x20]
push eax
lea eax, [ebp - 0x14]
push eax
push 0
push 0x45f434
push 0x80000004
call sub.advapi32.dll_RegQueryValueExA
cmp eax, 0xea
jne 0x45f123
mov edx, ebx
add edx, edx
mov ebx, edx
cmp eax, 0xea
je 0x45f0ec
test eax, eax
je 0x45f138
call fcn.004035f4
jmp 0x45f3fd
mov eax, dword [ebp - 0x20]
mov esi, dword [eax + 0x18]
add esi, dword [ebp - 0x20]
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x1c]
dec eax
test eax, eax
jl 0x45f34b
inc eax
mov dword [ebp - 0x24], eax
cmp dword [ebp - 4], 0
je 0x45f163
cmp dword [esi + 0xc], 0xe6
je 0x45f167
xor eax, eax
jmp 0x45f169
mov al, 1
mov byte [ebp - 0x15], al
cmp byte [ebp - 0x15], 0
jne 0x45f181
cmp dword [ebp - 8], 0
je 0x45f181
cmp dword [esi + 0xc], 0xe8
je 0x45f185
xor eax, eax
jmp 0x45f187
mov al, 1
mov byte [ebp - 0x16], al
mov al, byte [ebp - 0x15]
or al, byte [ebp - 0x16]
je 0x45f33c
mov edi, dword [esi + 8]
add edi, esi
mov eax, dword [esi + 0x20]
dec eax
test eax, eax
jl 0x45f322
inc eax
mov dword [ebp - 0x28], eax
mov dword [ebp - 0x10], 0
cmp dword [edi + 4], 0x310
sete byte [ebp - 0x17]
cmp byte [ebp - 0x17], 0
jne 0x45f1cc
cmp dword [edi + 4], 0x324
je 0x45f1d0
xor eax, eax
jmp 0x45f1d2
mov al, 1
or al, byte [ebp - 0x17]
je 0x45f313
mov ebx, dword [esi + 4]
add ebx, esi
cmp byte [ebp - 0x15], 0
je 0x45f203
mov eax, dword [esi + 0x28]
dec eax
push eax
mov eax, dword [ebp - 4]
mov ecx, 1
mov edx, dword [0x45eba4]
call fcn.004051d4
add esp, 4
jmp 0x45f21e
mov eax, dword [esi + 0x28]
dec eax
push eax
mov eax, dword [ebp - 8]
mov ecx, 1
mov edx, dword [0x45eb64]
call fcn.004051d4
add esp, 4
mov eax, dword [esi + 0x28]
sub eax, 2
test eax, eax
jl 0x45f313
inc eax
mov dword [ebp - 0x2c], eax
mov dword [ebp - 0x14], 0
mov eax, dword [ebx]
add eax, ebx
add eax, dword [edi + 0x24]
mov eax, dword [eax]
cmp byte [ebp - 0x15], 0
je 0x45f2da
mov edx, dword [ebp - 0x14]
add edx, edx
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx]
mov dword [ecx + edx*8], eax
test eax, eax
je 0x45f2c0
lea eax, [ebp - 0x30]
mov edx, dword [ebx + 0x10]
add edx, ebx
call fcn.004041bc
mov edx, dword [ebp - 0x30]
mov eax, dword [ebp - 0x14]
add eax, eax
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx]
lea eax, [ecx + eax*8 + 4]
call fcn.00403ccc
mov eax, dword [ebp - 0x14]
add eax, eax
mov edx, dword [ebp - 4]
mov edx, dword [edx]
mov eax, dword [edx + eax*8 + 4]
mov edx, 0x45f444
call fcn.00403e14
je 0x45f2ff
mov eax, dword [ebp - 0x14]
add eax, eax
mov edx, dword [ebp - 4]
mov edx, dword [edx]
mov edx, dword [edx + eax*8 + 4]
mov eax, dword [ebp - 0x14]
add eax, eax
mov ecx, dword [ebp - 4]
mov ecx, dword [ecx]
lea eax, [ecx + eax*8 + 4]
mov ecx, 0x45f454
call fcn.00403d50
jmp 0x45f2ff
mov eax, dword [ebp - 0x14]
add eax, eax
mov edx, dword [ebp - 4]
mov edx, dword [edx]
lea eax, [edx + eax*8 + 4]
mov edx, 0x45f464
call fcn.00403ad8
jmp 0x45f2ff
cmp byte [ebp - 0x17], 0
je 0x45f2f0
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*2]
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
mov dword [ecx + edx*4], eax
jmp 0x45f2ff
mov edx, dword [ebp - 0x14]
lea edx, [edx + edx*2]
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
mov dword [ecx + edx*4 + 4], eax
mov eax, dword [ebx]
add eax, ebx
mov ebx, dword [eax]
add ebx, eax
inc dword [ebp - 0x14]
dec dword [ebp - 0x2c]
jne 0x45f237
add edi, 0x28
inc dword [ebp - 0x10]
dec dword [ebp - 0x28]
jne 0x45f1b2
mov al, byte [ebp - 0x18]
or al, byte [ebp - 0x16]
mov byte [ebp - 0x18], al
mov al, byte [ebp - 0x19]
or al, byte [ebp - 0x15]
mov byte [ebp - 0x19], al
mov al, byte [ebp - 0x18]
and al, byte [ebp - 0x19]
jne 0x45f34b
mov eax, dword [esi]
add eax, esi
mov esi, eax
dec dword [ebp - 0x24]
jne 0x45f154
cmp dword [ebp - 4], 0
je 0x45f359
mov eax, dword [ebp - 4]
cmp dword [eax], 0
jne 0x45f36b
cmp dword [ebp - 8], 0
je 0x45f367
mov eax, dword [ebp - 8]
cmp dword [eax], 0
jne 0x45f36b
xor eax, eax
jmp 0x45f36d
mov al, 1
mov byte [ebp - 0xa], al
cmp dword [ebp - 8], 0
setne al
and al, byte [ebp - 9]
je 0x45f3e0
cmp byte [ebp - 9], 0
je 0x45f3e0
mov eax, dword [ebp - 8]
mov eax, dword [eax]
call fcn.00405020
test eax, eax
jl 0x45f3e0
inc eax
mov dword [ebp - 0x24], eax
xor ebx, ebx
lea esi, [ebx + ebx*2]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edi, dword [eax + esi*4]
test edi, edi
je 0x45f3da
lea eax, [ebp - 0x34]
push eax
mov eax, dword [ebp - 8]
mov eax, dword [eax]
mov edx, dword [eax + esi*4 + 4]
lea eax, [ebx + ebx*2]
mov ecx, dword [ebp - 8]
mov ecx, dword [ecx]
mov eax, edi
xor ecx, ecx
call fcn.0045fad0
mov edx, dword [ebp - 0x34]
mov eax, dword [ebp - 8]
mov eax, dword [eax]
lea eax, [eax + esi*4 + 8]
mov ecx, dword [0x45eb2c]
call fcn.0040521c
inc ebx
dec dword [ebp - 0x24]
jne 0x45f396
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45f3fd
mov eax, dword [ebp - 0x20]
call fcn.0040270c
ret
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x45f428
lea eax, [ebp - 0x34]
mov edx, dword [0x45eb2c]
call fcn.004051e0
lea eax, [ebp - 0x30]
call fcn.004040b4
ret