LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::cmd(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::cmd(const std::string &cmdstr)
{
    if( !(valid) )
    {
        return *this;
    }


    // int fputs ( const char * str, FILE * stream );
    // writes the string str to the stream.
    // The function begins copying from the address specified (str) until it
    // reaches the terminating null character ('\0'). This final
    // null-character is not copied to the stream.
    fputs( (cmdstr + "\n").c_str(), gnucmd );

    // int fflush ( FILE * stream );
    // If the given stream was open for writing and the last i/o operation was
    // an output operation, any unwritten data in the output buffer is written
    // to the file.  If the argument is a null pointer, all open files are
    // flushed.  The stream remains open after this call.
    fflush(gnucmd);

    if( cmdstr.find("splot") != std::string::npos )
    {
        two_dim = false;
        ++nplots;
        return *this;
    }
    else if( cmdstr.find("plot") != std::string::npos )
    {
        two_dim = true;
        ++nplots;
        return *this;
    }
    else
    {
        return *this;
    }
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x20, %rsp
movq %rdi, %rbx
cmpb $0x1, 0x8(%rdi)
jne 0x3953
movq %rsi, %r14
leaq 0x69b8(%rip), %rdx      # 0xa2aa
movq %rsp, %r15
movq %r15, %rdi
callq 0x7d24
movq (%r15), %rdi
movq (%rbx), %rsi
callq 0x3230
movq %r15, %rdi
callq 0x3448
movq (%rbx), %rdi
callq 0x3240
leaq 0x698d(%rip), %rsi      # 0xa2ac
xorl %r15d, %r15d
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
jne 0x394c
leaq 0x6fd5(%rip), %rsi      # 0xa90e
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
movb $0x1, %r15b
cmpq $-0x1, %rax
je 0x3953
movb %r15b, 0x9(%rbx)
incl 0xc(%rbx)
movq %rbx, %rax
addq $0x20, %rsp
popq %rbx
popq %r14
popq %r15
retq
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::set_smooth(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::set_smooth(const std::string &stylestr)
{
    if (stylestr.find("unique")    == std::string::npos  &&
            stylestr.find("frequency") == std::string::npos  &&
            stylestr.find("csplines")  == std::string::npos  &&
            stylestr.find("bezier")    == std::string::npos  )
    {
        smooth.clear();
    }
    else
    {
        smooth = stylestr;
    }

    return *this;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x66bb(%rip), %rsi      # 0xa0f0
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
jne 0x3a8a
leaq 0x66ab(%rip), %rsi      # 0xa0f7
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
jne 0x3a8a
leaq 0x669e(%rip), %rsi      # 0xa101
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
jne 0x3a8a
leaq 0x6690(%rip), %rsi      # 0xa10a
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
je 0x3aa1
leaq 0x30(%rbx), %rdi
movq %r14, %rsi
callq 0x3140
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
andq $0x0, 0x38(%rbx)
movq 0x30(%rbx), %rax
movb $0x0, (%rax)
jmp 0x3a96
nop
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::savetofigure(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::savetofigure(const std::string &filename,
                               const std::string &terminal)
{
    std::ostringstream cmdstr;
    cmdstr << "set terminal " << terminal;
    (void)cmd(cmdstr.str() );

    cmdstr.str("");     // Clear cmdstr
    cmdstr << "set output \"" << filename << "\"";
    return cmd(cmdstr.str());
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x30(%rsp), %r12
movq %r12, %rdi
callq 0x32a0
leaq 0x6641(%rip), %rsi      # 0xa11c
movq %r12, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r15, %rsi
callq 0x31e0
leaq 0x38(%rsp), %r15
leaq 0x10(%rsp), %rdi
movq %r15, %rsi
callq 0x3320
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x38d6
leaq 0x10(%rsp), %rdi
callq 0x3448
leaq 0x678d(%rip), %rsi      # 0xa2ab
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7cca
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x32f0
leaq 0x10(%rsp), %rdi
callq 0x3448
leaq 0x65df(%rip), %rsi      # 0xa12a
leaq 0x30(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x31e0
leaq 0x682b(%rip), %rsi      # 0xa392
movq %rax, %rdi
callq 0x31f0
leaq 0x10(%rsp), %rdi
movq %r15, %rsi
callq 0x3320
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x38d6
leaq 0x10(%rsp), %rdi
callq 0x3448
leaq 0x30(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r14
popq %r15
retq
jmp 0x3bb7
jmp 0x3bc8
jmp 0x3bb7
jmp 0x3bc8
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3448
jmp 0x3bcb
jmp 0x3bc8
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::set_contour(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::set_contour(const std::string &position)
{
    if (position.find("base")    == std::string::npos  &&
            position.find("surface") == std::string::npos  &&
            position.find("both")    == std::string::npos  )
    {
        return cmd("set contour base");
    }

    return cmd("set contour " + position);
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x30, %rsp
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x6159(%rip), %rsi      # 0xa1ad
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
jne 0x4092
leaq 0x68bb(%rip), %rsi      # 0xa926
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
jne 0x4092
leaq 0x611a(%rip), %rsi      # 0xa19c
movq %r14, %rdi
xorl %edx, %edx
callq 0x3430
cmpq $-0x1, %rax
je 0x40cb
leaq 0x6119(%rip), %rsi      # 0xa1b2
leaq 0x10(%rsp), %r15
movq %r15, %rdi
movq %r14, %rdx
callq 0x7da7
movq %rbx, %rdi
movq %r15, %rsi
callq 0x38d6
leaq 0x10(%rsp), %rdi
callq 0x3448
movq %rbx, %rax
addq $0x30, %rsp
popq %rbx
popq %r14
popq %r15
retq
leaq 0x60cf(%rip), %rsi      # 0xa1a1
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x7cca
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x38d6
jmp 0x40b4
jmp 0x40f7
movq %rax, %rbx
jmp 0x4104
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3448
movq %rbx, %rdi
callq 0x33b0
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::plot_slope(double, double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::plot_slope(const double a,
                             const double b,
                             const std::string &title)
{
    std::ostringstream cmdstr;
    //
    // command to be sent to gnuplot
    //
    if (nplots > 0  &&  two_dim == true)
    {
        cmdstr << "replot ";
    }
    else
    {
        cmdstr << "plot ";
    }

    cmdstr << a << " * x + " << b << " title \"";

    if (title.empty())
    {
        cmdstr << "f(x) = " << a << " * x + " << b;
    }
    else
    {
        cmdstr << title;
    }

    cmdstr << "\" with " << pstyle;

    //
    // Do the actual plot
    //
    return cmd(cmdstr.str());
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x1b0, %rsp            # imm = 0x1B0
movq %rsi, %r14
movsd %xmm1, 0x8(%rsp)
movsd %xmm0, 0x10(%rsp)
movq %rdi, %rbx
leaq 0x38(%rsp), %r15
movq %r15, %rdi
callq 0x32a0
leaq 0x5b8b(%rip), %rsi      # 0xa21b
leaq 0x5b86(%rip), %rax      # 0xa21d
testb $0x1, 0x9(%rbx)
cmoveq %rax, %rsi
cmpl $0x0, 0xc(%rbx)
cmovleq %rax, %rsi
movq %r15, %rdi
callq 0x31f0
leaq 0x38(%rsp), %rdi
movsd 0x10(%rsp), %xmm0
callq 0x3330
leaq 0x5b5d(%rip), %rsi      # 0xa223
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x3330
leaq 0x5bbe(%rip), %rsi      # 0xa2a1
movq %rax, %rdi
callq 0x31f0
cmpq $0x0, 0x8(%r14)
je 0x4701
leaq 0x38(%rsp), %rdi
movq %r14, %rsi
callq 0x31e0
jmp 0x473d
leaq 0x5b23(%rip), %rsi      # 0xa22b
leaq 0x38(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movsd 0x10(%rsp), %xmm0
callq 0x3330
leaq 0x5afc(%rip), %rsi      # 0xa223
movq %rax, %rdi
callq 0x31f0
movq %rax, %rdi
movsd 0x8(%rsp), %xmm0
callq 0x3330
leaq 0x5aef(%rip), %rsi      # 0xa233
leaq 0x38(%rsp), %rdi
callq 0x31f0
leaq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x31e0
leaq 0x40(%rsp), %rsi
leaq 0x18(%rsp), %rdi
callq 0x3320
leaq 0x18(%rsp), %rsi
movq %rbx, %rdi
callq 0x38d6
leaq 0x18(%rsp), %rdi
callq 0x3448
leaq 0x38(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x1b0, %rsp            # imm = 0x1B0
popq %rbx
popq %r14
popq %r15
retq
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x3448
jmp 0x47ae
jmp 0x47ab
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::plot_equation(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::plot_equation(const std::string &equation,
                                const std::string &title)
{
    std::ostringstream cmdstr;
    //
    // command to be sent to gnuplot
    //
    if (nplots > 0  &&  two_dim == true)
    {
        cmdstr << "replot ";
    }
    else
    {
        cmdstr << "plot ";
    }

    cmdstr << equation;

    if (title.empty())
    {
        cmdstr << " notitle";
    }
    else
    {
        cmdstr << " title \"" << title << "\"";
    }

    cmdstr << " with " << pstyle;

    //
    // Do the actual plot
    //
    return cmd(cmdstr.str());
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %rdx, %r14
movq %rsi, %r15
movq %rdi, %rbx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
callq 0x32a0
leaq 0x5a30(%rip), %rsi      # 0xa21b
leaq 0x5a2b(%rip), %rax      # 0xa21d
testb $0x1, 0x9(%rbx)
cmoveq %rax, %rsi
cmpl $0x0, 0xc(%rbx)
cmovleq %rax, %rsi
movq %r12, %rdi
callq 0x31f0
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x31e0
cmpq $0x0, 0x8(%r14)
je 0x4849
leaq 0x5a79(%rip), %rsi      # 0xa2a1
leaq 0x20(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x31e0
movq %rax, %r12
leaq 0x5b4b(%rip), %rsi      # 0xa392
jmp 0x4850
leaq 0x59eb(%rip), %rsi      # 0xa23b
movq %r12, %rdi
callq 0x31f0
leaq 0x59d5(%rip), %rsi      # 0xa234
leaq 0x20(%rsp), %rdi
callq 0x31f0
leaq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x31e0
leaq 0x28(%rsp), %rsi
movq %rsp, %rdi
callq 0x3320
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x38d6
movq %rsp, %rdi
callq 0x3448
leaq 0x20(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3448
jmp 0x48c3
jmp 0x48c0
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::plot_equation3d(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::plot_equation3d(const std::string &equation,
                                  const std::string &title)
{
    std::ostringstream cmdstr;
    //
    // command to be sent to gnuplot
    //
    if (nplots > 0  &&  two_dim == false)
    {
        cmdstr << "replot ";
    }
    else
    {
        cmdstr << "splot ";
    }

    cmdstr << equation << " title \"";

    if (title.empty())
    {
        cmdstr << "f(x,y) = " << equation;
    }
    else
    {
        cmdstr << title;
    }

    cmdstr << "\" with " << pstyle;

    //
    // Do the actual plot
    //
    return cmd(cmdstr.str());
}

// Assembly:
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %rbx
leaq 0x20(%rsp), %r12
movq %r12, %rdi
callq 0x32a0
cmpb $0x0, 0x9(%rbx)
leaq 0x5916(%rip), %rsi      # 0xa21b
leaq 0x5938(%rip), %rax      # 0xa244
cmovneq %rax, %rsi
cmpl $0x0, 0xc(%rbx)
cmovleq %rax, %rsi
movq %r12, %rdi
callq 0x31f0
leaq 0x20(%rsp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x31e0
leaq 0x596a(%rip), %rsi      # 0xa2a1
movq %rax, %rdi
callq 0x31f0
cmpq $0x0, 0x8(%r15)
jne 0x495d
leaq 0x58fe(%rip), %rsi      # 0xa24b
leaq 0x20(%rsp), %rdi
callq 0x31f0
movq %rax, %r12
movq %r14, %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0x31e0
leaq 0x58c4(%rip), %rsi      # 0xa233
leaq 0x20(%rsp), %rdi
callq 0x31f0
leaq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x31e0
leaq 0x28(%rsp), %rsi
movq %rsp, %rdi
callq 0x3320
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x38d6
movq %rsp, %rdi
callq 0x3448
leaq 0x20(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r14
popq %r15
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3448
jmp 0x49d3
jmp 0x49d0
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::plotfile_x(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::plotfile_x(const std::string &filename,
                             const unsigned int column,
                             const std::string &title)
{
    //
    // check if file exists
    //
    file_available(filename);

    std::ostringstream cmdstr;
    //
    // command to be sent to gnuplot
    //
    if (nplots > 0  &&  two_dim == true)
    {
        cmdstr << "replot ";
    }
    else
    {
        cmdstr << "plot ";
    }

    cmdstr << "\"" << filename << "\" using " << column;

    if (title.empty())
    {
        cmdstr << " notitle ";
    }
    else
    {
        cmdstr << " title \"" << title << "\" ";
    }

    if(smooth.empty())
    {
        cmdstr << "with " << pstyle;
    }
    else
    {
        cmdstr << "smooth " << smooth;
    }

    //
    // Do the actual plot
    //
    return cmd(cmdstr.str()); //nplots++; two_dim = true;  already in cmd();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rcx, %r14
movl %edx, %ebp
movq %rsi, %r12
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x4b56
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0x32a0
leaq 0x57ff(%rip), %rsi      # 0xa21b
leaq 0x57fa(%rip), %rax      # 0xa21d
testb $0x1, 0x9(%rbx)
cmoveq %rax, %rsi
cmpl $0x0, 0xc(%rbx)
cmovleq %rax, %rsi
movq %r15, %rdi
callq 0x31f0
leaq 0x5950(%rip), %rsi      # 0xa392
leaq 0x28(%rsp), %r15
movq %r15, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r12, %rsi
callq 0x31e0
leaq 0x57f4(%rip), %rsi      # 0xa255
movq %rax, %rdi
callq 0x31f0
movl %ebp, %esi
movq %rax, %rdi
callq 0x3160
cmpq $0x0, 0x8(%r14)
je 0x4aa2
leaq 0x5820(%rip), %rsi      # 0xa2a1
leaq 0x28(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x31e0
movq %rax, %r15
leaq 0x57c8(%rip), %rsi      # 0xa268
jmp 0x4aa9
leaq 0x57b5(%rip), %rsi      # 0xa25e
movq %r15, %rdi
callq 0x31f0
cmpq $0x0, 0x38(%rbx)
je 0x4acf
leaq 0x57ac(%rip), %rsi      # 0xa26b
leaq 0x28(%rsp), %rdi
callq 0x31f0
leaq 0x30(%rbx), %rsi
jmp 0x4ae4
leaq 0x575f(%rip), %rsi      # 0xa235
leaq 0x28(%rsp), %rdi
callq 0x31f0
leaq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x31e0
leaq 0x30(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3320
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x38d6
leaq 0x8(%rsp), %rdi
callq 0x3448
leaq 0x28(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3448
jmp 0x4b43
jmp 0x4b40
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::file_available(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
bool Gnuplot::file_available(const std::string &filename)
{
    std::ostringstream except;
    if( Gnuplot::file_exists(filename, 0) ) // check existence
    {
        if( !(Gnuplot::file_exists(filename, 4)) ) // check read permission
        {
            except << "No read permission for File \"" << filename << "\"";
            throw GnuplotException( except.str() );
        }
        return true;
    }
    except << "File \"" << filename << "\" does not exist";
    throw GnuplotException( except.str() );
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
subq $0x1a0, %rsp            # imm = 0x1A0
movq %rdi, %rbx
leaq 0x28(%rsp), %rdi
callq 0x32a0
movq %rbx, %rdi
xorl %esi, %esi
callq 0x36ae
testb %al, %al
je 0x4ba7
pushq $0x4
popq %rsi
movq %rbx, %rdi
callq 0x36ae
testb %al, %al
je 0x4c16
leaq 0x28(%rsp), %rdi
callq 0x3070
movb $0x1, %al
addq $0x1a0, %rsp            # imm = 0x1A0
popq %rbx
popq %r14
popq %rbp
retq
leaq 0x57df(%rip), %rsi      # 0xa38d
leaq 0x28(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x31e0
leaq 0x57ca(%rip), %rsi      # 0xa394
movq %rax, %rdi
callq 0x31f0
pushq $0x10
popq %rdi
callq 0x3110
movq %rax, %rbx
leaq 0x30(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3320
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x7d5c
xorl %ebp, %ebp
leaq 0xa143(%rip), %rsi      # 0xed48
movq 0xa3ac(%rip), %rdx      # 0xefb8
movq %rbx, %rdi
callq 0x3390
jmp 0x4c83
leaq 0x5759(%rip), %rsi      # 0xa376
leaq 0x28(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %rbx, %rsi
callq 0x31e0
leaq 0x5759(%rip), %rsi      # 0xa392
movq %rax, %rdi
callq 0x31f0
pushq $0x10
popq %rdi
callq 0x3110
movq %rax, %rbx
leaq 0x30(%rsp), %rsi
leaq 0x8(%rsp), %rdi
callq 0x3320
movb $0x1, %bpl
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x7d5c
xorl %ebp, %ebp
leaq 0xa0d4(%rip), %rsi      # 0xed48
movq 0xa33d(%rip), %rdx      # 0xefb8
movq %rbx, %rdi
callq 0x3390
jmp 0x4c87
jmp 0x4c9b
movq %rax, %r14
leaq 0x8(%rsp), %rdi
callq 0x3448
testb %bpl, %bpl
jne 0x4c9e
jmp 0x4cab
movq %rax, %r14
movq %rbx, %rdi
callq 0x3190
jmp 0x4cab
movq %rax, %r14
leaq 0x28(%rsp), %rdi
callq 0x3070
movq %r14, %rdi
callq 0x33b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::plotfile_xy(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::plotfile_xy(const std::string &filename,
                              const unsigned int column_x,
                              const unsigned int column_y,
                              const std::string &title)
{
    //
    // check if file exists
    //
    file_available(filename);

    std::ostringstream cmdstr;
    //
    // command to be sent to gnuplot
    //
    if (nplots > 0  &&  two_dim == true)
    {
        cmdstr << "replot ";
    }
    else
    {
        cmdstr << "plot ";
    }

    cmdstr << "\"" << filename << "\" using " << column_x << ":" << column_y;

    if (title.empty())
    {
        cmdstr << " notitle ";
    }
    else
    {
        cmdstr << " title \"" << title << "\" ";
    }

    if(smooth.empty())
    {
        cmdstr << "with " << pstyle;
    }
    else
    {
        cmdstr << "smooth " << smooth;
    }

    //
    // Do the actual plot
    //
    return cmd(cmdstr.str());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x198, %rsp            # imm = 0x198
movq %r8, %r14
movl %ecx, %ebp
movl %edx, %r12d
movq %rsi, %r13
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x4b56
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x32a0
leaq 0x5522(%rip), %rsi      # 0xa21b
leaq 0x551d(%rip), %rax      # 0xa21d
testb $0x1, 0x9(%rbx)
cmoveq %rax, %rsi
cmpl $0x0, 0xc(%rbx)
cmovleq %rax, %rsi
movq %r15, %rdi
callq 0x31f0
leaq 0x5673(%rip), %rsi      # 0xa392
leaq 0x20(%rsp), %r15
movq %r15, %rdi
callq 0x31f0
movq %rax, %rdi
movq %r13, %rsi
callq 0x31e0
leaq 0x5517(%rip), %rsi      # 0xa255
movq %rax, %rdi
callq 0x31f0
movl %r12d, %esi
movq %rax, %rdi
callq 0x3160
leaq 0x549a(%rip), %rsi      # 0xa1f2
movq %rax, %rdi
callq 0x31f0
movl %ebp, %esi
movq %rax, %rdi
callq 0x3160
cmpq $0x0, 0x8(%r14)
je 0x4d99
leaq 0x5529(%rip), %rsi      # 0xa2a1
leaq 0x20(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x31e0
movq %rax, %r15
leaq 0x54d1(%rip), %rsi      # 0xa268
jmp 0x4da0
leaq 0x54be(%rip), %rsi      # 0xa25e
movq %r15, %rdi
callq 0x31f0
cmpq $0x0, 0x38(%rbx)
je 0x4dc6
leaq 0x54b5(%rip), %rsi      # 0xa26b
leaq 0x20(%rsp), %rdi
callq 0x31f0
leaq 0x30(%rbx), %rsi
jmp 0x4ddb
leaq 0x5468(%rip), %rsi      # 0xa235
leaq 0x20(%rsp), %rdi
callq 0x31f0
leaq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x31e0
leaq 0x28(%rsp), %rsi
movq %rsp, %rdi
callq 0x3320
movq %rsp, %rsi
movq %rbx, %rdi
callq 0x38d6
movq %rsp, %rdi
callq 0x3448
leaq 0x20(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x198, %rsp            # imm = 0x198
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq %rsp, %rdi
callq 0x3448
jmp 0x4e34
jmp 0x4e31
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::plotfile_xy_err(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::plotfile_xy_err(const std::string &filename,
                                  const unsigned int column_x,
                                  const unsigned int column_y,
                                  const unsigned int column_dy,
                                  const std::string &title)
{
    //
    // check if file exists
    //
    file_available(filename);

    std::ostringstream cmdstr;
    //
    // command to be sent to gnuplot
    //
    if (nplots > 0  &&  two_dim == true)
    {
        cmdstr << "replot ";
    }
    else
    {
        cmdstr << "plot ";
    }

    cmdstr << "\"" << filename << "\" using "
           << column_x << ":" << column_y << ":" << column_dy
           << " with errorbars ";

    if (title.empty())
    {
        cmdstr << " notitle ";
    }
    else
    {
        cmdstr << " title \"" << title << "\" ";
    }

    //
    // Do the actual plot
    //
    return cmd(cmdstr.str());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %r9, %r14
movl %r8d, 0xc(%rsp)
movl %ecx, %r12d
movl %edx, %r13d
movq %rsi, %rbp
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x4b56
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0x32a0
leaq 0x5394(%rip), %rsi      # 0xa21b
leaq 0x538f(%rip), %rax      # 0xa21d
testb $0x1, 0x9(%rbx)
cmoveq %rax, %rsi
cmpl $0x0, 0xc(%rbx)
cmovleq %rax, %rsi
movq %r15, %rdi
callq 0x31f0
leaq 0x54e5(%rip), %rsi      # 0xa392
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0x31f0
movq %rax, %rdi
movq %rbp, %rsi
callq 0x31e0
leaq 0x5389(%rip), %rsi      # 0xa255
movq %rax, %rdi
callq 0x31f0
movl %r13d, %esi
movq %rax, %rdi
callq 0x3160
leaq 0x530c(%rip), %rsi      # 0xa1f2
movq %rax, %rdi
callq 0x31f0
movl %r12d, %esi
movq %rax, %rdi
callq 0x3160
leaq 0x52f2(%rip), %rsi      # 0xa1f2
movq %rax, %rdi
callq 0x31f0
movl 0xc(%rsp), %esi
movq %rax, %rdi
callq 0x3160
leaq 0x5358(%rip), %rsi      # 0xa273
movq %rax, %rdi
callq 0x31f0
cmpq $0x0, 0x8(%r14)
je 0x4f52
leaq 0x5370(%rip), %rsi      # 0xa2a1
leaq 0x30(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x31e0
movq %rax, %r15
leaq 0x5318(%rip), %rsi      # 0xa268
jmp 0x4f59
leaq 0x5305(%rip), %rsi      # 0xa25e
movq %r15, %rdi
callq 0x31f0
leaq 0x38(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x3320
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x38d6
leaq 0x10(%rsp), %rdi
callq 0x3448
leaq 0x30(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3448
jmp 0x4fba
jmp 0x4fb7
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: Gnuplot::plotfile_xyz(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, unsigned int, unsigned int, unsigned int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&)
Gnuplot& Gnuplot::plotfile_xyz(const std::string &filename,
                               const unsigned int column_x,
                               const unsigned int column_y,
                               const unsigned int column_z,
                               const std::string &title)
{
    //
    // check if file exists
    //
    file_available(filename);

    std::ostringstream cmdstr;
    //
    // command to be sent to gnuplot
    //
    if (nplots > 0  &&  two_dim == false)
    {
        cmdstr << "replot ";
    }
    else
    {
        cmdstr << "splot ";
    }

    cmdstr << "\"" << filename << "\" using " << column_x << ":" << column_y
           << ":" << column_z;

    if (title.empty())
    {
        cmdstr << " notitle with " << pstyle;
    }
    else
    {
        cmdstr << " title \"" << title << "\" with " << pstyle;
    }

    //
    // Do the actual plot
    //
    return cmd(cmdstr.str());
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movq %r9, %r14
movl %r8d, 0xc(%rsp)
movl %ecx, %r12d
movl %edx, %r13d
movq %rsi, %rbp
movq %rdi, %rbx
movq %rsi, %rdi
callq 0x4b56
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0x32a0
cmpb $0x0, 0x9(%rbx)
leaq 0x520a(%rip), %rsi      # 0xa21b
leaq 0x522c(%rip), %rax      # 0xa244
cmovneq %rax, %rsi
cmpl $0x0, 0xc(%rbx)
cmovleq %rax, %rsi
movq %r15, %rdi
callq 0x31f0
leaq 0x535f(%rip), %rsi      # 0xa392
leaq 0x30(%rsp), %r15
movq %r15, %rdi
callq 0x31f0
movq %rax, %rdi
movq %rbp, %rsi
callq 0x31e0
leaq 0x5203(%rip), %rsi      # 0xa255
movq %rax, %rdi
callq 0x31f0
movl %r13d, %esi
movq %rax, %rdi
callq 0x3160
leaq 0x5186(%rip), %rsi      # 0xa1f2
movq %rax, %rdi
callq 0x31f0
movl %r12d, %esi
movq %rax, %rdi
callq 0x3160
leaq 0x516c(%rip), %rsi      # 0xa1f2
movq %rax, %rdi
callq 0x31f0
movl 0xc(%rsp), %esi
movq %rax, %rdi
callq 0x3160
cmpq $0x0, 0x8(%r14)
je 0x50c9
leaq 0x51f9(%rip), %rsi      # 0xa2a1
leaq 0x30(%rsp), %rdi
callq 0x31f0
movq %rax, %rdi
movq %r14, %rsi
callq 0x31e0
movq %rax, %r15
leaq 0x516c(%rip), %rsi      # 0xa233
jmp 0x50d0
leaq 0x51b4(%rip), %rsi      # 0xa284
movq %r15, %rdi
callq 0x31f0
leaq 0x10(%rbx), %rsi
movq %rax, %rdi
callq 0x31e0
leaq 0x38(%rsp), %rsi
leaq 0x10(%rsp), %rdi
callq 0x3320
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x38d6
leaq 0x10(%rsp), %rdi
callq 0x3448
leaq 0x30(%rsp), %rdi
callq 0x3070
movq %rbx, %rax
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x3448
jmp 0x513d
jmp 0x513a
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x3070
movq %rbx, %rdi
callq 0x33b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/orbitcowboy[P]gnuplot-cpp/./gnuplot_i.hpp
// Function: void stringtok<std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>>(std::__cxx11::list<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>>>&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, char const*)
void stringtok (Container &container,
                std::string const &in,
                const char * const delimiters = " \t\n")
{
    const std::string::size_type len = in.length();
    std::string::size_type i = 0;

    while ( i < len )
    {
        // eat leading whitespace
        i = in.find_first_not_of (delimiters, i);

        if (i == std::string::npos)
        {
            return;    // nothing left but white space
        }

        // find the end of the token
        const std::string::size_type j = in.find_first_of (delimiters, i);

        // push token
        if (j == std::string::npos)
        {
            container.push_back (in.substr(i));
            return;
        }
        container.push_back (in.substr(i, j - i));

        // set up for next loop
        i = j + 1;
    }

    return;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, (%rsp)
movq 0x8(%rsi), %rbx
xorl %r13d, %r13d
leaq 0x8(%rsp), %r12
cmpq %rbx, %r13
jae 0x7ed1
movq %r14, %rdi
movq %r15, %rsi
movq %r13, %rdx
callq 0x3150
cmpq $-0x1, %rax
je 0x7ed1
movq %rax, %rbp
movq %r14, %rdi
movq %r15, %rsi
movq %rax, %rdx
callq 0x3120
cmpq $-0x1, %rax
je 0x7ea5
movq %rax, %r13
movq %rax, %rcx
subq %rbp, %rcx
movq %r12, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0x3220
movq (%rsp), %rdi
movq %r12, %rsi
callq 0x8e54
movq %r12, %rdi
callq 0x3448
incq %r13
jmp 0x7e41
leaq 0x8(%rsp), %r15
pushq $-0x1
popq %rcx
movq %r15, %rdi
movq %r14, %rsi
movq %rbp, %rdx
callq 0x3220
movq (%rsp), %rdi
movq %r15, %rsi
callq 0x8e54
leaq 0x8(%rsp), %rdi
callq 0x3448
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x7ee2
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3448
movq %rbx, %rdi
callq 0x33b0
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cfg.cpp
// Function: spirv_cross::CFG::CFG(spirv_cross::Compiler&, spirv_cross::SPIRFunction const&)
CFG::CFG(Compiler &compiler_, const SPIRFunction &func_)
    : compiler(compiler_)
    , func(func_)
{
	preceding_edges.resize(compiler.get_current_id_bound());
	succeeding_edges.resize(compiler.get_current_id_bound());
	visit_order.resize(compiler.get_current_id_bound());
	immediate_dominators.resize(compiler.get_current_id_bound());

	build_post_order_visit_order();
	build_immediate_dominators();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %r12
movq %rsi, (%rdi)
movq %rdx, 0x8(%rdi)
leaq 0x10(%rdi), %rbx
leaq 0x28(%rdi), %r14
leaq 0x40(%rdi), %r15
leaq 0x58(%rdi), %r13
xorps %xmm0, %xmm0
movups %xmm0, 0x10(%rdi)
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x30(%rdi)
movups %xmm0, 0x40(%rdi)
movups %xmm0, 0x50(%rdi)
movups %xmm0, 0x60(%rdi)
movups %xmm0, 0x70(%rdi)
movups %xmm0, 0x7c(%rdi)
movq 0x28(%rsi), %rax
subq 0x20(%rsi), %rax
shrq $0x4, %rax
movl %eax, %esi
movq %rbx, %rdi
callq 0x6b34
movq (%r12), %rax
movq 0x28(%rax), %rcx
subq 0x20(%rax), %rcx
shrq $0x4, %rcx
movl %ecx, %esi
movq %r14, %rdi
callq 0x6b34
movq (%r12), %rax
movq 0x28(%rax), %rcx
subq 0x20(%rax), %rcx
shrq $0x4, %rcx
movl %ecx, %esi
movq %r13, %rdi
callq 0x6b6a
movq (%r12), %rax
movq 0x28(%rax), %rcx
subq 0x20(%rax), %rcx
shrq $0x4, %rcx
movl %ecx, %esi
movq %r15, %rdi
callq 0x6b9c
movq %r12, %rdi
callq 0x671e
movq %r12, %rdi
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x675a
movq %rax, %rbp
addq $0x70, %r12
movq %r12, %rdi
callq 0x6cf8
movq %r13, %rdi
callq 0x7020
movq %r15, %rdi
callq 0x6cf8
movq %r14, %rdi
callq 0x6bce
movq %rbx, %rdi
callq 0x6bce
movq %rbp, %rdi
callq 0x64b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cfg.cpp
// Function: spirv_cross::CFG::build_post_order_visit_order()
void CFG::build_post_order_visit_order()
{
	uint32_t block = func.entry_block;
	visit_count = 0;
	fill(begin(visit_order), end(visit_order), -1);
	post_order.clear();
	post_order_visit(block);
}

// Assembly:
movq 0x8(%rdi), %rcx
movq 0x58(%rdi), %rax
movl 0x60(%rcx), %esi
andl $0x0, 0x88(%rdi)
movq 0x60(%rdi), %rcx
cmpq %rcx, %rax
je 0x6742
orl $-0x1, (%rax)
addq $0x4, %rax
jmp 0x6734
movq 0x70(%rdi), %rax
cmpq %rax, 0x78(%rdi)
je 0x6862
movq %rax, 0x78(%rdi)
jmp 0x6862
nop
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cfg.cpp
// Function: spirv_cross::CFG::build_immediate_dominators()
void CFG::build_immediate_dominators()
{
	// Traverse the post-order in reverse and build up the immediate dominator tree.
	fill(begin(immediate_dominators), end(immediate_dominators), 0);
	immediate_dominators[func.entry_block] = func.entry_block;

	for (auto i = post_order.size(); i; i--)
	{
		uint32_t block = post_order[i - 1];
		auto &pred = preceding_edges[block];
		if (pred.empty()) // This is for the entry block, but we've already set up the dominators.
			continue;

		for (auto &edge : pred)
		{
			if (immediate_dominators[block])
			{
				assert(immediate_dominators[edge]);
				immediate_dominators[block] = find_common_dominator(block, edge);
			}
			else
				immediate_dominators[block] = edge;
		}
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movq 0x40(%rdi), %r15
movq 0x48(%rdi), %rax
movq %r15, %rcx
cmpq %rax, %rcx
je 0x6784
andl $0x0, (%rcx)
addq $0x4, %rcx
jmp 0x6776
movq 0x8(%rbx), %rax
movl 0x60(%rax), %eax
movl %eax, (%r15,%rax,4)
movq 0x78(%rbx), %r12
movq 0x10(%rbx), %rax
movq %rax, 0x10(%rsp)
movq 0x70(%rbx), %rax
movq %rax, 0x8(%rsp)
subq %rax, %r12
sarq $0x2, %r12
testq %r12, %r12
je 0x6802
movq 0x8(%rsp), %rax
movl -0x4(%rax,%r12,4), %r14d
decq %r12
imulq $0x18, %r14, %rax
movq 0x10(%rsp), %rcx
movq (%rcx,%rax), %rbp
movq 0x8(%rcx,%rax), %r13
cmpq %r13, %rbp
je 0x67ac
cmpq %r13, %rbp
je 0x67ac
cmpl $0x0, (%r15,%r14,4)
movl (%rbp), %eax
je 0x67f8
cmpl $0x0, (%r15,%rax,4)
je 0x6811
movq %rbx, %rdi
movl %r14d, %esi
movl %eax, %edx
callq 0x682e
movl %eax, (%r15,%r14,4)
addq $0x4, %rbp
jmp 0x67d5
addq $0x18, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x887e8(%rip), %rdi     # 0x8f000
leaq 0x887fc(%rip), %rsi     # 0x8f01b
leaq 0x8880f(%rip), %rcx     # 0x8f035
pushq $0x44
popq %rdx
callq 0x61c0
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cfg.cpp
// Function: spirv_cross::CFG::find_common_dominator(unsigned int, unsigned int) const
uint32_t CFG::find_common_dominator(uint32_t a, uint32_t b) const
{
	while (a != b)
	{
		if (visit_order[a] < visit_order[b])
			a = immediate_dominators[a];
		else
			b = immediate_dominators[b];
	}
	return a;
}

// Assembly:
movq 0x40(%rdi), %rcx
movq 0x58(%rdi), %rdi
movl %esi, %eax
cmpl %edx, %eax
je 0x6852
movl (%rdi,%rax,4), %r8d
movl %edx, %esi
cmpl (%rdi,%rsi,4), %r8d
jl 0x684d
movl (%rcx,%rsi,4), %edx
jmp 0x6838
movl (%rcx,%rax,4), %esi
jmp 0x6836
retq
nop
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cfg.cpp
// Function: spirv_cross::CFG::add_branch(unsigned int, unsigned int)
void CFG::add_branch(uint32_t from, uint32_t to)
{
	const auto add_unique = [](vector<uint32_t> &l, uint32_t value) {
		auto itr = find(begin(l), end(l), value);
		if (itr == end(l))
			l.push_back(value);
	};
	add_unique(preceding_edges[to], from);
	add_unique(succeeding_edges[from], to);
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %edx, %ebx
movl %esi, %ebp
movq %rdi, %r14
movl %edx, %eax
imulq $0x18, %rax, %rdi
addq 0x10(%r14), %rdi
callq 0x69e2
movl %ebp, %eax
imulq $0x18, %rax, %rdi
addq 0x28(%r14), %rdi
movl %ebx, %esi
popq %rbx
popq %r14
popq %rbp
jmp 0x69e2
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cfg.cpp
// Function: spirv_cross::DominatorBuilder::add_block(unsigned int)
void DominatorBuilder::add_block(uint32_t block)
{
	if (!cfg.get_immediate_dominator(block))
	{
		// Unreachable block via the CFG, we will never emit this code anyways.
		return;
	}

	if (!dominator)
	{
		dominator = block;
		return;
	}

	if (block != dominator)
		dominator = cfg.find_common_dominator(block, dominator);
}

// Assembly:
pushq %rbx
movq %rdi, %rbx
movq (%rdi), %rdi
movl %esi, %eax
movq 0x40(%rdi), %rcx
cmpl $0x0, (%rcx,%rax,4)
je 0x6a46
movl 0x8(%rbx), %edx
testl %edx, %edx
je 0x6a43
cmpl %esi, %edx
je 0x6a46
callq 0x682e
movl %eax, %esi
movl %esi, 0x8(%rbx)
popq %rbx
retq
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cfg.cpp
// Function: spirv_cross::DominatorBuilder::lift_continue_block_dominator()
void DominatorBuilder::lift_continue_block_dominator()
{
	// It is possible for a continue block to be the dominator of a variable is only accessed inside the while block of a do-while loop.
	// We cannot safely declare variables inside a continue block, so move any variable declared
	// in a continue block to the entry block to simplify.
	// It makes very little sense for a continue block to ever be a dominator, so fall back to the simplest
	// solution.

	if (!dominator)
		return;

	auto &block = cfg.get_compiler().get<SPIRBlock>(dominator);
	auto post_order = cfg.get_visit_order(dominator);

	// If we are branching to a block with a higher post-order traversal index (continue blocks), we have a problem
	// since we cannot create sensible GLSL code for this, fallback to entry block.
	bool back_edge_dominator = false;
	switch (block.terminator)
	{
	case SPIRBlock::Direct:
		if (cfg.get_visit_order(block.next_block) > post_order)
			back_edge_dominator = true;
		break;

	case SPIRBlock::Select:
		if (cfg.get_visit_order(block.true_block) > post_order)
			back_edge_dominator = true;
		if (cfg.get_visit_order(block.false_block) > post_order)
			back_edge_dominator = true;
		break;

	case SPIRBlock::MultiSelect:
		for (auto &target : block.cases)
		{
			if (cfg.get_visit_order(target.block) > post_order)
				back_edge_dominator = true;
		}
		if (block.default_block && cfg.get_visit_order(block.default_block) > post_order)
			back_edge_dominator = true;
		break;

	default:
		break;
	}

	if (back_edge_dominator)
		dominator = cfg.get_function().entry_block;
}

// Assembly:
movl 0x8(%rdi), %esi
testl %esi, %esi
je 0x6adc
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
movq (%rdi), %rax
movq (%rax), %rdi
callq 0x6c24
movq %rax, %r14
movq (%rbx), %rdi
movl 0x8(%rbx), %esi
callq 0x6c3a
movl %eax, %ebp
movl 0xc(%r14), %eax
cmpl $0x3, %eax
je 0x6add
cmpl $0x2, %eax
je 0x6a9d
cmpl $0x1, %eax
jne 0x6ace
movq (%rbx), %rdi
movl 0x18(%r14), %esi
callq 0x6c3a
jmp 0x6abd
movq (%rbx), %rdi
movl 0x2c(%r14), %esi
callq 0x6c3a
movl %eax, %r15d
movq (%rbx), %rdi
movl 0x30(%r14), %esi
callq 0x6c3a
cmpl %ebp, %r15d
ja 0x6ac1
cmpl %ebp, %eax
jbe 0x6ace
movq (%rbx), %rax
movq 0x8(%rax), %rax
movl 0x60(%rax), %eax
movl %eax, 0x8(%rbx)
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x98(%r14), %r12
movq 0xa0(%r14), %r13
xorl %r15d, %r15d
cmpq %r13, %r12
je 0x6b0e
movq (%rbx), %rdi
movl 0x4(%r12), %esi
callq 0x6c3a
cmpl %ebp, %eax
seta %al
orb %al, %r15b
addq $0x8, %r12
jmp 0x6aee
movl 0x34(%r14), %esi
testl %esi, %esi
je 0x6b2c
movq (%rbx), %rdi
callq 0x6c3a
cmpl %ebp, %eax
seta %al
orb %r15b, %al
testb $0x1, %al
jne 0x6ac1
jmp 0x6ace
testb $0x1, %r15b
jne 0x6ac1
jmp 0x6ace
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cpp.cpp
// Function: spirv_cross::CompilerCPP::emit_buffer_block(spirv_cross::SPIRVariable const&)
void CompilerCPP::emit_buffer_block(const SPIRVariable &var)
{
	add_resource_name(var.self);

	auto &type = get<SPIRType>(var.basetype);
	auto instance_name = to_name(var.self);

	uint32_t descriptor_set = ir.meta[var.self].decoration.set;
	uint32_t binding = ir.meta[var.self].decoration.binding;

	emit_block_struct(type);
	auto buffer_name = to_name(type.self);

	statement("internal::Resource<", buffer_name, type_to_array_glsl(type), "> ", instance_name, "__;");
	statement_no_indent("#define ", instance_name, " __res->", instance_name, "__.get()");
	resource_registrations.push_back(
	    join("s.register_resource(", instance_name, "__", ", ", descriptor_set, ", ", binding, ");"));
	statement("");
}

// Assembly:
pushq %r15
pushq %r14
pushq %rbx
subq $0x70, %rsp
movq %rsi, %r15
movq %rdi, %rbx
movl 0x8(%rsi), %esi
callq 0x22d1a
movl 0xc(%r15), %esi
movq %rbx, %rdi
callq 0x90a4
movq %rax, %r14
movl 0x8(%r15), %edx
movq (%rbx), %rax
leaq 0x30(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
callq *0x38(%rax)
movl 0x8(%r15), %eax
movq 0x38(%rbx), %rcx
imulq $0x148, %rax, %rax      # imm = 0x148
movl 0xac(%rcx,%rax), %edx
movl %edx, 0xc(%rsp)
movl 0xb0(%rcx,%rax), %eax
movl %eax, 0x8(%rsp)
movq %rbx, %rdi
movq %r14, %rsi
callq 0x783c
movl 0x8(%r14), %edx
movq (%rbx), %rax
leaq 0x50(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
callq *0x38(%rax)
leaq 0x10(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2547c
subq $0x8, %rsp
leaq 0x87aa1(%rip), %rax     # 0x8f1c0
leaq 0x87a83(%rip), %rsi     # 0x8f1a9
leaq 0x87a90(%rip), %r8      # 0x8f1bd
leaq 0x58(%rsp), %rdx
leaq 0x18(%rsp), %rcx
leaq 0x38(%rsp), %r9
movq %rbx, %rdi
pushq %rax
callq 0x90ba
popq %rax
popq %rcx
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0x87a6c(%rip), %rsi     # 0x8f1c4
leaq 0x87a6e(%rip), %rcx     # 0x8f1cd
leaq 0x87a70(%rip), %r9      # 0x8f1d6
leaq 0x30(%rsp), %rdx
movq %rbx, %rdi
movq %rdx, %r8
callq 0x91c4
subq $0x8, %rsp
leaq 0x922ff(%rip), %rax     # 0x99a80
leaq 0x10(%rsp), %r10
leaq 0x8d8fe(%rip), %r8      # 0x9508b
leaq 0x87a4b(%rip), %rsi     # 0x8f1df
leaq 0x87a59(%rip), %rcx     # 0x8f1f4
leaq 0x18(%rsp), %rdi
leaq 0x38(%rsp), %rdx
leaq 0x14(%rsp), %r9
pushq %rax
pushq %r10
pushq %r8
callq 0x91e9
addq $0x20, %rsp
leaq 0x788(%rbx), %rdi
leaq 0x10(%rsp), %rsi
callq 0xcc8c
leaq 0x10(%rsp), %rdi
callq 0x6548
leaq 0x880ad(%rip), %rsi     # 0x8f887
movq %rbx, %rdi
callq 0x928e
leaq 0x50(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
addq $0x70, %rsp
popq %rbx
popq %r14
popq %r15
retq
jmp 0x7804
jmp 0x781c
movq %rax, %rbx
leaq 0x10(%rsp), %rdi
callq 0x6548
jmp 0x781f
jmp 0x781c
jmp 0x7817
movq %rax, %rbx
jmp 0x7829
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0x6548
leaq 0x30(%rsp), %rdi
callq 0x6548
movq %rbx, %rdi
callq 0x64b0
nop
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cpp.cpp
// Function: spirv_cross::CompilerCPP::emit_shared(spirv_cross::SPIRVariable const&)
void CompilerCPP::emit_shared(const SPIRVariable &var)
{
	add_resource_name(var.self);

	auto instance_name = to_name(var.self);
	statement(CompilerGLSL::variable_decl(var), ";");
	statement_no_indent("#define ", instance_name, " __res->", instance_name);
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
movl 0x8(%rsi), %esi
callq 0x22d1a
movl 0x8(%r14), %edx
movq (%rbx), %rax
leaq 0x28(%rsp), %rdi
pushq $0x1
popq %rcx
movq %rbx, %rsi
callq *0x38(%rax)
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
movq %r14, %rdx
callq 0x2619e
leaq 0x91f5c(%rip), %rdx     # 0x99a81
leaq 0x8(%rsp), %rsi
movq %rbx, %rdi
callq 0x953a
leaq 0x8(%rsp), %rdi
callq 0x6548
leaq 0x87681(%rip), %rsi     # 0x8f1c4
leaq 0x87683(%rip), %rcx     # 0x8f1cd
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
movq %rdx, %r8
callq 0x9600
leaq 0x28(%rsp), %rdi
callq 0x6548
addq $0x48, %rsp
popq %rbx
popq %r14
retq
jmp 0x7b7d
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x6548
jmp 0x7b80
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x6548
movq %rbx, %rdi
callq 0x64b0
// File: /workspace/github_cpp_makefile_star2_O2/rossy[P]crossc/SPIRV-Cross/spirv_cpp.cpp
// Function: spirv_cross::CompilerCPP::argument_decl[abi:cxx11](spirv_cross::SPIRFunction::Parameter const&)
string CompilerCPP::argument_decl(const SPIRFunction::Parameter &arg)
{
	auto &type = expression_type(arg.id);
	bool constref = !type.pointer || arg.write_count == 0;

	auto &var = get<SPIRVariable>(arg.id);

	string base = type_to_glsl(type);
	string variable_name = to_name(var.self);
	remap_variable_type_name(type, variable_name, base);

	for (uint32_t i = 0; i < type.array.size(); i++)
		base = join("std::array<", base, ", ", to_array_size(type, i), ">");

	return join(constref ? "const " : "", base, " &", variable_name);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x98, %rsp
movq %rdx, %rbx
movq %rsi, %r14
movq %rdi, 0x10(%rsp)
movl 0x4(%rdx), %esi
movq %r14, %rdi
callq 0x104b0
movq %rax, %r15
cmpl $0x0, 0xc(%rbx)
leaq 0x896ce(%rip), %rax     # 0x92177
leaq 0x86dd7(%rip), %rcx     # 0x8f887
cmoveq %rax, %rcx
cmpb $0x0, 0x60(%r15)
cmoveq %rax, %rcx
movq %rcx, 0x8(%rsp)
movl 0x4(%rbx), %esi
movq %r14, %rdi
callq 0x9c0e
movq %rax, %rbx
movq (%r14), %rax
leaq 0x18(%rsp), %rdi
movq %r14, %rsi
movq %r15, %rdx
xorl %ecx, %ecx
callq *0x98(%rax)
movl 0x8(%rbx), %edx
movq (%r14), %rax
leaq 0x38(%rsp), %rdi
pushq $0x1
popq %rcx
movq %r14, %rsi
callq *0x38(%rax)
leaq 0x38(%rsp), %rdx
leaq 0x18(%rsp), %rcx
movq %r14, %rdi
movq %r15, %rsi
callq 0x9626
xorl %ebp, %ebp
leaq 0x58(%rsp), %r12
leaq 0x78(%rsp), %rbx
leaq 0x18(%rsp), %r13
movl %ebp, %eax
movq 0x28(%r15), %rcx
subq 0x20(%r15), %rcx
sarq $0x2, %rcx
cmpq %rax, %rcx
jbe 0x8b85
movq %r12, %rdi
movq %r14, %rsi
movq %r15, %rdx
movl %ebp, %ecx
callq 0x35634
movq %rbx, %rdi
leaq 0x86a4a(%rip), %rsi     # 0x8f597
movq %r13, %rdx
leaq 0x8c534(%rip), %rcx     # 0x9508b
movq %r12, %r8
leaq 0x86673(%rip), %r9      # 0x8f1d4
callq 0xaa19
movq %r13, %rdi
movq %rbx, %rsi
callq 0x6320
movq %rbx, %rdi
callq 0x6548
movq %r12, %rdi
callq 0x6548
incl %ebp
jmp 0x8b20
leaq 0x78(%rsp), %rsi
movq 0x8(%rsp), %rax
movq %rax, (%rsi)
leaq 0x94b2b(%rip), %rcx     # 0x9d6c4
leaq 0x18(%rsp), %rdx
leaq 0x38(%rsp), %r8
movq 0x10(%rsp), %rbx
movq %rbx, %rdi
callq 0xaaa5
leaq 0x38(%rsp), %rdi
callq 0x6548
leaq 0x18(%rsp), %rdi
callq 0x6548
movq %rbx, %rax
addq $0x98, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x8bf1
jmp 0x8bf1
movq %rax, %rbx
jmp 0x8bfe
movq %rax, %rbx
leaq 0x58(%rsp), %rdi
callq 0x6548
jmp 0x8bf4
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x6548
leaq 0x18(%rsp), %rdi
callq 0x6548
movq %rbx, %rdi
callq 0x64b0