LLM4Binary/decompile-bench-makefile huggingface dataset:
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/base_test.cpp
// Function: BaseTestSuite::test(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::function<void ()>)
void BaseTestSuite::test(std::string key, std::function<void()> function) {
    if (tests.find(key) == tests.end()) {
        std::vector<std::function<void()>> funcs = {function};
        tests.insert(std::make_pair(key, funcs));
    } else {
        tests[key].push_back(function);
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x60, %rsp
movq %rdx, %r15
movq %rsi, %r14
movq %rdi, %r12
leaq 0x8(%rdi), %rbx
movq %rbx, %rdi
callq 0xa920
addq $0x10, %r12
cmpq %r12, %rax
je 0xb7af
movq %rbx, %rdi
movq %r14, %rsi
callq 0xaa60
movq %rax, %rdi
movq %r15, %rsi
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0xa410
leaq -0x60(%rbp), %rdi
movq %r15, %rsi
callq 0xa810
leaq -0x78(%rbp), %rdi
leaq -0x60(%rbp), %rsi
leaq -0x21(%rbp), %rcx
movl $0x1, %edx
callq 0xa9b0
movq -0x50(%rbp), %rax
testq %rax, %rax
je 0xb7e8
leaq -0x60(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
leaq -0x60(%rbp), %rdi
leaq -0x78(%rbp), %rdx
movq %r14, %rsi
callq 0xa0a0
leaq -0x60(%rbp), %rsi
movq %rbx, %rdi
callq 0xa370
leaq -0x40(%rbp), %rbx
movq %rbx, %rdi
callq 0xa620
movq -0x20(%rbx), %rdi
leaq -0x50(%rbp), %rax
cmpq %rax, %rdi
je 0xb822
callq 0xa580
leaq -0x78(%rbp), %rdi
callq 0xa620
addq $0x60, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0xb872
movq %rax, %rbx
leaq -0x60(%rbp), %rdi
callq 0xa180
jmp 0xb84b
movq %rax, %rbx
leaq -0x78(%rbp), %rdi
callq 0xa620
jmp 0xb87d
movq %rax, %rbx
movq -0x50(%rbp), %rax
testq %rax, %rax
je 0xb87d
leaq -0x60(%rbp), %rdi
movq %rdi, %rsi
movl $0x3, %edx
callq *%rax
jmp 0xb87d
movq %rax, %rdi
callq 0xbb5e
movq %rax, %rbx
movq %rbx, %rdi
callq 0xa9a0
nop
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/cll/cll_test.cpp
// Function: stringify[abi:cxx11](cll::node*)
std::string stringify(cll::node* rear) {
    if (!rear) return "[]";
    cll::node* current = rear->next;
    std::stringstream ss;
    ss << "[";
    if (rear->next == rear) {
        ss << rear->data << "]";
        return ss.str();
    }
    do {
        ss << current->data;
        if (current->next != rear) ss << " -> ";
        current = current->next;
    } while (current != rear);
    ss << " -> " << rear->data << "]";
    return ss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rdi, %rbx
testq %rsi, %rsi
je 0xf8bd
movq %rsi, %r14
movq 0x8(%rsi), %r13
leaq -0x1b0(%rbp), %rdi
callq 0xa3a0
leaq -0x1a0(%rbp), %r15
leaq 0x67eb(%rip), %rsi      # 0x16000
movl $0x1, %edx
movq %r15, %rdi
callq 0xa6a0
cmpq %r14, 0x8(%r14)
je 0xf86e
leaq 0x67d3(%rip), %r12      # 0x16002
movl (%r13), %esi
movq %r15, %rdi
callq 0xa950
cmpq %r14, 0x8(%r13)
je 0xf851
movl $0x4, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0xa6a0
movq 0x8(%r13), %r13
cmpq %r14, %r13
jne 0xf82f
leaq 0x67a1(%rip), %rsi      # 0x16002
movl $0x4, %edx
movq %r15, %rdi
callq 0xa6a0
movl (%r14), %esi
movq %r15, %rdi
callq 0xa950
leaq 0x6e11(%rip), %rsi      # 0x16691
movl $0x1, %edx
movq %rax, %rdi
callq 0xa6a0
leaq -0x198(%rbp), %rsi
movq %rbx, %rdi
callq 0xa890
movq 0xd6cd(%rip), %rsi      # 0x1cf70
leaq -0x1b0(%rbp), %rdi
callq 0xa3c0
leaq -0x130(%rbp), %rdi
callq 0xa1e0
jmp 0xf8da
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
leaq 0x6dc5(%rip), %rsi      # 0x16690
leaq 0x6dc0(%rip), %rdx      # 0x16692
movq %rbx, %rdi
callq 0xa230
movq %rbx, %rax
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xf8f1
movq %rax, %rbx
movq 0xd675(%rip), %rsi      # 0x1cf70
leaq -0x1b0(%rbp), %rdi
callq 0xa3c0
leaq -0x130(%rbp), %rdi
callq 0xa1e0
movq %rbx, %rdi
callq 0xa9a0
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/cll/cll_test.cpp
// Function: destroy_cll(cll::node*&)
void destroy_cll(cll::node*& rear) {
    if (rear == nullptr) return;
    cll::node* curr = rear;
    while (curr->next != rear) {
        cll::node* temp = curr->next;
        curr->next = temp->next;
        delete temp;
        temp = nullptr;
    }
    delete rear;
    rear = nullptr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq (%rdi), %r14
testq %r14, %r14
je 0xf961
movq %rdi, %rbx
movq 0x8(%r14), %rdi
movq (%rbx), %rax
cmpq %rax, %rdi
je 0xf94d
movq 0x8(%rdi), %rax
movq %rax, 0x8(%r14)
testq %rdi, %rdi
je 0xf92d
callq 0xa580
jmp 0xf92d
testq %rax, %rax
je 0xf95a
movq %rax, %rdi
callq 0xa580
movq $0x0, (%rbx)
popq %rbx
popq %r14
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/cll/cll_test.cpp
// Function: CLLTestSuite::tearDown()
void CLLTestSuite::tearDown() {
    BaseTestSuite::tearDown();
    if (rear) destroy_cll(rear);
    rear = nullptr;
    initial = {};
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq %rdi, %rbx
callq 0xa6c0
cmpq $0x0, 0x78(%rbx)
je 0xfd18
leaq 0x78(%rbx), %rdi
callq 0xa4d0
movq $0x0, 0x78(%rbx)
subq $-0x80, %rbx
movq %rbx, %rdi
xorl %esi, %esi
xorl %edx, %edx
addq $0x8, %rsp
popq %rbx
popq %rbp
jmp 0xa0b0
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/cll/cll_test.cpp
// Function: CLLTestSuite::initialize(std::initializer_list<int>)
void CLLTestSuite::initialize(std::initializer_list<int> values) {
    rear = nullptr;
    for (auto it = values.end(); it != values.begin();) {
        if (!rear) {
            rear = new cll::node();
            rear->data = *--it;
            rear->next = rear;
        } else {
            cll::node* temp = rear->next;
            rear->next = new cll::node();
            rear->next->data = *--it;
            rear->next->next = temp;
        }
    }
    initial = values;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r15
movq $0x0, 0x78(%rdi)
leaq (%rsi,%rdx,4), %rax
movq %rax, -0x30(%rbp)
testq %rdx, %rdx
je 0xfdb3
movq %rdx, %r12
shlq $0x2, %r12
xorl %r13d, %r13d
testq %r13, %r13
je 0xfd88
movq 0x8(%r13), %r14
movl $0x10, %edi
callq 0xa5d0
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq %rax, 0x8(%r13)
jmp 0xfda2
movl $0x10, %edi
callq 0xa5d0
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq %rax, 0x78(%r15)
movq %rax, %r14
movq %rax, %r13
movl -0x4(%rbx,%r12), %ecx
movl %ecx, (%rax)
movq %r14, 0x8(%rax)
addq $-0x4, %r12
jne 0xfd69
subq $-0x80, %r15
movq %r15, %rdi
movq %rbx, %rsi
movq -0x30(%rbp), %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa0b0
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/cll/cll_test.cpp
// Function: CLLTestSuite::expectReturn(int)
void CLLTestSuite::expectReturn(int value) {
    if (retval == nullptr || *retval != value) {
        addFailure(CLLReturnFailure(
            "Incorrect return value",
            call,
            initial,
            value,
            *retval
        ));
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xd0, %rsp
movl %esi, %r14d
movq %rdi, %rbx
movq 0x50(%rdi), %rax
testq %rax, %rax
je 0x101d8
cmpl %r14d, (%rax)
je 0x10248
leaq -0x30(%rbp), %r12
movq %r12, -0x10(%r12)
movq 0x58(%rbx), %rsi
movq 0x60(%rbx), %rdx
addq %rsi, %rdx
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq 0xa250
leaq 0x80(%rbx), %rcx
movq 0x50(%rbx), %rax
movl (%rax), %r9d
leaq 0x64b8(%rip), %rsi      # 0x166c5
leaq -0xe8(%rbp), %rdi
movq %r15, %rdx
movl %r14d, %r8d
callq 0xa900
leaq -0xe8(%rbp), %rsi
movq %rbx, %rdi
callq 0xa6f0
leaq -0xe8(%rbp), %rdi
callq 0xaa40
movq -0x40(%rbp), %rdi
cmpq %r12, %rdi
je 0x10248
callq 0xa580
addq $0xd0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0xaa40
jmp 0x1026c
movq %rax, %rbx
movq -0x40(%rbp), %rdi
cmpq %r12, %rdi
je 0x1027a
callq 0xa580
movq %rbx, %rdi
callq 0xa9a0
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/lll/lll_test.cpp
// Function: stringify[abi:cxx11](lll::node*)
std::string stringify(lll::node* head) {
    std::stringstream ss;
    ss << "[";
    while (head) {
        ss << head->data;
        if (head->next) ss << " -> ";
        head = head->next;
    }
    ss << "]";
    return ss.str();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0x190, %rsp            # imm = 0x190
movq %rsi, %r15
movq %rdi, %rbx
leaq -0x1a8(%rbp), %rdi
callq 0xa3a0
leaq -0x198(%rbp), %r14
leaq 0x2b02(%rip), %rsi      # 0x16000
movl $0x1, %edx
movq %r14, %rdi
callq 0xa6a0
testq %r15, %r15
je 0x13542
leaq 0x2aeb(%rip), %r12      # 0x16002
movl (%r15), %esi
movq %r14, %rdi
callq 0xa950
cmpq $0x0, 0x8(%r15)
je 0x13539
movl $0x4, %edx
movq %r14, %rdi
movq %r12, %rsi
callq 0xa6a0
movq 0x8(%r15), %r15
testq %r15, %r15
jne 0x13517
leaq 0x3148(%rip), %rsi      # 0x16691
movl $0x1, %edx
movq %r14, %rdi
callq 0xa6a0
leaq -0x190(%rbp), %rsi
movq %rbx, %rdi
callq 0xa890
movq 0x9a04(%rip), %rsi      # 0x1cf70
leaq -0x1a8(%rbp), %rdi
callq 0xa3c0
leaq -0x128(%rbp), %rdi
callq 0xa1e0
movq %rbx, %rax
addq $0x190, %rsp            # imm = 0x190
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
jmp 0x13599
movq %rax, %rbx
movq 0x99cd(%rip), %rsi      # 0x1cf70
leaq -0x1a8(%rbp), %rdi
callq 0xa3c0
leaq -0x128(%rbp), %rdi
callq 0xa1e0
movq %rbx, %rdi
callq 0xa9a0
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/lll/lll_test.cpp
// Function: destroy_lll(lll::node*)
void destroy_lll(lll::node* head) {
    while (head) {
        lll::node* temp = head->next;
        delete head;
        head = temp;
    }
}

// Assembly:
testq %rdi, %rdi
je 0x135e5
pushq %rbp
movq %rsp, %rbp
pushq %rbx
pushq %rax
movq 0x8(%rdi), %rbx
callq 0xa580
movq %rbx, %rdi
testq %rbx, %rbx
jne 0x135ce
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/lll/lll_test.cpp
// Function: LLLTestSuite::tearDown()
void LLLTestSuite::tearDown() {
    if (head) destroy_lll(head);
    head = nullptr;// Verify that the nodes in the LLL match the given values
// e.g. expectList(head, {1, 2, 3});
// Add failures if there are discrepancies
    if (retval) delete retval;
    retval = nullptr;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
movq %rdi, %rbx
movq 0x78(%rdi), %rdi
testq %rdi, %rdi
je 0x139fc
movq 0x8(%rdi), %r14
callq 0xa580
movq %r14, %rdi
testq %r14, %r14
jne 0x139eb
movq $0x0, 0x78(%rbx)
movq 0x50(%rbx), %rdi
testq %rdi, %rdi
je 0x13a12
callq 0xa580
movq $0x0, 0x50(%rbx)
popq %rbx
popq %r14
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/lll/lll_test.cpp
// Function: LLLTestSuite::expectReturn(int)
void LLLTestSuite::expectReturn(int value) {
    if (retval == nullptr || *retval != value) {
        addFailure(LLLReturnFailure(
            "Incorrect return value",
            call,
            initial,
            value,
            *retval
        ));
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
subq $0xd0, %rsp
movl %esi, %r14d
movq %rdi, %rbx
movq 0x50(%rdi), %rax
testq %rax, %rax
je 0x13d1a
cmpl %r14d, (%rax)
je 0x13d8a
leaq -0x30(%rbp), %r12
movq %r12, -0x10(%r12)
movq 0x58(%rbx), %rsi
movq 0x60(%rbx), %rdx
addq %rsi, %rdx
leaq -0x40(%rbp), %r15
movq %r15, %rdi
callq 0xa250
leaq 0x80(%rbx), %rcx
movq 0x50(%rbx), %rax
movl (%rax), %r9d
leaq 0x2976(%rip), %rsi      # 0x166c5
leaq -0xe8(%rbp), %rdi
movq %r15, %rdx
movl %r14d, %r8d
callq 0xa720
leaq -0xe8(%rbp), %rsi
movq %rbx, %rdi
callq 0xa450
leaq -0xe8(%rbp), %rdi
callq 0xaa40
movq -0x40(%rbp), %rdi
cmpq %r12, %rdi
je 0x13d8a
callq 0xa580
addq $0xd0, %rsp
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
leaq -0xe8(%rbp), %rdi
callq 0xaa40
jmp 0x13dae
movq %rax, %rbx
movq -0x40(%rbp), %rdi
cmpq %r12, %rdi
je 0x13dbc
callq 0xa580
movq %rbx, %rdi
callq 0xa9a0
// File: /workspace/github_cpp_makefile_star2_O1/pdx-cs-tutors[P]pdp/tests/lll/lll_test.cpp
// Function: LLLTestSuite::initialize(std::initializer_list<int>)
void LLLTestSuite::initialize(std::initializer_list<int> values) {
    head = nullptr;
    for (auto it = values.end(); it != values.begin();) {
        lll::node* temp = head;
        head = new lll::node();
        head->data = *--it;
        head->next = temp;
    }
    initial = values;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rsi, %rbx
movq %rdi, %r15
movq $0x0, 0x78(%rdi)
leaq (%rsi,%rdx,4), %r14
testq %rdx, %rdx
je 0x13e89
movq %rdx, %r12
shlq $0x2, %r12
xorl %r13d, %r13d
movl $0x10, %edi
callq 0xa5d0
xorps %xmm0, %xmm0
movaps %xmm0, (%rax)
movq %rax, 0x78(%r15)
movl -0x4(%rbx,%r12), %ecx
movl %ecx, (%rax)
movq %r13, 0x8(%rax)
movq %rax, %r13
addq $-0x4, %r12
jne 0x13e61
subq $-0x80, %r15
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xa0b0
nop
// File: /workspace/github_cpp_makefile_star2_O1/linuxnoodle[P]typer/main.cpp
// Function: generateString[abi:cxx11](int)
string generateString(int wordCount){
    string generated;
    for (int i = 0; i < wordCount; ++i){
        generated += words[distribution(generator)];
        if (i != wordCount - 1){
            generated += " ";
        }
    }
    return generated;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq 0x10(%rdi), %r13
movq %r13, (%rdi)
movq $0x0, 0x8(%rdi)
movb $0x0, 0x10(%rdi)
testl %esi, %esi
jle 0x2576
movl %esi, %ebp
leaq 0x3cae(%rip), %r14      # 0x61d8
leaq 0x502f(%rip), %r15      # 0x7560
leaq 0x1c6d(%rip), %r12      # 0x41a5
movq %r15, %rdi
movq %r14, %rsi
movq %r15, %rdx
callq 0x32b2
movq 0x3c73(%rip), %rcx      # 0x61c0
shlq $0x5, %rax
movq (%rcx,%rax), %rsi
movq 0x8(%rcx,%rax), %rdx
movq %rbx, %rdi
callq 0x20b0
cmpl $0x1, %ebp
je 0x2572
movq %rbx, %rdi
movq %r12, %rsi
callq 0x2320
decl %ebp
jne 0x2538
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq (%rbx), %rdi
cmpq %r13, %rdi
je 0x259f
movq (%r13), %rsi
incq %rsi
callq 0x21d0
movq %r14, %rdi
callq 0x22e0
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/matrix.cpp
// Function: Matrix::identity(int)
Matrix Matrix::identity(int dimensions) {
    Matrix E(dimensions, dimensions);
    for (int i=0; i<dimensions; i++) {
        for (int j=0; j<dimensions; j++) {
            E[i][j] = (i==j ? 1.f : 0.f);
        }
    }
    return E;
}

// Assembly:
pushq %rbp
pushq %rbx
pushq %rax
movl %esi, %ebp
movq %rdi, %rbx
movl %esi, %edx
callq 0x25ec
testl %ebp, %ebp
jle 0x26d4
movl %ebp, %eax
xorl %ecx, %ecx
movss 0x4969(%rip), %xmm0     # 0x7004
leaq (%rcx,%rcx,2), %rdx
shlq $0x3, %rdx
addq (%rbx), %rdx
xorl %esi, %esi
movslq 0x18(%rbx), %rdi
cmpq %rdi, %rcx
jge 0x26de
movaps %xmm0, %xmm1
cmpq %rsi, %rcx
je 0x26bc
xorps %xmm1, %xmm1
movq (%rdx), %rdi
movss %xmm1, (%rdi,%rsi,4)
incq %rsi
cmpq %rsi, %rax
jne 0x26a8
incq %rcx
cmpq %rax, %rcx
jne 0x269b
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %rbp
retq
leaq 0x4923(%rip), %rdi      # 0x7008
leaq 0x492b(%rip), %rsi      # 0x7017
leaq 0x492f(%rip), %rcx      # 0x7022
movl $0x18, %edx
callq 0x2110
nop
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/matrix.cpp
// Function: Matrix::operator*(Matrix const&)
Matrix Matrix::operator*(const Matrix& a) {
    assert(cols == a.rows);
    Matrix result(rows, a.cols);
    for (int i=0; i<rows; i++) {
        for (int j=0; j<a.cols; j++) {
            result.m[i][j] = 0.f;
            for (int k=0; k<cols; k++) {
                result.m[i][j] += m[i][k]*a.m[k][j];
            }
        }
    }
    return result;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movl 0x1c(%rsi), %eax
cmpl 0x18(%rdx), %eax
jne 0x27fb
movq %rdx, %rbx
movq %rsi, %r15
movl 0x18(%rsi), %esi
movl 0x1c(%rdx), %edx
movq %rdi, (%rsp)
callq 0x25ec
movslq 0x18(%r15), %rax
testq %rax, %rax
jle 0x27e8
movl 0x1c(%rbx), %ecx
movq (%rsp), %rdx
movq (%rdx), %rdx
movl 0x1c(%r15), %esi
xorl %edi, %edi
testl %ecx, %ecx
jle 0x27e0
leaq (,%rdi,8), %r8
leaq (%r8,%r8,2), %r8
movq (%rdx,%r8), %r9
addq (%r15), %r8
movq (%rbx), %r10
xorl %r11d, %r11d
movl $0x0, (%r9,%r11,4)
testl %esi, %esi
jle 0x27d8
movq (%r8), %r12
movss (%r9,%r11,4), %xmm0
movq %r10, %r13
xorl %ebp, %ebp
movss (%r12,%rbp,4), %xmm1
movq (%r13), %r14
mulss (%r14,%r11,4), %xmm1
addss %xmm1, %xmm0
movss %xmm0, (%r9,%r11,4)
incq %rbp
addq $0x18, %r13
cmpq %rbp, %rsi
jne 0x27b2
incq %r11
cmpq %rcx, %r11
jne 0x2798
incq %rdi
cmpq %rax, %rdi
jne 0x277b
movq (%rsp), %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4852(%rip), %rdi      # 0x7054
leaq 0x480e(%rip), %rsi      # 0x7017
leaq 0x4853(%rip), %rcx      # 0x7063
movl $0x1d, %edx
callq 0x2110
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/matrix.cpp
// Function: Matrix::transpose()
Matrix Matrix::transpose() {
    Matrix result(cols, rows);
    for(int i=0; i<rows; i++)
        for(int j=0; j<cols; j++)
            result[j][i] = m[i][j];
    return result;
}

// Assembly:
pushq %r14
pushq %rbx
pushq %rax
movq %rsi, %r14
movq %rdi, %rbx
movl 0x18(%rsi), %edx
movl 0x1c(%rsi), %esi
callq 0x25ec
movslq 0x18(%r14), %rax
testq %rax, %rax
jle 0x2882
movl 0x1c(%r14), %ecx
xorl %edx, %edx
testl %ecx, %ecx
jle 0x287a
leaq (%rdx,%rdx,2), %rsi
shlq $0x3, %rsi
addq (%r14), %rsi
movq (%rbx), %rdi
xorl %r8d, %r8d
movslq 0x18(%rbx), %r9
cmpq %r9, %r8
jge 0x288d
movq (%rsi), %r9
movss (%r9,%r8,4), %xmm0
movq (%rdi), %r9
movss %xmm0, (%r9,%rdx,4)
incq %r8
addq $0x18, %rdi
cmpq %r8, %rcx
jne 0x2853
incq %rdx
cmpq %rax, %rdx
jne 0x283e
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r14
retq
leaq 0x4774(%rip), %rdi      # 0x7008
leaq 0x477c(%rip), %rsi      # 0x7017
leaq 0x4780(%rip), %rcx      # 0x7022
movl $0x18, %edx
callq 0x2110
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/matrix.cpp
// Function: operator<<(std::ostream&, Matrix&)
std::ostream& operator<<(std::ostream& s, Matrix& m) {
    for (int i=0; i<m.nrows(); i++)  {
        for (int j=0; j<m.ncols(); j++) {
            s << m[i][j];
            if (j<m.ncols()-1) s << "\t";
        }
        s << "\n";
    }
    return s;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdi, %rbx
cmpl $0x0, 0x18(%rsi)
jle 0x2cfb
movq %rsi, %r14
xorl %r13d, %r13d
leaq 0x4433(%rip), %r15      # 0x70b0
cmpl $0x0, 0x1c(%r14)
jle 0x2cdb
leaq (,%r13,2), %rbp
addq %r13, %rbp
xorl %r12d, %r12d
movslq 0x18(%r14), %rax
cmpq %rax, %r13
jge 0x2d0d
movq (%r14), %rax
movq (%rax,%rbp,8), %rax
xorps %xmm0, %xmm0
cvtss2sd (%rax,%r12,4), %xmm0
movq %rbx, %rdi
callq 0x2260
movslq 0x1c(%r14), %rax
decq %rax
cmpq %rax, %r12
jge 0x2ccf
movl $0x1, %edx
movq %rbx, %rdi
movq %r15, %rsi
callq 0x21d0
incq %r12
movslq 0x1c(%r14), %rax
cmpq %rax, %r12
jl 0x2c92
movl $0x1, %edx
movq %rbx, %rdi
leaq 0x43c8(%rip), %rsi      # 0x70b2
callq 0x21d0
incq %r13
movslq 0x18(%r14), %rax
cmpq %rax, %r13
jl 0x2c7d
movq %rbx, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x42f4(%rip), %rdi      # 0x7008
leaq 0x42fc(%rip), %rsi      # 0x7017
leaq 0x4300(%rip), %rcx      # 0x7022
movl $0x18, %edx
callq 0x2110
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/camera.cpp
// Function: Camera::translate(float, float, float)
Matrix Camera::translate(float x, float y , float z) {
    Matrix R = Matrix::identity(4);

    R[0][3] = x;
    R[1][3] = y;
    R[2][3] = z;

    return R;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movss %xmm2, 0xc(%rsp)
movss %xmm1, 0x10(%rsp)
movss %xmm0, 0x14(%rsp)
movq %rdi, %rbx
movl $0x4, %esi
callq 0x267c
movq %rbx, %rdi
xorl %esi, %esi
callq 0x26fe
movq (%rax), %rax
movss 0x14(%rsp), %xmm0
movss %xmm0, 0xc(%rax)
movq %rbx, %rdi
movl $0x1, %esi
callq 0x26fe
movq (%rax), %rax
movss 0x10(%rsp), %xmm0
movss %xmm0, 0xc(%rax)
movq %rbx, %rdi
movl $0x2, %esi
callq 0x26fe
movq (%rax), %rax
movss 0xc(%rsp), %xmm0
movss %xmm0, 0xc(%rax)
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
movq %rax, %r14
movq %rbx, %rdi
callq 0x2e46
movq %r14, %rdi
callq 0x22d0
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/camera.cpp
// Function: Camera::v2m(Vec3<float>)
Matrix Camera::v2m(Vec3f v) {
    Matrix m(4,1);
    for (int i = 0; i < 3; i++)
    {
        m[i][0] = v[i];
    }
    m[3][0] = 1.;
    return m;
}

// Assembly:
pushq %r14
pushq %rbx
subq $0x18, %rsp
movq %rdi, %rbx
movlps %xmm0, 0x8(%rsp)
movss %xmm1, 0x10(%rsp)
movl $0x4, %esi
movl $0x1, %edx
callq 0x25ec
xorl %r14d, %r14d
xorl %eax, %eax
cmpl $0x1, %r14d
setne %al
testl %r14d, %r14d
leaq 0x4(,%rax,4), %rax
movl $0x0, %ecx
cmovneq %rax, %rcx
movss 0x8(%rsp,%rcx), %xmm0
movss %xmm0, 0x4(%rsp)
movq %rbx, %rdi
movl %r14d, %esi
callq 0x26fe
movq (%rax), %rax
movss 0x4(%rsp), %xmm0
movss %xmm0, (%rax)
incl %r14d
cmpl $0x3, %r14d
jne 0x34a1
movq %rbx, %rdi
movl $0x3, %esi
callq 0x26fe
movq (%rax), %rax
movl $0x3f800000, (%rax)     # imm = 0x3F800000
movq %rbx, %rax
addq $0x18, %rsp
popq %rbx
popq %r14
retq
jmp 0x350e
movq %rax, %r14
movq %rbx, %rdi
callq 0x2e46
movq %r14, %rdi
callq 0x22d0
nop
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/camera.cpp
// Function: Camera::camera_transform(Vec3<float>)
Vec3f Camera::camera_transform(Vec3f p) {
    Matrix res = ViewPort;
    Matrix ModelView = lookat();

    if (mode == PERSPECTIVE)
    {
        res = res * Projection;
    }

    return m2v(res * ModelView * v2m(p));
}

// Assembly:
pushq %r14
pushq %rbx
subq $0xc8, %rsp
movss %xmm1, 0x30(%rsp)
movaps %xmm0, 0x20(%rsp)
movq %rdi, %rbx
leaq 0x28(%rdi), %rsi
movq %rsp, %r14
movq %r14, %rdi
callq 0x3d4c
movq 0x40(%rbx), %rax
movq %rax, 0x18(%r14)
leaq 0xa8(%rsp), %rdi
movq %rbx, %rsi
callq 0x3522
cmpl $0x1, 0x68(%rbx)
jne 0x390d
addq $0x48, %rbx
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
movq %rbx, %rdx
callq 0x2736
xorps %xmm0, %xmm0
leaq 0x60(%rsp), %rdi
movaps %xmm0, (%rdi)
movups (%rsp), %xmm0
movq 0x10(%rsp), %rax
leaq 0x40(%rsp), %rbx
movups (%rbx), %xmm1
movups %xmm1, (%rsp)
movq 0x10(%rbx), %rcx
movq %rcx, 0x10(%rsp)
movaps (%rdi), %xmm1
movaps %xmm0, (%rdi)
movq %rax, 0x10(%rdi)
movups %xmm1, (%rbx)
movq $0x0, 0x10(%rbx)
callq 0x2e46
movq 0x18(%rbx), %rax
movq %rax, 0x18(%rsp)
movq %rbx, %rdi
callq 0x2e46
leaq 0x40(%rsp), %rdi
movq %rsp, %rsi
leaq 0xa8(%rsp), %rdx
callq 0x2736
leaq 0x60(%rsp), %rdi
movaps 0x20(%rsp), %xmm0
movss 0x30(%rsp), %xmm1
callq 0x347a
leaq 0x88(%rsp), %rdi
leaq 0x40(%rsp), %rsi
leaq 0x60(%rsp), %rdx
callq 0x2736
leaq 0x88(%rsp), %rsi
callq 0x3304
movaps %xmm0, 0x30(%rsp)
movss %xmm1, 0x20(%rsp)
leaq 0x88(%rsp), %rdi
callq 0x2e46
leaq 0x60(%rsp), %rdi
callq 0x2e46
leaq 0x40(%rsp), %rdi
callq 0x2e46
leaq 0xa8(%rsp), %rdi
callq 0x2e46
movq %rsp, %rdi
callq 0x2e46
movaps 0x30(%rsp), %xmm0
movss 0x20(%rsp), %xmm1
addq $0xc8, %rsp
popq %rbx
popq %r14
retq
jmp 0x39e4
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x2e46
jmp 0x39c9
movq %rax, %rbx
leaq 0x60(%rsp), %rdi
callq 0x2e46
jmp 0x39d8
movq %rax, %rbx
leaq 0x40(%rsp), %rdi
callq 0x2e46
jmp 0x39e7
movq %rax, %rbx
leaq 0xa8(%rsp), %rdi
callq 0x2e46
movq %rsp, %rdi
callq 0x2e46
movq %rbx, %rdi
callq 0x22d0
movq %rax, %rbx
jmp 0x39f4
nop
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/image.cpp
// Function: Image::exportPPM()
void Image::exportPPM() {
    std::ofstream ofs;
    ofs.open("./out.ppm");
    ofs << "P6" << std::endl << width << " " << height << std::endl << "255" << std::endl;
    for (int i = 0; i < width * height; i++)
    {
        for (int j = 0; j < 3; j++)
        {
            ofs << (char)(255 * std::max(0.f, std::min(1.f , framebuffer[i][j]) ) );
        }
    }
    ofs.close();   
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x208, %rsp            # imm = 0x208
movq %rdi, %rbx
leaq 0x8(%rsp), %r14
movq %r14, %rdi
callq 0x22a0
leaq 0x325a(%rip), %rsi      # 0x7130
movq %r14, %rdi
movl $0x10, %edx
callq 0x2050
leaq 0x3250(%rip), %rsi      # 0x713a
leaq 0x8(%rsp), %r14
movl $0x2, %edx
movq %r14, %rdi
callq 0x21d0
movq 0x8(%rsp), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
leaq 0x8(%rsp), %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movl 0x18(%rbx), %esi
movq %rax, %rdi
callq 0x22b0
movq %rax, %r14
leaq 0x3216(%rip), %rsi      # 0x7152
movl $0x1, %edx
movq %rax, %rdi
callq 0x21d0
movl 0x1c(%rbx), %esi
movq %r14, %rdi
callq 0x22b0
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movq %rax, %r14
leaq 0x31b5(%rip), %rsi      # 0x713d
movl $0x3, %edx
movq %rax, %rdi
callq 0x21d0
movq (%r14), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %r14, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movl 0x1c(%rbx), %eax
imull 0x18(%rbx), %eax
testl %eax, %eax
jle 0x4053
xorl %r12d, %r12d
leaq 0x8(%rsp), %r14
leaq 0x7(%rsp), %r15
leaq (%r12,%r12,2), %r13
shlq $0x2, %r13
xorl %ebp, %ebp
movq (%rbx), %rax
addq %r13, %rax
xorl %ecx, %ecx
cmpl $0x1, %ebp
setne %cl
testl %ebp, %ebp
leaq 0x4(,%rcx,4), %rcx
movl $0x0, %edx
cmovneq %rcx, %rdx
movss (%rdx,%rax), %xmm0
minss 0x2ff4(%rip), %xmm0     # 0x7004
maxss 0x3114(%rip), %xmm0     # 0x712c
mulss 0x3108(%rip), %xmm0     # 0x7128
cvttss2si %xmm0, %eax
movb %al, 0x7(%rsp)
movl $0x1, %edx
movq %r14, %rdi
movq %r15, %rsi
callq 0x21d0
incl %ebp
cmpl $0x3, %ebp
jne 0x3fe2
incq %r12
movslq 0x18(%rbx), %rax
movslq 0x1c(%rbx), %rcx
imulq %rax, %rcx
cmpq %rcx, %r12
jl 0x3fd8
leaq 0x8(%rsp), %rdi
callq 0x2210
movq 0x5f64(%rip), %rax      # 0x9fc8
movq (%rax), %rcx
movq 0x18(%rax), %rax
leaq 0x10(%rsp), %rdi
movq %rcx, -0x8(%rdi)
movq -0x18(%rcx), %rcx
movq %rax, 0x8(%rsp,%rcx)
callq 0x2170
leaq 0x100(%rsp), %rdi
callq 0x2090
addq $0x208, %rsp            # imm = 0x208
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x40a3
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x2240
movq %rbx, %rdi
callq 0x22d0
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/image.cpp
// Function: Image::setPixel(int, int, Vec3<float>)
void Image::setPixel(const int x, const int y, Vec3f color) {
    for (int i = 0; i < 3; i++)
    {
        if(color[i] > 1.) 
            color[i] = 1.;
        
        if( color[i] < 0. )
            color[i] = 0.;
    }
    

    if( 0 <= x && x < width && 0 <= y && y < height )
        framebuffer[x + y * width] = color;
}

// Assembly:
movlps %xmm0, -0x10(%rsp)
movss %xmm1, -0x8(%rsp)
xorl %eax, %eax
movss 0x2f37(%rip), %xmm0     # 0x7004
xorps %xmm1, %xmm1
xorl %ecx, %ecx
cmpl $0x1, %eax
setne %cl
testl %eax, %eax
leaq 0x4(,%rcx,4), %r8
movl $0x0, %ecx
cmovneq %r8, %rcx
movss -0x10(%rsp,%rcx), %xmm2
ucomiss %xmm0, %xmm2
jbe 0x40fe
movl $0x3f800000, -0x10(%rsp,%rcx) # imm = 0x3F800000
ucomiss -0x10(%rsp,%rcx), %xmm1
jbe 0x410d
movl $0x0, -0x10(%rsp,%rcx)
incl %eax
cmpl $0x3, %eax
jne 0x40d0
testl %esi, %esi
js 0x4145
testl %edx, %edx
js 0x4145
movl 0x18(%rdi), %eax
cmpl %esi, %eax
jle 0x4145
cmpl %edx, 0x1c(%rdi)
jle 0x4145
imull %edx, %eax
addl %esi, %eax
movq (%rdi), %rcx
leaq (%rax,%rax,2), %rax
movl -0x8(%rsp), %edx
movl %edx, 0x8(%rcx,%rax,4)
movq -0x10(%rsp), %rdx
movq %rdx, (%rcx,%rax,4)
retq
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/image.cpp
// Function: Image::flip(int)
void Image::flip(const int type) {
   std::vector<Vec3f> framebuffer_tmp(width * height);

    for (int x = 0; x < width; x++)
    {
        for (int y = 0; y < height; y++)
        {
            if ( type ==  HORIZONTAL_FLIP ) {
                framebuffer_tmp[ x + y * width ] = framebuffer[ ( width - 1 - x ) + ( y ) * width ];
            } else {
                framebuffer_tmp[ x + y * width ] = framebuffer[ x + (height - 1 - y ) * width ];
            }
        }
    }
    
    framebuffer = framebuffer_tmp;
}

// Assembly:
pushq %rbp
pushq %rbx
subq $0x28, %rsp
movl %esi, %ebp
movq %rdi, %rbx
movslq 0x18(%rdi), %rax
movslq 0x1c(%rdi), %rsi
imulq %rax, %rsi
leaq 0x10(%rsp), %rdi
leaq 0xf(%rsp), %rdx
callq 0x439a
cmpl $0x0, 0x18(%rbx)
jle 0x425f
xorl %eax, %eax
movl 0x1c(%rbx), %edi
testl %edi, %edi
jle 0x4254
movl %eax, %ecx
notl %ecx
xorl %edx, %edx
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
cmpl $0x1, %ebp
jne 0x420a
movl 0x18(%rbx), %edi
leal (%rdi,%rcx), %r8d
imull %edx, %edi
addl %edi, %r8d
movslq %r8d, %r8
movq (%rbx), %r9
leaq (%r8,%r8,2), %r8
addl %eax, %edi
movslq %edi, %rdi
movq 0x10(%rsp), %r10
leaq (%rdi,%rdi,2), %rdi
movl 0x8(%r9,%r8,4), %r11d
movl %r11d, 0x8(%r10,%rdi,4)
movq (%r9,%r8,4), %r8
movq %r8, (%r10,%rdi,4)
jmp 0x4245
addl %esi, %edi
movl 0x18(%rbx), %r8d
imull %r8d, %edi
addl %eax, %edi
movslq %edi, %rdi
movq (%rbx), %r9
leaq (%rdi,%rdi,2), %rdi
imull %edx, %r8d
addl %eax, %r8d
movslq %r8d, %r8
movq 0x10(%rsp), %r10
leaq (%r8,%r8,2), %r8
movl 0x8(%r9,%rdi,4), %r11d
movl %r11d, 0x8(%r10,%r8,4)
movq (%r9,%rdi,4), %rdi
movq %rdi, (%r10,%r8,4)
incl %edx
movl 0x1c(%rbx), %edi
decl %esi
cmpl %edi, %edx
jl 0x41cc
incl %eax
cmpl 0x18(%rbx), %eax
jl 0x41b6
leaq 0x10(%rsp), %rsi
movq %rbx, %rdi
callq 0x4422
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x4283
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21b0
addq $0x28, %rsp
popq %rbx
popq %rbp
retq
movq %rax, %rbx
movq 0x10(%rsp), %rdi
testq %rdi, %rdi
je 0x42a4
movq 0x20(%rsp), %rsi
subq %rdi, %rsi
callq 0x21b0
movq %rbx, %rdi
callq 0x22d0
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/image.cpp
// Function: Image::getPixel(int, int)
Vec3f Image::getPixel(const int x, const int y) {
    if( 0 <= x && x < width && 0 <= y && y < height )
        return framebuffer[x + y * width];
    else 
        return Vec3f(0,0,0);
}

// Assembly:
xorps %xmm0, %xmm0
xorps %xmm1, %xmm1
testl %esi, %esi
js 0x42dd
testl %edx, %edx
js 0x42dd
movl 0x18(%rdi), %eax
cmpl %esi, %eax
jle 0x42dd
cmpl %edx, 0x1c(%rdi)
jle 0x42dd
imull %edx, %eax
addl %esi, %eax
movq (%rdi), %rcx
leaq (%rax,%rax,2), %rax
movsd (%rcx,%rax,4), %xmm0
movss 0x8(%rcx,%rax,4), %xmm1
retq
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/image.cpp
// Function: Image::fusionner(Image&)
Image Image::fusionner(Image& i) {
    Image res(width, height);

    for (int j = 0; j < width * height; j++)
    {
        res.setPixel(j % width, j / width , Vec3f( framebuffer[j].x + i.framebuffer[j].x, 
                                                  framebuffer[j].y + i.framebuffer[j].y,                                  
                                                  framebuffer[j].z + i.framebuffer[j].z                                  
                                                ) );
    }
    
    return res;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
movq %rdx, %rbx
movq %rsi, %r15
movq %rdi, %r14
movl 0x18(%rsi), %ebp
movl 0x1c(%rsi), %r12d
movl %r12d, %eax
imull %ebp, %eax
movslq %eax, %rsi
leaq 0x7(%rsp), %rdx
callq 0x439a
movl %ebp, 0x18(%r14)
movl %r12d, 0x1c(%r14)
movl 0x18(%r15), %ecx
movl 0x1c(%r15), %eax
imull %ecx, %eax
testl %eax, %eax
jle 0x4387
movl $0x8, %r13d
xorl %r12d, %r12d
movl %r12d, %eax
cltd
idivl %ecx
movq (%r15), %rcx
movq (%rbx), %rsi
movss -0x8(%rcx,%r13), %xmm0
movss -0x4(%rcx,%r13), %xmm1
addss -0x8(%rsi,%r13), %xmm0
addss -0x4(%rsi,%r13), %xmm1
unpcklps %xmm1, %xmm0            # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1]
movss (%rcx,%r13), %xmm1
addss (%rsi,%r13), %xmm1
movq %r14, %rdi
movl %edx, %esi
movl %eax, %edx
callq 0x40b8
incq %r12
movslq 0x18(%r15), %rcx
movslq 0x1c(%r15), %rax
imulq %rcx, %rax
addq $0xc, %r13
cmpq %rax, %r12
jl 0x432c
movq %r14, %rax
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
nop
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/./triangle.hpp
// Function: barycentric(Vec3<float>, Vec3<float>, Vec3<float>, Vec3<float>)
Vec3f barycentric(Vec3f A, Vec3f B, Vec3f C, Vec3f P) {
    Vec3f s[2];
    for (int i=2; i--; ) {
        s[i][0] = C[i]-A[i];
        s[i][1] = B[i]-A[i];
        s[i][2] = A[i]-P[i];
    }
    Vec3f u = s[0] ^ s[1];
    if (std::abs(u[2])>1e-2) 
        return Vec3f(1.f-(u.x+u.y)/u.z, u.y/u.z, u.x/u.z);
    return Vec3f(-1,1,1);
}

// Assembly:
movlps %xmm0, -0x10(%rsp)
movss %xmm1, -0x8(%rsp)
movlps %xmm2, -0x20(%rsp)
movss %xmm3, -0x18(%rsp)
movlps %xmm4, -0x30(%rsp)
movss %xmm5, -0x28(%rsp)
movlps %xmm6, -0x40(%rsp)
movss %xmm7, -0x38(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x58(%rsp)
movq $0x0, -0x48(%rsp)
movl $0xc, %eax
xorl %ecx, %ecx
cmpq $0xc, %rax
setne %cl
testq %rax, %rax
leaq 0x4(,%rcx,4), %rcx
cmoveq %rax, %rcx
movss -0x30(%rsp,%rcx), %xmm0
movss -0x10(%rsp,%rcx), %xmm1
subss %xmm1, %xmm0
movss %xmm0, -0x58(%rsp,%rax)
movss -0x20(%rsp,%rcx), %xmm0
subss %xmm1, %xmm0
subss -0x40(%rsp,%rcx), %xmm1
movss %xmm0, -0x54(%rsp,%rax)
movss %xmm1, -0x50(%rsp,%rax)
addq $-0xc, %rax
cmpq $-0xc, %rax
jne 0x5c66
movss -0x58(%rsp), %xmm4
movss -0x54(%rsp), %xmm1
movss -0x48(%rsp), %xmm0
movss -0x4c(%rsp), %xmm2
movaps %xmm2, %xmm5
mulss %xmm1, %xmm5
movaps %xmm4, %xmm3
mulss %xmm0, %xmm3
subss %xmm5, %xmm3
movaps 0x14b5(%rip), %xmm5     # 0x71a0
andps %xmm3, %xmm5
cvtss2sd %xmm5, %xmm5
ucomisd 0x14ce(%rip), %xmm5     # 0x71c8
jbe 0x5d43
movss -0x50(%rsp), %xmm5
movss -0x44(%rsp), %xmm6
mulss %xmm6, %xmm4
mulss %xmm5, %xmm2
subss %xmm4, %xmm2
mulss %xmm5, %xmm0
mulss %xmm6, %xmm1
subss %xmm0, %xmm1
movaps %xmm1, %xmm4
addss %xmm2, %xmm4
divss %xmm3, %xmm4
movss 0x12d1(%rip), %xmm0     # 0x7004
subss %xmm4, %xmm0
divss %xmm3, %xmm2
unpcklps %xmm2, %xmm0            # xmm0 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
divss %xmm3, %xmm1
retq
movss 0x12b9(%rip), %xmm1     # 0x7004
movsd 0x145d(%rip), %xmm0     # 0x71b0
retq
// File: /workspace/github_cpp_makefile_star2_O1/SpiritLooper[P]RDV_OBJRender/obj_render.cpp
// Function: main
int main(int argc, char const ** argv)
{
    std::string file_obj = "./model/head.obj";
    
    bool _3Dmode = true;

    if(argc >= 2) {
        for (int i = 1; i <= 2 && i < argc; i++)
        {
            if ( std::string(argv[i]) == "--no-3d" ){
                _3Dmode = false;
                std::cout << "*** Disabled 3D ***"  << std::endl;

            } else {
                file_obj = std::string(argv[i]) ;
            }
        }
    }
    
    std::cout << "Loading model " << file_obj << std::endl;
    Model* model = new Model(file_obj.c_str());
    
    render(model, _3Dmode);
    
    return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x48, %rsp
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0xba3(%rip), %rsi       # 0x720c
leaq 0xbac(%rip), %rdx       # 0x721c
leaq 0x8(%rsp), %rdi
callq 0x56aa
movb $0x1, %r12b
cmpl $0x2, %ebp
jl 0x6789
sete %al
movzbl %al, %r13d
xorq $0x3, %r13
movb $0x1, %al
movl %eax, 0x4(%rsp)
movl $0x1, %r12d
leaq 0x28(%rsp), %r14
leaq 0x3(%rsp), %r15
movq (%rbx,%r12,8), %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0x5572
movq %r14, %rdi
leaq 0xb5d(%rip), %rsi       # 0x721d
callq 0x2080
movl %eax, %ebp
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x66e3
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21b0
testl %ebp, %ebp
je 0x6721
movq (%rbx,%r12,8), %rsi
movq %r14, %rdi
movq %r15, %rdx
callq 0x5572
leaq 0x8(%rsp), %rdi
movq %r14, %rsi
callq 0x21e0
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x6773
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21b0
jmp 0x6773
movl $0x13, %edx
movq 0x38ab(%rip), %rdi      # 0x9fd8
leaq 0xaf1(%rip), %rsi       # 0x7225
callq 0x21d0
movq 0x3898(%rip), %rcx      # 0x9fd8
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq 0x387a(%rip), %rdi      # 0x9fd8
callq 0x2040
movq %rax, %rdi
callq 0x2130
movl $0x0, 0x4(%rsp)
incq %r12
cmpq %r12, %r13
jne 0x66a7
leaq 0x18(%rsp), %r15
movl 0x4(%rsp), %r12d
movq 0x3848(%rip), %rdi      # 0x9fd8
leaq 0xaa2(%rip), %rsi       # 0x7239
movl $0xe, %edx
callq 0x21d0
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
movq 0x3826(%rip), %rdi      # 0x9fd8
callq 0x21d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x2190
movsbl %al, %esi
movq %rbx, %rdi
callq 0x2040
movq %rax, %rdi
callq 0x2130
movl $0x30, %edi
callq 0x21a0
movq %rax, %r14
movq 0x8(%rsp), %rsi
movq %rax, %rdi
callq 0x4550
movzbl %r12b, %esi
andl $0x1, %esi
movq %r14, %rdi
callq 0x602e
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6821
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21b0
xorl %eax, %eax
addq $0x48, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movl $0x30, %esi
movq %r14, %rdi
callq 0x21b0
jmp 0x684f
jmp 0x684c
jmp 0x684c
jmp 0x684c
jmp 0x684c
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x686b
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21b0
movq %rbx, %rdi
callq 0x22d0
nop
// File: /workspace/github_cpp_makefile_star2_O1/iZhangHui[P]CppPrimer/CH16_TemplatesAndGenericProgramming/examples/array-parms4.cc
// Function: main
int main()
{
	int a1[] = {0,1,2,3,4,5,6,7,8,9};
	int a2[] = {1,3,5};
	string a3[4];

	print(a1);  // instantiates print(int (&arr)[10])

	print(a2);  // instantiates print(int (&arr)[3])

	print(a3);  // instantiates print(string (&arr)[42])

	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0xc0, %rsp
movaps 0xdaf(%rip), %xmm0      # 0x2020
movaps %xmm0, -0x40(%rbp)
movaps 0xd94(%rip), %xmm0      # 0x2010
movaps %xmm0, -0x50(%rbp)
movabsq $0x900000008, %rax      # imm = 0x900000008
movq %rax, -0x30(%rbp)
movabsq $0x300000001, %rax      # imm = 0x300000001
movq %rax, -0x20(%rbp)
movl $0x5, -0x18(%rbp)
movl $0x10, %eax
leaq (%rax,%rbp), %rcx
addq $-0xd0, %rcx
movq %rcx, -0x10(%rcx)
movq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rax
cmpq $0x90, %rax
jne 0x12a8
leaq -0x50(%rbp), %rbx
leaq -0x50(%rbp), %rdi
callq 0x1341
leaq -0x20(%rbp), %rdi
callq 0x13a2
leaq -0xd0(%rbp), %rdi
callq 0x1403
movq $-0x80, %rbx
leaq -0x60(%rbp), %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x130f
movq (%r14), %rsi
incq %rsi
callq 0x1090
addq $-0x20, %r14
addq $0x20, %rbx
jne 0x12fb
xorl %eax, %eax
addq $0xc0, %rsp
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %r14
leaq -0xd0(%rbp), %rsi
movq %rbx, %rdi
callq 0x1100
movq %r14, %rdi
callq 0x10d0
// File: /workspace/github_cpp_makefile_star2_O1/sile[P]mphf/mphf.cc
// Function: main
int main(int argc, char** argv) {
  if(argc != 2) {
    std::cerr << "Usage: mphf <index>" << std::endl;
    return 1;
  }

  const char* index_filepath = argv[1];
  
  MPHF::Hash hash(index_filepath);
  if(!hash) {
    std::cerr << "Can't open file: " << index_filepath << std::endl;
    return 1;
  }

  std::string line;

  while(std::getline(std::cin, line)) 
    std::cout << hash.mphf(line.c_str()) << std::endl;

  return 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
cmpl $0x2, %edi
jne 0x1363
movq 0x8(%rsi), %r14
leaq 0x20(%rsp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x149a
cmpq $-0x1, 0x8(%rbx)
je 0x13cb
leaq 0x10(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq $0x0, -0x8(%rbp)
movb $0x0, (%rbp)
movq 0x2d0a(%rip), %rbx      # 0x3fd8
movq %rsp, %r14
leaq 0x20(%rsp), %r15
movq 0x2ceb(%rip), %r12      # 0x3fc8
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10a0
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x1130
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
movq (%rsp), %r13
jne 0x13af
movq %r13, %rdi
callq 0x1040
movq %r15, %rdi
movq %r13, %rsi
movl %eax, %edx
callq 0x15f2
movl %eax, %esi
movq %r12, %rdi
callq 0x1060
movq %rax, %r13
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r13, %rdi
movl $0xa, %esi
callq 0x10a0
movsbl %al, %esi
movq %r13, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1070
jmp 0x12dd
movq 0x2c86(%rip), %rbx      # 0x3ff0
leaq 0xc93(%rip), %rsi       # 0x2004
movl $0x13, %edx
movq %rbx, %rdi
callq 0x10d0
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10a0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1070
movl $0x1, %ebx
jmp 0x1458
cmpq %rbp, %r13
je 0x13c4
movq 0x10(%rsp), %rsi
incq %rsi
movq %r13, %rdi
callq 0x10c0
xorl %ebx, %ebx
jmp 0x144e
movq 0x2c1e(%rip), %rbx      # 0x3ff0
leaq 0xc3f(%rip), %rsi       # 0x2018
movl $0x11, %edx
movq %rbx, %rdi
callq 0x10d0
testq %r14, %r14
je 0x1407
movq %r14, %rdi
callq 0x1040
movq 0x2bf6(%rip), %rdi      # 0x3ff0
movq %r14, %rsi
movq %rax, %rdx
callq 0x10d0
jmp 0x141e
movq (%rbx), %rax
movq -0x18(%rax), %rax
leaq (%rbx,%rax), %rdi
movl 0x20(%rbx,%rax), %esi
orl $0x1, %esi
callq 0x1100
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x10a0
movsbl %al, %esi
movq 0x2bb4(%rip), %rdi      # 0x3ff0
callq 0x1030
movl $0x1, %ebx
movq %rax, %rdi
callq 0x1070
leaq 0x20(%rsp), %rdi
callq 0x183a
movl %ebx, %eax
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
jmp 0x1487
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %rbp, %rdi
je 0x1487
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x10c0
leaq 0x20(%rsp), %rdi
callq 0x183a
movq %rbx, %rdi
callq 0x1110
nop
// File: /workspace/github_cpp_makefile_star2_O1/mattdibi[P]Programmatore-JTAG-per-Xilinx/main.cpp
// Function: SanitizeInput(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
void SanitizeInput(string& s)
{
   // Questa funzione permette la stampa sul terminale corretta dell'output dell'arduino
   for(int i=0; i<s.length(); i++)
      if(s[i]=='\t')
         s[i]='\n';
}

// Assembly:
cmpq $0x0, 0x8(%rdi)
je 0x4ad2
pushq %rbp
movq %rsp, %rbp
xorl %eax, %eax
movq (%rdi), %rcx
cmpb $0x9, (%rcx,%rax)
jne 0x4ac8
movb $0xa, (%rcx,%rax)
incq %rax
cmpq %rax, 0x8(%rdi)
ja 0x4abb
popq %rbp
retq
// File: /workspace/github_cpp_makefile_star2_O1/mattdibi[P]Programmatore-JTAG-per-Xilinx/main.cpp
// Function: ExtractInstruction[abi:cxx11](std::basic_ifstream<char, std::char_traits<char>>&)
vector<string> ExtractInstruction(ifstream& is)
{
   vector<string> instruction;
   char ch;
   int n=0;

   while(is.good()&&!is.eof())
   {
      n=0;
      string s="";

      ch=is.get();

      if(ch==EOF)
            continue;
      else if(ch=='/') // se è un commento ignoriamo tutto
      {
            is.ignore(100, '\n');
            continue;
      }
      else
      {
            // raccolgo i caratteri della riga finchè non incontro un \n o raggiungo la massima lunghezza della istruzione permessa
            do
            {
                  n++;
                  s+=ch;
                  ch=is.get();
            }while(ch != '\n' && n < INSTR_LENGTH);

            // se raggiungo la massima lunghezza della istruzione inserisco un \n come carattere finale
            if(n >= INSTR_LENGTH)
            {
                  s+=ch;
                  s+='\n';
            }
            
            // carico nel vettore la stringa così costruita
            instruction.push_back(s);
      }
   }
   
   return instruction;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x28, %rsp
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movq %rdi, -0x30(%rbp)
movq $0x0, 0x10(%rdi)
movq (%rsi), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x20(%rsi,%rax)
jne 0x4bd1
movq %rsi, %r14
leaq -0x40(%rbp), %r13
leaq 0x2569(%rip), %r15      # 0x707f
leaq -0x50(%rbp), %r12
movq %r13, -0x50(%rbp)
movq %r12, %rdi
movq %r15, %rsi
movq %r15, %rdx
callq 0x51c0
movq %r14, %rdi
callq 0x32b0
cmpb $0x2f, %al
je 0x4b97
movzbl %al, %ecx
cmpl $0xff, %ecx
je 0x4ba9
movl $0xffffffff, %ebx       # imm = 0xFFFFFFFF
movsbl %al, %esi
movq %r12, %rdi
callq 0x31f0
movq %r14, %rdi
callq 0x32b0
incl %ebx
cmpb $0xa, %al
je 0x4b69
cmpl $0xf9, %ebx
jb 0x4b48
cmpl $0xf9, %ebx
jb 0x4b89
movsbl %al, %esi
movq %r12, %rdi
callq 0x31f0
movq %r12, %rdi
movl $0xa, %esi
callq 0x31f0
movq -0x30(%rbp), %rdi
movq %r12, %rsi
callq 0x50da
jmp 0x4ba9
movl $0x64, %esi
movq %r14, %rdi
movl $0xa, %edx
callq 0x3160
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x4bbe
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x3250
movq (%r14), %rax
movq -0x18(%rax), %rax
cmpl $0x0, 0x20(%r14,%rax)
je 0x4b1a
movq -0x30(%rbp), %rax
addq $0x28, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
jmp 0x4c03
jmp 0x4beb
movq %rax, %r14
movq -0x50(%rbp), %rdi
cmpq %r13, %rdi
je 0x4c03
movq -0x40(%rbp), %rsi
incq %rsi
callq 0x3250
movq -0x30(%rbp), %rdi
callq 0x4fce
movq %r14, %rdi
callq 0x33e0
// File: /workspace/github_cpp_makefile_star2_O1/mattdibi[P]Programmatore-JTAG-per-Xilinx/main.cpp
// Function: isBitStreamInstruction(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
bool isBitStreamInstruction(string instr)
{
      string s = instr.substr(0, 100);

      istringstream iss(s);
      string tmp;
      long int n;

      iss >> tmp;

      if(tmp != "SDR")
            return false;

      iss >> n;

      if(n < 1000)
            return false;
      
      return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x1d0, %rsp            # imm = 0x1D0
movq %rdi, %rsi
leaq -0x58(%rbp), %rbx
movl $0x64, %ecx
movq %rbx, %rdi
xorl %edx, %edx
callq 0x3270
leaq -0x1d8(%rbp), %rdi
movq %rbx, %rsi
movl $0x8, %edx
callq 0x33b0
leaq -0x28(%rbp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq -0x1d8(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x32e0
leaq 0x297c(%rip), %rsi      # 0x75f3
leaq -0x38(%rbp), %rdi
callq 0x3080
testl %eax, %eax
je 0x4c88
xorl %ebx, %ebx
jmp 0x4ca3
leaq -0x1d8(%rbp), %rdi
leaq -0x18(%rbp), %rsi
callq 0x3260
cmpq $0x3e8, -0x18(%rbp)     # imm = 0x3E8
setge %bl
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x4cb8
movq -0x28(%rbp), %rsi
incq %rsi
callq 0x3250
movq 0x5301(%rip), %rsi      # 0x9fc0
leaq -0x1d8(%rbp), %rdi
callq 0x3320
leaq -0x160(%rbp), %rdi
callq 0x30a0
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4cf0
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x3250
movl %ebx, %eax
addq $0x1d0, %rsp            # imm = 0x1D0
popq %rbx
popq %r14
popq %rbp
retq
movq %rax, %rbx
jmp 0x4d3a
movq %rax, %rbx
movq -0x38(%rbp), %rdi
cmpq %r14, %rdi
je 0x4d1b
movq -0x28(%rbp), %rsi
incq %rsi
callq 0x3250
movq 0x529e(%rip), %rsi      # 0x9fc0
leaq -0x1d8(%rbp), %rdi
callq 0x3320
leaq -0x160(%rbp), %rdi
callq 0x30a0
leaq -0x48(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4d53
movq -0x48(%rbp), %rsi
incq %rsi
callq 0x3250
movq %rbx, %rdi
callq 0x33e0
// File: /workspace/github_cpp_makefile_star2_O1/mattdibi[P]Programmatore-JTAG-per-Xilinx/main.cpp
// Function: ExtractAnswer(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string ExtractAnswer(string line)
{
      istringstream iss(line);
      string str;
      iss >> str;
      iss >> str;
      iss >> str;

      return str;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $0x188, %rsp            # imm = 0x188
movq %rdi, %rbx
leaq -0x198(%rbp), %r14
movq %r14, %rdi
movl $0x8, %edx
callq 0x33b0
leaq 0x10(%rbx), %r15
movq %r15, (%rbx)
movq $0x0, 0x8(%rbx)
movb $0x0, 0x10(%rbx)
movq %r14, %rdi
movq %rbx, %rsi
callq 0x32e0
leaq -0x198(%rbp), %rdi
movq %rbx, %rsi
callq 0x32e0
leaq -0x198(%rbp), %rdi
movq %rbx, %rsi
callq 0x32e0
movq 0x5073(%rip), %rsi      # 0x9fc0
leaq -0x198(%rbp), %rdi
callq 0x3320
leaq -0x120(%rbp), %rdi
callq 0x30a0
movq %rbx, %rax
addq $0x188, %rsp            # imm = 0x188
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r14
movq (%rbx), %rdi
cmpq %r15, %rdi
je 0x4f8c
movq (%r15), %rsi
incq %rsi
callq 0x3250
movq 0x502d(%rip), %rsi      # 0x9fc0
leaq -0x198(%rbp), %rdi
callq 0x3320
leaq -0x120(%rbp), %rdi
callq 0x30a0
movq %r14, %rdi
callq 0x33e0