// File: /workspace/github_cpp_makefile_star2_O1/ArashPartow[P]exprtk-extras/exprtk_maze_generator.cpp
// Function: void maze_generator<double>()
void maze_generator()
{
   typedef exprtk::symbol_table<T>         symbol_table_t;
   typedef exprtk::expression<T>           expression_t;
   typedef exprtk::parser<T>               parser_t;
   typedef exprtk::function_compositor<T>  compositor_t;
   typedef typename compositor_t::function function_t;

   const T width  = T(40);
   const T height = T(30);

   const T N = T(1);
   const T E = T(2);
   const T S = T(3);
   const T W = T(4);

   std::vector<T> board           (static_cast<std::size_t>(width * height), T(0));
   std::vector<T> north_wall_board(static_cast<std::size_t>(width * height), T(0));
   std::vector<T> west_wall_board (static_cast<std::size_t>(width * height), T(0));

   shuffle<T> shuffle;

   exprtk::rtl::io::package<T> io_package;

   symbol_table_t symbol_table;

   symbol_table.add_constant( "width"            , width           );
   symbol_table.add_constant( "height"           , height          );
   symbol_table.add_constant( "N"                , N               );
   symbol_table.add_constant( "E"                , E               );
   symbol_table.add_constant( "S"                , S               );
   symbol_table.add_constant( "W"                , W               );

   symbol_table.add_vector  ( "board"            , board           );
   symbol_table.add_vector  ( "north_wall_board" , north_wall_board);
   symbol_table.add_vector  ( "west_wall_board"  , west_wall_board );

   symbol_table.add_function( "shuffle"          , shuffle         );
   symbol_table.add_function( "print_digit"      ,
                             [](T v) ->T
                             { printf(" %d ",static_cast<int>(v)); return 0; });

   symbol_table.add_package (io_package);

   compositor_t compositor(symbol_table);

   compositor.load_variables(true);
   compositor.load_vectors  (true);

   compositor.add(
      function_t("get_board")
      .vars("x", "y")
      .expression
      ( " board[y * width + x]; " ));

   compositor.add(
      function_t("set_board")
      .vars("x", "y", "value")
      .expression
      ( " board[y * width + x] := value; " ));

   compositor.add(
      function_t("get_nwall_board")
      .vars("x", "y")
      .expression
      ( " north_wall_board[y * width + x]; " ));

   compositor.add(
      function_t("get_wwall_board")
      .vars("x", "y")
      .expression
      ( " west_wall_board[y * width + x]; " ));

   compositor.add(
      function_t("set_nwall_board")
      .vars("x", "y", "value")
      .expression
      ( " north_wall_board[y * width + x] := value; " ));

   compositor.add(
      function_t("set_wwall_board")
      .vars("x", "y", "value")
      .expression
      ( " west_wall_board[y * width + x] := value; " ));

   compositor.add(
      function_t("display_maze")
      .expression
      (
         " for (var x := 0; x < width; x += 1)                               "
         " {                                                                 "
         "    print('+---');                                                 "
         " };                                                                "
         "                                                                   "
         " println('+');                                                     "
         "                                                                   "
         " for (var y := 0; y < height; y += 1)                              "
         " {                                                                 "
         "    for (var x := 0; x < width; x += 1)                            "
         "    {                                                              "
         "       var segment := get_wwall_board(x,y) == W ? '    ' : '|   '; "
         "       print(segment);                                             "
         "    };                                                             "
         "                                                                   "
         "    println('|');                                                  "
         "                                                                   "
         "    for (var x := 0; x < width; x += 1)                            "
         "    {                                                              "
         "       var segment := get_nwall_board(x,y) == N ? '+   ' : '+---'; "
         "       print(segment);                                             "
         "    };                                                             "
         "                                                                   "
         "    println('+');                                                  "
         " };                                                                "
         "                                                                   "
         " println();                                                        "
      ));

   compositor.add(
      function_t("generate_maze")
      .vars("x","y")
      .expression
      (
         " set_board(x, y, 1);                                                  "
         "                                                                      "
         " var x_move [4] := { -1,  0, +1,  0 };                                "
         " var y_move [4] := {  0, +1,  0, -1 };                                "
         " var heading[4] := {  W,  N,  E,  S };                                "
         " var moves  [4] := {  0,  1,  2,  3 };                                "
         "                                                                      "
         " shuffle(moves);                                                      "
         "                                                                      "
         " for (var i := 0; i < moves[]; i += 1)                                "
         " {                                                                    "
         "    var move  := moves[i];                                            "
         "    var new_x := x + x_move[move];                                    "
         "    var new_y := y + y_move[move];                                    "
         "                                                                      "
         "    if ((new_x < 0     ) or (new_y < 0      )) continue;              "
         "    if ((new_x >= width) or (new_y >= height)) continue;              "
         "                                                                      "
         "    if (get_board(new_x, new_y) == 0)                                 "
         "    {                                                                 "
         "       if (heading[move] == N) { set_nwall_board(x, y, N); };         "
         "       if (heading[move] == W) { set_wwall_board(x, y, W); };         "
         "                                                                      "
         "       if (heading[move] == S) { set_nwall_board(new_x, new_y, N); }; "
         "       if (heading[move] == E) { set_wwall_board(new_x, new_y, W); }; "
         "                                                                      "
         "       generate_maze(new_x,new_y);                                    "
         "    }                                                                 "
         " };                                                                   "
      ));

   const std::string maze_generator_program =
      " generate_maze(0, 0); "
      " display_maze();      ";

   expression_t expression;
   expression.register_symbol_table(symbol_table);

   parser_t parser;
   parser.compile(maze_generator_program,expression);

   expression.value();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2a28, %rsp           # imm = 0x2A28
movabsq $0x4044000000000000, %rax # imm = 0x4044000000000000
movq %rax, 0x110(%rsp)
movabsq $0x403e000000000000, %rax # imm = 0x403E000000000000
movq %rax, 0x108(%rsp)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x100(%rsp)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0xf8(%rsp)
movabsq $0x4008000000000000, %rax # imm = 0x4008000000000000
movq %rax, 0xf0(%rsp)
movabsq $0x4010000000000000, %rax # imm = 0x4010000000000000
movq %rax, 0xe8(%rsp)
xorl %ebx, %ebx
movq %rbx, 0xe0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0xd0(%rsp)
movl $0x2580, %edi           # imm = 0x2580
callq 0x1190c0
movq %rax, 0xd0(%rsp)
movq %rax, 0xd8(%rsp)
leaq 0x2580(%rax), %r14
movq %r14, 0xe0(%rsp)
movl $0x2580, %edx           # imm = 0x2580
movq %rax, %rdi
xorl %esi, %esi
callq 0x119170
movq %r14, 0xd8(%rsp)
movq %rbx, 0xc0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0xb0(%rsp)
movl $0x2580, %edi           # imm = 0x2580
callq 0x1190c0
movq %rax, 0xb0(%rsp)
movq %rax, 0xb8(%rsp)
movq %rax, %rbx
addq $0x2580, %rbx           # imm = 0x2580
movq %rbx, 0xc0(%rsp)
movl $0x2580, %edx           # imm = 0x2580
movq %rax, %rdi
xorl %esi, %esi
callq 0x119170
movq %rbx, 0xb8(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
movl $0x2580, %edi           # imm = 0x2580
callq 0x1190c0
movq %rax, 0x90(%rsp)
movq %rax, 0x98(%rsp)
movq %rax, %rbx
addq $0x2580, %rbx           # imm = 0x2580
movq %rbx, 0xa0(%rsp)
movl $0x2580, %edx           # imm = 0x2580
movq %rax, %rdi
xorl %esi, %esi
callq 0x119170
movq %rbx, 0x98(%rsp)
leaq 0x1648(%rsp), %rdi
callq 0x11e496
leaq 0x268(%rsp), %rdi
callq 0x11e680
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
callq 0x11e760
leaq 0xc70(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x1bb211(%rip), %rsi    # 0x2d790d
leaq 0x1bb20f(%rip), %rdx    # 0x2d7912
leaq 0xc60(%rsp), %rdi
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0x110(%rsp), %rdx
callq 0x11e7a8
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c747
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bb1ba(%rip), %rsi    # 0x2d7913
leaq 0x1bb1b9(%rip), %rdx    # 0x2d7919
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0x108(%rsp), %rdx
callq 0x11e7a8
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c79c
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bc973(%rip), %rsi    # 0x2d9121
leaq 0x1bc96d(%rip), %rdx    # 0x2d9122
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0x100(%rsp), %rdx
callq 0x11e7a8
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c7f1
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bd032(%rip), %rsi    # 0x2d9835
leaq 0x1bd02c(%rip), %rdx    # 0x2d9836
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0x11e7a8
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c846
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bb0c2(%rip), %rsi    # 0x2d791a
leaq 0x1bb0bc(%rip), %rdx    # 0x2d791b
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x11e7a8
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c89b
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bb06f(%rip), %rsi    # 0x2d791c
leaq 0x1bb069(%rip), %rdx    # 0x2d791d
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x11e7a8
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c8f0
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bb027(%rip), %rsi    # 0x2d7929
leaq 0x1bb025(%rip), %rdx    # 0x2d792e
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0xd0(%rsp), %rdx
callq 0x11e8f2
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c945
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bafc7(%rip), %rsi    # 0x2d791e
leaq 0x1bafd0(%rip), %rdx    # 0x2d792e
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0xb0(%rsp), %rdx
callq 0x11e8f2
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c99a
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1baf83(%rip), %rsi    # 0x2d792f
leaq 0x1baf8b(%rip), %rdx    # 0x2d793e
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x11e8f2
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c9ef
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1baf3e(%rip), %rsi    # 0x2d793f
leaq 0x1baf3e(%rip), %rdx    # 0x2d7946
callq 0x11e2ee
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
leaq 0x1648(%rsp), %rdx
callq 0x11ea0a
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11ca44
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1baef1(%rip), %rsi    # 0x2d7947
leaq 0x1baef5(%rip), %rdx    # 0x2d7952
callq 0x11e2ee
leaq 0x9f4d(%rip), %rdx      # 0x1269b6
leaq 0x8(%rsp), %rdi
leaq 0xc60(%rsp), %rsi
callq 0x11eb94
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11ca98
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x268(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x1269d0
leaq 0xc60(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x11ed12
movw $0x101, 0x1640(%rsp)    # imm = 0x101
leaq 0x128(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x1bae7a(%rip), %rsi    # 0x2d7953
leaq 0x1bae7c(%rip), %rdx    # 0x2d795c
leaq 0x118(%rsp), %rdi
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x20(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x1bad53(%rip), %rsi    # 0x2d7865
leaq 0x1bad4d(%rip), %rdx    # 0x2d7866
leaq 0x10(%rsp), %rdi
callq 0x11e2ee
leaq 0x40(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x1bc042(%rip), %rsi    # 0x2d8b75
leaq 0x1bc03c(%rip), %rdx    # 0x2d8b76
leaq 0x30(%rsp), %rdi
callq 0x11e2ee
leaq 0x378(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x60(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1bade7(%rip), %rsi    # 0x2d795d
leaq 0x1badf7(%rip), %rdx    # 0x2d7974
leaq 0x50(%rsp), %rdi
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x1590(%rsp), %rdi
leaq 0x338(%rsp), %rsi
callq 0x1281da
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11cc70
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11cc70
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11cc87
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11cc9e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11ccb5
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
leaq 0x368(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11ccde
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x348(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11ccff
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11cd1c
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x118(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1bac47(%rip), %rsi    # 0x2d7975
leaq 0x1bac49(%rip), %rdx    # 0x2d797e
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1bab07(%rip), %rsi    # 0x2d7865
leaq 0x1bab01(%rip), %rdx    # 0x2d7866
callq 0x11e2ee
leaq 0x30(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bbdfc(%rip), %rsi    # 0x2d8b75
leaq 0x1bbdf6(%rip), %rdx    # 0x2d8b76
callq 0x11e2ee
leaq 0x50(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1bbdcb(%rip), %rsi    # 0x2d8b5f
leaq 0x1bbdc9(%rip), %rdx    # 0x2d8b64
callq 0x11e2ee
leaq 0x378(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x80(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x1bab9d(%rip), %rsi    # 0x2d797f
leaq 0x1babb6(%rip), %rdx    # 0x2d799f
leaq 0x70(%rsp), %rdi
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x70(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x1281da
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11cedc
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11cedc
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11cefe
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11cf15
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11cf2c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11cf43
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x11cf70
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x11cf95
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11cfb2
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x118(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1ba9dc(%rip), %rsi    # 0x2d79a0
leaq 0x1ba9e4(%rip), %rdx    # 0x2d79af
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1ba871(%rip), %rsi    # 0x2d7865
leaq 0x1ba86b(%rip), %rdx    # 0x2d7866
callq 0x11e2ee
leaq 0x30(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bbb66(%rip), %rsi    # 0x2d8b75
leaq 0x1bbb60(%rip), %rdx    # 0x2d8b76
callq 0x11e2ee
leaq 0x378(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x50(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1ba964(%rip), %rsi    # 0x2d79b0
leaq 0x1ba97f(%rip), %rdx    # 0x2d79d2
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x1281da
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11d141
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11d141
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11d158
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11d16f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11d186
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x11d1b3
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x11d1d8
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11d1f5
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x118(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1ba7cc(%rip), %rsi    # 0x2d79d3
leaq 0x1ba7d4(%rip), %rdx    # 0x2d79e2
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1ba62e(%rip), %rsi    # 0x2d7865
leaq 0x1ba628(%rip), %rdx    # 0x2d7866
callq 0x11e2ee
leaq 0x30(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bb923(%rip), %rsi    # 0x2d8b75
leaq 0x1bb91d(%rip), %rdx    # 0x2d8b76
callq 0x11e2ee
leaq 0x378(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x50(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1ba754(%rip), %rsi    # 0x2d79e3
leaq 0x1ba76e(%rip), %rdx    # 0x2d7a04
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x1281da
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11d384
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11d384
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11d39b
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11d3b2
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11d3c9
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x11d3f6
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x11d41b
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11d438
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x118(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1ba5bb(%rip), %rsi    # 0x2d7a05
leaq 0x1ba5c3(%rip), %rdx    # 0x2d7a14
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1ba3eb(%rip), %rsi    # 0x2d7865
leaq 0x1ba3e5(%rip), %rdx    # 0x2d7866
callq 0x11e2ee
leaq 0x30(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bb6e0(%rip), %rsi    # 0x2d8b75
leaq 0x1bb6da(%rip), %rdx    # 0x2d8b76
callq 0x11e2ee
leaq 0x50(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1bb6af(%rip), %rsi    # 0x2d8b5f
leaq 0x1bb6ad(%rip), %rdx    # 0x2d8b64
callq 0x11e2ee
leaq 0x378(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1ba513(%rip), %rsi    # 0x2d7a15
leaq 0x1ba537(%rip), %rdx    # 0x2d7a40
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x70(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x1281da
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11d5f7
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11d5f7
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11d619
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11d630
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11d647
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11d65e
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x11d68b
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x11d6b0
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11d6cd
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x118(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1ba362(%rip), %rsi    # 0x2d7a41
leaq 0x1ba36a(%rip), %rdx    # 0x2d7a50
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1ba156(%rip), %rsi    # 0x2d7865
leaq 0x1ba150(%rip), %rdx    # 0x2d7866
callq 0x11e2ee
leaq 0x30(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1bb44b(%rip), %rsi    # 0x2d8b75
leaq 0x1bb445(%rip), %rdx    # 0x2d8b76
callq 0x11e2ee
leaq 0x50(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1bb41a(%rip), %rsi    # 0x2d8b5f
leaq 0x1bb418(%rip), %rdx    # 0x2d8b64
callq 0x11e2ee
leaq 0x378(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1ba2ba(%rip), %rsi    # 0x2d7a51
leaq 0x1ba2dd(%rip), %rdx    # 0x2d7a7b
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x70(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x1281da
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11d88c
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11d88c
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11d8ae
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11d8c5
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11d8dc
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11d8f3
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x11d920
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x11d945
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11d962
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x118(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1ba108(%rip), %rsi    # 0x2d7a7c
leaq 0x1ba10d(%rip), %rdx    # 0x2d7a88
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1ba0e5(%rip), %rsi    # 0x2d7a89
leaq 0x1ba7ef(%rip), %rdx    # 0x2d819a
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x10(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x1281da
leaq 0x378(%rsp), %r15
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11daa1
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11daa1
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11dab8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x11dae5
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x11db0a
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11db27
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x118(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1ba662(%rip), %rsi    # 0x2d819b
leaq 0x1ba668(%rip), %rdx    # 0x2d81a8
callq 0x11e2ee
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11ee9a
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1b9cfc(%rip), %rsi    # 0x2d7865
leaq 0x1b9cf6(%rip), %rdx    # 0x2d7866
callq 0x11e2ee
leaq 0x30(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1baff1(%rip), %rsi    # 0x2d8b75
leaq 0x1bafeb(%rip), %rdx    # 0x2d8b76
callq 0x11e2ee
leaq 0x378(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12f022
leaq 0x50(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1ba5e8(%rip), %rsi    # 0x2d81a9
leaq 0x1badcf(%rip), %rdx    # 0x2d8997
callq 0x11e2ee
leaq 0x358(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x119550
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x1281da
leaq 0x1598(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11dcb6
leaq 0xc60(%rsp), %rdi
leaq 0x338(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x126f38
testb %al, %al
je 0x11dcb6
leaq 0x338(%rsp), %rsi
movq 0x88(%rsi), %rax
movq %rax, %rcx
subq 0x68(%rsi), %rcx
shrq $0x3, %rcx
cmpq $0x1, %rax
adcq $-0x1, %rcx
movq 0x60(%rsi), %rax
movq 0x70(%rsi), %rdx
subq 0x78(%rsi), %rdx
subq 0x50(%rsi), %rax
sarq $0x5, %rdx
sarq $0x5, %rax
leaq (%rcx,%rcx,2), %rcx
shlq $0x8, %rcx
addq 0x15c0(%rsp), %rcx
leaq (%rdx,%rdx,2), %rdx
shlq $0x4, %rdx
leaq (%rax,%rax,2), %rdi
shlq $0x4, %rdi
addq %rdx, %rdi
addq %rcx, %rdi
callq 0x127e0a
movq (%rax), %r12
leaq 0x338(%rsp), %rsi
leaq 0x1590(%rsp), %rdi
callq 0x12815e
movq %r12, %rdi
movq %rax, %rsi
callq 0x127e86
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11dccd
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
leaq 0x8(%rsp), %rbx
je 0x11dce9
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11dd00
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
movq %r15, %rdi
callq 0x12f2bc
movq 0x358(%rsp), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x11dd2d
movq 0x368(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x338(%rsp), %rdi
leaq 0x348(%rsp), %rax
cmpq %rax, %rdi
je 0x11dd52
movq 0x348(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11dd6f
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1bac1a(%rip), %rsi    # 0x2d8998
leaq 0x1bac3f(%rip), %rdx    # 0x2d89c4
callq 0x11e2ee
leaq 0x30(%rsp), %rdi
callq 0x11ef74
movq 0x38(%rsp), %rcx
movq 0x40(%rsp), %rax
subq %rcx, %rax
je 0x11ddf0
sarq $0x3, %rax
cmpq $0x1, %rax
movq %rax, %rsi
adcq $0x0, %rsi
cmpq %rbx, %rcx
je 0x11ddff
movq 0x8(%rsp), %rdx
cmpq (%rcx), %rdx
je 0x11ddff
addq $0x8, %rcx
movl $0x1, %edi
subq %rsi, %rdi
xorl %esi, %esi
cmpq %rsi, %rdi
je 0x11ddf0
decq %rsi
cmpq %rbx, %rcx
je 0x11dde8
leaq 0x8(%rcx), %r8
cmpq (%rcx), %rdx
movq %r8, %rcx
jne 0x11ddcf
negq %rsi
cmpq %rax, %rsi
jb 0x11ddff
leaq 0x38(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x12f52e
leaq 0x118(%rsp), %rdi
movl $0x7f, %esi
callq 0x11f00e
leaq 0x338(%rsp), %rdi
leaq 0x118(%rsp), %rsi
callq 0x11f10e
leaq 0x218(%rsp), %rdi
callq 0x12f714
leaq 0x1e8(%rsp), %rdi
callq 0x12f714
leaq 0x1b8(%rsp), %rdi
callq 0x12f714
leaq 0x188(%rsp), %rdi
callq 0x12f714
leaq 0x158(%rsp), %rdi
callq 0x12f714
leaq 0x128(%rsp), %rdi
callq 0x12f714
leaq 0x338(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x11f932
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
leaq 0x338(%rsp), %rdi
callq 0x120304
leaq 0x30(%rsp), %rdi
callq 0x1205c6
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11dec8
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
callq 0x120614
leaq 0x8(%rsp), %rdi
callq 0x120676
leaq 0x328(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11df00
movq 0x328(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x2c3a89(%rip), %rbx    # 0x3e1990
leaq 0x300(%rsp), %rax
movq %rbx, -0x30(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11df2c
movq 0x300(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x2c0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11df4d
movq 0x2c0(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x298(%rsp), %rax
movq %rbx, -0x30(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11df72
movq 0x298(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x1678(%rsp), %rax
movq %rbx, -0x30(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11df97
movq 0x1678(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x11dfb4
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x119090
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x11dfd1
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x119090
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x11dfee
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x119090
addq $0x2a28, %rsp           # imm = 0x2A28
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x11e017
movq %rax, %r15
leaq 0x118(%rsp), %rdi
callq 0x11f8ea
jmp 0x11e158
movq %rax, %r15
jmp 0x11e158
movq %rax, %r15
jmp 0x11e162
jmp 0x11e0bb
jmp 0x11e180
jmp 0x11e187
jmp 0x11e0ab
jmp 0x11e0b3
jmp 0x11e0bb
jmp 0x11e0ab
jmp 0x11e0b3
jmp 0x11e0bb
jmp 0x11e1c1
jmp 0x11e180
jmp 0x11e187
jmp 0x11e0ab
jmp 0x11e0b3
jmp 0x11e0bb
jmp 0x11e1c1
jmp 0x11e180
jmp 0x11e187
jmp 0x11e0ab
jmp 0x11e0b3
jmp 0x11e0bb
jmp 0x11e180
jmp 0x11e187
jmp 0x11e0ab
jmp 0x11e0b3
jmp 0x11e0bb
jmp 0x11e180
jmp 0x11e187
jmp 0x11e0ab
jmp 0x11e0b3
jmp 0x11e0bb
jmp 0x11e1c1
jmp 0x11e180
jmp 0x11e187
jmp 0x11e0ab
jmp 0x11e0b3
jmp 0x11e0bb
jmp 0x11e180
jmp 0x11e187
movq %rax, %r15
jmp 0x11e209
movq %rax, %r15
jmp 0x11e216
movq %rax, %r15
jmp 0x11e233
jmp 0x11e118
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
jmp 0x11e0ef
jmp 0x11e118
movq %rax, %r15
movq 0xc60(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11e240
movq 0xc70(%rsp), %rsi
incq %rsi
callq 0x119090
jmp 0x11e240
movq %rax, %r15
jmp 0x11e240
movq %rax, %r15
jmp 0x11e24a
movq %rax, %r15
jmp 0x11e257
movq %rax, %r15
jmp 0x11e283
movq %rax, %r15
jmp 0x11e2a0
movq %rax, %r15
jmp 0x11e2bd
movq %rax, %r15
leaq 0x338(%rsp), %rdi
callq 0x120304
leaq 0x30(%rsp), %rdi
callq 0x1205c6
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11e233
movq 0x20(%rsp), %rsi
jmp 0x11e22b
jmp 0x11e180
jmp 0x11e180
jmp 0x11e180
movq %rax, %r15
jmp 0x11e1db
jmp 0x11e1c1
movq %rax, %r15
jmp 0x11e1f2
jmp 0x11e194
jmp 0x11e194
jmp 0x11e1c1
jmp 0x11e1c1
movq %rax, %r15
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11e1c4
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x119090
jmp 0x11e1c4
jmp 0x11e1c1
jmp 0x11e1c1
jmp 0x11e1c1
movq %rax, %r15
movq 0x50(%rsp), %rdi
cmpq %r14, %rdi
je 0x11e1db
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x30(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11e1f2
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11e209
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0x338(%rsp), %rdi
callq 0x11ef34
movq 0x118(%rsp), %rdi
cmpq %r13, %rdi
je 0x11e233
movq 0x128(%rsp), %rsi
incq %rsi
callq 0x119090
leaq 0xc60(%rsp), %rdi
callq 0x120614
leaq 0x8(%rsp), %rdi
callq 0x120676
leaq 0x268(%rsp), %rdi
callq 0x12070c
leaq 0x2c3732(%rip), %rax    # 0x3e1990
leaq 0x1678(%rsp), %rcx
movq %rax, -0x30(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x11e283
movq 0x1678(%rsp), %rsi
incq %rsi
callq 0x119090
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x11e2a0
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x119090
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x11e2bd
movq 0xc0(%rsp), %rsi
subq %rdi, %rsi
callq 0x119090
movq 0xd0(%rsp), %rdi
testq %rdi, %rdi
je 0x11e2da
movq 0xe0(%rsp), %rsi
subq %rdi, %rsi
callq 0x119090
movq %r15, %rdi
callq 0x119300