Function at 0x401760
Capabilities:
Query or enumerate registry key
Query or enumerate registry value

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x8a8
mov esi, edx
mov edi, ecx
mov dword [ebp - 0x34], 0x20
mov dword [ebp - 0x38], 0x580032
mov dword [ebp - 0x3c], 0x300025
mov dword [ebp - 0x84], 0x2e
mov dword [ebp - 0x88], 0x2e002e
movups xmm0, xmmword [0x40d082]
movups xmmword [ebp - 0xaa], xmm0
movups xmm0, xmmword [str._s___s____s]
movups xmmword [ebp - 0xb4], xmm0
movdqu xmm0, xmmword [str._s___s]
movdqu xmmword [ebp - 0x98], xmm0
mov dword [ebp - 0x78], 1
mov dword [ebp - 0x64], 0x100
lea eax, [ebp - 0x6b4]
mov dword [ebp - 0x68], eax
mov dword [ebp - 0x7c], 0xffff0002
mov dword [ebp - 0x80], edx
mov dword [ebp - 0x18], 0x100
mov dword [ebp - 0x14], 0x200
lea eax, [ebp - 0x14]
lea ecx, [ebp - 0x2b4]
lea edx, [ebp - 0x18]
lea ebx, [ebp - 0x4b4]
push eax
push ecx
lea eax, [ebp - 0x2c]
push eax
push 0
push edx
push ebx
push 0
push edi
call dword [sym.imp.advapi32.dll_RegEnumValueW]
mov dword [ebp - 0x24], esi
mov dword [ebp - 0x28], esi
mov ecx, dword [ebp + 8]
test eax, eax
jne 0x401ad5
mov dword [ebp - 0x30], eax
xor esi, esi
lea ecx, [ebp - 0x3c]
mov edx, dword [sym.imp.user32.dll_wsprintfW]
mov ebx, edx
mov dword [ebp - 0x20], edi
jmp 0x401880
inc esi
mov dword [ebp - 0x18], 0x100
mov dword [ebp - 0x14], 0x200
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x2b4]
push eax
lea eax, [ebp - 0x2c]
push eax
push 0
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x4b4]
push eax
push esi
push edi
call dword [sym.imp.advapi32.dll_RegEnumValueW]
test eax, eax
lea ecx, [ebp - 0x3c]
mov edx, ebx
jne 0x401acc
mov dword [ebp - 0x1c], esi
cmp dword [ebp - 0x2c], 3
jne 0x401918
xor esi, esi
lea edi, [ebp - 0x8b4]
nop word cs:[eax + eax]
movzx eax, byte [ebp + esi*2 - 0x2b4]
push eax
push ecx
push edi
call ebx
lea ecx, [ebp - 0x3c]
add esp, 0xc
inc esi
add edi, 6
cmp esi, 0x54
jne 0x4018a0
mov edx, ebx
mov eax, dword [ebp - 0x14]
lea eax, [eax + eax*2]
cmp eax, 0xff
mov ecx, 0xff
cmovae eax, ecx
mov word [ebp + eax*2 - 0x8b4], 0
xor eax, eax
nop dword [eax]
movzx ecx, word [ebp + eax - 0x8b4]
mov word [ebp + eax - 0x2b4], cx
add eax, 2
test cx, cx
jne 0x4018e0
xor eax, eax
mov edi, dword [ebp - 0x20]
nop dword [eax]
movzx ecx, word [ebp + eax - 0x88]
mov word [ebp + eax - 0xbe], cx
add eax, 2
test cx, cx
jne 0x401900
cmp dword [ebp - 0x18], 0
je 0x401950
lea eax, [ebp - 0x2b4]
push eax
lea eax, [ebp - 0x4b4]
push eax
push dword [ebp + 8]
lea eax, [ebp - 0xb4]
push eax
lea eax, [ebp - 0x6b4]
push eax
call edx
add esp, 0x14
jmp 0x40196d
lea eax, [ebp - 0x2b4]
push eax
push dword [ebp + 8]
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x6b4]
push eax
call edx
add esp, 0x10
lea eax, [ebp - 0x80]
push eax
push 0
push 0x1132
push dword [0x419040]
call dword [sym.imp.user32.dll_SendMessageW]
mov dword [ebp - 0x28], eax
cmp dword [ebp + 0xc], 0
mov esi, dword [ebp - 0x1c]
je 0x401840
push 0xc
push str.AppID
lea eax, [ebp - 0x4b4]
push eax
call dword [sym.imp.ucrtbase.dll_memcmp]
add esp, 0xc
test eax, eax
jne 0x401840
xor eax, eax
nop word cs:[eax + eax]
movzx ecx, word [ebp + eax - 0x4b4]
mov word [ebp + eax - 0x6b4], cx
add eax, 2
test cx, cx
jne 0x4019c0
push 0x1f4
lea esi, [ebp - 0x2b4]
push esi
lea eax, [ebp - 0x2a8]
push eax
call sym._memmove
add esp, 0xc
mov dword [ebp - 0x2b4], 0x4c0043
mov dword [ebp - 0x2b0], 0x490053
mov dword [ebp - 0x2ac], 0x5c0044
lea eax, [ebp - 0x10]
push eax
push esi
push 0x80000000
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
test eax, eax
mov esi, dword [ebp - 0x1c]
jne 0x401840
mov dword [ebp - 0x80], 0xffff0000
lea eax, [ebp - 0x80]
push eax
push 0
push 0x1132
push dword [0x419040]
call dword [sym.imp.user32.dll_SendMessageW]
mov dword [ebp - 0x80], eax
mov dword [ebp - 0x18], 0x200
lea eax, [ebp - 0x18]
push eax
lea eax, [ebp - 0x4b4]
push eax
push 0
push dword [ebp - 0x10]
call dword [sym.imp.advapi32.dll_RegQueryValueW]
push dword [ebp - 0x10]
call dword [sym.imp.advapi32.dll_RegCloseKey]
lea eax, [ebp - 0x4b4]
push eax
lea eax, [ebp - 0x2a8]
push eax
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x6b4]
push eax
call ebx
add esp, 0x10
lea eax, [ebp - 0x80]
push eax
push 0
push 0x1132
push dword [0x419040]
call dword [sym.imp.user32.dll_SendMessageW]
push dword [ebp - 0x80]
push 2
push 0x1102
push dword [0x419040]
call dword [sym.imp.user32.dll_SendMessageW]
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x80], eax
jmp 0x401840
cmp dword [ebp - 0x30], 0
mov ecx, dword [ebp + 8]
je 0x401b16
mov eax, 0xfffffffe
nop word [eax + eax]
cmp word [ecx + eax + 2], 0
lea eax, [eax + 2]
jne 0x401ae0
cmp eax, 3
jl 0x401b16
mov dword [ebp - 0x68], ecx
lea eax, [ebp - 0x80]
push eax
push 0
push 0x1132
push dword [0x419040]
call dword [sym.imp.user32.dll_SendMessageW]
mov dword [ebp - 0x28], eax
lea eax, [ebp - 0x6b4]
mov dword [ebp - 0x68], eax
push 0x100
lea eax, [ebp - 0x4b4]
push eax
push 0
push edi
call dword [sym.imp.advapi32.dll_RegEnumKeyW]
test eax, eax
je 0x401b3a
add esp, 0x8a8
pop esi
pop edi
pop ebx
pop ebp
ret
mov ebx, 1
mov dword [ebp - 0x20], edi
jmp 0x401c83
mov dword [ebp - 0x14], 0x200
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x2b4]
push eax
push 0
push dword [ebp - 0x10]
mov eax, dword [sym.imp.advapi32.dll_RegQueryValueW]
call eax
push dword [ebp - 0x10]
mov edi, dword [sym.imp.advapi32.dll_RegCloseKey]
call edi
lea ebx, [ebp - 0x10]
push ebx
push 0x40d0ae
push 0x80000000
mov eax, dword [sym.imp.advapi32.dll_RegOpenKeyW]
call eax
mov dword [ebp - 0x18], 0x200
lea eax, [ebp - 0x18]
push eax
lea esi, [ebp - 0x4b4]
push esi
push 0
push dword [ebp - 0x10]
call dword [sym.imp.advapi32.dll_RegQueryValueW]
mov dword [ebp - 0x80], 0xffff0000
push esi
push 0x40d0ae
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x6b4]
push eax
call dword [sym.imp.user32.dll_wsprintfW]
add esp, 0x10
lea eax, [ebp - 0x80]
push eax
push 0
push 0x1132
push dword [0x419040]
mov ebx, dword [sym.imp.user32.dll_SendMessageW]
call ebx
mov dword [ebp - 0x80], eax
push dword [ebp - 0x10]
call edi
push dword [ebp - 0x14]
lea esi, [ebp - 0x2b4]
push esi
lea edi, [ebp - 0x2a8]
push edi
call sym._memmove
add esp, 0xc
mov dword [ebp - 0x2b4], 0x4c0043
mov dword [ebp - 0x2b0], 0x490053
mov dword [ebp - 0x2ac], 0x5c0044
lea eax, [ebp - 0x10]
push eax
push esi
push 0x80000000
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
mov ecx, dword [ebp - 0x10]
mov edx, dword [ebp - 0x80]
push 0
push edi
call dbg.CreateRegRec
add esp, 8
push dword [ebp - 0x80]
push 2
push 0x1102
push dword [0x419040]
call ebx
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x80], eax
push dword [ebp - 0x10]
call dword [sym.imp.advapi32.dll_RegCloseKey]
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x1c]
push 0x100
lea eax, [ebp - 0x4b4]
push eax
push ebx
push edi
call dword [sym.imp.advapi32.dll_RegEnumKeyW]
inc ebx
test eax, eax
jne 0x401b2f
lea eax, [ebp - 0x10]
push eax
lea eax, [ebp - 0x4b4]
push eax
push edi
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
test eax, eax
jne 0x401c66
mov dword [ebp - 0x1c], ebx
mov ecx, dword [ebp - 0x10]
mov esi, dword [ebp - 0x28]
mov edx, esi
mov edi, dword [ebp + 0xc]
push edi
lea eax, [ebp - 0x4b4]
push eax
call dbg.CreateRegRec
add esp, 8
push esi
push 2
push 0x1102
push dword [0x419040]
call dword [sym.imp.user32.dll_SendMessageW]
test edi, edi
je 0x401c57
push 0xe
push str.ProgID
lea eax, [ebp - 0x4b4]
push eax
mov edi, dword [sym.imp.ucrtbase.dll_memcmp]
call edi
add esp, 0xc
test eax, eax
je 0x401df8
push 0x22
push str.ProxyStubClsid32
lea eax, [ebp - 0x4b4]
push eax
call edi
add esp, 0xc
test eax, eax
je 0x401b47
movdqu xmm0, xmmword [ebp - 0x4b4]
pcmpeqb xmm0, xmmword [0x40d030]
pmovmskb eax, xmm0
cmp eax, 0xffff
jne 0x401c57
mov dword [ebp - 0x14], 0x200
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x2b4]
push eax
push 0
push dword [ebp - 0x10]
mov eax, dword [sym.imp.advapi32.dll_RegQueryValueW]
call eax
push dword [ebp - 0x10]
mov edi, dword [sym.imp.advapi32.dll_RegCloseKey]
call edi
lea ebx, [ebp - 0x10]
push ebx
push 0x40d0ea
push 0x80000000
mov eax, dword [sym.imp.advapi32.dll_RegOpenKeyW]
call eax
mov dword [ebp - 0x18], 0x200
lea eax, [ebp - 0x18]
push eax
lea esi, [ebp - 0x4b4]
push esi
push 0
push dword [ebp - 0x10]
call dword [sym.imp.advapi32.dll_RegQueryValueW]
mov dword [ebp - 0x80], 0xffff0000
push esi
push 0x40d0ea
lea eax, [ebp - 0x98]
push eax
lea eax, [ebp - 0x6b4]
push eax
call dword [sym.imp.user32.dll_wsprintfW]
add esp, 0x10
lea eax, [ebp - 0x80]
push eax
push 0
push 0x1132
push dword [0x419040]
mov ebx, dword [sym.imp.user32.dll_SendMessageW]
call ebx
mov dword [ebp - 0x80], eax
push dword [ebp - 0x10]
call edi
push dword [ebp - 0x14]
lea esi, [ebp - 0x2b4]
push esi
lea edi, [ebp - 0x2a4]
push edi
call sym._memmove
add esp, 0xc
movdqa xmm0, xmmword [str.TypeLib_s_n_s]
movdqu xmmword [ebp - 0x2b4], xmm0
jmp 0x401c1e
mov dword [ebp - 0x14], 0x200
lea eax, [ebp - 0x14]
push eax
lea esi, [ebp - 0x2b4]
push esi
push 0
push dword [ebp - 0x10]
call dword [sym.imp.advapi32.dll_RegQueryValueW]
push dword [ebp - 0x10]
call dword [sym.imp.advapi32.dll_RegCloseKey]
lea eax, [ebp - 0x10]
push eax
push esi
push 0x80000000
call dword [sym.imp.advapi32.dll_RegOpenKeyW]
test eax, eax
mov edi, dword [ebp - 0x20]
mov ebx, dword [ebp - 0x1c]
jne 0x401c66
mov ecx, dword [ebp - 0x10]
mov edx, 0xffff0000
push 0
lea eax, [ebp - 0x2b4]
push eax
call dbg.CreateRegRec
add esp, 8
jmp 0x401c57