// File: /workspace/github_cpp_makefile_star2_O1/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 %r14
pushq %rbx
subq $0xa8, %rsp
movq %rdi, %rbx
xorl %r14d, %r14d
movq %r14, 0x40(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x30(%rdi)
movups %xmm0, 0x20(%rdi)
movups %xmm0, 0x10(%rdi)
movups %xmm0, (%rdi)
movsd 0xc8(%rsp), %xmm0
movsd %xmm0, (%rsp)
movsd 0xd8(%rsp), %xmm1
movsd %xmm1, 0x10(%rsp)
movsd 0xe0(%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, 0x10(%rsp)
movsd 0x8(%rsp), %xmm0
callq 0x50f0
movsd %xmm0, 0x8(%rsp)
movsd (%rsp), %xmm0
callq 0x5690
movsd %xmm0, 0x18(%rsp)
movsd (%rsp), %xmm0
callq 0x50f0
movsd %xmm0, (%rsp)
movapd 0x30(%rsp), %xmm1
xorpd 0x32c5(%rip), %xmm1     # 0x27020
movsd 0x18(%rsp), %xmm0
movapd %xmm1, 0x60(%rsp)
mulsd %xmm1, %xmm0
movsd 0x8(%rsp), %xmm5
movapd %xmm5, %xmm1
mulsd %xmm0, %xmm1
movapd 0x20(%rsp), %xmm3
movapd %xmm3, %xmm2
movsd 0x10(%rsp), %xmm4
mulsd %xmm4, %xmm2
addsd %xmm1, %xmm2
leaq 0x40(%rsp), %rdi
movq %rbx, (%rdi)
movq %r14, 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 0xa0(%rsp), %rsi
movsd %xmm0, (%rsi)
callq 0x2457a
movapd 0x30(%rsp), %xmm0
mulsd (%rsp), %xmm0
leaq 0x98(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x2457a
movsd 0x18(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
mulsd 0x8(%rsp), %xmm0
movapd 0x30(%rsp), %xmm1
mulsd 0x10(%rsp), %xmm1
addsd %xmm0, %xmm1
leaq 0x90(%rsp), %rsi
movsd %xmm1, (%rsi)
movq %rax, %rdi
callq 0x2457a
movsd 0x18(%rsp), %xmm0
mulsd 0x20(%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movapd 0x60(%rsp), %xmm1
mulsd 0x8(%rsp), %xmm1
addsd %xmm0, %xmm1
leaq 0x88(%rsp), %rsi
movsd %xmm1, (%rsi)
movq %rax, %rdi
callq 0x2457a
movapd 0x20(%rsp), %xmm0
xorpd 0x31b8(%rip), %xmm0     # 0x27020
mulsd (%rsp), %xmm0
leaq 0x80(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x2457a
movsd 0x8(%rsp), %xmm0
mulsd (%rsp), %xmm0
leaq 0x78(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x2457a
movsd 0x10(%rsp), %xmm0
mulsd (%rsp), %xmm0
leaq 0x70(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x2457a
leaq 0x18(%rsp), %rsi
movq %rax, %rdi
callq 0x2457a
movq 0x58(%rsp), %rax
addq 0x48(%rsp), %rax
cmpq $0x3, %rax
jne 0x23f18
cmpq $0x3, 0x50(%rsp)
jne 0x23f18
movq %rbx, %rax
addq $0xa8, %rsp
popq %rbx
popq %r14
retq
jmp 0x23ef8
jmp 0x23ef8
jmp 0x23ef8
jmp 0x23ef8
jmp 0x23ef8
jmp 0x23ef8
movq 0x58(%rsp), %rcx
addq 0x48(%rsp), %rcx
cmpq $0x3, %rcx
jne 0x23f18
cmpq $0x3, 0x50(%rsp)
jne 0x23f18
movq %rax, %rdi
callq 0x5650
leaq 0x52b5(%rip), %rdi      # 0x291d4
leaq 0x5335(%rip), %rsi      # 0x2925b
leaq 0x620b(%rip), %rcx      # 0x2a138
movl $0x6a, %edx
callq 0x5250