// File: /workspace/github_cpp_makefile_star2_O3/srajangarg[P]raytracer/src/core/SceneData.hpp
// Function: Rotate::getMatrix(int)
Mat4 getMatrix(int time)
    {
      Vec3 ax;

      if (axis[2] == NULL) // 2D
      {
        ax = Vec3(0, 0, 1);
      }
      else
      {
        ax = Vec3(axis[0]->getValue(time),
                  axis[1]->getValue(time),
                  axis[2]->getValue(time));
      }

      return rotation3D(ax, angle->getValue(time));
    }

// Assembly:
pushq %r14
pushq %rbx
subq $0x48, %rsp
movq %rsi, %r14
movq %rdi, %rbx
cmpq $0x0, 0x20(%rsi)
je 0xb5d0
movq 0x10(%r14), %rdi
cvtsi2sd %edx, %xmm0
movsd %xmm0, (%rsp)
movq (%rdi), %rax
callq *0x8(%rax)
movapd %xmm0, 0x10(%rsp)
movq 0x18(%r14), %rdi
movq (%rdi), %rax
movsd (%rsp), %xmm0
callq *0x8(%rax)
movaps %xmm0, 0x20(%rsp)
movq 0x20(%r14), %rdi
movq (%rdi), %rax
movsd (%rsp), %xmm0
callq *0x8(%rax)
movsd (%rsp), %xmm1
movaps %xmm0, 0x30(%rsp)
movaps 0x10(%rsp), %xmm0
unpcklpd 0x20(%rsp), %xmm0       # xmm0 = xmm0[0],mem[0]
movaps %xmm0, 0x10(%rsp)
jmp 0xb5e9
cvtsi2sd %edx, %xmm1
xorps %xmm0, %xmm0
movaps %xmm0, 0x10(%rsp)
movsd 0x1fb64(%rip), %xmm0    # 0x2b148
movaps %xmm0, 0x30(%rsp)
movq 0x8(%r14), %rdi
movq (%rdi), %rax
movapd %xmm1, %xmm0
callq *0x8(%rax)
mulsd 0x1fb51(%rip), %xmm0    # 0x2b150
divsd 0x1fb51(%rip), %xmm0    # 0x2b158
movsd %xmm0, 0x20(%rsp)
callq 0x4600
movapd %xmm0, (%rsp)
movsd 0x20(%rsp), %xmm0
callq 0x40d0
movsd 0x1fb1e(%rip), %xmm1    # 0x2b148
movapd %xmm1, %xmm2
movapd (%rsp), %xmm7
subsd %xmm7, %xmm2
movapd 0x10(%rsp), %xmm8
movapd %xmm8, %xmm3
mulpd %xmm8, %xmm3
unpckhpd %xmm3, %xmm3            # xmm3 = xmm3[1,1]
movapd %xmm8, %xmm4
mulsd %xmm8, %xmm4
addsd %xmm3, %xmm4
movapd 0x30(%rsp), %xmm11
movapd %xmm11, %xmm3
mulsd %xmm11, %xmm3
addsd %xmm4, %xmm3
sqrtsd %xmm3, %xmm3
divsd %xmm3, %xmm1
mulsd %xmm1, %xmm11
movapd 0x1fadc(%rip), %xmm3    # 0x2b160
xorpd %xmm0, %xmm3
movapd %xmm11, %xmm6
mulsd %xmm3, %xmm6
movapd %xmm11, %xmm5
mulsd %xmm0, %xmm5
movapd %xmm11, %xmm4
mulsd %xmm2, %xmm4
mulsd %xmm11, %xmm4
addsd %xmm7, %xmm4
unpcklpd %xmm1, %xmm1            # xmm1 = xmm1[0,0]
mulpd %xmm8, %xmm1
movapd %xmm7, %xmm8
movapd %xmm7, %xmm12
unpcklpd %xmm6, %xmm8            # xmm8 = xmm8[0],xmm6[0]
movapd %xmm1, %xmm6
unpckhpd %xmm1, %xmm6            # xmm6 = xmm6[1],xmm1[1]
movapd %xmm6, %xmm7
mulsd %xmm0, %xmm7
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
mulpd %xmm1, %xmm2
movapd %xmm2, %xmm9
mulsd %xmm11, %xmm9
mulpd %xmm2, %xmm6
movapd %xmm2, %xmm10
unpckhpd %xmm2, %xmm10           # xmm10 = xmm10[1],xmm2[1]
mulsd %xmm11, %xmm10
unpcklpd %xmm11, %xmm11          # xmm11 = xmm11[0,0]
mulpd %xmm2, %xmm11
unpcklpd %xmm2, %xmm2            # xmm2 = xmm2[0,0]
mulpd %xmm1, %xmm2
addpd %xmm8, %xmm2
movapd %xmm1, %xmm8
mulsd %xmm0, %xmm8
xorl %eax, %eax
movq %rax, 0x18(%rbx)
addsd %xmm7, %xmm9
unpcklpd %xmm12, %xmm5           # xmm5 = xmm5[0],xmm12[0]
addpd %xmm5, %xmm6
subsd %xmm8, %xmm10
movupd %xmm2, (%rbx)
movsd %xmm9, 0x10(%rbx)
movupd %xmm6, 0x20(%rbx)
movsd %xmm10, 0x30(%rbx)
movq %rax, 0x38(%rbx)
unpcklpd %xmm0, %xmm3            # xmm3 = xmm3[0],xmm0[0]
shufpd $0x1, %xmm1, %xmm1      # xmm1 = xmm1[1,0]
mulpd %xmm3, %xmm1
addpd %xmm1, %xmm11
movupd %xmm11, 0x40(%rbx)
movsd %xmm4, 0x50(%rbx)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x58(%rbx)
movupd %xmm0, 0x68(%rbx)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x78(%rbx)
movq %rbx, %rax
addq $0x48, %rsp
popq %rbx
popq %r14
retq