// File: /workspace/github_cpp_makefile_star2_O1/istellartech[P]OpenTsiolkovsky/src/rocket.cpp
// Function: Rocket::flight_simulation()
void Rocket::flight_simulation(){
    // rs : mean RocketNew::rocket_stages, class RocketStage
    using base_stepper_type = odeint::runge_kutta_dopri5<RocketStage::state>;
    auto Stepper = make_dense_output(1.0e-9, 1.0e-9, 1.0, base_stepper_type());

    for (int i = 0; i < rs.size(); i++){  // i is number of the rocket stages
        flag_separation_g = false;
        flag_separation_mass_reduce_g = false;
        flag_dump_g = false;
        flag_impact_g = false;
        if (i == 0){
            rs[i].posECI_init << posECI_init(rs[0].launch_pos_LLH);
            rs[i].velECI_init << velECI_init(rs[0].launch_vel_NED, rs[0].launch_pos_LLH);
            rs[i].previous_stage_separation_time = 0.0; // first stage calcuration start time[s]
        } else {
            rs[i].posECI_init << posECI_init_g;
            rs[i].velECI_init << velECI_init_g;
            rs[i].previous_stage_separation_time = rs[i-1].later_stage_separation_time;
        }
        rs[i].calc_start_time = rs[i].previous_stage_separation_time;
        std::vector<double> time_array;
        time_array = {rs[i].calc_start_time,
                      rs[i].dump_separation_time,
//                      rs[i].previous_stage_separation_time + rs[i].burn_start_time + rs[i].burn_end_time,
                      rs[i].later_stage_separation_time,
                      rs[i].calc_end_time
        };
        sort(time_array.begin(), time_array.end());  // ascending order for ODE
        std::replace_if(time_array.begin(), time_array.end(),
                        [&](double x){return x > rs[i].calc_end_time;},
                        rs[i].calc_end_time); // keep times to the upper limit(calc_end_time)
        double time_step = rs[i].calc_step_time;

        RocketStage::state State = { rs[i].mass_init,
                                     rs[i].posECI_init[0], rs[i].posECI_init[1], rs[i].posECI_init[2],
                                     rs[i].velECI_init[0], rs[i].velECI_init[1], rs[i].velECI_init[2],
        };
        string csv_filename = "./output/" + rs[i].name + "_dynamics_" + to_string(rs[i].num_stage) + ".csv";
        CsvObserver Observer(csv_filename, false);
        Observer.deep_copy(rs[i]);
        flag_duplicate = false;
        for (int j = 0; j < time_array.size() - 1; j++){  // j is number of time_array
            odeint::integrate_const(Stepper, rs[i], State,
                                    time_array[j], time_array[j+1], time_step,
                                    std::ref(Observer));
            CsvObserver Observer(csv_filename, true);
            Observer.deep_copy(rs[i]);
            if (time_array[j+1] == rs[i].later_stage_separation_time && !flag_separation_mass_reduce_g){
                State[0] = State[0] - rs[i+1].mass_init;  // reduce upper stage mass to "ODE x[0]"
                flag_separation_mass_reduce_g = true;
            }
            if (time_array[j+1] == rs[i].dump_separation_time){
                RocketStage temp_fo(rs[i], posECI_dump_init_g, velECI_dump_init_g);
                temp_fo.num_stage = rs[i].num_stage;
                fo.push_back(temp_fo);
                State[0] = State[0] - rs[i].dump_mass;  // reduce dumping mass to "ODE x[0]"
            }
            flag_duplicate = true;
        }
        cout << "                                           \r" << flush;
        cout << fixed << setprecision(6) << to_string(rs[i].num_stage) + " stage impact point [deg]:\t";
        cout << impact_point_g[0] << "\t"<< impact_point_g[1] << endl;
        impact_point_g << 0.0,0.0;
        if (!rs[i].following_stage_exist){
            break;
        }
    }

    // ==== DUMPING PRODUCTS flight simulation ====
    for (int i = 0; i < fo.size(); i++) {  // i is number of the dumping products
        flag_impact_g = false;
        RocketStage::state State = { fo[i].mass_init,
            fo[i].posECI_init[0], fo[i].posECI_init[1], fo[i].posECI_init[2],
            fo[i].velECI_init[0], fo[i].velECI_init[1], fo[i].velECI_init[2],
        };
        string csv_filename = "./output/" + fo[i].name + "_dynamics_" + to_string(fo[i].num_stage) + "_dump" +  ".csv";
        CsvObserver Observer(csv_filename, false);
        Observer.deep_copy(fo[i]);
        odeint::integrate_const(Stepper, fo[i], State,
                                fo[i].calc_start_time, fo[i].calc_end_time, fo[i].calc_step_time,
                                std::ref(Observer));
        cout << "                                           \r" << flush;
        cout << fixed << setprecision(6) << to_string(fo[i].num_stage) + " stage dumping product impact point [deg]:\t";
        cout << impact_point_g[0] << "\t"<< impact_point_g[1] << endl;
        impact_point_g << 0.0,0.0;
    }

    cout << fixed << setprecision(0);
    cout << "max altitude[m]:\t" << max_alt_g << endl;
    cout << "max downrange[m]:\t" << max_downrange_g << endl;
    cout << "Simulation Success!" << endl;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x6d68, %rsp           # imm = 0x6D68
movq %rdi, %rbx
leaq 0x48ba(%rsp), %rdi
movl $0x1d9, %edx            # imm = 0x1D9
xorl %esi, %esi
callq 0x5230
movq (%rbx), %r14
movq %rbx, 0x778(%rsp)
cmpq %r14, 0x8(%rbx)
je 0xf996
leaq 0x1a40(%rsp), %r12
movl $0x10d0, %ecx           # imm = 0x10D0
leaq 0x1a30(%rsp), %rdx
leaq (%rdx,%rcx), %rax
movq %rax, 0x8d0(%rsp)
movq 0x244eb(%rip), %rax     # 0x32f90
movq (%rax), %rsi
movq %rsi, 0x7f8(%rsp)
movq 0x18(%rax), %rax
movq %rax, 0x7f0(%rsp)
movl $0xec8, %eax            # imm = 0xEC8
leaq (%rdx,%rax), %rsi
movq %rsi, 0x8c8(%rsp)
movl $0xfb8, %esi            # imm = 0xFB8
addq %rsi, %rdx
movq %rdx, 0x8c0(%rsp)
leaq 0x950(%rsp), %r15
addq %r15, %rcx
movq %rcx, 0x898(%rsp)
addq %r15, %rax
movq %rax, 0x890(%rsp)
addq %r15, %rsi
movq %rsi, 0x888(%rsp)
movq 0x778(%rsp), %rax
addq $0x18, %rax
movq %rax, 0x8b8(%rsp)
movl $0x3d0, %edx            # imm = 0x3D0
movl $0x3e8, %r13d           # imm = 0x3E8
leaq 0x5ea0(%rsp), %rbp
leaq 0x24924(%rip), %rdi     # 0x33458
xorl %r8d, %r8d
xorl %eax, %eax
movb %al, 0x24949(%rip)      # 0x33488
movb %al, 0x24944(%rip)      # 0x33489
movb %al, 0x2493f(%rip)      # 0x3348a
movb %al, 0x2493a(%rip)      # 0x3348b
testq %r8, %r8
movq %rdx, 0x8b0(%rsp)
movq %r13, 0x8a8(%rsp)
je 0xebca
imulq $0xec0, %r8, %rcx       # imm = 0xEC0
leaq (%r14,%rcx), %rax
addq %r14, %rdx
xorl %esi, %esi
movsd (%rsi,%rdi), %xmm0
movsd %xmm0, (%rdx,%rsi)
addq $0x8, %rsi
cmpq $0x18, %rsi
jne 0xeb76
leaq (%r14,%r13), %rdx
xorl %esi, %esi
leaq 0x248d9(%rip), %rdi     # 0x33470
movsd (%rsi,%rdi), %xmm0
movsd %xmm0, (%rdx,%rsi)
addq $0x8, %rsi
cmpq $0x18, %rsi
jne 0xeb97
movsd -0x770(%r14,%rcx), %xmm0
movsd %xmm0, 0x748(%rax)
movq 0x778(%rsp), %rdx
jmp 0xecfe
movq %r8, %rbx
movsd 0x340(%r14), %xmm0
movsd %xmm0, 0x908(%rsp)
movsd 0x348(%r14), %xmm0
movsd %xmm0, 0x910(%rsp)
movsd 0x350(%r14), %xmm0
movsd %xmm0, 0x918(%rsp)
movq %r15, %rdi
leaq 0x908(%rsp), %rsi
callq 0x25faa
xorl %eax, %eax
movsd 0x950(%rsp,%rax,8), %xmm0
movsd %xmm0, 0x3d0(%r14,%rax,8)
incq %rax
cmpq $0x3, %rax
jne 0xec15
movq 0x778(%rsp), %rax
movq (%rax), %r14
movsd 0x370(%r14), %xmm0
movsd %xmm0, 0x8f0(%rsp)
movsd 0x378(%r14), %xmm0
movsd %xmm0, 0x8f8(%rsp)
movsd 0x380(%r14), %xmm0
movsd %xmm0, 0x900(%rsp)
movsd 0x340(%r14), %xmm0
movsd %xmm0, 0x8d8(%rsp)
movsd 0x348(%r14), %xmm0
movsd %xmm0, 0x8e0(%rsp)
movsd 0x350(%r14), %xmm0
movsd %xmm0, 0x8e8(%rsp)
movq %r15, %rdi
leaq 0x8f0(%rsp), %rsi
leaq 0x8d8(%rsp), %rdx
callq 0x2611c
addq %r13, %r14
xorl %eax, %eax
movsd 0x950(%rsp,%rax,8), %xmm0
movsd %xmm0, (%r14,%rax,8)
incq %rax
cmpq $0x3, %rax
jne 0xecc5
movq 0x778(%rsp), %rdx
movq (%rdx), %rax
movq %rbx, %r8
imulq $0xec0, %rbx, %rcx      # imm = 0xEC0
movq $0x0, 0x748(%rax,%rcx)
movq (%rdx), %rax
movq %r8, 0x8a0(%rsp)
imulq $0xec0, %r8, %r13       # imm = 0xEC0
movsd 0x748(%rax,%r13), %xmm0
movsd %xmm0, 0x258(%rax,%r13)
xorps %xmm0, %xmm0
movaps %xmm0, 0x7a0(%rsp)
movq $0x0, 0x7b0(%rsp)
movsd 0x258(%rax,%r13), %xmm0
movsd %xmm0, 0x950(%rsp)
movsd 0x650(%rax,%r13), %xmm0
movsd %xmm0, 0x958(%rsp)
movsd 0x750(%rax,%r13), %xmm0
movsd %xmm0, 0x960(%rsp)
movsd 0x260(%rax,%r13), %xmm0
movsd %xmm0, 0x968(%rsp)
leaq 0x7a0(%rsp), %rdi
movq %r15, %rsi
leaq 0x970(%rsp), %rdx
callq 0x1aad0
movq 0x7a0(%rsp), %r14
movq 0x7a8(%rsp), %r15
cmpq %r15, %r14
je 0xede1
movq %r15, %rax
subq %r14, %rax
sarq $0x3, %rax
bsrq %rax, %rdx
xorl $0x3f, %edx
addl %edx, %edx
xorq $0x7e, %rdx
movq %r14, %rdi
movq %r15, %rsi
callq 0x1abc8
movq %r14, %rdi
movq %r15, %rsi
callq 0x1acc1
movq 0x7a0(%rsp), %rax
movq 0x7a8(%rsp), %rcx
movq 0x778(%rsp), %rdx
movq (%rdx), %rsi
leaq (%rsi,%r13), %rdx
cmpq %rcx, %rax
je 0xee2e
addq %r13, %rsi
addq $0x260, %rsi            # imm = 0x260
movsd (%rax), %xmm0
ucomisd (%rsi), %xmm0
jbe 0xee25
movsd 0x260(%rdx), %xmm0
movsd %xmm0, (%rax)
addq $0x8, %rax
cmpq %rcx, %rax
jne 0xee0f
movsd 0x268(%rdx), %xmm0
movsd %xmm0, 0x810(%rsp)
movsd 0x280(%rdx), %xmm0
movsd %xmm0, 0x818(%rsp)
movsd 0x3d0(%rdx), %xmm0
movsd %xmm0, 0x820(%rsp)
movsd 0x3d8(%rdx), %xmm0
movsd %xmm0, 0x828(%rsp)
movsd 0x3e0(%rdx), %xmm0
movsd %xmm0, 0x830(%rsp)
movsd 0x3e8(%rdx), %xmm0
movsd %xmm0, 0x838(%rsp)
movsd 0x3f0(%rdx), %xmm0
movsd %xmm0, 0x840(%rsp)
movsd 0x3f8(%rdx), %xmm0
movsd %xmm0, 0x848(%rsp)
xorpd %xmm0, %xmm0
leaq 0x850(%rsp), %rax
movupd %xmm0, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
movupd %xmm0, (%rax)
movq $0x0, 0x30(%rax)
addq $0x210, %rdx            # imm = 0x210
leaq 0x2b10(%rsp), %rbx
movq %rbx, %rdi
leaq 0x198ff(%rip), %rsi     # 0x287f0
callq 0x722f
movq %rbx, %rdi
leaq 0x198fa(%rip), %rsi     # 0x287fa
callq 0x56a0
movq %r12, 0x1a30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xef31
movq %rdx, 0x1a30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1a40(%rsp)
jmp 0xef3b
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x1a38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x778(%rsp), %rax
movq (%rax), %rax
movl 0x250(%rax,%r13), %r14d
movl %r14d, %r12d
negl %r12d
cmovsl %r14d, %r12d
movl $0x1, %r15d
cmpl $0xa, %r12d
jb 0xefc6
movl $0x4, %r15d
movl %r12d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0xefbd
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0xefc3
cmpl $0x2710, %eax           # imm = 0x2710
jb 0xefc6
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0xef8d
addl $-0x3, %r15d
jmp 0xefc6
addl $-0x2, %r15d
jmp 0xefc6
decl %r15d
shrl $0x1f, %r14d
leal (%r15,%r14), %esi
leaq 0x7d8(%rsp), %rax
movq %rax, 0x7c8(%rsp)
leaq 0x7c8(%rsp), %rdi
movl $0x2d, %edx
callq 0x5440
addq 0x7c8(%rsp), %r14
movq %r14, %rdi
movl %r15d, %esi
movl %r12d, %edx
callq 0x1998e
movq 0x1a30(%rsp), %rcx
movl $0xf, %esi
leaq 0x1a40(%rsp), %rax
cmpq %rax, %rcx
je 0xf028
movq 0x1a40(%rsp), %rsi
movq 0x1a38(%rsp), %r8
movq 0x7d0(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
leaq 0x950(%rsp), %r15
jbe 0xf06d
movl $0xf, %esi
leaq 0x7d8(%rsp), %rdi
cmpq %rdi, 0x7c8(%rsp)
je 0xf068
movq 0x7d8(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xf084
movq 0x7c8(%rsp), %rsi
leaq 0x1a30(%rsp), %rdi
callq 0x5140
jmp 0xf095
leaq 0x7c8(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5410
leaq 0x960(%rsp), %rsi
movq %rsi, 0x950(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xf0c6
movq %rdx, 0x950(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x960(%rsp)
jmp 0xf0ce
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x958(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
movq %r15, %rdi
leaq 0x181d4(%rip), %rsi     # 0x272cc
callq 0x56a0
leaq 0x790(%rsp), %rsi
movq %rsi, 0x780(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf131
movq %rdx, 0x780(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x790(%rsp)
jmp 0xf139
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x788(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x950(%rsp), %rdi
leaq 0x960(%rsp), %rax
cmpq %rax, %rdi
je 0xf179
movq 0x960(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7c8(%rsp), %rdi
leaq 0x7d8(%rsp), %rax
cmpq %rax, %rdi
je 0xf19e
movq 0x7d8(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x1a30(%rsp), %rdi
leaq 0x1a40(%rsp), %rax
cmpq %rax, %rdi
je 0xf1c3
movq 0x1a40(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x2b10(%rsp), %rdi
leaq 0x2b20(%rsp), %rax
cmpq %rax, %rdi
je 0xf1e8
movq 0x2b20(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %r15, %rdi
leaq 0x780(%rsp), %rsi
xorl %edx, %edx
callq 0x179f8
movq 0x778(%rsp), %rax
movq (%rax), %rsi
addq %r13, %rsi
movq %r15, %rdi
callq 0x16fd6
movq %rbp, %r12
movb $0x0, 0x242c6(%rip)     # 0x334e0
movq 0x7a8(%rsp), %rax
subq 0x7a0(%rsp), %rax
cmpq $0x8, %rax
je 0xf5aa
xorl %r14d, %r14d
movw $0x100, %bp             # imm = 0x100
movw %bp, 0x4141(%rsp)
movl $0x385, %edx            # imm = 0x385
leaq 0x4143(%rsp), %rbx
movq %rbx, %rdi
leaq 0x4c5b(%rsp), %rsi
callq 0x52f0
movw $0x0, 0x44c8(%rsp)
movl 0x7ea(%rsp), %eax
movl %eax, 0x387(%rbx)
movzwl 0x7ee(%rsp), %eax
movw %ax, 0x38b(%rbx)
movabsq $0x3e112e0be826d695, %rax # imm = 0x3E112E0BE826D695
movq %rax, 0x44d0(%rsp)
movq %rax, 0x44d8(%rsp)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x44e0(%rsp)
movq %rax, 0x44e8(%rsp)
movq %rax, 0x44f0(%rsp)
movl $0x0, 0x44f8(%rsp)
movl $0x1c4, %edx            # imm = 0x1C4
leaq 0x44fc(%rsp), %rdi
leaq 0x4a94(%rsp), %rsi
callq 0x52f0
movb $0x1, 0x46c0(%rsp)
movl 0x809(%rsp), %eax
movl 0x80c(%rsp), %ecx
movl %eax, 0x57e(%rbx)
movl %ecx, 0x581(%rbx)
movw %bp, 0x46c8(%rsp)
movl $0x1df, %edx            # imm = 0x1DF
leaq 0x46ca(%rsp), %rdi
leaq 0x48b4(%rsp), %rsi
callq 0x52f0
movl 0x802(%rsp), %eax
movl 0x805(%rsp), %ecx
movl %eax, 0x766(%rbx)
movl %ecx, 0x769(%rbx)
movq 0x778(%rsp), %rax
movq (%rax), %rsi
addq %r13, %rsi
movq %r12, %rbx
movq %r12, %rdi
callq 0x17bda
movq 0x7a0(%rsp), %rax
movsd (%rax,%r14,8), %xmm0
movsd 0x8(%rax,%r14,8), %xmm1
movl $0xee, %ecx
movq %rsp, %rdi
leaq 0x4140(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
movq %rbx, %rdi
leaq 0x818(%rsp), %rsi
movsd 0x810(%rsp), %xmm2
movq %r15, %rdx
callq 0x17b03
movq %rbx, %rdi
callq 0x7358
leaq 0x1a30(%rsp), %r15
movq %r15, %rdi
leaq 0x780(%rsp), %rsi
movl $0x1, %edx
callq 0x179f8
movq 0x778(%rsp), %rbx
movq (%rbx), %rsi
addq %r13, %rsi
movq %r15, %rdi
callq 0x16fd6
movq 0x7a0(%rsp), %rax
movsd 0x8(%rax,%r14,8), %xmm0
movq (%rbx), %rsi
ucomisd 0x750(%rsi,%r13), %xmm0
jne 0xf429
jp 0xf429
cmpb $0x0, 0x24085(%rip)     # 0x33489
jne 0xf429
movsd 0x818(%rsp), %xmm0
subsd 0x1140(%rsi,%r13), %xmm0
movsd %xmm0, 0x818(%rsp)
movb $0x1, 0x24060(%rip)     # 0x33489
addq %r13, %rsi
movsd 0x8(%rax,%r14,8), %xmm0
ucomisd 0x650(%rsi), %xmm0
leaq 0x950(%rsp), %r15
jne 0xf504
jp 0xf504
movsd 0x24059(%rip), %xmm0    # 0x334b0
movsd %xmm0, 0x938(%rsp)
movups 0x24051(%rip), %xmm0    # 0x334b8
movups %xmm0, 0x940(%rsp)
movsd 0x24051(%rip), %xmm0    # 0x334c8
movsd %xmm0, 0x920(%rsp)
movupd 0x24048(%rip), %xmm0    # 0x334d0
movupd %xmm0, 0x928(%rsp)
leaq 0x2b10(%rsp), %rbx
movq %rbx, %rdi
leaq 0x938(%rsp), %rdx
leaq 0x920(%rsp), %rcx
callq 0xe2ae
movq 0x778(%rsp), %rbp
movq (%rbp), %rax
movl 0x250(%rax,%r13), %eax
movl %eax, 0x2d60(%rsp)
movq 0x8b8(%rsp), %rdi
movq %rbx, %rsi
callq 0x16e78
movsd 0x818(%rsp), %xmm0
movq (%rbp), %rax
subsd 0x658(%rax,%r13), %xmm0
movsd %xmm0, 0x818(%rsp)
movq %rbx, %rdi
callq 0x7358
movb $0x1, 0x23fd5(%rip)     # 0x334e0
leaq 0x2311e(%rip), %rax     # 0x32630
movq %rax, 0x1a30(%rsp)
movq 0x2af0(%rsp), %rdi
cmpq 0x8d0(%rsp), %rdi
je 0xf53c
movq 0x2b00(%rsp), %rsi
incq %rsi
callq 0x53b0
incq %r14
movq 0x7f8(%rsp), %rax
movq %rax, 0x28f0(%rsp)
movq -0x18(%rax), %rax
movq 0x7f0(%rsp), %rcx
movq %rcx, 0x28f0(%rsp,%rax)
movq 0x8c8(%rsp), %rdi
callq 0x5310
movq 0x8c0(%rsp), %rdi
callq 0x5150
leaq 0x1a30(%rsp), %rdi
callq 0x7358
movq 0x7a8(%rsp), %rax
subq 0x7a0(%rsp), %rax
sarq $0x3, %rax
decq %rax
cmpq %r14, %rax
ja 0xf237
movl $0x2c, %edx
movq 0x239fa(%rip), %rdi     # 0x32fb0
leaq 0x19248(%rip), %rsi     # 0x28805
callq 0x5430
movq %r12, %rbp
movq 0x239e4(%rip), %rdi     # 0x32fb0
callq 0x5270
movq 0x239d8(%rip), %rsi     # 0x32fb0
movq (%rsi), %rax
movq -0x18(%rax), %rcx
movl 0x18(%rsi,%rcx), %edx
movl $0xfffffefb, %edi       # imm = 0xFFFFFEFB
andl %edi, %edx
orl $0x4, %edx
movl %edx, 0x18(%rsi,%rcx)
movq -0x18(%rax), %rax
movq $0x6, 0x8(%rsi,%rax)
movq 0x778(%rsp), %rax
movq (%rax), %rax
movl 0x250(%rax,%r13), %r14d
movl %r14d, %r12d
negl %r12d
cmovsl %r14d, %r12d
movl $0x1, %r15d
cmpl $0xa, %r12d
jb 0xf66e
movl $0x4, %r15d
movl %r12d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0xf665
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0xf66b
cmpl $0x2710, %eax           # imm = 0x2710
jb 0xf66e
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %r15d
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0xf635
addl $-0x3, %r15d
jmp 0xf66e
addl $-0x2, %r15d
jmp 0xf66e
decl %r15d
shrl $0x1f, %r14d
leal (%r15,%r14), %esi
leaq 0x2b20(%rsp), %rax
movq %rax, 0x2b10(%rsp)
leaq 0x2b10(%rsp), %rbx
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x5440
addq 0x2b10(%rsp), %r14
movq %r14, %rdi
movl %r15d, %esi
movl %r12d, %edx
callq 0x1998e
movq %rbx, %rdi
leaq 0x19177(%rip), %rsi     # 0x28832
callq 0x56a0
leaq 0x1a40(%rsp), %r14
movq %r14, 0x1a30(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xf6f4
movq %rdx, 0x1a30(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x1a40(%rsp)
jmp 0xf6fd
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
movq %rdx, 0x1a38(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x1a30(%rsp), %rsi
movq 0x1a38(%rsp), %rdx
movq 0x23881(%rip), %rdi     # 0x32fb0
callq 0x5430
movq 0x1a30(%rsp), %rdi
cmpq %r14, %rdi
je 0xf751
movq 0x1a40(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x2b10(%rsp), %rdi
leaq 0x2b20(%rsp), %rax
cmpq %rax, %rdi
je 0xf776
movq 0x2b20(%rsp), %rsi
incq %rsi
callq 0x53b0
movsd 0x23d22(%rip), %xmm0    # 0x334a0
movq 0x2382b(%rip), %rdi     # 0x32fb0
callq 0x5570
movq %rax, %r14
movl $0x1, %edx
movq %rax, %rdi
leaq 0x190b0(%rip), %rsi     # 0x2884c
callq 0x5430
movsd 0x23cff(%rip), %xmm0    # 0x334a8
movq %r14, %rdi
callq 0x5570
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x5370
movsbl %al, %esi
movq %r14, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x23cbe(%rip), %rax     # 0x334a0
movq %rax, 0x1a30(%rsp)
xorl %eax, %eax
movq %rax, 0x1a38(%rsp)
movl $0x1, %ecx
movq %rcx, 0x1a40(%rsp)
movq %rcx, 0x1a48(%rsp)
movq %rax, 0x23c90(%rip)     # 0x334a0
movq %rax, 0x2b10(%rsp)
leaq 0x1a30(%rsp), %rdi
leaq 0x2b10(%rsp), %rsi
callq 0x18324
movq 0x1a48(%rsp), %rax
addq 0x1a38(%rsp), %rax
cmpq $0x2, %rax
leaq 0x790(%rsp), %r15
jne 0x10451
cmpq $0x1, 0x1a40(%rsp)
jne 0x10451
movq 0x778(%rsp), %rax
movq (%rax), %rax
movb 0x740(%rax,%r13), %r14b
leaq 0x22db8(%rip), %rax     # 0x32630
movq %rax, 0x950(%rsp)
movq 0x1a10(%rsp), %rdi
cmpq 0x898(%rsp), %rdi
leaq 0x1a40(%rsp), %r12
je 0xf8aa
movq 0x1a20(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7f8(%rsp), %rax
movq %rax, 0x1810(%rsp)
movq -0x18(%rax), %rax
movq 0x7f0(%rsp), %rcx
movq %rcx, 0x1810(%rsp,%rax)
movq 0x890(%rsp), %rdi
callq 0x5310
movq 0x888(%rsp), %rdi
callq 0x5150
leaq 0x950(%rsp), %rdi
callq 0x7358
movq 0x780(%rsp), %rdi
cmpq %r15, %rdi
movq 0x8a8(%rsp), %r13
je 0xf91a
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7a0(%rsp), %rdi
testq %rdi, %rdi
je 0xf937
movq 0x7b0(%rsp), %rsi
subq %rdi, %rsi
callq 0x53b0
testb %r14b, %r14b
leaq 0x950(%rsp), %r15
movq 0x8b0(%rsp), %rdx
leaq 0x23b07(%rip), %rdi     # 0x33458
movq 0x8a0(%rsp), %r8
je 0xf996
incq %r8
movq 0x778(%rsp), %rax
movq (%rax), %r14
movq 0x8(%rax), %rax
subq %r14, %rax
sarq $0x6, %rax
movabsq $-0x34115b1e5f75270d, %rcx # imm = 0xCBEEA4E1A08AD8F3
imulq %rcx, %rax
movl $0xec0, %ecx            # imm = 0xEC0
addq %rcx, %rdx
addq %rcx, %r13
cmpq %r8, %rax
ja 0xeb37
movq 0x778(%rsp), %rbx
movq 0x18(%rbx), %rax
cmpq %rax, 0x20(%rbx)
je 0x1033d
leaq 0x790(%rsp), %r12
movq 0x235d5(%rip), %rcx     # 0x32f90
movq (%rcx), %rdx
movq %rdx, 0x7f0(%rsp)
movq 0x18(%rcx), %rcx
movq %rcx, 0x810(%rsp)
xorl %r14d, %r14d
movb $0x0, 0x23aaf(%rip)     # 0x3348b
imulq $0xec0, %r14, %r13      # imm = 0xEC0
leaq (%rax,%r13), %rdx
addq $0x210, %rdx            # imm = 0x210
movsd 0x70(%rdx), %xmm0
movsd %xmm0, 0x1a30(%rsp)
movsd 0x1c0(%rdx), %xmm0
movsd %xmm0, 0x1a38(%rsp)
movsd 0x1c8(%rdx), %xmm0
movsd %xmm0, 0x1a40(%rsp)
movsd 0x1d0(%rdx), %xmm0
movsd %xmm0, 0x1a48(%rsp)
movsd 0x1d8(%rdx), %xmm0
movsd %xmm0, 0x1a50(%rsp)
movsd 0x1e0(%rdx), %xmm0
movsd %xmm0, 0x1a58(%rsp)
movsd 0x1e8(%rdx), %xmm0
movsd %xmm0, 0x1a60(%rsp)
leaq 0x1a68(%rsp), %rax
xorpd %xmm0, %xmm0
movupd %xmm0, 0x20(%rax)
movupd %xmm0, 0x10(%rax)
movupd %xmm0, (%rax)
movq $0x0, 0x30(%rax)
leaq 0x7c8(%rsp), %r15
movq %r15, %rdi
leaq 0x18d5a(%rip), %rsi     # 0x287f0
callq 0x722f
movq %r15, %rdi
leaq 0x18d55(%rip), %rsi     # 0x287fa
callq 0x56a0
movq %r12, 0x780(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq %r14, 0x7f8(%rsp)
je 0xfade
movq %rdx, 0x780(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x790(%rsp)
jmp 0xfae8
movupd (%rcx), %xmm0
movupd %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x788(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x18(%rbx), %rax
movl 0x250(%rax,%r13), %r12d
movl %r12d, %r15d
negl %r15d
cmovsl %r12d, %r15d
movl $0x1, %ebp
cmpl $0xa, %r15d
jb 0xfb66
movl $0x4, %ebp
movl %r15d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0xfb5f
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0xfb64
cmpl $0x2710, %eax           # imm = 0x2710
jb 0xfb66
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebp
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0xfb31
addl $-0x3, %ebp
jmp 0xfb66
addl $-0x2, %ebp
jmp 0xfb66
decl %ebp
shrl $0x1f, %r12d
leal (%r12,%rbp), %esi
leaq 0x7b0(%rsp), %rax
movq %rax, 0x7a0(%rsp)
leaq 0x7a0(%rsp), %rdi
movl $0x2d, %edx
callq 0x5440
addq 0x7a0(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
movl %r15d, %edx
callq 0x1998e
movq 0x780(%rsp), %rcx
movl $0xf, %esi
leaq 0x790(%rsp), %rbp
cmpq %rbp, %rcx
je 0xfbc7
movq 0x790(%rsp), %rsi
movq 0x788(%rsp), %r8
movq 0x7a8(%rsp), %rdx
leaq (%rdx,%r8), %rax
cmpq %rsi, %rax
movabsq $0x3e112e0be826d695, %r15 # imm = 0x3E112E0BE826D695
movabsq $0x3ff0000000000000, %r12 # imm = 0x3FF0000000000000
movq 0x778(%rsp), %rbx
jbe 0xfc20
movl $0xf, %esi
leaq 0x7b0(%rsp), %rdi
cmpq %rdi, 0x7a0(%rsp)
je 0xfc1b
movq 0x7b0(%rsp), %rsi
cmpq %rsi, %rax
jbe 0xfc37
movq 0x7a0(%rsp), %rsi
leaq 0x780(%rsp), %rdi
callq 0x5140
jmp 0xfc48
leaq 0x7a0(%rsp), %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x5410
leaq 0x828(%rsp), %rsi
movq %rsi, 0x818(%rsp)
movq (%rax), %rdx
leaq 0x10(%rax), %rcx
cmpq %rcx, %rdx
je 0xfc79
movq %rdx, 0x818(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x828(%rsp)
jmp 0xfc81
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq %rax, %rdx
addq $0x8, %rdx
movq 0x8(%rax), %rsi
movq %rsi, 0x820(%rsp)
movq %rcx, (%rax)
movq $0x0, (%rdx)
movb $0x0, (%rcx)
leaq 0x818(%rsp), %rdi
leaq 0x18b9e(%rip), %rsi     # 0x2884e
callq 0x56a0
leaq 0x960(%rsp), %rsi
movq %rsi, 0x950(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfce9
movq %rdx, 0x950(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x960(%rsp)
jmp 0xfcf1
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x958(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x950(%rsp), %rdi
leaq 0x175b1(%rip), %rsi     # 0x272cc
callq 0x56a0
leaq 0x2b20(%rsp), %rsi
movq %rsi, 0x2b10(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0xfd54
movq %rdx, 0x2b10(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x2b20(%rsp)
jmp 0xfd5c
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x2b18(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x950(%rsp), %rdi
leaq 0x960(%rsp), %rax
cmpq %rax, %rdi
je 0xfd9c
movq 0x960(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x818(%rsp), %rdi
leaq 0x828(%rsp), %rax
cmpq %rax, %rdi
je 0xfdc1
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7a0(%rsp), %rdi
leaq 0x7b0(%rsp), %rax
cmpq %rax, %rdi
je 0xfde6
movq 0x7b0(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x780(%rsp), %rdi
cmpq %rbp, %rdi
je 0xfe03
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7c8(%rsp), %rdi
leaq 0x7d8(%rsp), %rax
cmpq %rax, %rdi
leaq 0x950(%rsp), %rbp
je 0xfe30
movq 0x7d8(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbp, %rdi
leaq 0x2b10(%rsp), %rsi
xorl %edx, %edx
callq 0x179f8
movq 0x18(%rbx), %rsi
addq %r13, %rsi
movq %rbp, %rdi
callq 0x16fd6
movw $0x100, %r14w           # imm = 0x100
movw %r14w, 0x39d1(%rsp)
movl $0x385, %edx            # imm = 0x385
leaq 0x39d3(%rsp), %rbp
movq %rbp, %rdi
leaq 0x4c5b(%rsp), %rsi
callq 0x52f0
movw $0x0, 0x3d58(%rsp)
movl 0x7ea(%rsp), %eax
movl %eax, 0x387(%rbp)
movzwl 0x7ee(%rsp), %eax
movw %ax, 0x38b(%rbp)
movq %r15, 0x3d60(%rsp)
movq %r15, 0x3d68(%rsp)
movq %r12, 0x3d70(%rsp)
movq %r12, 0x3d78(%rsp)
movq %r12, 0x3d80(%rsp)
movl $0x0, 0x3d88(%rsp)
movl $0x1c4, %edx            # imm = 0x1C4
leaq 0x3d8c(%rsp), %rdi
leaq 0x4a94(%rsp), %rsi
callq 0x52f0
movb $0x1, 0x3f50(%rsp)
movl 0x809(%rsp), %eax
movl 0x80c(%rsp), %ecx
movl %eax, 0x57e(%rbp)
movl %ecx, 0x581(%rbp)
movw %r14w, 0x3f58(%rsp)
movl $0x1df, %edx            # imm = 0x1DF
leaq 0x3f5a(%rsp), %rdi
leaq 0x48b4(%rsp), %rsi
callq 0x52f0
movl 0x802(%rsp), %eax
movl 0x805(%rsp), %ecx
movl %eax, 0x766(%rbp)
movl %ecx, 0x769(%rbp)
leaq 0x950(%rsp), %r15
movq 0x18(%rbx), %rsi
addq %r13, %rsi
leaq 0x4fe0(%rsp), %rdi
callq 0x17bda
movq 0x18(%rbx), %rax
movsd 0x258(%rax,%r13), %xmm0
movsd 0x260(%rax,%r13), %xmm1
movsd 0x268(%rax,%r13), %xmm2
movl $0xee, %ecx
movq %rsp, %rdi
leaq 0x39d0(%rsp), %rsi
rep  movsq (%rsi), %es:(%rdi)
leaq 0x4fe0(%rsp), %r12
movq %r12, %rdi
leaq 0x1a30(%rsp), %rsi
movq %r15, %rdx
callq 0x17b03
movq %r12, %rdi
callq 0x7358
movl $0x2c, %edx
movq 0x22fe2(%rip), %rdi     # 0x32fb0
leaq 0x18830(%rip), %rsi     # 0x28805
callq 0x5430
movq 0x22fcf(%rip), %rdi     # 0x32fb0
callq 0x5270
movq 0x22fc3(%rip), %rsi     # 0x32fb0
movq (%rsi), %rax
movq -0x18(%rax), %rcx
movl 0x18(%rsi,%rcx), %edx
movl $0xfffffefb, %edi       # imm = 0xFFFFFEFB
andl %edi, %edx
orl $0x4, %edx
movl %edx, 0x18(%rsi,%rcx)
movq -0x18(%rax), %rax
movq $0x6, 0x8(%rsi,%rax)
movq 0x18(%rbx), %rax
movl 0x250(%rax,%r13), %r12d
movl %r12d, %r15d
negl %r15d
cmovsl %r12d, %r15d
movl $0x1, %ebp
cmpl $0xa, %r15d
leaq 0x780(%rsp), %rbx
jb 0x1007e
movl $0x4, %ebp
movl %r15d, %eax
movl $0xd1b71759, %edx       # imm = 0xD1B71759
cmpl $0x63, %eax
jbe 0x10077
cmpl $0x3e7, %eax            # imm = 0x3E7
jbe 0x1007c
cmpl $0x2710, %eax           # imm = 0x2710
jb 0x1007e
movl %eax, %ecx
imulq %rdx, %rcx
shrq $0x2d, %rcx
addl $0x4, %ebp
cmpl $0x1869f, %eax          # imm = 0x1869F
movl %ecx, %eax
ja 0x10049
addl $-0x3, %ebp
jmp 0x1007e
addl $-0x2, %ebp
jmp 0x1007e
decl %ebp
shrl $0x1f, %r12d
leal (%r12,%rbp), %esi
leaq 0x790(%rsp), %rax
movq %rax, 0x780(%rsp)
movq %rbx, %rdi
movl $0x2d, %edx
callq 0x5440
addq 0x780(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
movl %r15d, %edx
callq 0x1998e
movq %rbx, %rdi
leaq 0x18792(%rip), %rsi     # 0x28854
callq 0x56a0
leaq 0x828(%rsp), %r15
movq %r15, 0x818(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
movq 0x778(%rsp), %rbx
leaq 0x790(%rsp), %r12
leaq 0x950(%rsp), %r13
je 0x10113
movq %rdx, 0x818(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x828(%rsp)
jmp 0x1011c
movupd (%rcx), %xmm0
movupd %xmm0, (%r15)
movq 0x8(%rax), %rdx
movq %rdx, 0x820(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq 0x818(%rsp), %rsi
movq 0x820(%rsp), %rdx
movq 0x22e62(%rip), %rdi     # 0x32fb0
callq 0x5430
movq 0x818(%rsp), %rdi
cmpq %r15, %rdi
je 0x10170
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x780(%rsp), %rdi
cmpq %r12, %rdi
je 0x1018d
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x53b0
movsd 0x2330b(%rip), %xmm0    # 0x334a0
movq 0x22e14(%rip), %rdi     # 0x32fb0
callq 0x5570
movq %rax, %r15
movl $0x1, %edx
movq %rax, %rdi
leaq 0x18699(%rip), %rsi     # 0x2884c
callq 0x5430
movsd 0x232e8(%rip), %xmm0    # 0x334a8
movq %r15, %rdi
callq 0x5570
movq %rax, %r15
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x5370
movsbl %al, %esi
movq %r15, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x232a7(%rip), %rax     # 0x334a0
movq %rax, 0x818(%rsp)
xorl %eax, %eax
movq %rax, 0x820(%rsp)
movl $0x1, %ecx
movq %rcx, 0x828(%rsp)
movq %rcx, 0x830(%rsp)
movq %rax, 0x23279(%rip)     # 0x334a0
movq %rax, 0x780(%rsp)
leaq 0x818(%rsp), %rdi
leaq 0x780(%rsp), %rsi
callq 0x18324
movq 0x830(%rsp), %rax
addq 0x820(%rsp), %rax
cmpq $0x2, %rax
movq 0x7f8(%rsp), %r14
jne 0x10451
cmpq $0x1, 0x828(%rsp)
jne 0x10451
leaq 0x223b4(%rip), %rax     # 0x32630
movq %rax, 0x950(%rsp)
movq 0x1a10(%rsp), %rdi
leaq 0x1a20(%rsp), %rax
cmpq %rax, %rdi
je 0x102a9
movq 0x1a20(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7f0(%rsp), %rax
movq %rax, 0x1810(%rsp)
movq -0x18(%rax), %rax
movq 0x810(%rsp), %rcx
movq %rcx, 0x1810(%rsp,%rax)
leaq 0x1818(%rsp), %rdi
callq 0x5310
leaq 0x1908(%rsp), %rdi
callq 0x5150
movq %r13, %rdi
callq 0x7358
movq 0x2b10(%rsp), %rdi
leaq 0x2b20(%rsp), %rax
cmpq %rax, %rdi
je 0x10314
movq 0x2b20(%rsp), %rsi
incq %rsi
callq 0x53b0
incq %r14
movq 0x18(%rbx), %rax
movq 0x20(%rbx), %rcx
subq %rax, %rcx
sarq $0x6, %rcx
movabsq $-0x34115b1e5f75270d, %rdx # imm = 0xCBEEA4E1A08AD8F3
imulq %rdx, %rcx
cmpq %r14, %rcx
ja 0xf9d5
movq 0x22c6c(%rip), %rbx     # 0x32fb0
movq (%rbx), %rax
movq -0x18(%rax), %rcx
movl $0xfffffefb, %edx       # imm = 0xFFFFFEFB
andl 0x18(%rbx,%rcx), %edx
orl $0x4, %edx
movl %edx, 0x18(%rbx,%rcx)
movq -0x18(%rax), %rax
movq $0x0, 0x8(%rbx,%rax)
leaq 0x18511(%rip), %rsi     # 0x28880
movl $0x11, %edx
movq %rbx, %rdi
callq 0x5430
movsd 0x23114(%rip), %xmm0    # 0x33498
movq %rbx, %rdi
callq 0x5570
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x5370
movsbl %al, %esi
movq %r14, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x184d5(%rip), %rsi     # 0x28892
movl $0x12, %edx
movq %rbx, %rdi
callq 0x5430
movsd 0x230be(%rip), %xmm0    # 0x33490
movq %rbx, %rdi
callq 0x5570
movq %rax, %r14
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %r14, %rdi
movl $0xa, %esi
callq 0x5370
movsbl %al, %esi
movq %r14, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
leaq 0x1849a(%rip), %rsi     # 0x288a5
movl $0x13, %edx
movq %rbx, %rdi
callq 0x5430
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x5370
movsbl %al, %esi
movq %rbx, %rdi
callq 0x5050
movq %rax, %rdi
callq 0x5270
addq $0x6d68, %rsp           # imm = 0x6D68
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x18d7c(%rip), %rdi     # 0x291d4
leaq 0x18dfc(%rip), %rsi     # 0x2925b
leaq 0x190a8(%rip), %rcx     # 0x2950e
movl $0x6a, %edx
callq 0x5250
movq %rax, %rbx
movq 0x1a48(%rsp), %rax
addq 0x1a38(%rsp), %rax
cmpq $0x2, %rax
jne 0x10498
cmpq $0x1, 0x1a40(%rsp)
je 0x10775
callq 0x5712
movq %rax, %rbx
movq 0x1a30(%rsp), %rdi
cmpq %r14, %rdi
je 0x104c7
movq 0x1a40(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x104c7
jmp 0x10760
movq %rax, %rbx
movq 0x2b10(%rsp), %rdi
leaq 0x2b20(%rsp), %rax
cmpq %rax, %rdi
je 0x10775
movq 0x2b20(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x10775
movq %rax, %rbx
leaq 0x790(%rsp), %r14
jmp 0x1078a
movq %rax, %rbx
jmp 0x10537
movq %rax, %rbx
jmp 0x10586
movq %rax, %rbx
movq 0x950(%rsp), %rdi
leaq 0x960(%rsp), %rax
cmpq %rax, %rdi
je 0x10537
movq 0x960(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7c8(%rsp), %rdi
leaq 0x7d8(%rsp), %rax
cmpq %rax, %rdi
je 0x10561
movq 0x7d8(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x10561
movq %rax, %rbx
movq 0x1a30(%rsp), %rdi
leaq 0x1a40(%rsp), %rax
cmpq %rax, %rdi
je 0x10586
movq 0x1a40(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x2b10(%rsp), %rdi
leaq 0x2b20(%rsp), %rax
cmpq %rax, %rdi
je 0x107a7
movq 0x2b20(%rsp), %rsi
jmp 0x1079f
jmp 0x105b0
jmp 0x105b0
movq %rax, %rbx
jmp 0x107a7
movq %rax, %rbx
movq 0x830(%rsp), %rax
addq 0x820(%rsp), %rax
cmpq $0x2, %rax
jne 0x105e0
cmpq $0x1, 0x828(%rsp)
je 0x107c4
callq 0x5730
movq %rax, %rbx
jmp 0x10693
movq %rax, %rbx
jmp 0x1066e
movq %rax, %rbx
jmp 0x10649
movq %rax, %rbx
jmp 0x10624
movq %rax, %rbx
movq 0x950(%rsp), %rdi
leaq 0x960(%rsp), %rax
cmpq %rax, %rdi
je 0x10624
movq 0x960(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x818(%rsp), %rdi
leaq 0x828(%rsp), %rax
cmpq %rax, %rdi
je 0x10649
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7a0(%rsp), %rdi
leaq 0x7b0(%rsp), %rax
cmpq %rax, %rdi
je 0x1066e
movq 0x7b0(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x780(%rsp), %rdi
leaq 0x790(%rsp), %rax
cmpq %rax, %rdi
je 0x10693
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7c8(%rsp), %rdi
leaq 0x7d8(%rsp), %rax
cmpq %rax, %rdi
je 0x107f6
movq 0x7d8(%rsp), %rsi
jmp 0x107ee
movq %rax, %rbx
jmp 0x107d1
movq %rax, %rbx
leaq 0x4fe0(%rsp), %rdi
callq 0x7358
jmp 0x107c4
jmp 0x107c1
movq %rax, %rbx
jmp 0x10700
movq %rax, %rbx
movq 0x818(%rsp), %rdi
cmpq %r15, %rdi
je 0x10700
movq 0x828(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x780(%rsp), %rdi
leaq 0x790(%rsp), %rax
cmpq %rax, %rdi
je 0x107c4
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x53b0
jmp 0x107c4
jmp 0x10760
movq %rax, %rbx
leaq 0x2b10(%rsp), %rdi
callq 0x7358
jmp 0x10749
jmp 0x10746
jmp 0x10760
movq %rax, %rbx
leaq 0x790(%rsp), %r14
leaq 0x1a30(%rsp), %rdi
callq 0x182b6
jmp 0x1077d
movq %rax, %rbx
jmp 0x10775
movq %rax, %rbx
leaq 0x5ea0(%rsp), %rdi
callq 0x7358
leaq 0x790(%rsp), %r14
leaq 0x950(%rsp), %rdi
callq 0x182b6
movq 0x780(%rsp), %rdi
cmpq %r14, %rdi
je 0x107a7
movq 0x790(%rsp), %rsi
incq %rsi
callq 0x53b0
movq 0x7a0(%rsp), %rdi
testq %rdi, %rdi
je 0x107f6
movq 0x7b0(%rsp), %rsi
subq %rdi, %rsi
jmp 0x107f1
movq %rax, %rbx
leaq 0x950(%rsp), %rdi
callq 0x182b6
movq 0x2b10(%rsp), %rdi
leaq 0x2b20(%rsp), %rax
cmpq %rax, %rdi
je 0x107f6
movq 0x2b20(%rsp), %rsi
incq %rsi
callq 0x53b0
movq %rbx, %rdi
callq 0x5650