// File: nvanbenschoten[P]byzantine-agreement/src/main.cc
// Function: main
int main(int argc, const char** argv) {
  args::ArgumentParser parser(program_desc);
  args::HelpFlag help(parser, "help", help_desc, {"help"});
  IntFlag port(parser, "port", port_desc, {'p', "port"});
  StringFlag hostfile(parser, "hostfile", hostfile_desc, {'h', "hostfile"});
  IntFlag faulty(parser, "faulty", faulty_desc, {'f', "faulty"});
  IntFlag cmdr_id(parser, "commander_id", cmdr_id_desc, {'C', "commander_id"});
  StringFlag order(parser, "order", order_desc, {'o', "order"});
  StringFlagList malicious(parser, "malicious", malicious_desc,
                           {'m', "malicious"});
  IntFlag id(parser, "id", id_desc, {'i', "id"});
  args::Flag verbose(parser, "verbose", verbose_desc, {'v', "verbose"});

  try {
    parser.ParseCLI(argc, argv);

    // Set up logging.
    logging::out.enable(verbose);

    // Check required fields.
    if (!hostfile) throw args::UsageError("--hostfile is a required flag");
    if (!faulty) throw args::UsageError("--faulty is a required flag");
    if (!cmdr_id) throw args::UsageError("--commander_id is a required flag");
    auto hostfile_val = args::get(hostfile);
    auto faulty_val = args::get(faulty);
    auto commander_id_val = args::get(cmdr_id);

    // Get the default process port, if one is supplied.
    std::experimental::optional<unsigned short> default_port;
    if (port) {
      default_port = args::get(port);
    }

    // Create the process list from the hostfile.
    auto processes = GetProcesses(hostfile_val, default_port);

    // Determine the current process's ID.
    int my_id;
    if (id) {
      my_id = args::get(id);
      CheckProcessId(processes, my_id);
    } else {
      my_id = GetProcessId(processes);
    }
    auto server_port = processes.at(my_id).port();

    // Validate commander_id and faulty count flags.
    ValidateCommanderId(processes, commander_id_val);
    ValidateFaultyCount(processes, faulty_val);

    // Determine if the current process is the commander, and if so, what order
    // they should use.
    bool is_commander = my_id == commander_id_val;
    auto order_val = ValidateOrder(order, is_commander);

    // Determine which malicious behavior this process will exhibit.
    generals::MaliciousBehavior behavior =
        GetMaliciousBehavior(malicious, is_commander);

    // Create the General depending on it is the Commander or a Lieutenant.
    std::unique_ptr<generals::General> general;
    if (is_commander) {
      general = std::make_unique<generals::Commander>(processes, faulty_val,
                                                      *order_val, behavior);
    } else {
      general = std::make_unique<generals::Lieutenant>(
          processes, my_id, server_port, faulty_val, behavior);
    }

    // Run the algorithm by calling Decide() and print the results.
    msg::Order decision = general->Decide();
    PrintOrder(my_id, decision);
  } catch (const args::Help) {
    std::cout << parser;
    return 0;
  } catch (const args::UsageError& e) {
    std::cerr << "\n  " << red_start << e.what() << red_end << "\n\n";
    std::cerr << parser;
    return 1;
  } catch (const std::exception& e) {
    std::cerr << red_start << e.what() << red_end << "\n";
    return 1;
  }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x1770, %rsp           # imm = 0x1770
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x1c0(%rbp), %rdi
movq %rdi, -0x1408(%rbp)
callq 0x65f0
movq -0x1408(%rbp), %rdx
leaq 0x4a496(%rip), %rsi     # 0x53480
leaq -0x1a0(%rbp), %rdi
callq 0xd1d0
jmp 0x8ff8
leaq -0x1c0(%rbp), %rdi
callq 0x6878
leaq -0x2b9(%rbp), %rdi
movq %rdi, -0x1410(%rbp)
callq 0x6760
movq -0x1410(%rbp), %rdx
leaq 0x2da86(%rip), %rsi     # 0x36aab
leaq -0x2b8(%rbp), %rdi
callq 0xc850
jmp 0x9033
leaq -0x368(%rbp), %rdi
movq %rdi, -0x370(%rbp)
leaq 0x2da63(%rip), %rsi     # 0x36aab
callq 0xd560
jmp 0x904f
leaq -0x368(%rbp), %rax
movq %rax, -0x340(%rbp)
movq $0x1, -0x338(%rbp)
movq -0x340(%rbp), %rsi
movq -0x338(%rbp), %rdx
leaq -0x330(%rbp), %rdi
callq 0xd600
jmp 0x9084
leaq 0x4a415(%rip), %rcx     # 0x534a0
leaq -0x298(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0x2b8(%rbp), %rdx
leaq -0x330(%rbp), %r8
callq 0xd680
jmp 0x90ae
leaq -0x330(%rbp), %rdi
callq 0xd6e0
leaq -0x368(%rbp), %rax
movq %rax, -0x1420(%rbp)
addq $0x28, %rax
movq %rax, -0x1418(%rbp)
movq -0x1418(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1428(%rbp)
callq 0xd5e0
movq -0x1420(%rbp), %rcx
movq -0x1428(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1418(%rbp)
jne 0x90d3
leaq -0x2b8(%rbp), %rdi
callq 0x6878
leaq -0x2b9(%rbp), %rdi
callq 0x6460
leaq -0x461(%rbp), %rdi
movq %rdi, -0x1430(%rbp)
callq 0x6760
movq -0x1430(%rbp), %rdx
leaq 0x2d973(%rip), %rsi     # 0x36ab0
leaq -0x460(%rbp), %rdi
callq 0xc850
jmp 0x914b
leaq -0x538(%rbp), %rdi
movq %rdi, -0x540(%rbp)
movl $0x70, %esi
callq 0xd710
jmp 0x9165
leaq -0x510(%rbp), %rdi
movq %rdi, -0x540(%rbp)
leaq 0x2d936(%rip), %rsi     # 0x36ab0
callq 0xd560
jmp 0x9181
leaq -0x538(%rbp), %rax
movq %rax, -0x4e8(%rbp)
movq $0x2, -0x4e0(%rbp)
movq -0x4e8(%rbp), %rsi
movq -0x4e0(%rbp), %rdx
leaq -0x4d8(%rbp), %rdi
callq 0xd600
jmp 0x91b6
movl $0x0, -0x544(%rbp)
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x4a2f0(%rip), %rcx     # 0x534c0
leaq -0x440(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0x460(%rbp), %rdx
leaq -0x4d8(%rbp), %r8
leaq -0x544(%rbp), %r9
callq 0xd740
jmp 0x91fa
leaq -0x4d8(%rbp), %rdi
callq 0xd6e0
leaq -0x538(%rbp), %rax
movq %rax, -0x1440(%rbp)
addq $0x50, %rax
movq %rax, -0x1438(%rbp)
movq -0x1438(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1448(%rbp)
callq 0xd5e0
movq -0x1440(%rbp), %rcx
movq -0x1448(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1438(%rbp)
jne 0x921f
leaq -0x460(%rbp), %rdi
callq 0x6878
leaq -0x461(%rbp), %rdi
callq 0x6460
leaq -0x659(%rbp), %rdi
movq %rdi, -0x1450(%rbp)
callq 0x6760
movq -0x1450(%rbp), %rdx
leaq 0x2d60d(%rip), %rsi     # 0x36896
leaq -0x658(%rbp), %rdi
callq 0xc850
jmp 0x9297
leaq -0x730(%rbp), %rdi
movq %rdi, -0x738(%rbp)
movl $0x68, %esi
callq 0xd710
jmp 0x92b1
leaq -0x708(%rbp), %rdi
movq %rdi, -0x738(%rbp)
leaq 0x2d5d0(%rip), %rsi     # 0x36896
callq 0xd560
jmp 0x92cd
leaq -0x730(%rbp), %rax
movq %rax, -0x6e0(%rbp)
movq $0x2, -0x6d8(%rbp)
movq -0x6e0(%rbp), %rsi
movq -0x6d8(%rbp), %rdx
leaq -0x6d0(%rbp), %rdi
callq 0xd600
jmp 0x9302
leaq -0x758(%rbp), %rdi
movq %rdi, -0x1458(%rbp)
callq 0x65f0
movq -0x1458(%rbp), %r9
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x4a1b4(%rip), %rcx     # 0x534e0
leaq -0x638(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0x658(%rbp), %rdx
leaq -0x6d0(%rbp), %r8
callq 0xd7e0
jmp 0x934f
leaq -0x758(%rbp), %rdi
callq 0x6878
leaq -0x6d0(%rbp), %rdi
callq 0xd6e0
leaq -0x730(%rbp), %rax
movq %rax, -0x1468(%rbp)
addq $0x50, %rax
movq %rax, -0x1460(%rbp)
movq -0x1460(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1470(%rbp)
callq 0xd5e0
movq -0x1468(%rbp), %rcx
movq -0x1470(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1460(%rbp)
jne 0x9380
leaq -0x658(%rbp), %rdi
callq 0x6878
leaq -0x659(%rbp), %rdi
callq 0x6460
leaq -0x849(%rbp), %rdi
movq %rdi, -0x1478(%rbp)
callq 0x6760
movq -0x1478(%rbp), %rdx
leaq 0x2d6cb(%rip), %rsi     # 0x36ab5
leaq -0x848(%rbp), %rdi
callq 0xc850
jmp 0x93f8
leaq -0x920(%rbp), %rdi
movq %rdi, -0x928(%rbp)
movl $0x66, %esi
callq 0xd710
jmp 0x9412
leaq -0x8f8(%rbp), %rdi
movq %rdi, -0x928(%rbp)
leaq 0x2d68e(%rip), %rsi     # 0x36ab5
callq 0xd560
jmp 0x942e
leaq -0x920(%rbp), %rax
movq %rax, -0x8d0(%rbp)
movq $0x2, -0x8c8(%rbp)
movq -0x8d0(%rbp), %rsi
movq -0x8c8(%rbp), %rdx
leaq -0x8c0(%rbp), %rdi
callq 0xd600
jmp 0x9463
movl $0x0, -0x92c(%rbp)
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x4a083(%rip), %rcx     # 0x53500
leaq -0x828(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0x848(%rbp), %rdx
leaq -0x8c0(%rbp), %r8
leaq -0x92c(%rbp), %r9
callq 0xd740
jmp 0x94a7
leaq -0x8c0(%rbp), %rdi
callq 0xd6e0
leaq -0x920(%rbp), %rax
movq %rax, -0x1488(%rbp)
addq $0x50, %rax
movq %rax, -0x1480(%rbp)
movq -0x1480(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1490(%rbp)
callq 0xd5e0
movq -0x1488(%rbp), %rcx
movq -0x1490(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1480(%rbp)
jne 0x94cc
leaq -0x848(%rbp), %rdi
callq 0x6878
leaq -0x849(%rbp), %rdi
callq 0x6460
leaq -0xa21(%rbp), %rdi
movq %rdi, -0x1498(%rbp)
callq 0x6760
movq -0x1498(%rbp), %rdx
leaq 0x2d586(%rip), %rsi     # 0x36abc
leaq -0xa20(%rbp), %rdi
callq 0xc850
jmp 0x9544
leaq -0xaf8(%rbp), %rdi
movq %rdi, -0xb00(%rbp)
movl $0x43, %esi
callq 0xd710
jmp 0x955e
leaq -0xad0(%rbp), %rdi
movq %rdi, -0xb00(%rbp)
leaq 0x2d549(%rip), %rsi     # 0x36abc
callq 0xd560
jmp 0x957a
leaq -0xaf8(%rbp), %rax
movq %rax, -0xaa8(%rbp)
movq $0x2, -0xaa0(%rbp)
movq -0xaa8(%rbp), %rsi
movq -0xaa0(%rbp), %rdx
leaq -0xa98(%rbp), %rdi
callq 0xd600
jmp 0x95af
movl $0x0, -0xb04(%rbp)
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x49f57(%rip), %rcx     # 0x53520
leaq -0xa00(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0xa20(%rbp), %rdx
leaq -0xa98(%rbp), %r8
leaq -0xb04(%rbp), %r9
callq 0xd740
jmp 0x95f3
leaq -0xa98(%rbp), %rdi
callq 0xd6e0
leaq -0xaf8(%rbp), %rax
movq %rax, -0x14a8(%rbp)
addq $0x50, %rax
movq %rax, -0x14a0(%rbp)
movq -0x14a0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x14b0(%rbp)
callq 0xd5e0
movq -0x14a8(%rbp), %rcx
movq -0x14b0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x14a0(%rbp)
jne 0x9618
leaq -0xa20(%rbp), %rdi
callq 0x6878
leaq -0xa21(%rbp), %rdi
callq 0x6460
leaq -0xc19(%rbp), %rdi
movq %rdi, -0x14b8(%rbp)
callq 0x6760
movq -0x14b8(%rbp), %rdx
leaq 0x2d3af(%rip), %rsi     # 0x36a31
leaq -0xc18(%rbp), %rdi
callq 0xc850
jmp 0x9690
leaq -0xcf0(%rbp), %rdi
movq %rdi, -0xcf8(%rbp)
movl $0x6f, %esi
callq 0xd710
jmp 0x96aa
leaq -0xcc8(%rbp), %rdi
movq %rdi, -0xcf8(%rbp)
leaq 0x2d372(%rip), %rsi     # 0x36a31
callq 0xd560
jmp 0x96c6
leaq -0xcf0(%rbp), %rax
movq %rax, -0xca0(%rbp)
movq $0x2, -0xc98(%rbp)
movq -0xca0(%rbp), %rsi
movq -0xc98(%rbp), %rdx
leaq -0xc90(%rbp), %rdi
callq 0xd600
jmp 0x96fb
leaq -0xd18(%rbp), %rdi
movq %rdi, -0x14c0(%rbp)
callq 0x65f0
movq -0x14c0(%rbp), %r9
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x49e1b(%rip), %rcx     # 0x53540
leaq -0xbf8(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0xc18(%rbp), %rdx
leaq -0xc90(%rbp), %r8
callq 0xd7e0
jmp 0x9748
leaq -0xd18(%rbp), %rdi
callq 0x6878
leaq -0xc90(%rbp), %rdi
callq 0xd6e0
leaq -0xcf0(%rbp), %rax
movq %rax, -0x14d0(%rbp)
addq $0x50, %rax
movq %rax, -0x14c8(%rbp)
movq -0x14c8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x14d8(%rbp)
callq 0xd5e0
movq -0x14d0(%rbp), %rcx
movq -0x14d8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x14c8(%rbp)
jne 0x9779
leaq -0xc18(%rbp), %rdi
callq 0x6878
leaq -0xc19(%rbp), %rdi
callq 0x6460
leaq -0xe21(%rbp), %rdi
movq %rdi, -0x14e0(%rbp)
callq 0x6760
movq -0x14e0(%rbp), %rdx
leaq 0x2d2e6(%rip), %rsi     # 0x36ac9
leaq -0xe20(%rbp), %rdi
callq 0xc850
jmp 0x97f1
leaq -0xef8(%rbp), %rdi
movq %rdi, -0xf00(%rbp)
movl $0x6d, %esi
callq 0xd710
jmp 0x980b
leaq -0xed0(%rbp), %rdi
movq %rdi, -0xf00(%rbp)
leaq 0x2d2a9(%rip), %rsi     # 0x36ac9
callq 0xd560
jmp 0x9827
leaq -0xef8(%rbp), %rax
movq %rax, -0xea8(%rbp)
movq $0x2, -0xea0(%rbp)
movq -0xea8(%rbp), %rsi
movq -0xea0(%rbp), %rdx
leaq -0xe98(%rbp), %rdi
callq 0xd600
jmp 0x985c
xorps %xmm0, %xmm0
movaps %xmm0, -0xf20(%rbp)
movq $0x0, -0xf10(%rbp)
leaq -0xf20(%rbp), %rdi
movq %rdi, -0x14e8(%rbp)
callq 0xb2d0
movq -0x14e8(%rbp), %r9
leaq 0x49cce(%rip), %rcx     # 0x53560
leaq -0xe00(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0xe20(%rbp), %rdx
leaq -0xe98(%rbp), %r8
callq 0xd8a0
jmp 0x98b5
leaq -0xf20(%rbp), %rdi
callq 0xb270
leaq -0xe98(%rbp), %rdi
callq 0xd6e0
leaq -0xef8(%rbp), %rax
movq %rax, -0x14f8(%rbp)
addq $0x50, %rax
movq %rax, -0x14f0(%rbp)
movq -0x14f0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1500(%rbp)
callq 0xd5e0
movq -0x14f8(%rbp), %rcx
movq -0x1500(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x14f0(%rbp)
jne 0x98e6
leaq -0xe20(%rbp), %rdi
callq 0x6878
leaq -0xe21(%rbp), %rdi
callq 0x6460
leaq -0x1011(%rbp), %rdi
movq %rdi, -0x1508(%rbp)
callq 0x6760
movq -0x1508(%rbp), %rdx
leaq 0x2d176(%rip), %rsi     # 0x36ac6
leaq -0x1010(%rbp), %rdi
callq 0xc850
jmp 0x995e
leaq -0x10e8(%rbp), %rdi
movq %rdi, -0x10f0(%rbp)
movl $0x69, %esi
callq 0xd710
jmp 0x9978
leaq -0x10c0(%rbp), %rdi
movq %rdi, -0x10f0(%rbp)
leaq 0x2d139(%rip), %rsi     # 0x36ac6
callq 0xd560
jmp 0x9994
leaq -0x10e8(%rbp), %rax
movq %rax, -0x1098(%rbp)
movq $0x2, -0x1090(%rbp)
movq -0x1098(%rbp), %rsi
movq -0x1090(%rbp), %rdx
leaq -0x1088(%rbp), %rdi
callq 0xd600
jmp 0x99c9
movl $0x0, -0x10f4(%rbp)
movq %rsp, %rax
movl $0x0, (%rax)
leaq 0x49b9d(%rip), %rcx     # 0x53580
leaq -0xff0(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0x1010(%rbp), %rdx
leaq -0x1088(%rbp), %r8
leaq -0x10f4(%rbp), %r9
callq 0xd740
jmp 0x9a0d
leaq -0x1088(%rbp), %rdi
callq 0xd6e0
leaq -0x10e8(%rbp), %rax
movq %rax, -0x1518(%rbp)
addq $0x50, %rax
movq %rax, -0x1510(%rbp)
movq -0x1510(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1520(%rbp)
callq 0xd5e0
movq -0x1518(%rbp), %rcx
movq -0x1520(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1510(%rbp)
jne 0x9a32
leaq -0x1010(%rbp), %rdi
callq 0x6878
leaq -0x1011(%rbp), %rdi
callq 0x6460
leaq -0x11e1(%rbp), %rdi
movq %rdi, -0x1528(%rbp)
callq 0x6760
movq -0x1528(%rbp), %rdx
leaq 0x2d037(%rip), %rsi     # 0x36ad3
leaq -0x11e0(%rbp), %rdi
callq 0xc850
jmp 0x9aaa
leaq -0x12b8(%rbp), %rdi
movq %rdi, -0x12c0(%rbp)
movl $0x76, %esi
callq 0xd710
jmp 0x9ac4
leaq -0x1290(%rbp), %rdi
movq %rdi, -0x12c0(%rbp)
leaq 0x2cffa(%rip), %rsi     # 0x36ad3
callq 0xd560
jmp 0x9ae0
leaq -0x12b8(%rbp), %rax
movq %rax, -0x1268(%rbp)
movq $0x2, -0x1260(%rbp)
movq -0x1268(%rbp), %rsi
movq -0x1260(%rbp), %rdx
leaq -0x1258(%rbp), %rdi
callq 0xd600
jmp 0x9b15
leaq 0x49a84(%rip), %rcx     # 0x535a0
leaq -0x11c0(%rbp), %rdi
leaq -0x1a0(%rbp), %rsi
leaq -0x11e0(%rbp), %rdx
leaq -0x1258(%rbp), %r8
xorl %r9d, %r9d
callq 0xd950
jmp 0x9b42
leaq -0x1258(%rbp), %rdi
callq 0xd6e0
leaq -0x12b8(%rbp), %rax
movq %rax, -0x1538(%rbp)
addq $0x50, %rax
movq %rax, -0x1530(%rbp)
movq -0x1530(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1540(%rbp)
callq 0xd5e0
movq -0x1538(%rbp), %rcx
movq -0x1540(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1530(%rbp)
jne 0x9b67
leaq -0x11e0(%rbp), %rdi
callq 0x6878
leaq -0x11e1(%rbp), %rdi
callq 0x6460
movl -0x8(%rbp), %esi
movq -0x10(%rbp), %rdx
leaq -0x1a0(%rbp), %rdi
callq 0xd9e0
jmp 0x9bc5
leaq -0x11c0(%rbp), %rdi
callq 0xcd40
movzbl %al, %esi
leaq 0x49a95(%rip), %rdi     # 0x53670
callq 0xdb00
jmp 0x9be2
leaq -0x638(%rbp), %rdi
callq 0xcd40
testb $0x1, %al
jne 0xa6d2
movb $0x1, -0x12e2(%rbp)
movl $0x10, %edi
callq 0x6240
movq %rax, -0x1550(%rbp)
leaq -0x12e1(%rbp), %rdi
movq %rdi, -0x1548(%rbp)
callq 0x6760
movq -0x1548(%rbp), %rdx
leaq 0x2ceac(%rip), %rsi     # 0x36adb
leaq -0x12e0(%rbp), %rdi
callq 0xc850
jmp 0x9c3d
movq -0x1550(%rbp), %rdi
leaq -0x12e0(%rbp), %rsi
callq 0xca20
jmp 0x9c52
movq -0x1550(%rbp), %rdi
movb $0x0, -0x12e2(%rbp)
leaq 0x48739(%rip), %rsi     # 0x523a0
leaq 0x2df2(%rip), %rdx      # 0xca60
callq 0x6730
jmp 0xb064
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1c0(%rbp), %rdi
callq 0x6878
jmp 0xb050
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x9d9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0x370(%rbp), %rax
leaq -0x368(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1558(%rbp)
je 0x9d0f
movq -0x1558(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1560(%rbp)
callq 0xd5e0
movq -0x1560(%rbp), %rax
leaq -0x368(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1558(%rbp)
jne 0x9cde
jmp 0x9d8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x9d43
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x330(%rbp), %rdi
callq 0xd6e0
leaq -0x368(%rbp), %rax
movq %rax, -0x1570(%rbp)
addq $0x28, %rax
movq %rax, -0x1568(%rbp)
movq -0x1568(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1578(%rbp)
callq 0xd5e0
movq -0x1570(%rbp), %rcx
movq -0x1578(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1568(%rbp)
jne 0x9d5c
jmp 0x9d8f
leaq -0x2b8(%rbp), %rdi
callq 0x6878
leaq -0x2b9(%rbp), %rdi
callq 0x6460
jmp 0xb044
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x9eac
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0x540(%rbp), %rax
leaq -0x538(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1580(%rbp)
je 0x9e20
movq -0x1580(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1588(%rbp)
callq 0xd5e0
movq -0x1588(%rbp), %rax
leaq -0x538(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1580(%rbp)
jne 0x9def
jmp 0x9ea0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x9e54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x4d8(%rbp), %rdi
callq 0xd6e0
leaq -0x538(%rbp), %rax
movq %rax, -0x1598(%rbp)
addq $0x50, %rax
movq %rax, -0x1590(%rbp)
movq -0x1590(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x15a0(%rbp)
callq 0xd5e0
movq -0x1598(%rbp), %rcx
movq -0x15a0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1590(%rbp)
jne 0x9e6d
jmp 0x9ea0
leaq -0x460(%rbp), %rdi
callq 0x6878
leaq -0x461(%rbp), %rdi
callq 0x6460
jmp 0xb038
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x9fcc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0x738(%rbp), %rax
leaq -0x730(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x15a8(%rbp)
je 0x9f31
movq -0x15a8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x15b0(%rbp)
callq 0xd5e0
movq -0x15b0(%rbp), %rax
leaq -0x730(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x15a8(%rbp)
jne 0x9f00
jmp 0x9fc0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0x9f74
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x758(%rbp), %rdi
callq 0x6878
leaq -0x6d0(%rbp), %rdi
callq 0xd6e0
leaq -0x730(%rbp), %rax
movq %rax, -0x15c0(%rbp)
addq $0x50, %rax
movq %rax, -0x15b8(%rbp)
movq -0x15b8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x15c8(%rbp)
callq 0xd5e0
movq -0x15c0(%rbp), %rcx
movq -0x15c8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x15b8(%rbp)
jne 0x9f8d
jmp 0x9fc0
leaq -0x658(%rbp), %rdi
callq 0x6878
leaq -0x659(%rbp), %rdi
callq 0x6460
jmp 0xb02c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa0dd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0x928(%rbp), %rax
leaq -0x920(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x15d0(%rbp)
je 0xa051
movq -0x15d0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x15d8(%rbp)
callq 0xd5e0
movq -0x15d8(%rbp), %rax
leaq -0x920(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x15d0(%rbp)
jne 0xa020
jmp 0xa0d1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa085
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x8c0(%rbp), %rdi
callq 0xd6e0
leaq -0x920(%rbp), %rax
movq %rax, -0x15e8(%rbp)
addq $0x50, %rax
movq %rax, -0x15e0(%rbp)
movq -0x15e0(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x15f0(%rbp)
callq 0xd5e0
movq -0x15e8(%rbp), %rcx
movq -0x15f0(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x15e0(%rbp)
jne 0xa09e
jmp 0xa0d1
leaq -0x848(%rbp), %rdi
callq 0x6878
leaq -0x849(%rbp), %rdi
callq 0x6460
jmp 0xb020
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa1ee
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0xb00(%rbp), %rax
leaq -0xaf8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x15f8(%rbp)
je 0xa162
movq -0x15f8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1600(%rbp)
callq 0xd5e0
movq -0x1600(%rbp), %rax
leaq -0xaf8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x15f8(%rbp)
jne 0xa131
jmp 0xa1e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa196
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0xa98(%rbp), %rdi
callq 0xd6e0
leaq -0xaf8(%rbp), %rax
movq %rax, -0x1610(%rbp)
addq $0x50, %rax
movq %rax, -0x1608(%rbp)
movq -0x1608(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1618(%rbp)
callq 0xd5e0
movq -0x1610(%rbp), %rcx
movq -0x1618(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1608(%rbp)
jne 0xa1af
jmp 0xa1e2
leaq -0xa20(%rbp), %rdi
callq 0x6878
leaq -0xa21(%rbp), %rdi
callq 0x6460
jmp 0xb014
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa30e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0xcf8(%rbp), %rax
leaq -0xcf0(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1620(%rbp)
je 0xa273
movq -0x1620(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1628(%rbp)
callq 0xd5e0
movq -0x1628(%rbp), %rax
leaq -0xcf0(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1620(%rbp)
jne 0xa242
jmp 0xa302
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa2b6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0xd18(%rbp), %rdi
callq 0x6878
leaq -0xc90(%rbp), %rdi
callq 0xd6e0
leaq -0xcf0(%rbp), %rax
movq %rax, -0x1638(%rbp)
addq $0x50, %rax
movq %rax, -0x1630(%rbp)
movq -0x1630(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1640(%rbp)
callq 0xd5e0
movq -0x1638(%rbp), %rcx
movq -0x1640(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1630(%rbp)
jne 0xa2cf
jmp 0xa302
leaq -0xc18(%rbp), %rdi
callq 0x6878
leaq -0xc19(%rbp), %rdi
callq 0x6460
jmp 0xb008
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa42e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0xf00(%rbp), %rax
leaq -0xef8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1648(%rbp)
je 0xa393
movq -0x1648(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1650(%rbp)
callq 0xd5e0
movq -0x1650(%rbp), %rax
leaq -0xef8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1648(%rbp)
jne 0xa362
jmp 0xa422
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa3d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0xf20(%rbp), %rdi
callq 0xb270
leaq -0xe98(%rbp), %rdi
callq 0xd6e0
leaq -0xef8(%rbp), %rax
movq %rax, -0x1660(%rbp)
addq $0x50, %rax
movq %rax, -0x1658(%rbp)
movq -0x1658(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1668(%rbp)
callq 0xd5e0
movq -0x1660(%rbp), %rcx
movq -0x1668(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1658(%rbp)
jne 0xa3ef
jmp 0xa422
leaq -0xe20(%rbp), %rdi
callq 0x6878
leaq -0xe21(%rbp), %rdi
callq 0x6460
jmp 0xaffc
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa53f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0x10f0(%rbp), %rax
leaq -0x10e8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1670(%rbp)
je 0xa4b3
movq -0x1670(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1678(%rbp)
callq 0xd5e0
movq -0x1678(%rbp), %rax
leaq -0x10e8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1670(%rbp)
jne 0xa482
jmp 0xa533
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa4e7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1088(%rbp), %rdi
callq 0xd6e0
leaq -0x10e8(%rbp), %rax
movq %rax, -0x1688(%rbp)
addq $0x50, %rax
movq %rax, -0x1680(%rbp)
movq -0x1680(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x1690(%rbp)
callq 0xd5e0
movq -0x1688(%rbp), %rcx
movq -0x1690(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1680(%rbp)
jne 0xa500
jmp 0xa533
leaq -0x1010(%rbp), %rdi
callq 0x6878
leaq -0x1011(%rbp), %rdi
callq 0x6460
jmp 0xaff0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa650
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
movq -0x12c0(%rbp), %rax
leaq -0x12b8(%rbp), %rcx
cmpq %rax, %rcx
movq %rax, -0x1698(%rbp)
je 0xa5c4
movq -0x1698(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x16a0(%rbp)
callq 0xd5e0
movq -0x16a0(%rbp), %rax
leaq -0x12b8(%rbp), %rcx
cmpq %rcx, %rax
movq %rax, -0x1698(%rbp)
jne 0xa593
jmp 0xa644
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa5f8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1258(%rbp), %rdi
callq 0xd6e0
leaq -0x12b8(%rbp), %rax
movq %rax, -0x16b0(%rbp)
addq $0x50, %rax
movq %rax, -0x16a8(%rbp)
movq -0x16a8(%rbp), %rdi
addq $-0x28, %rdi
movq %rdi, -0x16b8(%rbp)
callq 0xd5e0
movq -0x16b0(%rbp), %rcx
movq -0x16b8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x16a8(%rbp)
jne 0xa611
jmp 0xa644
leaq -0x11e0(%rbp), %rdi
callq 0x6878
leaq -0x11e1(%rbp), %rdi
callq 0x6460
jmp 0xafe4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xacae
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa6aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x12e0(%rbp), %rdi
callq 0x6878
leaq -0x12e1(%rbp), %rdi
callq 0x6460
testb $0x1, -0x12e2(%rbp)
jne 0xa6c1
jmp 0xa6cd
movq -0x1550(%rbp), %rdi
callq 0x6300
jmp 0xacae
leaq -0x828(%rbp), %rdi
callq 0xcd40
testb $0x1, %al
jne 0xa7c2
movb $0x1, -0x130a(%rbp)
movl $0x10, %edi
callq 0x6240
movq %rax, -0x16c8(%rbp)
leaq -0x1309(%rbp), %rdi
movq %rdi, -0x16c0(%rbp)
callq 0x6760
movq -0x16c0(%rbp), %rdx
leaq 0x2c3da(%rip), %rsi     # 0x36af9
leaq -0x1308(%rbp), %rdi
callq 0xc850
jmp 0xa72d
movq -0x16c8(%rbp), %rdi
leaq -0x1308(%rbp), %rsi
callq 0xca20
jmp 0xa742
movq -0x16c8(%rbp), %rdi
movb $0x0, -0x130a(%rbp)
leaq 0x47c49(%rip), %rsi     # 0x523a0
leaq 0x2302(%rip), %rdx      # 0xca60
callq 0x6730
jmp 0xb064
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa79a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1308(%rbp), %rdi
callq 0x6878
leaq -0x1309(%rbp), %rdi
callq 0x6460
testb $0x1, -0x130a(%rbp)
jne 0xa7b1
jmp 0xa7bd
movq -0x16c8(%rbp), %rdi
callq 0x6300
jmp 0xacae
leaq -0xa00(%rbp), %rdi
callq 0xcd40
testb $0x1, %al
jne 0xa8b2
movb $0x1, -0x1332(%rbp)
movl $0x10, %edi
callq 0x6240
movq %rax, -0x16d8(%rbp)
leaq -0x1331(%rbp), %rdi
movq %rdi, -0x16d0(%rbp)
callq 0x6760
movq -0x16d0(%rbp), %rdx
leaq 0x2c306(%rip), %rsi     # 0x36b15
leaq -0x1330(%rbp), %rdi
callq 0xc850
jmp 0xa81d
movq -0x16d8(%rbp), %rdi
leaq -0x1330(%rbp), %rsi
callq 0xca20
jmp 0xa832
movq -0x16d8(%rbp), %rdi
movb $0x0, -0x1332(%rbp)
leaq 0x47b59(%rip), %rsi     # 0x523a0
leaq 0x2212(%rip), %rdx      # 0xca60
callq 0x6730
jmp 0xb064
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xa88a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1330(%rbp), %rdi
callq 0x6878
leaq -0x1331(%rbp), %rdi
callq 0x6460
testb $0x1, -0x1332(%rbp)
jne 0xa8a1
jmp 0xa8ad
movq -0x16d8(%rbp), %rdi
callq 0x6300
jmp 0xacae
leaq -0x638(%rbp), %rdi
callq 0xcd60
movq %rax, -0x16e0(%rbp)
jmp 0xa8c7
movq -0x16e0(%rbp), %rsi
leaq -0x1358(%rbp), %rdi
callq 0x61d0
jmp 0xa8dc
leaq -0x828(%rbp), %rdi
callq 0xdb30
movq %rax, -0x16e8(%rbp)
jmp 0xa8f1
movq -0x16e8(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x135c(%rbp)
leaq -0xa00(%rbp), %rdi
callq 0xdb30
movq %rax, -0x16f0(%rbp)
jmp 0xa915
movq -0x16f0(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x1360(%rbp)
leaq -0x1364(%rbp), %rdi
callq 0xdb50
leaq -0x440(%rbp), %rdi
callq 0xcd40
testb $0x1, %al
jne 0xa942
jmp 0xa985
leaq -0x440(%rbp), %rdi
callq 0xdb30
movq %rax, -0x16f8(%rbp)
jmp 0xa957
movq -0x16f8(%rbp), %rsi
leaq -0x1364(%rbp), %rdi
callq 0xdb70
jmp 0xa96c
jmp 0xa985
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xaca2
leaq -0x13a0(%rbp), %rdi
leaq -0x1358(%rbp), %rsi
callq 0x61d0
jmp 0xa99a
leaq -0x13a4(%rbp), %rdi
leaq -0x1364(%rbp), %rsi
callq 0xc920
jmp 0xa9af
leaq -0x1380(%rbp), %rdi
leaq -0x13a0(%rbp), %rsi
leaq -0x13a4(%rbp), %rdx
callq 0x7960
jmp 0xa9cb
leaq -0x13a0(%rbp), %rdi
callq 0x6878
leaq -0xff0(%rbp), %rdi
callq 0xcd40
testb $0x1, %al
jne 0xa9e9
jmp 0xaa5d
leaq -0xff0(%rbp), %rdi
callq 0xdb30
movq %rax, -0x1700(%rbp)
jmp 0xa9fe
movq -0x1700(%rbp), %rax
movl (%rax), %eax
movl %eax, -0x13a8(%rbp)
movl -0x13a8(%rbp), %esi
leaq -0x1380(%rbp), %rdi
callq 0x7d80
jmp 0xaa21
jmp 0xaa7d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x13a0(%rbp), %rdi
callq 0x6878
jmp 0xaca2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xac96
leaq -0x1380(%rbp), %rdi
callq 0x7fb0
movl %eax, -0x1704(%rbp)
jmp 0xaa71
movl -0x1704(%rbp), %eax
movl %eax, -0x13a8(%rbp)
movslq -0x13a8(%rbp), %rsi
leaq -0x1380(%rbp), %rdi
callq 0xdbd0
movq %rax, -0x1710(%rbp)
jmp 0xaa99
movq -0x1710(%rbp), %rdi
callq 0xdc10
movw %ax, -0x1712(%rbp)
jmp 0xaaae
movw -0x1712(%rbp), %ax
movw %ax, -0x13aa(%rbp)
movl -0x1360(%rbp), %esi
leaq -0x1380(%rbp), %rdi
callq 0x8240
jmp 0xaad0
movl -0x135c(%rbp), %esi
leaq -0x1380(%rbp), %rdi
callq 0x8370
jmp 0xaae4
movl -0x13a8(%rbp), %eax
movl -0x1360(%rbp), %ecx
subl %ecx, %eax
sete -0x13ab(%rbp)
movzbl -0x13ab(%rbp), %edx
andl $0x1, %edx
leaq -0x13b4(%rbp), %rdi
leaq -0xbf8(%rbp), %rsi
callq 0x8530
jmp 0xab18
movzbl -0x13ab(%rbp), %esi
andl $0x1, %esi
leaq -0xe00(%rbp), %rdi
callq 0x8950
movl %eax, -0x1718(%rbp)
jmp 0xab36
movl -0x1718(%rbp), %eax
movl %eax, -0x13b8(%rbp)
leaq -0x13c0(%rbp), %rdi
callq 0xdc30
testb $0x1, -0x13ab(%rbp)
je 0xabde
leaq -0x13b4(%rbp), %rdi
callq 0xdd00
movq %rax, -0x1720(%rbp)
jmp 0xab70
movq -0x1720(%rbp), %rcx
leaq -0x13c8(%rbp), %rdi
leaq -0x1380(%rbp), %rsi
leaq -0x135c(%rbp), %rdx
leaq -0x13b8(%rbp), %r8
callq 0xdc60
jmp 0xab9a
leaq -0x13c0(%rbp), %rdi
leaq -0x13c8(%rbp), %rsi
callq 0xdd20
leaq -0x13c8(%rbp), %rdi
callq 0xdd80
jmp 0xac2e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x13c0(%rbp), %rdi
callq 0xdf60
jmp 0xac96
leaq -0x13d0(%rbp), %rdi
leaq -0x1380(%rbp), %rsi
leaq -0x13a8(%rbp), %rdx
leaq -0x13aa(%rbp), %rcx
leaq -0x135c(%rbp), %r8
leaq -0x13b8(%rbp), %r9
callq 0xdde0
jmp 0xac0f
leaq -0x13c0(%rbp), %rdi
leaq -0x13d0(%rbp), %rsi
callq 0xde80
leaq -0x13d0(%rbp), %rdi
callq 0xdee0
leaq -0x13c0(%rbp), %rdi
callq 0xdf40
movq %rax, %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movl %eax, -0x1724(%rbp)
jmp 0xac4e
movl -0x1724(%rbp), %eax
movl %eax, -0x13d4(%rbp)
movl -0x13a8(%rbp), %edi
movl -0x13d4(%rbp), %esi
callq 0x8f10
jmp 0xac6d
leaq -0x13c0(%rbp), %rdi
callq 0xdf60
leaq -0x1380(%rbp), %rdi
callq 0xca90
leaq -0x1358(%rbp), %rdi
callq 0x6878
jmp 0xaf4a
leaq -0x1380(%rbp), %rdi
callq 0xca90
leaq -0x1358(%rbp), %rdi
callq 0x6878
movl -0x1cc(%rbp), %eax
movl %eax, -0x1728(%rbp)
movl $0x3, %ecx
cmpl %ecx, %eax
jne 0xad2d
movq -0x1c8(%rbp), %rdi
movq %rdi, -0x1730(%rbp)
callq 0x6510
movq %rax, %rsi
leaq -0x1400(%rbp), %rdi
callq 0xdfd0
movq -0x1730(%rbp), %rdi
callq 0x61a0
movq 0x48298(%rip), %rdi     # 0x52f90
leaq -0x1a0(%rbp), %rsi
callq 0x7930
jmp 0xad06
movl $0x0, -0x4(%rbp)
movl $0x1, -0x13e4(%rbp)
leaq -0x1400(%rbp), %rdi
callq 0xe010
callq 0x66c0
jmp 0xaf43
movl -0x1728(%rbp), %eax
movl $0x2, %ecx
cmpl %ecx, %eax
jne 0xae14
movq -0x1c8(%rbp), %rdi
callq 0x61a0
movq %rax, -0x13f0(%rbp)
movq 0x48286(%rip), %rdi     # 0x52fe0
leaq 0x2bdd6(%rip), %rsi     # 0x36b37
callq 0x63e0
movq %rax, -0x1738(%rbp)
jmp 0xad6f
movq -0x1738(%rbp), %rdi
leaq 0x48843(%rip), %rsi     # 0x535c0
callq 0x63b0
movq %rax, -0x1740(%rbp)
jmp 0xad8b
movq -0x13f0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x1740(%rbp), %rdi
movq %rax, %rsi
callq 0x63e0
movq %rax, -0x1748(%rbp)
jmp 0xadb3
movq -0x1748(%rbp), %rdi
leaq 0x4881f(%rip), %rsi     # 0x535e0
callq 0x63b0
movq %rax, -0x1750(%rbp)
jmp 0xadcf
movq -0x1750(%rbp), %rdi
leaq 0x2bd74(%rip), %rsi     # 0x36b51
callq 0x63e0
jmp 0xade4
movq 0x481f5(%rip), %rdi     # 0x52fe0
leaq -0x1a0(%rbp), %rsi
callq 0x7930
jmp 0xadf9
movl $0x1, -0x4(%rbp)
movl $0x1, -0x13e4(%rbp)
callq 0x66c0
jmp 0xaf17
movl -0x1728(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xafd8
movq -0x1c8(%rbp), %rdi
callq 0x61a0
movq %rax, -0x13e0(%rbp)
movq 0x4819f(%rip), %rdi     # 0x52fe0
leaq 0x48778(%rip), %rsi     # 0x535c0
callq 0x63b0
movq %rax, -0x1758(%rbp)
jmp 0xae56
movq -0x13e0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq -0x1758(%rbp), %rdi
movq %rax, %rsi
callq 0x63e0
movq %rax, -0x1760(%rbp)
jmp 0xae7e
movq -0x1760(%rbp), %rdi
leaq 0x48754(%rip), %rsi     # 0x535e0
callq 0x63b0
movq %rax, -0x1768(%rbp)
jmp 0xae9a
movq -0x1768(%rbp), %rdi
leaq 0x2bcaa(%rip), %rsi     # 0x36b52
callq 0x63e0
jmp 0xaeaf
movl $0x1, -0x4(%rbp)
movl $0x1, -0x13e4(%rbp)
callq 0x66c0
jmp 0xaee0
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
callq 0x66c0
jmp 0xaef9
jmp 0xaf54
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
jmp 0xafd8
jmp 0xafd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
callq 0x66c0
jmp 0xaf19
jmp 0xaf54
jmp 0xafd8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x1c8(%rbp)
movl %eax, -0x1cc(%rbp)
leaq -0x1400(%rbp), %rdi
callq 0xe010
callq 0x66c0
jmp 0xaf45
jmp 0xaf54
jmp 0xafd8
movl $0x0, -0x13e4(%rbp)
leaq -0x11c0(%rbp), %rdi
callq 0xe030
leaq -0xff0(%rbp), %rdi
callq 0xe050
leaq -0xe00(%rbp), %rdi
callq 0xe070
leaq -0xbf8(%rbp), %rdi
callq 0xe0b0
leaq -0xa00(%rbp), %rdi
callq 0xe050
leaq -0x828(%rbp), %rdi
callq 0xe050
leaq -0x638(%rbp), %rdi
callq 0xe0b0
leaq -0x440(%rbp), %rdi
callq 0xe050
leaq -0x298(%rbp), %rdi
callq 0xe0f0
leaq -0x1a0(%rbp), %rdi
callq 0xe110
movl -0x4(%rbp), %eax
addq $0x1770, %rsp           # imm = 0x1770
popq %rbp
retq
leaq -0x11c0(%rbp), %rdi
callq 0xe030
leaq -0xff0(%rbp), %rdi
callq 0xe050
leaq -0xe00(%rbp), %rdi
callq 0xe070
leaq -0xbf8(%rbp), %rdi
callq 0xe0b0
leaq -0xa00(%rbp), %rdi
callq 0xe050
leaq -0x828(%rbp), %rdi
callq 0xe050
leaq -0x638(%rbp), %rdi
callq 0xe0b0
leaq -0x440(%rbp), %rdi
callq 0xe050
leaq -0x298(%rbp), %rdi
callq 0xe0f0
leaq -0x1a0(%rbp), %rdi
callq 0xe110
movq -0x1c8(%rbp), %rdi
callq 0x6750
movq %rax, %rdi
callq 0xca80
nopw %cs:(%rax,%rax)
nop