Function at 0x100454d90
Capabilities:
Query environment variable
Query or enumerate registry value

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x88
mov rax, qword [0x100499010]
xor rax, rsp
mov qword [rsp + 0x70], rax
cmp dword [0x1004add50], 0
mov r12, r9
mov rax, qword [rsp + 0xf0]
mov r15, r8
mov r13, qword [rsp + 0xf8]
mov rbx, rdx
mov qword [rsp + 0x38], rax
mov rsi, rcx
mov qword [rsp + 0x40], r9
je 0x1004550ab
call fcn.100453f70
mov rdi, rax
test rdx, rdx
je 0x100454df9
cmp word [rdx], 0
jne 0x100454e00
lea rbx, [0x100480814]
mov r8d, 5
lea rdx, [rsp + 0x60]
lea rcx, str.__MSSQL_XCOPY_SETUP
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x100454e2f
mov rdx, rbx
mov rcx, rdi
call fcn.1004546f0
mov r14, rax
test rax, rax
jne 0x100454e46
mov rdx, rbx
mov rcx, rdi
call fcn.100454370
mov r14, rax
test rax, rax
je 0x100455097
mov eax, 0xffff
cmp word [r14], ax
jne 0x100454e63
cmp word [r14 + 2], 0
jne 0x100454e63
mov edi, 2
jmp 0x100455074
xor edi, edi
lea r9, [rsp + 0x30]
xor r8d, r8d
mov dword [rsp + 0x30], edi
lea rdx, [0x100480818]
mov rcx, r14
lea r15d, [rdi + 1]
call fcn.100456a30
lea ebp, [rdi + 4]
cmp eax, r15d
jne 0x100454e99
mov r15d, ebp
lea rsi, [rsp + 0x30]
jmp 0x100455034
lea rax, str.hex:
mov dword [rsp + 0x28], ebp
mov r9d, ebp
mov qword [rsp + 0x20], rax
mov r8, r14
mov edx, r15d
mov ecx, 0x400
mov esi, edi
call qword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x100454ecc
mov esi, ebp
lea r15d, [rax + 1]
jmp 0x100454f33
lea rax, str.hex_
mov dword [rsp + 0x28], ebp
mov r9d, ebp
mov qword [rsp + 0x20], rax
mov r8, r14
mov edx, r15d
mov ecx, 0x400
call qword [sym.imp.KERNEL32.dll_CompareStringW]
cmp eax, 2
jne 0x100454f33
lea rbx, [r14 + 8]
xor r8d, r8d
mov rcx, rbx
lea r9, [rsp + 0x34]
lea rdx, str._d_:
call fcn.100456a30
cmp eax, r15d
jne 0x100454f33
cmp word [rbx], 0x3a
mov esi, ebp
je 0x100454f2c
nop dword [rax]
inc esi
lea rbx, [rbx + 2]
cmp word [rbx], 0x3a
jne 0x100454f20
mov r15d, dword [rsp + 0x34]
inc esi
mov rdx, 0xffffffffffffffff
nop word [rax + rax]
inc rdx
cmp word [r14 + rdx*2], di
jne 0x100454f40
test esi, esi
je 0x100455051
movsxd rcx, esi
lea r9, [rsp + 0x30]
sub rdx, rcx
movabs rax, 0xaaaaaaaaaaaaaaab
mul rdx
lea rbx, [r14 + rcx*2]
xor r8d, r8d
mov rbp, rdx
mov rsi, r14
shr rbp, 1
lea rdx, str._08x
mov rcx, rbx
inc ebp
mov r12d, edi
call fcn.100456a30
cmp eax, 1
jne 0x100455003
movzx eax, word [rbx]
cmp ax, 0x2c
je 0x100454fb3
nop dword [rax]
test ax, ax
je 0x100454fb3
movzx eax, word [rbx + 2]
add rbx, 2
cmp ax, 0x2c
jne 0x100454fa0
movzx eax, byte [rsp + 0x30]
inc r12d
mov byte [rsi], al
mov rdx, rbx
movzx eax, word [rbx]
inc rsi
movzx ecx, ax
cmp ax, 0x2c
jne 0x100454fd3
movzx ecx, word [rbx + 2]
add rbx, 2
cmp ax, 0x2c
cmovne rbx, rdx
test cx, cx
je 0x100455000
lea r9, [rsp + 0x30]
xor r8d, r8d
lea rdx, str._08x
mov rcx, rbx
call fcn.100456a30
cmp eax, 1
je 0x100454f93
mov rsi, r14
cmp ebp, r12d
je 0x10045500f
mov edi, SQLFreeStmt
jmp 0x100455074
lea eax, [r15 - 1]
cmp eax, 1
jbe 0x10045501e
cmp r15d, 7
jne 0x10045502f
test bpl, 1
jne 0x100455008
movsxd rax, r12d
add ebp, 2
mov word [rax + r14], di
mov r12, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x100455062
cmp dword [r13], ebp
jb 0x10045505d
mov r8d, ebp
mov rdx, rsi
call sub.VCRUNTIME140.dll_memcpy
jmp 0x100455062
lea ebp, [rdx*2 + 2]
mov rsi, r14
jmp 0x100455034
mov edi, 0xea
test r12, r12
je 0x10045506b
mov dword [r12], r15d
test r13, r13
je 0x100455074
mov dword [r13], ebp
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, r14
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, edi
jmp 0x1004551d2
mov edi, 8
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, edi
jmp 0x1004551d2
cmp dword [0x1004adcdc], 0
je 0x1004551c2
mov eax, 0x80000000
xor edi, edi
add rax, rcx
cmp rax, 6
jbe 0x1004550ec
movups xmm0, xmmword [rcx]
movsd xmm1, qword [rcx + 0x10]
movups xmmword [rsp + 0x48], xmm0
mov rax, qword [rsp + 0x50]
mov rsi, qword [rsp + 0x48]
movsd qword [rsp + 0x58], xmm1
mov r14d, dword [rsp + 0x58]
jmp 0x1004550f4
call fcn.100453f70
mov r14d, edi
mov rcx, rax
call fcn.1004546f0
mov rbp, rax
test rax, rax
jne 0x10045514f
test r14d, r14d
jne 0x10045513b
mov rcx, qword [rsp + 0x38]
mov r9, r12
mov qword [rsp + 0x28], r13
mov r8, r15
mov qword [rsp + 0x20], rcx
mov rdx, rbx
mov rcx, rsi
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov ecx, eax
mov ebx, eax
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, ebx
jmp 0x1004551d2
mov edi, 2
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, edi
jmp 0x1004551d2
test r12, r12
je 0x10045515e
mov r15d, 1
mov dword [r12], r15d
mov rdx, 0xffffffffffffffff
cmp word [rax + rdx*2 + 2], di
lea rdx, [rdx + 1]
jne 0x100455165
mov rcx, qword [rsp + 0x38]
lea ebx, [rdx*2 + 2]
test rcx, rcx
je 0x100455199
cmp dword [r13], ebx
jb 0x100455194
mov r8d, ebx
mov rdx, rbp
call sub.VCRUNTIME140.dll_memcpy
jmp 0x100455199
mov edi, 0xea
test r13, r13
je 0x1004551a2
mov dword [r13], ebx
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov r8, rbp
xor edx, edx
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_HeapFree]
mov ecx, edi
call qword [sym.imp.KERNEL32.dll_SetLastError]
mov eax, edi
jmp 0x1004551d2
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_RegQueryValueExW]
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.100469360
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret