// File: tcannon686[P]obj2webgl/./obj_parser.hpp
// Function: ObjParser<std::basic_ifstream<char, std::char_traits<char>>>::writeWebGlCode(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&) const
void ObjParser<Stream>::writeWebGlCode(
        std::ostream &out,
        const std::string &name) const
{
    assert(done);
    /* Change the separate indices to one set of vertex indices. */

    /* Maps old vIndices, tIndices, nIndices tuple to new index. */
    std::unordered_map<std::string, unsigned int> index_table;

    /* Vertex array buffer */
    std::vector<unsigned int> index_array;

    /* Vertex buffer format: vvvttnnn */
    std::vector<float> data;
    int cur_index = 0;

    for(std::size_t i = 0; i < vIndices.size(); i ++)
    {
        std::string table_index =
            std::to_string(vIndices[i])
            + "/" + (tIndices.size() > 0 ?
                    std::to_string(tIndices[i])
                    : "")
            + "/" + (nIndices.size() > 0 ?
                    std::to_string(nIndices[i])
                    : "");

        auto in_table = index_table.find(table_index);

        /* If the vertex has not been added yet, add it. */
        if(in_table == end(index_table))
        {
            /* Add the data. */
            for(int j = 0; j < 3; j ++)
                data.push_back(vertices[vIndices[i]][j]);
            if(tIndices.size() > 0)
            {
                for(int j = 0; j < 2; j ++)
                    data.push_back(texCos[tIndices[i]][j]);
            }
            if(nIndices.size() > 0)
            {
                for(int j = 0; j < 3; j ++)
                    data.push_back(normals[nIndices[i]][j]);
            }

            index_table[table_index] = cur_index;
            cur_index ++;
        }
        index_array.push_back(index_table[table_index]);
    }

    const std::size_t vertex_size = 3 * sizeof(float);
    const std::size_t normal_size = (
            nIndices.size() > 0? 3 * sizeof(float) : 0);
    const std::size_t texco_size = (
            tIndices.size() > 0? 2 * sizeof(float) : 0);
    const std::size_t stride = vertex_size + normal_size + texco_size;


    out << "const " << name << "={};";

    out << name << ".data=new Float32Array([";
    for(auto it = begin(data); it != end(data); it ++)
    {
        out << *it;
        if(it + 1 != end(data))
            out << ",";
    }
    out << "]);";

    out << name << ".indexData=new Uint16Array([";
    for(auto it = begin(index_array); it != end(index_array); it ++)
    {
        out << *it;
        if(it + 1 != end(index_array))
            out << ",";
    }
    out << "]);";

    out << name << ".init=function(){";
    out << name << ".vbo=gl.createBuffer();";
    out << name << ".ibo=gl.createBuffer();";

    out << "gl.bindBuffer(gl.ARRAY_BUFFER," << name << ".vbo);";
    out << "gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER," << name << ".ibo);";

    out << "gl.bufferData(gl.ARRAY_BUFFER,"
        << name << ".data,gl.STATIC_DRAW);";

    out << "gl.bufferData(gl.ELEMENT_ARRAY_BUFFER,"
        << name << ".indexData,gl.STATIC_DRAW);"
        << "};";

    out << name << ".render=function(a_Position,a_Normal,a_TexCo){";
    out << "gl.bindBuffer(gl.ARRAY_BUFFER," << name << ".vbo);";
    out << "gl.bindBuffer(gl.ELEMENT_ARRAY_BUFFER," << name << ".ibo);";
    out << "gl.vertexAttribPointer(a_Position,3,gl.FLOAT,false,"
        << stride << ",null);";
    
    out << "gl.enableVertexAttribArray(a_Position);";
    
    if(tIndices.size() > 0)
    {
        out << "if(a_TexCo!==undefined) {";
        out << "gl.vertexAttribPointer(a_TexCo,2,gl.FLOAT,false,"
            << stride << "," << vertex_size << ");";

        out << "gl.enableVertexAttribArray(a_TexCo);";
        out << "}";
    }

    if(nIndices.size() > 0)
    {
        out << "if(a_Normal!==undefined){";
        out << "gl.vertexAttribPointer(a_Normal,3,gl.FLOAT,false,"
            << stride << "," << vertex_size + texco_size << ");";

        out << "gl.enableVertexAttribArray(a_Normal);";
        out << "}";
    }

    out << "gl.drawElements(gl.TRIANGLES,"
        << index_array.size()
        << ",gl.UNSIGNED_SHORT,0);";
    out << "};";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x3e0, %rsp            # imm = 0x3E0
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x8(%rbp), %rax
movq %rax, -0x228(%rbp)
testb $0x1, 0x99(%rax)
je 0x4dad
jmp 0x4dcc
leaq 0xa972(%rip), %rdi      # 0xf726
leaq 0xa7cc(%rip), %rsi      # 0xf587
movl $0x203, %edx            # imm = 0x203
leaq 0xa964(%rip), %rcx      # 0xf72b
callq 0x31b0
leaq -0x50(%rbp), %rdi
callq 0xaac0
leaq -0x68(%rbp), %rdi
callq 0xaae0
leaq -0x80(%rbp), %rdi
callq 0xab00
movl $0x0, -0x84(%rbp)
movq $0x0, -0x90(%rbp)
movq -0x228(%rbp), %rdi
movq -0x90(%rbp), %rax
movq %rax, -0x230(%rbp)
addq $0x50, %rdi
callq 0xa0b0
movq %rax, %rcx
movq -0x230(%rbp), %rax
cmpq %rcx, %rax
jae 0x5458
movq -0x228(%rbp), %rdi
addq $0x50, %rdi
movq -0x90(%rbp), %rsi
callq 0xad60
movl (%rax), %esi
leaq -0x130(%rbp), %rdi
callq 0xac40
jmp 0x4e54
leaq 0xa614(%rip), %rdx      # 0xf46f
leaq -0x110(%rbp), %rdi
leaq -0x130(%rbp), %rsi
callq 0xabf0
jmp 0x4e70
movq -0x228(%rbp), %rdi
addq $0x80, %rdi
callq 0xa0b0
movb $0x0, -0x162(%rbp)
cmpq $0x0, %rax
jbe 0x4eb9
movq -0x228(%rbp), %rdi
subq $-0x80, %rdi
movq -0x90(%rbp), %rsi
callq 0xad60
movl (%rax), %esi
leaq -0x160(%rbp), %rdi
callq 0xac40
jmp 0x4eb7
jmp 0x4ef1
leaq -0x161(%rbp), %rdi
movq %rdi, -0x238(%rbp)
callq 0x34c0
movq -0x238(%rbp), %rdx
movb $0x1, -0x162(%rbp)
leaq 0xa4cf(%rip), %rsi      # 0xf3b0
leaq -0x160(%rbp), %rdi
callq 0x4540
jmp 0x4eef
jmp 0x4ef1
leaq -0xf0(%rbp), %rdi
leaq -0x110(%rbp), %rsi
leaq -0x160(%rbp), %rdx
callq 0xab20
jmp 0x4f0d
leaq 0xa55b(%rip), %rdx      # 0xf46f
leaq -0xd0(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
callq 0xabf0
jmp 0x4f29
movq -0x228(%rbp), %rdi
addq $0x68, %rdi
callq 0xa0b0
movb $0x0, -0x18a(%rbp)
cmpq $0x0, %rax
jbe 0x4f6f
movq -0x228(%rbp), %rdi
addq $0x68, %rdi
movq -0x90(%rbp), %rsi
callq 0xad60
movl (%rax), %esi
leaq -0x188(%rbp), %rdi
callq 0xac40
jmp 0x4f6d
jmp 0x4fa7
leaq -0x189(%rbp), %rdi
movq %rdi, -0x240(%rbp)
callq 0x34c0
movq -0x240(%rbp), %rdx
movb $0x1, -0x18a(%rbp)
leaq 0xa419(%rip), %rsi      # 0xf3b0
leaq -0x188(%rbp), %rdi
callq 0x4540
jmp 0x4fa5
jmp 0x4fa7
leaq -0xb0(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
leaq -0x188(%rbp), %rdx
callq 0xab20
jmp 0x4fc3
leaq -0x188(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x18a(%rbp)
jne 0x4fda
jmp 0x4fe6
leaq -0x189(%rbp), %rdi
callq 0x3300
leaq -0xd0(%rbp), %rdi
callq 0x31a0
leaq -0xf0(%rbp), %rdi
callq 0x31a0
leaq -0x160(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x162(%rbp)
jne 0x5015
jmp 0x5021
leaq -0x161(%rbp), %rdi
callq 0x3300
leaq -0x110(%rbp), %rdi
callq 0x31a0
leaq -0x130(%rbp), %rdi
callq 0x31a0
leaq -0x50(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xad80
movq %rax, -0x248(%rbp)
jmp 0x5052
movq -0x248(%rbp), %rax
movq %rax, -0x198(%rbp)
leaq -0x50(%rbp), %rdi
callq 0xade0
movq %rax, -0x250(%rbp)
jmp 0x5072
movq -0x250(%rbp), %rax
movq %rax, -0x1a0(%rbp)
leaq -0x198(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
callq 0xadb0
testb $0x1, %al
jne 0x509c
jmp 0x540a
movl $0x0, -0x1a4(%rbp)
cmpl $0x3, -0x1a4(%rbp)
jge 0x5286
movq -0x228(%rbp), %rdi
movq %rdi, %rax
addq $0x8, %rax
movq %rax, -0x260(%rbp)
addq $0x50, %rdi
movq -0x90(%rbp), %rsi
callq 0xad60
movq -0x260(%rbp), %rdi
movslq (%rax), %rsi
callq 0xae80
movq %rax, %rdi
movl -0x1a4(%rbp), %esi
callq 0xaea0
movq %rax, -0x258(%rbp)
jmp 0x50fe
movq -0x258(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0xae10
jmp 0x5110
jmp 0x5112
movl -0x1a4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a4(%rbp)
jmp 0x50a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x5c91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x5252
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x5246
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x522d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x5221
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x5215
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x5209
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
jmp 0x51f0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0x188(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x18a(%rbp)
jne 0x51fb
jmp 0x5207
leaq -0x189(%rbp), %rdi
callq 0x3300
jmp 0x5209
leaq -0xd0(%rbp), %rdi
callq 0x31a0
leaq -0xf0(%rbp), %rdi
callq 0x31a0
leaq -0x160(%rbp), %rdi
callq 0x31a0
testb $0x1, -0x162(%rbp)
jne 0x5238
jmp 0x5244
leaq -0x161(%rbp), %rdi
callq 0x3300
jmp 0x5246
leaq -0x110(%rbp), %rdi
callq 0x31a0
leaq -0x130(%rbp), %rdi
callq 0x31a0
jmp 0x5c91
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
leaq -0xb0(%rbp), %rdi
callq 0x31a0
jmp 0x5c91
movq -0x228(%rbp), %rdi
addq $0x80, %rdi
callq 0xa0b0
cmpq $0x0, %rax
jbe 0x5328
movl $0x0, -0x1a8(%rbp)
cmpl $0x2, -0x1a8(%rbp)
jge 0x5326
movq -0x228(%rbp), %rdi
movq %rdi, %rax
addq $0x38, %rax
movq %rax, -0x270(%rbp)
subq $-0x80, %rdi
movq -0x90(%rbp), %rsi
callq 0xad60
movq -0x270(%rbp), %rdi
movslq (%rax), %rsi
callq 0xaec0
movq %rax, %rdi
movl -0x1a8(%rbp), %esi
callq 0xaee0
movq %rax, -0x268(%rbp)
jmp 0x5301
movq -0x268(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0xae10
jmp 0x5313
jmp 0x5315
movl -0x1a8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1a8(%rbp)
jmp 0x52ad
jmp 0x5328
movq -0x228(%rbp), %rdi
addq $0x68, %rdi
callq 0xa0b0
cmpq $0x0, %rax
jbe 0x53c7
movl $0x0, -0x1ac(%rbp)
cmpl $0x3, -0x1ac(%rbp)
jge 0x53c5
movq -0x228(%rbp), %rdi
movq %rdi, %rax
addq $0x20, %rax
movq %rax, -0x280(%rbp)
addq $0x68, %rdi
movq -0x90(%rbp), %rsi
callq 0xad60
movq -0x280(%rbp), %rdi
movslq (%rax), %rsi
callq 0xaf00
movq %rax, %rdi
movl -0x1ac(%rbp), %esi
callq 0xaf20
movq %rax, -0x278(%rbp)
jmp 0x53a0
movq -0x278(%rbp), %rsi
leaq -0x80(%rbp), %rdi
callq 0xae10
jmp 0x53b2
jmp 0x53b4
movl -0x1ac(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1ac(%rbp)
jmp 0x534c
jmp 0x53c7
movl -0x84(%rbp), %eax
movl %eax, -0x28c(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xaf40
movq %rax, -0x288(%rbp)
jmp 0x53ec
movq -0x288(%rbp), %rax
movl -0x28c(%rbp), %ecx
movl %ecx, (%rax)
movl -0x84(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x84(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0xb0(%rbp), %rsi
callq 0xaf40
movq %rax, -0x298(%rbp)
jmp 0x5423
movq -0x298(%rbp), %rsi
leaq -0x68(%rbp), %rdi
callq 0xaf70
jmp 0x5435
leaq -0xb0(%rbp), %rdi
callq 0x31a0
movq -0x90(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x90(%rbp)
jmp 0x4dfc
movq -0x228(%rbp), %rdi
movq $0xc, -0x1b8(%rbp)
addq $0x68, %rdi
callq 0xa0b0
movq -0x228(%rbp), %rdi
movq %rax, %rcx
testq %rcx, %rcx
movl $0xc, %eax
cmoveq %rcx, %rax
movq %rax, -0x1c0(%rbp)
subq $-0x80, %rdi
callq 0xa0b0
testq %rax, %rax
setne %al
movzbl %al, %eax
shll $0x3, %eax
movq %rax, -0x1c8(%rbp)
movq -0x1c0(%rbp), %rax
movq -0x1c8(%rbp), %rcx
leaq 0xc(%rax,%rcx), %rax
movq %rax, -0x1d0(%rbp)
movq -0x10(%rbp), %rdi
leaq 0xa2e4(%rip), %rsi      # 0xf7b5
callq 0x3290
movq %rax, -0x2a0(%rbp)
jmp 0x54df
movq -0x2a0(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x2a8(%rbp)
jmp 0x54f8
movq -0x2a8(%rbp), %rdi
leaq 0xa2b6(%rip), %rsi      # 0xf7bc
callq 0x3290
jmp 0x550d
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x2b0(%rbp)
jmp 0x5523
movq -0x2b0(%rbp), %rdi
leaq 0xa290(%rip), %rsi      # 0xf7c1
callq 0x3290
jmp 0x5538
leaq -0x80(%rbp), %rdi
callq 0xafe0
movq %rax, -0x2b8(%rbp)
jmp 0x554a
movq -0x2b8(%rbp), %rax
movq %rax, -0x1d8(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xb050
movq %rax, -0x2c0(%rbp)
jmp 0x556a
movq -0x2c0(%rbp), %rax
movq %rax, -0x1e0(%rbp)
leaq -0x1d8(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0xb010
testb $0x1, %al
jne 0x5594
jmp 0x563e
movq -0x10(%rbp), %rax
movq %rax, -0x2c8(%rbp)
leaq -0x1d8(%rbp), %rdi
callq 0xb080
movq -0x2c8(%rbp), %rdi
movss (%rax), %xmm0
callq 0x3200
jmp 0x55bd
leaq -0x1d8(%rbp), %rdi
movl $0x1, %esi
callq 0xb0a0
movq %rax, -0x1e8(%rbp)
leaq -0x80(%rbp), %rdi
callq 0xb050
movq %rax, -0x2d0(%rbp)
jmp 0x55e7
movq -0x2d0(%rbp), %rax
movq %rax, -0x1f0(%rbp)
leaq -0x1e8(%rbp), %rdi
leaq -0x1f0(%rbp), %rsi
callq 0xb010
testb $0x1, %al
jne 0x560e
jmp 0x5622
movq -0x10(%rbp), %rdi
leaq 0xa295(%rip), %rsi      # 0xf8ae
callq 0x3290
jmp 0x5620
jmp 0x5622
jmp 0x5624
leaq -0x1d8(%rbp), %rdi
xorl %esi, %esi
callq 0xb0e0
movq %rax, -0x1f8(%rbp)
jmp 0x5558
movq -0x10(%rbp), %rdi
leaq 0xa191(%rip), %rsi      # 0xf7da
callq 0x3290
jmp 0x5650
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x2d8(%rbp)
jmp 0x5666
movq -0x2d8(%rbp), %rdi
leaq 0xa16a(%rip), %rsi      # 0xf7de
callq 0x3290
jmp 0x567b
leaq -0x68(%rbp), %rdi
callq 0xb120
movq %rax, -0x2e0(%rbp)
jmp 0x568d
movq -0x2e0(%rbp), %rax
movq %rax, -0x200(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb190
movq %rax, -0x2e8(%rbp)
jmp 0x56ad
movq -0x2e8(%rbp), %rax
movq %rax, -0x208(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x208(%rbp), %rsi
callq 0xb150
testb $0x1, %al
jne 0x56d7
jmp 0x577f
movq -0x10(%rbp), %rax
movq %rax, -0x2f0(%rbp)
leaq -0x200(%rbp), %rdi
callq 0xb1c0
movq -0x2f0(%rbp), %rdi
movl (%rax), %esi
callq 0x33b0
jmp 0x56fe
leaq -0x200(%rbp), %rdi
movl $0x1, %esi
callq 0xb1e0
movq %rax, -0x210(%rbp)
leaq -0x68(%rbp), %rdi
callq 0xb190
movq %rax, -0x2f8(%rbp)
jmp 0x5728
movq -0x2f8(%rbp), %rax
movq %rax, -0x218(%rbp)
leaq -0x210(%rbp), %rdi
leaq -0x218(%rbp), %rsi
callq 0xb150
testb $0x1, %al
jne 0x574f
jmp 0x5763
movq -0x10(%rbp), %rdi
leaq 0xa154(%rip), %rsi      # 0xf8ae
callq 0x3290
jmp 0x5761
jmp 0x5763
jmp 0x5765
leaq -0x200(%rbp), %rdi
xorl %esi, %esi
callq 0xb220
movq %rax, -0x220(%rbp)
jmp 0x569b
movq -0x10(%rbp), %rdi
leaq 0xa050(%rip), %rsi      # 0xf7da
callq 0x3290
jmp 0x5791
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x300(%rbp)
jmp 0x57a7
movq -0x300(%rbp), %rdi
leaq 0xa046(%rip), %rsi      # 0xf7fb
callq 0x3290
jmp 0x57bc
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x308(%rbp)
jmp 0x57d2
movq -0x308(%rbp), %rdi
leaq 0xa02d(%rip), %rsi      # 0xf80d
callq 0x3290
jmp 0x57e7
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x310(%rbp)
jmp 0x57fd
movq -0x310(%rbp), %rdi
leaq 0xa01a(%rip), %rsi      # 0xf825
callq 0x3290
jmp 0x5812
movq -0x10(%rbp), %rdi
leaq 0xa020(%rip), %rsi      # 0xf83d
callq 0x3290
movq %rax, -0x318(%rbp)
jmp 0x582b
movq -0x318(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x320(%rbp)
jmp 0x5844
movq -0x320(%rbp), %rdi
leaq 0xa00a(%rip), %rsi      # 0xf85c
callq 0x3290
jmp 0x5859
movq -0x10(%rbp), %rdi
leaq 0x9fff(%rip), %rsi      # 0xf863
callq 0x3290
movq %rax, -0x328(%rbp)
jmp 0x5872
movq -0x328(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x330(%rbp)
jmp 0x588b
movq -0x330(%rbp), %rdi
leaq 0x9ff1(%rip), %rsi      # 0xf88a
callq 0x3290
jmp 0x58a0
movq -0x10(%rbp), %rdi
leaq 0x9fe6(%rip), %rsi      # 0xf891
callq 0x3290
movq %rax, -0x338(%rbp)
jmp 0x58b9
movq -0x338(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x340(%rbp)
jmp 0x58d2
movq -0x340(%rbp), %rdi
leaq 0x9fd0(%rip), %rsi      # 0xf8b0
callq 0x3290
jmp 0x58e7
movq -0x10(%rbp), %rdi
leaq 0x9fd5(%rip), %rsi      # 0xf8c7
callq 0x3290
movq %rax, -0x348(%rbp)
jmp 0x5900
movq -0x348(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x350(%rbp)
jmp 0x5919
movq -0x350(%rbp), %rdi
leaq 0x9fc7(%rip), %rsi      # 0xf8ee
callq 0x3290
movq %rax, -0x358(%rbp)
jmp 0x5935
movq -0x358(%rbp), %rdi
leaq 0x9e7b(%rip), %rsi      # 0xf7be
callq 0x3290
jmp 0x594a
movq -0x10(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x360(%rbp)
jmp 0x5960
movq -0x360(%rbp), %rdi
leaq 0x9f9c(%rip), %rsi      # 0xf90a
callq 0x3290
jmp 0x5975
movq -0x10(%rbp), %rdi
leaq 0x9ebd(%rip), %rsi      # 0xf83d
callq 0x3290
movq %rax, -0x368(%rbp)
jmp 0x598e
movq -0x368(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x370(%rbp)
jmp 0x59a7
movq -0x370(%rbp), %rdi
leaq 0x9ea7(%rip), %rsi      # 0xf85c
callq 0x3290
jmp 0x59bc
movq -0x10(%rbp), %rdi
leaq 0x9e9c(%rip), %rsi      # 0xf863
callq 0x3290
movq %rax, -0x378(%rbp)
jmp 0x59d5
movq -0x378(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x3260
movq %rax, -0x380(%rbp)
jmp 0x59ee
movq -0x380(%rbp), %rdi
leaq 0x9e8e(%rip), %rsi      # 0xf88a
callq 0x3290
jmp 0x5a03
movq -0x10(%rbp), %rdi
leaq 0x9f2b(%rip), %rsi      # 0xf939
callq 0x3290
movq %rax, -0x388(%rbp)
jmp 0x5a1c
movq -0x388(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
callq 0x3090
movq %rax, -0x390(%rbp)
jmp 0x5a38
movq -0x390(%rbp), %rdi
leaq 0x9f27(%rip), %rsi      # 0xf96d
callq 0x3290
jmp 0x5a4d
movq -0x10(%rbp), %rdi
leaq 0x9f1d(%rip), %rsi      # 0xf975
callq 0x3290
jmp 0x5a5f
movq -0x228(%rbp), %rdi
addq $0x80, %rdi
callq 0xa0b0
cmpq $0x0, %rax
jbe 0x5b34
movq -0x10(%rbp), %rdi
leaq 0x9f16(%rip), %rsi      # 0xf99d
callq 0x3290
jmp 0x5a8e
movq -0x10(%rbp), %rdi
leaq 0x9f1e(%rip), %rsi      # 0xf9b7
callq 0x3290
movq %rax, -0x398(%rbp)
jmp 0x5aa7
movq -0x398(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
callq 0x3090
movq %rax, -0x3a0(%rbp)
jmp 0x5ac3
movq -0x3a0(%rbp), %rdi
leaq 0x9ddd(%rip), %rsi      # 0xf8ae
callq 0x3290
movq %rax, -0x3a8(%rbp)
jmp 0x5adf
movq -0x3a8(%rbp), %rdi
movl $0xc, %esi
callq 0x3090
movq %rax, -0x3b0(%rbp)
jmp 0x5af9
movq -0x3b0(%rbp), %rdi
leaq 0x9d33(%rip), %rsi      # 0xf83a
callq 0x3290
jmp 0x5b0e
movq -0x10(%rbp), %rdi
leaq 0x9ecf(%rip), %rsi      # 0xf9e8
callq 0x3290
jmp 0x5b20
movq -0x10(%rbp), %rdi
leaq 0x9ee2(%rip), %rsi      # 0xfa0d
callq 0x3290
jmp 0x5b32
jmp 0x5b34
movq -0x228(%rbp), %rdi
addq $0x68, %rdi
callq 0xa0b0
cmpq $0x0, %rax
jbe 0x5c0c
movq -0x10(%rbp), %rdi
leaq 0x9eb6(%rip), %rsi      # 0xfa0f
callq 0x3290
jmp 0x5b60
movq -0x10(%rbp), %rdi
leaq 0x9ebe(%rip), %rsi      # 0xfa29
callq 0x3290
movq %rax, -0x3b8(%rbp)
jmp 0x5b79
movq -0x3b8(%rbp), %rdi
movq -0x1d0(%rbp), %rsi
callq 0x3090
movq %rax, -0x3c0(%rbp)
jmp 0x5b95
movq -0x3c0(%rbp), %rdi
leaq 0x9d0b(%rip), %rsi      # 0xf8ae
callq 0x3290
movq %rax, -0x3c8(%rbp)
jmp 0x5bb1
movq -0x3c8(%rbp), %rdi
movq -0x1c8(%rbp), %rsi
addq $0xc, %rsi
callq 0x3090
movq %rax, -0x3d0(%rbp)
jmp 0x5bd1
movq -0x3d0(%rbp), %rdi
leaq 0x9c5b(%rip), %rsi      # 0xf83a
callq 0x3290
jmp 0x5be6
movq -0x10(%rbp), %rdi
leaq 0x9e6a(%rip), %rsi      # 0xfa5b
callq 0x3290
jmp 0x5bf8
movq -0x10(%rbp), %rdi
leaq 0x9e0a(%rip), %rsi      # 0xfa0d
callq 0x3290
jmp 0x5c0a
jmp 0x5c0c
movq -0x10(%rbp), %rdi
leaq 0x9e6a(%rip), %rsi      # 0xfa81
callq 0x3290
movq %rax, -0x3d8(%rbp)
jmp 0x5c25
leaq -0x68(%rbp), %rdi
callq 0xb260
movq -0x3d8(%rbp), %rdi
movq %rax, %rsi
callq 0x3090
movq %rax, -0x3e0(%rbp)
jmp 0x5c46
movq -0x3e0(%rbp), %rdi
leaq 0x9e4b(%rip), %rsi      # 0xfa9f
callq 0x3290
jmp 0x5c5b
movq -0x10(%rbp), %rdi
leaq 0x9b58(%rip), %rsi      # 0xf7be
callq 0x3290
jmp 0x5c6d
leaq -0x80(%rbp), %rdi
callq 0xb280
leaq -0x68(%rbp), %rdi
callq 0xb2e0
leaq -0x50(%rbp), %rdi
callq 0xb340
addq $0x3e0, %rsp            # imm = 0x3E0
popq %rbp
retq
leaq -0x80(%rbp), %rdi
callq 0xb280
leaq -0x68(%rbp), %rdi
callq 0xb2e0
leaq -0x50(%rbp), %rdi
callq 0xb340
movq -0x138(%rbp), %rdi
callq 0x34b0
nopl (%rax,%rax)