// File: /workspace/github_cpp_makefile_star2_O3/istellartech[P]OpenTsiolkovsky/src/Orbit.cpp
// Function: dcmPQW2ECI(Orbit)
Matrix3d dcmPQW2ECI(Orbit element){
    Matrix3d dcmPQW2ECI_ = Matrix3d::Zero();
    double Omega = element.raan;
    double omega = element.arg_perigee;
    double i = element.inclination;
    double cO = cos(Omega); double sO = sin(Omega);
    double co = cos(omega); double so = sin(omega);
    double ci = cos(i);     double si = sin(i);
    dcmPQW2ECI_ << cO*co-sO*ci*so, -cO*so-sO*ci*co,  sO*si,
    sO*co+cO*ci*so, -sO*so+cO*ci*co, -cO*si,
    si*so,           si*co,           ci;
    return dcmPQW2ECI_;
}

// Assembly:
pushq %rbx
subq $0xc0, %rsp
movq %rdi, %rbx
xorps %xmm0, %xmm0
movups %xmm0, 0x38(%rdi)
movups %xmm0, 0x28(%rdi)
movups %xmm0, 0x18(%rdi)
movups %xmm0, 0x8(%rdi)
movsd 0xd8(%rsp), %xmm0
movsd %xmm0, (%rsp)
movsd 0xe8(%rsp), %xmm1
movsd %xmm1, 0x10(%rsp)
movsd 0xf0(%rsp), %xmm0
movsd %xmm0, 0x8(%rsp)
movaps %xmm1, %xmm0
callq 0x5690
movaps %xmm0, 0x20(%rsp)
movsd 0x10(%rsp), %xmm0
callq 0x50f0
movaps %xmm0, 0x30(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x5690
movsd %xmm0, 0x18(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x50f0
movsd %xmm0, 0x10(%rsp)
movsd (%rsp), %xmm0
callq 0x5690
movsd %xmm0, 0x8(%rsp)
movsd %xmm0, 0x48(%rsp)
movsd (%rsp), %xmm0
callq 0x50f0
movsd %xmm0, (%rsp)
movapd 0x30(%rsp), %xmm1
xorpd 0x4131(%rip), %xmm1     # 0x25f50
movsd 0x8(%rsp), %xmm0
movapd %xmm1, 0x70(%rsp)
mulsd %xmm1, %xmm0
movsd 0x10(%rsp), %xmm5
movapd %xmm5, %xmm1
mulsd %xmm0, %xmm1
movapd 0x20(%rsp), %xmm3
movapd %xmm3, %xmm2
movsd 0x18(%rsp), %xmm4
mulsd %xmm4, %xmm2
addsd %xmm1, %xmm2
leaq 0x50(%rsp), %rdi
movq %rbx, (%rdi)
movq $0x0, 0x8(%rdi)
movl $0x1, %eax
movq %rax, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movsd %xmm2, (%rbx)
mulsd %xmm4, %xmm0
movapd %xmm3, %xmm1
mulsd %xmm5, %xmm1
subsd %xmm1, %xmm0
leaq 0xb8(%rsp), %rsi
movsd %xmm0, (%rsi)
callq 0x22604
movapd 0x30(%rsp), %xmm0
mulsd (%rsp), %xmm0
leaq 0xb0(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x22604
movsd 0x8(%rsp), %xmm1
mulsd 0x20(%rsp), %xmm1
movsd 0x10(%rsp), %xmm0
movsd %xmm1, 0x8(%rsp)
mulsd %xmm1, %xmm0
movapd 0x30(%rsp), %xmm1
mulsd 0x18(%rsp), %xmm1
addsd %xmm0, %xmm1
leaq 0xa8(%rsp), %rsi
movsd %xmm1, (%rsi)
movq %rax, %rdi
callq 0x22604
movsd 0x8(%rsp), %xmm1
mulsd 0x18(%rsp), %xmm1
movapd 0x70(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
addsd %xmm1, %xmm0
leaq 0xa0(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x22604
movapd 0x20(%rsp), %xmm0
xorpd 0x401c(%rip), %xmm0     # 0x25f50
mulsd (%rsp), %xmm0
leaq 0x98(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x22604
movsd 0x10(%rsp), %xmm0
mulsd (%rsp), %xmm0
leaq 0x90(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x22604
movsd 0x18(%rsp), %xmm0
mulsd (%rsp), %xmm0
leaq 0x88(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x22604
leaq 0x48(%rsp), %rsi
movq %rax, %rdi
callq 0x22604
movq 0x68(%rsp), %rax
addq 0x58(%rsp), %rax
cmpq $0x3, %rax
jne 0x21fe8
cmpq $0x3, 0x60(%rsp)
jne 0x21fe8
movq %rbx, %rax
addq $0xc0, %rsp
popq %rbx
retq
jmp 0x21fc8
jmp 0x21fc8
jmp 0x21fc8
jmp 0x21fc8
jmp 0x21fc8
jmp 0x21fc8
movq 0x68(%rsp), %rcx
addq 0x58(%rsp), %rcx
cmpq $0x3, %rcx
jne 0x21fe8
cmpq $0x3, 0x60(%rsp)
jne 0x21fe8
movq %rax, %rdi
callq 0x5650
leaq 0x52e5(%rip), %rdi      # 0x272d4
leaq 0x5365(%rip), %rsi      # 0x2735b
leaq 0x628b(%rip), %rcx      # 0x28288
movl $0x6a, %edx
callq 0x5250