// File: sus304[P]ForRocket/src/factory/engine_factory.cpp
// Function: forrocket::EngineFactory::Create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
forrocket::Engine forrocket::EngineFactory::Create(std::string engine_config_json_file) {
    JsonControl jc(engine_config_json_file);

    double diameter_exit = jc.getDouble("Nozzle Exit Diameter [mm]") / 1e3;
    double area_exit = 0.25 * std::pow(diameter_exit, 2) * pi;

    bool enable_mis_alignment = jc.getBool("Enable Engine Miss Alignment");
    if (jc.getBool("Enable Thrust File")) {
        JsonControl jc_file = jc.getSubItem("Thrust File");
        auto thrust_log = LoadCsvLog(jc_file.getString("Thrust at vacuum File Path"));
        if (enable_mis_alignment) {
            double mis_alignment_y = jc.getSubItem("Engine Miss-Alignment").getDouble("y-Axis Angle [deg]") / 180.0 * 3.14159265;
            double mis_alignment_z = jc.getSubItem("Engine Miss-Alignment").getDouble("z-Axis Angle [deg]") / 180.0 * 3.14159265;
            return Engine(thrust_log[0], thrust_log[1], thrust_log[2], area_exit, mis_alignment_y, mis_alignment_z);
        } else {
            return Engine(thrust_log[0], thrust_log[1], thrust_log[2], area_exit);
        }
    } else {
        JsonControl jc_const = jc.getSubItem("Constant Thrust");
        double thrust = jc_const.getDouble("Thrust at vacuum [N]");
        double mdot_p = jc_const.getDouble("Propellant Mass Flow Rate [kg/s]");
        double burn_duration = jc_const.getDouble("Burn Duration [sec]");
        if (enable_mis_alignment) {
            double mis_alignment_y = jc.getSubItem("Engine Miss-Alignment").getDouble("y-Axis Angle [deg]") / 180.0 * 3.14159265;
            double mis_alignment_z = jc.getSubItem("Engine Miss-Alignment").getDouble("z-Axis Angle [deg]") / 180.0 * 3.14159265;
            return Engine(burn_duration, thrust, mdot_p, area_exit, mis_alignment_y, mis_alignment_z);
        } else {
            return Engine(burn_duration, thrust, mdot_p, area_exit);
        }
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x5b0, %rsp            # imm = 0x5B0
movq %rdx, -0x4a0(%rbp)
movq %rsi, %rax
movq -0x4a0(%rbp), %rsi
movq %rdi, -0x498(%rbp)
movq %rdi, %rcx
movq %rcx, -0x490(%rbp)
movq %rdi, -0x8(%rbp)
movq %rax, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
leaq -0x48(%rbp), %rdi
movq %rdi, -0x488(%rbp)
callq 0x6200
movq -0x488(%rbp), %rsi
leaq -0x28(%rbp), %rdi
callq 0xa340
jmp 0x71e3b
leaq -0x48(%rbp), %rdi
callq 0x6898
leaq -0x81(%rbp), %rdi
movq %rdi, -0x4a8(%rbp)
callq 0x6770
movq -0x4a8(%rbp), %rdx
leaq 0x33c3c(%rip), %rsi     # 0xa5aa1
leaq -0x80(%rbp), %rdi
callq 0xd1d0
jmp 0x71e70
leaq -0x28(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x4b0(%rbp)
jmp 0x71e87
movsd -0x4b0(%rbp), %xmm0
movsd 0x25181(%rip), %xmm1    # 0x97018
divsd %xmm1, %xmm0
movsd %xmm0, -0x4c0(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x6898
leaq -0x81(%rbp), %rdi
callq 0x6490
movsd -0x4c0(%rbp), %xmm0
movsd %xmm0, -0x60(%rbp)
movsd -0x60(%rbp), %xmm0
movl $0x2, %edi
callq 0x283f0
movsd %xmm0, -0x4b8(%rbp)
jmp 0x71ede
movsd -0x4b8(%rbp), %xmm0
movsd 0x251b2(%rip), %xmm1    # 0x970a0
mulsd %xmm1, %xmm0
movsd 0x1f116(%rip), %xmm1    # 0x91010
mulsd %xmm1, %xmm0
movsd %xmm0, -0x90(%rbp)
leaq -0xb9(%rbp), %rdi
movq %rdi, -0x4c8(%rbp)
callq 0x6770
movq -0x4c8(%rbp), %rdx
leaq 0x33b94(%rip), %rsi     # 0xa5abb
leaq -0xb8(%rbp), %rdi
callq 0xd1d0
jmp 0x71f35
leaq -0x28(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0xa5d0
movb %al, -0x4c9(%rbp)
jmp 0x71f4d
leaq -0xb8(%rbp), %rdi
callq 0x6898
leaq -0xb9(%rbp), %rdi
callq 0x6490
movb -0x4c9(%rbp), %al
andb $0x1, %al
movb %al, -0x91(%rbp)
leaq -0xe1(%rbp), %rdi
movq %rdi, -0x4d8(%rbp)
callq 0x6770
movq -0x4d8(%rbp), %rdx
leaq 0x33b44(%rip), %rsi     # 0xa5ad8
leaq -0xe0(%rbp), %rdi
callq 0xd1d0
jmp 0x71fa2
leaq -0x28(%rbp), %rdi
leaq -0xe0(%rbp), %rsi
callq 0xa5d0
movb %al, -0x4d9(%rbp)
jmp 0x71fba
leaq -0xe0(%rbp), %rdi
callq 0x6898
leaq -0xe1(%rbp), %rdi
callq 0x6490
movb -0x4d9(%rbp), %al
testb $0x1, %al
jne 0x71fe1
jmp 0x727a7
leaq -0x119(%rbp), %rdi
movq %rdi, -0x4e8(%rbp)
callq 0x6770
movq -0x4e8(%rbp), %rdx
leaq 0x33add(%rip), %rsi     # 0xa5adf
leaq -0x118(%rbp), %rdi
callq 0xd1d0
jmp 0x72010
leaq -0xf8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x118(%rbp), %rdx
callq 0xa600
jmp 0x72029
leaq -0x118(%rbp), %rdi
callq 0x6898
leaq -0x119(%rbp), %rdi
callq 0x6490
leaq -0x179(%rbp), %rdi
movq %rdi, -0x4f0(%rbp)
callq 0x6770
movq -0x4f0(%rbp), %rdx
leaq 0x33a89(%rip), %rsi     # 0xa5aeb
leaq -0x178(%rbp), %rdi
callq 0xd1d0
jmp 0x72070
leaq -0x158(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
leaq -0x178(%rbp), %rdx
callq 0xa520
jmp 0x7208c
leaq -0x138(%rbp), %rdi
leaq -0x158(%rbp), %rsi
movl $0x1, %edx
callq 0x71d0
jmp 0x720a6
leaq -0x158(%rbp), %rdi
callq 0x6898
leaq -0x178(%rbp), %rdi
callq 0x6898
leaq -0x179(%rbp), %rdi
callq 0x6490
testb $0x1, -0x91(%rbp)
je 0x7265f
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x4f8(%rbp)
callq 0x6770
movq -0x4f8(%rbp), %rdx
leaq 0x33a0e(%rip), %rsi     # 0xa5b06
leaq -0x1b8(%rbp), %rdi
callq 0xd1d0
jmp 0x72106
leaq -0x198(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x1b8(%rbp), %rdx
callq 0xa600
jmp 0x7211f
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x500(%rbp)
callq 0x6770
movq -0x500(%rbp), %rdx
leaq 0x339dc(%rip), %rsi     # 0xa5b1c
leaq -0x1e0(%rbp), %rdi
callq 0xd1d0
jmp 0x7214e
leaq -0x198(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x508(%rbp)
jmp 0x7216b
movsd -0x508(%rbp), %xmm0
movsd 0x1ee8d(%rip), %xmm1    # 0x91008
divsd %xmm1, %xmm0
movsd 0x1ee89(%rip), %xmm1    # 0x91010
mulsd %xmm1, %xmm0
movsd %xmm0, -0x518(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x6898
leaq -0x1e1(%rbp), %rdi
callq 0x6490
leaq -0x198(%rbp), %rdi
callq 0xaca0
leaq -0x1b8(%rbp), %rdi
callq 0x6898
leaq -0x1b9(%rbp), %rdi
callq 0x6490
movsd -0x518(%rbp), %xmm0
movsd %xmm0, -0x188(%rbp)
leaq -0x221(%rbp), %rdi
movq %rdi, -0x510(%rbp)
callq 0x6770
movq -0x510(%rbp), %rdx
leaq 0x33906(%rip), %rsi     # 0xa5b06
leaq -0x220(%rbp), %rdi
callq 0xd1d0
jmp 0x7220e
leaq -0x200(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x220(%rbp), %rdx
callq 0xa600
jmp 0x72227
leaq -0x249(%rbp), %rdi
movq %rdi, -0x520(%rbp)
callq 0x6770
movq -0x520(%rbp), %rdx
leaq 0x338e7(%rip), %rsi     # 0xa5b2f
leaq -0x248(%rbp), %rdi
callq 0xd1d0
jmp 0x72256
leaq -0x200(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x528(%rbp)
jmp 0x72273
movsd -0x528(%rbp), %xmm0
movsd 0x1ed85(%rip), %xmm1    # 0x91008
divsd %xmm1, %xmm0
movsd 0x1ed81(%rip), %xmm1    # 0x91010
mulsd %xmm1, %xmm0
movsd %xmm0, -0x530(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x6898
leaq -0x249(%rbp), %rdi
callq 0x6490
leaq -0x200(%rbp), %rdi
callq 0xaca0
leaq -0x220(%rbp), %rdi
callq 0x6898
leaq -0x221(%rbp), %rdi
callq 0x6490
movsd -0x530(%rbp), %xmm0
movsd %xmm0, -0x1f0(%rbp)
xorl %eax, %eax
movl %eax, %esi
leaq -0x138(%rbp), %rdi
callq 0x77c0
movq %rax, %rsi
leaq -0x268(%rbp), %rdi
callq 0x85f0
jmp 0x72308
leaq -0x138(%rbp), %rdi
movl $0x1, %esi
callq 0x77c0
movq %rax, %rsi
leaq -0x280(%rbp), %rdi
callq 0x85f0
jmp 0x7232a
leaq -0x138(%rbp), %rdi
movl $0x2, %esi
callq 0x77c0
movq %rax, %rsi
leaq -0x298(%rbp), %rdi
callq 0x85f0
jmp 0x7234c
movq -0x498(%rbp), %rdi
movsd -0x90(%rbp), %xmm0
movsd -0x188(%rbp), %xmm1
movsd -0x1f0(%rbp), %xmm2
leaq -0x268(%rbp), %rsi
leaq -0x280(%rbp), %rdx
leaq -0x298(%rbp), %rcx
callq 0x439c0
jmp 0x72387
leaq -0x298(%rbp), %rdi
callq 0x7760
leaq -0x280(%rbp), %rdi
callq 0x7760
leaq -0x268(%rbp), %rdi
callq 0x7760
movl $0x1, -0x29c(%rbp)
jmp 0x7276d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x6898
jmp 0x72e18
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x723f7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x80(%rbp), %rdi
callq 0x6898
leaq -0x81(%rbp), %rdi
callq 0x6490
jmp 0x72e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7243f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xb8(%rbp), %rdi
callq 0x6898
leaq -0xb9(%rbp), %rdi
callq 0x6490
jmp 0x72e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72476
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xe0(%rbp), %rdi
callq 0x6898
leaq -0xe1(%rbp), %rdi
callq 0x6490
jmp 0x72e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x724ad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x6898
leaq -0x119(%rbp), %rdi
callq 0x6490
jmp 0x72e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x724fe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x724f2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x158(%rbp), %rdi
callq 0x6898
leaq -0x178(%rbp), %rdi
callq 0x6898
leaq -0x179(%rbp), %rdi
callq 0x6490
jmp 0x72796
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72575
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72569
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72551
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1e0(%rbp), %rdi
callq 0x6898
leaq -0x1e1(%rbp), %rdi
callq 0x6490
leaq -0x198(%rbp), %rdi
callq 0xaca0
leaq -0x1b8(%rbp), %rdi
callq 0x6898
leaq -0x1b9(%rbp), %rdi
callq 0x6490
jmp 0x7278a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x725ec
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x725e0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x725c8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x6898
leaq -0x249(%rbp), %rdi
callq 0x6490
leaq -0x200(%rbp), %rdi
callq 0xaca0
leaq -0x220(%rbp), %rdi
callq 0x6898
leaq -0x221(%rbp), %rdi
callq 0x6490
jmp 0x7278a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7278a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7264e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72642
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x7760
leaq -0x280(%rbp), %rdi
callq 0x7760
leaq -0x268(%rbp), %rdi
callq 0x7760
jmp 0x7278a
xorl %eax, %eax
movl %eax, %esi
leaq -0x138(%rbp), %rdi
callq 0x77c0
movq %rax, %rsi
leaq -0x2b8(%rbp), %rdi
callq 0x85f0
jmp 0x72680
leaq -0x138(%rbp), %rdi
movl $0x1, %esi
callq 0x77c0
movq %rax, %rsi
leaq -0x2d0(%rbp), %rdi
callq 0x85f0
jmp 0x726a2
leaq -0x138(%rbp), %rdi
movl $0x2, %esi
callq 0x77c0
movq %rax, %rsi
leaq -0x2e8(%rbp), %rdi
callq 0x85f0
jmp 0x726c4
movq -0x498(%rbp), %rdi
movsd -0x90(%rbp), %xmm0
leaq -0x2b8(%rbp), %rsi
leaq -0x2d0(%rbp), %rdx
leaq -0x2e8(%rbp), %rcx
callq 0x43570
jmp 0x726ef
leaq -0x2e8(%rbp), %rdi
callq 0x7760
leaq -0x2d0(%rbp), %rdi
callq 0x7760
leaq -0x2b8(%rbp), %rdi
callq 0x7760
movl $0x1, -0x29c(%rbp)
jmp 0x7276d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7275f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72753
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x7760
leaq -0x2d0(%rbp), %rdi
callq 0x7760
leaq -0x2b8(%rbp), %rdi
callq 0x7760
jmp 0x7278a
leaq -0x138(%rbp), %rdi
callq 0x78d0
leaq -0xf8(%rbp), %rdi
callq 0xaca0
jmp 0x72df6
leaq -0x138(%rbp), %rdi
callq 0x78d0
leaq -0xf8(%rbp), %rdi
callq 0xaca0
jmp 0x72e0f
leaq -0x319(%rbp), %rdi
movq %rdi, -0x538(%rbp)
callq 0x6770
movq -0x538(%rbp), %rdx
leaq 0x3337a(%rip), %rsi     # 0xa5b42
leaq -0x318(%rbp), %rdi
callq 0xd1d0
jmp 0x727d6
leaq -0x2f8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x318(%rbp), %rdx
callq 0xa600
jmp 0x727ef
leaq -0x318(%rbp), %rdi
callq 0x6898
leaq -0x319(%rbp), %rdi
callq 0x6490
leaq -0x349(%rbp), %rdi
movq %rdi, -0x540(%rbp)
callq 0x6770
movq -0x540(%rbp), %rdx
leaq 0x3332a(%rip), %rsi     # 0xa5b52
leaq -0x348(%rbp), %rdi
callq 0xd1d0
jmp 0x72836
leaq -0x2f8(%rbp), %rdi
leaq -0x348(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x548(%rbp)
jmp 0x72853
leaq -0x348(%rbp), %rdi
callq 0x6898
leaq -0x349(%rbp), %rdi
callq 0x6490
movsd -0x548(%rbp), %xmm0
movsd %xmm0, -0x328(%rbp)
leaq -0x379(%rbp), %rdi
movq %rdi, -0x550(%rbp)
callq 0x6770
movq -0x550(%rbp), %rdx
leaq 0x332cb(%rip), %rsi     # 0xa5b67
leaq -0x378(%rbp), %rdi
callq 0xd1d0
jmp 0x728aa
leaq -0x2f8(%rbp), %rdi
leaq -0x378(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x558(%rbp)
jmp 0x728c7
leaq -0x378(%rbp), %rdi
callq 0x6898
leaq -0x379(%rbp), %rdi
callq 0x6490
movsd -0x558(%rbp), %xmm0
movsd %xmm0, -0x358(%rbp)
leaq -0x3a9(%rbp), %rdi
movq %rdi, -0x560(%rbp)
callq 0x6770
movq -0x560(%rbp), %rdx
leaq 0x33278(%rip), %rsi     # 0xa5b88
leaq -0x3a8(%rbp), %rdi
callq 0xd1d0
jmp 0x7291e
leaq -0x2f8(%rbp), %rdi
leaq -0x3a8(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x568(%rbp)
jmp 0x7293b
leaq -0x3a8(%rbp), %rdi
callq 0x6898
leaq -0x3a9(%rbp), %rdi
callq 0x6490
movsd -0x568(%rbp), %xmm0
movsd %xmm0, -0x388(%rbp)
testb $0x1, -0x91(%rbp)
je 0x72da2
leaq -0x3e9(%rbp), %rdi
movq %rdi, -0x570(%rbp)
callq 0x6770
movq -0x570(%rbp), %rdx
leaq 0x33175(%rip), %rsi     # 0xa5b06
leaq -0x3e8(%rbp), %rdi
callq 0xd1d0
jmp 0x7299f
leaq -0x3c8(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x3e8(%rbp), %rdx
callq 0xa600
jmp 0x729b8
leaq -0x411(%rbp), %rdi
movq %rdi, -0x578(%rbp)
callq 0x6770
movq -0x578(%rbp), %rdx
leaq 0x33143(%rip), %rsi     # 0xa5b1c
leaq -0x410(%rbp), %rdi
callq 0xd1d0
jmp 0x729e7
leaq -0x3c8(%rbp), %rdi
leaq -0x410(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x580(%rbp)
jmp 0x72a04
movsd -0x580(%rbp), %xmm0
movsd 0x1e5f4(%rip), %xmm1    # 0x91008
divsd %xmm1, %xmm0
movsd 0x1e5f0(%rip), %xmm1    # 0x91010
mulsd %xmm1, %xmm0
movsd %xmm0, -0x590(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x6898
leaq -0x411(%rbp), %rdi
callq 0x6490
leaq -0x3c8(%rbp), %rdi
callq 0xaca0
leaq -0x3e8(%rbp), %rdi
callq 0x6898
leaq -0x3e9(%rbp), %rdi
callq 0x6490
movsd -0x590(%rbp), %xmm0
movsd %xmm0, -0x3b8(%rbp)
leaq -0x451(%rbp), %rdi
movq %rdi, -0x588(%rbp)
callq 0x6770
movq -0x588(%rbp), %rdx
leaq 0x3306d(%rip), %rsi     # 0xa5b06
leaq -0x450(%rbp), %rdi
callq 0xd1d0
jmp 0x72aa7
leaq -0x430(%rbp), %rdi
leaq -0x28(%rbp), %rsi
leaq -0x450(%rbp), %rdx
callq 0xa600
jmp 0x72ac0
leaq -0x479(%rbp), %rdi
movq %rdi, -0x598(%rbp)
callq 0x6770
movq -0x598(%rbp), %rdx
leaq 0x3304e(%rip), %rsi     # 0xa5b2f
leaq -0x478(%rbp), %rdi
callq 0xd1d0
jmp 0x72aef
leaq -0x430(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0xa5a0
movsd %xmm0, -0x5a0(%rbp)
jmp 0x72b0c
movsd -0x5a0(%rbp), %xmm0
movsd 0x1e4ec(%rip), %xmm1    # 0x91008
divsd %xmm1, %xmm0
movsd 0x1e4e8(%rip), %xmm1    # 0x91010
mulsd %xmm1, %xmm0
movsd %xmm0, -0x5a8(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x6898
leaq -0x479(%rbp), %rdi
callq 0x6490
leaq -0x430(%rbp), %rdi
callq 0xaca0
leaq -0x450(%rbp), %rdi
callq 0x6898
leaq -0x451(%rbp), %rdi
callq 0x6490
movsd -0x5a8(%rbp), %xmm0
movq -0x498(%rbp), %rdi
movsd %xmm0, -0x420(%rbp)
movsd -0x388(%rbp), %xmm0
movsd -0x328(%rbp), %xmm1
movsd -0x358(%rbp), %xmm2
movsd -0x90(%rbp), %xmm3
movsd -0x3b8(%rbp), %xmm4
movsd -0x420(%rbp), %xmm5
callq 0x43370
jmp 0x72bbe
movl $0x1, -0x29c(%rbp)
jmp 0x72dda
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72bf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x6898
leaq -0x319(%rbp), %rdi
callq 0x6490
jmp 0x72e0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72c2a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x348(%rbp), %rdi
callq 0x6898
leaq -0x349(%rbp), %rdi
callq 0x6490
jmp 0x72de8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72c61
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x6898
leaq -0x379(%rbp), %rdi
callq 0x6490
jmp 0x72de8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72c98
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3a8(%rbp), %rdi
callq 0x6898
leaq -0x3a9(%rbp), %rdi
callq 0x6490
jmp 0x72de8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72d0f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72d03
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72ceb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x410(%rbp), %rdi
callq 0x6898
leaq -0x411(%rbp), %rdi
callq 0x6490
leaq -0x3c8(%rbp), %rdi
callq 0xaca0
leaq -0x3e8(%rbp), %rdi
callq 0x6898
leaq -0x3e9(%rbp), %rdi
callq 0x6490
jmp 0x72de8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72d86
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72d7a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72d62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x6898
leaq -0x479(%rbp), %rdi
callq 0x6490
leaq -0x430(%rbp), %rdi
callq 0xaca0
leaq -0x450(%rbp), %rdi
callq 0x6898
leaq -0x451(%rbp), %rdi
callq 0x6490
jmp 0x72de8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x72de8
movq -0x498(%rbp), %rdi
movsd -0x388(%rbp), %xmm0
movsd -0x328(%rbp), %xmm1
movsd -0x358(%rbp), %xmm2
movsd -0x90(%rbp), %xmm3
callq 0x43190
jmp 0x72dd0
movl $0x1, -0x29c(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0xaca0
jmp 0x72df6
leaq -0x2f8(%rbp), %rdi
callq 0xaca0
jmp 0x72e0f
leaq -0x28(%rbp), %rdi
callq 0xaca0
movq -0x490(%rbp), %rax
addq $0x5b0, %rsp            # imm = 0x5B0
popq %rbp
retq
leaq -0x28(%rbp), %rdi
callq 0xaca0
movq -0x50(%rbp), %rdi
callq 0x6760
nopw %cs:(%rax,%rax)
nopl (%rax,%rax)