// File: silverneko[P]Lambda-calculus-interpreter/src/main.cpp
// Function: main
int main(int argc, char *argv[])
{
  Context prelude;
  prelude.add("true", "\\a \\b a");
  prelude.add("false", "\\a \\b b");
  prelude.add("if", "\\pred \\then \\else pred then else");
  prelude.add("not", "\\x x false true");
  prelude.add("and", "\\x \\y x y false");
  prelude.add("or", "\\x \\y x true y");
  // Y f = f (Y f)
  prelude.add("Y", "\\f (\\x f (x x)) (\\x f (x x))");
  prelude.add("+", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              int b = normalForm(expr, env).expr().val;
              return Expression( a + b );
            });
        }));
  prelude.add("-", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              int b = normalForm(expr, env).expr().val;
              return Expression( a - b );
            });
        }));
  prelude.add("*", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              if(a == 0)
                return Expression( 0 );
              int b = normalForm(expr, env).expr().val;
              return Expression( a * b );
            });
        }));
  prelude.add("/", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              int b = normalForm(expr, env).expr().val;
              return Expression( a / b );
            });
        }));
  prelude.add("mod", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              int b = normalForm(expr, env).expr().val;
              return Expression( a % b );
            });
        }));
  prelude.add("==", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              int b = normalForm(expr, env).expr().val;
              if(a == b){
                return Object(Expression("true"), env);
              }else{
                return Object(Expression("false"), env);
              }
            });
        }));
  prelude.add("<", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              int b = normalForm(expr, env).expr().val;
              if(a < b){
                return Object(Expression("true"), env);
              }else{
                return Object(Expression("false"), env);
              }
            });
        }));
  prelude.add("<=", Object([](const Expression& expr, const Context& env){
          int a = normalForm(expr, env).expr().val;
          return Object([a](const Expression& expr, const Context& env){
              int b = normalForm(expr, env).expr().val;
              if(a <= b){
                return Object(Expression("true"), env);
              }else{
                return Object(Expression("false"), env);
              }
            });
        }));
  prelude.add("flip", "\\f \\x \\y f y x");
  prelude.add("!=", "\\a \\b not (== a b)");
  prelude.add(">", "flip <");
  prelude.add(">=", "flip >=");

  prelude.add(">>=", "\\m \\f \\s (m s) \\a \\s' f a s'");
  prelude.add(">>", "\\ma \\mb >>= ma (\\_ mb)");

  prelude.add("runIO", "\\m m s");
  prelude.add("pair", "\\a \\b \\p p a b");
  prelude.add("pureIO", "pair");
  prelude.add("putChar", Object([](const Expression& expr, const Context& env){
        auto promiseChar = [expr, env](){ return normalForm(expr, env).expr().val;};
        return Object([promiseChar](const Expression& s, const Context& env){
          fputc(promiseChar(), stdout);
          /* pair nil s */
          return Object([s, env](const Expression& p, const Context& _env){
            Object res = weakNormalForm(p, _env).call(Expression("nil"), {});
            return weakNormalForm(res.expr(), res.env()).call(s, env);
          });
        });
      }));
  prelude.add("getChar", Object([](const Expression& s, const Context& env){
        int c = fgetc(stdin);
        return Object([c, s, env](const Expression& p, const Context& _env){
          Object res = weakNormalForm(p, _env).call(Expression(c), {});
          return weakNormalForm(res.expr(), res.env()).call(s, env);
        });
      }));

  string rawInput, input;
  ifstream file("samplecode/prelude");
  while(getline(file, input)){
    rawInput += input;
    rawInput += "\n";
  }
  file.close();
  if(argc > 1){
    file.open(argv[1]);
    while(getline(file, input)){
      rawInput += input;
      rawInput += "\n";
    }
    file.close();
  }else{
    while(getline(cin, input)){
      rawInput += input;
      rawInput += "\n";
    }
  }
  Scanner scanner(rawInput);
  Expression * expr = parseExpression(scanner);
  Object res = normalForm(*expr, prelude);

  //res.expr().prettyPrint();
  //cout << endl;

  return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x11a0, %rsp           # imm = 0x11A0
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x11700
leaq -0x41(%rbp), %rdi
movq %rdi, -0xfc8(%rbp)
callq 0x33e0
movq -0xfc8(%rbp), %rdx
leaq 0x1a037(%rip), %rsi     # 0x1f5b7
leaq -0x40(%rbp), %rdi
callq 0x11720
jmp 0x558b
leaq -0x79(%rbp), %rdi
movq %rdi, -0xfd0(%rbp)
callq 0x33e0
movq -0xfd0(%rbp), %rdx
leaq 0x19fcb(%rip), %rsi     # 0x1f574
leaq -0x78(%rbp), %rdi
callq 0x11720
jmp 0x55b4
leaq -0x20(%rbp), %rdi
leaq -0x40(%rbp), %rsi
leaq -0x78(%rbp), %rdx
callq 0x40b0
jmp 0x55c7
leaq -0x78(%rbp), %rdi
callq 0x3140
leaq -0x79(%rbp), %rdi
callq 0x3280
leaq -0x40(%rbp), %rdi
callq 0x3140
leaq -0x41(%rbp), %rdi
callq 0x3280
leaq -0xa1(%rbp), %rdi
movq %rdi, -0xfd8(%rbp)
callq 0x33e0
movq -0xfd8(%rbp), %rdx
leaq 0x19fbe(%rip), %rsi     # 0x1f5ca
leaq -0xa0(%rbp), %rdi
callq 0x11720
jmp 0x561a
leaq -0xc9(%rbp), %rdi
movq %rdi, -0xfe0(%rbp)
callq 0x33e0
movq -0xfe0(%rbp), %rdx
leaq 0x19f41(%rip), %rsi     # 0x1f57c
leaq -0xc8(%rbp), %rdi
callq 0x11720
jmp 0x5649
leaq -0x20(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
callq 0x40b0
jmp 0x5662
leaq -0xc8(%rbp), %rdi
callq 0x3140
leaq -0xc9(%rbp), %rdi
callq 0x3280
leaq -0xa0(%rbp), %rdi
callq 0x3140
leaq -0xa1(%rbp), %rdi
callq 0x3280
leaq -0xf1(%rbp), %rdi
movq %rdi, -0xfe8(%rbp)
callq 0x33e0
movq -0xfe8(%rbp), %rdx
leaq 0x19ed1(%rip), %rsi     # 0x1f584
leaq -0xf0(%rbp), %rdi
callq 0x11720
jmp 0x56c1
leaq -0x119(%rbp), %rdi
movq %rdi, -0xff0(%rbp)
callq 0x33e0
movq -0xff0(%rbp), %rdx
leaq 0x19ea5(%rip), %rsi     # 0x1f587
leaq -0x118(%rbp), %rdi
callq 0x11720
jmp 0x56f0
leaq -0x20(%rbp), %rdi
leaq -0xf0(%rbp), %rsi
leaq -0x118(%rbp), %rdx
callq 0x40b0
jmp 0x5709
leaq -0x118(%rbp), %rdi
callq 0x3140
leaq -0x119(%rbp), %rdi
callq 0x3280
leaq -0xf0(%rbp), %rdi
callq 0x3140
leaq -0xf1(%rbp), %rdi
callq 0x3280
leaq -0x141(%rbp), %rdi
movq %rdi, -0xff8(%rbp)
callq 0x33e0
movq -0xff8(%rbp), %rdx
leaq 0x19e4e(%rip), %rsi     # 0x1f5a8
leaq -0x140(%rbp), %rdi
callq 0x11720
jmp 0x5768
leaq -0x169(%rbp), %rdi
movq %rdi, -0x1000(%rbp)
callq 0x33e0
movq -0x1000(%rbp), %rdx
leaq 0x19e23(%rip), %rsi     # 0x1f5ac
leaq -0x168(%rbp), %rdi
callq 0x11720
jmp 0x5797
leaq -0x20(%rbp), %rdi
leaq -0x140(%rbp), %rsi
leaq -0x168(%rbp), %rdx
callq 0x40b0
jmp 0x57b0
leaq -0x168(%rbp), %rdi
callq 0x3140
leaq -0x169(%rbp), %rdi
callq 0x3280
leaq -0x140(%rbp), %rdi
callq 0x3140
leaq -0x141(%rbp), %rdi
callq 0x3280
leaq -0x191(%rbp), %rdi
movq %rdi, -0x1008(%rbp)
callq 0x33e0
movq -0x1008(%rbp), %rdx
leaq 0x19dbb(%rip), %rsi     # 0x1f5bc
leaq -0x190(%rbp), %rdi
callq 0x11720
jmp 0x580f
leaq -0x1b9(%rbp), %rdi
movq %rdi, -0x1010(%rbp)
callq 0x33e0
movq -0x1010(%rbp), %rdx
leaq 0x19d90(%rip), %rsi     # 0x1f5c0
leaq -0x1b8(%rbp), %rdi
callq 0x11720
jmp 0x583e
leaq -0x20(%rbp), %rdi
leaq -0x190(%rbp), %rsi
leaq -0x1b8(%rbp), %rdx
callq 0x40b0
jmp 0x5857
leaq -0x1b8(%rbp), %rdi
callq 0x3140
leaq -0x1b9(%rbp), %rdi
callq 0x3280
leaq -0x190(%rbp), %rdi
callq 0x3140
leaq -0x191(%rbp), %rdi
callq 0x3280
leaq -0x1e1(%rbp), %rdi
movq %rdi, -0x1018(%rbp)
callq 0x33e0
movq -0x1018(%rbp), %rdx
leaq 0x19d28(%rip), %rsi     # 0x1f5d0
leaq -0x1e0(%rbp), %rdi
callq 0x11720
jmp 0x58b6
leaq -0x209(%rbp), %rdi
movq %rdi, -0x1020(%rbp)
callq 0x33e0
movq -0x1020(%rbp), %rdx
leaq 0x19cfc(%rip), %rsi     # 0x1f5d3
leaq -0x208(%rbp), %rdi
callq 0x11720
jmp 0x58e5
leaq -0x20(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
leaq -0x208(%rbp), %rdx
callq 0x40b0
jmp 0x58fe
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq -0x209(%rbp), %rdi
callq 0x3280
leaq -0x1e0(%rbp), %rdi
callq 0x3140
leaq -0x1e1(%rbp), %rdi
callq 0x3280
leaq -0x231(%rbp), %rdi
movq %rdi, -0x1028(%rbp)
callq 0x33e0
movq -0x1028(%rbp), %rdx
leaq 0x19c93(%rip), %rsi     # 0x1f5e2
leaq -0x230(%rbp), %rdi
callq 0x11720
jmp 0x595d
leaq -0x259(%rbp), %rdi
movq %rdi, -0x1030(%rbp)
callq 0x33e0
movq -0x1030(%rbp), %rdx
leaq 0x19c66(%rip), %rsi     # 0x1f5e4
leaq -0x258(%rbp), %rdi
callq 0x11720
jmp 0x598c
leaq -0x20(%rbp), %rdi
leaq -0x230(%rbp), %rsi
leaq -0x258(%rbp), %rdx
callq 0x40b0
jmp 0x59a5
leaq -0x258(%rbp), %rdi
callq 0x3140
leaq -0x259(%rbp), %rdi
callq 0x3280
leaq -0x230(%rbp), %rdi
callq 0x3140
leaq -0x231(%rbp), %rdi
callq 0x3280
leaq -0x281(%rbp), %rdi
movq %rdi, -0x1038(%rbp)
callq 0x33e0
movq -0x1038(%rbp), %rdx
leaq 0x19c0b(%rip), %rsi     # 0x1f601
leaq -0x280(%rbp), %rdi
callq 0x11720
jmp 0x5a04
leaq -0x318(%rbp), %rdi
movq %rdi, -0x1040(%rbp)
leaq -0x319(%rbp), %rsi
callq 0x7290
movq -0x1040(%rbp), %rsi
leaq -0x2f8(%rbp), %rdi
callq 0x117d0
jmp 0x5a33
leaq -0x20(%rbp), %rdi
leaq -0x280(%rbp), %rsi
leaq -0x2f8(%rbp), %rdx
callq 0x41b0
jmp 0x5a4c
leaq -0x2f8(%rbp), %rdi
callq 0x111d0
leaq -0x318(%rbp), %rdi
callq 0x11860
leaq -0x280(%rbp), %rdi
callq 0x3140
leaq -0x281(%rbp), %rdi
callq 0x3280
leaq -0x341(%rbp), %rdi
movq %rdi, -0x1048(%rbp)
callq 0x33e0
movq -0x1048(%rbp), %rdx
leaq 0x1a1e4(%rip), %rsi     # 0x1fc81
leaq -0x340(%rbp), %rdi
callq 0x11720
jmp 0x5aab
leaq -0x3d8(%rbp), %rdi
movq %rdi, -0x1050(%rbp)
leaq -0x3d9(%rbp), %rsi
callq 0x7320
movq -0x1050(%rbp), %rsi
leaq -0x3b8(%rbp), %rdi
callq 0x117d0
jmp 0x5ada
leaq -0x20(%rbp), %rdi
leaq -0x340(%rbp), %rsi
leaq -0x3b8(%rbp), %rdx
callq 0x41b0
jmp 0x5af3
leaq -0x3b8(%rbp), %rdi
callq 0x111d0
leaq -0x3d8(%rbp), %rdi
callq 0x11860
leaq -0x340(%rbp), %rdi
callq 0x3140
leaq -0x341(%rbp), %rdi
callq 0x3280
leaq -0x401(%rbp), %rdi
movq %rdi, -0x1058(%rbp)
callq 0x33e0
movq -0x1058(%rbp), %rdx
leaq 0x19abf(%rip), %rsi     # 0x1f603
leaq -0x400(%rbp), %rdi
callq 0x11720
jmp 0x5b52
leaq -0x498(%rbp), %rdi
movq %rdi, -0x1060(%rbp)
leaq -0x499(%rbp), %rsi
callq 0x73b0
movq -0x1060(%rbp), %rsi
leaq -0x478(%rbp), %rdi
callq 0x117d0
jmp 0x5b81
leaq -0x20(%rbp), %rdi
leaq -0x400(%rbp), %rsi
leaq -0x478(%rbp), %rdx
callq 0x41b0
jmp 0x5b9a
leaq -0x478(%rbp), %rdi
callq 0x111d0
leaq -0x498(%rbp), %rdi
callq 0x11860
leaq -0x400(%rbp), %rdi
callq 0x3140
leaq -0x401(%rbp), %rdi
callq 0x3280
leaq -0x4c1(%rbp), %rdi
movq %rdi, -0x1068(%rbp)
callq 0x33e0
movq -0x1068(%rbp), %rdx
leaq 0x19a1a(%rip), %rsi     # 0x1f605
leaq -0x4c0(%rbp), %rdi
callq 0x11720
jmp 0x5bf9
leaq -0x558(%rbp), %rdi
movq %rdi, -0x1070(%rbp)
leaq -0x559(%rbp), %rsi
callq 0x7440
movq -0x1070(%rbp), %rsi
leaq -0x538(%rbp), %rdi
callq 0x117d0
jmp 0x5c28
leaq -0x20(%rbp), %rdi
leaq -0x4c0(%rbp), %rsi
leaq -0x538(%rbp), %rdx
callq 0x41b0
jmp 0x5c41
leaq -0x538(%rbp), %rdi
callq 0x111d0
leaq -0x558(%rbp), %rdi
callq 0x11860
leaq -0x4c0(%rbp), %rdi
callq 0x3140
leaq -0x4c1(%rbp), %rdi
callq 0x3280
leaq -0x581(%rbp), %rdi
movq %rdi, -0x1078(%rbp)
callq 0x33e0
movq -0x1078(%rbp), %rdx
leaq 0x19975(%rip), %rsi     # 0x1f607
leaq -0x580(%rbp), %rdi
callq 0x11720
jmp 0x5ca0
leaq -0x618(%rbp), %rdi
movq %rdi, -0x1080(%rbp)
leaq -0x619(%rbp), %rsi
callq 0x74d0
movq -0x1080(%rbp), %rsi
leaq -0x5f8(%rbp), %rdi
callq 0x117d0
jmp 0x5ccf
leaq -0x20(%rbp), %rdi
leaq -0x580(%rbp), %rsi
leaq -0x5f8(%rbp), %rdx
callq 0x41b0
jmp 0x5ce8
leaq -0x5f8(%rbp), %rdi
callq 0x111d0
leaq -0x618(%rbp), %rdi
callq 0x11860
leaq -0x580(%rbp), %rdi
callq 0x3140
leaq -0x581(%rbp), %rdi
callq 0x3280
leaq -0x641(%rbp), %rdi
movq %rdi, -0x1088(%rbp)
callq 0x33e0
movq -0x1088(%rbp), %rdx
leaq 0x198d2(%rip), %rsi     # 0x1f60b
leaq -0x640(%rbp), %rdi
callq 0x11720
jmp 0x5d47
leaq -0x6d8(%rbp), %rdi
movq %rdi, -0x1090(%rbp)
leaq -0x6d9(%rbp), %rsi
callq 0x7560
movq -0x1090(%rbp), %rsi
leaq -0x6b8(%rbp), %rdi
callq 0x117d0
jmp 0x5d76
leaq -0x20(%rbp), %rdi
leaq -0x640(%rbp), %rsi
leaq -0x6b8(%rbp), %rdx
callq 0x41b0
jmp 0x5d8f
leaq -0x6b8(%rbp), %rdi
callq 0x111d0
leaq -0x6d8(%rbp), %rdi
callq 0x11860
leaq -0x640(%rbp), %rdi
callq 0x3140
leaq -0x641(%rbp), %rdi
callq 0x3280
leaq -0x701(%rbp), %rdi
movq %rdi, -0x1098(%rbp)
callq 0x33e0
movq -0x1098(%rbp), %rdx
leaq 0x19860(%rip), %rsi     # 0x1f640
leaq -0x700(%rbp), %rdi
callq 0x11720
jmp 0x5dee
leaq -0x798(%rbp), %rdi
movq %rdi, -0x10a0(%rbp)
leaq -0x799(%rbp), %rsi
callq 0x75f0
movq -0x10a0(%rbp), %rsi
leaq -0x778(%rbp), %rdi
callq 0x117d0
jmp 0x5e1d
leaq -0x20(%rbp), %rdi
leaq -0x700(%rbp), %rsi
leaq -0x778(%rbp), %rdx
callq 0x41b0
jmp 0x5e36
leaq -0x778(%rbp), %rdi
callq 0x111d0
leaq -0x798(%rbp), %rdi
callq 0x11860
leaq -0x700(%rbp), %rdi
callq 0x3140
leaq -0x701(%rbp), %rdi
callq 0x3280
leaq -0x7c1(%rbp), %rdi
movq %rdi, -0x10a8(%rbp)
callq 0x33e0
movq -0x10a8(%rbp), %rdx
leaq 0x19787(%rip), %rsi     # 0x1f60e
leaq -0x7c0(%rbp), %rdi
callq 0x11720
jmp 0x5e95
leaq -0x858(%rbp), %rdi
movq %rdi, -0x10b0(%rbp)
leaq -0x859(%rbp), %rsi
callq 0x7680
movq -0x10b0(%rbp), %rsi
leaq -0x838(%rbp), %rdi
callq 0x117d0
jmp 0x5ec4
leaq -0x20(%rbp), %rdi
leaq -0x7c0(%rbp), %rsi
leaq -0x838(%rbp), %rdx
callq 0x41b0
jmp 0x5edd
leaq -0x838(%rbp), %rdi
callq 0x111d0
leaq -0x858(%rbp), %rdi
callq 0x11860
leaq -0x7c0(%rbp), %rdi
callq 0x3140
leaq -0x7c1(%rbp), %rdi
callq 0x3280
leaq -0x881(%rbp), %rdi
movq %rdi, -0x10b8(%rbp)
callq 0x33e0
movq -0x10b8(%rbp), %rdx
leaq 0x196e3(%rip), %rsi     # 0x1f611
leaq -0x880(%rbp), %rdi
callq 0x11720
jmp 0x5f3c
leaq -0x8a9(%rbp), %rdi
movq %rdi, -0x10c0(%rbp)
callq 0x33e0
movq -0x10c0(%rbp), %rdx
leaq 0x196b9(%rip), %rsi     # 0x1f616
leaq -0x8a8(%rbp), %rdi
callq 0x11720
jmp 0x5f6b
leaq -0x20(%rbp), %rdi
leaq -0x880(%rbp), %rsi
leaq -0x8a8(%rbp), %rdx
callq 0x40b0
jmp 0x5f84
leaq -0x8a8(%rbp), %rdi
callq 0x3140
leaq -0x8a9(%rbp), %rdi
callq 0x3280
leaq -0x880(%rbp), %rdi
callq 0x3140
leaq -0x881(%rbp), %rdi
callq 0x3280
leaq -0x8d1(%rbp), %rdi
movq %rdi, -0x10c8(%rbp)
callq 0x33e0
movq -0x10c8(%rbp), %rdx
leaq 0x19650(%rip), %rsi     # 0x1f625
leaq -0x8d0(%rbp), %rdi
callq 0x11720
jmp 0x5fe3
leaq -0x8f9(%rbp), %rdi
movq %rdi, -0x10d0(%rbp)
callq 0x33e0
movq -0x10d0(%rbp), %rdx
leaq 0x19624(%rip), %rsi     # 0x1f628
leaq -0x8f8(%rbp), %rdi
callq 0x11720
jmp 0x6012
leaq -0x20(%rbp), %rdi
leaq -0x8d0(%rbp), %rsi
leaq -0x8f8(%rbp), %rdx
callq 0x40b0
jmp 0x602b
leaq -0x8f8(%rbp), %rdi
callq 0x3140
leaq -0x8f9(%rbp), %rdi
callq 0x3280
leaq -0x8d0(%rbp), %rdi
callq 0x3140
leaq -0x8d1(%rbp), %rdi
callq 0x3280
leaq -0x921(%rbp), %rdi
movq %rdi, -0x10d8(%rbp)
callq 0x33e0
movq -0x10d8(%rbp), %rdx
leaq 0x195f0(%rip), %rsi     # 0x1f66c
leaq -0x920(%rbp), %rdi
callq 0x11720
jmp 0x608a
leaq -0x949(%rbp), %rdi
movq %rdi, -0x10e0(%rbp)
callq 0x33e0
movq -0x10e0(%rbp), %rdx
leaq 0x19590(%rip), %rsi     # 0x1f63b
leaq -0x948(%rbp), %rdi
callq 0x11720
jmp 0x60b9
leaq -0x20(%rbp), %rdi
leaq -0x920(%rbp), %rsi
leaq -0x948(%rbp), %rdx
callq 0x40b0
jmp 0x60d2
leaq -0x948(%rbp), %rdi
callq 0x3140
leaq -0x949(%rbp), %rdi
callq 0x3280
leaq -0x920(%rbp), %rdi
callq 0x3140
leaq -0x921(%rbp), %rdi
callq 0x3280
leaq -0x971(%rbp), %rdi
movq %rdi, -0x10e8(%rbp)
callq 0x33e0
movq -0x10e8(%rbp), %rdx
leaq 0x19524(%rip), %rsi     # 0x1f647
leaq -0x970(%rbp), %rdi
callq 0x11720
jmp 0x6131
leaq -0x999(%rbp), %rdi
movq %rdi, -0x10f0(%rbp)
callq 0x33e0
movq -0x10f0(%rbp), %rdx
leaq 0x194f0(%rip), %rsi     # 0x1f642
leaq -0x998(%rbp), %rdi
callq 0x11720
jmp 0x6160
leaq -0x20(%rbp), %rdi
leaq -0x970(%rbp), %rsi
leaq -0x998(%rbp), %rdx
callq 0x40b0
jmp 0x6179
leaq -0x998(%rbp), %rdi
callq 0x3140
leaq -0x999(%rbp), %rdi
callq 0x3280
leaq -0x970(%rbp), %rdi
callq 0x3140
leaq -0x971(%rbp), %rdi
callq 0x3280
leaq -0x9c1(%rbp), %rdi
movq %rdi, -0x10f8(%rbp)
callq 0x33e0
movq -0x10f8(%rbp), %rdx
leaq 0x19480(%rip), %rsi     # 0x1f64a
leaq -0x9c0(%rbp), %rdi
callq 0x11720
jmp 0x61d8
leaq -0x9e9(%rbp), %rdi
movq %rdi, -0x1100(%rbp)
callq 0x33e0
movq -0x1100(%rbp), %rdx
leaq 0x19455(%rip), %rsi     # 0x1f64e
leaq -0x9e8(%rbp), %rdi
callq 0x11720
jmp 0x6207
leaq -0x20(%rbp), %rdi
leaq -0x9c0(%rbp), %rsi
leaq -0x9e8(%rbp), %rdx
callq 0x40b0
jmp 0x6220
leaq -0x9e8(%rbp), %rdi
callq 0x3140
leaq -0x9e9(%rbp), %rdi
callq 0x3280
leaq -0x9c0(%rbp), %rdi
callq 0x3140
leaq -0x9c1(%rbp), %rdi
callq 0x3280
leaq -0xa11(%rbp), %rdi
movq %rdi, -0x1108(%rbp)
callq 0x33e0
movq -0x1108(%rbp), %rdx
leaq 0x193fa(%rip), %rsi     # 0x1f66b
leaq -0xa10(%rbp), %rdi
callq 0x11720
jmp 0x627f
leaq -0xa39(%rbp), %rdi
movq %rdi, -0x1110(%rbp)
callq 0x33e0
movq -0x1110(%rbp), %rdx
leaq 0x193ce(%rip), %rsi     # 0x1f66e
leaq -0xa38(%rbp), %rdi
callq 0x11720
jmp 0x62ae
leaq -0x20(%rbp), %rdi
leaq -0xa10(%rbp), %rsi
leaq -0xa38(%rbp), %rdx
callq 0x40b0
jmp 0x62c7
leaq -0xa38(%rbp), %rdi
callq 0x3140
leaq -0xa39(%rbp), %rdi
callq 0x3280
leaq -0xa10(%rbp), %rdi
callq 0x3140
leaq -0xa11(%rbp), %rdi
callq 0x3280
leaq -0xa61(%rbp), %rdi
movq %rdi, -0x1118(%rbp)
callq 0x33e0
movq -0x1118(%rbp), %rdx
leaq 0x1936d(%rip), %rsi     # 0x1f685
leaq -0xa60(%rbp), %rdi
callq 0x11720
jmp 0x6326
leaq -0xa89(%rbp), %rdi
movq %rdi, -0x1120(%rbp)
callq 0x33e0
movq -0x1120(%rbp), %rdx
leaq 0x19344(%rip), %rsi     # 0x1f68b
leaq -0xa88(%rbp), %rdi
callq 0x11720
jmp 0x6355
leaq -0x20(%rbp), %rdi
leaq -0xa60(%rbp), %rsi
leaq -0xa88(%rbp), %rdx
callq 0x40b0
jmp 0x636e
leaq -0xa88(%rbp), %rdi
callq 0x3140
leaq -0xa89(%rbp), %rdi
callq 0x3280
leaq -0xa60(%rbp), %rdi
callq 0x3140
leaq -0xa61(%rbp), %rdi
callq 0x3280
leaq -0xab1(%rbp), %rdi
movq %rdi, -0x1128(%rbp)
callq 0x33e0
movq -0x1128(%rbp), %rdx
leaq 0x192d3(%rip), %rsi     # 0x1f692
leaq -0xab0(%rbp), %rdi
callq 0x11720
jmp 0x63cd
leaq -0xad9(%rbp), %rdi
movq %rdi, -0x1130(%rbp)
callq 0x33e0
movq -0x1130(%rbp), %rdx
leaq 0x192a9(%rip), %rsi     # 0x1f697
leaq -0xad8(%rbp), %rdi
callq 0x11720
jmp 0x63fc
leaq -0x20(%rbp), %rdi
leaq -0xab0(%rbp), %rsi
leaq -0xad8(%rbp), %rdx
callq 0x40b0
jmp 0x6415
leaq -0xad8(%rbp), %rdi
callq 0x3140
leaq -0xad9(%rbp), %rdi
callq 0x3280
leaq -0xab0(%rbp), %rdi
callq 0x3140
leaq -0xab1(%rbp), %rdi
callq 0x3280
leaq -0xb01(%rbp), %rdi
movq %rdi, -0x1138(%rbp)
callq 0x33e0
movq -0x1138(%rbp), %rdx
leaq 0x19240(%rip), %rsi     # 0x1f6a6
leaq -0xb00(%rbp), %rdi
callq 0x11720
jmp 0x6474
leaq -0xb29(%rbp), %rdi
movq %rdi, -0x1140(%rbp)
callq 0x33e0
movq -0x1140(%rbp), %rdx
leaq 0x191fd(%rip), %rsi     # 0x1f692
leaq -0xb28(%rbp), %rdi
callq 0x11720
jmp 0x64a3
leaq -0x20(%rbp), %rdi
leaq -0xb00(%rbp), %rsi
leaq -0xb28(%rbp), %rdx
callq 0x40b0
jmp 0x64bc
leaq -0xb28(%rbp), %rdi
callq 0x3140
leaq -0xb29(%rbp), %rdi
callq 0x3280
leaq -0xb00(%rbp), %rdi
callq 0x3140
leaq -0xb01(%rbp), %rdi
callq 0x3280
leaq -0xb51(%rbp), %rdi
movq %rdi, -0x1148(%rbp)
callq 0x33e0
movq -0x1148(%rbp), %rdx
leaq 0x191a0(%rip), %rsi     # 0x1f6ad
leaq -0xb50(%rbp), %rdi
callq 0x11720
jmp 0x651b
leaq -0xbe8(%rbp), %rdi
movq %rdi, -0x1150(%rbp)
leaq -0xbe9(%rbp), %rsi
callq 0x7710
movq -0x1150(%rbp), %rsi
leaq -0xbc8(%rbp), %rdi
callq 0x117d0
jmp 0x654a
leaq -0x20(%rbp), %rdi
leaq -0xb50(%rbp), %rsi
leaq -0xbc8(%rbp), %rdx
callq 0x41b0
jmp 0x6563
leaq -0xbc8(%rbp), %rdi
callq 0x111d0
leaq -0xbe8(%rbp), %rdi
callq 0x11860
leaq -0xb50(%rbp), %rdi
callq 0x3140
leaq -0xb51(%rbp), %rdi
callq 0x3280
leaq -0xc11(%rbp), %rdi
movq %rdi, -0x1158(%rbp)
callq 0x33e0
movq -0x1158(%rbp), %rdx
leaq 0x19101(%rip), %rsi     # 0x1f6b5
leaq -0xc10(%rbp), %rdi
callq 0x11720
jmp 0x65c2
leaq -0xca8(%rbp), %rdi
movq %rdi, -0x1160(%rbp)
leaq -0xca9(%rbp), %rsi
callq 0x77a0
movq -0x1160(%rbp), %rsi
leaq -0xc88(%rbp), %rdi
callq 0x117d0
jmp 0x65f1
leaq -0x20(%rbp), %rdi
leaq -0xc10(%rbp), %rsi
leaq -0xc88(%rbp), %rdx
callq 0x41b0
jmp 0x660a
leaq -0xc88(%rbp), %rdi
callq 0x111d0
leaq -0xca8(%rbp), %rdi
callq 0x11860
leaq -0xc10(%rbp), %rdi
callq 0x3140
leaq -0xc11(%rbp), %rdi
callq 0x3280
leaq -0xcd0(%rbp), %rdi
callq 0x3330
leaq -0xcf0(%rbp), %rdi
callq 0x3330
leaq 0x19064(%rip), %rsi     # 0x1f6bd
leaq -0xef8(%rbp), %rdi
movl $0x8, %edx
callq 0x3400
jmp 0x666c
jmp 0x666e
leaq -0xef8(%rbp), %rdi
leaq -0xcf0(%rbp), %rsi
callq 0x3050
movq %rax, -0x1168(%rbp)
jmp 0x668a
movq -0x1168(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3300
movb %al, -0x1169(%rbp)
jmp 0x66a8
movb -0x1169(%rbp), %al
testb $0x1, %al
jne 0x66b7
jmp 0x706b
leaq -0xcd0(%rbp), %rdi
leaq -0xcf0(%rbp), %rsi
callq 0x3310
jmp 0x66cc
leaq 0x195ab(%rip), %rsi     # 0x1fc7e
leaq -0xcd0(%rbp), %rdi
callq 0x3210
jmp 0x66e1
jmp 0x666e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6726
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6714
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x78(%rbp), %rdi
callq 0x3140
leaq -0x79(%rbp), %rdi
callq 0x3280
leaq -0x40(%rbp), %rdi
callq 0x3140
leaq -0x41(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6780
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6768
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc8(%rbp), %rdi
callq 0x3140
leaq -0xc9(%rbp), %rdi
callq 0x3280
leaq -0xa0(%rbp), %rdi
callq 0x3140
leaq -0xa1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x67dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x67c5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x118(%rbp), %rdi
callq 0x3140
leaq -0x119(%rbp), %rdi
callq 0x3280
leaq -0xf0(%rbp), %rdi
callq 0x3140
leaq -0xf1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x683a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6822
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x168(%rbp), %rdi
callq 0x3140
leaq -0x169(%rbp), %rdi
callq 0x3280
leaq -0x140(%rbp), %rdi
callq 0x3140
leaq -0x141(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6897
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x687f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x3140
leaq -0x1b9(%rbp), %rdi
callq 0x3280
leaq -0x190(%rbp), %rdi
callq 0x3140
leaq -0x191(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x68f4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x68dc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x208(%rbp), %rdi
callq 0x3140
leaq -0x209(%rbp), %rdi
callq 0x3280
leaq -0x1e0(%rbp), %rdi
callq 0x3140
leaq -0x1e1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6951
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6939
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x258(%rbp), %rdi
callq 0x3140
leaq -0x259(%rbp), %rdi
callq 0x3280
leaq -0x230(%rbp), %rdi
callq 0x3140
leaq -0x231(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x69ae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6996
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0x111d0
leaq -0x318(%rbp), %rdi
callq 0x11860
leaq -0x280(%rbp), %rdi
callq 0x3140
leaq -0x281(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6a0b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x69f3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x3b8(%rbp), %rdi
callq 0x111d0
leaq -0x3d8(%rbp), %rdi
callq 0x11860
leaq -0x340(%rbp), %rdi
callq 0x3140
leaq -0x341(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6a68
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6a50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x478(%rbp), %rdi
callq 0x111d0
leaq -0x498(%rbp), %rdi
callq 0x11860
leaq -0x400(%rbp), %rdi
callq 0x3140
leaq -0x401(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6ac5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6aad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x538(%rbp), %rdi
callq 0x111d0
leaq -0x558(%rbp), %rdi
callq 0x11860
leaq -0x4c0(%rbp), %rdi
callq 0x3140
leaq -0x4c1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6b22
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6b0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x5f8(%rbp), %rdi
callq 0x111d0
leaq -0x618(%rbp), %rdi
callq 0x11860
leaq -0x580(%rbp), %rdi
callq 0x3140
leaq -0x581(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6b7f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6b67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x6b8(%rbp), %rdi
callq 0x111d0
leaq -0x6d8(%rbp), %rdi
callq 0x11860
leaq -0x640(%rbp), %rdi
callq 0x3140
leaq -0x641(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6bdc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6bc4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x778(%rbp), %rdi
callq 0x111d0
leaq -0x798(%rbp), %rdi
callq 0x11860
leaq -0x700(%rbp), %rdi
callq 0x3140
leaq -0x701(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6c39
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6c21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x838(%rbp), %rdi
callq 0x111d0
leaq -0x858(%rbp), %rdi
callq 0x11860
leaq -0x7c0(%rbp), %rdi
callq 0x3140
leaq -0x7c1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6c96
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6c7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x8a8(%rbp), %rdi
callq 0x3140
leaq -0x8a9(%rbp), %rdi
callq 0x3280
leaq -0x880(%rbp), %rdi
callq 0x3140
leaq -0x881(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6cf3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6cdb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x8f8(%rbp), %rdi
callq 0x3140
leaq -0x8f9(%rbp), %rdi
callq 0x3280
leaq -0x8d0(%rbp), %rdi
callq 0x3140
leaq -0x8d1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6d50
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6d38
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x948(%rbp), %rdi
callq 0x3140
leaq -0x949(%rbp), %rdi
callq 0x3280
leaq -0x920(%rbp), %rdi
callq 0x3140
leaq -0x921(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6dad
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6d95
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x998(%rbp), %rdi
callq 0x3140
leaq -0x999(%rbp), %rdi
callq 0x3280
leaq -0x970(%rbp), %rdi
callq 0x3140
leaq -0x971(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6e0a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6df2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0x9e8(%rbp), %rdi
callq 0x3140
leaq -0x9e9(%rbp), %rdi
callq 0x3280
leaq -0x9c0(%rbp), %rdi
callq 0x3140
leaq -0x9c1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6e67
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6e4f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa38(%rbp), %rdi
callq 0x3140
leaq -0xa39(%rbp), %rdi
callq 0x3280
leaq -0xa10(%rbp), %rdi
callq 0x3140
leaq -0xa11(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6ec4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6eac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xa88(%rbp), %rdi
callq 0x3140
leaq -0xa89(%rbp), %rdi
callq 0x3280
leaq -0xa60(%rbp), %rdi
callq 0x3140
leaq -0xa61(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6f21
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6f09
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xad8(%rbp), %rdi
callq 0x3140
leaq -0xad9(%rbp), %rdi
callq 0x3280
leaq -0xab0(%rbp), %rdi
callq 0x3140
leaq -0xab1(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6f7e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6f66
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xb28(%rbp), %rdi
callq 0x3140
leaq -0xb29(%rbp), %rdi
callq 0x3280
leaq -0xb00(%rbp), %rdi
callq 0x3140
leaq -0xb01(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6fdb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x6fc3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xbc8(%rbp), %rdi
callq 0x111d0
leaq -0xbe8(%rbp), %rdi
callq 0x11860
leaq -0xb50(%rbp), %rdi
callq 0x3140
leaq -0xb51(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7038
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7020
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xc88(%rbp), %rdi
callq 0x111d0
leaq -0xca8(%rbp), %rdi
callq 0x11860
leaq -0xc10(%rbp), %rdi
callq 0x3140
leaq -0xc11(%rbp), %rdi
callq 0x3280
jmp 0x727d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7265
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0x7259
leaq -0xef8(%rbp), %rdi
callq 0x3070
jmp 0x7079
cmpl $0x1, -0x8(%rbp)
jle 0x7122
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0xef8(%rbp), %rdi
movl $0x8, %edx
callq 0x3150
jmp 0x709e
jmp 0x70a0
leaq -0xef8(%rbp), %rdi
leaq -0xcf0(%rbp), %rsi
callq 0x3050
movq %rax, -0x1178(%rbp)
jmp 0x70bc
movq -0x1178(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3300
movb %al, -0x1179(%rbp)
jmp 0x70da
movb -0x1179(%rbp), %al
testb $0x1, %al
jne 0x70e6
jmp 0x7112
leaq -0xcd0(%rbp), %rdi
leaq -0xcf0(%rbp), %rsi
callq 0x3310
jmp 0x70fb
leaq 0x18b7c(%rip), %rsi     # 0x1fc7e
leaq -0xcd0(%rbp), %rdi
callq 0x3210
jmp 0x7110
jmp 0x70a0
leaq -0xef8(%rbp), %rdi
callq 0x3070
jmp 0x7120
jmp 0x7198
jmp 0x7124
movq 0x28ead(%rip), %rdi     # 0x2ffd8
leaq -0xcf0(%rbp), %rsi
callq 0x3050
movq %rax, -0x1188(%rbp)
jmp 0x7140
movq -0x1188(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3300
movb %al, -0x1189(%rbp)
jmp 0x715e
movb -0x1189(%rbp), %al
testb $0x1, %al
jne 0x716a
jmp 0x7196
leaq -0xcd0(%rbp), %rdi
leaq -0xcf0(%rbp), %rsi
callq 0x3310
jmp 0x717f
leaq 0x18af8(%rip), %rsi     # 0x1fc7e
leaq -0xcd0(%rbp), %rdi
callq 0x3210
jmp 0x7194
jmp 0x7124
jmp 0x7198
leaq -0xf48(%rbp), %rdi
leaq -0xcd0(%rbp), %rsi
callq 0x155e0
jmp 0x71ad
leaq -0xf48(%rbp), %rdi
callq 0x15d70
movq %rax, -0x1198(%rbp)
jmp 0x71c2
movq -0x1198(%rbp), %rax
movq %rax, -0xf50(%rbp)
movq -0xf50(%rbp), %rsi
leaq -0xfc0(%rbp), %rdi
leaq -0x20(%rbp), %rdx
callq 0x4e70
jmp 0x71e9
movl $0x0, -0x4(%rbp)
leaq -0xfc0(%rbp), %rdi
callq 0x111d0
leaq -0xf48(%rbp), %rdi
callq 0x11210
leaq -0xef8(%rbp), %rdi
callq 0x3080
leaq -0xcf0(%rbp), %rdi
callq 0x3140
leaq -0xcd0(%rbp), %rdi
callq 0x3140
leaq -0x20(%rbp), %rdi
callq 0x11340
movl -0x4(%rbp), %eax
addq $0x11a0, %rsp           # imm = 0x11A0
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
leaq -0xf48(%rbp), %rdi
callq 0x11210
leaq -0xef8(%rbp), %rdi
callq 0x3080
leaq -0xcf0(%rbp), %rdi
callq 0x3140
leaq -0xcd0(%rbp), %rdi
callq 0x3140
leaq -0x20(%rbp), %rdi
callq 0x11340
movq -0x50(%rbp), %rdi
callq 0x33c0
nop