// File: /workspace/github_cpp_makefile_star2_O1/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 0x24337(%rip), %rax     # 0x32608
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)
movabsq $0x3f847ae147ae147b, %rcx # imm = 0x3F847AE147AE147B
movq %rcx, 0x268(%rbx)
movq %rax, 0x270(%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), %rbp
movq %rbp, 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), %r14
movq %rax, 0x660(%rbx)
movaps %xmm1, 0x650(%rbx)
movq %r14, 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)
movq %rax, 0x748(%rbx)
movb %al, 0x740(%rbx)
movaps %xmm1, 0x730(%rbx)
movaps %xmm1, 0x720(%rbx)
movaps %xmm1, 0x710(%rbx)
movabsq $0x54b249ad2594c37d, %rcx # imm = 0x54B249AD2594C37D
movq %rcx, 0x750(%rbx)
movabsq $0x40239d013a92a305, %rcx # imm = 0x40239D013A92A305
movq %rcx, 0x758(%rbx)
movaps %xmm1, 0x770(%rbx)
movaps %xmm1, 0x760(%rbx)
movabsq $0x3fb999999999999a, %rcx # imm = 0x3FB999999999999A
movq %rcx, 0x780(%rbx)
movabsq $0x3fc999999999999a, %rcx # imm = 0x3FC999999999999A
movq %rcx, 0x788(%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)
movabsq $0x40239cf41f212d77, %rcx # imm = 0x40239CF41F212D77
movq %rcx, 0x7f8(%rbx)
movabsq $0x3ff6666666666666, %rcx # imm = 0x3FF6666666666666
movq %rcx, 0x800(%rbx)
movabsq $0x4071f0d97f62b6ae, %rcx # imm = 0x4071F0D97F62B6AE
movq %rcx, 0x808(%rbx)
movups 0x191df(%rip), %xmm0    # 0x277d0
movups %xmm0, 0x820(%rbx)
movups 0x191c1(%rip), %xmm0    # 0x277c0
movups %xmm0, 0x810(%rbx)
movups 0x19963(%rip), %xmm0    # 0x27f70
movups %xmm0, 0x860(%rbx)
movups 0x19945(%rip), %xmm0    # 0x27f60
movups %xmm0, 0x850(%rbx)
movups 0x19927(%rip), %xmm0    # 0x27f50
movups %xmm0, 0x840(%rbx)
movups 0x19909(%rip), %xmm0    # 0x27f40
movups %xmm0, 0x830(%rbx)
movups 0x1996b(%rip), %xmm0    # 0x27fb0
movups %xmm0, 0x8a0(%rbx)
movups 0x1994d(%rip), %xmm0    # 0x27fa0
movups %xmm0, 0x890(%rbx)
movups 0x1992f(%rip), %xmm0    # 0x27f90
movups %xmm0, 0x880(%rbx)
movups 0x19911(%rip), %xmm0    # 0x27f80
movups %xmm0, 0x870(%rbx)
movups 0x19973(%rip), %xmm0    # 0x27ff0
movups %xmm0, 0x8e0(%rbx)
movups 0x19955(%rip), %xmm0    # 0x27fe0
movups %xmm0, 0x8d0(%rbx)
movups 0x19937(%rip), %xmm0    # 0x27fd0
movups %xmm0, 0x8c0(%rbx)
movups 0x19919(%rip), %xmm0    # 0x27fc0
movups %xmm0, 0x8b0(%rbx)
movl %eax, 0x8f0(%rbx)
movabsq $0x4072c00000000000, %rcx # imm = 0x4072C00000000000
movq %rcx, 0x8f8(%rbx)
movabsq $0x4092c00000000000, %rcx # imm = 0x4092C00000000000
movq %rcx, 0x900(%rbx)
movabsq $0x40f8bb4000000000, %rcx # imm = 0x40F8BB4000000000
movq %rcx, 0x908(%rbx)
movabsq $0x3ff3333333333333, %rcx # imm = 0x3FF3333333333333
movq %rcx, 0x910(%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 0x16fd6
leaq 0x4c8(%rbx), %rax
movsd 0x650(%rbx), %xmm0
movsd 0x658(%rbx), %xmm1
movsd %xmm0, 0x258(%rbx)
movl $0x2, 0x27c(%rbx)
movsd %xmm1, 0x280(%rbx)
xorl %ecx, %ecx
movb %cl, 0x480(%rbx)
xorps %xmm0, %xmm0
movups %xmm0, (%rax)
movq $0x0, 0x10(%rax)
movabsq $0x54b249ad2594c37d, %rax # imm = 0x54B249AD2594C37D
movq %rax, 0x4e8(%rbx)
movsd 0x660(%rbx), %xmm0
movsd %xmm0, 0x288(%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)
movb %cl, 0x480(%rbx)
movb %cl, 0x430(%rbx)
movb %cl, 0x570(%rbx)
movb %cl, 0x520(%rbx)
movb %cl, 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 0x7546
movq 0x728(%rbx), %rdi
callq 0x5460
movq 0x710(%rbx), %rdi
callq 0x5460
movq 0x6a8(%rbx), %rdi
cmpq 0x10(%rsp), %rdi
je 0xe8c0
movq 0x10(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x688(%rbx), %rdi
cmpq %r14, %rdi
je 0xe8d7
movq (%r14), %rsi
incq %rsi
callq 0x53b0
movq 0x5e0(%rbx), %rdi
callq 0x5460
movq 0x5c0(%rbx), %rdi
cmpq %rbp, %rdi
je 0xe8fb
movq (%rbp), %rsi
incq %rsi
callq 0x53b0
movq 0x598(%rbx), %rdi
callq 0x5460
movq 0x578(%rbx), %rdi
cmpq %r13, %rdi
je 0xe91f
movq (%r13), %rsi
incq %rsi
callq 0x53b0
movq 0x550(%rbx), %rdi
callq 0x5460
movq 0x528(%rbx), %rdi
cmpq %r15, %rdi
je 0xe942
movq (%r15), %rsi
incq %rsi
callq 0x53b0
movq 0x4a8(%rbx), %rdi
callq 0x5460
movq 0x488(%rbx), %rdi
cmpq %r12, %rdi
je 0xe966
movq (%r12), %rsi
incq %rsi
callq 0x53b0
movq 0x458(%rbx), %rdi
callq 0x5460
movq 0x438(%rbx), %rdi
cmpq 0x18(%rsp), %rdi
je 0xe990
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 0xe9c6
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 0xe9f0
movq 0x28(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x230(%rbx), %rdi
cmpq 0x30(%rsp), %rdi
je 0xea0e
movq 0x30(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x210(%rbx), %rdi
cmpq 0x38(%rsp), %rdi
je 0xea2c
movq 0x38(%rsp), %rax
movq (%rax), %rsi
incq %rsi
callq 0x53b0
movq 0x50(%rsp), %rdi
callq 0x5100
movq 0x8(%rsp), %rdi
callq 0x5650