// File: /workspace/github_cpp_makefile_star2_O3/wichtounet[P]articles/src/graphs.cpp
// Function: graphs::output(graphs::Output)
void graphs::output(Output output){
    if(output == Output::GOOGLE){
        std::ofstream file("graph.html");

        file << "<html>" << std::endl;
        file << "<head>" << std::endl;
        file << "<script type=\"text/javascript\" src=\"https://www.google.com/jsapi\"></script>" << std::endl;
        file << "<script type=\"text/javascript\">google.load('visualization', '1.0', {'packages':['corechart']});</script>" << std::endl;
        file << "</head>" << std::endl;
        file << "<body>" << std::endl;

        file << "<script type=\"text/javascript\">" << std::endl;

        //One function to rule them all
        for(auto& graph : all_graphs){
            file << "function draw_" << graph->name << "(){" << std::endl;

            file << "var data = google.visualization.arrayToDataTable([" << std::endl;

            //['x', 'Cats', 'Blanket 1', 'Blanket 2'],
            auto results = compute_values(graph);

            file << "['x'";

            auto first = results.begin()->second;
            for(auto& pair : first){
                file << ", '" << pair.first << "'";
            }

            file << "]," << std::endl;

            std::vector<std::string> groups;
            for(auto& group : results){
                groups.push_back(group.first);
            }
            std::sort(groups.begin(), groups.end(), numeric_cmp);

            std::size_t max = 0;
            for(auto& group_title : groups){
                file << "['" << group_title << "'";

                for(auto& serie : results[group_title]){
                    file << ", " << serie.second;
                    max = std::max(max, serie.second);
                }

                file << "]," << std::endl;
            }

            file << "]);" << std::endl;

            file << "var graph = new google.visualization.LineChart(document.getElementById('graph_" << graph->name <<"'));" << std::endl
                 << "var options = {curveType: \"function\","
                 << "title: \"" << graph->title << "\","
                 << "animation: {duration:1200, easing:\"in\"},"
                 << "width: 700, height: 400,"
                 << "hAxis: {title:\"Number of elements\", slantedText:true},"
                 << "vAxis: {viewWindow: {min:0}, title:\"" << graph->unit << "\"}};" << std::endl
                 << "graph.draw(data, options);" << std::endl;

            file << "var button = document.getElementById('graph_button_" << graph->name << "');" << std::endl
                 << "button.onclick = function(){" << std::endl
                 << "if(options.vAxis.logScale){" << std::endl
                 << "button.value=\"Logarithmic Scale\";" << std::endl
                 << "} else {" << std::endl
                 << "button.value=\"Normal scale\";" << std::endl
                 << "}" << std::endl
                 << "options.vAxis.logScale=!options.vAxis.logScale;" << std::endl
                 << "graph.draw(data, options);" << std::endl
                 << "};" << std::endl;

            file << "}" << std::endl;
        }

        //One function to find them
        file << "function draw_all(){" << std::endl;
        for(auto& graph : all_graphs){
            file << "draw_" << graph->name << "();" << std::endl;
        }
        file << "}" << std::endl;

        //One callback to bring them all
        file << "google.setOnLoadCallback(draw_all);" << std::endl;
        file << "</script>" << std::endl;
        file << std::endl;

        //And in the web page bind them
        for(auto& graph : all_graphs){
            file << "<div id=\"graph_" << graph->name << "\" style=\"width: 700px; height: 400px;\"></div>" << std::endl;
            file << "<input id=\"graph_button_" << graph->name << "\" type=\"button\" value=\"Logarithmic scale\">" << std::endl;
        }

        file << "</body>" << std::endl;
        file << "</html>" << std::endl;

        //...In the land of Google where shadow lies
    } else if (output == Output::PLUGIN) {
        std::ofstream file("graph.html");

        //One function to rule them all
        for(auto& graph : all_graphs){
            file << "[line_chart width=\"700px\" height=\"400px\" scale_button=\"true\" title=\"" << graph->title
                << "\" h_title=\"Number of elements\" v_title=\"" << graph->unit << "\"]" << std::endl;

            //['x', 'Cats', 'Blanket 1', 'Blanket 2'],
            auto results = compute_values(graph);

            file << "['x'";

            auto first = results.begin()->second;
            for(auto& pair : first){
                file << ", '" << pair.first << "'";
            }

            file << "]," << std::endl;

            std::vector<std::string> groups;
            for(auto& group : results){
                groups.push_back(group.first);
            }
            std::sort(groups.begin(), groups.end(), numeric_cmp);

            std::size_t max = 0;
            for(auto& group_title : groups){
                file << "['" << group_title << "'";

                for(auto& serie : results[group_title]){
                    file << ", " << serie.second;
                    max = std::max(max, serie.second);
                }

                file << "]," << std::endl;
            }

            file << "[/line_chart]" << std::endl;
        }
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2c8, %rsp            # imm = 0x2C8
cmpl $0x1, %edi
je 0xb27ff
testl %edi, %edi
jne 0xb2c0d
leaq 0xc8(%rsp), %rbx
leaq 0xcd8b(%rip), %rsi      # 0xbe7a1
movl $0x10, %edx
movq %rbx, %rdi
callq 0x41f0
leaq 0xcd82(%rip), %rsi      # 0xbe7ac
movl $0x6, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xcd3c(%rip), %rsi      # 0xbe7b3
movl $0x6, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xccf6(%rip), %rsi      # 0xbe7ba
movl $0x4b, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xccf5(%rip), %rsi      # 0xbe806
movl $0x68, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xcd11(%rip), %rsi      # 0xbe86f
movl $0x7, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xcccc(%rip), %rsi      # 0xbe877
movl $0x6, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xcc86(%rip), %rsi      # 0xbe87e
movl $0x1f, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
leaq 0xc8(%rsp), %rbx
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq 0x1055a48(%rip), %rax   # 0x1107688
movq 0x1055a39(%rip), %r15   # 0x1107680
movq %rax, 0x20(%rsp)
cmpq %rax, %r15
je 0xb246c
leaq 0xcc93(%rip), %r14      # 0xbe8ef
movl $0xe, %edx
leaq 0xcc36(%rip), %rsi      # 0xbe89e
movq %rbx, %rdi
callq 0x4210
movq (%r15), %rax
movq 0x8(%rax), %rdx
movq (%rax), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x3, %edx
leaq 0xcea5(%rip), %rsi      # 0xbeb33
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x32, %edx
leaq 0xcbe0(%rip), %rsi      # 0xbe8ad
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
vmovups (%r15), %xmm0
movq 0x8(%r15), %rax
vmovaps %xmm0, 0x70(%rsp)
testq %rax, %rax
je 0xb1d2a
movq 0x3d2b4(%rip), %rcx     # 0xeefd0
cmpb $0x0, (%rcx)
je 0xb1d26
incl 0x8(%rax)
jmp 0xb1d2a
lock
incl 0x8(%rax)
leaq 0x90(%rsp), %rdi
leaq 0x70(%rsp), %rsi
callq 0xb192e
movq 0x78(%rsp), %rdi
testq %rdi, %rdi
je 0xb1d4b
callq 0xb2e12
movl $0x4, %edx
leaq 0xcb89(%rip), %rsi      # 0xbe8e0
movq %rbx, %rdi
callq 0x4210
movq 0xa0(%rsp), %rax
xorl %edx, %edx
movq %rdx, 0x28(%rsp)
leaq 0x28(%rsp), %rdi
movq 0x30(%rax), %rcx
leaq 0x28(%rax), %rsi
movq %rcx, 0x30(%rsp)
movq %rdx, 0x38(%rsp)
movq 0x40(%rax), %rcx
movq %rcx, 0x40(%rsp)
vmovups 0x48(%rax), %xmm0
leaq 0x48(%rsp), %rax
movq %rdi, (%rsp)
vmovups %xmm0, (%rax)
movq %rdx, 0x58(%rsp)
movq %rsp, %rdx
callq 0xb2f18
movq 0x38(%rsp), %r13
testq %r13, %r13
je 0xb1df5
movl $0x3, %edx
leaq 0xcb22(%rip), %rsi      # 0xbe8e5
movq %rbx, %rdi
callq 0x4210
movq 0x10(%r13), %rdx
movq 0x8(%r13), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x1, %edx
leaq 0xcb00(%rip), %rsi      # 0xbe8e7
movq %rax, %rdi
callq 0x4210
movq (%r13), %r13
jmp 0xb1db2
movl $0x2, %edx
leaq 0xcae8(%rip), %rsi      # 0xbe8e9
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq 0xa0(%rsp), %r12
vxorps %xmm0, %xmm0, %xmm0
movq $0x0, 0x10(%rsp)
vmovaps %xmm0, (%rsp)
testq %r12, %r12
je 0xb1f87
leaq 0x8(%r12), %rsi
movq %rsp, %rdi
callq 0xb2d8a
movq (%r12), %r12
testq %r12, %r12
jne 0xb1e58
movq (%rsp), %r13
movq 0x8(%rsp), %rbp
cmpq %rbp, %r13
je 0xb1f7e
movq %rbp, %rax
subq %r13, %rax
sarq $0x5, %rax
lzcntq %rax, %rdx
addl %edx, %edx
xorq $0x7e, %rdx
leaq -0x4db(%rip), %r12      # 0xb19c1
movq %r13, %rdi
movq %rbp, %rsi
movq %r12, %rcx
callq 0xb41e5
movq %r13, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0xb4327
movq (%rsp), %r13
movq 0x8(%rsp), %rbp
jmp 0xb1f7e
movl $0x2, %edx
leaq 0xca1a(%rip), %rsi      # 0xbe8ec
movq %rbx, %rdi
callq 0x4210
movq 0x8(%r13), %rdx
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x1, %edx
leaq 0xc9f1(%rip), %rsi      # 0xbe8e7
movq %rax, %rdi
callq 0x4210
leaq 0x90(%rsp), %rdi
movq %r13, %rsi
callq 0xb37be
movq 0x10(%rax), %r12
testq %r12, %r12
je 0xb1f3a
movl $0x2, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4210
movq 0x28(%r12), %rsi
movq %rbx, %rdi
callq 0x4110
movq (%r12), %r12
jmp 0xb1f12
movl $0x2, %edx
leaq 0xc9a3(%rip), %rsi      # 0xbe8e9
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
addq $0x20, %r13
cmpq %rbp, %r13
jne 0xb1ec6
movl $0x3, %edx
leaq 0xc95f(%rip), %rsi      # 0xbe8f2
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x4e, %edx
leaq 0xc923(%rip), %rsi      # 0xbe8f6
movq %rbx, %rdi
callq 0x4210
movq (%r15), %rax
movq 0x8(%rax), %rdx
movq (%rax), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x4, %edx
leaq 0xc94c(%rip), %rsi      # 0xbe945
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x25, %edx
leaq 0xc912(%rip), %rsi      # 0xbe94a
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movl $0x8, %edx
leaq 0xc921(%rip), %rsi      # 0xbe970
movq %r13, %rdi
callq 0x4210
movq (%r15), %rax
movq 0x28(%rax), %rdx
movq 0x20(%rax), %rsi
movq %r13, %rdi
callq 0x4210
movl $0x2, %edx
leaq 0xc8f7(%rip), %rsi      # 0xbe96d
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movl $0x28, %edx
leaq 0xc8ec(%rip), %rsi      # 0xbe979
movq %r13, %rdi
callq 0x4210
movl $0x18, %edx
leaq 0xc901(%rip), %rsi      # 0xbe9a2
movq %r13, %rdi
callq 0x4210
movl $0x36, %edx
leaq 0xc906(%rip), %rsi      # 0xbe9bb
movq %r13, %rdi
callq 0x4210
movl $0x24, %edx
leaq 0xc929(%rip), %rsi      # 0xbe9f2
movq %r13, %rdi
callq 0x4210
movq (%r15), %rax
movq 0x48(%rax), %rdx
movq 0x40(%rax), %rsi
movq %r13, %rdi
callq 0x4210
movl $0x4, %edx
leaq 0xc927(%rip), %rsi      # 0xbea17
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x1a, %edx
leaq 0xc8ed(%rip), %rsi      # 0xbea1c
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x33, %edx
leaq 0xc8c9(%rip), %rsi      # 0xbea37
movq %rbx, %rdi
callq 0x4210
movq (%r15), %rax
movq 0x8(%rax), %rdx
movq (%rax), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x3, %edx
leaq 0xc8d7(%rip), %rsi      # 0xbea6b
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x1c, %edx
leaq 0xc89c(%rip), %rsi      # 0xbea6f
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x1b, %edx
leaq 0xc87a(%rip), %rsi      # 0xbea8c
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x21, %edx
leaq 0xc857(%rip), %rsi      # 0xbeaa8
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x8, %edx
leaq 0xc83a(%rip), %rsi      # 0xbeaca
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x1c, %edx
leaq 0xc804(%rip), %rsi      # 0xbead3
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x1, %edx
leaq 0xc7e2(%rip), %rsi      # 0xbeaf0
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x2f, %edx
leaq 0xc7a5(%rip), %rsi      # 0xbeaf2
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x1a, %edx
leaq 0xc690(%rip), %rsi      # 0xbea1c
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x2, %edx
leaq 0xc64e(%rip), %rsi      # 0xbea19
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x1, %edx
leaq 0xc6e6(%rip), %rsi      # 0xbeaf0
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq %rsp, %rdi
callq 0xb2dc8
leaq 0x28(%rsp), %rdi
callq 0xb315a
leaq 0x90(%rsp), %rdi
callq 0xb2e82
addq $0x10, %r15
cmpq 0x20(%rsp), %r15
jne 0xb1c5c
leaq 0xc8(%rsp), %rbx
leaq 0xc6a7(%rip), %rsi      # 0xbeb22
movl $0x14, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq 0x10551c0(%rip), %r13   # 0x1107680
movq 0x10551c1(%rip), %rbp   # 0x1107688
cmpq %rbp, %r13
je 0xb2549
leaq 0xc3d4(%rip), %rbx      # 0xbe8a7
leaq 0xc8(%rsp), %r14
leaq 0xc655(%rip), %r15      # 0xbeb37
movl $0x5, %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4210
movq (%r13), %rax
movq 0x8(%rax), %rdx
movq (%rax), %rsi
movq %r14, %rdi
callq 0x4210
movl $0x3, %edx
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
callq 0x4210
movq (%r12), %rax
movq -0x18(%rax), %rdi
addq %r12, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r12, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
addq $0x10, %r13
cmpq %rbp, %r13
jne 0xb24e2
leaq 0xc8(%rsp), %rbx
leaq 0xc598(%rip), %rsi      # 0xbeaf0
movl $0x1, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xc596(%rip), %rsi      # 0xbeb3b
movl $0x23, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xc273(%rip), %rsi      # 0xbe865
movl $0x9, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
leaq 0xc8(%rsp), %rbx
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq 0x1055015(%rip), %rbx   # 0x1107680
movq 0x1055016(%rip), %r15   # 0x1107688
cmpq %r15, %rbx
je 0xb2760
leaq 0xc8(%rsp), %r14
leaq 0xc513(%rip), %r12      # 0xbeb9d
leaq 0xc525(%rip), %r13      # 0xbebb6
movl $0xf, %edx
leaq 0xc4c2(%rip), %rsi      # 0xbeb5f
movq %r14, %rdi
callq 0x4210
movq (%rbx), %rax
movq 0x8(%rax), %rdx
movq (%rax), %rsi
movq %r14, %rdi
callq 0x4210
movl $0x2d, %edx
leaq 0xc4ac(%rip), %rsi      # 0xbeb6f
movq %rax, %rdi
movq %rax, %rbp
callq 0x4210
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movl $0x18, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0x4210
movq (%rbx), %rax
movq 0x8(%rax), %rdx
movq (%rax), %rsi
movq %r14, %rdi
callq 0x4210
movl $0x2a, %edx
movq %rax, %rbp
movq %rax, %rdi
movq %r13, %rsi
callq 0x4210
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbp, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
addq $0x10, %rbx
cmpq %r15, %rbx
jne 0xb2691
leaq 0xc8(%rsp), %rbx
leaq 0xc472(%rip), %rsi      # 0xbebe1
movl $0x7, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
leaq 0xc8(%rsp), %rbx
leaq 0xc42d(%rip), %rsi      # 0xbebe9
movl $0x7, %edx
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
addq -0x18(%rax), %rbx
movl $0xa, %esi
movq %rbx, %rdi
callq 0x41b0
movsbl %al, %esi
leaq 0xc8(%rsp), %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
jmp 0xb2bd5
leaq 0xc8(%rsp), %rbx
leaq 0xbf93(%rip), %rsi      # 0xbe7a1
movl $0x10, %edx
movq %rbx, %rdi
callq 0x41f0
movq 0x1054e66(%rip), %rax   # 0x1107688
movq 0x1054e57(%rip), %r12   # 0x1107680
movq %rax, 0x88(%rsp)
cmpq %rax, %r12
je 0xb2bd5
leaq 0xc0a6(%rip), %r15      # 0xbe8e7
leaq 0xc0a7(%rip), %r14      # 0xbe8ef
movl $0x44, %edx
leaq 0xc39d(%rip), %rsi      # 0xbebf1
movq %rbx, %rdi
callq 0x4210
movq (%r12), %rax
movq 0x28(%rax), %rdx
movq 0x20(%rax), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x28, %edx
leaq 0xc3ba(%rip), %rsi      # 0xbec36
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r12), %rax
movq 0x48(%rax), %rdx
movq 0x40(%rax), %rsi
movq %r13, %rdi
callq 0x4210
movl $0x2, %edx
leaq 0xc3b8(%rip), %rsi      # 0xbec5f
movq %rax, %rdi
movq %rax, %r13
callq 0x4210
movq (%r13), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %r13, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
vmovups (%r12), %xmm0
movq 0x8(%r12), %rax
vmovaps %xmm0, 0x60(%rsp)
testq %rax, %rax
je 0xb2905
movq 0x3c6d9(%rip), %rcx     # 0xeefd0
cmpb $0x0, (%rcx)
je 0xb2901
incl 0x8(%rax)
jmp 0xb2905
lock
incl 0x8(%rax)
leaq 0x90(%rsp), %rdi
leaq 0x60(%rsp), %rsi
callq 0xb192e
movq 0x68(%rsp), %rdi
testq %rdi, %rdi
je 0xb2926
callq 0xb2e12
movl $0x4, %edx
leaq 0xbfae(%rip), %rsi      # 0xbe8e0
movq %rbx, %rdi
callq 0x4210
movq 0xa0(%rsp), %rax
xorl %edx, %edx
movq %rdx, 0x28(%rsp)
leaq 0x28(%rsp), %rdi
movq 0x30(%rax), %rcx
leaq 0x28(%rax), %rsi
movq %rcx, 0x30(%rsp)
movq %rdx, 0x38(%rsp)
movq 0x40(%rax), %rcx
movq %rcx, 0x40(%rsp)
vmovups 0x48(%rax), %xmm0
leaq 0x48(%rsp), %rax
movq %rdi, (%rsp)
vmovups %xmm0, (%rax)
movq %rdx, 0x58(%rsp)
movq %rsp, %rdx
callq 0xb2f18
movq 0x38(%rsp), %r13
testq %r13, %r13
je 0xb29cc
movl $0x3, %edx
leaq 0xbf47(%rip), %rsi      # 0xbe8e5
movq %rbx, %rdi
callq 0x4210
movq 0x10(%r13), %rdx
movq 0x8(%r13), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x4210
movq (%r13), %r13
jmp 0xb298d
movl $0x2, %edx
leaq 0xbf11(%rip), %rsi      # 0xbe8e9
movq %rbx, %rdi
movq %r12, 0x20(%rsp)
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq 0xa0(%rsp), %r12
vxorps %xmm0, %xmm0, %xmm0
movq $0x0, 0x10(%rsp)
vmovaps %xmm0, (%rsp)
testq %r12, %r12
je 0xb2b5f
leaq 0x8(%r12), %rsi
movq %rsp, %rdi
callq 0xb2d8a
movq (%r12), %r12
testq %r12, %r12
jne 0xb2a34
movq (%rsp), %r13
movq 0x8(%rsp), %rbp
cmpq %rbp, %r13
je 0xb2b56
movq %rbp, %rax
subq %r13, %rax
sarq $0x5, %rax
lzcntq %rax, %rdx
addl %edx, %edx
xorq $0x7e, %rdx
leaq -0x10b7(%rip), %r12     # 0xb19c1
movq %r13, %rdi
movq %rbp, %rsi
movq %r12, %rcx
callq 0xb41e5
movq %r13, %rdi
movq %rbp, %rsi
movq %r12, %rdx
callq 0xb4327
movq (%rsp), %r13
movq 0x8(%rsp), %rbp
jmp 0xb2b56
movl $0x2, %edx
leaq 0xbe3e(%rip), %rsi      # 0xbe8ec
movq %rbx, %rdi
callq 0x4210
movq 0x8(%r13), %rdx
movq (%r13), %rsi
movq %rbx, %rdi
callq 0x4210
movl $0x1, %edx
movq %rax, %rdi
movq %r15, %rsi
callq 0x4210
leaq 0x90(%rsp), %rdi
movq %r13, %rsi
callq 0xb37be
movq 0x10(%rax), %r12
testq %r12, %r12
je 0xb2b12
movl $0x2, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x4210
movq 0x28(%r12), %rsi
movq %rbx, %rdi
callq 0x4110
movq (%r12), %r12
jmp 0xb2aea
movl $0x2, %edx
leaq 0xbdcb(%rip), %rsi      # 0xbe8e9
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
addq $0x20, %r13
cmpq %rbp, %r13
jne 0xb2aa2
movl $0xd, %edx
leaq 0xc0f7(%rip), %rsi      # 0xbec62
movq %rbx, %rdi
callq 0x4210
movq 0xc8(%rsp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x41b0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x4030
movq %rax, %rdi
callq 0x4120
movq %rsp, %rdi
callq 0xb2dc8
leaq 0x28(%rsp), %rdi
callq 0xb315a
leaq 0x90(%rsp), %rdi
callq 0xb2e82
movq 0x20(%rsp), %r12
addq $0x10, %r12
cmpq 0x88(%rsp), %r12
jne 0xb2848
movq 0x3c3ec(%rip), %rax     # 0xeefc8
leaq 0xd0(%rsp), %rdi
movq (%rax), %rcx
movq 0x18(%rax), %rax
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0xc8(%rsp,%rcx)
callq 0x4170
leaq 0x1c0(%rsp), %rdi
callq 0x4090
addq $0x2c8, %rsp            # imm = 0x2C8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xb2c73
jmp 0xb2c73
movq 0x78(%rsp), %rdi
jmp 0xb2c33
jmp 0xb2c44
jmp 0xb2c44
movq 0x68(%rsp), %rdi
movq %rax, %rbx
testq %rdi, %rdi
je 0xb2c95
callq 0xb2e12
jmp 0xb2c95
jmp 0xb2c44
movq %rax, %rbx
jmp 0xb2c88
jmp 0xb2c57
jmp 0xb2c66
jmp 0xb2c73
jmp 0xb2c66
jmp 0xb2c57
jmp 0xb2c57
jmp 0xb2c57
movq %rax, %rbx
jmp 0xb2c95
jmp 0xb2c73
jmp 0xb2c73
jmp 0xb2c73
jmp 0xb2c73
jmp 0xb2c66
movq %rax, %rbx
jmp 0xb2c7e
jmp 0xb2c73
jmp 0xb2c73
jmp 0xb2c73
jmp 0xb2c73
movq %rsp, %rdi
movq %rax, %rbx
callq 0xb2dc8
leaq 0x28(%rsp), %rdi
callq 0xb315a
leaq 0x90(%rsp), %rdi
callq 0xb2e82
movq 0x3c32c(%rip), %rax     # 0xeefc8
leaq 0xd0(%rsp), %rdi
movq (%rax), %rcx
movq 0x18(%rax), %rax
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0xc8(%rsp,%rcx)
callq 0x4170
leaq 0x1c0(%rsp), %rdi
callq 0x4090
movq %rbx, %rdi
callq 0x42d0
nop