Function at 0x3bea3b9e0
Capabilities:
Query environment variable

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x98
mov qword [rcx], 0
mov rbx, rcx
mov rsi, rdx
test rdx, rdx
je 0x3bea3c2ba
call fcn.3bea387a0
cmp byte [rsi], 0x43
je 0x3bea3ba50
lea rdx, [0x3bea87320]
mov rcx, rsi
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x3bea3ba60
mov rax, qword [0x3bea8d420]
mov rax, qword [rax]
mov qword [rbx], rax
lock add dword [rax], 1
add rsp, 0x98
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp byte [rsi + 1], 0
je 0x3bea3ba26
jmp 0x3bea3ba13
cmp byte [rsi], 0
jne 0x3bea3bac0
lea rcx, str.LC_ALL
call sub.msvcrt.dll_getenv
mov rsi, rax
test rax, rax
je 0x3bea3baf0
cmp byte [rax], 0
je 0x3bea3baf0
cmp byte [rax], 0x43
je 0x3bea3c1b0
lea rdx, [0x3bea87320]
mov rcx, rsi
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x3bea3ba26
mov ecx, 0x28
call sym.libstdc_6.dll_operator_new_unsigned_long_long_
mov r8d, 1
mov rdx, rsi
mov rcx, rax
mov rdi, rax
call method.std::locale::_Impl._Impl_char_const__unsigned_long_long_
jmp 0x3bea3bade
mov ecx, 0x28
call sym.libstdc_6.dll_operator_new_unsigned_long_long_
mov r8d, 1
mov rdx, rsi
mov rcx, rax
mov rdi, rax
call method.std::locale::_Impl._Impl_char_const__unsigned_long_long_
mov qword [rbx], rdi
jmp 0x3bea3ba37
lea rax, [rsp + 0x60]
lea rcx, str.LANG
mov byte [rsp + 0x60], 0
mov qword [rsp + 0x48], rax
mov qword [rsp + 0x50], rax
mov qword [rsp + 0x58], 0
call sub.msvcrt.dll_getenv
mov rsi, rax
test rax, rax
je 0x3bea3bb78
cmp byte [rax], 0
je 0x3bea3bb78
cmp byte [rax], 0x43
jne 0x3bea3bb38
cmp byte [rax + 1], 0
je 0x3bea3bb78
nop dword [rax]
lea rdx, [0x3bea87320]
mov rcx, rsi
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x3bea3bb78
mov rcx, rsi
lea r12, [rsp + 0x50]
call sub.msvcrt.dll_strlen
mov r8, qword [rsp + 0x58]
mov r9, rsi
xor edx, edx
mov qword [rsp + 0x20], rax
mov rcx, r12
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_replace_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
jmp 0x3bea3bb9c
mov qword [rsp + 0x20], 1
lea r12, [rsp + 0x50]
mov r8, qword [rsp + 0x58]
xor edx, edx
lea r9, [0x3bea87332]
mov rcx, r12
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_replace_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
lea r13, [0x3bea87332]
mov rcx, r12
xor edi, edi
mov rdx, r13
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.compare_char_const__const
mov rdx, qword [0x3bea8d430]
mov rbp, qword [rdx]
test eax, eax
jne 0x3bea3bc79
nop word [rax + rax]
mov rcx, qword [rbp + rdi*8]
call sub.msvcrt.dll_getenv
mov rsi, rax
test rax, rax
je 0x3bea3bc10
cmp byte [rax], 0
je 0x3bea3bc10
cmp byte [rax], 0x43
jne 0x3bea3bbf0
cmp byte [rax + 1], 0
je 0x3bea3bc10
nop word [rax + rax]
lea rdx, [0x3bea87320]
mov rcx, rsi
call sub.msvcrt.dll_strcmp
test eax, eax
jne 0x3bea3bc92
nop word [rax + rax]
add rdi, 1
cmp rdi, 6
jne 0x3bea3bbc8
mov rdx, r13
mov rcx, r12
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.compare_char_const__const
test eax, eax
jne 0x3bea3c240
mov rax, qword [0x3bea8d420]
mov rax, qword [rax]
mov qword [rbx], rax
lock add dword [rax], 1
nop
mov rcx, qword [rsp + 0x50]
mov rax, qword [rsp + 0x48]
cmp rcx, rax
je 0x3bea3ba37
call sym.libstdc_6.dll_operator_delete_void_
jmp 0x3bea3ba37
mov rdx, rax
mov rcx, r12
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.compare_char_const__const
test eax, eax
jne 0x3bea3bc92
add rdi, 1
cmp rdi, 6
je 0x3bea3bc1a
mov rcx, qword [rbp + rdi*8]
call sub.msvcrt.dll_getenv
mov rsi, rax
test rax, rax
je 0x3bea3bc6f
cmp byte [rax], 0
je 0x3bea3bc6f
jmp 0x3bea3bc60
lea rax, [rsp + 0x70]
mov edx, pe_nt_image_headers64
lea r12, [rsp + 0x80]
mov qword [rsp + 0x78], 0
mov rcx, rax
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x70], r12
mov byte [rsp + 0x80], 0
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.reserve_unsigned_long_long_
test rdi, rdi
je 0x3bea3be30
lea rax, [rbp + rdi*8]
mov r14, rbp
mov qword [rsp + 0x40], rax
jmp 0x3bea3bd75
mov byte [rax + r13], 0x3d
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x78], r15
mov byte [rax + r13 + 1], 0
mov r8, qword [rsp + 0x58]
movabs rax, 0x3fffffffffffffff
sub rax, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x50]
cmp rax, r8
jb 0x3bea3c2de
mov rcx, qword [rsp + 0x38]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
mov r13, qword [rsp + 0x78]
mov rax, qword [rsp + 0x70]
lea r15, [r13 + 1]
cmp rax, r12
je 0x3bea3c1a0
mov rdx, qword [rsp + 0x80]
cmp rdx, r15
jb 0x3bea3be00
mov byte [rax + r13], 0x3b
mov rax, qword [rsp + 0x70]
add r14, 8
mov qword [rsp + 0x78], r15
mov byte [rax + r13 + 1], 0
cmp qword [rsp + 0x40], r14
je 0x3bea3be30
mov r13, qword [r14]
mov rcx, r13
call sub.msvcrt.dll_strlen
mov r8, rax
movabs rax, 0x3fffffffffffffff
sub rax, qword [rsp + 0x78]
cmp rax, r8
jb 0x3bea3c2ea
mov rcx, qword [rsp + 0x38]
mov rdx, r13
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
mov r13, qword [rsp + 0x78]
mov rax, qword [rsp + 0x70]
lea r15, [r13 + 1]
cmp rax, r12
je 0x3bea3c190
mov rdx, qword [rsp + 0x80]
cmp rdx, r15
jae 0x3bea3bce8
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
xor r8d, r8d
mov rdx, r13
mov qword [rsp + 0x20], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_mutate_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
mov rax, qword [rsp + 0x70]
jmp 0x3bea3bce8
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
xor r8d, r8d
mov rdx, r13
mov qword [rsp + 0x20], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_mutate_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
mov rax, qword [rsp + 0x70]
jmp 0x3bea3bd51
mov r13, qword [rbp + rdi*8]
mov rcx, r13
call sub.msvcrt.dll_strlen
mov r8, rax
movabs rax, 0x3fffffffffffffff
sub rax, qword [rsp + 0x78]
cmp rax, r8
jb 0x3bea3c302
mov rcx, qword [rsp + 0x38]
mov rdx, r13
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
mov r13, qword [rsp + 0x78]
mov rax, qword [rsp + 0x70]
lea r14, [r13 + 1]
cmp rax, r12
je 0x3bea3c280
mov rdx, qword [rsp + 0x80]
cmp rdx, r14
jb 0x3bea3c1f0
mov byte [rax + r13], 0x3d
mov rax, qword [rsp + 0x70]
mov rcx, rsi
mov qword [rsp + 0x78], r14
mov byte [rax + r13 + 1], 0
call sub.msvcrt.dll_strlen
mov r8, rax
movabs rax, 0x3fffffffffffffff
sub rax, qword [rsp + 0x78]
cmp rax, r8
jb 0x3bea3c30e
mov rcx, qword [rsp + 0x38]
mov rdx, rsi
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
mov rsi, qword [rsp + 0x78]
mov rax, qword [rsp + 0x70]
lea r13, [rsi + 1]
cmp rax, r12
je 0x3bea3c270
mov rdx, qword [rsp + 0x80]
cmp rdx, r13
jb 0x3bea3c1c0
mov byte [rax + rsi], 0x3b
mov rax, qword [rsp + 0x70]
movabs r14, 0x3fffffffffffffff
lea r15, [0x3bea87349]
mov qword [rsp + 0x78], r13
lea r13, [rdi + 1]
mov byte [rax + rsi + 1], 0
cmp rdi, 5
je 0x3bea3bfc6
nop dword [rax]
mov rcx, qword [rbp + r13*8]
call sub.msvcrt.dll_getenv
mov rdi, qword [rbp + r13*8]
mov rsi, rax
mov rcx, rdi
call sub.msvcrt.dll_strlen
mov r8, rax
mov rax, r14
sub rax, qword [rsp + 0x78]
cmp rax, r8
jb 0x3bea3c2d2
mov rcx, qword [rsp + 0x38]
mov rdx, rdi
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
mov rdi, qword [rsp + 0x78]
test rsi, rsi
je 0x3bea3c0a8
cmp byte [rsi], 0
je 0x3bea3c0a8
cmp byte [rsi], 0x43
jne 0x3bea3c020
cmp byte [rsi + 1], 0
jne 0x3bea3c020
mov rax, r14
sub rax, rdi
cmp rax, 2
jbe 0x3bea3c31a
mov rcx, qword [rsp + 0x38]
mov r8d, 3
mov rdx, r15
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
add r13, 1
cmp r13, 6
jne 0x3bea3bf30
mov rax, qword [rsp + 0x78]
mov rcx, qword [rsp + 0x38]
mov r8d, 1
lea rdx, [rax - 1]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_erase_unsigned_long_long__unsigned_long_long_
mov ecx, 0x28
call sym.libstdc_6.dll_operator_new_unsigned_long_long_
mov rdx, qword [rsp + 0x70]
mov r8d, 1
mov rcx, rax
mov rsi, rax
call method.std::locale::_Impl._Impl_char_const__unsigned_long_long_
mov rcx, qword [rsp + 0x70]
mov qword [rbx], rsi
cmp rcx, r12
je 0x3bea3bc40
call sym.libstdc_6.dll_operator_delete_void_
jmp 0x3bea3bc40
lea rdx, [0x3bea87320]
mov rcx, rsi
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x3bea3bf95
lea rax, [rdi + 1]
mov qword [rsp + 0x40], rax
mov rax, qword [rsp + 0x70]
cmp rax, r12
je 0x3bea3c2b0
mov rdx, qword [rsp + 0x80]
mov rcx, qword [rsp + 0x40]
cmp rdx, rcx
jb 0x3bea3c28a
mov byte [rax + rdi], 0x3d
mov rax, qword [rsp + 0x40]
mov rcx, rsi
mov qword [rsp + 0x78], rax
mov rax, qword [rsp + 0x70]
mov byte [rax + rdi + 1], 0
call sub.msvcrt.dll_strlen
mov r8, rax
movabs rax, 0x3fffffffffffffff
sub rax, qword [rsp + 0x78]
cmp rax, r8
jb 0x3bea3c2f6
mov rdx, rsi
jmp 0x3bea3c0f9
mov rax, qword [rsp + 0x70]
lea rsi, [rdi + 1]
cmp rax, r12
je 0x3bea3c230
mov rdx, qword [rsp + 0x80]
cmp rdx, rsi
jb 0x3bea3c168
mov byte [rax + rdi], 0x3d
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x78], rsi
mov byte [rax + rdi + 1], 0
mov r8, qword [rsp + 0x58]
mov rax, r14
sub rax, qword [rsp + 0x78]
mov rdx, qword [rsp + 0x50]
cmp rax, r8
jb 0x3bea3c2c6
mov rcx, qword [rsp + 0x38]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_append_char_const__unsigned_long_long_
mov rsi, qword [rsp + 0x78]
mov rax, qword [rsp + 0x70]
lea rdi, [rsi + 1]
cmp rax, r12
je 0x3bea3c220
mov rdx, qword [rsp + 0x80]
cmp rdx, rdi
jb 0x3bea3c140
mov byte [rax + rsi], 0x3b
mov rax, qword [rsp + 0x70]
mov qword [rsp + 0x78], rdi
mov byte [rax + rsi + 1], 0
jmp 0x3bea3bfb8
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
xor r8d, r8d
mov rdx, rsi
mov qword [rsp + 0x20], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_mutate_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
mov rax, qword [rsp + 0x70]
jmp 0x3bea3c127
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
mov qword [rsp + 0x20], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_mutate_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
mov rax, qword [rsp + 0x70]
jmp 0x3bea3c0cb
mov edx, 0xf
jmp 0x3bea3bdc7
mov edx, 0xf
jmp 0x3bea3bd48
cmp byte [rax + 1], 0
je 0x3bea3ba26
jmp 0x3bea3ba87
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
xor r8d, r8d
mov rdx, rsi
mov qword [rsp + 0x20], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_mutate_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
mov rax, qword [rsp + 0x70]
jmp 0x3bea3befa
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
xor r8d, r8d
mov rdx, r13
mov qword [rsp + 0x20], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_mutate_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
mov rax, qword [rsp + 0x70]
jmp 0x3bea3be8d
mov edx, 0xf
jmp 0x3bea3c122
mov edx, 0xf
jmp 0x3bea3c0c2
mov ecx, 0x28
call sym.libstdc_6.dll_operator_new_unsigned_long_long_
mov rdx, qword [rsp + 0x50]
mov r8d, 1
mov rcx, rax
mov rsi, rax
call method.std::locale::_Impl._Impl_char_const__unsigned_long_long_
mov qword [rbx], rsi
jmp 0x3bea3bc40
mov edx, 0xf
jmp 0x3bea3bef1
mov edx, 0xf
jmp 0x3bea3be84
mov rcx, qword [rsp + 0x38]
xor r9d, r9d
xor r8d, r8d
mov rdx, rdi
mov qword [rsp + 0x20], 1
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___._M_mutate_unsigned_long_long__unsigned_long_long__char_const__unsigned_long_long_
mov rax, qword [rsp + 0x70]
jmp 0x3bea3c064
mov edx, 0xf
jmp 0x3bea3c056
lea rcx, str.locale::locale_null_not_valid
call method.std.__throw_runtime_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
lea rcx, [0x3bea87334]
call method.std.__throw_length_error_char_const_
mov rbx, rax
jmp 0x3bea77f70