// File: /workspace/github_cpp_makefile_star2_O2/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 $0x98, %rsp
movq %rdi, %rbx
andl $0x0, 0x8(%rdi)
andq $0x0, 0x10(%rdi)
leaq 0x8(%rdi), %rax
movq %rax, 0x18(%rdi)
movq %rax, 0x20(%rdi)
andq $0x0, 0x28(%rdi)
leaq 0x28(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movq %rdx, %r14
andl $0x0, (%rax)
movq %rsi, %r15
leaq 0x18(%rsp), %rax
movq %rax, 0x8(%rsp)
movq %rdi, 0x10(%rsp)
movq 0x18(%rdx), %r13
addq $0x8, %r14
leaq 0x38(%rsp), %r12
leaq 0x58(%rsp), %rbp
cmpq %r14, %r13
je 0x9a86
leaq 0x20(%r13), %rsi
movq %r12, %rdi
callq 0xac82
leaq 0x38(%r13), %rdx
movq %rbp, %rdi
movq %r12, %rsi
callq 0xca5c
movq %rbx, %rdi
movq %rbp, %rsi
callq 0xcac8
movq %rbp, %rdi
callq 0xca92
movq %r12, %rdi
callq 0x7050
movq %r13, %rdi
callq 0x72c0
movq %rax, %r13
jmp 0x9a3e
movq 0x68(%r15), %r14
movq 0x70(%r15), %rbp
addq $0x48, %r14
leaq 0x8(%rsp), %r15
leaq 0x58(%rsp), %r12
leaq -0x48(%r14), %rax
cmpq %rbp, %rax
je 0x9aef
cmpq $0x0, 0x50(%rax)
je 0x9ae9
cmpq $0x0, 0x20(%r14)
je 0x9ae9
movq %r15, %rdi
movq %r14, %rsi
callq 0xcaa8
movq %rax, %r13
movq (%rax), %rax
cmpq 0x8(%r13), %rax
jne 0x9ae9
leaq 0x18(%r14), %rsi
movq %r12, %rdi
callq 0xac82
movq %r13, %rdi
movq %r12, %rsi
callq 0xc8d0
movq %r12, %rdi
callq 0x7050
subq $-0x80, %r14
jmp 0x9a9c
leaq 0x18(%rsp), %rdi
callq 0x7050
movq %rbx, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
leaq 0x58(%rsp), %rdi
jmp 0x9b38
jmp 0x9b1c
jmp 0x9b1c
movq %rax, %r14
jmp 0x9b3d
movq %rax, %r14
jmp 0x9b33
movq %rax, %r14
leaq 0x58(%rsp), %rdi
callq 0xca92
leaq 0x38(%rsp), %rdi
callq 0x7050
leaq 0x18(%rsp), %rdi
callq 0x7050
movq %rbx, %rdi
callq 0xd08c
movq %r14, %rdi
callq 0x7390
nop