// File: meirdev[P]HexViewer/./CLI11.hpp
// Function: CLI::App::_process_env()
void _process_env() {
        for(const Option_p &opt : options_) {
            if(opt->count() == 0 && !opt->envname_.empty()) {
                char *buffer = nullptr;
                std::string ename_string;

#ifdef _MSC_VER
                // Windows version
                size_t sz = 0;
                if(_dupenv_s(&buffer, &sz, opt->envname_.c_str()) == 0 && buffer != nullptr) {
                    ename_string = std::string(buffer);
                    free(buffer);
                }
#else
                // This also works on Windows, but gives a warning
                buffer = std::getenv(opt->envname_.c_str());
                if(buffer != nullptr)
                    ename_string = std::string(buffer);
#endif

                if(!ename_string.empty()) {
                    opt->add_result(ename_string);
                }
            }
        }

        for(App_p &sub : subcommands_) {
            sub->_process_env();
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xf0, %rsp
movq %rdi, -0x8(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0xd0(%rbp)
addq $0x98, %rax
movq %rax, -0x10(%rbp)
movq -0x10(%rbp), %rdi
callq 0x17b20
movq %rax, -0x18(%rbp)
movq -0x10(%rbp), %rdi
callq 0x17b50
movq %rax, -0x20(%rbp)
leaq -0x18(%rbp), %rdi
leaq -0x20(%rbp), %rsi
callq 0x17b80
testb $0x1, %al
jne 0x290c4
jmp 0x2925d
leaq -0x18(%rbp), %rdi
callq 0x17bc0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
callq 0x8830
cmpq $0x0, %rax
jne 0x2924d
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
addq $0x78, %rdi
callq 0x66e0
testb $0x1, %al
jne 0x2924d
movq $0x0, -0x30(%rbp)
leaq -0x50(%rbp), %rdi
callq 0x65f0
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, %rdi
addq $0x78, %rdi
callq 0x61b0
movq %rax, %rdi
callq 0x6510
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
je 0x291b4
movq -0x30(%rbp), %rax
movq %rax, -0xe0(%rbp)
leaq -0x71(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x6770
movq -0xe0(%rbp), %rsi
movq -0xd8(%rbp), %rdx
leaq -0x70(%rbp), %rdi
callq 0x8eb0
jmp 0x29176
leaq -0x50(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x6520
leaq -0x70(%rbp), %rdi
callq 0x6280
leaq -0x71(%rbp), %rdi
callq 0x6460
jmp 0x291b4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0x71(%rbp), %rdi
callq 0x6460
jmp 0x2923f
leaq -0x50(%rbp), %rdi
callq 0x66e0
testb $0x1, %al
jne 0x29234
movq -0x28(%rbp), %rdi
callq 0x17be0
movq %rax, -0xe8(%rbp)
leaq -0xa8(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x61d0
jmp 0x291e3
movq -0xe8(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x275c0
jmp 0x291f8
leaq -0xa8(%rbp), %rdi
callq 0x6280
jmp 0x29234
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
jmp 0x2923f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x80(%rbp)
movl %eax, -0x84(%rbp)
leaq -0xa8(%rbp), %rdi
callq 0x6280
jmp 0x2923f
leaq -0x50(%rbp), %rdi
callq 0x6280
jmp 0x2924d
leaq -0x50(%rbp), %rdi
callq 0x6280
jmp 0x292ee
jmp 0x2924f
leaq -0x18(%rbp), %rdi
callq 0x17d60
jmp 0x290ae
movq -0xd0(%rbp), %rax
addq $0x158, %rax            # imm = 0x158
movq %rax, -0xb0(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x230a0
movq %rax, -0xb8(%rbp)
movq -0xb0(%rbp), %rdi
callq 0x230d0
movq %rax, -0xc0(%rbp)
leaq -0xb8(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x23100
testb $0x1, %al
jne 0x292b0
jmp 0x292e5
leaq -0xb8(%rbp), %rdi
callq 0x23140
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rdi
callq 0x23160
movq %rax, %rdi
callq 0x29070
leaq -0xb8(%rbp), %rdi
callq 0x23180
jmp 0x29297
addq $0xf0, %rsp
popq %rbp
retq
movq -0x80(%rbp), %rdi
callq 0x6750
nopw (%rax,%rax)