// File: thierry7100[P]CutOptim/main.cpp
// Function: main
int main(int argc, char *argv[])
{
string InputFileName;
string OutputFileName;
double MinCutDistance = 1.0;
double StepAngle = 0;
double rect_cost = 0.0;
int Flag_file = 0;
int debug_level = 0;
int Output_Layer = 0;
int KeepNested = 1;
int OptimizingLevel = 1;
int FirstPos = CenterCenter;
int UseCache = 0;
bool Flag_free_rot = 1;
string debug_file_name = "Debug_CutOptim.txt";

double max_segment_length = 1000.0;
#ifdef UNDEF
        //  Used to check param passing from inkscape
        ofstream ParamDbg("/home/thierry/Programmes/CutOptim/DebgParam.txt");
        if ( ParamDbg.is_open() == false )
        {
            cerr << "unable to open /home/thierry/Programmes/CutOptim/DebgParam.txt\n";
            exit(1);
        }
         ParamDbg << "--- Params  ------\n";
        ParamDbg << " argc =" << argc << "\n";
        for ( int i = 0; i < argc; i++)
        {
            ParamDbg << "Argv[" << i << "]=" << argv[i] << "\n";
        }
        ParamDbg.close();
#endif
    auto result = parse(argc, argv);
    InputFileName = result["f"].as<std::string>();
    if (result.count("output"))
    {
        OutputFileName = result["output"].as<std::string>();
        Flag_file = 1;
    }
    if (result.count("distance"))
        MinCutDistance = result["distance"].as<double>();
    if (result.count("angle"))
    {
        StepAngle = result["angle"].as<double>();
        Flag_free_rot = 0;
    }
    if (result.count("max_length"))
        max_segment_length = result["max_length"].as<double>();
    if (result.count("rect_cost"))
        rect_cost = result["rect_cost"].as<double>();
    if (result.count("debug_level"))
        debug_level = result["debug_level"].as<int>();
    if (result.count("layer_output"))
        Output_Layer = result["layer_output"].as<int>();
    if (result.count("optimizing_level"))
        OptimizingLevel = result["optimizing_level"].as<int>();
    if (result.count("original"))
    {
        Output_Layer |= result["original"].as<bool>();
    }
    if ( result.count("firstpos"))
    {
        FirstPos = ConvertPos(result["firstpos"].as<string>() );
    }
    if ( result.count("df_name"))
    {
        debug_file_name = result["df_name"].as<string>();
    }
    if (result.count("nested"))
    {
        KeepNested = result["nested"].as<bool>();
    }

    if (result.count("use_cache"))
    {
        UseCache = result["use_cache"].as<bool>();
    }

    if (result.count("free_rot"))
    {
        Flag_free_rot = result["free_rot"].as<bool>();
    }
    if (result.count("debug_file"))
        debug_level += result["debug_file"].as<bool>();;
    if ( Flag_file )
    {
        cout << "Parse options complete" << endl;
        cout << "Input File = " << InputFileName << std::endl;
        cout << "Output File = " << OutputFileName << std::endl;
        cout << "angle = " << StepAngle << std::endl;
        cout << "MinCutDistance = " << MinCutDistance << std::endl;
        cout << "Debug Level = " << debug_level << std::endl;
        cout << "Output layers = " << Output_Layer << std::endl;
        cout << "Optimizing level = " << OptimizingLevel << std::endl;
        cout << "Max_segment_length = " << max_segment_length << std::endl;
        cout << "Use free rotation = " << Flag_free_rot << std::endl;
        cout << "Rectangle cost factor = " << rect_cost << std::endl;
        cout << "Keep nested paths = " << KeepNested << std::endl;
        cout << "Use Cache = " << UseCache << std::endl;
    }

      //    Read and process input file

    SvgDoc InputSVG(InputFileName);
    InputSVG.setDebugLevel(debug_level, debug_file_name);
    InputSVG.setUseCache(UseCache);
    InputSVG.setRectCost(rect_cost);
    if ( InputSVG.SvgData == NULL )
    {
    cerr << " No input to process aborting \n";
    return 1;
    }
    //    Change paths to polygones
    InputSVG.TransformPaths(MinCutDistance / 10.0, KeepNested);
    //    Make larger polygons
    InputSVG.EnlargePaths(MinCutDistance);
    //  Break longer edges if necessary
    InputSVG.BreakLongerEdges(max_segment_length, MinCutDistance / 10.0);
    //    Sort polygons by area
    InputSVG.BuilSingleListPath();
      //    Compute convex hulls of each path
      //  InputSVG.ComputeConvexHulls();
      //    Optimize
    if ( StepAngle == 0 ) StepAngle = 360;
    if ( Flag_free_rot )
        InputSVG.OptimizeFreeRot(OptimizingLevel, FirstPos, Flag_file);
    else
        InputSVG.Optimize(StepAngle * 2 * M_PI / 360, OptimizingLevel, FirstPos, Flag_file);
    InputSVG.WriteDoc(OutputFileName, Flag_file, Output_Layer);


#ifdef TEST_GEO
      //    Now test distance from point to Segment
      Point P00 = Point(0,0);
      Point P11 = Point(1,1);
      Segment Seg1 = Segment(P00, P11);
      Point P01 = Point(0, 1);
      Point P10 = Point(1, 0);
      printf("Distance from P10 to Seg1 =%.3f\n", sqrt(Seg1.sqrDistancePoint(P10)));
      printf("Distance from P01 to Seg1 =%.3f\n", sqrt(Seg1.sqrDistancePoint(P01)));
      Point P2 = Point(2,0);
      printf("Distance from P2 to Seg1 =%.3f\n", sqrt(Seg1.sqrDistancePoint(P2)));
      Point P3 = Point(-1,-1);
      printf("Distance from P3 to Seg1 =%.3f\n", sqrt(Seg1.sqrDistancePoint(P3)));
      Point P4 = Point(2,2);
      printf("Distance from P4 to Seg1 =%.3f\n", sqrt(Seg1.sqrDistancePoint(P4)));
      Point P5 = Point(-1,0);
      printf("Distance from P5 to Seg1 =%.3f\n", sqrt(Seg1.sqrDistancePoint(P5)));
      Segment Seg2 = Segment(P11, P00);
      printf("Distance from P1 to Seg2 =%.3f\n", sqrt(Seg2.sqrDistancePoint(P10)));
      printf("Distance from P2 to Seg2 =%.3f\n", sqrt(Seg2.sqrDistancePoint(P2)));
      printf("Distance from P3 to Seg2 =%.3f\n", sqrt(Seg2.sqrDistancePoint(P3)));
      printf("Distance from P4 to Seg2 =%.3f\n", sqrt(Seg2.sqrDistancePoint(P4)));
      printf("Distance from P5 to Seg2 =%.3f\n", sqrt(Seg2.sqrDistancePoint(P5)));

      //    Test Polygons
      Polygon Poly1 = Polygon();
      Polygon Poly2 = Polygon();
      //    First a rectangle
      Poly1.addVertice(P00);
      Poly1.addVertice(P01);
      Poly1.addVertice(P11);
      Poly1.addVertice(P10);
      Poly1.addVertice(P00);
      printf("Polygon 1 nVertices = %d clockwise =%d, area = %.3f\n", Poly1.nVertices, Poly1.isClockWise(), Poly1.area());

      Poly2.addVertice(P00);
      Poly2.addVertice(P10);
      Poly2.addVertice(P11);
      Poly2.addVertice(P01);
      Poly2.addVertice(P00);
      printf("Polygon 2 nVertices = %d clockwise =%d, area = %.3f\n", Poly2.nVertices, Poly2.isClockWise(), Poly2.area());
      printf("Distance P01 to Poly2 =%.3f\n", sqrt(Poly2.distance(P01)));
      printf("Distance P10 to Poly2 =%.3f\n", sqrt(Poly2.distance(P10)));
      printf("Distance P2 to Poly2 =%.3f\n", sqrt(Poly2.distance(P2)));
      printf("Distance P3 to Poly2 =%.3f\n", sqrt(Poly2.distance(P3)));
      printf("Distance P4 to Poly2 =%.3f\n", sqrt(Poly2.distance(P4)));
      printf("Distance P5 to Poly2 =%.3f\n", sqrt(Poly2.distance(P5)));

      Polygon Poly8 = Polygon();
      for (int i = 0; i <= 8; i++)
      {
        Point p = Point(cos(i*M_PI/4.0), sin(i*M_PI/4.0));
        Poly8.addVertice(p);
      }
      printf("Polygon 8 nVertices = %d clockwise =%d, area = %.3f\n", Poly8.nVertices, Poly8.isClockWise(), Poly8.area());

      printf("Distance P01 to Poly8 =%.3f\n", sqrt(Poly8.distance(P01)));
      printf("Distance P10 to Poly8 =%.3f\n", sqrt(Poly8.distance(P10)));
      printf("Distance P2 to Poly8 =%.3f\n", sqrt(Poly8.distance(P2)));
      printf("Distance P3 to Poly8 =%.3f\n", sqrt(Poly8.distance(P3)));
      printf("Distance P4 to Poly8 =%.3f\n", sqrt(Poly8.distance(P4)));
      printf("Distance P5 to Poly8 =%.3f\n", sqrt(Poly8.distance(P5)));
#endif
#if TEST_ANGLES > 0
    printf("Cas 1 : Départ en -1,0, arrivée en 0,0,  puis va en 0,1\n");
    double sf1 = atan2(-1, 0);
    double sf2 = atan2(-0.2, -1);

    if ( sf1 < 0 ) sf1 += 2*M_PI;
    if ( sf2 < 0 ) sf2 += 2*M_PI;
    double sm2 = 0;
    printf("sf1 = %.1f, sf2 = %.1f\n", sf1 * 180 / M_PI, sf2 *180.0 / M_PI);

    printf("Essai sm1 sm2\n");

    sm2 = 0;
    for ( double a = 1.0; a < 360; a+= 20.0)
    {
        sm2 = a/180.0 * M_PI;
        printf("Angle %.1f, SM1 %d  SM2 %d\n", a, CheckOKAngles(sf1, sf2, sm2), CheckOKAngles(sf2, sf1, sm2));
    }
#endif
      return(0);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0xcb0, %rsp            # imm = 0xCB0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x9760
leaq -0x50(%rbp), %rdi
callq 0x9760
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, -0x58(%rbp)
movq $0x0, -0x60(%rbp)
movq $0x0, -0x68(%rbp)
movl $0x0, -0x6c(%rbp)
movl $0x0, -0x70(%rbp)
movl $0x0, -0x74(%rbp)
movl $0x1, -0x78(%rbp)
movl $0x1, -0x7c(%rbp)
movl $0x5, -0x80(%rbp)
movl $0x0, -0x84(%rbp)
movb $0x1, -0x85(%rbp)
leaq -0xa9(%rbp), %rdi
movq %rdi, -0x968(%rbp)
callq 0x9970
movq -0x968(%rbp), %rdx
leaq 0x7505d(%rip), %rsi     # 0x824b2
leaq -0xa8(%rbp), %rdi
callq 0xff10
jmp 0xd463
leaq -0xa9(%rbp), %rdi
callq 0x95c0
movabsq $0x408f400000000000, %rax # imm = 0x408F400000000000
movq %rax, -0xc8(%rbp)
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0x188(%rbp), %rdi
callq 0x9f70
jmp 0xd495
leaq -0x1a9(%rbp), %rdi
movq %rdi, -0x970(%rbp)
callq 0x9970
movq -0x970(%rbp), %rdx
leaq 0x78903(%rip), %rsi     # 0x85db9
leaq -0x1a8(%rbp), %rdi
callq 0xff10
jmp 0xd4c4
leaq -0x188(%rbp), %rdi
leaq -0x1a8(%rbp), %rsi
callq 0x10fe0
movq %rax, -0x978(%rbp)
jmp 0xd4e0
movq -0x978(%rbp), %rdi
callq 0x110d0
movq %rax, -0x980(%rbp)
jmp 0xd4f5
movq -0x980(%rbp), %rsi
leaq -0x30(%rbp), %rdi
callq 0x9070
jmp 0xd507
leaq -0x1a8(%rbp), %rdi
callq 0x9a98
leaq -0x1a9(%rbp), %rdi
callq 0x95c0
leaq -0x1d1(%rbp), %rdi
movq %rdi, -0x988(%rbp)
callq 0x9970
movq -0x988(%rbp), %rdx
leaq 0x74db8(%rip), %rsi     # 0x822f8
leaq -0x1d0(%rbp), %rdi
callq 0xff10
jmp 0xd54e
leaq -0x188(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0x10a80
movq %rax, -0x990(%rbp)
jmp 0xd56a
leaq -0x1d0(%rbp), %rdi
callq 0x9a98
leaq -0x1d1(%rbp), %rdi
callq 0x95c0
movq -0x990(%rbp), %rax
cmpq $0x0, %rax
je 0xd72c
leaq -0x1f9(%rbp), %rdi
movq %rdi, -0x998(%rbp)
callq 0x9970
movq -0x998(%rbp), %rdx
leaq 0x74d44(%rip), %rsi     # 0x822f8
leaq -0x1f8(%rbp), %rdi
callq 0xff10
jmp 0xd5c2
leaq -0x188(%rbp), %rdi
leaq -0x1f8(%rbp), %rsi
callq 0x10fe0
movq %rax, -0x9a0(%rbp)
jmp 0xd5de
movq -0x9a0(%rbp), %rdi
callq 0x110d0
movq %rax, -0x9a8(%rbp)
jmp 0xd5f3
movq -0x9a8(%rbp), %rsi
leaq -0x50(%rbp), %rdi
callq 0x9070
jmp 0xd605
leaq -0x1f8(%rbp), %rdi
callq 0x9a98
leaq -0x1f9(%rbp), %rdi
callq 0x95c0
movl $0x1, -0x6c(%rbp)
jmp 0xd72c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0xa9(%rbp), %rdi
callq 0x95c0
jmp 0xf32b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xf31f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xd695
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x1a8(%rbp), %rdi
callq 0x9a98
leaq -0x1a9(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xd6d8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x1d0(%rbp), %rdi
callq 0x9a98
leaq -0x1d1(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xd71b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x1f8(%rbp), %rdi
callq 0x9a98
leaq -0x1f9(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x221(%rbp), %rdi
movq %rdi, -0x9b0(%rbp)
callq 0x9970
movq -0x9b0(%rbp), %rdx
leaq 0x74c02(%rip), %rsi     # 0x8234f
leaq -0x220(%rbp), %rdi
callq 0xff10
jmp 0xd75b
leaq -0x188(%rbp), %rdi
leaq -0x220(%rbp), %rsi
callq 0x10a80
movq %rax, -0x9b8(%rbp)
jmp 0xd777
leaq -0x220(%rbp), %rdi
callq 0x9a98
leaq -0x221(%rbp), %rdi
callq 0x95c0
movq -0x9b8(%rbp), %rax
cmpq $0x0, %rax
je 0xd8b3
leaq -0x249(%rbp), %rdi
movq %rdi, -0x9c0(%rbp)
callq 0x9970
movq -0x9c0(%rbp), %rdx
leaq 0x74b8e(%rip), %rsi     # 0x8234f
leaq -0x248(%rbp), %rdi
callq 0xff10
jmp 0xd7cf
leaq -0x188(%rbp), %rdi
leaq -0x248(%rbp), %rsi
callq 0x10fe0
movq %rax, -0x9c8(%rbp)
jmp 0xd7eb
movq -0x9c8(%rbp), %rdi
callq 0x11190
movq %rax, -0x9d0(%rbp)
jmp 0xd800
movq -0x9d0(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x58(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x9a98
leaq -0x249(%rbp), %rdi
callq 0x95c0
jmp 0xd8b3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xd85f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x220(%rbp), %rdi
callq 0x9a98
leaq -0x221(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xd8a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x248(%rbp), %rdi
callq 0x9a98
leaq -0x249(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x271(%rbp), %rdi
movq %rdi, -0x9d8(%rbp)
callq 0x9970
movq -0x9d8(%rbp), %rdx
leaq 0x74d0e(%rip), %rsi     # 0x825e2
leaq -0x270(%rbp), %rdi
callq 0xff10
jmp 0xd8e2
leaq -0x188(%rbp), %rdi
leaq -0x270(%rbp), %rsi
callq 0x10a80
movq %rax, -0x9e0(%rbp)
jmp 0xd8fe
leaq -0x270(%rbp), %rdi
callq 0x9a98
leaq -0x271(%rbp), %rdi
callq 0x95c0
movq -0x9e0(%rbp), %rax
cmpq $0x0, %rax
je 0xda41
leaq -0x299(%rbp), %rdi
movq %rdi, -0x9e8(%rbp)
callq 0x9970
movq -0x9e8(%rbp), %rdx
leaq 0x74c9a(%rip), %rsi     # 0x825e2
leaq -0x298(%rbp), %rdi
callq 0xff10
jmp 0xd956
leaq -0x188(%rbp), %rdi
leaq -0x298(%rbp), %rsi
callq 0x10fe0
movq %rax, -0x9f0(%rbp)
jmp 0xd972
movq -0x9f0(%rbp), %rdi
callq 0x11190
movq %rax, -0x9f8(%rbp)
jmp 0xd987
movq -0x9f8(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x60(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x9a98
leaq -0x299(%rbp), %rdi
callq 0x95c0
movb $0x0, -0x85(%rbp)
jmp 0xda41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xd9ed
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x270(%rbp), %rdi
callq 0x9a98
leaq -0x271(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xda30
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x298(%rbp), %rdi
callq 0x9a98
leaq -0x299(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x2c1(%rbp), %rdi
movq %rdi, -0xa00(%rbp)
callq 0x9970
movq -0xa00(%rbp), %rdx
leaq 0x74944(%rip), %rsi     # 0x823a6
leaq -0x2c0(%rbp), %rdi
callq 0xff10
jmp 0xda70
leaq -0x188(%rbp), %rdi
leaq -0x2c0(%rbp), %rsi
callq 0x10a80
movq %rax, -0xa08(%rbp)
jmp 0xda8c
leaq -0x2c0(%rbp), %rdi
callq 0x9a98
leaq -0x2c1(%rbp), %rdi
callq 0x95c0
movq -0xa08(%rbp), %rax
cmpq $0x0, %rax
je 0xdbcb
leaq -0x2e9(%rbp), %rdi
movq %rdi, -0xa10(%rbp)
callq 0x9970
movq -0xa10(%rbp), %rdx
leaq 0x748d0(%rip), %rsi     # 0x823a6
leaq -0x2e8(%rbp), %rdi
callq 0xff10
jmp 0xdae4
leaq -0x188(%rbp), %rdi
leaq -0x2e8(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xa18(%rbp)
jmp 0xdb00
movq -0xa18(%rbp), %rdi
callq 0x11190
movq %rax, -0xa20(%rbp)
jmp 0xdb15
movq -0xa20(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0xc8(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x9a98
leaq -0x2e9(%rbp), %rdi
callq 0x95c0
jmp 0xdbcb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xdb77
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x2c0(%rbp), %rdi
callq 0x9a98
leaq -0x2c1(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xdbba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x2e8(%rbp), %rdi
callq 0x9a98
leaq -0x2e9(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x311(%rbp), %rdi
movq %rdi, -0xa28(%rbp)
callq 0x9970
movq -0xa28(%rbp), %rdx
leaq 0x74797(%rip), %rsi     # 0x82383
leaq -0x310(%rbp), %rdi
callq 0xff10
jmp 0xdbfa
leaq -0x188(%rbp), %rdi
leaq -0x310(%rbp), %rsi
callq 0x10a80
movq %rax, -0xa30(%rbp)
jmp 0xdc16
leaq -0x310(%rbp), %rdi
callq 0x9a98
leaq -0x311(%rbp), %rdi
callq 0x95c0
movq -0xa30(%rbp), %rax
cmpq $0x0, %rax
je 0xdd52
leaq -0x339(%rbp), %rdi
movq %rdi, -0xa38(%rbp)
callq 0x9970
movq -0xa38(%rbp), %rdx
leaq 0x74723(%rip), %rsi     # 0x82383
leaq -0x338(%rbp), %rdi
callq 0xff10
jmp 0xdc6e
leaq -0x188(%rbp), %rdi
leaq -0x338(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xa40(%rbp)
jmp 0xdc8a
movq -0xa40(%rbp), %rdi
callq 0x11190
movq %rax, -0xa48(%rbp)
jmp 0xdc9f
movq -0xa48(%rbp), %rax
movsd (%rax), %xmm0
movsd %xmm0, -0x68(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x9a98
leaq -0x339(%rbp), %rdi
callq 0x95c0
jmp 0xdd52
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xdcfe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x310(%rbp), %rdi
callq 0x9a98
leaq -0x311(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xdd41
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x338(%rbp), %rdi
callq 0x9a98
leaq -0x339(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x361(%rbp), %rdi
movq %rdi, -0xa50(%rbp)
callq 0x9970
movq -0xa50(%rbp), %rdx
leaq 0x746bb(%rip), %rsi     # 0x8242e
leaq -0x360(%rbp), %rdi
callq 0xff10
jmp 0xdd81
leaq -0x188(%rbp), %rdi
leaq -0x360(%rbp), %rsi
callq 0x10a80
movq %rax, -0xa58(%rbp)
jmp 0xdd9d
leaq -0x360(%rbp), %rdi
callq 0x9a98
leaq -0x361(%rbp), %rdi
callq 0x95c0
movq -0xa58(%rbp), %rax
cmpq $0x0, %rax
je 0xded5
leaq -0x389(%rbp), %rdi
movq %rdi, -0xa60(%rbp)
callq 0x9970
movq -0xa60(%rbp), %rdx
leaq 0x74647(%rip), %rsi     # 0x8242e
leaq -0x388(%rbp), %rdi
callq 0xff10
jmp 0xddf5
leaq -0x188(%rbp), %rdi
leaq -0x388(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xa68(%rbp)
jmp 0xde11
movq -0xa68(%rbp), %rdi
callq 0x11250
movq %rax, -0xa70(%rbp)
jmp 0xde26
movq -0xa70(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x70(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x9a98
leaq -0x389(%rbp), %rdi
callq 0x95c0
jmp 0xded5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xde81
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x360(%rbp), %rdi
callq 0x9a98
leaq -0x361(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xdec4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x388(%rbp), %rdi
callq 0x9a98
leaq -0x389(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x3b1(%rbp), %rdi
movq %rdi, -0xa78(%rbp)
callq 0x9970
movq -0xa78(%rbp), %rdx
leaq 0x74648(%rip), %rsi     # 0x8253e
leaq -0x3b0(%rbp), %rdi
callq 0xff10
jmp 0xdf04
leaq -0x188(%rbp), %rdi
leaq -0x3b0(%rbp), %rsi
callq 0x10a80
movq %rax, -0xa80(%rbp)
jmp 0xdf20
leaq -0x3b0(%rbp), %rdi
callq 0x9a98
leaq -0x3b1(%rbp), %rdi
callq 0x95c0
movq -0xa80(%rbp), %rax
cmpq $0x0, %rax
je 0xe058
leaq -0x3d9(%rbp), %rdi
movq %rdi, -0xa88(%rbp)
callq 0x9970
movq -0xa88(%rbp), %rdx
leaq 0x745d4(%rip), %rsi     # 0x8253e
leaq -0x3d8(%rbp), %rdi
callq 0xff10
jmp 0xdf78
leaq -0x188(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xa90(%rbp)
jmp 0xdf94
movq -0xa90(%rbp), %rdi
callq 0x11250
movq %rax, -0xa98(%rbp)
jmp 0xdfa9
movq -0xa98(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x74(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x9a98
leaq -0x3d9(%rbp), %rdi
callq 0x95c0
jmp 0xe058
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe004
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x3b0(%rbp), %rdi
callq 0x9a98
leaq -0x3b1(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe047
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x9a98
leaq -0x3d9(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x401(%rbp), %rdi
movq %rdi, -0xaa0(%rbp)
callq 0x9970
movq -0xaa0(%rbp), %rdx
leaq 0x7436e(%rip), %rsi     # 0x823e7
leaq -0x400(%rbp), %rdi
callq 0xff10
jmp 0xe087
leaq -0x188(%rbp), %rdi
leaq -0x400(%rbp), %rsi
callq 0x10a80
movq %rax, -0xaa8(%rbp)
jmp 0xe0a3
leaq -0x400(%rbp), %rdi
callq 0x9a98
leaq -0x401(%rbp), %rdi
callq 0x95c0
movq -0xaa8(%rbp), %rax
cmpq $0x0, %rax
je 0xe1db
leaq -0x429(%rbp), %rdi
movq %rdi, -0xab0(%rbp)
callq 0x9970
movq -0xab0(%rbp), %rdx
leaq 0x742fa(%rip), %rsi     # 0x823e7
leaq -0x428(%rbp), %rdi
callq 0xff10
jmp 0xe0fb
leaq -0x188(%rbp), %rdi
leaq -0x428(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xab8(%rbp)
jmp 0xe117
movq -0xab8(%rbp), %rdi
callq 0x11250
movq %rax, -0xac0(%rbp)
jmp 0xe12c
movq -0xac0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x7c(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x9a98
leaq -0x429(%rbp), %rdi
callq 0x95c0
jmp 0xe1db
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe187
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x400(%rbp), %rdi
callq 0x9a98
leaq -0x401(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe1ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x428(%rbp), %rdi
callq 0x9a98
leaq -0x429(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x451(%rbp), %rdi
movq %rdi, -0xac8(%rbp)
callq 0x9970
movq -0xac8(%rbp), %rdx
leaq 0x742cb(%rip), %rsi     # 0x824c7
leaq -0x450(%rbp), %rdi
callq 0xff10
jmp 0xe20a
leaq -0x188(%rbp), %rdi
leaq -0x450(%rbp), %rsi
callq 0x10a80
movq %rax, -0xad0(%rbp)
jmp 0xe226
leaq -0x450(%rbp), %rdi
callq 0x9a98
leaq -0x451(%rbp), %rdi
callq 0x95c0
movq -0xad0(%rbp), %rax
cmpq $0x0, %rax
je 0xe366
leaq -0x479(%rbp), %rdi
movq %rdi, -0xad8(%rbp)
callq 0x9970
movq -0xad8(%rbp), %rdx
leaq 0x74257(%rip), %rsi     # 0x824c7
leaq -0x478(%rbp), %rdi
callq 0xff10
jmp 0xe27e
leaq -0x188(%rbp), %rdi
leaq -0x478(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xae0(%rbp)
jmp 0xe29a
movq -0xae0(%rbp), %rdi
callq 0x11310
movq %rax, -0xae8(%rbp)
jmp 0xe2af
movq -0xae8(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
orl -0x74(%rbp), %eax
movl %eax, -0x74(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x9a98
leaq -0x479(%rbp), %rdi
callq 0x95c0
jmp 0xe366
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe312
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x450(%rbp), %rdi
callq 0x9a98
leaq -0x451(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe355
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x9a98
leaq -0x479(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x4a1(%rbp), %rdi
movq %rdi, -0xaf0(%rbp)
callq 0x9970
movq -0xaf0(%rbp), %rdx
leaq 0x74295(%rip), %rsi     # 0x8261c
leaq -0x4a0(%rbp), %rdi
callq 0xff10
jmp 0xe395
leaq -0x188(%rbp), %rdi
leaq -0x4a0(%rbp), %rsi
callq 0x10a80
movq %rax, -0xaf8(%rbp)
jmp 0xe3b1
leaq -0x4a0(%rbp), %rdi
callq 0x9a98
leaq -0x4a1(%rbp), %rdi
callq 0x95c0
movq -0xaf8(%rbp), %rax
cmpq $0x0, %rax
je 0xe53b
leaq -0x4e9(%rbp), %rdi
movq %rdi, -0xb00(%rbp)
callq 0x9970
movq -0xb00(%rbp), %rdx
leaq 0x74221(%rip), %rsi     # 0x8261c
leaq -0x4e8(%rbp), %rdi
callq 0xff10
jmp 0xe409
leaq -0x188(%rbp), %rdi
leaq -0x4e8(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xb08(%rbp)
jmp 0xe425
movq -0xb08(%rbp), %rdi
callq 0x110d0
movq %rax, -0xb10(%rbp)
jmp 0xe43a
movq -0xb10(%rbp), %rsi
leaq -0x4c8(%rbp), %rdi
callq 0x9230
jmp 0xe44f
leaq -0x4c8(%rbp), %rdi
callq 0xf350
movl %eax, -0xb14(%rbp)
jmp 0xe463
movl -0xb14(%rbp), %eax
movl %eax, -0x80(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x9a98
leaq -0x4e8(%rbp), %rdi
callq 0x9a98
leaq -0x4e9(%rbp), %rdi
callq 0x95c0
jmp 0xe53b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe4c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x4a0(%rbp), %rdi
callq 0x9a98
leaq -0x4a1(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe52a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe51e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x4c8(%rbp), %rdi
callq 0x9a98
leaq -0x4e8(%rbp), %rdi
callq 0x9a98
leaq -0x4e9(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x511(%rbp), %rdi
movq %rdi, -0xb20(%rbp)
callq 0x9970
movq -0xb20(%rbp), %rdx
leaq 0x73f3b(%rip), %rsi     # 0x82497
leaq -0x510(%rbp), %rdi
callq 0xff10
jmp 0xe56a
leaq -0x188(%rbp), %rdi
leaq -0x510(%rbp), %rsi
callq 0x10a80
movq %rax, -0xb28(%rbp)
jmp 0xe586
leaq -0x510(%rbp), %rdi
callq 0x9a98
leaq -0x511(%rbp), %rdi
callq 0x95c0
movq -0xb28(%rbp), %rax
cmpq $0x0, %rax
je 0xe6c7
leaq -0x539(%rbp), %rdi
movq %rdi, -0xb30(%rbp)
callq 0x9970
movq -0xb30(%rbp), %rdx
leaq 0x73ec7(%rip), %rsi     # 0x82497
leaq -0x538(%rbp), %rdi
callq 0xff10
jmp 0xe5de
leaq -0x188(%rbp), %rdi
leaq -0x538(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xb38(%rbp)
jmp 0xe5fa
movq -0xb38(%rbp), %rdi
callq 0x110d0
movq %rax, -0xb40(%rbp)
jmp 0xe60f
movq -0xb40(%rbp), %rsi
leaq -0xa8(%rbp), %rdi
callq 0x9070
jmp 0xe624
leaq -0x538(%rbp), %rdi
callq 0x9a98
leaq -0x539(%rbp), %rdi
callq 0x95c0
jmp 0xe6c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe673
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x510(%rbp), %rdi
callq 0x9a98
leaq -0x511(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe6b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x9a98
leaq -0x539(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x561(%rbp), %rdi
movq %rdi, -0xb48(%rbp)
callq 0x9970
movq -0xb48(%rbp), %rdx
leaq 0x73e06(%rip), %rsi     # 0x824ee
leaq -0x560(%rbp), %rdi
callq 0xff10
jmp 0xe6f6
leaq -0x188(%rbp), %rdi
leaq -0x560(%rbp), %rsi
callq 0x10a80
movq %rax, -0xb50(%rbp)
jmp 0xe712
leaq -0x560(%rbp), %rdi
callq 0x9a98
leaq -0x561(%rbp), %rdi
callq 0x95c0
movq -0xb50(%rbp), %rax
cmpq $0x0, %rax
je 0xe84f
leaq -0x589(%rbp), %rdi
movq %rdi, -0xb58(%rbp)
callq 0x9970
movq -0xb58(%rbp), %rdx
leaq 0x73d92(%rip), %rsi     # 0x824ee
leaq -0x588(%rbp), %rdi
callq 0xff10
jmp 0xe76a
leaq -0x188(%rbp), %rdi
leaq -0x588(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xb60(%rbp)
jmp 0xe786
movq -0xb60(%rbp), %rdi
callq 0x11310
movq %rax, -0xb68(%rbp)
jmp 0xe79b
movq -0xb68(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x78(%rbp)
leaq -0x588(%rbp), %rdi
callq 0x9a98
leaq -0x589(%rbp), %rdi
callq 0x95c0
jmp 0xe84f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe7fb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x560(%rbp), %rdi
callq 0x9a98
leaq -0x561(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe83e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x588(%rbp), %rdi
callq 0x9a98
leaq -0x589(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x5b1(%rbp), %rdi
movq %rdi, -0xb70(%rbp)
callq 0x9970
movq -0xb70(%rbp), %rdx
leaq 0x73ca1(%rip), %rsi     # 0x82511
leaq -0x5b0(%rbp), %rdi
callq 0xff10
jmp 0xe87e
leaq -0x188(%rbp), %rdi
leaq -0x5b0(%rbp), %rsi
callq 0x10a80
movq %rax, -0xb78(%rbp)
jmp 0xe89a
leaq -0x5b0(%rbp), %rdi
callq 0x9a98
leaq -0x5b1(%rbp), %rdi
callq 0x95c0
movq -0xb78(%rbp), %rax
cmpq $0x0, %rax
je 0xe9da
leaq -0x5d9(%rbp), %rdi
movq %rdi, -0xb80(%rbp)
callq 0x9970
movq -0xb80(%rbp), %rdx
leaq 0x73c2d(%rip), %rsi     # 0x82511
leaq -0x5d8(%rbp), %rdi
callq 0xff10
jmp 0xe8f2
leaq -0x188(%rbp), %rdi
leaq -0x5d8(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xb88(%rbp)
jmp 0xe90e
movq -0xb88(%rbp), %rdi
callq 0x11310
movq %rax, -0xb90(%rbp)
jmp 0xe923
movq -0xb90(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x84(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x9a98
leaq -0x5d9(%rbp), %rdi
callq 0x95c0
jmp 0xe9da
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe986
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x5b0(%rbp), %rdi
callq 0x9a98
leaq -0x5b1(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xe9c9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x5d8(%rbp), %rdi
callq 0x9a98
leaq -0x5d9(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x601(%rbp), %rdi
movq %rdi, -0xb98(%rbp)
callq 0x9970
movq -0xb98(%rbp), %rdx
leaq 0x73c02(%rip), %rsi     # 0x825fd
leaq -0x600(%rbp), %rdi
callq 0xff10
jmp 0xea09
leaq -0x188(%rbp), %rdi
leaq -0x600(%rbp), %rsi
callq 0x10a80
movq %rax, -0xba0(%rbp)
jmp 0xea25
leaq -0x600(%rbp), %rdi
callq 0x9a98
leaq -0x601(%rbp), %rdi
callq 0x95c0
movq -0xba0(%rbp), %rax
cmpq $0x0, %rax
je 0xeb62
leaq -0x629(%rbp), %rdi
movq %rdi, -0xba8(%rbp)
callq 0x9970
movq -0xba8(%rbp), %rdx
leaq 0x73b8e(%rip), %rsi     # 0x825fd
leaq -0x628(%rbp), %rdi
callq 0xff10
jmp 0xea7d
leaq -0x188(%rbp), %rdi
leaq -0x628(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xbb0(%rbp)
jmp 0xea99
movq -0xbb0(%rbp), %rdi
callq 0x11310
movq %rax, -0xbb8(%rbp)
jmp 0xeaae
movq -0xbb8(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movb %al, -0x85(%rbp)
leaq -0x628(%rbp), %rdi
callq 0x9a98
leaq -0x629(%rbp), %rdi
callq 0x95c0
jmp 0xeb62
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xeb0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x600(%rbp), %rdi
callq 0x9a98
leaq -0x601(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xeb51
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x628(%rbp), %rdi
callq 0x9a98
leaq -0x629(%rbp), %rdi
callq 0x95c0
jmp 0xf313
leaq -0x651(%rbp), %rdi
movq %rdi, -0xbc0(%rbp)
callq 0x9970
movq -0xbc0(%rbp), %rdx
leaq 0x738e2(%rip), %rsi     # 0x82465
leaq -0x650(%rbp), %rdi
callq 0xff10
jmp 0xeb91
leaq -0x188(%rbp), %rdi
leaq -0x650(%rbp), %rsi
callq 0x10a80
movq %rax, -0xbc8(%rbp)
jmp 0xebad
leaq -0x650(%rbp), %rdi
callq 0x9a98
leaq -0x651(%rbp), %rdi
callq 0x95c0
movq -0xbc8(%rbp), %rax
cmpq $0x0, %rax
je 0xeced
leaq -0x679(%rbp), %rdi
movq %rdi, -0xbd0(%rbp)
callq 0x9970
movq -0xbd0(%rbp), %rdx
leaq 0x7386e(%rip), %rsi     # 0x82465
leaq -0x678(%rbp), %rdi
callq 0xff10
jmp 0xec05
leaq -0x188(%rbp), %rdi
leaq -0x678(%rbp), %rsi
callq 0x10fe0
movq %rax, -0xbd8(%rbp)
jmp 0xec21
movq -0xbd8(%rbp), %rdi
callq 0x11310
movq %rax, -0xbe0(%rbp)
jmp 0xec36
movq -0xbe0(%rbp), %rax
movb (%rax), %al
andb $0x1, %al
movzbl %al, %eax
addl -0x70(%rbp), %eax
movl %eax, -0x70(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x9a98
leaq -0x679(%rbp), %rdi
callq 0x95c0
jmp 0xeced
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xec99
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x650(%rbp), %rdi
callq 0x9a98
leaq -0x651(%rbp), %rdi
callq 0x95c0
jmp 0xf313
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xecdc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x678(%rbp), %rdi
callq 0x9a98
leaq -0x679(%rbp), %rdi
callq 0x95c0
jmp 0xf313
cmpl $0x0, -0x6c(%rbp)
je 0xf0c4
movq 0xa9292(%rip), %rdi     # 0xb7f90
leaq 0x7397b(%rip), %rsi     # 0x82680
callq 0x9530
movq %rax, -0xbe8(%rbp)
jmp 0xed13
movq -0xbe8(%rbp), %rdi
movq 0xa9227(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xed28
movq 0xa9261(%rip), %rdi     # 0xb7f90
leaq 0x73961(%rip), %rsi     # 0x82697
callq 0x9530
movq %rax, -0xbf0(%rbp)
jmp 0xed44
movq -0xbf0(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x94d0
movq %rax, -0xbf8(%rbp)
jmp 0xed5d
movq -0xbf8(%rbp), %rdi
movq 0xa91dd(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xed72
movq 0xa9217(%rip), %rdi     # 0xb7f90
leaq 0x73925(%rip), %rsi     # 0x826a5
callq 0x9530
movq %rax, -0xc00(%rbp)
jmp 0xed8e
movq -0xc00(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x94d0
movq %rax, -0xc08(%rbp)
jmp 0xeda7
movq -0xc08(%rbp), %rdi
movq 0xa9193(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xedbc
movq 0xa91cd(%rip), %rdi     # 0xb7f90
leaq 0x738ea(%rip), %rsi     # 0x826b4
callq 0x9530
movq %rax, -0xc10(%rbp)
jmp 0xedd8
movq -0xc10(%rbp), %rdi
movsd -0x60(%rbp), %xmm0
callq 0x9a30
movq %rax, -0xc18(%rbp)
jmp 0xedf2
movq -0xc18(%rbp), %rdi
movq 0xa9148(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xee07
movq 0xa9182(%rip), %rdi     # 0xb7f90
leaq 0x738a8(%rip), %rsi     # 0x826bd
callq 0x9530
movq %rax, -0xc20(%rbp)
jmp 0xee23
movq -0xc20(%rbp), %rdi
movsd -0x58(%rbp), %xmm0
callq 0x9a30
movq %rax, -0xc28(%rbp)
jmp 0xee3d
movq -0xc28(%rbp), %rdi
movq 0xa90fd(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xee52
movq 0xa9137(%rip), %rdi     # 0xb7f90
leaq 0x7386f(%rip), %rsi     # 0x826cf
callq 0x9530
movq %rax, -0xc30(%rbp)
jmp 0xee6e
movq -0xc30(%rbp), %rdi
movl -0x70(%rbp), %esi
callq 0x9930
movq %rax, -0xc38(%rbp)
jmp 0xee86
movq -0xc38(%rbp), %rdi
movq 0xa90b4(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xee9b
movq 0xa90ee(%rip), %rdi     # 0xb7f90
leaq 0x73835(%rip), %rsi     # 0x826de
callq 0x9530
movq %rax, -0xc40(%rbp)
jmp 0xeeb7
movq -0xc40(%rbp), %rdi
movl -0x74(%rbp), %esi
callq 0x9930
movq %rax, -0xc48(%rbp)
jmp 0xeecf
movq -0xc48(%rbp), %rdi
movq 0xa906b(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xeee4
movq 0xa90a5(%rip), %rdi     # 0xb7f90
leaq 0x737fd(%rip), %rsi     # 0x826ef
callq 0x9530
movq %rax, -0xc50(%rbp)
jmp 0xef00
movq -0xc50(%rbp), %rdi
movl -0x7c(%rbp), %esi
callq 0x9930
movq %rax, -0xc58(%rbp)
jmp 0xef18
movq -0xc58(%rbp), %rdi
movq 0xa9022(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xef2d
movq 0xa905c(%rip), %rdi     # 0xb7f90
leaq 0x737c8(%rip), %rsi     # 0x82703
callq 0x9530
movq %rax, -0xc60(%rbp)
jmp 0xef49
movq -0xc60(%rbp), %rdi
movsd -0xc8(%rbp), %xmm0
callq 0x9a30
movq %rax, -0xc68(%rbp)
jmp 0xef66
movq -0xc68(%rbp), %rdi
movq 0xa8fd4(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xef7b
movq 0xa900e(%rip), %rdi     # 0xb7f90
leaq 0x73790(%rip), %rsi     # 0x82719
callq 0x9530
movq %rax, -0xc70(%rbp)
jmp 0xef97
movq -0xc70(%rbp), %rdi
movzbl -0x85(%rbp), %esi
andl $0x1, %esi
callq 0x9990
movq %rax, -0xc78(%rbp)
jmp 0xefb6
movq -0xc78(%rbp), %rdi
movq 0xa8f84(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xefcb
movq 0xa8fbe(%rip), %rdi     # 0xb7f90
leaq 0x73755(%rip), %rsi     # 0x8272e
callq 0x9530
movq %rax, -0xc80(%rbp)
jmp 0xefe7
movq -0xc80(%rbp), %rdi
movsd -0x68(%rbp), %xmm0
callq 0x9a30
movq %rax, -0xc88(%rbp)
jmp 0xf001
movq -0xc88(%rbp), %rdi
movq 0xa8f39(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xf016
movq 0xa8f73(%rip), %rdi     # 0xb7f90
leaq 0x73723(%rip), %rsi     # 0x82747
callq 0x9530
movq %rax, -0xc90(%rbp)
jmp 0xf032
movq -0xc90(%rbp), %rdi
movl -0x78(%rbp), %esi
callq 0x9930
movq %rax, -0xc98(%rbp)
jmp 0xf04a
movq -0xc98(%rbp), %rdi
movq 0xa8ef0(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xf05f
movq 0xa8f2a(%rip), %rdi     # 0xb7f90
leaq 0x736ef(%rip), %rsi     # 0x8275c
callq 0x9530
movq %rax, -0xca0(%rbp)
jmp 0xf07b
movq -0xca0(%rbp), %rdi
movl -0x84(%rbp), %esi
callq 0x9930
movq %rax, -0xca8(%rbp)
jmp 0xf096
movq -0xca8(%rbp), %rdi
movq 0xa8ea4(%rip), %rsi     # 0xb7f48
callq 0x9590
jmp 0xf0ab
jmp 0xf0c4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xf313
leaq -0x938(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x6b3f0
jmp 0xf0d6
movl -0x70(%rbp), %eax
movl %eax, -0xcac(%rbp)
leaq -0x958(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x9230
jmp 0xf0f4
movl -0xcac(%rbp), %esi
leaq -0x938(%rbp), %rdi
leaq -0x958(%rbp), %rdx
callq 0x113d0
jmp 0xf10f
leaq -0x958(%rbp), %rdi
callq 0x9a98
movl -0x84(%rbp), %esi
leaq -0x938(%rbp), %rdi
callq 0x11410
jmp 0xf12f
movsd -0x68(%rbp), %xmm0
leaq -0x938(%rbp), %rdi
callq 0x11430
jmp 0xf142
cmpq $0x0, -0x930(%rbp)
jne 0xf1b1
movq 0xa8e95(%rip), %rdi     # 0xb7fe8
leaq 0x7360f(%rip), %rsi     # 0x82769
callq 0x9530
jmp 0xf161
movl $0x1, -0x4(%rbp)
movl $0x1, -0x95c(%rbp)
jmp 0xf2c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
jmp 0xf307
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xb8(%rbp)
movl %eax, -0xbc(%rbp)
leaq -0x958(%rbp), %rdi
callq 0x9a98
jmp 0xf307
movsd -0x58(%rbp), %xmm0
movsd 0x72e4a(%rip), %xmm1    # 0x82008
divsd %xmm1, %xmm0
movl -0x78(%rbp), %eax
testl %eax, %eax
setne %al
movzbl %al, %esi
leaq -0x938(%rbp), %rdi
callq 0x69380
jmp 0xf1db
movsd -0x58(%rbp), %xmm0
leaq -0x938(%rbp), %rdi
callq 0x6ad60
jmp 0xf1ee
movsd -0xc8(%rbp), %xmm0
movsd -0x58(%rbp), %xmm1
movsd 0x72e05(%rip), %xmm2    # 0x82008
divsd %xmm2, %xmm1
leaq -0x938(%rbp), %rdi
callq 0x6b110
jmp 0xf215
leaq -0x938(%rbp), %rdi
callq 0x6d780
jmp 0xf223
movsd -0x60(%rbp), %xmm0
xorps %xmm1, %xmm1
ucomisd %xmm1, %xmm0
jne 0xf240
jp 0xf240
movsd 0x72dd5(%rip), %xmm0    # 0x82010
movsd %xmm0, -0x60(%rbp)
testb $0x1, -0x85(%rbp)
je 0xf262
movl -0x7c(%rbp), %esi
movl -0x80(%rbp), %edx
movl -0x6c(%rbp), %ecx
leaq -0x938(%rbp), %rdi
callq 0x730c0
jmp 0xf260
jmp 0xf29c
movsd -0x60(%rbp), %xmm0
addsd %xmm0, %xmm0
movsd 0x72da5(%rip), %xmm1    # 0x82018
mulsd %xmm1, %xmm0
movsd 0x72d91(%rip), %xmm1    # 0x82010
divsd %xmm1, %xmm0
movl -0x7c(%rbp), %esi
movl -0x80(%rbp), %edx
movl -0x6c(%rbp), %ecx
leaq -0x938(%rbp), %rdi
callq 0x6df50
jmp 0xf29a
jmp 0xf29c
movl -0x6c(%rbp), %edx
movl -0x74(%rbp), %ecx
leaq -0x938(%rbp), %rdi
leaq -0x50(%rbp), %rsi
callq 0x6d5e0
jmp 0xf2b4
movl $0x0, -0x4(%rbp)
movl $0x1, -0x95c(%rbp)
leaq -0x938(%rbp), %rdi
callq 0x6b5c0
leaq -0x188(%rbp), %rdi
callq 0x10ee0
leaq -0xa8(%rbp), %rdi
callq 0x9a98
leaq -0x50(%rbp), %rdi
callq 0x9a98
leaq -0x30(%rbp), %rdi
callq 0x9a98
movl -0x4(%rbp), %eax
addq $0xcb0, %rsp            # imm = 0xCB0
popq %rbp
retq
leaq -0x938(%rbp), %rdi
callq 0x6b5c0
leaq -0x188(%rbp), %rdi
callq 0x10ee0
leaq -0xa8(%rbp), %rdi
callq 0x9a98
leaq -0x50(%rbp), %rdi
callq 0x9a98
leaq -0x30(%rbp), %rdi
callq 0x9a98
movq -0xb8(%rbp), %rdi
callq 0x9960
nopl (%rax)