Function at 0x406740
Capabilities:
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1870
call fcn.0043d750
mov eax, dword [0x47b014]
xor eax, ebp
mov dword [ebp - 4], eax
movups xmm0, xmmword [str.SoftwarePassThruSupport.04.04_]
mov edx, dword [ebp + 0xc]
mov eax, dword [ebp + 0x10]
movups xmmword [ebp - 0x414], xmm0
push ebx
movups xmm0, xmmword [0x469310]
push esi
push edi
movups xmmword [ebp - 0x404], xmm0
mov dword [ebp - 0x1870], eax
mov esi, edx
movups xmm0, xmmword [0x469320]
movups xmmword [ebp - 0x3f4], xmm0
movups xmm0, xmmword [0x469330]
movups xmmword [ebp - 0x3e4], xmm0
mov ax, word [edx]
add edx, 2
test ax, ax
jne 0x4067a0
lea edi, [ebp - 0x414]
sub edx, esi
add edi, 0xfffffffe
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x4067b6
mov ecx, edx
mov dword [ebp - 0x186c], 0
shr ecx, 2
lea eax, [ebp - 0x186c]
rep movsd dword es:[edi], dword [esi]
push eax
push 1
push 0
mov ecx, edx
lea eax, [ebp - 0x414]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x4068f9
mov ebx, dword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
lea eax, [ebp - 0x1868]
push eax
lea eax, [ebp - 0x1044]
mov dword [ebp - 0x1868], 0x410
push eax
push 0
push 0
push str.FunctionLibrary
push dword [ebp - 0x186c]
call ebx
test eax, eax
jne 0x4068f9
lea eax, [ebp - 0x1868]
mov dword [ebp - 0x1868], 0x410
push eax
lea eax, [ebp - 0x1864]
push eax
push 0
push 0
push 0x4664b8
push dword [ebp - 0x186c]
call ebx
push dword [ebp - 0x186c]
test eax, eax
je 0x406870
xor bl, bl
jmp 0x4069e6
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
movups xmm0, xmmword [str.SoftwarePassThruSupport.04.04_]
lea edi, [ebp - 0x824]
add edi, 0xfffffffe
movups xmmword [ebp - 0x824], xmm0
movups xmm0, xmmword [0x469310]
movups xmmword [ebp - 0x814], xmm0
movups xmm0, xmmword [0x469320]
movups xmmword [ebp - 0x804], xmm0
movups xmm0, xmmword [0x469330]
movups xmmword [ebp - 0x7f4], xmm0
nop word [eax + eax]
mov ax, word [edi + 2]
add edi, 2
test ax, ax
jne 0x4068c0
lea eax, [ebp - 0x186c]
mov ecx, 0xd
push eax
push 1
push 0
lea eax, [ebp - 0x824]
mov esi, 0x46fbe0
push eax
rep movsd dword es:[edi], dword [esi]
push closesocket
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
je 0x406900
xor bl, bl
jmp 0x4069e0
lea eax, [ebp - 0x1868]
mov dword [ebp - 0x1868], 0x410
push eax
lea eax, [ebp - 0xc34]
push eax
push 0
push 0
push str.FunctionLibrary
push dword [ebp - 0x186c]
call ebx
test eax, eax
jne 0x4068f9
lea eax, [ebp - 0x1868]
mov dword [ebp - 0x1868], 0x410
push eax
lea eax, [ebp - 0x1454]
push eax
push 0
push 0
push 0x4664b8
push dword [ebp - 0x186c]
call ebx
test eax, eax
jne 0x4068f9
lea ecx, [ebp - 0xc34]
lea eax, [ebp - 0x1044]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40698c
test dx, dx
je 0x406988
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40698c
add eax, 4
add ecx, 4
test dx, dx
jne 0x406966
xor eax, eax
jmp 0x406991
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4069d4
lea ecx, [ebp - 0x1454]
lea eax, [ebp - 0x1864]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x4069c7
test dx, dx
je 0x4069c3
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x4069c7
add eax, 4
add ecx, 4
test dx, dx
jne 0x4069a1
xor eax, eax
jmp 0x4069cc
sbb eax, eax
or eax, 1
test eax, eax
jne 0x4069d4
mov al, 1
jmp 0x4069d6
xor al, al
mov ecx, dword [ebp - 0x1870]
mov bl, 1
mov byte [ecx], al
push dword [ebp - 0x186c]
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 4]
mov al, bl
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00422009
mov esp, ebp
pop ebp
ret 0xc