Function at 0x402cdc
Capabilities:
Query or enumerate registry value

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x5b8
xor r12d, r12d
mov qword [rsp + 0x600], rcx
lea rcx, [0x0040a464]
call fcn.00405bb0
mov rsi, qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
xor r8d, r8d
mov r9d, 0x108
mov qword [rsp + 0x48], rax
lea rax, [rsp + 0x88]
mov rdx, qword [rsp + 0x48]
mov rcx, 0xffffffff80000002
mov qword [rsp + 0x20], rax
call rsi
test eax, eax
jne 0x403132
mov ecx, 0x40000
call fcn.00404f00
mov r12, rax
test rax, rax
je 0x403124
lea rdx, [0x0040a3d0]
mov rcx, rax
xor ebx, ebx
call sub.msvcrt.dll_strcpy
lea rcx, [0x0040a4d3]
call fcn.00405bb0
lea rcx, [0x0040a4f2]
mov qword [rsp + 0x50], rax
call fcn.00405bb0
lea rcx, [0x0040a517]
mov qword [rsp + 0x58], rax
call fcn.00405bb0
lea rcx, [0x0040a536]
mov qword [rsp + 0x60], rax
call fcn.00405b30
lea rcx, [0x0040a540]
mov r13, rax
call fcn.00405b30
mov qword [rsp + 0x70], rsi
mov r14, rax
mov rax, qword [sym.imp.ADVAPI32.dll_RegEnumKeyExW]
mov qword [rsp + 0x68], rax
lea r10, [rsp + 0x1a0]
mov rax, qword [rsp + 0x68]
mov edx, ebx
mov dword [rsp + 0x80], 0x104
mov qword [rsp + 0x78], r10
mov r8, r10
mov rcx, qword [rsp + 0x88]
lea r9, [rsp + 0x80]
mov qword [rsp + 0x38], 0
mov qword [rsp + 0x30], 0
mov qword [rsp + 0x28], 0
mov qword [rsp + 0x20], 0
call rax
mov r10, qword [rsp + 0x78]
test eax, eax
jne 0x4030df
lea rax, [rsp + 0x90]
xor r8d, r8d
mov r9d, 0x101
mov rdx, r10
mov qword [rsp + 0x20], rax
mov rcx, qword [rsp + 0x88]
mov rax, qword [rsp + 0x70]
call rax
test eax, eax
jne 0x4030d8
lea rax, [rsp + 0x84]
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0x50]
lea rsi, [rsp + 0x3a8]
mov qword [rsp + 0x28], rax
mov rcx, qword [rsp + 0x90]
mov dword [rsp + 0x84], 0x104
mov qword [rsp + 0x20], rsi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4030ca
mov eax, dword [rsp + 0x84]
mov rcx, rsi
lea rbp, [rsp + 0x3a9]
mov byte [rsp + rax + 0x3a8], 0
mov eax, dword [rsp + 0x84]
mov byte [rsp + rax + 0x3a9], 0
call fcn.0040230e
mov r15, rax
test rax, rax
je 0x402f30
cmp byte [r12], 0
je 0x402eee
test ebx, ebx
je 0x402eee
mov rdx, r13
mov rcx, r12
call sub.msvcrt.dll_strcat
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, r15
mov rdx, r15
repne scasb al, byte [rdi]
lea r10, [rsp + 0x9c]
mov qword [rsp + 0x78], r10
not rcx
lea r8d, [rcx - 1]
mov rcx, r10
call fcn.004015b5
mov r10, qword [rsp + 0x78]
mov rcx, r12
mov rdx, r10
call sub.msvcrt.dll_strcat
mov rcx, r15
call fcn.00404f58
lea rax, [rsp + 0x84]
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0x58]
lea r15, [rsp + 0x3a8]
mov qword [rsp + 0x28], rax
mov rcx, qword [rsp + 0x90]
mov dword [rsp + 0x84], 0x104
mov qword [rsp + 0x20], r15
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x402fe7
mov eax, dword [rsp + 0x84]
mov rcx, r15
mov byte [rsi + rax], 0
mov eax, dword [rsp + 0x84]
mov byte [rax + rbp], 0
call fcn.0040230e
mov r15, rax
test rax, rax
je 0x402ffd
mov rdx, r13
mov rcx, r12
mov rdi, r15
call sub.msvcrt.dll_strcat
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdx, r15
repne scasb al, byte [rdi]
lea r10, [rsp + 0x9c]
mov qword [rsp + 0x78], r10
not rcx
lea r8d, [rcx - 1]
mov rcx, r10
call fcn.004015b5
mov r10, qword [rsp + 0x78]
mov rcx, r12
mov rdx, r10
call sub.msvcrt.dll_strcat
mov rcx, r15
call fcn.00404f58
jmp 0x402ffd
mov rdx, r13
mov rcx, r12
call sub.msvcrt.dll_strcat
mov rdx, r14
mov rcx, r12
call sub.msvcrt.dll_strcat
lea rax, [rsp + 0x84]
xor r9d, r9d
xor r8d, r8d
mov rdx, qword [rsp + 0x60]
lea rdi, [rsp + 0x3a8]
mov qword [rsp + 0x28], rax
mov rcx, qword [rsp + 0x90]
mov dword [rsp + 0x84], 0x104
mov qword [rsp + 0x20], rdi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
test eax, eax
jne 0x4030b4
mov eax, dword [rsp + 0x84]
mov rcx, rdi
mov byte [rsi + rax], 0
mov eax, dword [rsp + 0x84]
mov byte [rax + rbp], 0
call fcn.0040230e
mov rsi, rax
test rax, rax
je 0x4030ca
mov rdx, r13
mov rcx, r12
mov rdi, rsi
call sub.msvcrt.dll_strcat
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdx, rsi
repne scasb al, byte [rdi]
lea r9, [rsp + 0x9c]
mov qword [rsp + 0x78], r9
not rcx
lea r8d, [rcx - 1]
mov rcx, r9
call fcn.004015b5
mov r9, qword [rsp + 0x78]
mov rcx, r12
mov rdx, r9
call sub.msvcrt.dll_strcat
mov rcx, rsi
call fcn.00404f58
jmp 0x4030ca
mov rdx, r13
mov rcx, r12
call sub.msvcrt.dll_strcat
mov rdx, r14
mov rcx, r12
call sub.msvcrt.dll_strcat
mov rcx, qword [rsp + 0x90]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
inc ebx
jmp 0x402dc7
xor eax, eax
or rcx, 0xffffffffffffffff
mov rdi, r12
repne scasb al, byte [rdi]
mov rax, qword [rsp + 0x600]
not ecx
mov dword [rax], ecx
mov rcx, r14
call fcn.00405c32
mov rcx, r13
call fcn.00405c32
mov rcx, qword [rsp + 0x60]
call fcn.00405c32
mov rcx, qword [rsp + 0x58]
call fcn.00405c32
mov rcx, qword [rsp + 0x50]
call fcn.00405c32
mov rcx, qword [rsp + 0x88]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov rcx, qword [rsp + 0x48]
call fcn.00405c32
mov rax, r12
add rsp, 0x5b8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret