// File: /workspace/github_cpp_makefile_star2_O3/jpcima[P]faustmd/metadata.cpp
// Function: dump_widgets(std::ostream&, std::vector<Metadata::Widget, std::allocator<Metadata::Widget>> const&, bool)
static void dump_widgets(std::ostream &o, const std::vector<Metadata::Widget> &widgets, bool is_active)
{
    const char *separator;
    const char *prefix = is_active ? "active" : "passive";

    o << "\t" "FMSTATIC constexpr " << prefix << "_type_t " << prefix << "_type[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << "" << prefix << "_type_t::" << w.type; separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC constexpr int " << prefix << "_id[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << w.id; separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC const char *const " << prefix << "_label[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << cstrlit(w.label); separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC const char *const " << prefix << "_symbol[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << cstrlit(w.symbol); separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC const std::size_t " << prefix << "_offsets[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << "(size_t)&((FAUSTCLASS *)0)->" << w.var; separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC constexpr FAUSTFLOAT " << prefix << "_init[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << w.init; separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC constexpr FAUSTFLOAT " << prefix << "_min[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << w.min; separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC constexpr FAUSTFLOAT " << prefix << "_max[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << w.max; separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC constexpr FAUSTFLOAT " << prefix << "_step[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << w.step; separator = ", "; }
    o << "};" "\n";

    o << "\n";

    o << "\t" "FMSTATIC const char *const " << prefix << "_unit[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << cstrlit(w.unit); separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC constexpr scale_t " << prefix << "_scale[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << "scale_t::" << w.scale; separator = ", "; }
    o << "};" "\n";

    o << "\t" "FMSTATIC const char *const " << prefix << "_tooltip[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << cstrlit(w.tooltip); separator = ", "; }
    o << "};" "\n";

    o << "\n";

    bool have_metadata = false;
    for (size_t i = 0, n = widgets.size(); i < n; ++i) {
        const Metadata::Widget &w = widgets[i];
        if (w.metadata.empty())
            continue;
        o << "\t" "FMSTATIC const metadata_t " << prefix << "_metadata_" << i << "[] = {";
        separator = "";
        for (const std::pair<std::string, std::string> &md : w.metadata) {
            o << separator << "{" << cstrlit(md.first) << ", " << cstrlit(md.second) << "}";
            separator = ", ";
        }
        o << "};\n";
        have_metadata = true;
    }

    if (have_metadata)
        o << "\n";

    o << "\t" "FMSTATIC const metadata_t *const " << prefix << "_metadata[] = {";
    separator = "";
    for (size_t i = 0, n = widgets.size(); i < n; ++i) {
        const Metadata::Widget &w = widgets[i];
        if (w.metadata.empty())
            o << separator << "nullptr";
        else
            o << separator << prefix << "_metadata_" << i;
        separator = ", ";
    }
    o << "};" "\n";

    o << "\t" "FMSTATIC constexpr std::size_t " << prefix << "_metadata_size[] = {";
    separator = "";
    for (const Metadata::Widget &w : widgets)
        { o << separator << w.metadata.size(); separator = ", "; }
    o << "};" "\n";

    o << "\n";

    if (is_active) {
        o << "\t" "FMSTATIC inline void " << prefix << "_set(FAUSTCLASS &x, unsigned idx, FAUSTFLOAT v) {"
          << " *(FAUSTFLOAT *)((char *)&x + " << prefix << "_offsets[idx]) = v; "
          << "}" "\n";
    }
    o << "\t" "FMSTATIC inline FAUSTFLOAT " << prefix << "_get(const FAUSTCLASS &x, unsigned idx) {"
      << " return *(const FAUSTFLOAT *)((const char *)&x + " << prefix << "_offsets[idx]); "
      << "}" "\n";

    o << "\n";

    if (is_active) {
        for (const Metadata::Widget &w : widgets) {
            o << "\t" << "FMSTATIC inline void " << mangle("set_" + w.symbol) << "(FAUSTCLASS &x, FAUSTFLOAT v) {"
              << " x." << w.var << " = v; "
              << "}" "\n";
        }
    }
    for (const Metadata::Widget &w : widgets) {
        o << "\t" << "FMSTATIC inline FAUSTFLOAT " << mangle("get_" + w.symbol) << "(const FAUSTCLASS &x) {"
          << " return x." << w.var << "; "
          << "}" "\n";
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x78, %rsp
movl %edx, %ebp
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x1665b(%rip), %rax     # 0x2f80e
leaq 0x1665b(%rip), %r13     # 0x2f815
testl %edx, %edx
cmovneq %rax, %r13
leaq 0x16656(%rip), %rsi     # 0x2f81d
movl $0x14, %edx
callq 0x53f0
movl %ebp, 0x6c(%rsp)
movl %ebp, %r14d
xorq $0x7, %r14
movq %rbx, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x53f0
leaq 0x16641(%rip), %rsi     # 0x2f832
movl $0x8, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x53f0
leaq 0x16628(%rip), %rsi     # 0x2f83b
movl $0xb, %edx
movq %rbx, %rdi
callq 0x53f0
movq (%r15), %r12
movq %r15, 0x8(%rsp)
movq 0x8(%r15), %rbp
cmpq %rbp, %r12
je 0x192a0
leaq 0x168fa(%rip), %r15     # 0x2fb32
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movq %rbx, %rdi
leaq 0x168da(%rip), %rsi     # 0x2fb32
xorl %edx, %edx
callq 0x53f0
movq %rbx, %rdi
movq %r13, %rsi
movq %r14, %rdx
callq 0x53f0
movl $0x9, %edx
movq %rbx, %rdi
leaq 0x165cb(%rip), %rsi     # 0x2f847
callq 0x53f0
movl (%r12), %esi
movq %rbx, %rdi
callq 0x1a60e
addq $0xd8, %r12
leaq 0x16412(%rip), %r15     # 0x2f6ad
cmpq %rbp, %r12
jne 0x19238
leaq 0x161a8(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16596(%rip), %rsi     # 0x2f851
movl $0x18, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq %r13, 0x30(%rsp)
movq %r13, %rsi
movq %r14, %rdx
callq 0x53f0
leaq 0x16588(%rip), %rsi     # 0x2f86a
movl $0x9, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
movq %r14, %rbp
je 0x19342
leaq 0x16828(%rip), %r14     # 0x2fb32
leaq 0x1639c(%rip), %r13     # 0x2f6ad
movq %r14, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x53f0
movl 0x4(%r15), %esi
movq %rbx, %rdi
callq 0x56b0
addq $0xd8, %r15
movq %r13, %r14
cmpq %r12, %r15
jne 0x19311
leaq 0x16106(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16517(%rip), %rsi     # 0x2f874
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq %rbp, 0x38(%rsp)
movq %rbp, %rdx
callq 0x53f0
leaq 0x1650b(%rip), %rsi     # 0x2f891
movl $0xc, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %r13
cmpq %r13, %r12
je 0x19437
leaq 0x16783(%rip), %r15     # 0x2fb32
leaq 0x10(%rsp), %r14
leaq 0x162f2(%rip), %rbp     # 0x2f6ad
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movq 0x8(%r12), %rsi
movq 0x10(%r12), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
movq %r14, %rdi
callq 0x19035
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x19428
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
addq $0xd8, %r12
movq %rbp, %r15
cmpq %r13, %r12
jne 0x193bb
leaq 0x16011(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16422(%rip), %rsi     # 0x2f874
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0x53f0
leaq 0x16426(%rip), %rsi     # 0x2f89e
movl $0xd, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %r13
cmpq %r13, %r12
je 0x19529
leaq 0x16691(%rip), %r15     # 0x2fb32
leaq 0x10(%rsp), %r14
leaq 0x16200(%rip), %rbp     # 0x2f6ad
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movq 0x48(%r12), %rsi
movq 0x50(%r12), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
movq %r14, %rdi
callq 0x19035
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1951a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
addq $0xd8, %r12
movq %rbp, %r15
cmpq %r13, %r12
jne 0x194ad
leaq 0x15f1f(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16368(%rip), %rsi     # 0x2f8ac
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0x53f0
leaq 0x1635f(%rip), %rsi     # 0x2f8c9
movl $0xe, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %r13
cmpq %r13, %r12
je 0x195e4
leaq 0x165a3(%rip), %r15     # 0x2fb32
leaq 0x16342(%rip), %r14     # 0x2f8d8
leaq 0x16110(%rip), %rbp     # 0x2f6ad
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movl $0x1c, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
movq 0x28(%r12), %rsi
movq 0x30(%r12), %rdx
movq %rbx, %rdi
callq 0x53f0
addq $0xd8, %r12
movq %rbp, %r15
cmpq %r13, %r12
jne 0x1959d
leaq 0x15e64(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x162f6(%rip), %rsi     # 0x2f8f5
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rbp
movq %rbp, %rdx
callq 0x53f0
leaq 0x162ed(%rip), %rsi     # 0x2f915
movl $0xb, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x1968a
leaq 0x164e5(%rip), %r14     # 0x2fb32
leaq 0x16059(%rip), %r13     # 0x2f6ad
movq %r14, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x53f0
xorps %xmm0, %xmm0
cvtss2sd 0x68(%r15), %xmm0
movq %rbx, %rdi
callq 0x5610
addq $0xd8, %r15
movq %r13, %r14
cmpq %r12, %r15
jne 0x19654
leaq 0x15dbe(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x16250(%rip), %rsi     # 0x2f8f5
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq %rbp, %rdx
callq 0x53f0
leaq 0x16258(%rip), %rsi     # 0x2f921
movl $0xa, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x1972b
leaq 0x16444(%rip), %r14     # 0x2fb32
leaq 0x15fb8(%rip), %r13     # 0x2f6ad
movq %r14, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x53f0
xorps %xmm0, %xmm0
cvtss2sd 0x6c(%r15), %xmm0
movq %rbx, %rdi
callq 0x5610
addq $0xd8, %r15
movq %r13, %r14
cmpq %r12, %r15
jne 0x196f5
leaq 0x15d1d(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x161af(%rip), %rsi     # 0x2f8f5
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq %rbp, %rdx
callq 0x53f0
leaq 0x161c2(%rip), %rsi     # 0x2f92c
movl $0xa, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x197cc
leaq 0x163a3(%rip), %r14     # 0x2fb32
leaq 0x15f17(%rip), %r13     # 0x2f6ad
movq %r14, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x53f0
xorps %xmm0, %xmm0
cvtss2sd 0x70(%r15), %xmm0
movq %rbx, %rdi
callq 0x5610
addq $0xd8, %r15
movq %r13, %r14
cmpq %r12, %r15
jne 0x19796
leaq 0x15c7c(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x1610e(%rip), %rsi     # 0x2f8f5
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq %rbp, %rdx
callq 0x53f0
leaq 0x1612c(%rip), %rsi     # 0x2f937
movl $0xb, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x1986d
leaq 0x16302(%rip), %r14     # 0x2fb32
leaq 0x15e76(%rip), %r13     # 0x2f6ad
movq %r14, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x53f0
xorps %xmm0, %xmm0
cvtss2sd 0x74(%r15), %xmm0
movq %rbx, %rdi
callq 0x5610
addq $0xd8, %r15
movq %r13, %r14
cmpq %r12, %r15
jne 0x19837
leaq 0x15bdb(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x14c83(%rip), %rsi     # 0x2e50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15fd8(%rip), %rsi     # 0x2f874
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq %rbp, %rdx
callq 0x53f0
leaq 0x16083(%rip), %rsi     # 0x2f943
movl $0xb, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %r13
cmpq %r13, %r12
je 0x1997b
leaq 0x16249(%rip), %r15     # 0x2fb32
leaq 0x10(%rsp), %r14
leaq 0x15db8(%rip), %rbp     # 0x2f6ad
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movq 0x90(%r12), %rsi
movq 0x98(%r12), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
movq %r14, %rdi
callq 0x19035
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x19968
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
addq $0xd8, %r12
movq %rbp, %r15
cmpq %r13, %r12
jne 0x198f5
leaq 0x15acd(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15fb9(%rip), %rsi     # 0x2f94f
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0x53f0
leaq 0x15fb0(%rip), %rsi     # 0x2f96c
movl $0xc, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %r13
cmpq %r13, %r12
je 0x19a34
leaq 0x16151(%rip), %r15     # 0x2fb32
leaq 0x15f91(%rip), %r14     # 0x2f979
leaq 0x15cbe(%rip), %rbp     # 0x2f6ad
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movl $0x9, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
movl 0xb0(%r12), %esi
movq %rbx, %rdi
callq 0x1a6a6
addq $0xd8, %r12
movq %rbp, %r15
cmpq %r13, %r12
jne 0x199ef
leaq 0x15a14(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15e25(%rip), %rsi     # 0x2f874
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
callq 0x53f0
leaq 0x15f0e(%rip), %rsi     # 0x2f983
movl $0xe, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r12
movq 0x8(%rax), %r13
cmpq %r13, %r12
je 0x19b30
leaq 0x16094(%rip), %r15     # 0x2fb32
leaq 0x10(%rsp), %r14
leaq 0x15c03(%rip), %rbp     # 0x2f6ad
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
movq 0xb8(%r12), %rsi
movq 0xc0(%r12), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
movq %r14, %rdi
callq 0x19035
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x19b1d
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
addq $0xd8, %r12
movq %rbp, %r15
cmpq %r13, %r12
jne 0x19aaa
leaq 0x15918(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x149c0(%rip), %rsi     # 0x2e50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
movq 0x30(%rsp), %r12
je 0x19dc2
sarq $0x3, %rcx
movabsq $-0x7b425ed097b425ed, %rax # imm = 0x84BDA12F684BDA13
imulq %rax, %rcx
xorl %eax, %eax
cmpq $0x1, %rcx
movl $0x0, %edi
sbbq %rcx, %rdi
leaq 0x15dfc(%rip), %rsi     # 0x2f992
leaq 0x15b10(%rip), %r13     # 0x2f6ad
xorl %r9d, %r9d
movq 0x8(%rsp), %rcx
movq (%rcx), %rdx
leaq (%rdi,%r9), %rcx
imulq $0xd8, %r9, %r8
leaq (%rdx,%r8), %r14
addq $0x80, %r14
xorl %ebp, %ebp
movq -0x8(%r14), %rdx
cmpq (%r14), %rdx
jne 0x19bdd
decq %rbp
addq $0xd8, %r14
cmpq %rbp, %rcx
jne 0x19bc0
jmp 0x19daa
movq %rdi, 0x60(%rsp)
movl $0x1b, %edx
movq %rbx, %rdi
movq %r9, %r15
callq 0x53f0
movq %rbx, %rdi
movq %r12, %rsi
movq 0x38(%rsp), %rdx
callq 0x53f0
movl $0xa, %edx
movq %rbx, %rdi
leaq 0x15d9d(%rip), %rsi     # 0x2f9ae
callq 0x53f0
movq %r15, 0x70(%rsp)
subq %rbp, %r15
movq %rbx, %rdi
movq %r15, %rsi
callq 0x5270
movl $0x6, %edx
movq %rax, %rdi
leaq 0x15a6e(%rip), %rsi     # 0x2f6a6
callq 0x53f0
movq -0x8(%r14), %r15
movq (%r14), %r12
cmpq %r12, %r15
je 0x19d62
leaq 0x15ede(%rip), %r14     # 0x2fb32
movq %r14, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x53f0
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x15edd(%rip), %rsi     # 0x2fb56
callq 0x53f0
movq (%r15), %rsi
movq 0x8(%r15), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x19035
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq %rax, %r14
movl $0x2, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x53f0
movq 0x20(%r15), %rsi
movq 0x28(%r15), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
leaq 0x40(%rsp), %rdi
callq 0x19035
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
movq %r14, %rdi
callq 0x53f0
movl $0x1, %edx
movq %rax, %rdi
leaq 0x1599b(%rip), %rsi     # 0x2f6b0
callq 0x53f0
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x19d36
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5380
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x19d52
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
addq $0x40, %r15
movq %r13, %r14
cmpq %r12, %r15
jne 0x19c54
movl $0x3, %edx
movq %rbx, %rdi
leaq 0x156de(%rip), %rsi     # 0x2f44f
callq 0x53f0
movq 0x60(%rsp), %rdi
movq 0x70(%rsp), %rax
leaq (%rdi,%rax), %rcx
incq %rcx
leaq 0x1(%rax), %rdx
subq %rbp, %rdx
movb $0x1, %al
movq %rdx, %r9
cmpq %rbp, %rcx
movq 0x30(%rsp), %r12
leaq 0x15bf0(%rip), %rsi     # 0x2f992
jne 0x19ba0
jmp 0x19dae
testb $0x1, %al
je 0x19dc2
leaq 0x14756(%rip), %rsi     # 0x2e50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15bf0(%rip), %rsi     # 0x2f9b9
movl $0x22, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq %r12, %rsi
movq 0x38(%rsp), %r12
movq %r12, %rdx
callq 0x53f0
leaq 0x15bec(%rip), %rsi     # 0x2f9dc
movl $0xf, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq 0x8(%rax), %rcx
subq (%rax), %rcx
je 0x19ed5
sarq $0x3, %rcx
movabsq $-0x7b425ed097b425ed, %rax # imm = 0x84BDA12F684BDA13
imulq %rax, %rcx
cmpq $0x1, %rcx
adcq $0x0, %rcx
movq %rcx, 0x60(%rsp)
leaq 0x15cfd(%rip), %r15     # 0x2fb32
movl $0x80, %r13d
xorl %r14d, %r14d
movq 0x8(%rsp), %rax
movq (%rax), %rax
movq -0x8(%rax,%r13), %rbp
movq (%rax,%r13), %r12
movq %r15, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x53f0
cmpq %r12, %rbp
je 0x19ea0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %r12
movq %r12, %rdx
callq 0x53f0
movl $0xa, %edx
movq %rbx, %rdi
leaq 0x15b20(%rip), %rsi     # 0x2f9ae
callq 0x53f0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x5270
jmp 0x19eb9
movl $0x7, %edx
movq %rbx, %rdi
leaq 0x15b3d(%rip), %rsi     # 0x2f9ec
callq 0x53f0
movq 0x38(%rsp), %r12
incq %r14
addq $0xd8, %r13
leaq 0x157e3(%rip), %r15     # 0x2f6ad
cmpq %r14, 0x60(%rsp)
jne 0x19e3e
leaq 0x15573(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15b04(%rip), %rsi     # 0x2f9f4
movl $0x20, %edx
movq %rbx, %rdi
callq 0x53f0
movq %rbx, %rdi
movq 0x30(%rsp), %rsi
movq %r12, %rdx
callq 0x53f0
leaq 0x15b01(%rip), %rsi     # 0x2fa15
movl $0x14, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x19f7c
leaq 0x15bf9(%rip), %r14     # 0x2fb32
leaq 0x1576d(%rip), %r13     # 0x2f6ad
movq %r14, %rdi
callq 0x51a0
movq %rbx, %rdi
movq %r14, %rsi
movq %rax, %rdx
callq 0x53f0
movq 0x80(%r15), %rsi
subq 0x78(%r15), %rsi
sarq $0x6, %rsi
movq %rbx, %rdi
callq 0x5270
addq $0xd8, %r15
movq %r13, %r14
cmpq %r12, %r15
jne 0x19f40
leaq 0x154cc(%rip), %rsi     # 0x2f44f
movl $0x3, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x14574(%rip), %rsi     # 0x2e50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
cmpb $0x0, 0x6c(%rsp)
je 0x1a226
leaq 0x15a74(%rip), %rsi     # 0x2fa2a
movl $0x16, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15844(%rip), %r14     # 0x2f80e
movl $0x6, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
leaq 0x15a60(%rip), %rsi     # 0x2fa41
movl $0x31, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15a7e(%rip), %rsi     # 0x2fa73
movl $0x1e, %edx
movq %rbx, %rdi
callq 0x53f0
movl $0x6, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
leaq 0x15a79(%rip), %rsi     # 0x2fa92
movl $0x14, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15685(%rip), %r15     # 0x2f6b2
movl $0x2, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x53f0
leaq 0x15a63(%rip), %rsi     # 0x2faa7
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
movl $0x6, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
leaq 0x15a5c(%rip), %rsi     # 0x2fac4
movl $0x29, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15a72(%rip), %rsi     # 0x2faee
movl $0x31, %edx
movq %rbx, %rdi
callq 0x53f0
movl $0x6, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
leaq 0x15a80(%rip), %rsi     # 0x2fb20
movl $0x10, %edx
movq %rbx, %rdi
callq 0x53f0
movl $0x2, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x53f0
leaq 0x14447(%rip), %rsi     # 0x2e50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r12
cmpq %r12, %r15
je 0x1a2c5
addq $0x48, %r15
leaq 0x159af(%rip), %r13     # 0x2faa0
leaq 0x155ba(%rip), %r14     # 0x2f6b2
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x15a2a(%rip), %rsi     # 0x2fb31
callq 0x53f0
movl $0x15, %edx
movq %rbx, %rdi
leaq 0x15910(%rip), %rsi     # 0x2fa2b
callq 0x53f0
leaq 0x40(%rsp), %rdi
leaq 0x15a07(%rip), %rsi     # 0x2fb33
movq %r15, %rdx
callq 0x1abfc
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x1a707
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq %rax, %rbp
movl $0x1f, %edx
movq %rax, %rdi
leaq 0x159b5(%rip), %rsi     # 0x2fb38
callq 0x53f0
movl $0x3, %edx
movq %rbp, %rdi
leaq 0x159e5(%rip), %rsi     # 0x2fb7c
callq 0x53f0
movq -0x20(%r15), %rsi
movq -0x18(%r15), %rdx
movq %rbp, %rdi
callq 0x53f0
movq %rax, %rbp
movl $0x6, %edx
movq %rax, %rdi
movq %r13, %rsi
callq 0x53f0
movl $0x2, %edx
movq %rbp, %rdi
movq %r14, %rsi
callq 0x53f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1a1eb
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1a207
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0xd8(%r15), %rax
addq $0x90, %r15
cmpq %r12, %r15
movq %rax, %r15
jne 0x1a0f8
jmp 0x1a2c5
leaq 0x1587a(%rip), %rsi     # 0x2faa7
movl $0x1c, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x155d4(%rip), %r14     # 0x2f815
movl $0x7, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
leaq 0x1586c(%rip), %rsi     # 0x2fac4
movl $0x29, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x15882(%rip), %rsi     # 0x2faee
movl $0x31, %edx
movq %rbx, %rdi
callq 0x53f0
movl $0x7, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x53f0
leaq 0x15890(%rip), %rsi     # 0x2fb20
movl $0x10, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x1540e(%rip), %rsi     # 0x2f6b2
movl $0x2, %edx
movq %rbx, %rdi
callq 0x53f0
leaq 0x14253(%rip), %rsi     # 0x2e50b
movl $0x1, %edx
movq %rbx, %rdi
callq 0x53f0
movq 0x8(%rsp), %rax
movq (%rax), %r15
movq 0x8(%rax), %r13
cmpq %r13, %r15
je 0x1a415
addq $0x48, %r15
leaq 0x15849(%rip), %rbp     # 0x2fb2e
leaq 0x153c6(%rip), %r14     # 0x2f6b2
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x15836(%rip), %rsi     # 0x2fb31
callq 0x53f0
movl $0x1b, %edx
movq %rbx, %rdi
leaq 0x15799(%rip), %rsi     # 0x2faa8
callq 0x53f0
leaq 0x40(%rsp), %rdi
leaq 0x15838(%rip), %rsi     # 0x2fb58
movq %r15, %rdx
callq 0x1abfc
movq 0x40(%rsp), %rsi
movq 0x48(%rsp), %rdx
testq %rdx, %rdx
sete %al
testq %rsi, %rsi
setne %cl
orb %al, %cl
je 0x1a424
addq %rsi, %rdx
leaq 0x10(%rsp), %rdi
callq 0x1a707
movq 0x10(%rsp), %rsi
movq 0x18(%rsp), %rdx
movq %rbx, %rdi
callq 0x53f0
movq %rax, %r12
movl $0x17, %edx
movq %rax, %rdi
leaq 0x157e6(%rip), %rsi     # 0x2fb5d
callq 0x53f0
movl $0xa, %edx
movq %r12, %rdi
leaq 0x157ea(%rip), %rsi     # 0x2fb75
callq 0x53f0
movq -0x20(%r15), %rsi
movq -0x18(%r15), %rdx
movq %r12, %rdi
callq 0x53f0
movq %rax, %r12
movl $0x2, %edx
movq %rax, %rdi
movq %rbp, %rsi
callq 0x53f0
movl $0x2, %edx
movq %r12, %rdi
movq %r14, %rsi
callq 0x53f0
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1a3df
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1a3fb
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5380
leaq 0xd8(%r15), %rax
addq $0x90, %r15
cmpq %r13, %r15
movq %rax, %r15
jne 0x1a2ec
addq $0x78, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
callq 0x50e0
jmp 0x1a42d
jmp 0x1a43a
movq %rax, %rbx
jmp 0x1a495
jmp 0x1a43a
jmp 0x1a43a
jmp 0x1a43a
jmp 0x1a43a
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1a4b1
movq 0x20(%rsp), %rsi
jmp 0x1a4a9
movq %rax, %rbx
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1a43d
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5380
jmp 0x1a43d
jmp 0x1a476
movq %rax, %rbx
movq 0x10(%rsp), %rdi
leaq 0x20(%rsp), %rax
cmpq %rax, %rdi
je 0x1a495
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x5380
movq 0x40(%rsp), %rdi
leaq 0x50(%rsp), %rax
cmpq %rax, %rdi
je 0x1a4b1
movq 0x50(%rsp), %rsi
incq %rsi
callq 0x5380
movq %rbx, %rdi
callq 0x56d0
nop