// File: hanhwi[P]SimPoint/analysiscode/Utilities.cpp
// Function: Utilities::loadAndProjectFVFile(FVParser&, Dataset const&, Dataset*)
void Utilities::loadAndProjectFVFile(FVParser &parser, 
                                     const Dataset &projection, 
                                     Dataset *result) {
    check(NULL != result, "Utilities::loadAndProjectFVFile() result is null");
    check(projection.numCols() == (*result).numCols(),
            "Utilities::loadAndProjectFVFile() dimensions are wrong");

    result->fill(0.0);

    list<FVParserToken> current_vector;
    double totalWeight = 0.0;
    vector<double> rowWeights(result->numRows());
    int numProjectedColumns = projection.numCols();
    int numProjectedRows = projection.numRows();
    int largestDimensionSeen = 0;

    while (parser.nextLine(&current_vector)) {
        int point = parser.currentLineNumber() - 1;
        if (point >= (int)result->numRows()) {
            check(false, "Utilities::loadAndProjectFVFile() more vectors than expected "
                    "(loading vector " + toString(point + 1) + " when expecting " 
                    + toString((int)result->numRows()) + ")");
        }

        // normalize the vector
        double sumVector = 0.0;
        list<FVParserToken>::iterator i;
        for (i = current_vector.begin(); i != current_vector.end(); i++) {
            sumVector += i->value;
        }

        rowWeights[point] = sumVector;
        totalWeight += sumVector;

        // multiply the row we just pulled from the parser by *each column*
        // of the projection matrix to obtain the row in the result.

        // fill the resulting vector with zeros
        (*result)[point].fill(0.0);

        // over all original dimensions (columns of the original vector, rows of
        // the projection matrix)
        for (i = current_vector.begin(); i != current_vector.end(); i++) { 
            int dim = i->dimension;
            double val = i->value / sumVector;
            if (dim > largestDimensionSeen) { largestDimensionSeen = dim; }
            if (dim < 1 || dim > numProjectedRows) {
                check(dim >= 1, "Utilities::loadAndProjectFVFile() dimension < 1");
                check(dim <= numProjectedRows,
                    "Utilities::loadAndProjectFVFile() expecting only " +
                    toString((int)numProjectedRows) +
                    " dimensions, but found dimension " +
                    toString((int)dim));
            }

            // project the row
            for (int projCol = 0; projCol < numProjectedColumns; projCol++) {
                // note that dimension is changed to be offset 0
                (*result)[point][projCol] += val * projection[dim - 1][projCol];
            }
        }
    }
    check(parser.currentLineNumber() == (int)result->numRows(),
            "Utilities::loadAndProjectFVFile() the number of vectors loaded "
            "disagrees with the number specified (expected " +
            toString((int)result->numRows()) + " but loaded " +
            toString((int)parser.currentLineNumber()) + ")");

    check(largestDimensionSeen == (int)numProjectedRows,
            "Utilities::loadAndProjectFVFile() the number of dimensions loaded "
            "disagrees with the number specified (expected " +
            toString((int)numProjectedRows) + " but loaded " +
            toString((int)largestDimensionSeen) + ")");

    // normalize the weights and put them in the dataset
    for (unsigned int row = 0; row < result->numRows(); row++) {
        result->setWeight(row, rowWeights[row] / totalWeight);
    }
}

// Assembly:
subq $0x4e8, %rsp            # imm = 0x4E8
movq %rdi, 0x4e0(%rsp)
movq %rsi, 0x4d8(%rsp)
movq %rdx, 0x4d0(%rsp)
movq 0x4d0(%rsp), %rax
testq %rax, %rax
setne %al
movb %al, 0xaf(%rsp)
leaq 0x4af(%rsp), %rdi
movq %rdi, 0xb0(%rsp)
callq 0x56a0
movq 0xb0(%rsp), %rdx
leaq 0x52b7(%rip), %rsi      # 0x368af
leaq 0x4b0(%rsp), %rdi
callq 0x74e0
jmp 0x31607
movb 0xaf(%rsp), %al
movzbl %al, %edi
andl $0x1, %edi
leaq 0x4b0(%rsp), %rsi
callq 0x7480
jmp 0x31623
leaq 0x4b0(%rsp), %rdi
callq 0x5788
leaq 0x4af(%rsp), %rdi
callq 0x53e0
movq 0x4d8(%rsp), %rdi
callq 0xc0d0
movl %eax, 0x98(%rsp)
movq 0x4d0(%rsp), %rdi
callq 0xc0d0
movl %eax, %ecx
movl 0x98(%rsp), %eax
subl %ecx, %eax
sete %al
movb %al, 0x9f(%rsp)
leaq 0x477(%rsp), %rdi
movq %rdi, 0xa0(%rsp)
callq 0x56a0
movq 0xa0(%rsp), %rdx
leaq 0x5249(%rip), %rsi      # 0x368e0
leaq 0x478(%rsp), %rdi
callq 0x74e0
jmp 0x316a6
movb 0x9f(%rsp), %al
movzbl %al, %edi
andl $0x1, %edi
leaq 0x478(%rsp), %rsi
callq 0x7480
jmp 0x316c2
leaq 0x478(%rsp), %rdi
callq 0x5788
leaq 0x477(%rsp), %rdi
callq 0x53e0
movq 0x4d0(%rsp), %rdi
xorps %xmm0, %xmm0
callq 0xb1e0
leaq 0x458(%rsp), %rdi
callq 0x32550
movq $0x0, 0x450(%rsp)
movq 0x4d0(%rsp), %rdi
callq 0xc0c0
movl %eax, 0x94(%rsp)
jmp 0x3171b
movl 0x94(%rsp), %eax
movl %eax, %eax
movq %rax, 0x80(%rsp)
leaq 0x437(%rsp), %rdi
movq %rdi, 0x88(%rsp)
callq 0x99c0
movq 0x80(%rsp), %rsi
movq 0x88(%rsp), %rdx
leaq 0x438(%rsp), %rdi
callq 0x99d0
jmp 0x31760
leaq 0x437(%rsp), %rdi
callq 0x9a50
movq 0x4d8(%rsp), %rdi
callq 0xc0d0
movl %eax, 0x7c(%rsp)
jmp 0x31780
movl 0x7c(%rsp), %eax
movl %eax, 0x430(%rsp)
movq 0x4d8(%rsp), %rdi
callq 0xc0c0
movl %eax, 0x78(%rsp)
jmp 0x3179e
movl 0x78(%rsp), %eax
movl %eax, 0x42c(%rsp)
movl $0x0, 0x428(%rsp)
movq 0x4e0(%rsp), %rdi
leaq 0x458(%rsp), %rsi
callq 0xe8a0
movb %al, 0x77(%rsp)
jmp 0x317cf
movb 0x77(%rsp), %al
testb $0x1, %al
jne 0x317dc
jmp 0x32032
movq 0x4e0(%rsp), %rdi
callq 0x32600
movl %eax, 0x70(%rsp)
jmp 0x317ef
movl 0x70(%rsp), %eax
decl %eax
movl %eax, 0x424(%rsp)
movl 0x424(%rsp), %eax
movl %eax, 0x68(%rsp)
movq 0x4d0(%rsp), %rdi
callq 0xc0c0
movl %eax, 0x6c(%rsp)
jmp 0x3181a
movl 0x68(%rsp), %eax
movl 0x6c(%rsp), %ecx
cmpl %ecx, %eax
jl 0x31b0a
movl 0x424(%rsp), %esi
incl %esi
leaq 0x380(%rsp), %rdi
callq 0x2fe20
jmp 0x31842
leaq 0x50ce(%rip), %rsi      # 0x36917
leaq 0x3a0(%rsp), %rdi
leaq 0x380(%rsp), %rdx
callq 0x2b830
jmp 0x31860
leaq 0x4eef(%rip), %rdx      # 0x36756
leaq 0x3c0(%rsp), %rdi
leaq 0x3a0(%rsp), %rsi
callq 0x7830
jmp 0x3187e
movq 0x4d0(%rsp), %rdi
callq 0xc0c0
movl %eax, 0x64(%rsp)
jmp 0x31891
movl 0x64(%rsp), %esi
leaq 0x360(%rsp), %rdi
callq 0x2fe20
jmp 0x318a4
leaq 0x3e0(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
leaq 0x360(%rsp), %rdx
callq 0x7740
jmp 0x318c3
leaq 0x1965(%rip), %rdx      # 0x3322f
leaq 0x400(%rsp), %rdi
leaq 0x3e0(%rsp), %rsi
callq 0x7830
jmp 0x318e1
xorl %edi, %edi
leaq 0x400(%rsp), %rsi
callq 0x7480
jmp 0x318f2
leaq 0x400(%rsp), %rdi
callq 0x5788
leaq 0x3e0(%rsp), %rdi
callq 0x5788
leaq 0x360(%rsp), %rdi
callq 0x5788
leaq 0x3c0(%rsp), %rdi
callq 0x5788
leaq 0x3a0(%rsp), %rdi
callq 0x5788
leaq 0x380(%rsp), %rdi
callq 0x5788
jmp 0x31b0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x3197c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x4b0(%rsp), %rdi
callq 0x5788
leaq 0x4af(%rsp), %rdi
callq 0x53e0
jmp 0x32539
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x319c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x478(%rsp), %rdi
callq 0x5788
leaq 0x477(%rsp), %rdi
callq 0x53e0
jmp 0x32539
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x3252c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x437(%rsp), %rdi
callq 0x9a50
jmp 0x3252c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x3251f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31af8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31aeb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31ade
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31ad1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31ac4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x400(%rsp), %rdi
callq 0x5788
leaq 0x3e0(%rsp), %rdi
callq 0x5788
leaq 0x360(%rsp), %rdi
callq 0x5788
leaq 0x3c0(%rsp), %rdi
callq 0x5788
leaq 0x3a0(%rsp), %rdi
callq 0x5788
leaq 0x380(%rsp), %rdi
callq 0x5788
jmp 0x3251f
xorps %xmm0, %xmm0
movsd %xmm0, 0x358(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x32620
leaq 0x458(%rsp), %rdi
callq 0x32560
movq %rax, 0x348(%rsp)
movq 0x348(%rsp), %rax
movq %rax, 0x350(%rsp)
leaq 0x458(%rsp), %rdi
callq 0xefe0
movq %rax, 0x340(%rsp)
leaq 0x350(%rsp), %rdi
leaq 0x340(%rsp), %rsi
callq 0x32590
testb $0x1, %al
jne 0x31b78
jmp 0x31bb5
leaq 0x350(%rsp), %rdi
callq 0x325b0
movsd 0x8(%rax), %xmm0
addsd 0x358(%rsp), %xmm0
movsd %xmm0, 0x358(%rsp)
leaq 0x350(%rsp), %rdi
xorl %esi, %esi
callq 0x325d0
movq %rax, 0x338(%rsp)
jmp 0x31b48
movsd 0x358(%rsp), %xmm0
movsd %xmm0, 0x58(%rsp)
movslq 0x424(%rsp), %rsi
leaq 0x438(%rsp), %rdi
callq 0x9ba0
movsd 0x58(%rsp), %xmm0
movsd %xmm0, (%rax)
movsd 0x358(%rsp), %xmm1
movsd 0x450(%rsp), %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, 0x450(%rsp)
movq 0x4d0(%rsp), %rdi
movslq 0x424(%rsp), %rsi
callq 0xc130
movq %rax, %rdi
xorps %xmm0, %xmm0
callq 0x8cf0
jmp 0x31c24
leaq 0x458(%rsp), %rdi
callq 0x32560
movq %rax, 0x330(%rsp)
movq 0x330(%rsp), %rax
movq %rax, 0x350(%rsp)
leaq 0x458(%rsp), %rdi
callq 0xefe0
movq %rax, 0x328(%rsp)
leaq 0x350(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x32590
testb $0x1, %al
jne 0x31c7c
jmp 0x3202d
leaq 0x350(%rsp), %rdi
callq 0x325b0
movl (%rax), %eax
movl %eax, 0x324(%rsp)
leaq 0x350(%rsp), %rdi
callq 0x325b0
movsd 0x8(%rax), %xmm0
divsd 0x358(%rsp), %xmm0
movsd %xmm0, 0x318(%rsp)
movl 0x324(%rsp), %eax
cmpl 0x428(%rsp), %eax
jle 0x31cd4
movl 0x324(%rsp), %eax
movl %eax, 0x428(%rsp)
cmpl $0x1, 0x324(%rsp)
jl 0x31cf2
movl 0x324(%rsp), %eax
cmpl 0x42c(%rsp), %eax
jle 0x31f56
movl 0x324(%rsp), %eax
testl %eax, %eax
setg %al
movb %al, 0x4f(%rsp)
leaq 0x2f7(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x56a0
movq 0x50(%rsp), %rdx
leaq 0x4c45(%rip), %rsi      # 0x36965
leaq 0x2f8(%rsp), %rdi
callq 0x74e0
jmp 0x31d2f
movb 0x4f(%rsp), %al
movzbl %al, %edi
andl $0x1, %edi
leaq 0x2f8(%rsp), %rsi
callq 0x7480
jmp 0x31d48
leaq 0x2f8(%rsp), %rdi
callq 0x5788
leaq 0x2f7(%rsp), %rdi
callq 0x53e0
movl 0x324(%rsp), %eax
movl 0x42c(%rsp), %esi
subl %esi, %eax
setle %al
movb %al, 0x4e(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x2fe20
jmp 0x31d88
leaq 0x4c06(%rip), %rsi      # 0x36995
leaq 0x290(%rsp), %rdi
leaq 0x270(%rsp), %rdx
callq 0x2b830
jmp 0x31da6
leaq 0x49e2(%rip), %rdx      # 0x3678f
leaq 0x2b0(%rsp), %rdi
leaq 0x290(%rsp), %rsi
callq 0x7830
jmp 0x31dc4
movl 0x324(%rsp), %esi
leaq 0x250(%rsp), %rdi
callq 0x2fe20
jmp 0x31dda
leaq 0x2d0(%rsp), %rdi
leaq 0x2b0(%rsp), %rsi
leaq 0x250(%rsp), %rdx
callq 0x7740
jmp 0x31df9
movb 0x4e(%rsp), %al
movzbl %al, %edi
andl $0x1, %edi
leaq 0x2d0(%rsp), %rsi
callq 0x7480
jmp 0x31e12
leaq 0x2d0(%rsp), %rdi
callq 0x5788
leaq 0x250(%rsp), %rdi
callq 0x5788
leaq 0x2b0(%rsp), %rdi
callq 0x5788
leaq 0x290(%rsp), %rdi
callq 0x5788
leaq 0x270(%rsp), %rdi
callq 0x5788
jmp 0x31f56
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31e8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x2f8(%rsp), %rdi
callq 0x5788
leaq 0x2f7(%rsp), %rdi
callq 0x53e0
jmp 0x3251f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31f44
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31f37
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31f2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x31f1d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x2d0(%rsp), %rdi
callq 0x5788
leaq 0x250(%rsp), %rdi
callq 0x5788
leaq 0x2b0(%rsp), %rdi
callq 0x5788
leaq 0x290(%rsp), %rdi
callq 0x5788
leaq 0x270(%rsp), %rdi
callq 0x5788
jmp 0x3251f
movl $0x0, 0x24c(%rsp)
movl 0x24c(%rsp), %eax
cmpl 0x430(%rsp), %eax
jge 0x3200f
movsd 0x318(%rsp), %xmm0
movsd %xmm0, 0x38(%rsp)
movq 0x4d8(%rsp), %rdi
movl 0x324(%rsp), %eax
subl $0x1, %eax
movslq %eax, %rsi
callq 0xc0f0
movq %rax, %rdi
movslq 0x24c(%rsp), %rsi
callq 0x9b80
movsd (%rax), %xmm0
movsd %xmm0, 0x40(%rsp)
movq 0x4d0(%rsp), %rdi
movslq 0x424(%rsp), %rsi
callq 0xc130
movq %rax, %rdi
movslq 0x24c(%rsp), %rsi
callq 0x9ba0
movsd 0x38(%rsp), %xmm0
movsd 0x40(%rsp), %xmm2
movsd (%rax), %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, (%rax)
movl 0x24c(%rsp), %eax
addl $0x1, %eax
movl %eax, 0x24c(%rsp)
jmp 0x31f61
jmp 0x32011
leaq 0x350(%rsp), %rdi
xorl %esi, %esi
callq 0x325d0
movq %rax, 0x240(%rsp)
jmp 0x31c49
jmp 0x317b4
movq 0x4e0(%rsp), %rdi
callq 0x32600
movl %eax, 0x34(%rsp)
jmp 0x32045
movq 0x4d0(%rsp), %rdi
callq 0xc0c0
movl %eax, 0x30(%rsp)
jmp 0x32058
movl 0x30(%rsp), %ecx
movl 0x34(%rsp), %eax
subl %ecx, %eax
sete %al
movb %al, 0x2b(%rsp)
movq 0x4d0(%rsp), %rdi
callq 0xc0c0
movl %eax, 0x2c(%rsp)
jmp 0x3207c
movl 0x2c(%rsp), %esi
leaq 0x1a0(%rsp), %rdi
callq 0x2fe20
jmp 0x3208f
leaq 0x4931(%rip), %rsi      # 0x369c7
leaq 0x1c0(%rsp), %rdi
leaq 0x1a0(%rsp), %rdx
callq 0x2b830
jmp 0x320ad
leaq 0x4787(%rip), %rdx      # 0x3683b
leaq 0x1e0(%rsp), %rdi
leaq 0x1c0(%rsp), %rsi
callq 0x7830
jmp 0x320cb
movq 0x4e0(%rsp), %rdi
callq 0x32600
movl %eax, 0x24(%rsp)
jmp 0x320de
movl 0x24(%rsp), %esi
leaq 0x180(%rsp), %rdi
callq 0x2fe20
jmp 0x320f1
leaq 0x200(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0x7740
jmp 0x32110
leaq 0x1118(%rip), %rdx      # 0x3322f
leaq 0x220(%rsp), %rdi
leaq 0x200(%rsp), %rsi
callq 0x7830
jmp 0x3212e
movb 0x2b(%rsp), %al
movzbl %al, %edi
andl $0x1, %edi
leaq 0x220(%rsp), %rsi
callq 0x7480
jmp 0x32147
leaq 0x220(%rsp), %rdi
callq 0x5788
leaq 0x200(%rsp), %rdi
callq 0x5788
leaq 0x180(%rsp), %rdi
callq 0x5788
leaq 0x1e0(%rsp), %rdi
callq 0x5788
leaq 0x1c0(%rsp), %rdi
callq 0x5788
leaq 0x1a0(%rsp), %rdi
callq 0x5788
movl 0x428(%rsp), %eax
movl 0x42c(%rsp), %esi
subl %esi, %eax
sete %al
movb %al, 0x23(%rsp)
leaq 0xe0(%rsp), %rdi
callq 0x2fe20
jmp 0x321bb
leaq 0x4873(%rip), %rsi      # 0x36a35
leaq 0x100(%rsp), %rdi
leaq 0xe0(%rsp), %rdx
callq 0x2b830
jmp 0x321d9
leaq 0x465b(%rip), %rdx      # 0x3683b
leaq 0x120(%rsp), %rdi
leaq 0x100(%rsp), %rsi
callq 0x7830
jmp 0x321f7
movl 0x428(%rsp), %esi
leaq 0xc0(%rsp), %rdi
callq 0x2fe20
jmp 0x3220d
leaq 0x140(%rsp), %rdi
leaq 0x120(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x7740
jmp 0x3222c
leaq 0xffc(%rip), %rdx       # 0x3322f
leaq 0x160(%rsp), %rdi
leaq 0x140(%rsp), %rsi
callq 0x7830
jmp 0x3224a
movb 0x23(%rsp), %al
movzbl %al, %edi
andl $0x1, %edi
leaq 0x160(%rsp), %rsi
callq 0x7480
jmp 0x32263
leaq 0x160(%rsp), %rdi
callq 0x5788
leaq 0x140(%rsp), %rdi
callq 0x5788
leaq 0xc0(%rsp), %rdi
callq 0x5788
leaq 0x120(%rsp), %rdi
callq 0x5788
leaq 0x100(%rsp), %rdi
callq 0x5788
leaq 0xe0(%rsp), %rdi
callq 0x5788
movl $0x0, 0xbc(%rsp)
movl 0xbc(%rsp), %eax
movl %eax, 0x18(%rsp)
movq 0x4d0(%rsp), %rdi
callq 0xc0c0
movl %eax, 0x1c(%rsp)
jmp 0x322da
movl 0x18(%rsp), %eax
movl 0x1c(%rsp), %ecx
cmpl %ecx, %eax
jae 0x324fd
movq 0x4d0(%rsp), %rax
movq %rax, 0x8(%rsp)
movl 0xbc(%rsp), %eax
movl %eax, 0x14(%rsp)
movl %eax, %esi
leaq 0x438(%rsp), %rdi
callq 0x9ba0
movq 0x8(%rsp), %rdi
movl 0x14(%rsp), %esi
movsd (%rax), %xmm0
movsd 0x450(%rsp), %xmm1
divsd %xmm1, %xmm0
callq 0xc150
jmp 0x32332
jmp 0x32334
movl 0xbc(%rsp), %eax
addl $0x1, %eax
movl %eax, 0xbc(%rsp)
jmp 0x322bc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x32413
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x32406
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x323f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x323ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x323df
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x220(%rsp), %rdi
callq 0x5788
leaq 0x200(%rsp), %rdi
callq 0x5788
leaq 0x180(%rsp), %rdi
callq 0x5788
leaq 0x1e0(%rsp), %rdi
callq 0x5788
leaq 0x1c0(%rsp), %rdi
callq 0x5788
leaq 0x1a0(%rsp), %rdi
callq 0x5788
jmp 0x3251f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x324ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x324e1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x324d4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x324c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
jmp 0x324ba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x4a0(%rsp)
movl %eax, 0x49c(%rsp)
leaq 0x160(%rsp), %rdi
callq 0x5788
leaq 0x140(%rsp), %rdi
callq 0x5788
leaq 0xc0(%rsp), %rdi
callq 0x5788
leaq 0x120(%rsp), %rdi
callq 0x5788
leaq 0x100(%rsp), %rdi
callq 0x5788
leaq 0xe0(%rsp), %rdi
callq 0x5788
jmp 0x3251f
leaq 0x438(%rsp), %rdi
callq 0x9960
leaq 0x458(%rsp), %rdi
callq 0x32610
addq $0x4e8, %rsp            # imm = 0x4E8
retq
leaq 0x438(%rsp), %rdi
callq 0x9960
leaq 0x458(%rsp), %rdi
callq 0x32610
movq 0x4a0(%rsp), %rdi
callq 0x5690
nopw %cs:(%rax,%rax)