// File: /workspace/github_cpp_makefile_star2_O3/istellartech[P]OpenTsiolkovsky/src/rocket.cpp
// Function: RocketStage::RocketStage(RocketStage const&, Eigen::Matrix<double, 3, 1, 0, 3, 1>, Eigen::Matrix<double, 3, 1, 0, 3, 1>)
RocketStage::RocketStage(const RocketStage& rocket_stage, Vector3d posECI_init_args, Vector3d velECI_init_args){
    deep_copy(rocket_stage);
    calc_start_time = dump_separation_time;
    free_flight_mode = ballistic_flight;
    mass_init = dump_mass;
    thrust_file_exist = false;
    thrust_const = 0.0;
    burn_start_time = 0.0;
    burn_end_time = 0.0;
    forced_cutoff_time = 1.0e100; // temporary large number
    ballistic_coef = dump_ballistic_coef;
    posECI_init = posECI_init_args;
    velECI_init = velECI_init_args;

    // for calcurate speed up
    thrust_file_exist = false;
    Isp_file_exist = false;
    CA_file_exist = false;
    CN_file_exist = false;
    attitude_file_exist = false;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x58, %rsp
movq %rcx, %r15
movq %rdx, %r12
movq %rsi, 0x8(%rsp)
movq %rdi, %rbx
leaq 0x23509(%rip), %rax     # 0x31608
movq %rax, (%rdi)
addq $0x8, %rdi
movq %rdi, 0x50(%rsp)
callq 0x5420
leaq 0x220(%rbx), %rax
movq %rax, 0x38(%rsp)
movq %rax, 0x210(%rbx)
xorl %eax, %eax
movq %rax, 0x218(%rbx)
movb %al, 0x220(%rbx)
leaq 0x240(%rbx), %rcx
movq %rcx, 0x30(%rsp)
movq %rcx, 0x230(%rbx)
movq %rax, 0x238(%rbx)
movb %al, 0x240(%rbx)
movl %eax, 0x250(%rbx)
movw $0x0, 0x254(%rbx)
xorps %xmm1, %xmm1
movups %xmm1, 0x258(%rbx)
movsd 0x17b8d(%rip), %xmm0    # 0x25d00
movups %xmm0, 0x268(%rbx)
movq %rax, 0x288(%rbx)
leaq 0x2a8(%rbx), %rcx
movq %rcx, 0x28(%rsp)
movq %rcx, 0x298(%rbx)
movq %rax, 0x2a0(%rbx)
movb %al, 0x2a8(%rbx)
movups %xmm1, 0x2b8(%rbx)
movq %rax, 0x2c8(%rbx)
leaq 0x2e8(%rbx), %rcx
movq %rcx, 0x20(%rsp)
movq %rcx, 0x2d8(%rbx)
movq %rax, 0x2e0(%rbx)
movb %al, 0x2e8(%rbx)
movb %al, 0x430(%rbx)
leaq 0x448(%rbx), %rcx
movaps %xmm1, 0x330(%rbx)
movaps %xmm1, 0x320(%rbx)
movaps %xmm1, 0x310(%rbx)
movq %rcx, 0x18(%rsp)
movq %rcx, 0x438(%rbx)
movq %rax, 0x440(%rbx)
movb %al, 0x448(%rbx)
movups %xmm1, 0x458(%rbx)
movq %rax, 0x468(%rbx)
movq %rax, 0x478(%rbx)
leaq 0x498(%rbx), %rcx
movq %rcx, 0x48(%rsp)
movq %rcx, 0x488(%rbx)
movq %rax, 0x490(%rbx)
movb %al, 0x498(%rbx)
movups %xmm1, 0x4a8(%rbx)
movq %rax, 0x4b8(%rbx)
movq %rax, 0x4c8(%rbx)
leaq 0x538(%rbx), %rcx
movups %xmm1, 0x508(%rbx)
movq %rax, 0x518(%rbx)
movq %rcx, 0x40(%rsp)
movq %rcx, 0x528(%rbx)
movq %rax, 0x530(%rbx)
movb %al, 0x538(%rbx)
leaq 0x588(%rbx), %r13
movaps %xmm1, 0x560(%rbx)
movaps %xmm1, 0x550(%rbx)
movq %r13, 0x578(%rbx)
movq %rax, 0x580(%rbx)
movb %al, 0x588(%rbx)
movq %rax, 0x5a8(%rbx)
movups %xmm1, 0x598(%rbx)
leaq 0x5d0(%rbx), %r14
movq %r14, 0x5c0(%rbx)
movq %rax, 0x5c8(%rbx)
movb %al, 0x5d0(%rbx)
movq %rax, 0x5f0(%rbx)
movaps %xmm1, 0x5e0(%rbx)
movb %al, 0x648(%rbx)
movb %al, 0x680(%rbx)
leaq 0x698(%rbx), %rbp
movq %rax, 0x660(%rbx)
movaps %xmm1, 0x650(%rbx)
movq %rbp, 0x688(%rbx)
movq %rax, 0x690(%rbx)
movb %al, 0x698(%rbx)
leaq 0x6b8(%rbx), %rcx
movq %rcx, 0x10(%rsp)
movq %rcx, 0x6a8(%rbx)
movq %rax, 0x6b0(%rbx)
movb %al, 0x6b8(%rbx)
movb %al, 0x740(%rbx)
movaps %xmm1, 0x730(%rbx)
movaps %xmm1, 0x720(%rbx)
movaps %xmm1, 0x710(%rbx)
xorps %xmm0, %xmm0
movhps 0x179ac(%rip), %xmm0    # xmm0 = xmm0[0,1],mem[0,1]
movups %xmm0, 0x748(%rbx)
movabsq $0x40239d013a92a305, %rcx # imm = 0x40239D013A92A305
movq %rcx, 0x758(%rbx)
movaps %xmm1, 0x770(%rbx)
movaps %xmm1, 0x760(%rbx)
movaps 0x17bb7(%rip), %xmm0    # 0x25f40
movaps %xmm0, 0x780(%rbx)
movq %rax, 0x7f0(%rbx)
movaps %xmm1, 0x7e0(%rbx)
movaps %xmm1, 0x7d0(%rbx)
movaps %xmm1, 0x7c0(%rbx)
movaps %xmm1, 0x7b0(%rbx)
movaps %xmm1, 0x7a0(%rbx)
movaps %xmm1, 0x790(%rbx)
movaps 0x16c48(%rip), %xmm0    # 0x25010
movups %xmm0, 0x7f8(%rbx)
movabsq $0x4071f0d97f62b6ae, %rcx # imm = 0x4071F0D97F62B6AE
movq %rcx, 0x808(%rbx)
movups 0x17429(%rip), %xmm0    # 0x25810
movups %xmm0, 0x820(%rbx)
movups 0x1740b(%rip), %xmm0    # 0x25800
movups %xmm0, 0x810(%rbx)
movups 0x17c6d(%rip), %xmm0    # 0x26070
movups %xmm0, 0x860(%rbx)
movups 0x17c4f(%rip), %xmm0    # 0x26060
movups %xmm0, 0x850(%rbx)
movups 0x17c31(%rip), %xmm0    # 0x26050
movups %xmm0, 0x840(%rbx)
movups 0x17c13(%rip), %xmm0    # 0x26040
movups %xmm0, 0x830(%rbx)
movups 0x17c75(%rip), %xmm0    # 0x260b0
movups %xmm0, 0x8a0(%rbx)
movups 0x17c57(%rip), %xmm0    # 0x260a0
movups %xmm0, 0x890(%rbx)
movups 0x17c39(%rip), %xmm0    # 0x26090
movups %xmm0, 0x880(%rbx)
movups 0x17c1b(%rip), %xmm0    # 0x26080
movups %xmm0, 0x870(%rbx)
movups 0x17c7d(%rip), %xmm0    # 0x260f0
movups %xmm0, 0x8e0(%rbx)
movups 0x17c5f(%rip), %xmm0    # 0x260e0
movups %xmm0, 0x8d0(%rbx)
movups 0x17c41(%rip), %xmm0    # 0x260d0
movups %xmm0, 0x8c0(%rbx)
movups 0x17c23(%rip), %xmm0    # 0x260c0
movups %xmm0, 0x8b0(%rbx)
movl %eax, 0x8f0(%rbx)
movaps 0x16b8f(%rip), %xmm0    # 0x25040
movups %xmm0, 0x8f8(%rbx)
movaps 0x16b61(%rip), %xmm0    # 0x25020
movups %xmm0, 0x908(%rbx)
movq %rax, 0x928(%rbx)
movups %xmm1, 0x918(%rbx)
movabsq $0x3ff921fb54442d18, %rcx # imm = 0x3FF921FB54442D18
movq %rcx, 0x930(%rbx)
movups %xmm1, 0x938(%rbx)
movq %rcx, 0x948(%rbx)
leaq 0xe98(%rbx), %rcx
movl %eax, 0xe98(%rbx)
movq %rax, 0xea0(%rbx)
movq %rax, 0x970(%rbx)
movaps %xmm1, 0x960(%rbx)
movaps %xmm1, 0x950(%rbx)
movq %rax, 0x9b8(%rbx)
movups %xmm1, 0x9a8(%rbx)
movups %xmm1, 0x998(%rbx)
movq %rcx, 0xea8(%rbx)
movq %rcx, 0xeb0(%rbx)
movq %rax, 0xeb8(%rbx)
movq %rbx, %rdi
movq 0x8(%rsp), %rsi
callq 0x155dc
leaq 0x4c8(%rbx), %rax
movsd 0x650(%rbx), %xmm0
movsd %xmm0, 0x258(%rbx)
movl $0x2, 0x27c(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movabsq $0x54b249ad2594c37d, %rax # imm = 0x54B249AD2594C37D
movq %rax, 0x4e8(%rbx)
movups 0x658(%rbx), %xmm0
movaps %xmm0, 0x280(%rbx)
movsd (%r12), %xmm0
movsd %xmm0, 0x3d0(%rbx)
movsd 0x8(%r12), %xmm0
movsd %xmm0, 0x3d8(%rbx)
movsd 0x10(%r12), %xmm0
movsd %xmm0, 0x3e0(%rbx)
movsd (%r15), %xmm0
movsd %xmm0, 0x3e8(%rbx)
movsd 0x8(%r15), %xmm0
movsd %xmm0, 0x3f0(%rbx)
movsd 0x10(%r15), %xmm0
movsd %xmm0, 0x3f8(%rbx)
xorl %eax, %eax
movb %al, 0x480(%rbx)
movb %al, 0x430(%rbx)
movb %al, 0x570(%rbx)
movb %al, 0x520(%rbx)
movb %al, 0x5b8(%rbx)
addq $0x58, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq 0x40(%rsp), %r15
movq 0x48(%rsp), %r12
movq %rax, 0x8(%rsp)
leaq 0xe90(%rbx), %rdi
callq 0x7470
movq 0x728(%rbx), %rdi
callq 0x5460
movq 0x710(%rbx), %rdi
callq 0x5460
movq 0x6a8(%rbx), %rdi
cmpq 0x10(%rsp), %rdi
je 0xe676
movq 0x10(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x688(%rbx), %rdi
cmpq %rbp, %rdi
je 0xe68e
movq (%rbp), %rsi
incq %rsi
callq 0x53b0
movq 0x5e0(%rbx), %rdi
callq 0x5460
movq 0x5c0(%rbx), %rdi
cmpq %r14, %rdi
je 0xe6b1
movq (%r14), %rsi
incq %rsi
callq 0x53b0
movq 0x598(%rbx), %rdi
callq 0x5460
movq 0x578(%rbx), %rdi
cmpq %r13, %rdi
je 0xe6d5
movq (%r13), %rsi
incq %rsi
callq 0x53b0
movq 0x550(%rbx), %rdi
callq 0x5460
movq 0x528(%rbx), %rdi
cmpq %r15, %rdi
je 0xe6f8
movq (%r15), %rsi
incq %rsi
callq 0x53b0
movq 0x4a8(%rbx), %rdi
callq 0x5460
movq 0x488(%rbx), %rdi
cmpq %r12, %rdi
je 0xe71c
movq (%r12), %rsi
incq %rsi
callq 0x53b0
movq 0x458(%rbx), %rdi
callq 0x5460
movq 0x438(%rbx), %rdi
cmpq 0x18(%rsp), %rdi
je 0xe746
movq 0x18(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x328(%rbx), %rdi
callq 0x5460
movq 0x310(%rbx), %rdi
callq 0x5460
movq 0x2d8(%rbx), %rdi
cmpq 0x20(%rsp), %rdi
je 0xe77c
movq 0x20(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x2b8(%rbx), %rdi
callq 0x5460
movq 0x298(%rbx), %rdi
cmpq 0x28(%rsp), %rdi
je 0xe7a6
movq 0x28(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x230(%rbx), %rdi
cmpq 0x30(%rsp), %rdi
je 0xe7c4
movq 0x30(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x210(%rbx), %rdi
cmpq 0x38(%rsp), %rdi
je 0xe7e2
movq 0x38(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x50(%rsp), %rdi
callq 0x5100
movq 0x8(%rsp), %rdi
callq 0x5650