// File: /workspace/github_cpp_makefile_star2_O2/jpcima[P]faustmd/metadata.cpp
// Function: dump_metadata(std::ostream&, Metadata&)
void dump_metadata(std::ostream &o, Metadata &md)
{
    std::string ident_classname = md.classname;
    std::string ident_meta = ident_classname + "_meta";

    o << "#ifndef __" << ident_meta << "_H__" "\n";
    o << "#define __" << ident_meta << "_H__" "\n";

    o << "\n";

    o << "#include <cstddef>" "\n";

    o << "\n";

    o << "#ifndef FAUSTMETA" << "\n";
    o << "#define FAUSTMETA " << ident_meta << "\n";
    o << "#endif" "\n";

    o << "\n";

    o << "#ifdef __GNUC__" "\n";
    o << "#define FMSTATIC __attribute__((unused)) static" "\n";
    o << "#else" "\n";
    o << "#define FMSTATIC static" "\n";
    o << "#endif" "\n";

    o << "\n";

    o << "namespace " << ident_meta << " {" "\n";

    o << "\t" "struct metadata_t { const char *key; const char *value; };" "\n";
    o << "\t" "enum class active_type_t { button, checkbox, vslider, hslider, nentry };\n";
    o << "\t" "enum class passive_type_t { vbargraph, hbargraph };\n";
    o << "\t" "enum class scale_t { linear, log, exp };\n";

    o << "\n";

    o << "\t" "FMSTATIC constexpr char name[] = " << cstrlit(md.name) << ";" "\n";
    o << "\t" "FMSTATIC constexpr char author[] = " << cstrlit(md.author) << ";" "\n";
    o << "\t" "FMSTATIC constexpr char copyright[] = " << cstrlit(md.copyright) << ";" "\n";
    o << "\t" "FMSTATIC constexpr char license[] = " << cstrlit(md.license) << ";" "\n";
    o << "\t" "FMSTATIC constexpr char version[] = " << cstrlit(md.version) << ";" "\n";
    o << "\t" "FMSTATIC constexpr char classname[] = " << cstrlit(md.classname) << ";" "\n";
    o << "\t" "FMSTATIC constexpr unsigned inputs = " << md.inputs << ";" "\n";
    o << "\t" "FMSTATIC constexpr unsigned outputs = " << md.outputs << ";" "\n";
    o << "\t" "FMSTATIC constexpr unsigned actives = " << md.active.size() << ";" "\n";
    o << "\t" "FMSTATIC constexpr unsigned passives = " << md.passive.size() << ";" "\n";

    o << "\n";

    const char *separator;

    o << "\t" "FMSTATIC const metadata_t metadata[] = {";
    separator = "";
    for (const std::pair<std::string, std::string> &md : md.metadata) {
        o << separator << "{" << cstrlit(md.first) << ", " << cstrlit(md.second) << "}";
        separator = ", ";
    }
    o << "};" "\n";

    o << "\n";

    dump_widgets(o, md.active, true);

    o << "\n";

    dump_widgets(o, md.passive, false);

    o << "}\n";

    o << "\n";

    o << "#undef FMSTATIC";

    o << "\n";

    o << "#endif // __" << ident_meta << "_H__" "\n";
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
movq %rsi, %r14
movq %rdi, %r12
leaq 0xa0(%rsi), %r15
leaq 0xd8(%rsp), %rbx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x6580
leaq 0x15a9a(%rip), %rdx     # 0x2b40e
leaq 0x38(%rsp), %rdi
movq %rbx, %rsi
callq 0x1729e
leaq 0x15a8c(%rip), %rsi     # 0x2b414
movq %r12, %rdi
callq 0x63c0
leaq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x6390
leaq 0x15a7b(%rip), %rsi     # 0x2b41f
movq %rax, %rdi
callq 0x63c0
leaq 0x15a72(%rip), %rsi     # 0x2b425
movq %r12, %rdi
callq 0x63c0
leaq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x6390
leaq 0x15a50(%rip), %rsi     # 0x2b41f
movq %rax, %rdi
callq 0x63c0
leaq 0x14bfd(%rip), %rsi     # 0x2a5db
movq %r12, %rdi
callq 0x63c0
leaq 0x15a43(%rip), %rsi     # 0x2b430
movq %r12, %rdi
callq 0x63c0
leaq 0x14bdf(%rip), %rsi     # 0x2a5db
movq %r12, %rdi
callq 0x63c0
leaq 0x15a39(%rip), %rsi     # 0x2b444
movq %r12, %rdi
callq 0x63c0
leaq 0x14bc1(%rip), %rsi     # 0x2a5db
movq %rax, %rdi
callq 0x63c0
leaq 0x15a2d(%rip), %rsi     # 0x2b456
movq %r12, %rdi
callq 0x63c0
leaq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x6390
leaq 0x14b96(%rip), %rsi     # 0x2a5db
movq %rax, %rdi
callq 0x63c0
leaq 0x15a15(%rip), %rsi     # 0x2b469
movq %r12, %rdi
callq 0x63c0
leaq 0x14b78(%rip), %rsi     # 0x2a5db
movq %r12, %rdi
callq 0x63c0
leaq 0x159ff(%rip), %rsi     # 0x2b471
movq %r12, %rdi
callq 0x63c0
leaq 0x15a01(%rip), %rsi     # 0x2b482
movq %r12, %rdi
callq 0x63c0
leaq 0x15a23(%rip), %rsi     # 0x2b4b3
movq %r12, %rdi
callq 0x63c0
leaq 0x15a1b(%rip), %rsi     # 0x2b4ba
movq %r12, %rdi
callq 0x63c0
leaq 0x159bb(%rip), %rsi     # 0x2b469
movq %r12, %rdi
callq 0x63c0
leaq 0x14b1e(%rip), %rsi     # 0x2a5db
movq %r12, %rdi
callq 0x63c0
leaq 0x15a07(%rip), %rsi     # 0x2b4d3
movq %r12, %rdi
callq 0x63c0
leaq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x6390
leaq 0x159f6(%rip), %rsi     # 0x2b4de
movq %rax, %rdi
callq 0x63c0
leaq 0x159eb(%rip), %rsi     # 0x2b4e2
movq %r12, %rdi
callq 0x63c0
leaq 0x15a19(%rip), %rsi     # 0x2b51f
movq %r12, %rdi
callq 0x63c0
leaq 0x15a55(%rip), %rsi     # 0x2b56a
movq %r12, %rdi
callq 0x63c0
leaq 0x15a7c(%rip), %rsi     # 0x2b5a0
movq %r12, %rdi
callq 0x63c0
leaq 0x14aa8(%rip), %rsi     # 0x2a5db
movq %r12, %rdi
callq 0x63c0
leaq 0x15a89(%rip), %rsi     # 0x2b5cb
movq %r12, %rdi
callq 0x63c0
movq %rax, %rbx
leaq 0xc8(%rsp), %rdi
movq %r14, %rsi
callq 0x172d6
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
movq %rsp, %rdi
callq 0x1609f
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6390
leaq 0x15995(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
movq %rsp, %rdi
callq 0x61d0
leaq 0x15a50(%rip), %rsi     # 0x2b5ee
movq %r12, %rdi
callq 0x63c0
movq %rax, %rbx
leaq 0x20(%r14), %rsi
leaq 0xb8(%rsp), %rdi
callq 0x172d6
movq 0xb8(%rsp), %rsi
movq 0xc0(%rsp), %rdx
movq %rsp, %rdi
callq 0x1609f
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6390
leaq 0x15938(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
movq %rsp, %rdi
callq 0x61d0
leaq 0x15a18(%rip), %rsi     # 0x2b613
movq %r12, %rdi
callq 0x63c0
movq %rax, %rbx
leaq 0x40(%r14), %rsi
leaq 0xa8(%rsp), %rdi
callq 0x172d6
movq 0xa8(%rsp), %rsi
movq 0xb0(%rsp), %rdx
movq %rsp, %rdi
callq 0x1609f
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6390
leaq 0x158db(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
movq %rsp, %rdi
callq 0x61d0
leaq 0x159e3(%rip), %rsi     # 0x2b63b
movq %r12, %rdi
callq 0x63c0
movq %rax, %rbx
leaq 0x60(%r14), %rsi
leaq 0x98(%rsp), %rdi
callq 0x172d6
movq 0x98(%rsp), %rsi
movq 0xa0(%rsp), %rdx
movq %rsp, %rdi
callq 0x1609f
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6390
leaq 0x1587e(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
movq %rsp, %rdi
callq 0x61d0
leaq 0x159ac(%rip), %rsi     # 0x2b661
movq %r12, %rdi
callq 0x63c0
movq %rax, %rbx
leaq 0x80(%r14), %rsi
leaq 0x88(%rsp), %rdi
callq 0x172d6
movq 0x88(%rsp), %rsi
movq 0x90(%rsp), %rdx
movq %rsp, %rdi
callq 0x1609f
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6390
leaq 0x1581e(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
movq %rsp, %rdi
callq 0x61d0
leaq 0x15972(%rip), %rsi     # 0x2b687
movq %r12, %rdi
callq 0x63c0
movq %rax, %rbx
leaq 0x78(%rsp), %rdi
movq %r15, %rsi
callq 0x172d6
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
movq %rsp, %rdi
callq 0x1609f
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x6390
leaq 0x157c8(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
movq %rsp, %rdi
callq 0x61d0
leaq 0x15944(%rip), %rsi     # 0x2b6af
movq %r12, %rdi
callq 0x63c0
movl 0xd8(%r14), %esi
movq %rax, %rdi
callq 0x62c0
leaq 0x15793(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
leaq 0x1593e(%rip), %rsi     # 0x2b6d6
movq %r12, %rdi
callq 0x63c0
movl 0xdc(%r14), %esi
movq %rax, %rdi
callq 0x62c0
leaq 0x15766(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
leaq 0x15939(%rip), %rsi     # 0x2b6fe
movq %r12, %rdi
callq 0x63c0
movq %rax, %rdi
movq 0xe8(%r14), %rax
subq 0xe0(%r14), %rax
movl $0xd8, %ecx
cqto
idivq %rcx
movq %rax, %rsi
callq 0x62c0
leaq 0x15725(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
leaq 0x15920(%rip), %rsi     # 0x2b726
movq %r12, %rdi
callq 0x63c0
movq %rax, %rdi
movq 0x100(%r14), %rax
subq 0xf8(%r14), %rax
movl $0xd8, %ecx
cqto
idivq %rcx
movq %rax, %rsi
callq 0x62c0
leaq 0x156e4(%rip), %rsi     # 0x2b51c
movq %rax, %rdi
callq 0x63c0
leaq 0x14794(%rip), %rsi     # 0x2a5db
movq %r12, %rdi
callq 0x63c0
leaq 0x158f9(%rip), %rsi     # 0x2b74f
movq %r12, %rdi
callq 0x63c0
movq %r12, 0x20(%rsp)
leaq 0xe0(%r14), %rax
movq %rax, 0x30(%rsp)
leaq 0xf8(%r14), %rax
movq %rax, 0x28(%rsp)
movq 0xc0(%r14), %r13
movq 0xc8(%r14), %rbp
leaq 0x15d6e(%rip), %rsi     # 0x2bbfe
movq %rsp, %r15
leaq 0x158df(%rip), %r12     # 0x2b779
leaq 0xf8(%rsp), %r14
cmpq %rbp, %r13
je 0x15f58
movq 0x20(%rsp), %rdi
callq 0x63c0
movq %rax, %rdi
leaq 0x15d63(%rip), %rsi     # 0x2bc22
callq 0x63c0
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
movq %r13, %rsi
callq 0x8e0e
movq 0x68(%rsp), %rsi
movq 0x70(%rsp), %rdx
movq %r15, %rdi
callq 0x1609f
movq %rbx, %rdi
movq %r15, %rsi
callq 0x6390
movq %rax, %rdi
movq %r12, %rsi
callq 0x63c0
movq %rax, %rbx
addq $0x20, %r13
leaq 0x58(%rsp), %rdi
movq %r13, %rsi
callq 0x8e0e
movq 0x58(%rsp), %rsi
movq 0x60(%rsp), %rdx
movq %r14, %rdi
callq 0x1609f
movq %rbx, %rdi
movq %r14, %rsi
callq 0x6390
movq %rax, %rdi
leaq 0x15845(%rip), %rsi     # 0x2b77c
callq 0x63c0
movq %r14, %rdi
callq 0x61d0
movq %r15, %rdi
callq 0x61d0
addq $0x20, %r13
movq %r12, %rsi
jmp 0x15ea2
leaq 0x155bc(%rip), %rsi     # 0x2b51b
movq 0x20(%rsp), %rbx
movq %rbx, %rdi
callq 0x63c0
leaq 0x14668(%rip), %rsi     # 0x2a5db
movq %rbx, %rdi
callq 0x63c0
pushq $0x1
popq %rdx
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
callq 0x161cf
leaq 0x14649(%rip), %rsi     # 0x2a5db
movq %rbx, %rdi
callq 0x63c0
movq %rbx, %rdi
movq 0x28(%rsp), %rsi
xorl %edx, %edx
callq 0x161cf
leaq 0x157ce(%rip), %rsi     # 0x2b77e
movq %rbx, %rdi
callq 0x63c0
leaq 0x1461c(%rip), %rsi     # 0x2a5db
movq %rbx, %rdi
callq 0x63c0
leaq 0x157b3(%rip), %rsi     # 0x2b781
movq %rbx, %rdi
callq 0x63c0
leaq 0x145fe(%rip), %rsi     # 0x2a5db
movq %rbx, %rdi
callq 0x63c0
leaq 0x157a5(%rip), %rsi     # 0x2b791
movq %rbx, %rdi
callq 0x63c0
leaq 0x38(%rsp), %rsi
movq %rax, %rdi
callq 0x6390
leaq 0x15417(%rip), %rsi     # 0x2b41f
movq %rax, %rdi
callq 0x63c0
leaq 0x38(%rsp), %rdi
callq 0x61d0
leaq 0xd8(%rsp), %rdi
callq 0x61d0
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x1608a
jmp 0x16070
jmp 0x1607d
jmp 0x16070
jmp 0x1607d
jmp 0x16070
jmp 0x1607d
jmp 0x16070
jmp 0x1607d
jmp 0x16070
jmp 0x1607d
jmp 0x16070
jmp 0x1607d
jmp 0x1607d
jmp 0x1607d
movq %rax, %rbx
leaq 0xf8(%rsp), %rdi
callq 0x61d0
jmp 0x16073
jmp 0x16070
jmp 0x1607d
movq %rax, %rbx
movq %rsp, %rdi
callq 0x61d0
jmp 0x16080
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x61d0
leaq 0xd8(%rsp), %rdi
callq 0x61d0
movq %rbx, %rdi
callq 0x6730