// File: /workspace/github_cpp_makefile_star2_O1/mortennobel[P]glMatrix-vs-GLM-Benchmark/main.cpp
// Function: testVectorTransformation(long)
double testVectorTransformation(long count){
    m4 m1 = createRandomMatrix();
    v4 v1 = v4(1,2,3,1);
    t.start();
    for (int i = 0; i < count; i++) {
        v1 = m1*v1;
    }
    t.stop();
    if (rand()==0){ // force compiler to keep input
        std::cout<<v1[rand()%4]<<std::endl;
    }
    return t.getElapsedTimeInMilliSec();
}

// Assembly:
pushq %rbx
subq $0x80, %rsp
movq %rdi, %rbx
leaq 0x40(%rsp), %rdi
callq 0x209d
movaps 0x1c13(%rip), %xmm0     # 0x5090
movups %xmm0, 0x30(%rsp)
leaq 0x3c57(%rip), %rdi      # 0x70e0
callq 0x12d4
movss 0x30(%rsp), %xmm0
movss 0x34(%rsp), %xmm9
testq %rbx, %rbx
jle 0x3620
movss 0x40(%rsp), %xmm1
movss %xmm1, 0x2c(%rsp)
movss 0x44(%rsp), %xmm1
movss %xmm1, 0x28(%rsp)
movss 0x48(%rsp), %xmm1
movss %xmm1, 0x24(%rsp)
movss 0x4c(%rsp), %xmm1
movss %xmm1, 0x20(%rsp)
movss 0x50(%rsp), %xmm1
movss %xmm1, 0x1c(%rsp)
movss 0x54(%rsp), %xmm1
movss %xmm1, 0x18(%rsp)
movss 0x58(%rsp), %xmm1
movss %xmm1, 0x14(%rsp)
movss 0x5c(%rsp), %xmm1
movss %xmm1, 0x10(%rsp)
movss 0x60(%rsp), %xmm1
movss %xmm1, 0xc(%rsp)
movss 0x64(%rsp), %xmm11
movss 0x68(%rsp), %xmm12
movss 0x6c(%rsp), %xmm13
movss 0x70(%rsp), %xmm14
movss 0x74(%rsp), %xmm15
movss 0x78(%rsp), %xmm1
movaps %xmm9, %xmm3
movss 0x1adb(%rip), %xmm6     # 0x5020
movss 0x1b0b(%rip), %xmm4     # 0x5058
movss 0x7c(%rsp), %xmm2
movaps %xmm0, %xmm5
mulss 0x2c(%rsp), %xmm5
movaps %xmm0, %xmm7
mulss 0x28(%rsp), %xmm7
movaps %xmm0, %xmm9
mulss 0x24(%rsp), %xmm9
mulss 0x20(%rsp), %xmm0
movaps %xmm3, %xmm8
mulss 0x1c(%rsp), %xmm8
addss %xmm5, %xmm8
movaps %xmm3, %xmm5
mulss 0x18(%rsp), %xmm5
addss %xmm7, %xmm5
movaps %xmm3, %xmm7
mulss 0x14(%rsp), %xmm7
addss %xmm9, %xmm7
mulss 0x10(%rsp), %xmm3
addss %xmm0, %xmm3
movaps %xmm4, %xmm9
mulss 0xc(%rsp), %xmm9
movaps %xmm6, %xmm0
mulss %xmm14, %xmm0
addss %xmm9, %xmm0
movaps %xmm4, %xmm10
mulss %xmm11, %xmm10
addss %xmm8, %xmm0
movaps %xmm6, %xmm9
mulss %xmm15, %xmm9
addss %xmm10, %xmm9
movaps %xmm4, %xmm8
mulss %xmm12, %xmm8
addss %xmm5, %xmm9
movaps %xmm6, %xmm5
mulss %xmm1, %xmm5
addss %xmm8, %xmm5
addss %xmm7, %xmm5
mulss %xmm13, %xmm4
mulss %xmm2, %xmm6
addss %xmm4, %xmm6
addss %xmm3, %xmm6
movaps %xmm9, %xmm3
movaps %xmm5, %xmm4
decq %rbx
jne 0x3553
jmp 0x3630
movss 0x1a30(%rip), %xmm5     # 0x5058
movss 0x19f0(%rip), %xmm6     # 0x5020
movss %xmm0, 0x30(%rsp)
movss %xmm9, 0x34(%rsp)
movss %xmm5, 0x38(%rsp)
movss %xmm6, 0x3c(%rsp)
leaq 0x3a90(%rip), %rdi      # 0x70e0
callq 0x12e6
callq 0x1040
testl %eax, %eax
jne 0x36b3
callq 0x1040
leal 0x3(%rax), %ecx
testl %eax, %eax
cmovnsl %eax, %ecx
andl $-0x4, %ecx
subl %ecx, %eax
js 0x36c7
movl %eax, %eax
xorps %xmm0, %xmm0
cvtss2sd 0x30(%rsp,%rax,4), %xmm0
movq 0x3954(%rip), %rdi      # 0x6fd8
callq 0x1110
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x10d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x1030
movq %rax, %rdi
callq 0x1070
leaq 0x3a26(%rip), %rdi      # 0x70e0
addq $0x80, %rsp
popq %rbx
jmp 0x1350
leaq 0x1ac9(%rip), %rdi      # 0x5197
leaq 0x1afa(%rip), %rsi      # 0x51cf
leaq 0x1b0e(%rip), %rcx      # 0x51ea
movl $0x2c, %edx
callq 0x1060