Function at 0x140020990
Capabilities:
Query or enumerate registry value

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
mov rbx, rdx
mov rsi, rcx
mov rdi, qword [rsp + 0x130]
add r9, r8
mov qword [rsp + 0x40], r8
mov qword [rsp + 0x48], r9
mov word [rsp + 0x50], 0
mov dword [rsp + 0x58], 1
lea rcx, [rsp + 0x98]
lea rdx, [rsp + 0x40]
call sym._ZN98__LT_alloc..vec..Vec_LT_T_GT__u20_as_u20_alloc..vec..spec_from_iter..SpecFromIter_LT_T_C_I_GT__GT_9from_iter17h2067f8b42f
mov rax, qword [rsp + 0x138]
add rax, rdi
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0x48], rax
mov word [rsp + 0x50], 0
mov dword [rsp + 0x58], 1
lea rcx, [rsp + 0x80]
lea r14, [rsp + 0x40]
mov rdx, r14
call sym._ZN98__LT_alloc..vec..Vec_LT_T_GT__u20_as_u20_alloc..vec..spec_from_iter..SpecFromIter_LT_T_C_I_GT__GT_9from_iter17h2067f8b42f
mov rdi, qword [rsp + 0xa0]
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x20], r14
mov rcx, rbx
mov rdx, rdi
xor r8d, r8d
mov r9d, 0x20019
call sub.ADVAPI32.dll_RegOpenKeyExW
test eax, eax
je 0x140020a69
movabs rax, 0x8000000000000000
mov qword [rsi], rax
mov rdx, qword [rsp + 0x80]
test rdx, rdx
jne 0x140020c55
jmp 0x140020c6b
mov rbx, qword [rsp + 0x40]
mov dword [rsp + 0x3c], 0x800
mov rax, qword [0x1400ff528]
movzx eax, byte [rax]
mov ecx, 0x800
mov edx, 1
call sym.__rust_alloc
test rax, rax
je 0x140020ca0
mov r15, rax
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x60], 0x800
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x70], 0
mov r14, qword [rsp + 0x88]
lea r13, [rsp + 0x3c]
lea r12, [rsp + 0x40]
mov rdi, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x70]
sub rdi, rbp
nop word cs:[rax + rax]
mov dword [rsp + 0x40], 0
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], r15
mov rcx, rbx
mov rdx, r14
xor r8d, r8d
mov r9, r12
call sub.ADVAPI32.dll_RegQueryValueExW
cmp eax, 0xea
jne 0x140020b28
mov r8d, dword [rsp + 0x3c]
cmp rdi, r8
jae 0x140020ae0
lea rcx, [rsp + 0x60]
mov rdx, rbp
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h6c2a5b235ccc591d
mov r15, qword [rsp + 0x68]
jmp 0x140020ac9
test eax, eax
jne 0x140020c14
mov eax, dword [rsp + 0x3c]
mov r15, qword [rsp + 0x68]
mov ecx, eax
and ecx, 0xfffffffe
add rcx, r15
mov qword [rsp + 0xb0], r15
mov qword [rsp + 0xb8], rcx
mov word [rsp + 0xc0], 0
mov qword [rsp + 0x40], 0
mov qword [rsp + 0x48], 1
mov qword [rsp + 0x50], 0
mov r8d, eax
shr r8d, 2
bt eax, 1
adc r8, 0
mov rdi, qword [rsp + 0x78]
je 0x140020b98
lea rcx, [rsp + 0x40]
xor edx, edx
call sym.alloc::raw_vec::RawVec_T_A_::reserve::do_reserve_and_handle::h6c2a5b235ccc591d
lea rcx, [rsp + 0xb0]
lea rdx, [rsp + 0x40]
call sym._ZN102__LT_core..iter..adapters..map..Map_LT_I_C_F_GT__u20_as_u20_core..iter..traits..iterator..Iterator_GT_4fold17h99296544d9
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x48]
mov rdx, qword [rsp + 0x50]
test rdx, rdx
je 0x140020bcc
nop
cmp byte [rcx + rdx - 1], 0
jne 0x140020bce
dec rdx
jne 0x140020bc0
xor edx, edx
mov qword [rsi], rax
mov qword [rsi + 8], rcx
mov qword [rsi + 0x10], rdx
mov rdx, qword [rsp + 0x60]
test rdx, rdx
je 0x140020bf1
mov r8d, 1
mov rcx, r15
call sym.__rust_dealloc
mov rcx, rbx
call fcn.1400d0b14
mov rdx, qword [rsp + 0x80]
test rdx, rdx
je 0x140020c6b
add rdx, rdx
mov r8d, 2
mov rcx, r14
jmp 0x140020c66
movabs rax, 0x8000000000000000
mov qword [rsi], rax
mov rdx, qword [rsp + 0x60]
test rdx, rdx
mov rdi, qword [rsp + 0x78]
je 0x140020c40
mov rcx, qword [rsp + 0x68]
mov r8d, 1
call sym.__rust_dealloc
mov rcx, rbx
call fcn.1400d0b14
mov rdx, qword [rsp + 0x80]
test rdx, rdx
je 0x140020c6b
mov rcx, qword [rsp + 0x88]
add rdx, rdx
mov r8d, 2
call sym.__rust_dealloc
mov rdx, qword [rsp + 0x98]
test rdx, rdx
je 0x140020c89
add rdx, rdx
mov r8d, 2
mov rcx, rdi
call sym.__rust_dealloc
mov rax, rsi
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov ecx, 1
mov edx, 0x800
call sym.alloc::raw_vec::handle_error::hd43ffb3afada7951
ud2