// File: 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 %rbp
movq %rsp, %rbp
subq $0x130, %rsp            # imm = 0x130
movq %rdi, -0xe8(%rbp)
movq %rdi, %rax
movq %rax, -0x100(%rbp)
leaq 0x10(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq %rdi, -0x8(%rbp)
leaq -0x18(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x49e80
movq -0xf8(%rbp), %rsi
movq -0xe8(%rbp), %rdi
callq 0x49eb0
movq -0xf0(%rbp), %rax
movsd 0x18(%rax), %xmm0
movsd %xmm0, -0x20(%rbp)
movsd 0x20(%rax), %xmm0
movsd %xmm0, -0x28(%rbp)
movsd 0x8(%rax), %xmm0
movsd %xmm0, -0x30(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x6810
movsd %xmm0, -0x38(%rbp)
movsd -0x20(%rbp), %xmm0
callq 0x6120
movsd %xmm0, -0x40(%rbp)
movsd -0x28(%rbp), %xmm0
callq 0x6810
movsd %xmm0, -0x48(%rbp)
movsd -0x28(%rbp), %xmm0
callq 0x6120
movsd %xmm0, -0x50(%rbp)
movsd -0x30(%rbp), %xmm0
callq 0x6810
movsd %xmm0, -0x58(%rbp)
movsd -0x30(%rbp), %xmm0
callq 0x6120
movq -0xe8(%rbp), %rsi
movsd %xmm0, -0x60(%rbp)
movsd -0x38(%rbp), %xmm0
movsd -0x48(%rbp), %xmm2
movsd -0x40(%rbp), %xmm1
movsd -0x58(%rbp), %xmm3
mulsd %xmm3, %xmm1
movsd -0x50(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x88(%rbp)
leaq -0x80(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
leaq -0x88(%rbp), %rdx
callq 0x49f30
movq -0xe0(%rbp), %rdi
movaps 0x9d26(%rip), %xmm1     # 0x53040
movsd -0x38(%rbp), %xmm0
pxor %xmm1, %xmm0
movsd -0x50(%rbp), %xmm2
movsd -0x40(%rbp), %xmm1
movsd -0x58(%rbp), %xmm3
mulsd %xmm3, %xmm1
movsd -0x48(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
subsd %xmm1, %xmm0
movsd %xmm0, -0x90(%rbp)
leaq -0x90(%rbp), %rsi
callq 0x49f70
movq %rax, -0xd8(%rbp)
jmp 0x49364
movq -0xd8(%rbp), %rdi
movsd -0x40(%rbp), %xmm0
movsd -0x60(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xa8(%rbp)
leaq -0xa8(%rbp), %rsi
callq 0x49f70
movq %rax, -0x108(%rbp)
jmp 0x49396
movq -0x108(%rbp), %rdi
movsd -0x40(%rbp), %xmm0
movsd -0x48(%rbp), %xmm2
movsd -0x38(%rbp), %xmm1
movsd -0x58(%rbp), %xmm3
mulsd %xmm3, %xmm1
movsd -0x50(%rbp), %xmm3
mulsd %xmm3, %xmm1
mulsd %xmm2, %xmm0
addsd %xmm1, %xmm0
movsd %xmm0, -0xb0(%rbp)
leaq -0xb0(%rbp), %rsi
callq 0x49f70
movq %rax, -0x110(%rbp)
jmp 0x493e3
movq -0x110(%rbp), %rdi
movsd -0x40(%rbp), %xmm1
movsd -0x50(%rbp), %xmm2
movsd -0x38(%rbp), %xmm0
movsd -0x58(%rbp), %xmm3
mulsd %xmm3, %xmm0
movsd -0x48(%rbp), %xmm3
mulsd %xmm3, %xmm0
mulsd %xmm2, %xmm1
subsd %xmm1, %xmm0
movsd %xmm0, -0xb8(%rbp)
leaq -0xb8(%rbp), %rsi
callq 0x49f70
movq %rax, -0x118(%rbp)
jmp 0x49430
movq -0x118(%rbp), %rdi
movaps 0x9c02(%rip), %xmm1     # 0x53040
movsd -0x38(%rbp), %xmm0
pxor %xmm1, %xmm0
movsd -0x60(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xc0(%rbp)
leaq -0xc0(%rbp), %rsi
callq 0x49f70
movq %rax, -0x120(%rbp)
jmp 0x4946d
movq -0x120(%rbp), %rdi
movsd -0x60(%rbp), %xmm0
movsd -0x50(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xc8(%rbp)
leaq -0xc8(%rbp), %rsi
callq 0x49f70
movq %rax, -0x128(%rbp)
jmp 0x4949f
movq -0x128(%rbp), %rdi
movsd -0x60(%rbp), %xmm0
movsd -0x48(%rbp), %xmm1
mulsd %xmm1, %xmm0
movsd %xmm0, -0xd0(%rbp)
leaq -0xd0(%rbp), %rsi
callq 0x49f70
movq %rax, -0x130(%rbp)
jmp 0x494d1
movq -0x130(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x49f70
jmp 0x494e3
leaq -0x80(%rbp), %rdi
callq 0x4a0e0
movq -0x100(%rbp), %rax
addq $0x130, %rsp            # imm = 0x130
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x98(%rbp)
movl %eax, -0x9c(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x4a0e0
movq -0x98(%rbp), %rdi
callq 0x67a0
nopw %cs:(%rax,%rax)