Function at 0x140046640
Capabilities:
Query environment variable

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rdi
sub rsp, 0x108
mov r8b, 1
xor edx, edx
mov rdi, rcx
call fcn.140025560
mov rbx, rax
test rax, rax
jne 0x14004666d
add rsp, 0x108
pop rdi
pop rbx
ret
cmp byte [rax + 0x23], 0
jne 0x140046677
mov rbx, qword [rax + 0x10]
movzx r10d, byte [rdi + 1]
mov qword [rsp + 0xf0], r12
cmp r10b, 1
jbe 0x1400466bc
mov rax, qword [rdi + 8]
mov rdx, qword [rax + 0x38]
test rdx, rdx
je 0x1400466bc
mov rdx, qword [rdx]
mov r8b, reloc.OLEAUT32.dll_SafeArrayGetElement
mov rcx, rbx
call fcn.140001460
mov r12, qword [rsp + 0xf0]
mov eax, 1
add rsp, 0x108
pop rdi
pop rbx
ret
mov qword [rsp + 0x100], rbp
mov qword [rsp + 0xe0], r14
xor r14d, r14d
mov qword [rsp + 0xd8], r15
cmp r10b, 2
jb 0x1400467cf
mov rcx, qword [rdi + 8]
mov rax, qword [rcx + 0x30]
test rax, rax
je 0x1400467cf
cmp qword [rax], r14
je 0x1400467cf
mov r8, qword [rcx + 0x30]
lea rbp, [rcx + 0x20]
mov r15, qword [r8 + 8]
movzx ecx, byte [r15 + 0x23]
test cl, cl
jne 0x14004671a
mov rax, qword [r15 + 0x10]
movzx edx, byte [rax + 0x23]
jmp 0x14004671d
movzx edx, cl
cmp dl, 3
jne 0x140046755
movzx eax, byte [rbx + 0x23]
cmp al, 2
jne 0x140046738
mov r12d, 1
mov eax, r12d
jmp 0x140046c90
test al, al
jne 0x140046740
mov rbx, qword [rbx + 0x10]
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.14008a5e0
mov r12d, eax
jmp 0x140046c90
test cl, cl
jne 0x140046764
mov rax, qword [r15 + 0x10]
movzx r9d, byte [rax + 0x21]
jmp 0x140046769
movzx r9d, byte [r15 + 0x21]
test r9b, 1
je 0x14004677f
mov rdx, r15
mov rcx, rbx
call fcn.14008a980
jmp 0x140046c90
cmp qword [r8 + 0x18], r14
jne 0x1400467d2
movzx eax, word [rbp + 2]
cmp word [r8 + 0x12], ax
jne 0x1400467d2
cmp dl, 1
jne 0x1400467c8
mov rax, qword [0x1400fcaa8]
cmp byte [rax + 0x134], r14b
je 0x1400467b8
test cl, cl
jne 0x1400467af
mov rax, qword [r15 + 0x10]
jmp 0x1400467b2
mov rax, r15
test byte [rax + 0x21], 8
je 0x1400467c8
mov rdx, r15
mov rcx, rbx
call fcn.14008a360
jmp 0x140046c90
mov qword [rsp + 0x38], r15
jmp 0x1400467da
mov rbp, r14
mov qword [rsp + 0x38], r14
mov r15, r14
xor r9b, r9b
mov qword [rsp + 0xf8], rsi
xor r8b, r8b
mov byte [rsp + 0x130], r9b
mov byte [rsp + 0x128], r8b
mov r12d, 1
test rbp, rbp
je 0x1400468cb
movzx eax, byte [rbx + 0x23]
test al, al
jne 0x140046817
mov rax, qword [rbx + 0x10]
movzx eax, byte [rax + 0x23]
cmp al, 2
je 0x1400468cb
mov rcx, qword [rbp + 0x10]
mov rdx, qword [rcx]
test rdx, rdx
je 0x1400468cb
nop
mov rax, qword [rcx + 8]
test r8b, r8b
je 0x14004688b
cmp byte [rax + 0x23], r14b
jne 0x140046843
mov rax, qword [rax + 0x10]
cmp rax, rbx
jne 0x1400468b8
xor r8b, r8b
mov byte [rsp + 0x128], r8b
test r9b, r9b
je 0x1400468cb
test r8b, r8b
jne 0x1400468cb
xor r9d, r9d
or r8, 0xffffffffffffffff
xor edx, edx
mov rcx, rdi
call fcn.1400690c0
cmp eax, r12d
jne 0x140046afc
mov edx, r12d
mov rcx, rdi
call fcn.140025290
lea rsi, [rax + 1]
jmp 0x140046a99
cmp byte [rax + 0x23], r14b
jne 0x140046895
mov rax, qword [rax + 0x10]
cmp rax, rbx
jne 0x1400468b8
movzx r9d, r12b
mov byte [rsp + 0x130], r12b
cmp rdx, qword [rbp + 8]
jne 0x14004685d
movzx r8d, r12b
mov byte [rsp + 0x128], r12b
mov rdx, qword [rcx + 0x18]
add rcx, 0x18
test rdx, rdx
jne 0x140046830
jmp 0x140046853
cmp r10b, 2
jb 0x140046c6d
mov qword [rsp + 0xe8], r13
test r15, r15
je 0x1400469b7
movzx ecx, byte [r15 + 0x23]
test ecx, ecx
je 0x1400469a0
sub ecx, r12d
je 0x14004693c
sub ecx, r12d
je 0x14004691c
cmp ecx, r12d
je 0x1400469ae
mov rdx, qword [r15 + 0x28]
xor ecx, ecx
call qword [r15 + reloc.OLEAUT32.dll_SafeArrayGetElement]
mov r14, rax
lea rsi, [rax + 1]
jmp 0x140046a91
xor edx, edx
call fcn.140004cf0
mov r13d, 0xffffffff
cmp rax, r13
cmove rax, r14
mov r14, rax
lea rsi, [rax + 1]
jmp 0x140046a91
mov rcx, r15
call fcn.140001500
cmp dword [0x140101c9c], r14d
jne 0x140046990
cmp qword [r15 + 0x10], r14
jne 0x140046990
mov rcx, qword [r15 + 0x28]
lea rdx, [rsp + 0x138]
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x140046980
mov qword [0x140107980], r14
lea r14d, [rax - 1]
lea rsi, [r14 + 1]
jmp 0x140046a91
mov qword [0x140107980], r15
lea rsi, [r14 + 1]
jmp 0x140046a91
mov r14, qword [r15 + 0x10]
shr r14, 1
lea rsi, [r14 + 1]
jmp 0x140046a91
mov rcx, qword [r15 + 0x10]
xor edx, edx
call fcn.14008b0c0
mov r14, rax
lea rsi, [r14 + 1]
jmp 0x140046a91
mov rax, qword [rdi + 8]
movzx ecx, word [rax + 0x22]
inc ecx
movsxd rsi, ecx
test rbp, rbp
je 0x140046a91
mov rbp, qword [rbp + 0x10]
cmp qword [rbp], r14
je 0x140046a91
mov r13d, 0xffffffff
mov rdi, qword [rbp + 8]
movzx eax, word [rbp + 0x12]
sub rsi, rax
movzx ecx, byte [rdi + 0x23]
test ecx, ecx
je 0x140046a75
sub ecx, r12d
je 0x140046a25
sub ecx, r12d
je 0x140046a15
cmp ecx, r12d
je 0x140046a67
mov rdx, qword [rdi + 0x28]
xor ecx, ecx
call qword [rdi + reloc.OLEAUT32.dll_SafeArrayGetElement]
jmp 0x140046a80
xor edx, edx
call fcn.140004cf0
cmp rax, r13
cmove rax, r14
jmp 0x140046a80
mov rcx, rdi
call fcn.140001500
cmp dword [0x140101c9c], r14d
jne 0x140046a6c
cmp qword [rdi + 0x10], r14
jne 0x140046a6c
mov rcx, qword [rdi + 0x28]
lea rdx, [rsp + 0x138]
xor r8d, r8d
call qword [sym.imp.KERNEL32.dll_GetEnvironmentVariableW]
test eax, eax
je 0x140046a60
mov qword [0x140107980], r14
dec eax
jmp 0x140046a80
mov qword [0x140107980], rdi
mov rax, r14
jmp 0x140046a80
mov rax, qword [rdi + 0x10]
shr rax, 1
jmp 0x140046a80
mov rcx, qword [rdi + 0x10]
xor edx, edx
call fcn.14008b0c0
add rbp, 0x18
add rsi, rax
cmp qword [rbp], r14
jne 0x1400469e1
mov r13, qword [rsp + 0xe8]
cmp rsi, 2
jb 0x140046c6d
movzx edi, byte [rsp + 0x128]
test dil, dil
je 0x140046b03
cmp byte [rbx + 0x23], 0
jne 0x140046abc
mov rax, qword [rbx + 0x10]
jmp 0x140046abf
mov rax, rbx
cmp byte [rax + 0x23], 2
jne 0x140046acd
mov eax, dword [0x140105ff8]
jmp 0x140046ad1
mov rax, qword [rax + 0x18]
mov rbp, qword [rsp + 0x120]
shr rax, 1
cmp rsi, rax
jbe 0x140046bbb
lea r9, [rsp + 0x30]
mov r8, rsi
xor edx, edx
mov rcx, rbp
call fcn.1400690c0
cmp eax, r12d
je 0x140046b0b
xor eax, eax
jmp 0x140046c88
mov rbp, qword [rsp + 0x120]
cmp byte [rsp + 0x130], 0
je 0x140046bbb
mov rdx, qword [0x1401051e8]
xor r9d, r9d
or r8, 0xffffffffffffffff
mov byte [rsp + 0x20], r12b
mov rcx, rbx
call fcn.14008ac50
test eax, eax
je 0x140046afc
mov rax, qword [0x1400fcaa8]
cmp byte [rax + 0x134], 0
je 0x140046c68
xor r8d, r8d
mov edx, r12d
mov rcx, rbx
call fcn.140001630
mov rdi, rax
cmp word [rax], 0
je 0x140046c68
mov rcx, rbx
call fcn.140015c00
mov rdx, rax
mov rcx, rdi
call fcn.1400155c0
mov rdx, rax
mov rcx, rbx
call fcn.140015bb0
cmp byte [rbx + 0x23], 0
jne 0x140046b8f
mov rbx, qword [rbx + 0x10]
cmp byte [rbx + 0x23], 2
jne 0x140046c64
cmp qword [0x140105fe8], 0
je 0x140046c64
lea rcx, [0x140105fd0]
call fcn.1400050c0
mov eax, r12d
jmp 0x140046c88
test dil, dil
jne 0x140046bdf
lea r8, [rsi - 1]
mov byte [rsp + 0x20], r12b
xor r9d, r9d
xor edx, edx
mov rcx, rbx
call fcn.14008ac50
cmp eax, r12d
jne 0x140046afc
xor r8d, r8d
mov edx, r12d
mov rcx, rbx
call fcn.140001630
mov r9, r15
mov r8d, r12d
mov rdx, rax
mov rcx, rbp
mov rdi, rax
call fcn.140069b00
mov rdx, rax
test rax, rax
je 0x140046afc
mov rax, qword [0x1400fcaa8]
sub rdx, rdi
sar rdx, 1
dec rdx
cmp byte [rax + 0x134], 0
je 0x140046c31
mov rcx, rdi
call fcn.1400155c0
mov rdx, rax
mov rcx, rbx
call fcn.140015bb0
cmp byte [rbx + 0x23], 0
jne 0x140046c43
mov rbx, qword [rbx + 0x10]
cmp byte [rbx + 0x23], 2
jne 0x140046c64
cmp qword [0x140105fe8], 0
je 0x140046c64
lea rcx, [0x140105fd0]
call fcn.1400050c0
mov r12d, eax
jmp 0x140046c88
and byte [rbx + 0x21], 0x86
mov eax, r12d
jmp 0x140046c88
xor r9d, r9d
mov byte [rsp + 0x20], r12b
or r8, 0xffffffffffffffff
lea rdx, [0x1400e8120]
mov rcx, rbx
call fcn.14008ac50
mov rsi, qword [rsp + 0xf8]
mov rbp, qword [rsp + 0x100]
mov r14, qword [rsp + 0xe0]
mov r15, qword [rsp + 0xd8]
mov r12, qword [rsp + 0xf0]
add rsp, 0x108
pop rdi
pop rbx
ret