Function at 0x100029624
Capabilities:
Query or enumerate registry value

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r14
push r15
sub rsp, 0x500
mov qword [rsp + 0x58], 0xfffffffffffffffe
mov rax, qword [0x10003a170]
xor rax, rsp
mov qword [rsp + 0x4f0], rax
mov r12d, r8d
mov r15, rdx
mov rsi, rcx
xor ebp, ebp
mov rax, qword [rcx + 0x230]
lea r14d, [rbp + 1]
test rax, rax
je 0x100029d51
cmp qword [rax + 0x3e0], rbp
je 0x100029d51
or rdi, 0xffffffffffffffff
mov edx, edi
mov rcx, r15
call fcn.100011be0
mov rbx, rax
mov qword [rsp + 0x50], rax
mov rax, qword [rsi + 0x230]
mov rcx, qword [rax + 0x3e0]
mov rax, qword [rcx]
lea r8, [rsp + 0x3c]
mov rdx, rbx
call qword [rax + 0x150]
test eax, eax
js 0x100029d2c
cmp r12d, r14d
jne 0x1000296e9
mov rax, qword [rsi + 0x230]
mov rcx, qword [rax + 0x3a8]
mov rax, qword [rcx]
lea r8, [rsp + 0x40]
mov edx, dword [rsp + 0x3c]
call qword [rax + 0x50]
cmp dword [rsp + 0x40], ebp
setne bpl
jmp 0x100029d48
cmp r12d, 2
jne 0x10002971e
mov rax, qword [rsi + 0x230]
mov rcx, qword [rax + 0x3c8]
mov rax, qword [rcx]
lea r9, [rsp + 0x40]
mov r8d, r12d
mov edx, dword [rsp + 0x3c]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
xor ebp, ebp
cmp dword [rsp + 0x40], ebp
sete bpl
jmp 0x100029d48
cmp r12d, 3
jne 0x100029aea
mov rdi, qword [rsi + 0x230]
cmp dword [rdi + 0x348], 6
jae 0x1000298ea
mov r14d, 0x208
mov r8, r14
xor edx, edx
lea rcx, [rsp + 0xd0]
call sub.msvcrt.dll_memset
mov r8, r14
xor edx, edx
lea rcx, [rsp + 0x2e0]
call sub.msvcrt.dll_memset
mov dword [rsp + 0x30], r14d
xor ebp, ebp
and qword [rsp + 0x48], rbp
mov rcx, qword [rdi + 0x410]
mov rax, qword [rcx]
lea r8, [rsp + 0x48]
xor edx, edx
call qword [rax + 0xd8]
test eax, eax
js 0x100029844
lea rcx, [rsp + 0x60]
lea rdx, [0x100009e50]
lea r8d, [r12 + 0x1d]
call sub.msvcrt.dll_memcpy
lea r8, [rsp + 0x30]
lea rdx, [rsp + 0x2e0]
mov rcx, qword [rsp + 0x48]
call fcn.100021dbc
xor eax, eax
or r8, 0xffffffffffffffff
mov rcx, r8
lea rdi, [rsp + 0x60]
repne scasw ax, word [rdi]
not rcx
lea r14d, [r12 - 2]
sub rcx, r14
mov rdx, rcx
mov rcx, r8
lea rdi, [rsp + 0x2e0]
repne scasw ax, word [rdi]
not rcx
sub rcx, r14
lea rax, [rdx + rcx + 1]
cmp rax, 0x104
jae 0x10002984e
xor ecx, ecx
movzx eax, word [rsp + rcx + 0x2e0]
mov word [rsp + rcx + 0xd0], ax
add rcx, 2
test ax, ax
jne 0x100029800
lea rdi, [rsp + 0xd0]
xor eax, eax
mov rcx, r8
repne scasw ax, word [rdi]
lea rcx, [rsp + 0x60]
xor edx, edx
movzx eax, word [rcx + rdx]
mov word [rdi + rdx - 2], ax
add rdx, 2
test ax, ax
jne 0x100029830
jmp 0x10002984e
mov r14d, 1
or r8, 0xffffffffffffffff
xor eax, eax
mov rcx, r8
lea rdi, [rsp + 0xd0]
repne scasw ax, word [rdi]
not rcx
cmp rcx, r14
je 0x1000298da
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, [rsp + 0xd0]
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x1000298da
mov dword [rsp + 0x30], 4
lea rax, [rsp + 0x30]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x38]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, [0x100009e70]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov edi, eax
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
cmove ebp, dword [rsp + 0x38]
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x100029d48
lea rcx, [rsp + 0x80]
lea rdx, [0x100009e90]
mov r8d, 0x4a
call sub.msvcrt.dll_memcpy
xor ebp, ebp
xor esi, esi
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, [0x100009ee0]
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
mov r14d, 0x208
test eax, eax
jne 0x1000299ea
mov r8, r14
xor edx, edx
lea rcx, [rsp + 0xd0]
call sub.msvcrt.dll_memset
mov dword [rsp + 0x38], r14d
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0xd0]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, [0x100009f50]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov edi, eax
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x1000299ea
lea r8, [rsp + 0xd0]
lea rdx, [0x100009f60]
lea ecx, [rbp + 1]
call fcn.10000f87c
lea rcx, [rsp + 0x80]
call qword [sym.imp.msvcrt.dll__wcslwr]
mov rdi, rax
lea rcx, [rsp + 0xd0]
call qword [sym.imp.msvcrt.dll__wcslwr]
sub rdi, rax
movzx edx, word [rax]
movzx ecx, word [rax + rdi]
sub edx, ecx
jne 0x1000299e0
add rax, 2
test ecx, ecx
jne 0x1000299cd
test edx, edx
mov eax, 1
cmove ebp, eax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, [0x100009fa0]
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x100029ac8
mov r8, r14
xor edx, edx
lea rcx, [rsp + 0xd0]
call sub.msvcrt.dll_memset
mov dword [rsp + 0x38], r14d
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0xd0]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, [0x100009f50]
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov edi, eax
mov rcx, qword [rsp + 0x30]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x100029ad0
lea r8, [rsp + 0xd0]
lea rdx, [0x10000a000]
lea r14d, [rdi + 1]
mov ecx, r14d
call fcn.10000f87c
lea rcx, [rsp + 0x80]
call qword [sym.imp.msvcrt.dll__wcslwr]
mov rdi, rax
lea rcx, [rsp + 0xd0]
call qword [sym.imp.msvcrt.dll__wcslwr]
sub rdi, rax
movzx edx, word [rax]
movzx ecx, word [rax + rdi]
sub edx, ecx
jne 0x100029ac0
add rax, 2
test ecx, ecx
jne 0x100029aad
test edx, edx
cmove esi, r14d
jmp 0x100029ad6
mov r14d, 1
jmp 0x100029ad6
mov r14d, 1
test ebp, ebp
jne 0x100029ae2
test esi, esi
je 0x100029d48
mov ebp, r14d
jmp 0x100029d48
cmp r12d, 4
jne 0x100029b5f
mov rax, qword [rsi + 0x230]
cmp dword [rax + 0x348], 6
jae 0x100029b07
xor ebp, ebp
jmp 0x100029d48
mov edx, edi
lea rcx, [0x10000a040]
call fcn.100011be0
mov rdi, rax
mov qword [rsp + 0x48], rax
mov rax, qword [rsi + 0x230]
mov rcx, qword [rax + 0x3e0]
mov rax, qword [rcx]
lea rdx, [rsp + 0x38]
mov qword [rsp + 0x20], rdx
mov r9, rdi
mov r8d, 2
mov edx, dword [rsp + 0x3c]
call qword [rax + 0x198]
test eax, eax
cmovns ebp, r14d
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
jmp 0x100029d48
cmp r12d, 5
jne 0x100029bcc
xor ebp, ebp
and dword [rsp + 0x30], ebp
mov edx, edi
lea rcx, [0x100004050]
call fcn.100011be0
mov rdi, rax
mov qword [rsp + 0x48], rax
mov rax, qword [rsi + 0x230]
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rdi
xor r9d, r9d
xor edx, edx
mov r8d, r12d
mov rcx, qword [rax + 0x408]
call fcn.100011d64
test eax, eax
setns sil
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test sil, sil
je 0x100029d48
mov ebp, dword [rsp + 0x30]
jmp 0x100029d48
cmp r12d, 6
jne 0x100029c3b
xor ebp, ebp
and dword [rsp + 0x30], ebp
mov edx, edi
lea rcx, [0x100004020]
call fcn.100011be0
mov rdi, rax
mov qword [rsp + 0x48], rax
mov rax, qword [rsi + 0x230]
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rdi
xor r9d, r9d
xor edx, edx
lea r8d, [r12 - 1]
mov rcx, qword [rax + 0x408]
call fcn.100011d64
test eax, eax
setns sil
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test sil, sil
je 0x100029d48
mov ebp, dword [rsp + 0x30]
jmp 0x100029d48
cmp r12d, 9
jne 0x100029caa
xor ebp, ebp
and dword [rsp + 0x30], ebp
mov edx, edi
lea rcx, [0x100005878]
call fcn.100011be0
mov rdi, rax
mov qword [rsp + 0x48], rax
mov rax, qword [rsi + 0x230]
lea rcx, [rsp + 0x30]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x20], rdi
xor r9d, r9d
xor edx, edx
lea r8d, [r12 - 4]
mov rcx, qword [rax + 0x408]
call fcn.100011d64
test eax, eax
setns sil
mov rcx, rdi
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
test sil, sil
je 0x100029d48
mov ebp, dword [rsp + 0x30]
jmp 0x100029d48
cmp r12d, 0xa
jne 0x100029d48
mov dword [rsp + 0x38], 4
xor ebp, ebp
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
mov r9d, 0x20019
xor r8d, r8d
lea rdx, [0x1000040c0]
mov rcx, 0xffffffff80000002
call qword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x100029d48
lea rax, [rsp + 0x38]
mov qword [rsp + 0x28], rax
lea rax, [rsp + 0x30]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, [0x10000a060]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov edi, eax
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_RegCloseKey]
test edi, edi
jne 0x100029d48
mov ebp, dword [rsp + 0x30]
jmp 0x100029d48
mov dword [rsp + 0x20], eax
mov r9d, dword [rsp + 0x3c]
mov r8, rbx
lea rdx, [0x10000a080]
mov ecx, r14d
call fcn.10000f87c
nop
mov rcx, rbx
call qword [sym.imp.OLEAUT32.dll_SysStringLen]
mov dword [rsp + 0x20], ebp
mov r9d, r12d
mov r8, r15
lea rdx, [0x10000a0d8]
mov ecx, r14d
call fcn.10000f87c
mov eax, ebp
mov rcx, qword [rsp + 0x4f0]
xor rcx, rsp
call fcn.100033800
add rsp, 0x500
pop r15
pop r14
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret