// File: Kei18[P]pibt/./src/app.h
// Function: run(int, char**)
Problem* run(int argc, char *argv[])
{
  std::string configfile;

#ifdef OF
  std::cout << "reading params" << "\n";
#endif

  /************************
   * set args
   ************************/
  int opt = 0;
  std::string arg;
  opterr = 0;  // ignore getopt error
  while ((opt = getopt(argc, argv, "p:")) != -1) {
    arg = std::string(optarg);
    switch (opt) {
    case 'p':  // config
      configfile = arg;
      break;
    default:
      break;
    }
  }

  /************************
   * default setting
   ************************/
  Param::EnvConfig* envConfig = new Param::EnvConfig
    {
     Param::P_MAPF,    // problem type
     Param::S_PIBT,    // solver type
     "./map/5x5.map",  // field type
     3,                // agent number
     10000,            // timesteplimit
     10,               // task number
     0.1,              // task frequency
     false,            // scenario
     "",               // scenario file
     0,                // seed
     false,            // save log
     true,             // print log
     false,            // print time
    };
  Param::SolverConfig* solverConfig = new Param::SolverConfig
    {
     false,  // WarshallFloyd
     true,   // CBS, ECBS, iECBS, independet operater
     5,      // WHCA* or winPIBT, window size
     1.5,    // ECBS or iECBS, suboptimal param
     true,   // winPIBT, softmode
    };
  Param::VisualConfig* visualConfig = new Param::VisualConfig
    {
     false,                  // showicon
     "./material/sheep.png"  // icon
    };

  /************************
   * load setting
   ************************/
  setParams(configfile, envConfig, solverConfig, visualConfig);

#ifdef OF
  std::cout << "done." << "\n";
  std::cout << "loading map : " << envConfig->field << "\n";
#endif


  /************************
   * set seed
   ************************/
  // seed for problem and graph
  std::mt19937* MT_PG = new std::mt19937(envConfig->seed);
  // seed for solver
  std::mt19937* MT_S = new std::mt19937(envConfig->seed);

  /************************
   * graph definition
   ************************/
  Graph* G = nullptr;
  if (envConfig->PTYPE == Param::PROBLEM_TYPE::P_MAPF ||
      envConfig->PTYPE == Param::PROBLEM_TYPE::P_IMAPF ||
      envConfig->PTYPE == Param::PROBLEM_TYPE::P_IMAPF_FAIR) {
    G = new SimpleGrid(envConfig->field, MT_PG);
  } else if (envConfig->PTYPE == Param::PROBLEM_TYPE::P_MAPD) {
    G = new PD(envConfig->field, MT_PG);
  } else if (envConfig->PTYPE == Param::PROBLEM_TYPE::P_MAPF_STATION ||
             envConfig->PTYPE == Param::PROBLEM_TYPE::P_IMAPF_STATION) {
    G = new Station(envConfig->field, MT_PG);
  } else {
    std::cout << "error@run, problem is not defined" << "\n";
    std::exit(1);
  }

  /************************
   * agent definition
   ************************/
  Agents A;
  Paths points;
  if (envConfig->scenario) {
#ifdef OF
    std::cout << "use scenario : " << envConfig->scenariofile << "\n";
#endif
    setScenario(envConfig->scenariofile, points, G);
  } else {
    points = G->getRandomStartGoal(envConfig->agentnum);
  }

  for (int i = 0; i < envConfig->agentnum; ++i) {
    Agent* a = new Agent(points[i][0]);
    A.push_back(a);
  }

  /************************
   * problem definition
   ************************/
  Problem* P = nullptr;
  if (envConfig->PTYPE == Param::PROBLEM_TYPE::P_MAPF ||
      envConfig->PTYPE == Param::PROBLEM_TYPE::P_MAPF_STATION) {
    std::vector<Task*> T;
    for (int i = 0; i < envConfig->agentnum; ++i) {
      Task* tau = new Task(points[i][1]);
      T.push_back(tau);
    }
    P = new MAPF(G, A, T, MT_PG);
  } else if (envConfig->PTYPE == Param::PROBLEM_TYPE::P_MAPD) {
    P = new MAPD(G, A, G->getPickup(), G->getDelivery(),
                 envConfig->tasknum, envConfig->taskfrequency, MT_PG);
  } else if (envConfig->PTYPE == Param::PROBLEM_TYPE::P_IMAPF ||
             envConfig->PTYPE == Param::PROBLEM_TYPE::P_IMAPF_STATION) {
    P = new IMAPF(G, A, envConfig->tasknum, MT_PG);
  } else if (envConfig->PTYPE == Param::PROBLEM_TYPE::P_IMAPF_FAIR) {
    P = new IMAPF_FAIR(G, A, envConfig->tasknum, MT_PG);
  } else {
    std::cout << "error@run, problem is not defined" << "\n";
    std::exit(1);
  }
  // set timestep limit
  P->setTimestepLimit(envConfig->timesteplimit);

  /************************
   * solver definition
   ************************/
  Solver* solver = nullptr;
  switch (envConfig->STYPE) {
  case Param::SOLVER_TYPE::S_CBS:
    if (envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF &&
        envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF_STATION) {
      std::cout << "error@run, CBS cannot solve except MAPF" << "\n";
      std::exit(1);
    }
    solver = new CBS(P, solverConfig->ID);
    break;
  case Param::SOLVER_TYPE::S_ECBS:
    if (envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF &&
        envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF_STATION) {
      std::cout << "error@run, ECBS cannot solve except MAPF" << "\n";
      std::exit(1);
    }
    solver = new ECBS(P, solverConfig->suboptimal, solverConfig->ID);
    break;
  case Param::SOLVER_TYPE::S_iECBS:
    if (envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF &&
        envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF_STATION) {
      std::cout << "error@run, iECBS cannot solve except MAPF" << "\n";
      std::exit(1);
    }
    solver = new iECBS(P, solverConfig->suboptimal, solverConfig->ID);
    break;
  case Param::SOLVER_TYPE::S_WHCA:
    if (envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF &&
        envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF_STATION) {
      std::cout << "error@run, WHCA cannot solve except MAPF" << "\n";
      std::exit(1);
    }
    solver = new WHCA(P, solverConfig->window);
    break;
  case Param::SOLVER_TYPE::S_HCA:
    if (envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF &&
        envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF_STATION) {
      std::cout << "error@run, HCA cannot solve except MAPF" << "\n";
      std::exit(1);
    }
    solver = new HCA(P);
    break;
  case Param::SOLVER_TYPE::S_PPS:
    if (envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF &&
        envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPF_STATION) {
      std::cout << "error@run, PPS cannot solve except MAPF" << "\n";
      std::exit(1);
    }
    solver = new PPS(P);
    break;
  case Param::SOLVER_TYPE::S_PIBT:
    solver = new PIBT(P, MT_S);
    break;
  case Param::SOLVER_TYPE::S_winPIBT:
    solver = new winPIBT(P, solverConfig->window,
                         solverConfig->softmode, MT_S);
    break;
  case Param::SOLVER_TYPE::S_TP:
    if (envConfig->PTYPE != Param::PROBLEM_TYPE::P_MAPD) {
      std::cout << "error@run, TP cannot solve except MAPD" << "\n";
      std::exit(1);
    }
    solver = new TP(P, G->getAllSpecialPoints());
    break;
  default:
    std::cout << "error@run, solver is not defined" << "\n";
    std::exit(1);
    break;
  }

  // precomputing distances
  if (solverConfig->WarshallFloyd) {
#ifdef OF
    std::cout << "start WarshallFloyd, "
              << "it requires O(" << G->getNodesNum() << "^3) cost\n";
#endif

    solver->WarshallFloyd();

#ifdef OF
    std::cout << "done." << "\n";
#endif
  }

  /************************
   * start solving
   ************************/
#ifdef OF
  std::cout << "done." << "\n";
  std::cout << "start solving the iterative MAPF problem" << "\n";
#endif

  solver->solve();

#ifdef OF
  std::cout << "success to solve!" << "\n\n";
#endif

  /************************
   * summarize results
   ************************/
  std::string result = "[setting] seed:" + std::to_string(envConfig->seed) + "\n";
  if (envConfig->scenario) {
    result += "[setting] scenario: " + envConfig->scenariofile + "\n";
  }
  result += solver->logStr();
  if (envConfig->log) {
    std::string outfile;
    std::ofstream log;
    setCurrentTime(outfile);
    outfile = "./log/" + outfile + ".txt";
    log.open(outfile, std::ios::out);
    if (!log) {
      std::cout << "error@run, cannot open log file "
                << outfile << "\n";
      std::exit(1);
    }
    log << result;
    log.close();
  }

  if (envConfig->printlog) {
    std::cout << result << "\n";
  } else if (envConfig->printtime) {
    std::cout << "[solver] elapsed:" << solver->getElapsed() << "\n\n";
  }

  // for visualization
  P->visual_showicon = visualConfig->showicon;
  P->visual_icon = visualConfig->icon;

  return P;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x800, %rsp            # imm = 0x800
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x86b0
movl $0x0, -0x34(%rbp)
leaq -0x58(%rbp), %rdi
callq 0x86b0
movq 0xf595e(%rip), %rax     # 0x100fc0
movl $0x0, (%rax)
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0xa9c99(%rip), %rdx     # 0xb530f
callq 0x8130
movl %eax, -0x34(%rbp)
cmpl $-0x1, %eax
je 0xb743
movq 0xf58c2(%rip), %rax     # 0x100f50
movq (%rax), %rax
movq %rax, -0x630(%rbp)
leaq -0x79(%rbp), %rdi
movq %rdi, -0x628(%rbp)
callq 0x8890
movq -0x630(%rbp), %rsi
movq -0x628(%rbp), %rdx
leaq -0x78(%rbp), %rdi
callq 0xd8c0
jmp 0xb6c1
leaq -0x58(%rbp), %rdi
leaq -0x78(%rbp), %rsi
movq %rsi, -0x638(%rbp)
callq 0x85f0
movq -0x638(%rbp), %rdi
callq 0x8330
leaq -0x79(%rbp), %rdi
callq 0x8540
movl -0x34(%rbp), %eax
subl $0x70, %eax
je 0xb714
jmp 0xb73c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x79(%rbp), %rdi
callq 0x8540
jmp 0xd21a
leaq -0x30(%rbp), %rdi
leaq -0x58(%rbp), %rsi
callq 0x8070
jmp 0xb723
jmp 0xb73e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xd21a
jmp 0xb73e
jmp 0xb668
movl $0x68, %edi
callq 0x84e0
movq %rax, -0x640(%rbp)
jmp 0xb756
movq -0x640(%rbp), %rax
movb $0x1, -0x9c(%rbp)
movl $0x0, (%rax)
movl $0x7, 0x4(%rax)
addq $0x8, %rax
movq %rax, -0x650(%rbp)
leaq -0x99(%rbp), %rdi
movq %rdi, -0x648(%rbp)
callq 0x8890
movq -0x650(%rbp), %rdi
movq -0x648(%rbp), %rdx
leaq 0xa7c2d(%rip), %rsi     # 0xb33d1
callq 0xd8c0
jmp 0xb7ab
movq -0x640(%rbp), %rax
movb $0x1, -0x9b(%rbp)
movl $0x3, 0x28(%rax)
movl $0x2710, 0x2c(%rax)     # imm = 0x2710
movl $0xa, 0x30(%rax)
movl $0x3dcccccd, 0x34(%rax) # imm = 0x3DCCCCCD
movb $0x0, 0x38(%rax)
addq $0x40, %rax
movq %rax, -0x660(%rbp)
leaq -0x9a(%rbp), %rdi
movq %rdi, -0x658(%rbp)
callq 0x8890
movq -0x660(%rbp), %rdi
movq -0x658(%rbp), %rdx
leaq 0xa7dac(%rip), %rsi     # 0xb35b8
callq 0xd8c0
jmp 0xb813
movq -0x640(%rbp), %rax
movl $0x0, 0x60(%rax)
movb $0x0, 0x64(%rax)
movb $0x1, 0x65(%rax)
movb $0x0, 0x66(%rax)
movb $0x0, -0x9b(%rbp)
movb $0x0, -0x9c(%rbp)
leaq -0x9a(%rbp), %rdi
callq 0x8540
leaq -0x99(%rbp), %rdi
callq 0x8540
movq -0x640(%rbp), %rax
movq %rax, -0x98(%rbp)
movl $0x10, %edi
callq 0x84e0
movq %rax, -0x668(%rbp)
jmp 0xb874
movq -0x668(%rbp), %rax
movb $0x0, (%rax)
movb $0x1, 0x1(%rax)
movl $0x5, 0x4(%rax)
movl $0x3fc00000, 0x8(%rax)  # imm = 0x3FC00000
movb $0x1, 0xc(%rax)
movq %rax, -0xa8(%rbp)
movl $0x28, %edi
callq 0x84e0
movq %rax, -0x670(%rbp)
jmp 0xb8ae
movq -0x670(%rbp), %rax
movb $0x1, -0xb2(%rbp)
movb $0x0, (%rax)
addq $0x8, %rax
movq %rax, -0x680(%rbp)
leaq -0xb1(%rbp), %rdi
movq %rdi, -0x678(%rbp)
callq 0x8890
movq -0x680(%rbp), %rdi
movq -0x678(%rbp), %rdx
leaq 0xa7aed(%rip), %rsi     # 0xb33df
callq 0xd8c0
jmp 0xb8f9
movb $0x0, -0xb2(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x8540
movq -0x670(%rbp), %rax
movq %rax, -0xb0(%rbp)
leaq -0xd8(%rbp), %rdi
leaq -0x30(%rbp), %rsi
callq 0x8230
jmp 0xb92c
movq -0x98(%rbp), %rsi
movq -0xa8(%rbp), %rdx
movq -0xb0(%rbp), %rcx
leaq -0xd8(%rbp), %rdi
callq 0x9650
jmp 0xb94f
leaq -0xd8(%rbp), %rdi
callq 0x8330
movl $0x1388, %edi           # imm = 0x1388
callq 0x84e0
movq %rax, -0x688(%rbp)
jmp 0xb96e
movq -0x688(%rbp), %rdi
movq -0x98(%rbp), %rax
movslq 0x60(%rax), %rsi
callq 0xd970
jmp 0xb987
movq -0x688(%rbp), %rax
movq %rax, -0xe0(%rbp)
movl $0x1388, %edi           # imm = 0x1388
callq 0x84e0
movq %rax, -0x690(%rbp)
jmp 0xb9a8
movq -0x690(%rbp), %rdi
movq -0x98(%rbp), %rax
movslq 0x60(%rax), %rsi
callq 0xd970
jmp 0xb9c1
movq -0x690(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq $0x0, -0xf0(%rbp)
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xba02
movq -0x98(%rbp), %rax
cmpl $0x2, (%rax)
je 0xba02
movq -0x98(%rbp), %rax
cmpl $0x5, (%rax)
jne 0xbbf4
movl $0xc0, %edi
callq 0x84e0
movq %rax, -0x698(%rbp)
jmp 0xba15
movb $0x1, -0x111(%rbp)
movq -0x98(%rbp), %rsi
addq $0x8, %rsi
leaq -0x110(%rbp), %rdi
callq 0x8230
jmp 0xba35
movq -0x698(%rbp), %rdi
movq -0xe0(%rbp), %rdx
leaq -0x110(%rbp), %rsi
callq 0x4a9e0
jmp 0xba51
movq -0x698(%rbp), %rax
movb $0x0, -0x111(%rbp)
movq %rax, -0xf0(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x8330
jmp 0xbdef
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xbac2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x9a(%rbp), %rdi
callq 0x8540
testb $0x1, -0x9b(%rbp)
jne 0xbab4
jmp 0xbac0
movq -0x650(%rbp), %rdi
callq 0x8330
jmp 0xbac2
leaq -0x99(%rbp), %rdi
callq 0x8540
testb $0x1, -0x9c(%rbp)
jne 0xbad9
jmp 0xbaea
movq -0x640(%rbp), %rdi
movl $0x68, %esi
callq 0x84f0
jmp 0xd21a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xb1(%rbp), %rdi
callq 0x8540
testb $0x1, -0xb2(%rbp)
jne 0xbb18
jmp 0xbb29
movq -0x670(%rbp), %rdi
movl $0x28, %esi
callq 0x84f0
jmp 0xd21a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0xd8(%rbp), %rdi
callq 0x8330
jmp 0xd21a
movq -0x688(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x1388, %esi           # imm = 0x1388
callq 0x84f0
jmp 0xd21a
movq -0x690(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x1388, %esi           # imm = 0x1388
callq 0x84f0
jmp 0xd21a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xbbd3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x110(%rbp), %rdi
callq 0x8330
testb $0x1, -0x111(%rbp)
jne 0xbbde
jmp 0xbbef
movq -0x698(%rbp), %rdi
movl $0xc0, %esi
callq 0x84f0
jmp 0xd21a
movq -0x98(%rbp), %rax
cmpl $0x1, (%rax)
jne 0xbccc
movl $0x108, %edi            # imm = 0x108
callq 0x84e0
movq %rax, -0x6a0(%rbp)
jmp 0xbc17
movb $0x1, -0x139(%rbp)
movq -0x98(%rbp), %rsi
addq $0x8, %rsi
leaq -0x138(%rbp), %rdi
callq 0x8230
jmp 0xbc37
movq -0x6a0(%rbp), %rdi
movq -0xe0(%rbp), %rdx
leaq -0x138(%rbp), %rsi
callq 0x49160
jmp 0xbc53
movq -0x6a0(%rbp), %rax
movb $0x0, -0x139(%rbp)
movq %rax, -0xf0(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x8330
jmp 0xbded
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xbcab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x138(%rbp), %rdi
callq 0x8330
testb $0x1, -0x139(%rbp)
jne 0xbcb6
jmp 0xbcc7
movq -0x6a0(%rbp), %rdi
movl $0x108, %esi            # imm = 0x108
callq 0x84f0
jmp 0xd21a
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
je 0xbce8
movq -0x98(%rbp), %rax
cmpl $0x4, (%rax)
jne 0xbdb0
movl $0xe0, %edi
callq 0x84e0
movq %rax, -0x6a8(%rbp)
jmp 0xbcfb
movb $0x1, -0x161(%rbp)
movq -0x98(%rbp), %rsi
addq $0x8, %rsi
leaq -0x160(%rbp), %rdi
callq 0x8230
jmp 0xbd1b
movq -0x6a8(%rbp), %rdi
movq -0xe0(%rbp), %rdx
leaq -0x160(%rbp), %rsi
callq 0x4d0e0
jmp 0xbd37
movq -0x6a8(%rbp), %rax
movb $0x0, -0x161(%rbp)
movq %rax, -0xf0(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x8330
jmp 0xbdeb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xbd8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x160(%rbp), %rdi
callq 0x8330
testb $0x1, -0x161(%rbp)
jne 0xbd9a
jmp 0xbdab
movq -0x6a8(%rbp), %rdi
movl $0xe0, %esi
callq 0x84f0
jmp 0xd21a
movq 0xf51e1(%rip), %rdi     # 0x100f98
leaq 0xa7636(%rip), %rsi     # 0xb33f4
callq 0x84d0
movq %rax, -0x6b0(%rbp)
jmp 0xbdcc
movq -0x6b0(%rbp), %rdi
leaq 0xa77dd(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xbde1
movl $0x1, %edi
callq 0x85d0
jmp 0xbded
jmp 0xbdef
leaq -0x180(%rbp), %rdi
callq 0xd9a0
leaq -0x198(%rbp), %rdi
callq 0xd9c0
movq -0x98(%rbp), %rax
testb $0x1, 0x38(%rax)
je 0xbe91
movq -0x98(%rbp), %rsi
addq $0x40, %rsi
leaq -0x1b8(%rbp), %rdi
callq 0x8230
jmp 0xbe2d
movq -0xf0(%rbp), %rdx
leaq -0x1b8(%rbp), %rdi
leaq -0x198(%rbp), %rsi
callq 0xb090
jmp 0xbe49
leaq -0x1b8(%rbp), %rdi
callq 0x8330
jmp 0xbed3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xd202
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x1b8(%rbp), %rdi
callq 0x8330
jmp 0xd202
movq -0xf0(%rbp), %rsi
movq -0x98(%rbp), %rax
movl 0x28(%rax), %edx
movq (%rsi), %rax
movq 0x28(%rax), %rax
leaq -0x1d0(%rbp), %rdi
callq *%rax
jmp 0xbeb4
leaq -0x198(%rbp), %rdi
leaq -0x1d0(%rbp), %rsi
callq 0xd9e0
leaq -0x1d0(%rbp), %rdi
callq 0xda10
movl $0x0, -0x1d4(%rbp)
movl -0x1d4(%rbp), %eax
movq -0x98(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jge 0xbf97
movl $0x48, %edi
callq 0x84e0
movq %rax, -0x6b8(%rbp)
jmp 0xbf06
movslq -0x1d4(%rbp), %rsi
leaq -0x198(%rbp), %rdi
callq 0xda70
movq %rax, %rdi
xorl %eax, %eax
movl %eax, %esi
callq 0xda90
movq -0x6b8(%rbp), %rdi
movq (%rax), %rsi
callq 0x3a3f0
jmp 0xbf36
movq -0x6b8(%rbp), %rax
movq %rax, -0x1e0(%rbp)
leaq -0x180(%rbp), %rdi
leaq -0x1e0(%rbp), %rsi
callq 0xdab0
jmp 0xbf59
jmp 0xbf5b
movl -0x1d4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1d4(%rbp)
jmp 0xbedd
movq -0x6b8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x48, %esi
callq 0x84f0
jmp 0xd202
movq $0x0, -0x1e8(%rbp)
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xbfbe
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
jne 0xc1e1
leaq -0x200(%rbp), %rdi
callq 0xdb20
movl $0x0, -0x204(%rbp)
movl -0x204(%rbp), %eax
movq -0x98(%rbp), %rcx
cmpl 0x28(%rcx), %eax
jge 0xc0a6
movl $0x40, %edi
callq 0x84e0
movq %rax, -0x6c0(%rbp)
jmp 0xbffd
movslq -0x204(%rbp), %rsi
leaq -0x198(%rbp), %rdi
callq 0xda70
movq %rax, %rdi
movl $0x1, %esi
callq 0xda90
movq -0x6c0(%rbp), %rdi
movq (%rax), %rsi
callq 0xb17b0
jmp 0xc02e
movq -0x6c0(%rbp), %rax
movq %rax, -0x210(%rbp)
leaq -0x200(%rbp), %rdi
leaq -0x210(%rbp), %rsi
callq 0xdb40
jmp 0xc051
jmp 0xc053
movl -0x204(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x204(%rbp)
jmp 0xbfd4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc1d0
movq -0x6c0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x40, %esi
callq 0x84f0
jmp 0xc1d0
movl $0x90, %edi
callq 0x84e0
movq %rax, -0x6c8(%rbp)
jmp 0xc0b9
movb $0x1, -0x241(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x6d0(%rbp)
leaq -0x228(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xdbb0
jmp 0xc0e3
leaq -0x240(%rbp), %rdi
leaq -0x200(%rbp), %rsi
callq 0xdca0
jmp 0xc0f8
movq -0x6d0(%rbp), %rsi
movq -0x6c8(%rbp), %rdi
movq -0xe0(%rbp), %r8
leaq -0x228(%rbp), %rdx
leaq -0x240(%rbp), %rcx
callq 0x55ac0
jmp 0xc122
movq -0x6c8(%rbp), %rax
movb $0x0, -0x241(%rbp)
movq %rax, -0x1e8(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xdd90
leaq -0x228(%rbp), %rdi
callq 0xddf0
leaq -0x200(%rbp), %rdi
callq 0xdd90
jmp 0xc5ab
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc1b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc1a6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x240(%rbp), %rdi
callq 0xdd90
leaq -0x228(%rbp), %rdi
callq 0xddf0
testb $0x1, -0x241(%rbp)
jne 0xc1bd
jmp 0xc1ce
movq -0x6c8(%rbp), %rdi
movl $0x90, %esi
callq 0x84f0
jmp 0xc1d0
leaq -0x200(%rbp), %rdi
callq 0xdd90
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x1, (%rax)
jne 0xc378
movl $0xd0, %edi
callq 0x84e0
movq %rax, -0x6d8(%rbp)
jmp 0xc204
movb $0x1, -0x291(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x6e0(%rbp)
leaq -0x260(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xdbb0
jmp 0xc22e
movq -0xf0(%rbp), %rsi
movq (%rsi), %rax
movq 0x38(%rax), %rax
leaq -0x278(%rbp), %rdi
callq *%rax
jmp 0xc247
movq -0xf0(%rbp), %rsi
movq (%rsi), %rax
movq 0x40(%rax), %rax
leaq -0x290(%rbp), %rdi
callq *%rax
jmp 0xc260
movq -0x6e0(%rbp), %rsi
movq -0x6d8(%rbp), %rdi
movq -0x98(%rbp), %rax
movl 0x30(%rax), %r9d
movss 0x34(%rax), %xmm0
movq -0xe0(%rbp), %rcx
movq %rsp, %rax
movq %rcx, (%rax)
leaq -0x260(%rbp), %rdx
leaq -0x278(%rbp), %rcx
leaq -0x290(%rbp), %r8
callq 0x53f10
jmp 0xc2a7
movq -0x6d8(%rbp), %rax
movb $0x0, -0x291(%rbp)
movq %rax, -0x1e8(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xd7d0
leaq -0x278(%rbp), %rdi
callq 0xd7d0
leaq -0x260(%rbp), %rdi
callq 0xddf0
jmp 0xc5a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc357
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc34b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc33f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x290(%rbp), %rdi
callq 0xd7d0
leaq -0x278(%rbp), %rdi
callq 0xd7d0
leaq -0x260(%rbp), %rdi
callq 0xddf0
testb $0x1, -0x291(%rbp)
jne 0xc362
jmp 0xc373
movq -0x6d8(%rbp), %rdi
movl $0xd0, %esi
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x2, (%rax)
je 0xc394
movq -0x98(%rbp), %rax
cmpl $0x4, (%rax)
jne 0xc477
movl $0xd0, %edi
callq 0x84e0
movq %rax, -0x6e8(%rbp)
jmp 0xc3a7
movb $0x1, -0x2b1(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x6f0(%rbp)
leaq -0x2b0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xdbb0
jmp 0xc3d1
movq -0x6f0(%rbp), %rsi
movq -0x6e8(%rbp), %rdi
movq -0x98(%rbp), %rax
movl 0x30(%rax), %ecx
movq -0xe0(%rbp), %r8
leaq -0x2b0(%rbp), %rdx
callq 0x50d70
jmp 0xc3fe
movq -0x6e8(%rbp), %rax
movb $0x0, -0x2b1(%rbp)
movq %rax, -0x1e8(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0xddf0
jmp 0xc5a7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc456
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2b0(%rbp), %rdi
callq 0xddf0
testb $0x1, -0x2b1(%rbp)
jne 0xc461
jmp 0xc472
movq -0x6e8(%rbp), %rdi
movl $0xd0, %esi
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x5, (%rax)
jne 0xc56a
movl $0xb0, %edi
callq 0x84e0
movq %rax, -0x6f8(%rbp)
jmp 0xc49a
movb $0x1, -0x2d1(%rbp)
movq -0xf0(%rbp), %rax
movq %rax, -0x700(%rbp)
leaq -0x2d0(%rbp), %rdi
leaq -0x180(%rbp), %rsi
callq 0xdbb0
jmp 0xc4c4
movq -0x700(%rbp), %rsi
movq -0x6f8(%rbp), %rdi
movq -0x98(%rbp), %rax
movl 0x30(%rax), %ecx
movq -0xe0(%rbp), %r8
leaq -0x2d0(%rbp), %rdx
callq 0x52a10
jmp 0xc4f1
movq -0x6f8(%rbp), %rax
movb $0x0, -0x2d1(%rbp)
movq %rax, -0x1e8(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0xddf0
jmp 0xc5a5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xc549
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2d0(%rbp), %rdi
callq 0xddf0
testb $0x1, -0x2d1(%rbp)
jne 0xc554
jmp 0xc565
movq -0x6f8(%rbp), %rdi
movl $0xb0, %esi
callq 0x84f0
jmp 0xd202
movq 0xf4a27(%rip), %rdi     # 0x100f98
leaq 0xa6e7c(%rip), %rsi     # 0xb33f4
callq 0x84d0
movq %rax, -0x708(%rbp)
jmp 0xc586
movq -0x708(%rbp), %rdi
leaq 0xa7023(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xc59b
movl $0x1, %edi
callq 0x85d0
jmp 0xc5a7
jmp 0xc5a9
jmp 0xc5ab
movq -0x1e8(%rbp), %rdi
movq -0x98(%rbp), %rax
movl 0x2c(%rax), %esi
callq 0xde50
jmp 0xc5c3
movq $0x0, -0x2e0(%rbp)
movq -0x98(%rbp), %rax
movl 0x4(%rax), %eax
movq %rax, -0x710(%rbp)
subq $0x8, %rax
ja 0xcc84
movq -0x710(%rbp), %rax
leaq 0xa6a0d(%rip), %rcx     # 0xb3004
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc653
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
je 0xc653
movq 0xf4979(%rip), %rdi     # 0x100f98
leaq 0xa6df0(%rip), %rsi     # 0xb3416
callq 0x84d0
movq %rax, -0x718(%rbp)
jmp 0xc634
movq -0x718(%rbp), %rdi
leaq 0xa6f75(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xc649
movl $0x1, %edi
callq 0x85d0
movl $0xa8, %edi
callq 0x84e0
movq %rax, -0x720(%rbp)
jmp 0xc666
movq -0x720(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
movq -0xa8(%rbp), %rax
movzbl 0x1(%rax), %edx
andl $0x1, %edx
callq 0x579e0
jmp 0xc689
movq -0x720(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x720(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0xa8, %esi
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc717
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
je 0xc717
movq 0xf48b5(%rip), %rdi     # 0x100f98
leaq 0xa6d54(%rip), %rsi     # 0xb343e
callq 0x84d0
movq %rax, -0x728(%rbp)
jmp 0xc6f8
movq -0x728(%rbp), %rdi
leaq 0xa6eb1(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xc70d
movl $0x1, %edi
callq 0x85d0
movl $0xe8, %edi
callq 0x84e0
movq %rax, -0x730(%rbp)
jmp 0xc72a
movq -0x730(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
movq -0xa8(%rbp), %rax
movss 0x8(%rax), %xmm0
movzbl 0x1(%rax), %edx
andl $0x1, %edx
callq 0x6f540
jmp 0xc752
movq -0x730(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x730(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0xe8, %esi
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc7e0
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
je 0xc7e0
movq 0xf47ec(%rip), %rdi     # 0x100f98
leaq 0xa6cb4(%rip), %rsi     # 0xb3467
callq 0x84d0
movq %rax, -0x738(%rbp)
jmp 0xc7c1
movq -0x738(%rbp), %rdi
leaq 0xa6de8(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xc7d6
movl $0x1, %edi
callq 0x85d0
movl $0x160, %edi            # imm = 0x160
callq 0x84e0
movq %rax, -0x740(%rbp)
jmp 0xc7f3
movq -0x740(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
movq -0xa8(%rbp), %rax
movss 0x8(%rax), %xmm0
movzbl 0x1(%rax), %edx
andl $0x1, %edx
callq 0x7d200
jmp 0xc81b
movq -0x740(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x740(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x160, %esi            # imm = 0x160
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc8a9
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
je 0xc8a9
movq 0xf4723(%rip), %rdi     # 0x100f98
leaq 0xa6c15(%rip), %rsi     # 0xb3491
callq 0x84d0
movq %rax, -0x748(%rbp)
jmp 0xc88a
movq -0x748(%rbp), %rdi
leaq 0xa6d1f(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xc89f
movl $0x1, %edi
callq 0x85d0
movl $0x88, %edi
callq 0x84e0
movq %rax, -0x750(%rbp)
jmp 0xc8bc
movq -0x750(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
movq -0xa8(%rbp), %rax
movl 0x4(%rax), %edx
callq 0xaaa70
jmp 0xc8db
movq -0x750(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x750(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x88, %esi
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xc969
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
je 0xc969
movq 0xf4663(%rip), %rdi     # 0x100f98
leaq 0xa6b7e(%rip), %rsi     # 0xb34ba
callq 0x84d0
movq %rax, -0x758(%rbp)
jmp 0xc94a
movq -0x758(%rbp), %rdi
leaq 0xa6c5f(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xc95f
movl $0x1, %edi
callq 0x85d0
movl $0x88, %edi
callq 0x84e0
movq %rax, -0x760(%rbp)
jmp 0xc97c
movq -0x760(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
callq 0xde70
jmp 0xc991
movq -0x760(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x760(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x88, %esi
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x0, (%rax)
je 0xca1f
movq -0x98(%rbp), %rax
cmpl $0x3, (%rax)
je 0xca1f
movq 0xf45ad(%rip), %rdi     # 0x100f98
leaq 0xa6af0(%rip), %rsi     # 0xb34e2
callq 0x84d0
movq %rax, -0x768(%rbp)
jmp 0xca00
movq -0x768(%rbp), %rdi
leaq 0xa6ba9(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xca15
movl $0x1, %edi
callq 0x85d0
movl $0x1a0, %edi            # imm = 0x1A0
callq 0x84e0
movq %rax, -0x770(%rbp)
jmp 0xca32
movq -0x770(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
callq 0x8db50
jmp 0xca47
movq -0x770(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x770(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0x1a0, %esi            # imm = 0x1A0
callq 0x84f0
jmp 0xd202
movl $0xb0, %edi
callq 0x84e0
movq %rax, -0x778(%rbp)
jmp 0xca95
movq -0x778(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
movq -0xe8(%rbp), %rdx
callq 0x892a0
jmp 0xcab1
movq -0x778(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x778(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0xb0, %esi
callq 0x84f0
jmp 0xd202
movl $0xe8, %edi
callq 0x84e0
movq %rax, -0x780(%rbp)
jmp 0xcaff
movq -0x780(%rbp), %rdi
movq -0x1e8(%rbp), %rsi
movq -0xa8(%rbp), %rax
movl 0x4(%rax), %edx
movq -0xe8(%rbp), %r8
movzbl 0xc(%rax), %ecx
andl $0x1, %ecx
callq 0xad230
jmp 0xcb2c
movq -0x780(%rbp), %rax
movq %rax, -0x2e0(%rbp)
jmp 0xccbf
movq -0x780(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
movl $0xe8, %esi
callq 0x84f0
jmp 0xd202
movq -0x98(%rbp), %rax
cmpl $0x1, (%rax)
je 0xcbae
movq 0xf441e(%rip), %rdi     # 0x100f98
leaq 0xa6989(%rip), %rsi     # 0xb350a
callq 0x84d0
movq %rax, -0x788(%rbp)
jmp 0xcb8f
movq -0x788(%rbp), %rdi
leaq 0xa6a1a(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xcba4
movl $0x1, %edi
callq 0x85d0
movl $0xa8, %edi
callq 0x84e0
movq %rax, -0x790(%rbp)
jmp 0xcbc1
movb $0x1, -0x2f9(%rbp)
movq -0x1e8(%rbp), %rax
movq %rax, -0x798(%rbp)
movq -0xf0(%rbp), %rsi
movq (%rsi), %rax
movq 0x50(%rax), %rax
leaq -0x2f8(%rbp), %rdi
callq *%rax
jmp 0xcbef
movq -0x798(%rbp), %rsi
movq -0x790(%rbp), %rdi
leaq -0x2f8(%rbp), %rdx
callq 0xa0720
jmp 0xcc0b
movq -0x790(%rbp), %rax
movb $0x0, -0x2f9(%rbp)
movq %rax, -0x2e0(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0xd7d0
jmp 0xccbf
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xcc63
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x2f8(%rbp), %rdi
callq 0xd7d0
testb $0x1, -0x2f9(%rbp)
jne 0xcc6e
jmp 0xcc7f
movq -0x790(%rbp), %rdi
movl $0xa8, %esi
callq 0x84f0
jmp 0xd202
movq 0xf430d(%rip), %rdi     # 0x100f98
leaq 0xa689f(%rip), %rsi     # 0xb3531
callq 0x84d0
movq %rax, -0x7a0(%rbp)
jmp 0xcca0
movq -0x7a0(%rbp), %rdi
leaq 0xa6909(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xccb5
movl $0x1, %edi
callq 0x85d0
movq -0xa8(%rbp), %rax
testb $0x1, (%rax)
je 0xccdb
movq -0x2e0(%rbp), %rdi
callq 0x9ce40
jmp 0xccd9
jmp 0xccdb
movq -0x2e0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
jmp 0xcced
movq -0x98(%rbp), %rax
movl 0x60(%rax), %esi
leaq -0x360(%rbp), %rdi
callq 0xdf50
jmp 0xcd05
leaq 0xa6846(%rip), %rsi     # 0xb3552
leaq -0x340(%rbp), %rdi
leaq -0x360(%rbp), %rdx
callq 0xdf00
jmp 0xcd21
leaq 0xa688f(%rip), %rdx     # 0xb35b7
leaq -0x320(%rbp), %rdi
leaq -0x340(%rbp), %rsi
callq 0xdeb0
jmp 0xcd3d
leaq -0x340(%rbp), %rdi
callq 0x8330
leaq -0x360(%rbp), %rdi
callq 0x8330
movq -0x98(%rbp), %rax
testb $0x1, 0x38(%rax)
je 0xce71
movq -0x98(%rbp), %rdx
addq $0x40, %rdx
leaq 0xa67ea(%rip), %rsi     # 0xb3562
leaq -0x3a0(%rbp), %rdi
callq 0xe070
jmp 0xcd86
leaq 0xa682a(%rip), %rdx     # 0xb35b7
leaq -0x380(%rbp), %rdi
leaq -0x3a0(%rbp), %rsi
callq 0xdeb0
jmp 0xcda2
leaq -0x320(%rbp), %rdi
leaq -0x380(%rbp), %rsi
callq 0x8640
jmp 0xcdb7
leaq -0x380(%rbp), %rdi
callq 0x8330
leaq -0x3a0(%rbp), %rdi
callq 0x8330
jmp 0xce71
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xce06
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x340(%rbp), %rdi
callq 0x8330
leaq -0x360(%rbp), %rdi
callq 0x8330
jmp 0xd202
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xd1f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xce60
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x380(%rbp), %rdi
callq 0x8330
leaq -0x3a0(%rbp), %rdi
callq 0x8330
jmp 0xd1f6
movq -0x2e0(%rbp), %rsi
movq (%rsi), %rax
movq 0x18(%rax), %rax
leaq -0x3c0(%rbp), %rdi
callq *%rax
jmp 0xce8a
leaq -0x320(%rbp), %rdi
leaq -0x3c0(%rbp), %rsi
callq 0x8640
jmp 0xce9f
leaq -0x3c0(%rbp), %rdi
callq 0x8330
movq -0x98(%rbp), %rax
testb $0x1, 0x64(%rax)
je 0xd0ba
leaq -0x3e0(%rbp), %rdi
callq 0x86b0
leaq -0x5e0(%rbp), %rdi
callq 0x8820
jmp 0xced6
leaq -0x3e0(%rbp), %rdi
callq 0xd240
jmp 0xcee4
leaq 0xa668c(%rip), %rsi     # 0xb3577
leaq -0x620(%rbp), %rdi
leaq -0x3e0(%rbp), %rdx
callq 0xe070
jmp 0xcf00
leaq 0xa6677(%rip), %rdx     # 0xb357e
leaq -0x600(%rbp), %rdi
leaq -0x620(%rbp), %rsi
callq 0xdeb0
jmp 0xcf1c
leaq -0x3e0(%rbp), %rdi
movq %rdi, -0x7a8(%rbp)
leaq -0x600(%rbp), %rsi
movq %rsi, -0x7b0(%rbp)
callq 0x85f0
movq -0x7b0(%rbp), %rdi
callq 0x8330
leaq -0x620(%rbp), %rdi
callq 0x8330
movq -0x7a8(%rbp), %rsi
leaq -0x5e0(%rbp), %rdi
movl $0x10, %edx
callq 0x8280
jmp 0xcf6f
movq -0x5e0(%rbp), %rax
movq -0x18(%rax), %rax
leaq -0x5e0(%rbp,%rax), %rdi
callq 0x8260
movb %al, -0x7b1(%rbp)
jmp 0xcf8f
movb -0x7b1(%rbp), %al
testb $0x1, %al
jne 0xcf9e
jmp 0xd060
movq 0xf3ff3(%rip), %rdi     # 0x100f98
leaq 0xa65d7(%rip), %rsi     # 0xb3583
callq 0x84d0
movq %rax, -0x7c0(%rbp)
jmp 0xcfba
movq -0x7c0(%rbp), %rdi
leaq -0x3e0(%rbp), %rsi
callq 0x8470
movq %rax, -0x7c8(%rbp)
jmp 0xcfd6
movq -0x7c8(%rbp), %rdi
leaq 0xa65d3(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xcfeb
movl $0x1, %edi
callq 0x85d0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x3c0(%rbp), %rdi
callq 0x8330
jmp 0xd1f6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xd0a9
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
jmp 0xd09d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x88(%rbp)
movl %eax, -0x8c(%rbp)
leaq -0x620(%rbp), %rdi
callq 0x8330
jmp 0xd09d
leaq -0x5e0(%rbp), %rdi
leaq -0x320(%rbp), %rsi
callq 0x8470
jmp 0xd075
leaq -0x5e0(%rbp), %rdi
callq 0x86f0
jmp 0xd083
leaq -0x5e0(%rbp), %rdi
callq 0x8730
leaq -0x3e0(%rbp), %rdi
callq 0x8330
jmp 0xd0ba
leaq -0x5e0(%rbp), %rdi
callq 0x8730
leaq -0x3e0(%rbp), %rdi
callq 0x8330
jmp 0xd1f6
movq -0x98(%rbp), %rax
testb $0x1, 0x65(%rax)
je 0xd0fa
movq 0xf3eca(%rip), %rdi     # 0x100f98
leaq -0x320(%rbp), %rsi
callq 0x8470
movq %rax, -0x7d0(%rbp)
jmp 0xd0e3
movq -0x7d0(%rbp), %rdi
leaq 0xa64c6(%rip), %rsi     # 0xb35b7
callq 0x84d0
jmp 0xd0f8
jmp 0xd16f
movq -0x98(%rbp), %rax
testb $0x1, 0x66(%rax)
je 0xd16d
movq 0xf3e8a(%rip), %rdi     # 0x100f98
leaq 0xa648f(%rip), %rsi     # 0xb35a4
callq 0x84d0
movq %rax, -0x7d8(%rbp)
jmp 0xd123
movq -0x2e0(%rbp), %rdi
callq 0xe180
movsd %xmm0, -0x7e0(%rbp)
jmp 0xd139
movsd -0x7e0(%rbp), %xmm0
movq -0x7d8(%rbp), %rdi
callq 0x88f0
movq %rax, -0x7e8(%rbp)
jmp 0xd156
movq -0x7e8(%rbp), %rdi
leaq 0xa6452(%rip), %rsi     # 0xb35b6
callq 0x84d0
jmp 0xd16b
jmp 0xd16d
jmp 0xd16f
movq -0xb0(%rbp), %rax
movb (%rax), %cl
movq -0x1e8(%rbp), %rax
andb $0x1, %cl
movb %cl, 0x68(%rax)
movq -0xb0(%rbp), %rsi
addq $0x8, %rsi
movq -0x1e8(%rbp), %rdi
addq $0x70, %rdi
callq 0x8070
jmp 0xd1a2
movq -0x1e8(%rbp), %rax
movq %rax, -0x7f0(%rbp)
leaq -0x320(%rbp), %rdi
callq 0x8330
leaq -0x198(%rbp), %rdi
callq 0xda10
leaq -0x180(%rbp), %rdi
callq 0xddf0
leaq -0x58(%rbp), %rdi
callq 0x8330
leaq -0x30(%rbp), %rdi
callq 0x8330
movq -0x7f0(%rbp), %rax
addq $0x800, %rsp            # imm = 0x800
popq %rbp
retq
leaq -0x320(%rbp), %rdi
callq 0x8330
leaq -0x198(%rbp), %rdi
callq 0xda10
leaq -0x180(%rbp), %rdi
callq 0xddf0
leaq -0x58(%rbp), %rdi
callq 0x8330
leaq -0x30(%rbp), %rdi
callq 0x8330
movq -0x88(%rbp), %rdi
callq 0x8880
nopl (%rax,%rax)