// File: sus304[P]ForRocket/src/factory/rocket_stage_factory.cpp
// Function: forrocket::RocketStageFactory::Create(int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
forrocket::RocketStage forrocket::RocketStageFactory::Create(const int stage_number,
                                                                std::string rocket_config_json_file, 
                                                                std::string engine_config_json_file,
                                                                std::string sequence_of_event_json_file) {
    
    RocketFactory rocket_factory;
    RocketStage rocket_stage(stage_number, rocket_factory.Create(rocket_config_json_file, engine_config_json_file));

    JsonControl jc(sequence_of_event_json_file);

    rocket_stage.time_start = jc.getDouble("Flight Start Time [s]");
    rocket_stage.time_ignittion = jc.getDouble("Engine Ignittion Time [s]");

    rocket_stage.enable_launcher = jc.getBool("Enable Rail-Launcher Launch");
    if (rocket_stage.enable_launcher) {
        rocket_stage.length_launcher_rail = jc.getSubItem("Rail Launcher").getDouble("Length [m]");
    }
    
    rocket_stage.enable_cutoff = jc.getBool("Enable Engine Cutoff");
    if (rocket_stage.enable_cutoff) {
        rocket_stage.time_cutoff = jc.getSubItem("Cutoff").getDouble("Cutoff Time [s]");
        rocket_stage.rocket.engine.burn_duration = rocket_stage.time_cutoff;
    }
    
    rocket_stage.enable_program_attitude = jc.getBool("Enable Program Attitude");
    if (rocket_stage.enable_program_attitude) {
        auto jc_attitude_control = jc.getSubItem("Attitude Control");
        rocket_stage.time_start_attitude_controll = jc_attitude_control.getDouble("Start Time [s]");
        rocket_stage.time_end_attitude_controll = jc_attitude_control.getDouble("End Time [s]");
    }

    rocket_stage.enable_sepation = jc.getBool("Enable Stage Separation");
    if (rocket_stage.enable_sepation) {
        auto jc_separation = jc.getSubItem("Upper Stage");
        rocket_stage.time_separation = jc_separation.getDouble("Stage Separation Time [s]");
        rocket_stage.mass_upper_stage = jc_separation.getDouble("Upper Stage Mass [kg]");
    }

    rocket_stage.enable_despin = jc.getBool("Enable Despin Control");
    if (rocket_stage.enable_despin) {
        rocket_stage.time_despin = jc.getSubItem("Despin").getDouble("Time [s]");
    }

    rocket_stage.enable_fairing_jettson = jc.getBool("Enable Fairing Jettson");
    if (rocket_stage.enable_fairing_jettson) {
        auto jc_fairing_jettson = jc.getSubItem("Fairing");
        rocket_stage.time_jettson_fairing = jc_fairing_jettson.getDouble("Jettson Time [s]");
        rocket_stage.mass_fairing = jc_fairing_jettson.getDouble("Mass [s]");
    }

    rocket_stage.enable_parachute_open = jc.getBool("Enable Parachute Open");
    if (rocket_stage.enable_parachute_open) {
        auto jc_parachute = jc.getSubItem("Parachute");
        rocket_stage.enable_apogee_parachute_open = jc_parachute.getDouble("Enable Forced Apogee Open");
        rocket_stage.time_open_parachute = jc_parachute.getDouble("Open Time [s]");
    }

    rocket_stage.exist_second_parachute = jc.getBool("Enable Secondary Parachute Open");
    if (rocket_stage.exist_second_parachute) {
        auto jc_secondary_parachute = jc.getSubItem("Secondary Parachute");
        rocket_stage.time_open_second_parachute = jc_secondary_parachute.getDouble("Open Time [s]");
    }
    
    if (jc.getBool("Enable Auto Terminate SubOrbital Flight")) {
        double safety_factor = 1.4;
        rocket_stage.time_end = safety_factor * std::abs(60.0 * std::log(rocket_stage.rocket.engine.total_impulse) - 410.0);        
    } else {
        rocket_stage.time_end = jc.getDouble("Flight End Time [s]");
    }
    // rocket_stage.time_step = std::pow(10.0, std::floor((int)std::log10((int)rocket_stage.time_end)+1) - 5);
    rocket_stage.time_step = jc.getDouble("Time Step [s]");
    
    return rocket_stage;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x16f0, %rsp           # imm = 0x16F0
movq %r9, -0x1510(%rbp)
movq %r8, -0x14e8(%rbp)
movq %rcx, -0x1508(%rbp)
movq %rsi, %rax
movq -0x1508(%rbp), %rsi
movq %rdi, -0x1500(%rbp)
movq %rdi, %rcx
movq %rcx, -0x14f8(%rbp)
movq %rdi, -0x8(%rbp)
movq %rax, -0x10(%rbp)
movl %edx, -0x14(%rbp)
movq %rsi, -0x20(%rbp)
movq %r8, -0x28(%rbp)
movq %r9, -0x30(%rbp)
movb $0x0, -0x32(%rbp)
movl -0x14(%rbp), %eax
movl %eax, -0x14ec(%rbp)
leaq -0xed0(%rbp), %rdi
callq 0x6200
movq -0x14e8(%rbp), %rsi
leaq -0xef0(%rbp), %rdi
callq 0x6200
jmp 0x77f40
leaq -0xeb0(%rbp), %rdi
leaq -0x31(%rbp), %rsi
leaq -0xed0(%rbp), %rdx
leaq -0xef0(%rbp), %rcx
callq 0x72e30
jmp 0x77f60
movl -0x14ec(%rbp), %esi
movq -0x1500(%rbp), %rdi
leaq -0xeb0(%rbp), %rdx
callq 0x7a5a0
jmp 0x77f7b
leaq -0xeb0(%rbp), %rdi
callq 0x77d90
leaq -0xef0(%rbp), %rdi
callq 0x6898
leaq -0xed0(%rbp), %rdi
callq 0x6898
movq -0x1510(%rbp), %rsi
leaq -0xf30(%rbp), %rdi
callq 0x6200
jmp 0x77fb4
leaq -0xf10(%rbp), %rdi
leaq -0xf30(%rbp), %rsi
callq 0xa340
jmp 0x77fc9
leaq -0xf30(%rbp), %rdi
callq 0x6898
leaq -0xf51(%rbp), %rdi
movq %rdi, -0x1518(%rbp)
callq 0x6770
movq -0x1518(%rbp), %rdx
leaq 0x2df02(%rip), %rsi     # 0xa5ef8
leaq -0xf50(%rbp), %rdi
callq 0xd1d0
jmp 0x78004
leaq -0xf10(%rbp), %rdi
leaq -0xf50(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1520(%rbp)
jmp 0x78021
movq -0x1500(%rbp), %rax
movsd -0x1520(%rbp), %xmm0
movsd %xmm0, 0x1150(%rax)
leaq -0xf50(%rbp), %rdi
callq 0x6898
leaq -0xf51(%rbp), %rdi
callq 0x6490
leaq -0xf79(%rbp), %rdi
movq %rdi, -0x1528(%rbp)
callq 0x6770
movq -0x1528(%rbp), %rdx
leaq 0x2de9d(%rip), %rsi     # 0xa5f0e
leaq -0xf78(%rbp), %rdi
callq 0xd1d0
jmp 0x7807f
leaq -0xf10(%rbp), %rdi
leaq -0xf78(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1530(%rbp)
jmp 0x7809c
movq -0x1500(%rbp), %rax
movsd -0x1530(%rbp), %xmm0
movsd %xmm0, 0x1158(%rax)
leaq -0xf78(%rbp), %rdi
callq 0x6898
leaq -0xf79(%rbp), %rdi
callq 0x6490
leaq -0xfa1(%rbp), %rdi
movq %rdi, -0x1538(%rbp)
callq 0x6770
movq -0x1538(%rbp), %rdx
leaq 0x2de3c(%rip), %rsi     # 0xa5f28
leaq -0xfa0(%rbp), %rdi
callq 0xd1d0
jmp 0x780fa
leaq -0xf10(%rbp), %rdi
leaq -0xfa0(%rbp), %rsi
callq 0xa5d0
movb %al, -0x1539(%rbp)
jmp 0x78115
movq -0x1500(%rbp), %rax
movb -0x1539(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x1160(%rax)
leaq -0xfa0(%rbp), %rdi
callq 0x6898
leaq -0xfa1(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x1160(%rax)
je 0x7843b
leaq -0xfd9(%rbp), %rdi
movq %rdi, -0x1548(%rbp)
callq 0x6770
movq -0x1548(%rbp), %rdx
leaq 0x2ddcc(%rip), %rsi     # 0xa5f44
leaq -0xfd8(%rbp), %rdi
callq 0xd1d0
jmp 0x78186
leaq -0xfb8(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0xfd8(%rbp), %rdx
callq 0xa600
jmp 0x781a2
leaq -0x1001(%rbp), %rdi
movq %rdi, -0x1550(%rbp)
callq 0x6770
movq -0x1550(%rbp), %rdx
leaq 0x2dd8f(%rip), %rsi     # 0xa5f52
leaq -0x1000(%rbp), %rdi
callq 0xd1d0
jmp 0x781d1
leaq -0xfb8(%rbp), %rdi
leaq -0x1000(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1558(%rbp)
jmp 0x781ee
movq -0x1500(%rbp), %rax
movsd -0x1558(%rbp), %xmm0
movsd %xmm0, 0x1168(%rax)
leaq -0x1000(%rbp), %rdi
callq 0x6898
leaq -0x1001(%rbp), %rdi
callq 0x6490
leaq -0xfb8(%rbp), %rdi
callq 0xaca0
leaq -0xfd8(%rbp), %rdi
callq 0x6898
leaq -0xfd9(%rbp), %rdi
callq 0x6490
jmp 0x7843b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78298
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7828c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0xeb0(%rbp), %rdi
callq 0x77d90
leaq -0xef0(%rbp), %rdi
callq 0x6898
leaq -0xed0(%rbp), %rdi
callq 0x6898
jmp 0x79a85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79a79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0xf30(%rbp), %rdi
callq 0x6898
jmp 0x79a79
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78315
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0xf50(%rbp), %rdi
callq 0x6898
leaq -0xf51(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78358
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0xf78(%rbp), %rdi
callq 0x6898
leaq -0xf79(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7839b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0xfa0(%rbp), %rdi
callq 0x6898
leaq -0xfa1(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7842a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7841e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78406
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1000(%rbp), %rdi
callq 0x6898
leaq -0x1001(%rbp), %rdi
callq 0x6490
leaq -0xfb8(%rbp), %rdi
callq 0xaca0
leaq -0xfd8(%rbp), %rdi
callq 0x6898
leaq -0xfd9(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
leaq -0x1029(%rbp), %rdi
movq %rdi, -0x1560(%rbp)
callq 0x6770
movq -0x1560(%rbp), %rdx
leaq 0x2db01(%rip), %rsi     # 0xa5f5d
leaq -0x1028(%rbp), %rdi
callq 0xd1d0
jmp 0x7846a
leaq -0xf10(%rbp), %rdi
leaq -0x1028(%rbp), %rsi
callq 0xa5d0
movb %al, -0x1561(%rbp)
jmp 0x78485
movq -0x1500(%rbp), %rax
movb -0x1561(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x1170(%rax)
leaq -0x1028(%rbp), %rdi
callq 0x6898
leaq -0x1029(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x1170(%rax)
je 0x7869c
leaq -0x1061(%rbp), %rdi
movq %rdi, -0x1570(%rbp)
callq 0x6770
movq -0x1570(%rbp), %rdx
leaq 0x2da83(%rip), %rsi     # 0xa5f6b
leaq -0x1060(%rbp), %rdi
callq 0xd1d0
jmp 0x784f6
leaq -0x1040(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0x1060(%rbp), %rdx
callq 0xa600
jmp 0x78512
leaq -0x1089(%rbp), %rdi
movq %rdi, -0x1578(%rbp)
callq 0x6770
movq -0x1578(%rbp), %rdx
leaq 0x2da3f(%rip), %rsi     # 0xa5f72
leaq -0x1088(%rbp), %rdi
callq 0xd1d0
jmp 0x78541
leaq -0x1040(%rbp), %rdi
leaq -0x1088(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1580(%rbp)
jmp 0x7855e
movq -0x1500(%rbp), %rax
movsd -0x1580(%rbp), %xmm0
movsd %xmm0, 0x1178(%rax)
leaq -0x1088(%rbp), %rdi
callq 0x6898
leaq -0x1089(%rbp), %rdi
callq 0x6490
leaq -0x1040(%rbp), %rdi
callq 0xaca0
leaq -0x1060(%rbp), %rdi
callq 0x6898
leaq -0x1061(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
movsd 0x1178(%rax), %xmm0
movsd %xmm0, 0x60(%rax)
jmp 0x7869c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x785fc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1028(%rbp), %rdi
callq 0x6898
leaq -0x1029(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7868b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7867f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78667
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1088(%rbp), %rdi
callq 0x6898
leaq -0x1089(%rbp), %rdi
callq 0x6490
leaq -0x1040(%rbp), %rdi
callq 0xaca0
leaq -0x1060(%rbp), %rdi
callq 0x6898
leaq -0x1061(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
leaq -0x10b1(%rbp), %rdi
movq %rdi, -0x1588(%rbp)
callq 0x6770
movq -0x1588(%rbp), %rdx
leaq 0x2d50b(%rip), %rsi     # 0xa5bc8
leaq -0x10b0(%rbp), %rdi
callq 0xd1d0
jmp 0x786cb
leaq -0xf10(%rbp), %rdi
leaq -0x10b0(%rbp), %rsi
callq 0xa5d0
movb %al, -0x1589(%rbp)
jmp 0x786e6
movq -0x1500(%rbp), %rax
movb -0x1589(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x1180(%rax)
leaq -0x10b0(%rbp), %rdi
callq 0x6898
leaq -0x10b1(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x1180(%rax)
je 0x789a7
leaq -0x10e9(%rbp), %rdi
movq %rdi, -0x1598(%rbp)
callq 0x6770
movq -0x1598(%rbp), %rdx
leaq 0x2d839(%rip), %rsi     # 0xa5f82
leaq -0x10e8(%rbp), %rdi
callq 0xd1d0
jmp 0x78757
leaq -0x10c8(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0x10e8(%rbp), %rdx
callq 0xa600
jmp 0x78773
leaq -0x10e8(%rbp), %rdi
callq 0x6898
leaq -0x10e9(%rbp), %rdi
callq 0x6490
leaq -0x1111(%rbp), %rdi
movq %rdi, -0x15a0(%rbp)
callq 0x6770
movq -0x15a0(%rbp), %rdx
leaq 0x2d753(%rip), %rsi     # 0xa5eff
leaq -0x1110(%rbp), %rdi
callq 0xd1d0
jmp 0x787ba
leaq -0x10c8(%rbp), %rdi
leaq -0x1110(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x15a8(%rbp)
jmp 0x787d7
movq -0x1500(%rbp), %rax
movsd -0x15a8(%rbp), %xmm0
movsd %xmm0, 0x1188(%rax)
leaq -0x1110(%rbp), %rdi
callq 0x6898
leaq -0x1111(%rbp), %rdi
callq 0x6490
leaq -0x1139(%rbp), %rdi
movq %rdi, -0x15b0(%rbp)
callq 0x6770
movq -0x15b0(%rbp), %rdx
leaq 0x2d8b7(%rip), %rsi     # 0xa60de
leaq -0x1138(%rbp), %rdi
callq 0xd1d0
jmp 0x78835
leaq -0x10c8(%rbp), %rdi
leaq -0x1138(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x15b8(%rbp)
jmp 0x78852
movq -0x1500(%rbp), %rax
movsd -0x15b8(%rbp), %xmm0
movsd %xmm0, 0x1190(%rax)
leaq -0x1138(%rbp), %rdi
callq 0x6898
leaq -0x1139(%rbp), %rdi
callq 0x6490
leaq -0x10c8(%rbp), %rdi
callq 0xaca0
jmp 0x789a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x788c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x10b0(%rbp), %rdi
callq 0x6898
leaq -0x10b1(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78907
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x10e8(%rbp), %rdi
callq 0x6898
leaq -0x10e9(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7894a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1110(%rbp), %rdi
callq 0x6898
leaq -0x1111(%rbp), %rdi
callq 0x6490
jmp 0x78996
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7898a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1138(%rbp), %rdi
callq 0x6898
leaq -0x1139(%rbp), %rdi
callq 0x6490
leaq -0x10c8(%rbp), %rdi
callq 0xaca0
jmp 0x79a4f
leaq -0x1161(%rbp), %rdi
movq %rdi, -0x15c0(%rbp)
callq 0x6770
movq -0x15c0(%rbp), %rdx
leaq 0x2d5cb(%rip), %rsi     # 0xa5f93
leaq -0x1160(%rbp), %rdi
callq 0xd1d0
jmp 0x789d6
leaq -0xf10(%rbp), %rdi
leaq -0x1160(%rbp), %rsi
callq 0xa5d0
movb %al, -0x15c1(%rbp)
jmp 0x789f1
movq -0x1500(%rbp), %rax
movb -0x15c1(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x1198(%rax)
leaq -0x1160(%rbp), %rdi
callq 0x6898
leaq -0x1161(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x1198(%rax)
je 0x78cb2
leaq -0x1199(%rbp), %rdi
movq %rdi, -0x15d0(%rbp)
callq 0x6770
movq -0x15d0(%rbp), %rdx
leaq 0x2d557(%rip), %rsi     # 0xa5fab
leaq -0x1198(%rbp), %rdi
callq 0xd1d0
jmp 0x78a62
leaq -0x1178(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0x1198(%rbp), %rdx
callq 0xa600
jmp 0x78a7e
leaq -0x1198(%rbp), %rdi
callq 0x6898
leaq -0x1199(%rbp), %rdi
callq 0x6490
leaq -0x11c1(%rbp), %rdi
movq %rdi, -0x15d8(%rbp)
callq 0x6770
movq -0x15d8(%rbp), %rdx
leaq 0x2d500(%rip), %rsi     # 0xa5fb7
leaq -0x11c0(%rbp), %rdi
callq 0xd1d0
jmp 0x78ac5
leaq -0x1178(%rbp), %rdi
leaq -0x11c0(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x15e0(%rbp)
jmp 0x78ae2
movq -0x1500(%rbp), %rax
movsd -0x15e0(%rbp), %xmm0
movsd %xmm0, 0x11a0(%rax)
leaq -0x11c0(%rbp), %rdi
callq 0x6898
leaq -0x11c1(%rbp), %rdi
callq 0x6490
leaq -0x11e9(%rbp), %rdi
movq %rdi, -0x15e8(%rbp)
callq 0x6770
movq -0x15e8(%rbp), %rdx
leaq 0x2d49f(%rip), %rsi     # 0xa5fd1
leaq -0x11e8(%rbp), %rdi
callq 0xd1d0
jmp 0x78b40
leaq -0x1178(%rbp), %rdi
leaq -0x11e8(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x15f0(%rbp)
jmp 0x78b5d
movq -0x1500(%rbp), %rax
movsd -0x15f0(%rbp), %xmm0
movsd %xmm0, 0x11a8(%rax)
leaq -0x11e8(%rbp), %rdi
callq 0x6898
leaq -0x11e9(%rbp), %rdi
callq 0x6490
leaq -0x1178(%rbp), %rdi
callq 0xaca0
jmp 0x78cb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78bcf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1160(%rbp), %rdi
callq 0x6898
leaq -0x1161(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78c12
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1198(%rbp), %rdi
callq 0x6898
leaq -0x1199(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78c55
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x11c0(%rbp), %rdi
callq 0x6898
leaq -0x11c1(%rbp), %rdi
callq 0x6490
jmp 0x78ca1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78c95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x11e8(%rbp), %rdi
callq 0x6898
leaq -0x11e9(%rbp), %rdi
callq 0x6490
leaq -0x1178(%rbp), %rdi
callq 0xaca0
jmp 0x79a4f
leaq -0x1211(%rbp), %rdi
movq %rdi, -0x15f8(%rbp)
callq 0x6770
movq -0x15f8(%rbp), %rdx
leaq 0x2d314(%rip), %rsi     # 0xa5fe7
leaq -0x1210(%rbp), %rdi
callq 0xd1d0
jmp 0x78ce1
leaq -0xf10(%rbp), %rdi
leaq -0x1210(%rbp), %rsi
callq 0xa5d0
movb %al, -0x15f9(%rbp)
jmp 0x78cfc
movq -0x1500(%rbp), %rax
movb -0x15f9(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x11b0(%rax)
leaq -0x1210(%rbp), %rdi
callq 0x6898
leaq -0x1211(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x11b0(%rax)
je 0x78eff
leaq -0x1249(%rbp), %rdi
movq %rdi, -0x1608(%rbp)
callq 0x6770
movq -0x1608(%rbp), %rdx
leaq 0x2d29e(%rip), %rsi     # 0xa5ffd
leaq -0x1248(%rbp), %rdi
callq 0xd1d0
jmp 0x78d6d
leaq -0x1228(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0x1248(%rbp), %rdx
callq 0xa600
jmp 0x78d89
leaq -0x1271(%rbp), %rdi
movq %rdi, -0x1610(%rbp)
callq 0x6770
movq -0x1610(%rbp), %rdx
leaq 0x2d338(%rip), %rsi     # 0xa60e2
leaq -0x1270(%rbp), %rdi
callq 0xd1d0
jmp 0x78db8
leaq -0x1228(%rbp), %rdi
leaq -0x1270(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1618(%rbp)
jmp 0x78dd5
movq -0x1500(%rbp), %rax
movsd -0x1618(%rbp), %xmm0
movsd %xmm0, 0x11b8(%rax)
leaq -0x1270(%rbp), %rdi
callq 0x6898
leaq -0x1271(%rbp), %rdi
callq 0x6490
leaq -0x1228(%rbp), %rdi
callq 0xaca0
leaq -0x1248(%rbp), %rdi
callq 0x6898
leaq -0x1249(%rbp), %rdi
callq 0x6490
jmp 0x78eff
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78e5f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1210(%rbp), %rdi
callq 0x6898
leaq -0x1211(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78eee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78ee2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x78eca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1270(%rbp), %rdi
callq 0x6898
leaq -0x1271(%rbp), %rdi
callq 0x6490
leaq -0x1228(%rbp), %rdi
callq 0xaca0
leaq -0x1248(%rbp), %rdi
callq 0x6898
leaq -0x1249(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
leaq -0x1299(%rbp), %rdi
movq %rdi, -0x1620(%rbp)
callq 0x6770
movq -0x1620(%rbp), %rdx
leaq 0x2d0e4(%rip), %rsi     # 0xa6004
leaq -0x1298(%rbp), %rdi
callq 0xd1d0
jmp 0x78f2e
leaq -0xf10(%rbp), %rdi
leaq -0x1298(%rbp), %rsi
callq 0xa5d0
movb %al, -0x1621(%rbp)
jmp 0x78f49
movq -0x1500(%rbp), %rax
movb -0x1621(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x11c0(%rax)
leaq -0x1298(%rbp), %rdi
callq 0x6898
leaq -0x1299(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x11c0(%rax)
je 0x7920a
leaq -0x12d1(%rbp), %rdi
movq %rdi, -0x1630(%rbp)
callq 0x6770
movq -0x1630(%rbp), %rdx
leaq 0x2d06f(%rip), %rsi     # 0xa601b
leaq -0x12d0(%rbp), %rdi
callq 0xd1d0
jmp 0x78fba
leaq -0x12b0(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0x12d0(%rbp), %rdx
callq 0xa600
jmp 0x78fd6
leaq -0x12d0(%rbp), %rdi
callq 0x6898
leaq -0x12d1(%rbp), %rdi
callq 0x6490
leaq -0x12f9(%rbp), %rdi
movq %rdi, -0x1638(%rbp)
callq 0x6770
movq -0x1638(%rbp), %rdx
leaq 0x2d014(%rip), %rsi     # 0xa6023
leaq -0x12f8(%rbp), %rdi
callq 0xd1d0
jmp 0x7901d
leaq -0x12b0(%rbp), %rdi
leaq -0x12f8(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1640(%rbp)
jmp 0x7903a
movq -0x1500(%rbp), %rax
movsd -0x1640(%rbp), %xmm0
movsd %xmm0, 0x11c8(%rax)
leaq -0x12f8(%rbp), %rdi
callq 0x6898
leaq -0x12f9(%rbp), %rdi
callq 0x6490
leaq -0x1321(%rbp), %rdi
movq %rdi, -0x1648(%rbp)
callq 0x6770
movq -0x1648(%rbp), %rdx
leaq 0x2cfaa(%rip), %rsi     # 0xa6034
leaq -0x1320(%rbp), %rdi
callq 0xd1d0
jmp 0x79098
leaq -0x12b0(%rbp), %rdi
leaq -0x1320(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1650(%rbp)
jmp 0x790b5
movq -0x1500(%rbp), %rax
movsd -0x1650(%rbp), %xmm0
movsd %xmm0, 0x11d0(%rax)
leaq -0x1320(%rbp), %rdi
callq 0x6898
leaq -0x1321(%rbp), %rdi
callq 0x6490
leaq -0x12b0(%rbp), %rdi
callq 0xaca0
jmp 0x7920a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79127
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1298(%rbp), %rdi
callq 0x6898
leaq -0x1299(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7916a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x12d0(%rbp), %rdi
callq 0x6898
leaq -0x12d1(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x791ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x12f8(%rbp), %rdi
callq 0x6898
leaq -0x12f9(%rbp), %rdi
callq 0x6490
jmp 0x791f9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x791ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1320(%rbp), %rdi
callq 0x6898
leaq -0x1321(%rbp), %rdi
callq 0x6490
leaq -0x12b0(%rbp), %rdi
callq 0xaca0
jmp 0x79a4f
leaq -0x1349(%rbp), %rdi
movq %rdi, -0x1658(%rbp)
callq 0x6770
movq -0x1658(%rbp), %rdx
leaq 0x2ce12(%rip), %rsi     # 0xa603d
leaq -0x1348(%rbp), %rdi
callq 0xd1d0
jmp 0x79239
leaq -0xf10(%rbp), %rdi
leaq -0x1348(%rbp), %rsi
callq 0xa5d0
movb %al, -0x1659(%rbp)
jmp 0x79254
movq -0x1500(%rbp), %rax
movb -0x1659(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x11d8(%rax)
leaq -0x1348(%rbp), %rdi
callq 0x6898
leaq -0x1349(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x11d8(%rax)
je 0x79522
leaq -0x1381(%rbp), %rdi
movq %rdi, -0x1668(%rbp)
callq 0x6770
movq -0x1668(%rbp), %rdx
leaq 0x2cdee(%rip), %rsi     # 0xa60a5
leaq -0x1380(%rbp), %rdi
callq 0xd1d0
jmp 0x792c5
leaq -0x1360(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0x1380(%rbp), %rdx
callq 0xa600
jmp 0x792e1
leaq -0x1380(%rbp), %rdi
callq 0x6898
leaq -0x1381(%rbp), %rdi
callq 0x6490
leaq -0x13a9(%rbp), %rdi
movq %rdi, -0x1670(%rbp)
callq 0x6770
movq -0x1670(%rbp), %rdx
leaq 0x2cd39(%rip), %rsi     # 0xa6053
leaq -0x13a8(%rbp), %rdi
callq 0xd1d0
jmp 0x79328
leaq -0x1360(%rbp), %rdi
leaq -0x13a8(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1678(%rbp)
jmp 0x79345
movq -0x1500(%rbp), %rax
movsd -0x1678(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
setp %dl
setne %cl
orb %dl, %cl
movb %cl, 0x11d9(%rax)
leaq -0x13a8(%rbp), %rdi
callq 0x6898
leaq -0x13a9(%rbp), %rdi
callq 0x6490
leaq -0x13d1(%rbp), %rdi
movq %rdi, -0x1680(%rbp)
callq 0x6770
movq -0x1680(%rbp), %rdx
leaq 0x2cccb(%rip), %rsi     # 0xa606d
leaq -0x13d0(%rbp), %rdi
callq 0xd1d0
jmp 0x793b0
leaq -0x1360(%rbp), %rdi
leaq -0x13d0(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x1688(%rbp)
jmp 0x793cd
movq -0x1500(%rbp), %rax
movsd -0x1688(%rbp), %xmm0
movsd %xmm0, 0x11e0(%rax)
leaq -0x13d0(%rbp), %rdi
callq 0x6898
leaq -0x13d1(%rbp), %rdi
callq 0x6490
leaq -0x1360(%rbp), %rdi
callq 0xaca0
jmp 0x79522
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7943f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1348(%rbp), %rdi
callq 0x6898
leaq -0x1349(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79482
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1380(%rbp), %rdi
callq 0x6898
leaq -0x1381(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x794c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x13a8(%rbp), %rdi
callq 0x6898
leaq -0x13a9(%rbp), %rdi
callq 0x6490
jmp 0x79511
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79505
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x13d0(%rbp), %rdi
callq 0x6898
leaq -0x13d1(%rbp), %rdi
callq 0x6490
leaq -0x1360(%rbp), %rdi
callq 0xaca0
jmp 0x79a4f
leaq -0x13f9(%rbp), %rdi
movq %rdi, -0x1690(%rbp)
callq 0x6770
movq -0x1690(%rbp), %rdx
leaq 0x2cb38(%rip), %rsi     # 0xa607b
leaq -0x13f8(%rbp), %rdi
callq 0xd1d0
jmp 0x79551
leaq -0xf10(%rbp), %rdi
leaq -0x13f8(%rbp), %rsi
callq 0xa5d0
movb %al, -0x1691(%rbp)
jmp 0x7956c
movq -0x1500(%rbp), %rax
movb -0x1691(%rbp), %cl
andb $0x1, %cl
movb %cl, 0x11e8(%rax)
leaq -0x13f8(%rbp), %rdi
callq 0x6898
leaq -0x13f9(%rbp), %rdi
callq 0x6490
movq -0x1500(%rbp), %rax
testb $0x1, 0x11e8(%rax)
je 0x79772
leaq -0x1431(%rbp), %rdi
movq %rdi, -0x16a0(%rbp)
callq 0x6770
movq -0x16a0(%rbp), %rdx
leaq 0x2cacc(%rip), %rsi     # 0xa609b
leaq -0x1430(%rbp), %rdi
callq 0xd1d0
jmp 0x795dd
leaq -0x1410(%rbp), %rdi
leaq -0xf10(%rbp), %rsi
leaq -0x1430(%rbp), %rdx
callq 0xa600
jmp 0x795f9
leaq -0x1430(%rbp), %rdi
callq 0x6898
leaq -0x1431(%rbp), %rdi
callq 0x6490
leaq -0x1459(%rbp), %rdi
movq %rdi, -0x16a8(%rbp)
callq 0x6770
movq -0x16a8(%rbp), %rdx
leaq 0x2ca3b(%rip), %rsi     # 0xa606d
leaq -0x1458(%rbp), %rdi
callq 0xd1d0
jmp 0x79640
leaq -0x1410(%rbp), %rdi
leaq -0x1458(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x16b0(%rbp)
jmp 0x7965d
movq -0x1500(%rbp), %rax
movsd -0x16b0(%rbp), %xmm0
movsd %xmm0, 0x11f0(%rax)
leaq -0x1458(%rbp), %rdi
callq 0x6898
leaq -0x1459(%rbp), %rdi
callq 0x6490
leaq -0x1410(%rbp), %rdi
callq 0xaca0
jmp 0x79772
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x796cf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x13f8(%rbp), %rdi
callq 0x6898
leaq -0x13f9(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79712
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1430(%rbp), %rdi
callq 0x6898
leaq -0x1431(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79755
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1458(%rbp), %rdi
callq 0x6898
leaq -0x1459(%rbp), %rdi
callq 0x6490
leaq -0x1410(%rbp), %rdi
callq 0xaca0
jmp 0x79a4f
leaq -0x1481(%rbp), %rdi
movq %rdi, -0x16b8(%rbp)
callq 0x6770
movq -0x16b8(%rbp), %rdx
leaq 0x2c91c(%rip), %rsi     # 0xa60af
leaq -0x1480(%rbp), %rdi
callq 0xd1d0
jmp 0x797a1
leaq -0xf10(%rbp), %rdi
leaq -0x1480(%rbp), %rsi
callq 0xa5d0
movb %al, -0x16b9(%rbp)
jmp 0x797bc
leaq -0x1480(%rbp), %rdi
callq 0x6898
leaq -0x1481(%rbp), %rdi
callq 0x6490
movb -0x16b9(%rbp), %al
testb $0x1, %al
jne 0x797e3
jmp 0x798be
movq -0x1500(%rbp), %rax
movabsq $0x3ff6666666666666, %rcx # imm = 0x3FF6666666666666
movq %rcx, -0x1490(%rbp)
movsd -0x1490(%rbp), %xmm0
movsd %xmm0, -0x16d0(%rbp)
movsd 0x78(%rax), %xmm0
callq 0x6390
movsd 0x1d81b(%rip), %xmm1    # 0x97038
mulsd %xmm1, %xmm0
movsd 0x2c6c7(%rip), %xmm1    # 0xa5ef0
addsd %xmm1, %xmm0
callq 0x373a0
movsd %xmm0, -0x16c8(%rbp)
jmp 0x7983c
movq -0x1500(%rbp), %rax
movsd -0x16c8(%rbp), %xmm1
movsd -0x16d0(%rbp), %xmm0
mulsd %xmm1, %xmm0
movsd %xmm0, 0x11f8(%rax)
jmp 0x7997e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79896
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x1480(%rbp), %rdi
callq 0x6898
leaq -0x1481(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79a4f
leaq -0x14b1(%rbp), %rdi
movq %rdi, -0x16d8(%rbp)
callq 0x6770
movq -0x16d8(%rbp), %rdx
leaq 0x2c7f8(%rip), %rsi     # 0xa60d7
leaq -0x14b0(%rbp), %rdi
callq 0xd1d0
jmp 0x798ed
leaq -0xf10(%rbp), %rdi
leaq -0x14b0(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x16e0(%rbp)
jmp 0x7990a
movq -0x1500(%rbp), %rax
movsd -0x16e0(%rbp), %xmm0
movsd %xmm0, 0x11f8(%rax)
leaq -0x14b0(%rbp), %rdi
callq 0x6898
leaq -0x14b1(%rbp), %rdi
callq 0x6490
jmp 0x7997e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x7996d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x14b0(%rbp), %rdi
callq 0x6898
leaq -0x14b1(%rbp), %rdi
callq 0x6490
jmp 0x79a4f
leaq -0x14d9(%rbp), %rdi
movq %rdi, -0x16e8(%rbp)
callq 0x6770
movq -0x16e8(%rbp), %rdx
leaq 0x2c74c(%rip), %rsi     # 0xa60eb
leaq -0x14d8(%rbp), %rdi
callq 0xd1d0
jmp 0x799ad
leaq -0xf10(%rbp), %rdi
leaq -0x14d8(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x16f0(%rbp)
jmp 0x799ca
movq -0x1500(%rbp), %rax
movsd -0x16f0(%rbp), %xmm0
movsd %xmm0, 0x1200(%rax)
leaq -0x14d8(%rbp), %rdi
callq 0x6898
leaq -0x14d9(%rbp), %rdi
callq 0x6490
movb $0x1, -0x32(%rbp)
leaq -0xf10(%rbp), %rdi
callq 0xaca0
testb $0x1, -0x32(%rbp)
jne 0x79a69
jmp 0x79a5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
jmp 0x79a43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xef8(%rbp)
movl %eax, -0xefc(%rbp)
leaq -0x14d8(%rbp), %rdi
callq 0x6898
leaq -0x14d9(%rbp), %rdi
callq 0x6490
leaq -0xf10(%rbp), %rdi
callq 0xaca0
jmp 0x79a79
movq -0x1500(%rbp), %rdi
callq 0x79aa0
movq -0x14f8(%rbp), %rax
addq $0x16f0, %rsp           # imm = 0x16F0
popq %rbp
retq
movq -0x1500(%rbp), %rdi
callq 0x79aa0
movq -0xef8(%rbp), %rdi
callq 0x6760
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)