// File: /workspace/github_cpp_makefile_star2_O3/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 $0x2a18, %rsp           # imm = 0x2A18
movabsq $0x4044000000000000, %rax # imm = 0x4044000000000000
movq %rax, 0x100(%rsp)
movabsq $0x403e000000000000, %rax # imm = 0x403E000000000000
movq %rax, 0xf8(%rsp)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0xf0(%rsp)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0xe8(%rsp)
movabsq $0x4008000000000000, %rax # imm = 0x4008000000000000
movq %rax, 0xe0(%rsp)
movabsq $0x4010000000000000, %rax # imm = 0x4010000000000000
movq %rax, 0xd8(%rsp)
movl $0x2580, %edi           # imm = 0x2580
callq 0x1170c0
movq %rax, 0xc0(%rsp)
leaq 0x2580(%rax), %rbx
movq %rbx, 0xd0(%rsp)
movl $0x2580, %edx           # imm = 0x2580
movq %rax, %rdi
xorl %esi, %esi
callq 0x117170
movq %rbx, 0xc8(%rsp)
movl $0x2580, %edi           # imm = 0x2580
callq 0x1170c0
movq %rax, 0xa8(%rsp)
movq %rax, %rbx
addq $0x2580, %rbx           # imm = 0x2580
movq %rbx, 0xb8(%rsp)
movl $0x2580, %edx           # imm = 0x2580
movq %rax, %rdi
xorl %esi, %esi
callq 0x117170
movq %rbx, 0xb0(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x90(%rsp)
movq $0x0, 0xa0(%rsp)
movl $0x2580, %edi           # imm = 0x2580
callq 0x1170c0
movq %rax, 0x90(%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 0x117170
movq %rbx, 0x98(%rsp)
leaq 0x1638(%rsp), %rdi
callq 0x11c3e4
leaq 0x258(%rsp), %rdi
callq 0x11c5ce
leaq 0x8(%rsp), %rdi
movl $0x1, %esi
callq 0x11c6ae
leaq 0xc60(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x199322(%rip), %rsi    # 0x2b3985
leaq 0x199320(%rip), %rdx    # 0x2b398a
leaq 0xc50(%rsp), %rdi
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0x100(%rsp), %rdx
callq 0x11c6f6
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a6ae
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1992cb(%rip), %rsi    # 0x2b398b
leaq 0x1992ca(%rip), %rdx    # 0x2b3991
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0xf8(%rsp), %rdx
callq 0x11c6f6
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a703
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x19aa84(%rip), %rsi    # 0x2b5199
leaq 0x19aa7e(%rip), %rdx    # 0x2b519a
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
callq 0x11c6f6
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a758
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x19b143(%rip), %rsi    # 0x2b58ad
leaq 0x19b13d(%rip), %rdx    # 0x2b58ae
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0xe8(%rsp), %rdx
callq 0x11c6f6
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a7ad
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1991d3(%rip), %rsi    # 0x2b3992
leaq 0x1991cd(%rip), %rdx    # 0x2b3993
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
callq 0x11c6f6
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a802
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x199180(%rip), %rsi    # 0x2b3994
leaq 0x19917a(%rip), %rdx    # 0x2b3995
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0xd8(%rsp), %rdx
callq 0x11c6f6
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a857
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x199138(%rip), %rsi    # 0x2b39a1
leaq 0x199136(%rip), %rdx    # 0x2b39a6
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0xc0(%rsp), %rdx
callq 0x11c820
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a8ac
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1990d8(%rip), %rsi    # 0x2b3996
leaq 0x1990e1(%rip), %rdx    # 0x2b39a6
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0xa8(%rsp), %rdx
callq 0x11c820
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a901
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x199094(%rip), %rsi    # 0x2b39a7
leaq 0x19909c(%rip), %rdx    # 0x2b39b6
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0x90(%rsp), %rdx
callq 0x11c820
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a956
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x19904f(%rip), %rsi    # 0x2b39b7
leaq 0x19904f(%rip), %rdx    # 0x2b39be
callq 0x11c22c
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
leaq 0x1638(%rsp), %rdx
callq 0x11ca00
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a9ab
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x199002(%rip), %rsi    # 0x2b39bf
leaq 0x199006(%rip), %rdx    # 0x2b39ca
callq 0x11c22c
leaq 0x895a(%rip), %rdx      # 0x12332a
leaq 0x8(%rsp), %rdi
leaq 0xc50(%rsp), %rsi
callq 0x11cb6a
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11a9ff
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x258(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x123344
leaq 0xc50(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x11ccc0
movw $0x101, 0x1630(%rsp)    # imm = 0x101
leaq 0x118(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0x198f8b(%rip), %rsi    # 0x2b39cb
leaq 0x198f8d(%rip), %rdx    # 0x2b39d4
leaq 0x108(%rsp), %rdi
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x20(%rsp), %rbp
movq %rbp, -0x10(%rbp)
leaq 0x198e64(%rip), %rsi    # 0x2b38dd
leaq 0x198e5e(%rip), %rdx    # 0x2b38de
leaq 0x10(%rsp), %rdi
callq 0x11c22c
leaq 0x40(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x19a153(%rip), %rsi    # 0x2b4bed
leaq 0x19a14d(%rip), %rdx    # 0x2b4bee
leaq 0x30(%rsp), %rdi
callq 0x11c22c
leaq 0x368(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x60(%rsp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x198ef8(%rip), %rsi    # 0x2b39d5
leaq 0x198f08(%rip), %rdx    # 0x2b39ec
leaq 0x50(%rsp), %rdi
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x1580(%rsp), %rdi
leaq 0x328(%rsp), %rsi
callq 0x124b4c
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11abd7
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11abd7
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11abee
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11ac05
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11ac1c
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
leaq 0x358(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11ac45
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x338(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11ac66
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11ac83
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x108(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x198d58(%rip), %rsi    # 0x2b39ed
leaq 0x198d5a(%rip), %rdx    # 0x2b39f6
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x198c18(%rip), %rsi    # 0x2b38dd
leaq 0x198c12(%rip), %rdx    # 0x2b38de
callq 0x11c22c
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x199f0d(%rip), %rsi    # 0x2b4bed
leaq 0x199f07(%rip), %rdx    # 0x2b4bee
callq 0x11c22c
leaq 0x50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x199edc(%rip), %rsi    # 0x2b4bd7
leaq 0x199eda(%rip), %rdx    # 0x2b4bdc
callq 0x11c22c
leaq 0x368(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x80(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x198cae(%rip), %rsi    # 0x2b39f7
leaq 0x198cc7(%rip), %rdx    # 0x2b3a17
leaq 0x70(%rsp), %rdi
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x70(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124b4c
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11ae43
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11ae43
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11ae65
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11ae7c
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11ae93
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11aeaa
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0x11aed7
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0x11aefc
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11af19
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x108(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x198aed(%rip), %rsi    # 0x2b3a18
leaq 0x198af5(%rip), %rdx    # 0x2b3a27
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x198982(%rip), %rsi    # 0x2b38dd
leaq 0x19897c(%rip), %rdx    # 0x2b38de
callq 0x11c22c
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x199c77(%rip), %rsi    # 0x2b4bed
leaq 0x199c71(%rip), %rdx    # 0x2b4bee
callq 0x11c22c
leaq 0x368(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x198a75(%rip), %rsi    # 0x2b3a28
leaq 0x198a90(%rip), %rdx    # 0x2b3a4a
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124b4c
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11b0a8
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11b0a8
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11b0bf
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11b0d6
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11b0ed
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0x11b11a
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0x11b13f
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11b15c
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x108(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1988dd(%rip), %rsi    # 0x2b3a4b
leaq 0x1988e5(%rip), %rdx    # 0x2b3a5a
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x19873f(%rip), %rsi    # 0x2b38dd
leaq 0x198739(%rip), %rdx    # 0x2b38de
callq 0x11c22c
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x199a34(%rip), %rsi    # 0x2b4bed
leaq 0x199a2e(%rip), %rdx    # 0x2b4bee
callq 0x11c22c
leaq 0x368(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x198865(%rip), %rsi    # 0x2b3a5b
leaq 0x19887f(%rip), %rdx    # 0x2b3a7c
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124b4c
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11b2eb
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11b2eb
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11b302
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11b319
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11b330
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0x11b35d
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0x11b382
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11b39f
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x108(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x1986cc(%rip), %rsi    # 0x2b3a7d
leaq 0x1986d4(%rip), %rdx    # 0x2b3a8c
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1984fc(%rip), %rsi    # 0x2b38dd
leaq 0x1984f6(%rip), %rdx    # 0x2b38de
callq 0x11c22c
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1997f1(%rip), %rsi    # 0x2b4bed
leaq 0x1997eb(%rip), %rdx    # 0x2b4bee
callq 0x11c22c
leaq 0x50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1997c0(%rip), %rsi    # 0x2b4bd7
leaq 0x1997be(%rip), %rdx    # 0x2b4bdc
callq 0x11c22c
leaq 0x368(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
movq %rax, (%rdi)
leaq 0x198624(%rip), %rsi    # 0x2b3a8d
leaq 0x198648(%rip), %rdx    # 0x2b3ab8
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x70(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124b4c
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11b55e
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11b55e
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11b580
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11b597
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11b5ae
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11b5c5
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0x11b5f2
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0x11b617
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11b634
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x108(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x198473(%rip), %rsi    # 0x2b3ab9
leaq 0x19847b(%rip), %rdx    # 0x2b3ac8
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x198267(%rip), %rsi    # 0x2b38dd
leaq 0x198261(%rip), %rdx    # 0x2b38de
callq 0x11c22c
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x19955c(%rip), %rsi    # 0x2b4bed
leaq 0x199556(%rip), %rdx    # 0x2b4bee
callq 0x11c22c
leaq 0x50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x19952b(%rip), %rsi    # 0x2b4bd7
leaq 0x199529(%rip), %rdx    # 0x2b4bdc
callq 0x11c22c
leaq 0x368(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x50(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
movq %rax, (%rdi)
leaq 0x1983cb(%rip), %rsi    # 0x2b3ac9
leaq 0x1983ee(%rip), %rdx    # 0x2b3af3
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x70(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124b4c
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11b7f3
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11b7f3
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11b815
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11b82c
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11b843
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11b85a
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0x11b887
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0x11b8ac
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11b8c9
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x108(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x198219(%rip), %rsi    # 0x2b3af4
leaq 0x19821e(%rip), %rdx    # 0x2b3b00
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x1981f6(%rip), %rsi    # 0x2b3b01
leaq 0x198900(%rip), %rdx    # 0x2b4212
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x10(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124b4c
leaq 0x368(%rsp), %r15
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11ba08
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11ba08
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11ba1f
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0x11ba4c
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0x11ba71
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11ba8e
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x108(%rsp), %rdi
movq %r13, (%rdi)
leaq 0x198773(%rip), %rsi    # 0x2b4213
leaq 0x198779(%rip), %rdx    # 0x2b4220
callq 0x11c22c
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11ce48
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x197e0d(%rip), %rsi    # 0x2b38dd
leaq 0x197e07(%rip), %rdx    # 0x2b38de
callq 0x11c22c
leaq 0x30(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x199102(%rip), %rsi    # 0x2b4bed
leaq 0x1990fc(%rip), %rdx    # 0x2b4bee
callq 0x11c22c
leaq 0x368(%rsp), %r15
leaq 0x10(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x30(%rsp), %rsi
movq %r15, %rdi
callq 0x12b00c
leaq 0x50(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0x1986f9(%rip), %rsi    # 0x2b4221
leaq 0x198ee0(%rip), %rdx    # 0x2b4a0f
callq 0x11c22c
leaq 0x348(%rsp), %r12
leaq 0x50(%rsp), %rsi
movq %r12, %rdi
callq 0x117550
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124b4c
leaq 0x1588(%rsp), %rcx
cmpq %rax, %rcx
jne 0x11bc1d
leaq 0xc50(%rsp), %rdi
leaq 0x328(%rsp), %rsi
movq %r12, %rdx
movq %r15, %rcx
xorl %r8d, %r8d
callq 0x1238b2
testb %al, %al
je 0x11bc1d
leaq 0x328(%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 0x15b0(%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 0x124770
movq (%rax), %r12
leaq 0x328(%rsp), %rsi
leaq 0x1580(%rsp), %rdi
callq 0x124ad0
movq %r12, %rdi
movq %rax, %rsi
callq 0x1247ec
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11bc34
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
leaq 0x8(%rsp), %rbx
je 0x11bc50
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11bc67
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
movq %r15, %rdi
callq 0x12b2a6
movq 0x348(%rsp), %rdi
leaq 0x358(%rsp), %rax
cmpq %rax, %rdi
je 0x11bc94
movq 0x358(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %rax
cmpq %rax, %rdi
je 0x11bcb9
movq 0x338(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11bcd6
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x10(%rsp), %rdi
movq %rbp, (%rdi)
leaq 0x198d2b(%rip), %rsi    # 0x2b4a10
leaq 0x198d50(%rip), %rdx    # 0x2b4a3c
callq 0x11c22c
leaq 0x30(%rsp), %rdi
callq 0x11cf22
movq 0x38(%rsp), %rax
movq 0x40(%rsp), %rcx
subq %rax, %rcx
je 0x11bd2e
sarq $0x3, %rcx
movq 0x8(%rsp), %rdx
cmpq $0x1, %rcx
adcq $0x0, %rcx
cmpq %rbx, %rax
je 0x11bd3d
cmpq (%rax), %rdx
je 0x11bd3d
addq $0x8, %rax
decq %rcx
jne 0x11bd1b
leaq 0x38(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x12b52c
leaq 0x108(%rsp), %rdi
movl $0x7f, %esi
callq 0x11cfae
leaq 0x328(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x11d0ae
leaq 0x208(%rsp), %rdi
callq 0x12b712
leaq 0x1d8(%rsp), %rdi
callq 0x12b712
leaq 0x1a8(%rsp), %rdi
callq 0x12b712
leaq 0x178(%rsp), %rdi
callq 0x12b712
leaq 0x148(%rsp), %rdi
callq 0x12b712
leaq 0x118(%rsp), %rdi
callq 0x12b712
leaq 0x328(%rsp), %rdi
leaq 0x10(%rsp), %rsi
leaq 0x30(%rsp), %rdx
callq 0x11d8d2
movq 0x30(%rsp), %rax
movq 0x8(%rax), %rdi
movq (%rdi), %rax
callq *0x18(%rax)
leaq 0x328(%rsp), %rdi
callq 0x11e46e
leaq 0x30(%rsp), %rdi
callq 0x11e730
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11be06
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
callq 0x11e77e
leaq 0x8(%rsp), %rdi
callq 0x11e7e0
leaq 0x318(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11be3e
movq 0x318(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x29180b(%rip), %rbx    # 0x3ad650
leaq 0x2f0(%rsp), %rax
movq %rbx, -0x30(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11be6a
movq 0x2f0(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x2b0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11be8b
movq 0x2b0(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x288(%rsp), %rax
movq %rbx, -0x30(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11beb0
movq 0x288(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x1668(%rsp), %rax
movq %rbx, -0x30(%rax)
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11bed5
movq 0x1668(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x11bef2
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x117090
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x11bf0f
movq 0xb8(%rsp), %rsi
subq %rdi, %rsi
callq 0x117090
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x11bf2c
movq 0xd0(%rsp), %rsi
subq %rdi, %rsi
callq 0x117090
addq $0x2a18, %rsp           # imm = 0x2A18
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x11bf55
movq %rax, %r15
leaq 0x108(%rsp), %rdi
callq 0x11d88a
jmp 0x11c096
movq %rax, %r15
jmp 0x11c096
movq %rax, %r15
jmp 0x11c0a0
jmp 0x11bff9
jmp 0x11c0be
jmp 0x11c0c5
jmp 0x11bfe9
jmp 0x11bff1
jmp 0x11bff9
jmp 0x11bfe9
jmp 0x11bff1
jmp 0x11bff9
jmp 0x11c0ff
jmp 0x11c0be
jmp 0x11c0c5
jmp 0x11bfe9
jmp 0x11bff1
jmp 0x11bff9
jmp 0x11c0ff
jmp 0x11c0be
jmp 0x11c0c5
jmp 0x11bfe9
jmp 0x11bff1
jmp 0x11bff9
jmp 0x11c0be
jmp 0x11c0c5
jmp 0x11bfe9
jmp 0x11bff1
jmp 0x11bff9
jmp 0x11c0be
jmp 0x11c0c5
jmp 0x11bfe9
jmp 0x11bff1
jmp 0x11bff9
jmp 0x11c0ff
jmp 0x11c0be
jmp 0x11c0c5
jmp 0x11bfe9
jmp 0x11bff1
jmp 0x11bff9
jmp 0x11c0be
jmp 0x11c0c5
movq %rax, %r15
jmp 0x11c147
movq %rax, %r15
jmp 0x11c154
movq %rax, %r15
jmp 0x11c171
jmp 0x11c056
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
jmp 0x11c02d
jmp 0x11c056
movq %rax, %r15
movq 0xc50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c17e
movq 0xc60(%rsp), %rsi
incq %rsi
callq 0x117090
jmp 0x11c17e
movq %rax, %r15
jmp 0x11c17e
movq %rax, %r15
jmp 0x11c188
movq %rax, %r15
jmp 0x11c195
movq %rax, %r15
jmp 0x11c1c1
movq %rax, %r15
jmp 0x11c1de
movq %rax, %r15
jmp 0x11c1fb
movq %rax, %r15
leaq 0x328(%rsp), %rdi
callq 0x11e46e
leaq 0x30(%rsp), %rdi
callq 0x11e730
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11c171
movq 0x20(%rsp), %rsi
jmp 0x11c169
jmp 0x11c0be
jmp 0x11c0be
jmp 0x11c0be
movq %rax, %r15
jmp 0x11c119
jmp 0x11c0ff
movq %rax, %r15
jmp 0x11c130
jmp 0x11c0d2
jmp 0x11c0d2
jmp 0x11c0ff
jmp 0x11c0ff
movq %rax, %r15
movq 0x70(%rsp), %rdi
leaq 0x80(%rsp), %rax
cmpq %rax, %rdi
je 0x11c102
movq 0x80(%rsp), %rsi
incq %rsi
callq 0x117090
jmp 0x11c102
jmp 0x11c0ff
jmp 0x11c0ff
jmp 0x11c0ff
movq %rax, %r15
movq 0x50(%rsp), %rdi
cmpq %rbx, %rdi
je 0x11c119
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x30(%rsp), %rdi
cmpq %r14, %rdi
je 0x11c130
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x10(%rsp), %rdi
cmpq %rbp, %rdi
je 0x11c147
movq 0x20(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0x328(%rsp), %rdi
callq 0x11cee2
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x11c171
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x117090
leaq 0xc50(%rsp), %rdi
callq 0x11e77e
leaq 0x8(%rsp), %rdi
callq 0x11e7e0
leaq 0x258(%rsp), %rdi
callq 0x11e876
leaq 0x2914b4(%rip), %rax    # 0x3ad650
leaq 0x1668(%rsp), %rcx
movq %rax, -0x30(%rcx)
movq -0x10(%rcx), %rdi
cmpq %rcx, %rdi
je 0x11c1c1
movq 0x1668(%rsp), %rsi
incq %rsi
callq 0x117090
movq 0x90(%rsp), %rdi
testq %rdi, %rdi
je 0x11c1de
movq 0xa0(%rsp), %rsi
subq %rdi, %rsi
callq 0x117090
movq 0xa8(%rsp), %rdi
testq %rdi, %rdi
je 0x11c1fb
movq 0xb8(%rsp), %rsi
subq %rdi, %rsi
callq 0x117090
movq 0xc0(%rsp), %rdi
testq %rdi, %rdi
je 0x11c218
movq 0xd0(%rsp), %rsi
subq %rdi, %rsi
callq 0x117090
movq %r15, %rdi
callq 0x117300