// File: /workspace/github_cpp_makefile_star2_O2/eliebe-5[P]Catmull-clark-subdivision/halfedge.cc
// Function: Mesh::generateHalfEdge(char*)
void Mesh::generateHalfEdge(char* path)
{
    std::ifstream infile(path);
    
    if(!infile.is_open())
        printf("ERROR: File not open\n");
    
    std::string line;


    std::vector<v3> tempV;
    std::vector<v2> tempUV;
    std::vector<v3> tempN;
    std::vector<std::string> tempF;

    int step = 0;
    
    while(std::getline(infile, line))
    {
        if(line.size() < 1);
        else
        {

            std::stringstream sst(line.c_str());

            std::string split;
        
            std::vector<std::string> splits;
                    
            if(line.at(0) == 'v' && line.at(1) == ' ')
            {
            
                while(std::getline(sst, split, ' '))
                {
                    splits.push_back(split);
                }

                v3 p(std::stof(splits[1]), std::stof(splits[2]), std::stof(splits[3]));

                tempV.push_back(p);
            }
            if(line.at(0) == 'v' && line.at(1) == 't')
            {
            
                while(std::getline(sst, split, ' '))
                {
                    splits.push_back(split);
                }

                v2 p(std::stof(splits[1]), std::stof(splits[2]));

                tempUV.push_back(p);
            }
            if(line.at(0) == 'v' && line.at(1) == 'n')
            {
            
                while(std::getline(sst, split, ' '))
                {
                    splits.push_back(split);
                }

                v3 p(std::stof(splits[1]), std::stof(splits[2]), std::stof(splits[3]));

                tempN.push_back(p);
            }
            else if(line.at(0) == 'f')
            {

                step = 0;
                while(std::getline(sst, split, ' '))
                {
                    if(split.at(0) != 'f')
                    {
                        tempF.push_back(split);

                        step++;
                    }
                }    
            }
        }
    }
    


    int vNm = tempV.size();
    vertPool.pre_allocate_elements(vNm);

    for(int i = 0; i < vNm; i++)
    {
        *(vertPool.new_element()) = tempV[i];
    }
  
    int edgeCount = tempF.size();
    int faceCount = edgeCount/step;
  
    //Interpret vertices, uvs, normals and faces as Half-edges.

    facePool.pre_allocate_elements(faceCount);

    for(int i = 0; i < faceCount; i++)
        facePool.new_element();
    
    edgePool.pre_allocate_elements(edgeCount);
    
    for(int i = 0; i < edgeCount; i++)
        edgePool.new_element();
    
    for(int i = 0; i < faceCount*step; i+=step)
    {
        for(int j = 0; j < step - 1; j++)
        {
            edgePool[i + j]->next = edgePool[i + j + 1];
        }
        edgePool[i + step - 1]->next = edgePool[i];
    }
           
    for(int i = 0; i < faceCount; i++)
    {
        int attr = 0;

        int *vIndex = new int[step];
        int *uvIndex = new int[step];
        int *nIndex = new int[step];

        for(int j = 0; j < step; j++)
        {
            attr = 0;
            std::stringstream f(tempF[i*step+j]);
            std::string split;

	  
            std::vector<std::string> splits;

            while(std::getline(f, split, '/'))
            {
                splits.push_back(split);
            }

            switch(splits.size())
            {
            case(3):
                nIndex[j] = std::stoi(splits[2]) - 1;
                attr++;
            case(2):
                uvIndex[j] = std::stoi(splits[1]) - 1;
                attr++;
            case(1):
                vIndex[j] = std::stoi(splits[0]) - 1;
                break;
            default:
                break;
            }
            
        }

        facePool[i]->edge = edgePool[step*i];
        
        if(attr == 2)
        {
            facePool[i]->edge->uv = tempUV[uvIndex[0]];
            facePool[i]->edge->norm = tempN[nIndex[0]];
        }
        
        HEEdge* temp = facePool[i]->edge;
        temp->vert = vertPool[vIndex[0]];

        for(int j = 1; j < step; j++)
        {
            temp = temp->next;
            temp->vert = vertPool[vIndex[j]];
            if(attr == 2)
            {
                temp->uv = tempUV[uvIndex[j]];
                temp->norm = tempN[nIndex[j]];
            }
        }

        delete[] vIndex;
        delete[] uvIndex;
        delete[] nIndex;

    }
    
    for(int i = 0; i < faceCount*step; i++)
    {

        edgePool[i]->vert->edge = edgePool[i];

        for(int j = 0; j < faceCount*step; j++)
        {
            if(edgePool[i]->vert == edgePool[j]->next->vert && edgePool[j]->vert == edgePool[i]->next->vert)
                edgePool[i]->pair = edgePool[j];
        }
    }

    for(int i = 0; i < faceCount; i++)
    {
        HEEdge *temp = facePool[i]->edge->next;

        while(true)
        {
            temp->face = facePool[i];

            if(temp == facePool[i]->edge)
                break;
            temp = temp->next;
        }
    }
    
    fCount = faceCount;
    eStep = step;
    vCount = vNm;
  
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x4f8, %rsp            # imm = 0x4F8
movq %rdi, 0x60(%rsp)
leaq 0x2f0(%rsp), %rdi
pushq $0x8
popq %rdx
callq 0x2270
leaq 0x368(%rsp), %rdi
callq 0x2090
testb %al, %al
jne 0x254d
leaq 0x2b96(%rip), %rdi      # 0x50de
callq 0x2200
leaq 0x158(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x110(%rsp), %rbx
andq $0x0, 0x10(%rbx)
xorps %xmm0, %xmm0
movaps %xmm0, (%rbx)
leaq 0xf0(%rsp), %rax
movaps %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0xd0(%rsp), %rax
movaps %xmm0, (%rax)
andq $0x0, 0x10(%rax)
leaq 0xb0(%rsp), %rax
andq $0x0, 0x10(%rax)
movaps %xmm0, (%rax)
movq $0x0, 0x10(%rsp)
leaq 0x2f0(%rsp), %r15
leaq 0x148(%rsp), %r12
leaq 0x88(%rsp), %r13
leaq 0x168(%rsp), %r14
pushq $0x20
popq %rbp
movq %r15, %rdi
movq %r12, %rsi
callq 0x2080
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x28dd
cmpq $0x0, 0x150(%rsp)
je 0x25d0
movq 0x148(%rsp), %rsi
movq %r13, %rdi
leaq 0x20(%rsp), %rdx
callq 0x20d0
movq %r14, %rdi
movq %r13, %rsi
pushq $0x18
popq %rdx
callq 0x2220
movq %r13, %rdi
callq 0x20f0
leaq 0x98(%rsp), %rax
movq %rax, 0x88(%rsp)
andq $0x0, 0x90(%rsp)
movb $0x0, 0x98(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
movq %r12, %rdi
xorl %esi, %esi
callq 0x2290
cmpb $0x76, (%rax)
jne 0x270a
movq %r12, %rdi
pushq $0x1
popq %rsi
callq 0x2290
cmpb $0x20, (%rax)
jne 0x270a
movq %r14, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x2280
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x26a3
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x392c
jmp 0x2679
movq 0x20(%rsp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0x3958
movss %xmm0, 0xc(%rsp)
movq 0x20(%rsp), %rdi
addq $0x40, %rdi
xorl %esi, %esi
callq 0x3958
movss %xmm0, 0x18(%rsp)
movq 0x20(%rsp), %rdi
addq $0x60, %rdi
xorl %esi, %esi
callq 0x3958
movss 0xc(%rsp), %xmm1
movss %xmm1, 0x4c(%rsp)
movss 0x18(%rsp), %xmm1
movss %xmm1, 0x50(%rsp)
movss %xmm0, 0x54(%rsp)
movq %rbx, %rdi
leaq 0x4c(%rsp), %rsi
callq 0x3972
movq %r12, %rdi
xorl %esi, %esi
callq 0x2290
cmpb $0x76, (%rax)
jne 0x27a1
movq %r12, %rdi
pushq $0x1
popq %rsi
callq 0x2290
cmpb $0x74, (%rax)
jne 0x27a1
movq %r14, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x2280
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2757
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x392c
jmp 0x272d
movq 0x20(%rsp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0x3958
movss %xmm0, 0xc(%rsp)
movq 0x20(%rsp), %rdi
addq $0x40, %rdi
xorl %esi, %esi
callq 0x3958
movss 0xc(%rsp), %xmm1
movss %xmm1, 0x4c(%rsp)
movss %xmm0, 0x50(%rsp)
leaq 0xf0(%rsp), %rdi
leaq 0x4c(%rsp), %rsi
callq 0x3996
movq %r12, %rdi
xorl %esi, %esi
callq 0x2290
cmpb $0x76, (%rax)
jne 0x27ea
movq %r12, %rdi
pushq $0x1
popq %rsi
callq 0x2290
cmpb $0x6e, (%rax)
jne 0x27ea
movq %r14, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x2280
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2852
leaq 0x20(%rsp), %rdi
movq %r13, %rsi
callq 0x392c
jmp 0x27c0
movq %r12, %rdi
xorl %esi, %esi
callq 0x2290
cmpb $0x66, (%rax)
jne 0x28be
movq $0x0, 0x10(%rsp)
movq %r14, %rdi
movq %r13, %rsi
movl %ebp, %edx
callq 0x2280
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x28be
movq %r13, %rdi
xorl %esi, %esi
callq 0x2290
cmpb $0x66, (%rax)
je 0x2806
leaq 0xb0(%rsp), %rdi
movq %r13, %rsi
callq 0x392c
movq 0x10(%rsp), %rax
incl %eax
movq %rax, 0x10(%rsp)
jmp 0x2806
movq 0x20(%rsp), %rdi
addq $0x20, %rdi
xorl %esi, %esi
callq 0x3958
movss %xmm0, 0xc(%rsp)
movq 0x20(%rsp), %rdi
addq $0x40, %rdi
xorl %esi, %esi
callq 0x3958
movss %xmm0, 0x18(%rsp)
movq 0x20(%rsp), %rdi
addq $0x60, %rdi
xorl %esi, %esi
callq 0x3958
movss 0xc(%rsp), %xmm1
movss %xmm1, 0x4c(%rsp)
movss 0x18(%rsp), %xmm1
movss %xmm1, 0x50(%rsp)
movss %xmm0, 0x54(%rsp)
leaq 0xd0(%rsp), %rdi
leaq 0x4c(%rsp), %rsi
callq 0x3972
leaq 0x20(%rsp), %rdi
callq 0x39b4
movq %r13, %rdi
callq 0x20f0
movq %r14, %rdi
callq 0x2150
jmp 0x25d0
movq 0x118(%rsp), %rax
subq 0x110(%rsp), %rax
pushq $0xc
popq %rcx
cqto
idivq %rcx
movq %rax, %r14
movq 0x60(%rsp), %r12
leaq 0x20(%r12), %rdi
movq %rdi, 0x80(%rsp)
movl %r14d, %esi
callq 0x39d6
xorl %ebx, %ebx
testl %r14d, %r14d
movl $0x0, %eax
movq %r14, 0x128(%rsp)
cmovgl %r14d, %eax
leaq 0x178(%rsp), %r14
imulq $0xc, %rax, %r15
cmpq %rbx, %r15
je 0x2989
movq 0x110(%rsp), %rax
movq (%rax,%rbx), %rcx
movq %rcx, 0x168(%rsp)
movl 0x8(%rax,%rbx), %eax
movl %eax, 0x170(%rsp)
xorps %xmm0, %xmm0
movups %xmm0, (%r14)
movq 0x80(%rsp), %rdi
callq 0x39fe
movups 0x168(%rsp), %xmm0
movups 0x178(%rsp), %xmm1
movups %xmm1, 0x10(%rax)
movups %xmm0, (%rax)
addq $0xc, %rbx
jmp 0x2934
movq 0xb8(%rsp), %rbx
subq 0xb0(%rsp), %rbx
shrq $0x5, %rbx
movl %ebx, %eax
cltd
idivl 0x10(%rsp)
leaq 0x40(%r12), %rdi
movq %rdi, 0x38(%rsp)
movl %eax, 0x44(%rsp)
movl %eax, %esi
callq 0x3a2a
xorl %ebp, %ebp
movl 0x44(%rsp), %eax
testl %eax, %eax
cmovgl %eax, %ebp
movl %ebp, 0x6c(%rsp)
subl $0x1, %ebp
jb 0x29d9
movq 0x38(%rsp), %rdi
callq 0x3a52
jmp 0x29c8
movq %r12, %rdi
movl %ebx, %esi
callq 0x3a7e
xorl %ebp, %ebp
testl %ebx, %ebx
cmovgl %ebx, %ebp
subl $0x1, %ebp
jb 0x29f9
movq %r12, %rdi
callq 0x3aa6
jmp 0x29ea
movl 0x44(%rsp), %ecx
movq 0x10(%rsp), %rax
imull %eax, %ecx
movl %ecx, 0x48(%rsp)
decl %eax
xorl %ebx, %ebx
testl %eax, %eax
cmovlel %ebx, %eax
movl %eax, 0xc(%rsp)
movl %ebx, %r14d
movl 0xc(%rsp), %r13d
cmpl 0x48(%rsp), %ebx
jge 0x2a82
subl $0x1, %r13d
jb 0x2a54
leal 0x1(%r14), %ebp
movq 0x60(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
callq 0x4700
movq %rax, %r15
movq %r12, %rdi
movl %r14d, %esi
callq 0x4700
movq %r15, 0x18(%rax)
movl %ebp, %r14d
jmp 0x2a24
movq 0x60(%rsp), %r15
movq %r15, %rdi
movl %ebx, %esi
callq 0x4700
movq 0x10(%rsp), %r12
movq %rax, %r14
leal (%rbx,%r12), %esi
decl %esi
movq %r15, %rdi
callq 0x4700
addl %r12d, %ebx
movq %r14, 0x18(%rax)
jmp 0x2a16
movq 0x10(%rsp), %rcx
movslq %ecx, %rax
movq %rax, 0xa8(%rsp)
leaq (,%rax,4), %rax
xorl %ebx, %ebx
testl %ecx, %ecx
pushq $-0x1
popq %rdx
cmovnsq %rax, %rdx
movl $0x0, %eax
cmovgl %ecx, %eax
movq %rax, 0x140(%rsp)
movl 0x6c(%rsp), %eax
movq %rax, 0x138(%rsp)
leaq 0x168(%rsp), %rbp
leaq 0x88(%rsp), %r14
pushq $0x2f
popq %r15
leaq 0x20(%rsp), %r13
movq %rdx, 0x130(%rsp)
cmpq 0x138(%rsp), %rbx
movq 0x60(%rsp), %r12
je 0x2dc2
movq %rdx, %r12
movq %rdx, %rdi
callq 0x2030
movq %rax, 0x18(%rsp)
movq %rbx, 0x58(%rsp)
movq %r12, %rdi
callq 0x2030
movq %rax, 0x78(%rsp)
movq %r12, %rdi
callq 0x2030
movq %rax, 0x70(%rsp)
movq 0x58(%rsp), %r12
imulq 0xa8(%rsp), %r12
xorl %ebx, %ebx
movl $0x0, 0xc(%rsp)
cmpq 0x140(%rsp), %rbx
je 0x2c6a
movq %rbx, %rax
shlq $0x5, %rax
addq 0xb0(%rsp), %rax
movq %r12, %rsi
shlq $0x5, %rsi
addq %rax, %rsi
movq %rbp, %rdi
pushq $0x18
popq %rdx
callq 0x2220
leaq 0x98(%rsp), %rax
movq %rax, 0x88(%rsp)
andq $0x0, 0x90(%rsp)
movb $0x0, 0x98(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x20(%rsp)
andq $0x0, 0x30(%rsp)
movq %rbp, %rdi
movq %r14, %rsi
movl %r15d, %edx
callq 0x2280
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x2bc6
movq %r13, %rdi
movq %r14, %rsi
callq 0x392c
jmp 0x2b9d
movq 0x20(%rsp), %rdi
movq 0x28(%rsp), %rax
subq %rdi, %rax
sarq $0x5, %rax
movl $0x0, 0xc(%rsp)
cmpq $0x1, %rax
je 0x2c36
cmpq $0x2, %rax
je 0x2c12
cmpq $0x3, %rax
jne 0x2c4a
addq $0x40, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x3ad1
decl %eax
movq 0x70(%rsp), %rcx
movl %eax, (%rcx,%rbx,4)
movq 0x20(%rsp), %rdi
pushq $0x2
jmp 0x2c14
pushq $0x1
popq %rax
movl %eax, 0xc(%rsp)
addq $0x20, %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x3ad1
decl %eax
movq 0x78(%rsp), %rcx
movl %eax, (%rcx,%rbx,4)
movq 0x20(%rsp), %rdi
xorl %esi, %esi
pushq $0xa
popq %rdx
callq 0x3ad1
decl %eax
movq 0x18(%rsp), %rcx
movl %eax, (%rcx,%rbx,4)
movq %r13, %rdi
callq 0x39b4
movq %r14, %rdi
callq 0x20f0
movq %rbp, %rdi
callq 0x2150
incq %rbx
jmp 0x2b3c
movq 0x60(%rsp), %rdi
movl %r12d, %esi
callq 0x4700
movq %rax, %rbx
movq 0x38(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0x44e6
movq %rbx, (%rax)
cmpl $0x2, 0xc(%rsp)
jne 0x2cf2
movq 0x78(%rsp), %rax
movslq (%rax), %rbx
movq 0xf0(%rsp), %r12
movq 0x38(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0x44e6
movq (%rax), %rax
movq (%r12,%rbx,8), %rcx
movq %rcx, 0x28(%rax)
movq 0x70(%rsp), %rax
movslq (%rax), %r12
movq 0xd0(%rsp), %rbx
movq 0x38(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0x44e6
imulq $0xc, %r12, %rcx
movq (%rax), %rax
movl 0x8(%rbx,%rcx), %edx
movl %edx, 0x38(%rax)
movq (%rbx,%rcx), %rcx
movq %rcx, 0x30(%rax)
movq 0x38(%rsp), %rdi
movq 0x58(%rsp), %rsi
callq 0x44e6
movq (%rax), %rbx
movq 0x18(%rsp), %rax
movl (%rax), %esi
movq 0x80(%rsp), %rdi
callq 0x42e2
movq %rax, (%rbx)
pushq $0x1
popq %r12
cmpq 0xa8(%rsp), %r12
jge 0x2d8f
movq 0x18(%rbx), %rbx
movq 0x18(%rsp), %rax
movl (%rax,%r12,4), %esi
movq 0x80(%rsp), %rdi
callq 0x42e2
movq %rax, (%rbx)
cmpl $0x2, 0xc(%rsp)
jne 0x2d8a
movq 0x78(%rsp), %rax
movslq (%rax,%r12,4), %rax
movq 0xf0(%rsp), %rcx
movq (%rcx,%rax,8), %rax
movq %rax, 0x28(%rbx)
movq 0x70(%rsp), %rax
movslq (%rax,%r12,4), %rax
movq 0xd0(%rsp), %rcx
imulq $0xc, %rax, %rax
movl 0x8(%rcx,%rax), %edx
movl %edx, 0x38(%rbx)
movq (%rcx,%rax), %rax
movq %rax, 0x30(%rbx)
incq %r12
jmp 0x2d1f
movq 0x18(%rsp), %rdi
callq 0x21a0
movq 0x78(%rsp), %rdi
callq 0x21a0
movq 0x70(%rsp), %rdi
callq 0x21a0
movq 0x58(%rsp), %rbx
incq %rbx
movq 0x130(%rsp), %rdx
jmp 0x2ae2
xorl %ebx, %ebx
movl 0x48(%rsp), %eax
testl %eax, %eax
movl $0x0, %r15d
cmovgl %eax, %r15d
cmpl %r15d, %ebx
je 0x2e69
movq %r12, %rdi
movl %ebx, %esi
callq 0x4700
movq %rax, %r14
movq %r12, %rdi
movl %ebx, %esi
callq 0x4700
movq (%rax), %rax
movq %r14, 0x10(%rax)
xorl %ebp, %ebp
cmpl %ebp, 0x48(%rsp)
je 0x2e62
movq %r12, %rdi
movl %ebx, %esi
callq 0x4700
movq (%rax), %r14
movq %r12, %rdi
movl %ebp, %esi
callq 0x4700
movq 0x18(%rax), %rax
cmpq (%rax), %r14
jne 0x2e5e
movq %r12, %rdi
movl %ebp, %esi
callq 0x4700
movq (%rax), %r14
movq %r12, %rdi
movl %ebx, %esi
callq 0x4700
movq 0x18(%rax), %rax
cmpq (%rax), %r14
jne 0x2e5e
movq %r12, %rdi
movl %ebp, %esi
callq 0x4700
movq %rax, %r14
movq %r12, %rdi
movl %ebx, %esi
callq 0x4700
movq %r14, 0x8(%rax)
incl %ebp
jmp 0x2dfd
incl %ebx
jmp 0x2dd4
xorl %ebx, %ebx
movq 0x38(%rsp), %r15
cmpl 0x6c(%rsp), %ebx
je 0x2eaa
movq 0x38(%rsp), %rdi
movl %ebx, %esi
callq 0x44e6
movq (%rax), %r14
movq 0x18(%r14), %r14
movq %r15, %rdi
movl %ebx, %esi
callq 0x44e6
movq %rax, 0x10(%r14)
movq %r15, %rdi
movl %ebx, %esi
callq 0x44e6
cmpq (%rax), %r14
jne 0x2e85
incl %ebx
jmp 0x2e70
movl 0x44(%rsp), %eax
movl %eax, 0x60(%r12)
movq 0x10(%rsp), %rax
movl %eax, 0x64(%r12)
movq 0x128(%rsp), %rax
movl %eax, 0x68(%r12)
leaq 0xb0(%rsp), %rdi
callq 0x39b4
leaq 0xd0(%rsp), %rdi
callq 0x3c8e
leaq 0xf0(%rsp), %rdi
callq 0x3c9c
leaq 0x110(%rsp), %rdi
callq 0x3c8e
leaq 0x148(%rsp), %rdi
callq 0x20f0
leaq 0x2f0(%rsp), %rdi
callq 0x20a0
addq $0x4f8, %rsp            # imm = 0x4F8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x2f79
jmp 0x2f79
jmp 0x2f79
jmp 0x2f79
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x20f0
jmp 0x2fa0
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f79
jmp 0x2f79
jmp 0x2f79
jmp 0x2f79
jmp 0x2f79
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f74
jmp 0x2f79
jmp 0x2f74
jmp 0x2f74
movq %rax, %rbx
jmp 0x2fa0
movq %rax, %rbx
leaq 0x20(%rsp), %rdi
callq 0x39b4
leaq 0x88(%rsp), %rdi
callq 0x20f0
leaq 0x168(%rsp), %rdi
callq 0x2150
leaq 0xb0(%rsp), %rdi
callq 0x39b4
leaq 0xd0(%rsp), %rdi
callq 0x3c8e
leaq 0xf0(%rsp), %rdi
callq 0x3c9c
leaq 0x110(%rsp), %rdi
callq 0x3c8e
leaq 0x148(%rsp), %rdi
callq 0x20f0
leaq 0x2f0(%rsp), %rdi
callq 0x20a0
movq %rbx, %rdi
callq 0x2260