// File: /workspace/github_cpp_makefile_star2_O1/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 0xab8f
leaq 0x68(%rsp), %r13
leaq 0x28(%rsp), %rbp
leaq 0x48(%rsp), %r14
leaq 0x20(%r12), %rsi
movq %rbp, %rdi
callq 0xbec4
leaq 0x38(%r12), %rdx
movq %r14, %rdi
movq %rbp, %rsi
callq 0xdfa6
movq %rbx, %rdi
movq %r14, %rsi
callq 0xe024
movq %r13, %rdi
callq 0xc1d0
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xab5a
movq 0x58(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x7200
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xab7b
movq 0x38(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x7200
movq %r12, %rdi
callq 0x7280
movq %rax, %r12
cmpq %r15, %rax
jne 0xab09
movq (%rsp), %rax
movq 0x68(%rax), %r15
movq 0x70(%rax), %rbp
cmpq %rbp, %r15
je 0xac2d
addq $0x48, %r15
leaq 0x8(%rsp), %r14
leaq 0x48(%rsp), %r12
cmpq $0x0, 0x8(%r15)
je 0xac1a
cmpq $0x0, 0x20(%r15)
je 0xac1a
movq %r15, %rdi
movq %r14, %rsi
callq 0xc078
movq %rbx, %rdi
movq %r14, %rsi
callq 0xe208
movq %rax, %r13
movq (%rax), %rax
cmpq 0x8(%r13), %rax
jne 0xac1a
leaq 0x18(%r15), %rsi
movq %r12, %rdi
callq 0xbec4
movq %r13, %rdi
movq %r12, %rsi
callq 0xde04
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0xac1a
movq 0x58(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x7200
leaq 0x80(%r15), %rax
addq $0x38, %r15
cmpq %rbp, %r15
movq %rax, %r15
jne 0xabb2
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xac4e
movq 0x18(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x7200
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 0xacb8
movq 0x58(%rsp), %rax
jmp 0xacab
jmp 0xac80
jmp 0xac80
movq %rax, %r14
jmp 0xacb8
movq %rax, %r14
jmp 0xac97
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0xdff8
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0xacb8
movq 0x38(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x7200
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0xacd9
movq 0x18(%rsp), %rax
leaq 0x4(,%rax,4), %rsi
callq 0x7200
movq %rbx, %rdi
callq 0xe596
movq %r14, %rdi
callq 0x7360
nop