// File: /workspace/github_cpp_makefile_star2_O1/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 $0x88, %rsp
movq %rsi, %r13
movq %rdi, %rbx
leaq 0x50(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xa0(%rsi), %rsi
movq 0xa8(%r13), %rdx
addq %rsi, %rdx
leaq 0x40(%rsp), %r14
movq %r14, %rdi
callq 0x7c4e
leaq 0x30(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x20(%rsp), %rdi
callq 0x7c4e
leaq 0x17bab(%rip), %rsi     # 0x30332
leaq 0x20(%rsp), %rdi
callq 0x5790
leaq 0x17ba0(%rip), %rsi     # 0x30338
movl $0xa, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17b85(%rip), %rsi     # 0x30343
movl $0x5, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x17b77(%rip), %rsi     # 0x30349
movl $0xa, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17b4b(%rip), %rsi     # 0x30343
movl $0x5, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x16cff(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17b34(%rip), %rsi     # 0x30354
movl $0x13, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16cd7(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17b20(%rip), %rsi     # 0x30368
movl $0x11, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16caf(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17b0a(%rip), %rsi     # 0x3037a
movl $0x12, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16c75(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x17ae3(%rip), %rsi     # 0x3038d
movl $0x7, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16c4d(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17ac3(%rip), %rsi     # 0x30395
movl $0x10, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17ac0(%rip), %rsi     # 0x303a6
movl $0x30, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17add(%rip), %rsi     # 0x303d7
movl $0x6, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17ad0(%rip), %rsi     # 0x303de
movl $0x18, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17a6b(%rip), %rsi     # 0x3038d
movl $0x7, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16bd5(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17aad(%rip), %rsi     # 0x303f7
movl $0xa, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17a92(%rip), %rsi     # 0x30402
movl $0x3, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x17a82(%rip), %rsi     # 0x30406
movl $0x3c, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17aab(%rip), %rsi     # 0x30443
movl $0x4a, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17ae2(%rip), %rsi     # 0x3048e
movl $0x35, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17b04(%rip), %rsi     # 0x304c4
movl $0x2a, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16b37(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17b07(%rip), %rsi     # 0x304ef
movl $0x22, %edx
movq %rbx, %rdi
callq 0x53f0
movq (%r13), %rsi
movq 0x8(%r13), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1916e
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17a0c(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x18a5c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0x17aaf(%rip), %rsi     # 0x30512
movl $0x24, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x20(%r13), %rsi
movq 0x28(%r13), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1916e
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17991(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x18ad7
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0x17a59(%rip), %rsi     # 0x30537
movl $0x27, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x40(%r13), %rsi
movq 0x48(%r13), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1916e
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17916(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x18b52
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0x17a06(%rip), %rsi     # 0x3055f
movl $0x25, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x60(%r13), %rsi
movq 0x68(%r13), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1916e
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x1789b(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x18bcd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0x179b1(%rip), %rsi     # 0x30585
movl $0x25, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x80(%r13), %rsi
movq 0x88(%r13), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1916e
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x1781a(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x18c4e
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0x17956(%rip), %rsi     # 0x305ab
movl $0x27, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0xa0(%r13), %rsi
movq 0xa8(%r13), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1916e
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17799(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x18ccf
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0x178fd(%rip), %rsi     # 0x305d3
movl $0x26, %edx
movq %rbx, %rdi
callq 0x53f0
movl 0xd8(%r13), %esi
movq %rbx, %rdi
callq 0x5270
leaq 0x17747(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x178ed(%rip), %rsi     # 0x305fa
movl $0x27, %edx
movq %rbx, %rdi
callq 0x53f0
movl 0xdc(%r13), %esi
movq %rbx, %rdi
callq 0x5270
leaq 0x17710(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x178de(%rip), %rsi     # 0x30622
movl $0x27, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0xe8(%r13), %rsi
subq 0xe0(%r13), %rsi
sarq $0x3, %rsi
movabsq $-0x7b425ed097b425ed, %r14 # imm = 0x84BDA12F684BDA13
imulq %r14, %rsi
movq %rbx, %rdi
callq 0x5270
leaq 0x176c0(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x178b6(%rip), %rsi     # 0x3064a
movl $0x28, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x100(%r13), %rsi
subq 0xf8(%r13), %rsi
sarq $0x3, %rsi
imulq %r14, %rsi
movq %rbx, %rdi
callq 0x5270
leaq 0x1767a(%rip), %rsi     # 0x30440
movl $0x2, %edx
movq %rax, %rdi
callq 0x53f0
leaq 0x16731(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17885(%rip), %rsi     # 0x30673
movl $0x29, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0xc0(%r13), %r12
movq %r13, 0x80(%rsp)
movq 0xc8(%r13), %rbp
cmpq %rbp, %r12
je 0x18f39
leaq 0x17d01(%rip), %r15     # 0x30b22
leaq 0x17875(%rip), %r13     # 0x3069d
leaq 0x17871(%rip), %r14     # 0x306a0
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x17cf2(%rip), %rsi     # 0x30b46
callq 0x53f0
movq (%r12), %rsi
movq 0x8(%r12), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
movq %rsp, %rdi
callq 0x1916e
movq (%rsp), %rsi
movq 0x8(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq %rax, %r15
movl $0x2, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x53f0
movq 0x20(%r12), %rsi
movq 0x28(%r12), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x19079
addq %rsi, %rdx
leaq 0x60(%rsp), %rdi
callq 0x1916e
movq 0x60(%rsp), %rsi
movq 0x68(%rsp), %rdx
movq %r15, %rdi
callq 0x53f0
movl $0x1, %edx
movq %rax, %rdi
movq %r14, %rsi
callq 0x53f0
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x18f0e
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5380
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x18f29
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
addq $0x40, %r12
movq %r13, %r15
cmpq %rbp, %r12
jne 0x18e2f
leaq 0x174ff(%rip), %rsi     # 0x3043f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x80(%rsp), %r14
leaq 0x165af(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0xe0(%r14), %rsi
movq %rbx, %rdi
movl $0x1, %edx
callq 0x192d2
leaq 0x16587(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
addq $0xf8, %r14
movq %rbx, %rdi
movq %r14, %rsi
xorl %edx, %edx
callq 0x192d2
leaq 0x176f6(%rip), %rsi     # 0x306a2
movl $0x2, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x1654b(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x176d1(%rip), %rsi     # 0x306a5
movl $0xf, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16523(%rip), %rsi     # 0x2f50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x176b9(%rip), %rsi     # 0x306b5
movl $0xc, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
leaq 0x17321(%rip), %rsi     # 0x30343
movl $0x5, %edx
movq %rax, %rdi
callq 0x53f0
movq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rax
cmpq %rax, %rdi
leaq 0x50(%rsp), %rbx
je 0x19050
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5380
movq 0x40(%rsp), %rdi
cmpq %rbx, %rdi
je 0x19067
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5380
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x50e0
jmp 0x19135
jmp 0x19135
jmp 0x19135
jmp 0x19135
jmp 0x19135
jmp 0x19135
jmp 0x19135
movq %rax, %rbx
jmp 0x1914f
jmp 0x190b1
jmp 0x190b1
jmp 0x190b1
jmp 0x190b1
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x19138
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
jmp 0x19138
movq %rax, %rbx
leaq 0x10(%rsp), %rax
movq -0x10(%rax), %rdi
jmp 0x190bd
jmp 0x19106
jmp 0x19106
jmp 0x1910b
movq %rax, %rbx
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0x1910e
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x5380
jmp 0x1910e
movq %rax, %rbx
jmp 0x19129
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x19129
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0x50(%rsp), %r15
leaq 0x30(%rsp), %r12
jmp 0x19138
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0x1914f
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5380
movq 0x40(%rsp), %rdi
cmpq %r15, %rdi
je 0x19166
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5380
movq %rbx, %rdi
callq 0x56d0