// File: /workspace/github_cpp_makefile_star2_O2/XuhuiSun95[P]My-OpenGL/myGL.cpp
// Function: myRotated(double, double, double, double)
void myRotated(double angle, double x, double y, double z){
    double l = sqrt(x * x + y * y + z * z);
    x /= l;
    y /= l;
    z /= l;
    double c = cos(angle * PI / 180);
    double s = sin(angle * PI / 180);
    double matrix[4][4], omatrix[4][4];
    matrix[0][0] = x*x*(1-c)+c; matrix[0][1] = x*y*(1-c)-z*s; matrix[0][2] = x*z*(1-c)+y*s; matrix[0][3] = 0;
    matrix[1][0] = y*x*(1-c)+z*s; matrix[1][1] = y*y*(1-c)+c; matrix[1][2] = y*z*(1-c)-x*s; matrix[1][3] = 0;
    matrix[2][0] = x*z*(1-c)-y*s; matrix[2][1] = y*z*(1-c)+x*s; matrix[2][2] = z*z*(1-c)+c; matrix[2][3] = 0;
    matrix[3][0] = 0; matrix[3][1] = 0; matrix[3][2] = 0; matrix[3][3] = 1;
    multiMatrix(modelMatrix, matrix, omatrix);
    for(int i = 0; i < 4; i ++){
        for(int j = 0; j < 4; j ++)
            modelMatrix[i][j] = omatrix[i][j];
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r14
pushq %rbx
subq $0x130, %rsp            # imm = 0x130
movapd %xmm2, %xmm6
movapd %xmm2, %xmm4
mulsd %xmm2, %xmm6
movapd %xmm1, %xmm5
mulsd %xmm1, %xmm5
addsd %xmm6, %xmm5
movapd %xmm3, %xmm2
mulsd %xmm3, %xmm3
addsd %xmm5, %xmm3
sqrtsd %xmm3, %xmm3
divsd %xmm3, %xmm1
movsd %xmm1, -0x28(%rbp)
divsd %xmm3, %xmm4
movsd %xmm4, -0x38(%rbp)
divsd %xmm3, %xmm2
movsd %xmm2, -0x30(%rbp)
mulsd 0x2b85(%rip), %xmm0     # 0x6340
divsd 0x2a3d(%rip), %xmm0     # 0x6200
movsd %xmm0, -0x18(%rbp)
callq 0x1170
movsd %xmm0, -0x20(%rbp)
movsd -0x18(%rbp), %xmm0
callq 0x1050
movsd -0x28(%rbp), %xmm5
movapd %xmm5, %xmm2
mulsd %xmm5, %xmm2
movsd 0x283f(%rip), %xmm1     # 0x6030
movsd -0x20(%rbp), %xmm10
subsd %xmm10, %xmm1
mulsd %xmm1, %xmm2
addsd %xmm10, %xmm2
leaq -0x140(%rbp), %rsi
movsd %xmm2, (%rsi)
movapd %xmm5, %xmm2
movsd -0x38(%rbp), %xmm6
mulsd %xmm6, %xmm2
movsd -0x30(%rbp), %xmm7
movapd %xmm7, %xmm3
mulsd %xmm0, %xmm3
mulsd %xmm1, %xmm2
movapd %xmm2, %xmm4
subsd %xmm3, %xmm4
movsd %xmm4, 0x8(%rsi)
movapd %xmm5, %xmm4
movapd %xmm5, %xmm8
mulsd %xmm7, %xmm4
movapd %xmm6, %xmm5
movapd %xmm6, %xmm9
mulsd %xmm0, %xmm5
mulsd %xmm1, %xmm4
movapd %xmm4, %xmm6
addsd %xmm5, %xmm6
movsd %xmm6, 0x10(%rsi)
andq $0x0, 0x18(%rsi)
addsd %xmm3, %xmm2
movsd %xmm2, 0x20(%rsi)
movapd %xmm9, %xmm2
mulsd %xmm9, %xmm2
mulsd %xmm1, %xmm2
addsd %xmm10, %xmm2
movsd %xmm2, 0x28(%rsi)
movapd %xmm9, %xmm2
mulsd %xmm7, %xmm2
movapd %xmm8, %xmm3
mulsd %xmm0, %xmm3
mulsd %xmm1, %xmm2
movapd %xmm2, %xmm0
subsd %xmm3, %xmm0
movsd %xmm0, 0x30(%rsi)
andq $0x0, 0x38(%rsi)
subsd %xmm5, %xmm4
movsd %xmm4, 0x40(%rsi)
addsd %xmm3, %xmm2
movsd %xmm2, 0x48(%rsi)
movapd %xmm7, %xmm0
mulsd %xmm7, %xmm0
mulsd %xmm1, %xmm0
addsd %xmm10, %xmm0
movsd %xmm0, 0x50(%rsi)
xorpd %xmm0, %xmm0
movupd %xmm0, 0x58(%rsi)
movupd %xmm0, 0x68(%rsi)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x78(%rsi)
leaq 0x5861(%rip), %rbx      # 0x9160
leaq -0xc0(%rbp), %r14
movq %rbx, %rdi
movq %r14, %rdx
callq 0x490c
xorl %eax, %eax
cmpq $0x4, %rax
je 0x393e
xorl %ecx, %ecx
cmpq $0x4, %rcx
je 0x3931
movsd (%r14,%rcx,8), %xmm0
movsd %xmm0, (%rbx,%rcx,8)
incq %rcx
jmp 0x391b
incq %rax
addq $0x20, %r14
addq $0x20, %rbx
jmp 0x3913
addq $0x130, %rsp            # imm = 0x130
popq %rbx
popq %r14
popq %rbp
retq