// File: /workspace/github_cpp_makefile_star2_O3/sus304[P]ForRocket/src/environment/coordinate.cpp
// Function: forrocket::Coordinate::setNED2Body(Eigen::Matrix<double, 4, 1, 0, 4, 1>)
void forrocket::Coordinate::setNED2Body(const Eigen::Vector4d quat) {
    double q0 = quat(0);
    double q1 = quat(1);
    double q2 = quat(2);
    double q3 = quat(3);
    dcm.NED2body << q0*q0 - q1*q1 - q2*q2 + q3*q3, 2.0 * (q0 * q1 + q2 * q3)    , 2.0 * (q0 * q2 - q1 * q3),
                    2.0 * (q0 * q1 - q2 * q3)    , q1*q1 - q0*q0 - q2*q2 + q3*q3, 2.0 * (q1 * q2 + q0 * q3),
                    2.0 * (q0 * q2 + q1 * q3)    , 2.0 * (q1 * q2 - q0 * q3)    , q2*q2 - q0*q0 - q1*q1 + q3*q3;
    dcm.body2NED = dcm.NED2body.transpose();
}

// Assembly:
pushq %rbx
subq $0x100, %rsp            # imm = 0x100
movq %rdi, %rbx
movsd (%rsi), %xmm2
movsd 0x8(%rsi), %xmm4
movsd 0x10(%rsi), %xmm3
movsd 0x18(%rsi), %xmm5
leaq 0xd0(%rdi), %rax
movapd %xmm4, %xmm1
mulsd %xmm4, %xmm1
movapd %xmm2, %xmm0
mulsd %xmm2, %xmm0
movapd %xmm1, 0xa0(%rsp)
subsd %xmm1, %xmm0
movapd %xmm3, %xmm1
mulsd %xmm3, %xmm1
movapd %xmm1, 0x70(%rsp)
subsd %xmm1, %xmm0
movapd %xmm5, %xmm1
mulsd %xmm5, %xmm1
movsd %xmm1, 0x20(%rsp)
addsd %xmm1, %xmm0
leaq 0x50(%rsp), %rdi
movq %rax, (%rdi)
movq $0x0, 0x8(%rdi)
movl $0x1, %eax
movq %rax, 0x10(%rdi)
movq %rax, 0x18(%rdi)
movsd %xmm0, 0xd0(%rbx)
movapd %xmm3, 0x10(%rsp)
movsd %xmm5, 0x28(%rsp)
mulsd %xmm5, %xmm3
movapd %xmm2, (%rsp)
movapd %xmm2, %xmm0
movapd %xmm4, 0x40(%rsp)
mulsd %xmm4, %xmm0
movapd %xmm0, 0x30(%rsp)
movapd %xmm3, 0xb0(%rsp)
addsd %xmm3, %xmm0
addsd %xmm0, %xmm0
leaq 0xf8(%rsp), %rsi
movsd %xmm0, (%rsi)
callq 0x16ca8
movapd 0x40(%rsp), %xmm1
mulsd 0x28(%rsp), %xmm1
movapd (%rsp), %xmm0
mulsd 0x10(%rsp), %xmm0
movapd %xmm0, 0x90(%rsp)
movapd %xmm1, 0x80(%rsp)
subsd %xmm1, %xmm0
addsd %xmm0, %xmm0
leaq 0xf0(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x16ca8
movapd 0x30(%rsp), %xmm0
subsd 0xb0(%rsp), %xmm0
addsd %xmm0, %xmm0
leaq 0xe8(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x16ca8
movapd 0x10(%rsp), %xmm3
movapd %xmm3, %xmm0
xorpd 0x24b1e(%rip), %xmm0    # 0x3a710
movapd 0x24b16(%rip), %xmm2    # 0x3a710
movapd (%rsp), %xmm1
xorpd %xmm1, %xmm2
mulsd %xmm1, %xmm2
movapd 0xa0(%rsp), %xmm1
movapd %xmm2, 0x30(%rsp)
addsd %xmm2, %xmm1
mulsd %xmm3, %xmm0
addsd %xmm1, %xmm0
addsd 0x20(%rsp), %xmm0
leaq 0xe0(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x16ca8
movapd (%rsp), %xmm1
mulsd 0x28(%rsp), %xmm1
movapd 0x10(%rsp), %xmm0
mulsd 0x40(%rsp), %xmm0
movapd %xmm0, 0x10(%rsp)
movapd %xmm1, (%rsp)
addsd %xmm1, %xmm0
addsd %xmm0, %xmm0
leaq 0xd8(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x16ca8
movapd 0x90(%rsp), %xmm0
addsd 0x80(%rsp), %xmm0
addsd %xmm0, %xmm0
leaq 0xd0(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x16ca8
movapd 0x10(%rsp), %xmm0
subsd (%rsp), %xmm0
addsd %xmm0, %xmm0
leaq 0xc8(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x16ca8
movapd 0x40(%rsp), %xmm0
movapd 0x24a3b(%rip), %xmm2    # 0x3a710
xorpd %xmm0, %xmm2
movapd 0x70(%rsp), %xmm1
addsd 0x30(%rsp), %xmm1
mulsd %xmm0, %xmm2
addsd %xmm1, %xmm2
movsd 0x20(%rsp), %xmm0
addsd %xmm2, %xmm0
leaq 0xc0(%rsp), %rsi
movsd %xmm0, (%rsi)
movq %rax, %rdi
callq 0x16ca8
movq 0x68(%rsp), %rax
addq 0x58(%rsp), %rax
cmpq $0x3, %rax
jne 0x15df2
cmpq $0x3, 0x60(%rsp)
jne 0x15df2
movsd 0xd0(%rbx), %xmm0
movsd 0xd8(%rbx), %xmm1
movsd %xmm0, 0x160(%rbx)
movsd 0xe8(%rbx), %xmm0
movsd %xmm0, 0x168(%rbx)
movsd 0x100(%rbx), %xmm0
movsd %xmm0, 0x170(%rbx)
movsd %xmm1, 0x178(%rbx)
movsd 0xf0(%rbx), %xmm0
movsd %xmm0, 0x180(%rbx)
movsd 0x108(%rbx), %xmm0
movsd %xmm0, 0x188(%rbx)
movsd 0xe0(%rbx), %xmm0
movsd %xmm0, 0x190(%rbx)
movsd 0xf8(%rbx), %xmm0
movsd %xmm0, 0x198(%rbx)
movsd 0x110(%rbx), %xmm0
movsd %xmm0, 0x1a0(%rbx)
addq $0x100, %rsp            # imm = 0x100
popq %rbx
retq
jmp 0x15dd2
jmp 0x15dd2
jmp 0x15dd2
jmp 0x15dd2
jmp 0x15dd2
jmp 0x15dd2
jmp 0x15dd2
movq 0x68(%rsp), %rcx
addq 0x58(%rsp), %rcx
cmpq $0x3, %rcx
jne 0x15df2
cmpq $0x3, 0x60(%rsp)
jne 0x15df2
movq %rax, %rdi
callq 0x55e0
leaq 0x2494f(%rip), %rdi     # 0x3a748
leaq 0x249e6(%rip), %rsi     # 0x3a7e6
leaq 0x24a07(%rip), %rcx     # 0x3a80e
movl $0x78, %edx
callq 0x5230
nop