// File: /workspace/github_cpp_makefile_star2_O3/ridiculousfish[P]docopt_fish/docopt_fish.cpp
// Function: docopt_fish::docopt_impl::finalize_option_map[abi:cxx11](std::map<docopt_fish::rstring_t, docopt_fish::argument_t, std::less<docopt_fish::rstring_t>, std::allocator<std::pair<docopt_fish::rstring_t const, docopt_fish::argument_t>>> const&) const
argument_parser_t::argument_map_t finalize_option_map(const option_rmap_t &map) const {
        argument_parser_t::argument_map_t result;

        // Helper lambda to ensure our result map has a value for a given name
        // We merely invoke operator[]; this will do the insertion with the
        // default (empty) value if necessary. Re-use storage to avoid allocations.
        string_t name_storage;
        auto ensure_argument = [&](const rstring_t &name) -> argument_t & {
            name.copy_to(&name_storage);
            return result[name_storage];
        };

        // Turn our string_ts into std::strings
        for (const auto &kv : map) {
            result.insert({kv.first.std_string(), kv.second});
        }

        // Apply default values for any variables
        for (const option_t &opt : all_options) {
            if (opt.has_value() && !opt.default_value.empty()) {
                argument_t &var_arg = ensure_argument(opt.value);
                if (var_arg.values.empty()) {
                    var_arg.values.push_back(opt.default_value.std_string());
                }
            }
        }

        return result;
    }

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movq %rdx, %r15
movq %rsi, (%rsp)
movq %rdi, %rbx
leaq 0x8(%rdi), %rax
xorl %ecx, %ecx
movl %ecx, 0x8(%rdi)
movq %rcx, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
movq %rcx, 0x28(%rdi)
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rcx, -0x8(%rax)
movl %ecx, (%rax)
movq 0x18(%rdx), %r12
addq $0x8, %r15
cmpq %r15, %r12
je 0x9c3f
leaq 0x68(%rsp), %r13
leaq 0x28(%rsp), %rbp
leaq 0x48(%rsp), %r14
leaq 0x20(%r12), %rsi
movq %rbp, %rdi
callq 0xaf0c
leaq 0x38(%r12), %rdx
movq %r14, %rdi
movq %rbp, %rsi
callq 0xcf60
movq %rbx, %rdi
movq %r14, %rsi
callq 0xcfde
movq %r13, %rdi
callq 0xb1e0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x9c0a
movq 0x58(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x6200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x9c2b
movq 0x38(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x6200
movq %r12, %rdi
callq 0x6280
movq %rax, %r12
cmpq %r15, %rax
jne 0x9bb9
movq (%rsp), %rax
movq 0x68(%rax), %r15
movq 0x70(%rax), %rbp
cmpq %rbp, %r15
je 0x9cdd
addq $0x48, %r15
leaq 0x8(%rsp), %r14
leaq 0x48(%rsp), %r12
cmpq $0x0, 0x8(%r15)
je 0x9cca
cmpq $0x0, 0x20(%r15)
je 0x9cca
movq %r15, %rdi
movq %r14, %rsi
callq 0xb0c8
movq %rbx, %rdi
movq %r14, %rsi
callq 0xd1ba
movq %rax, %r13
movq (%rax), %rax
cmpq 0x8(%r13), %rax
jne 0x9cca
leaq 0x18(%r15), %rsi
movq %r12, %rdi
callq 0xaf0c
movq %r13, %rdi
movq %r12, %rsi
callq 0xcdb8
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x9cca
movq 0x58(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x6200
leaq 0x80(%r15), %rax
addq $0x38, %r15
cmpq %rbp, %r15
movq %rax, %r15
jne 0x9c62
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x9cfe
movq 0x18(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x6200
movq %rbx, %rax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x9d68
movq 0x58(%rsp), %rax
jmp 0x9d5b
jmp 0x9d30
jmp 0x9d30
movq %rax, %r14
jmp 0x9d68
movq %rax, %r14
jmp 0x9d47
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0xcfb2
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x9d68
movq 0x38(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x6200
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x9d89
movq 0x18(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x6200
movq %rbx, %rdi
callq 0xd548
movq %r14, %rdi
callq 0x6360
nop