// File: /workspace/github_cpp_makefile_star2_O1/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
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa48, %rsp            # imm = 0xA48
movq %rsi, %rbp
movl %edi, %ebx
leaq 0x4a0(%rsp), %r14
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq 0x18dbe(%rip), %rsi     # 0x20388
leaq 0x720(%rsp), %rdi
leaq 0x490(%rsp), %rdx
callq 0x9c8e
movq 0x490(%rsp), %rdi
cmpq %r14, %rdi
je 0x75fc
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x130(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xf49f(%rip), %rsi      # 0x16aae
leaq 0xf49c(%rip), %rdx      # 0x16ab2
leaq 0x120(%rsp), %rdi
callq 0xe47e
leaq 0x210(%rsp), %rdi
movw $0x0, -0x8(%rdi)
leaq 0x220(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0xf46a(%rip), %rsi      # 0x16aae
leaq 0xf467(%rip), %rdx      # 0x16ab2
callq 0xe47e
leaq 0x490(%rsp), %rdi
leaq 0x208(%rsp), %rsi
movl $0x1, %edx
callq 0xa002
leaq 0x18d37(%rip), %rcx     # 0x203a8
leaq 0x8b0(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x120(%rsp), %rdx
leaq 0x490(%rsp), %r8
xorl %r9d, %r9d
callq 0xa1d6
leaq 0x17fa0(%rip), %rax     # 0x1f640
movq %rax, 0x8b0(%rsp)
leaq 0x4c8(%rsp), %rdi
callq 0xc0ea
leaq 0x490(%rsp), %rdi
callq 0xc15e
movq 0x210(%rsp), %rdi
cmpq %r15, %rdi
je 0x76df
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x76fc
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x120(%rsp), %rdi
movq %r14, (%rdi)
leaq 0xf3a5(%rip), %rsi      # 0x16ab3
leaq 0xf3a2(%rip), %rdx      # 0x16ab7
callq 0xe47e
leaq 0x238(%rsp), %rdi
movw $0x7001, -0x30(%rdi)    # imm = 0x7001
movq %r15, -0x28(%rdi)
movq $0x0, -0x20(%rdi)
movb $0x0, -0x18(%rdi)
movw $0x0, -0x8(%rdi)
leaq 0x248(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xf361(%rip), %rsi      # 0x16ab3
leaq 0xf35e(%rip), %rdx      # 0x16ab7
callq 0xe47e
leaq 0x490(%rsp), %rdi
leaq 0x208(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
xorl %eax, %eax
leaq 0x650(%rsp), %r9
movl %eax, (%r9)
movl %eax, (%rsp)
leaq 0x18c39(%rip), %rcx     # 0x203c8
leaq 0x978(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x120(%rsp), %rdx
leaq 0x490(%rsp), %r8
callq 0xa03e
leaq 0x4c8(%rsp), %rdi
callq 0xc0ea
leaq 0x490(%rsp), %rdi
callq 0xc15e
movq $-0x50, %r15
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0x77eb
movq (%r12), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r12
addq $0x28, %r15
jne 0x77d5
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x7812
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x660(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xf073(%rip), %rsi      # 0x16899
leaq 0xf074(%rip), %rdx      # 0x168a1
leaq 0x650(%rsp), %rdi
callq 0xe47e
leaq 0x138(%rsp), %r14
movw $0x6801, -0x18(%r14)    # imm = 0x6801
movq %r14, -0x10(%r14)
movq $0x0, -0x8(%r14)
movb $0x0, (%r14)
movw $0x0, 0x10(%r14)
leaq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0xf01e(%rip), %rsi      # 0x16899
leaq 0xf01f(%rip), %rdx      # 0x168a1
callq 0xe47e
leaq 0x208(%rsp), %rdi
leaq 0x120(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
leaq 0x590(%rsp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movl $0x0, (%rsp)
leaq 0x18b21(%rip), %rcx     # 0x203e8
leaq 0x490(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x650(%rsp), %rdx
leaq 0x208(%rsp), %r8
leaq 0x580(%rsp), %r9
callq 0xa0ac
movl %ebx, 0x8c(%rsp)
movq 0x580(%rsp), %rdi
cmpq %r15, %rdi
je 0x7918
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x240(%rsp), %rdi
callq 0xc0ea
leaq 0x208(%rsp), %rdi
callq 0xc15e
movq $-0x50, %rbx
movq -0x10(%r13), %rdi
cmpq %rdi, %r13
je 0x794e
movq (%r13), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r13
addq $0x28, %rbx
jne 0x7939
movq 0x650(%rsp), %rdi
cmpq %r12, %rdi
je 0x7975
movq 0x660(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x580(%rsp), %rdi
movq %r15, (%rdi)
leaq 0xf131(%rip), %rsi      # 0x16ab8
leaq 0xf130(%rip), %rdx      # 0x16abe
callq 0xe47e
leaq 0x150(%rsp), %rdi
movw $0x6601, -0x30(%rdi)    # imm = 0x6601
movq %r14, -0x28(%rdi)
movq $0x0, -0x20(%rdi)
movb $0x0, -0x18(%rdi)
movw $0x0, -0x8(%rdi)
leaq 0x160(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xf0ed(%rip), %rsi      # 0x16ab8
leaq 0xf0ec(%rip), %rdx      # 0x16abe
callq 0xe47e
leaq 0x208(%rsp), %rdi
leaq 0x120(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
xorl %eax, %eax
leaq 0x3c0(%rsp), %r9
movl %eax, (%r9)
movl %eax, (%rsp)
leaq 0x18a00(%rip), %rcx     # 0x20408
leaq 0x650(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x580(%rsp), %rdx
leaq 0x208(%rsp), %r8
callq 0xa03e
leaq 0x240(%rsp), %rdi
callq 0xc0ea
leaq 0x208(%rsp), %rdi
callq 0xc15e
movq $-0x50, %rbx
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0x7a64
movq (%r12), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r12
addq $0x28, %rbx
jne 0x7a4e
movq 0x580(%rsp), %rdi
cmpq %r15, %rdi
je 0x7a8b
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x3d0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0xf021(%rip), %rsi      # 0x16abf
leaq 0xf026(%rip), %rdx      # 0x16acb
leaq 0x3c0(%rsp), %rdi
callq 0xe47e
leaq 0x150(%rsp), %rdi
movw $0x4301, -0x30(%rdi)    # imm = 0x4301
movq %r14, -0x28(%rdi)
movq $0x0, -0x20(%rdi)
movb $0x0, -0x18(%rdi)
movw $0x0, -0x8(%rdi)
leaq 0x160(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xefd5(%rip), %rsi      # 0x16abf
leaq 0xefda(%rip), %rdx      # 0x16acb
callq 0xe47e
leaq 0x208(%rsp), %rdi
leaq 0x120(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
xorl %eax, %eax
leaq 0x2f8(%rsp), %r9
movl %eax, (%r9)
movl %eax, (%rsp)
leaq 0x18901(%rip), %rcx     # 0x20428
leaq 0x580(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x3c0(%rsp), %rdx
leaq 0x208(%rsp), %r8
callq 0xa03e
leaq 0x240(%rsp), %rdi
callq 0xc0ea
leaq 0x208(%rsp), %rdi
callq 0xc15e
movq $-0x50, %rbx
movq -0x10(%r12), %rdi
cmpq %rdi, %r12
je 0x7b83
movq (%r12), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r12
addq $0x28, %rbx
jne 0x7b6d
movq 0x3c0(%rsp), %rdi
cmpq %r15, %rdi
je 0x7baa
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x308(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xee77(%rip), %rsi      # 0x16a34
leaq 0xee75(%rip), %rdx      # 0x16a39
leaq 0x2f8(%rsp), %rdi
callq 0xe47e
leaq 0x3d8(%rsp), %r12
movw $0x6f01, -0x18(%r12)    # imm = 0x6F01
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movw $0x0, 0x10(%r12)
leaq 0x3f0(%rsp), %rdi
leaq 0x400(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0xee1d(%rip), %rsi      # 0x16a34
leaq 0xee1b(%rip), %rdx      # 0x16a39
callq 0xe47e
leaq 0x120(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
leaq 0x28(%rsp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movl $0x0, (%rsp)
leaq 0x187e5(%rip), %rcx     # 0x20448
leaq 0x208(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x2f8(%rsp), %rdx
leaq 0x120(%rsp), %r8
leaq 0x18(%rsp), %r9
callq 0xa0ac
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0x7ca4
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x158(%rsp), %rdi
callq 0xc0ea
leaq 0x120(%rsp), %rdi
callq 0xc15e
movq $-0x50, %rbx
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x7cd9
movq (%r15), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r15
addq $0x28, %rbx
jne 0x7cc5
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0x7d00
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
movq %rax, (%rdi)
leaq 0xedb8(%rip), %rsi      # 0x16acc
leaq 0xedba(%rip), %rdx      # 0x16ad5
callq 0xe47e
leaq 0x310(%rsp), %r15
movw $0x6d01, -0x18(%r15)    # imm = 0x6D01
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movw $0x0, 0x10(%r15)
leaq 0x328(%rsp), %rdi
leaq 0x338(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xed6b(%rip), %rsi      # 0x16acc
leaq 0xed6d(%rip), %rdx      # 0x16ad5
callq 0xe47e
leaq 0x3c0(%rsp), %rdi
leaq 0x2f8(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
xorps %xmm0, %xmm0
leaq 0x90(%rsp), %r9
movaps %xmm0, (%r9)
movq $0x0, 0x10(%r9)
leaq 0x186c3(%rip), %rcx     # 0x20468
leaq 0x120(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x18(%rsp), %rdx
leaq 0x3c0(%rsp), %r8
leaq 0x28(%rsp), %r15
callq 0xa15a
leaq 0x90(%rsp), %rdi
callq 0x8df0
leaq 0x3f8(%rsp), %rdi
callq 0xc0ea
leaq 0x3c0(%rsp), %rdi
callq 0xc15e
movq $-0x50, %rbx
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x7e0e
movq (%r14), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r14
addq $0x28, %rbx
jne 0x7dfa
movq 0x18(%rsp), %rdi
cmpq %r15, %rdi
je 0x7e2f
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0xa0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xec87(%rip), %rsi      # 0x16ac9
leaq 0xec82(%rip), %rdx      # 0x16acb
leaq 0x90(%rsp), %rdi
callq 0xe47e
leaq 0x30(%rsp), %r12
movw $0x6901, -0x18(%r12)    # imm = 0x6901
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movw $0x0, 0x10(%r12)
leaq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0xec36(%rip), %rsi      # 0x16ac9
leaq 0xec31(%rip), %rdx      # 0x16acb
callq 0xe47e
leaq 0x2f8(%rsp), %rdi
leaq 0x18(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
xorl %eax, %eax
leaq 0xe0(%rsp), %r9
movl %eax, (%r9)
movl %eax, (%rsp)
leaq 0x185bb(%rip), %rcx     # 0x20488
leaq 0x3c0(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0x90(%rsp), %rdx
leaq 0x2f8(%rsp), %r8
callq 0xa03e
leaq 0x330(%rsp), %rdi
callq 0xc0ea
leaq 0x2f8(%rsp), %rdi
callq 0xc15e
movq $-0x50, %rbx
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x7f27
movq (%r15), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r15
addq $0x28, %rbx
jne 0x7f13
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x7f4e
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0xf0(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0xeb75(%rip), %rsi      # 0x16ad6
leaq 0xeb75(%rip), %rdx      # 0x16add
leaq 0xe0(%rsp), %rdi
callq 0xe47e
leaq 0xa8(%rsp), %r12
movw $0x7601, -0x18(%r12)    # imm = 0x7601
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
movw $0x0, 0x10(%r12)
leaq 0xc0(%rsp), %rdi
leaq 0xd0(%rsp), %r15
movq %r15, -0x10(%r15)
leaq 0xeb1b(%rip), %rsi      # 0x16ad6
leaq 0xeb1b(%rip), %rdx      # 0x16add
callq 0xe47e
leaq 0x18(%rsp), %rdi
leaq 0x90(%rsp), %rsi
movl $0x2, %edx
callq 0xa002
leaq 0x184c3(%rip), %rcx     # 0x204a8
leaq 0x2f8(%rsp), %rdi
leaq 0x720(%rsp), %rsi
leaq 0xe0(%rsp), %rdx
leaq 0x18(%rsp), %r8
xorl %r9d, %r9d
callq 0xa1d6
leaq 0x50(%rsp), %rdi
callq 0xc0ea
leaq 0x18(%rsp), %rdi
callq 0xc15e
movq $-0x50, %rbx
movq -0x10(%r15), %rdi
cmpq %rdi, %r15
je 0x8039
movq (%r15), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r15
addq $0x28, %rbx
jne 0x8025
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x8060
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x720(%rsp), %rdi
movl 0x8c(%rsp), %esi
movq %rbp, %rdx
callq 0xa228
leaq 0x28(%rsp), %rbx
leaq 0x2f8(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
leaq 0x184e7(%rip), %rcx     # 0x20578
xchgb %al, 0x8(%rcx)
leaq 0x490(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x83c3
leaq 0x650(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x8422
leaq 0x580(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x847e
leaq 0x18(%rsp), %rdi
movq %rbx, (%rdi)
movq 0x558(%rsp), %rsi
movq 0x560(%rsp), %rdx
addq %rsi, %rdx
callq 0xe3ee
movl 0x718(%rsp), %ebx
movl 0x648(%rsp), %ebp
leaq 0x978(%rsp), %r15
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movl %eax, %r14d
movzwl 0xc8(%r15), %r12d
leaq 0x110(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x18(%rsp), %rsi
movq 0x20(%rsp), %rdx
addq %rsi, %rdx
leaq 0x100(%rsp), %rdi
callq 0xe3ee
movb $0x0, 0x16(%rsp)
testb %r14b, %r14b
je 0x815b
movw %r12w, 0x14(%rsp)
movb $0x1, 0x16(%rsp)
leaq 0x90(%rsp), %rdi
leaq 0x100(%rsp), %rsi
leaq 0x14(%rsp), %rdx
callq 0x6448
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x8192
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x3c0(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x81be
movl 0x488(%rsp), %r14d
leaq 0x90(%rsp), %rdi
movl %r14d, %esi
callq 0x676e
jmp 0x81ce
leaq 0x90(%rsp), %rdi
callq 0x6904
movl %eax, %r14d
movslq %r14d, %rsi
movq 0x90(%rsp), %rax
movq 0x98(%rsp), %rcx
subq %rax, %rcx
sarq $0x3, %rcx
movabsq $-0x3333333333333333, %rdx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rdx
cmpq %rsi, %rdx
jbe 0x84d8
leaq (%rsi,%rsi,4), %rcx
movzwl 0x20(%rax,%rcx,8), %r13d
leaq 0x90(%rsp), %rdi
movl %ebp, %esi
callq 0x6add
leaq 0x90(%rsp), %rdi
movl %ebx, %esi
callq 0x6c54
xorl %edx, %edx
cmpl %ebp, %r14d
sete %dl
leaq 0xe0(%rsp), %rdi
leaq 0x208(%rsp), %rsi
callq 0x6d8b
xorl %esi, %esi
cmpl %ebp, %r14d
sete %sil
leaq 0x120(%rsp), %rdi
callq 0x7089
movl %eax, %r12d
cmpl %ebp, %r14d
jne 0x82a1
movl $0x70, %edi
callq 0x5330
movq %rax, %r15
movl 0xe0(%rsp), %ebp
leaq 0x90(%rsp), %rsi
movq %rax, %rdi
xorl %edx, %edx
movl %ebx, %ecx
movl %r12d, %r8d
callq 0xfe5e
leaq 0x17974(%rip), %rax     # 0x1fc08
addq $0x10, %rax
movq %rax, (%r15)
movl %ebp, 0x68(%r15)
jmp 0x82cb
movl $0x120, %edi            # imm = 0x120
callq 0x5330
movq %rax, %r15
movzwl %r13w, %ecx
leaq 0x90(%rsp), %rsi
movq %rax, %rdi
movl %r14d, %edx
movl %ebx, %r8d
movl %r12d, %r9d
callq 0x10158
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movl %r14d, %edi
movl %eax, %esi
callq 0x74d4
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
leaq 0x90(%rsp), %rdi
callq 0x9b3a
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x8310
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x5340
xorl %ebx, %ebx
leaq 0x2f8(%rsp), %rdi
callq 0xa2d0
leaq 0x3c0(%rsp), %rdi
callq 0xa2d0
leaq 0x1760d(%rip), %rax     # 0x1f940
leaq 0x1e8(%rsp), %rdi
movq %rax, -0xc8(%rdi)
callq 0x8df0
leaq 0x120(%rsp), %rdi
callq 0xa2d0
leaq 0x208(%rsp), %rdi
callq 0xa32c
leaq 0x580(%rsp), %rdi
callq 0xa2d0
leaq 0x650(%rsp), %rdi
callq 0xa2d0
leaq 0x490(%rsp), %rdi
callq 0xa32c
leaq 0x978(%rsp), %rdi
callq 0xa2d0
leaq 0x8b0(%rsp), %rdi
callq 0xa2d0
leaq 0x720(%rsp), %rdi
callq 0xa362
movl %ebx, %eax
addq $0xa48, %rsp            # imm = 0xA48
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movl $0x10, %edi
callq 0x51a0
movq %rax, %r15
leaq 0x18(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0xe6ff(%rip), %rsi      # 0x16ade
leaq 0xe715(%rip), %rdx      # 0x16afb
callq 0xe47e
movb $0x1, %bpl
leaq 0x18(%rsp), %rsi
movq %r15, %rdi
callq 0x5410
leaq 0x170fe(%rip), %rax     # 0x1f500
movq %rax, (%r15)
xorl %ebp, %ebp
leaq 0x1702a(%rip), %rsi     # 0x1f438
movq 0x17b6b(%rip), %rdx     # 0x1ff80
movq %r15, %rdi
callq 0x55d0
jmp 0x84d8
movl $0x10, %edi
callq 0x51a0
movq %rax, %r15
leaq 0x18(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0xe6be(%rip), %rsi      # 0x16afc
leaq 0xe6d2(%rip), %rdx      # 0x16b17
callq 0xe47e
movb $0x1, %bpl
leaq 0x18(%rsp), %rsi
movq %r15, %rdi
callq 0x5410
leaq 0x1709f(%rip), %rax     # 0x1f500
movq %rax, (%r15)
xorl %ebp, %ebp
leaq 0x16fcb(%rip), %rsi     # 0x1f438
movq 0x17b0c(%rip), %rdx     # 0x1ff80
movq %r15, %rdi
callq 0x55d0
jmp 0x84d8
movl $0x10, %edi
callq 0x51a0
movq %rax, %r15
leaq 0x18(%rsp), %rdi
movq %rbx, (%rdi)
leaq 0xe67e(%rip), %rsi      # 0x16b18
leaq 0xe698(%rip), %rdx      # 0x16b39
callq 0xe47e
movb $0x1, %bpl
leaq 0x18(%rsp), %rsi
movq %r15, %rdi
callq 0x5410
leaq 0x17043(%rip), %rax     # 0x1f500
movq %rax, (%r15)
xorl %ebp, %ebp
leaq 0x16f6f(%rip), %rsi     # 0x1f438
movq 0x17ab0(%rip), %rdx     # 0x1ff80
movq %r15, %rdi
callq 0x55d0
leaq 0xe947(%rip), %rdi      # 0x16e26
xorl %eax, %eax
callq 0x5520
movq %rdx, %r14
movq %rax, %rbx
movl $0x120, %esi            # imm = 0x120
jmp 0x84fe
movq %rdx, %r14
movq %rax, %rbx
movl $0x70, %esi
movq %r15, %rdi
callq 0x5340
jmp 0x8510
jmp 0x850a
movq %rdx, %r14
movq %rax, %rbx
xorl %r15d, %r15d
jmp 0x8be5
jmp 0x8520
jmp 0x8544
jmp 0x8520
jmp 0x8544
movq %rdx, %r14
movq %rax, %rbx
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x854d
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x854d
movq %rdx, %r14
movq %rax, %rbx
movb $0x1, %bpl
testb %bpl, %bpl
je 0x8c24
movq %r15, %rdi
callq 0x5270
jmp 0x8c24
jmp 0x8bf5
jmp 0x8bf5
jmp 0x8bf5
movq %rdx, %r14
movq %rax, %rbx
movq 0x100(%rsp), %rdi
cmpq %r15, %rdi
je 0x8c08
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x8c08
movq %rdx, %r14
movq %rax, %rbx
jmp 0x8c08
jmp 0x85ab
movq %rdx, %r14
movq %rax, %rbx
jmp 0x8c24
movq %rax, %rbx
leaq 0x50(%rsp), %rdi
callq 0xc0ea
leaq 0x18(%rsp), %rdi
callq 0xc15e
jmp 0x85d2
movq %rax, %rbx
xorl %r12d, %r12d
movq 0xc0(%rsp,%r12), %rdi
leaq (%r15,%r12), %rax
cmpq %rdi, %rax
je 0x85f1
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r12
cmpq $-0x50, %r12
jne 0x85d5
jmp 0x861d
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r12, %rdi
je 0x861d
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0xe0(%rsp), %rdi
cmpq %r14, %rdi
je 0x863f
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x863f
movq %rax, %rbx
leaq 0x3c0(%rsp), %rdi
callq 0xa2d0
jmp 0x86d7
movq %rax, %rbx
leaq 0x330(%rsp), %rdi
callq 0xc0ea
leaq 0x2f8(%rsp), %rdi
callq 0xc15e
jmp 0x8673
movq %rax, %rbx
xorl %r12d, %r12d
movq 0x48(%rsp,%r12), %rdi
leaq (%r15,%r12), %rax
cmpq %rdi, %rax
je 0x868f
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r12
cmpq $-0x50, %r12
jne 0x8676
jmp 0x86b5
movq %rax, %rbx
movq 0x20(%rsp), %rdi
cmpq %r12, %rdi
je 0x86b5
movq 0x30(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x90(%rsp), %rdi
cmpq %r14, %rdi
je 0x86d7
movq 0xa0(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x86d7
movq %rax, %rbx
leaq 0x17262(%rip), %rax     # 0x1f940
leaq 0x1e8(%rsp), %rdi
movq %rax, -0xc8(%rdi)
callq 0x8df0
leaq 0x120(%rsp), %rdi
callq 0xa2d0
leaq 0x208(%rsp), %rdi
callq 0xa32c
leaq 0x580(%rsp), %rdi
callq 0xa2d0
leaq 0x650(%rsp), %rdi
callq 0xa2d0
leaq 0x490(%rsp), %rdi
callq 0xa32c
leaq 0x978(%rsp), %rdi
callq 0xa2d0
leaq 0x8b0(%rsp), %rdi
callq 0xa2d0
leaq 0x720(%rsp), %rdi
callq 0xa362
movq %rbx, %rdi
callq 0x5600
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x8df0
leaq 0x3f8(%rsp), %rdi
callq 0xc0ea
leaq 0x3c0(%rsp), %rdi
callq 0xc15e
jmp 0x8791
movq %rax, %rbx
xorl %r15d, %r15d
movq 0x328(%rsp,%r15), %rdi
leaq (%r14,%r15), %rax
cmpq %rdi, %rax
je 0x87b0
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r15
cmpq $-0x50, %r15
jne 0x8794
jmp 0x87dc
movq %rax, %rbx
movq 0x300(%rsp), %rdi
cmpq %r15, %rdi
je 0x87dc
movq 0x310(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x86ff
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x86ff
movq %rax, %rbx
jmp 0x86ff
movq %rax, %rbx
movq 0x18(%rsp), %rdi
cmpq %r12, %rdi
je 0x8823
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x158(%rsp), %rdi
callq 0xc0ea
leaq 0x120(%rsp), %rdi
callq 0xc15e
jmp 0x8842
movq %rax, %rbx
xorl %r12d, %r12d
movq 0x3f0(%rsp,%r12), %rdi
leaq (%r15,%r12), %rax
cmpq %rdi, %rax
je 0x8861
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r12
cmpq $-0x50, %r12
jne 0x8845
jmp 0x888d
movq %rax, %rbx
movq 0x3c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x888d
movq 0x3d8(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x2f8(%rsp), %rdi
cmpq %r14, %rdi
je 0x870c
movq 0x308(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x870c
movq %rax, %rbx
jmp 0x870c
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0xc0ea
leaq 0x208(%rsp), %rdi
callq 0xc15e
jmp 0x88dd
movq %rax, %rbx
xorl %r14d, %r14d
movq 0x150(%rsp,%r14), %rdi
leaq (%r12,%r14), %rax
cmpq %rdi, %rax
je 0x88fc
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r14
cmpq $-0x50, %r14
jne 0x88e0
jmp 0x8928
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r14, %rdi
je 0x8928
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x3c0(%rsp), %rdi
cmpq %r15, %rdi
je 0x8719
movq 0x3d0(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x8719
movq %rax, %rbx
jmp 0x8719
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0xc0ea
leaq 0x208(%rsp), %rdi
callq 0xc15e
jmp 0x8978
movq %rax, %rbx
xorl %r14d, %r14d
movq 0x150(%rsp,%r14), %rdi
leaq (%r12,%r14), %rax
cmpq %rdi, %rax
je 0x8997
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r14
cmpq $-0x50, %r14
jne 0x897b
jmp 0x89c3
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r14, %rdi
je 0x89c3
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x580(%rsp), %rdi
cmpq %r15, %rdi
je 0x8726
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x8726
movq %rax, %rbx
jmp 0x8726
movq %rax, %rbx
movq 0x580(%rsp), %rdi
cmpq %r15, %rdi
je 0x8a11
movq 0x590(%rsp), %rsi
incq %rsi
callq 0x5340
leaq 0x240(%rsp), %rdi
callq 0xc0ea
leaq 0x208(%rsp), %rdi
callq 0xc15e
jmp 0x8a30
movq %rax, %rbx
xorl %r14d, %r14d
movq 0x150(%rsp,%r14), %rdi
leaq (%r14,%r13), %rax
cmpq %rdi, %rax
je 0x8a4f
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r14
cmpq $-0x50, %r14
jne 0x8a33
jmp 0x8a7b
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r14, %rdi
je 0x8a7b
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x650(%rsp), %rdi
cmpq %r12, %rdi
je 0x8733
movq 0x660(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x8733
movq %rax, %rbx
jmp 0x8733
movq %rax, %rbx
leaq 0x4c8(%rsp), %rdi
callq 0xc0ea
leaq 0x490(%rsp), %rdi
callq 0xc15e
jmp 0x8acb
movq %rax, %rbx
xorl %r15d, %r15d
movq 0x238(%rsp,%r15), %rdi
leaq (%r12,%r15), %rax
cmpq %rdi, %rax
je 0x8aea
movq (%rax), %rsi
incq %rsi
callq 0x5340
addq $-0x28, %r15
cmpq $-0x50, %r15
jne 0x8ace
jmp 0x8b16
movq %rax, %rbx
movq 0x210(%rsp), %rdi
cmpq %r15, %rdi
je 0x8b16
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x5340
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x8740
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x8740
movq %rax, %rbx
jmp 0x8740
movq %rax, %rbx
leaq 0x4c8(%rsp), %rdi
callq 0xc0ea
leaq 0x490(%rsp), %rdi
callq 0xc15e
jmp 0x8b66
movq %rax, %rbx
movq 0x210(%rsp), %rdi
cmpq %r15, %rdi
je 0x8b88
movq 0x220(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x8b88
movq %rax, %rbx
movq 0x120(%rsp), %rdi
cmpq %r14, %rdi
je 0x874d
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x874d
movq %rax, %rbx
jmp 0x874d
movq %rax, %rbx
movq 0x490(%rsp), %rdi
cmpq %r14, %rdi
je 0x875a
movq 0x4a0(%rsp), %rsi
incq %rsi
callq 0x5340
jmp 0x875a
movq %rdx, %r14
movq %rax, %rbx
testq %r15, %r15
je 0x8bfb
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x8bfb
movq %rdx, %r14
movq %rax, %rbx
leaq 0x90(%rsp), %rdi
callq 0x9b3a
movq 0x18(%rsp), %rdi
leaq 0x28(%rsp), %rax
cmpq %rax, %rdi
je 0x8c24
movq 0x28(%rsp), %rsi
incq %rsi
callq 0x5340
cmpl $0x3, %r14d
jne 0x8c7c
movq %rbx, %rdi
callq 0x5400
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movq %rax, %rsi
callq 0x5430
leaq 0x16bd7(%rip), %rax     # 0x1f820
movq %rax, (%r14)
movq %rbx, %rdi
callq 0x5160
movq 0x1733d(%rip), %rsi     # 0x1ff98
leaq 0x720(%rsp), %rdi
callq 0x8e4c
leaq 0x18(%rsp), %rdi
callq 0x5688
callq 0x5580
jmp 0x8310
cmpl $0x2, %r14d
jne 0x8d27
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
movq 0x17348(%rip), %rdi     # 0x1ffe0
leaq 0xde9b(%rip), %rsi      # 0x16b3a
movl $0x3, %edx
callq 0x53c0
movq 0x17818(%rip), %rsi     # 0x204c8
movq 0x17819(%rip), %rdx     # 0x204d0
movq 0x17322(%rip), %rdi     # 0x1ffe0
callq 0x53c0
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq %r14, %rdi
movq %rax, %rsi
callq 0x5320
movq 0x17807(%rip), %rsi     # 0x204e8
movq 0x17808(%rip), %rdx     # 0x204f0
movq %rax, %rdi
callq 0x53c0
leaq 0xde5d(%rip), %rsi      # 0x16b54
movl $0x2, %edx
movq %rax, %rdi
callq 0x53c0
movq 0x172d5(%rip), %rsi     # 0x1ffe0
leaq 0x720(%rsp), %rdi
callq 0x8e4c
movl $0x1, %ebx
callq 0x5580
jmp 0x8312
cmpl $0x1, %r14d
jne 0x8dd5
movq %rbx, %rdi
callq 0x5160
movq %rax, %rbx
movq 0x17785(%rip), %rsi     # 0x204c8
movq 0x17786(%rip), %rdx     # 0x204d0
movq 0x1728f(%rip), %rdi     # 0x1ffe0
callq 0x53c0
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq %r14, %rdi
movq %rax, %rsi
callq 0x5320
movq 0x17774(%rip), %rsi     # 0x204e8
movq 0x17775(%rip), %rdx     # 0x204f0
movq %rax, %rdi
callq 0x53c0
leaq 0xddcb(%rip), %rsi      # 0x16b55
movl $0x1, %edx
movq %rax, %rdi
callq 0x53c0
movl $0x1, %ebx
callq 0x5580
jmp 0x8312
jmp 0x8daa
jmp 0x8daa
movq %rax, %rbx
jmp 0x8dd5
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x5688
callq 0x5580
jmp 0x8dd5
movq %rax, %rbx
callq 0x5580
jmp 0x8dd5
movq %rax, %rbx
callq 0x5580
leaq 0x2f8(%rsp), %rdi
callq 0xa2d0
jmp 0x863f
movq %rax, %rdi
callq 0x9b2f
nop