// File: /workspace/github_cpp_makefile_star2_O2/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 %rbx
subq $0xa58, %rsp            # imm = 0xA58
movq %rsi, %rbx
movl %edi, %ebp
leaq 0x4b0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x188f7(%rip), %rsi     # 0x1f3a0
leaq 0x730(%rsp), %rdi
leaq 0x4a0(%rsp), %rdx
callq 0x86e6
leaq 0x4a0(%rsp), %rdi
callq 0x56b8
leaq 0xcfe1(%rip), %rsi      # 0x13ab3
leaq 0x110(%rsp), %rdi
leaq 0x8c0(%rsp), %rdx
callq 0x852c
leaq 0xcfc5(%rip), %rsi      # 0x13ab3
leaq 0x218(%rsp), %rdi
callq 0x88e8
leaq 0x4a0(%rsp), %rdi
leaq 0x218(%rsp), %rsi
pushq $0x1
popq %rdx
callq 0x88fe
leaq 0x188a6(%rip), %rcx     # 0x1f3c0
leaq 0x990(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x110(%rsp), %rdx
leaq 0x4a0(%rsp), %r8
callq 0x893a
leaq 0x4a0(%rsp), %rdi
callq 0x8952
leaq 0x220(%rsp), %rdi
callq 0x56b8
leaq 0x110(%rsp), %rdi
callq 0x56b8
leaq 0xcf4b(%rip), %rsi      # 0x13ab8
leaq 0x110(%rsp), %rdi
leaq 0x590(%rsp), %rdx
callq 0x852c
leaq 0x230(%rsp), %rax
movw $0x7001, -0x18(%rax)    # imm = 0x7001
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x240(%rsp), %rdi
leaq 0xcf0d(%rip), %rsi      # 0x13ab8
callq 0x88e8
leaq 0x4a0(%rsp), %rdi
leaq 0x218(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
leaq 0x660(%rsp), %r9
andl $0x0, (%r9)
andl $0x0, (%rsp)
leaq 0x18801(%rip), %rcx     # 0x1f3e0
leaq 0x8c0(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x110(%rsp), %rdx
leaq 0x4a0(%rsp), %r8
callq 0x8968
leaq 0x4a0(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x218, %rdi            # imm = 0x218
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x6c15
leaq 0x110(%rsp), %rdi
callq 0x56b8
leaq 0xcc5b(%rip), %rsi      # 0x1389e
leaq 0x660(%rsp), %rdi
leaq 0x308(%rsp), %rdx
callq 0x852c
leaq 0x128(%rsp), %r14
movw $0x6801, -0x18(%r14)    # imm = 0x6801
movq %r14, -0x10(%r14)
andq $0x0, -0x8(%r14)
movb $0x0, (%r14)
leaq 0x138(%rsp), %rdi
leaq 0xcc1b(%rip), %rsi      # 0x1389e
callq 0x88e8
leaq 0x218(%rsp), %rdi
leaq 0x110(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
leaq 0x5a0(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
andl $0x0, (%rsp)
leaq 0x18741(%rip), %rcx     # 0x1f400
leaq 0x4a0(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x660(%rsp), %rdx
leaq 0x218(%rsp), %r8
leaq 0x590(%rsp), %r9
callq 0x89c4
leaq 0x590(%rsp), %rdi
callq 0x56b8
leaq 0x218(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r15
leaq (%rsp,%r15), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x56b8
addq $-0x28, %r15
cmpq $-0x20, %r15
jne 0x6d0a
leaq 0x660(%rsp), %rdi
callq 0x56b8
leaq 0xcd85(%rip), %rsi      # 0x13abd
leaq 0x590(%rsp), %rdi
leaq 0x3d8(%rsp), %rdx
callq 0x852c
leaq 0x138(%rsp), %rdi
movw $0x6601, -0x28(%rdi)    # imm = 0x6601
movq %r14, -0x20(%rdi)
andq $0x0, -0x18(%rdi)
movb $0x0, -0x10(%rdi)
leaq 0xcd4e(%rip), %rsi      # 0x13abd
callq 0x88e8
leaq 0x218(%rsp), %rdi
leaq 0x110(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
leaq 0x308(%rsp), %r9
andl $0x0, (%r9)
andl $0x0, (%rsp)
leaq 0x1867d(%rip), %rcx     # 0x1f420
leaq 0x660(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x590(%rsp), %rdx
leaq 0x218(%rsp), %r8
callq 0x8968
leaq 0x218(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r15
leaq (%rsp,%r15), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x56b8
addq $-0x28, %r15
cmpq $-0x20, %r15
jne 0x6dd9
leaq 0x590(%rsp), %rdi
callq 0x56b8
leaq 0xccbd(%rip), %rsi      # 0x13ac4
leaq 0x308(%rsp), %rdi
leaq 0x80(%rsp), %rdx
callq 0x852c
leaq 0x138(%rsp), %rdi
movw $0x4301, -0x28(%rdi)    # imm = 0x4301
movq %r14, -0x20(%rdi)
andq $0x0, -0x18(%rdi)
movb $0x0, -0x10(%rdi)
leaq 0xcc86(%rip), %rsi      # 0x13ac4
callq 0x88e8
leaq 0x218(%rsp), %rdi
leaq 0x110(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
leaq 0x3d8(%rsp), %r9
andl $0x0, (%r9)
andl $0x0, (%rsp)
leaq 0x185ce(%rip), %rcx     # 0x1f440
leaq 0x590(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x308(%rsp), %rdx
leaq 0x218(%rsp), %r8
callq 0x8968
leaq 0x218(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x6ea8
leaq 0x308(%rsp), %rdi
callq 0x56b8
leaq 0xcb63(%rip), %rsi      # 0x13a39
leaq 0x3d8(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x852c
leaq 0x320(%rsp), %rax
movw $0x6f01, -0x18(%rax)    # imm = 0x6F01
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x330(%rsp), %rdi
leaq 0xcb28(%rip), %rsi      # 0x13a39
callq 0x88e8
leaq 0x110(%rsp), %rdi
leaq 0x308(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
leaq 0x90(%rsp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
andl $0x0, (%rsp)
leaq 0x18513(%rip), %rcx     # 0x1f460
leaq 0x218(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x3d8(%rsp), %rdx
leaq 0x110(%rsp), %r8
leaq 0x80(%rsp), %r9
callq 0x89c4
leaq 0x80(%rsp), %rdi
callq 0x56b8
leaq 0x110(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x308, %rdi            # imm = 0x308
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x6f98
leaq 0x3d8(%rsp), %rdi
callq 0x56b8
leaq 0xcb0b(%rip), %rsi      # 0x13ad1
leaq 0x80(%rsp), %rdi
leaq 0xf0(%rsp), %rdx
callq 0x852c
leaq 0x3f0(%rsp), %rax
movw $0x6d01, -0x18(%rax)    # imm = 0x6D01
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x400(%rsp), %rdi
leaq 0xcacd(%rip), %rsi      # 0x13ad1
callq 0x88e8
leaq 0x308(%rsp), %rdi
leaq 0x3d8(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
xorps %xmm0, %xmm0
leaq 0x30(%rsp), %r9
movaps %xmm0, (%r9)
andq $0x0, 0x10(%r9)
leaq 0x18447(%rip), %rcx     # 0x1f480
leaq 0x110(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x80(%rsp), %rdx
leaq 0x308(%rsp), %r8
callq 0x8a40
leaq 0x30(%rsp), %rdi
callq 0x7bf4
leaq 0x308(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x3d8, %rdi            # imm = 0x3D8
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7079
leaq 0x80(%rsp), %rdi
callq 0x56b8
leaq 0xca27(%rip), %rsi      # 0x13ace
leaq 0x30(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x852c
leaq 0x98(%rsp), %rax
movw $0x6901, -0x18(%rax)    # imm = 0x6901
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0xa8(%rsp), %rdi
leaq 0xc9ef(%rip), %rsi      # 0x13ace
callq 0x88e8
leaq 0x3d8(%rsp), %rdi
leaq 0x80(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
leaq 0xf0(%rsp), %r9
andl $0x0, (%r9)
andl $0x0, (%rsp)
leaq 0x1838d(%rip), %rcx     # 0x1f4a0
leaq 0x308(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0x30(%rsp), %rdx
leaq 0x3d8(%rsp), %r8
callq 0x8968
leaq 0x3d8(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x80, %rdi
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7146
leaq 0x30(%rsp), %rdi
callq 0x56b8
leaq 0xc96a(%rip), %rsi      # 0x13adb
leaq 0xf0(%rsp), %rdi
leaq 0x20(%rsp), %rdx
callq 0x852c
leaq 0x48(%rsp), %rax
movw $0x7601, -0x18(%rax)    # imm = 0x7601
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x58(%rsp), %rdi
leaq 0xc935(%rip), %rsi      # 0x13adb
callq 0x88e8
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rsi
pushq $0x2
popq %rdx
callq 0x88fe
leaq 0x182f9(%rip), %rcx     # 0x1f4c0
leaq 0x3d8(%rsp), %rdi
leaq 0x730(%rsp), %rsi
leaq 0xf0(%rsp), %rdx
leaq 0x80(%rsp), %r8
xorl %r9d, %r9d
callq 0x8ab6
leaq 0x80(%rsp), %rdi
callq 0x8952
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x30, %rdi
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7200
leaq 0xf0(%rsp), %rdi
callq 0x56b8
leaq 0x730(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0x8b02
leaq 0x3d8(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
leaq 0x18345(%rip), %rcx     # 0x1f590
xchgb %al, 0x8(%rcx)
leaq 0x4a0(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x74db
leaq 0x660(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x752f
leaq 0x590(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x7580
leaq 0x568(%rsp), %rsi
leaq 0x80(%rsp), %rdi
callq 0x5480
movl 0x728(%rsp), %eax
movl %eax, 0x14(%rsp)
movl 0x658(%rsp), %ebx
leaq 0x8c0(%rsp), %r14
movq (%r14), %rax
movq %r14, %rdi
callq *0x10(%rax)
movl %eax, %ebp
movzwl 0xc8(%r14), %r14d
leaq 0x1f8(%rsp), %rdi
leaq 0x80(%rsp), %rsi
callq 0x5480
movb $0x0, 0x1e(%rsp)
testb %bpl, %bpl
je 0x72fc
movw %r14w, 0x1c(%rsp)
movb $0x1, 0x1e(%rsp)
leaq 0x30(%rsp), %rdi
leaq 0x1f8(%rsp), %rsi
leaq 0x1c(%rsp), %rdx
callq 0x5e9f
leaq 0x1f8(%rsp), %rdi
callq 0x56b8
leaq 0x308(%rsp), %rdi
movq (%rdi), %rax
callq *0x10(%rax)
testb %al, %al
je 0x734d
movl 0x3d0(%rsp), %esi
movl %esi, 0x10(%rsp)
leaq 0x30(%rsp), %rdi
callq 0x6105
movl 0x10(%rsp), %eax
jmp 0x735b
leaq 0x30(%rsp), %rdi
callq 0x621d
movl %eax, 0x10(%rsp)
movslq %eax, %rsi
leaq 0x30(%rsp), %rdi
callq 0x8b86
movzwl 0x20(%rax), %eax
movw %ax, 0x1a(%rsp)
leaq 0x30(%rsp), %rdi
movl %ebx, %esi
callq 0x6366
movl 0x14(%rsp), %esi
leaq 0x30(%rsp), %rdi
callq 0x6412
movl 0x10(%rsp), %ebp
xorl %edx, %edx
cmpl %ebx, %ebp
sete %dl
leaq 0xf0(%rsp), %rdi
leaq 0x218(%rsp), %rsi
callq 0x64fd
xorl %esi, %esi
cmpl %ebx, %ebp
sete %sil
leaq 0x110(%rsp), %rdi
callq 0x6725
movl %eax, 0x2c(%rsp)
cmpl %ebx, %ebp
jne 0x73eb
leaq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x14(%rsp), %rdx
leaq 0xf0(%rsp), %rcx
leaq 0x2c(%rsp), %r8
callq 0x8ba4
jmp 0x740e
leaq 0x20(%rsp), %rdi
leaq 0x30(%rsp), %rsi
leaq 0x10(%rsp), %rdx
leaq 0x1a(%rsp), %rcx
leaq 0x14(%rsp), %r8
leaq 0x2c(%rsp), %r9
callq 0x8c0a
movq 0x20(%rsp), %r15
movq (%r15), %rax
movq %r15, %rdi
callq *0x10(%rax)
movl 0x10(%rsp), %edi
movl %eax, %esi
callq 0x6a0c
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
leaq 0x30(%rsp), %rdi
callq 0x85ce
leaq 0x80(%rsp), %rdi
callq 0x56b8
xorl %ebx, %ebx
leaq 0x3d8(%rsp), %rdi
callq 0x8c94
leaq 0x308(%rsp), %rdi
callq 0x8c94
leaq 0x110(%rsp), %rdi
callq 0x8cb4
leaq 0x218(%rsp), %rdi
callq 0x8cd8
leaq 0x590(%rsp), %rdi
callq 0x8c94
leaq 0x660(%rsp), %rdi
callq 0x8c94
leaq 0x4a0(%rsp), %rdi
callq 0x8cd8
leaq 0x8c0(%rsp), %rdi
callq 0x8c94
leaq 0x990(%rsp), %rdi
callq 0x8c94
leaq 0x730(%rsp), %rdi
callq 0x8cfc
movl %ebx, %eax
addq $0xa58, %rsp            # imm = 0xA58
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
pushq $0x10
popq %rdi
callq 0x51c0
movq %rax, %r15
leaq 0xc5f6(%rip), %rsi      # 0x13ae3
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x852c
movb $0x1, %bpl
leaq 0x80(%rsp), %rsi
movq %r15, %rdi
callq 0x85ae
xorl %ebp, %ebp
leaq 0x16ecd(%rip), %rsi     # 0x1e3e8
movq 0x17a56(%rip), %rdx     # 0x1ef78
movq %r15, %rdi
callq 0x55c0
jmp 0x75cf
pushq $0x10
popq %rdi
callq 0x51c0
movq %rax, %r15
leaq 0xc5c0(%rip), %rsi      # 0x13b01
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x852c
movb $0x1, %bpl
leaq 0x80(%rsp), %rsi
movq %r15, %rdi
callq 0x85ae
xorl %ebp, %ebp
leaq 0x16e79(%rip), %rsi     # 0x1e3e8
movq 0x17a02(%rip), %rdx     # 0x1ef78
movq %r15, %rdi
callq 0x55c0
jmp 0x75cf
pushq $0x10
popq %rdi
callq 0x51c0
movq %rax, %r15
leaq 0xc58b(%rip), %rsi      # 0x13b1d
leaq 0x80(%rsp), %rdi
leaq 0x30(%rsp), %rdx
callq 0x852c
movb $0x1, %bpl
leaq 0x80(%rsp), %rsi
movq %r15, %rdi
callq 0x85ae
xorl %ebp, %ebp
leaq 0x16e28(%rip), %rsi     # 0x1e3e8
movq 0x179b1(%rip), %rdx     # 0x1ef78
movq %r15, %rdi
callq 0x55c0
jmp 0x7a2d
jmp 0x7a2d
jmp 0x75e1
jmp 0x75fe
jmp 0x75e1
jmp 0x75fe
movq %rdx, %r14
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x56b8
testb %bpl, %bpl
jne 0x7604
jmp 0x7a4a
movq %rdx, %r14
movq %rax, %rbx
movq %r15, %rdi
callq 0x5270
jmp 0x7a4a
jmp 0x7a2d
jmp 0x7a2d
jmp 0x7a2d
movq %rdx, %r14
movq %rax, %rbx
leaq 0x1f8(%rsp), %rdi
callq 0x56b8
jmp 0x7a3d
movq %rdx, %r14
movq %rax, %rbx
jmp 0x7a3d
jmp 0x7645
movq %rdx, %r14
movq %rax, %rbx
jmp 0x7a4a
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x8952
jmp 0x7665
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x30, %rdi
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7669
jmp 0x768f
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x56b8
leaq 0xf0(%rsp), %rdi
callq 0x56b8
jmp 0x76a1
movq %rax, %rbx
leaq 0x308(%rsp), %rdi
callq 0x8c94
jmp 0x7704
movq %rax, %rbx
leaq 0x3d8(%rsp), %rdi
callq 0x8952
jmp 0x76c5
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x80, %rdi
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x76c9
jmp 0x76f5
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x56b8
leaq 0x30(%rsp), %rdi
callq 0x56b8
jmp 0x7704
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x8cb4
jmp 0x7774
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x7bf4
leaq 0x308(%rsp), %rdi
callq 0x8952
jmp 0x7732
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x3d8, %rdi            # imm = 0x3D8
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7736
jmp 0x7762
movq %rax, %rbx
leaq 0x3e0(%rsp), %rdi
callq 0x56b8
leaq 0x80(%rsp), %rdi
callq 0x56b8
jmp 0x7774
movq %rax, %rbx
leaq 0x218(%rsp), %rdi
callq 0x8cd8
jmp 0x77e7
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x56b8
leaq 0x110(%rsp), %rdi
callq 0x8952
jmp 0x77a5
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x308, %rdi            # imm = 0x308
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x77a9
jmp 0x77d5
movq %rax, %rbx
leaq 0x310(%rsp), %rdi
callq 0x56b8
leaq 0x3d8(%rsp), %rdi
callq 0x56b8
jmp 0x77e7
movq %rax, %rbx
leaq 0x590(%rsp), %rdi
callq 0x8c94
leaq 0x660(%rsp), %rdi
callq 0x8c94
leaq 0x4a0(%rsp), %rdi
callq 0x8cd8
leaq 0x8c0(%rsp), %rdi
callq 0x8c94
leaq 0x990(%rsp), %rdi
callq 0x8c94
leaq 0x730(%rsp), %rdi
callq 0x8cfc
movq %rbx, %rdi
callq 0x55e0
movq %rax, %rbx
leaq 0x218(%rsp), %rdi
callq 0x8952
jmp 0x7852
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7856
jmp 0x7882
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x56b8
leaq 0x308(%rsp), %rdi
callq 0x56b8
jmp 0x77f4
movq %rax, %rbx
jmp 0x77f4
movq %rax, %rbx
leaq 0x218(%rsp), %rdi
callq 0x8952
jmp 0x78b1
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x78b5
jmp 0x78e1
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x56b8
leaq 0x590(%rsp), %rdi
callq 0x56b8
jmp 0x7801
movq %rax, %rbx
jmp 0x7801
movq %rax, %rbx
leaq 0x590(%rsp), %rdi
callq 0x56b8
leaq 0x218(%rsp), %rdi
callq 0x8952
jmp 0x791d
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x110, %rdi            # imm = 0x110
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7921
jmp 0x794d
movq %rax, %rbx
leaq 0x118(%rsp), %rdi
callq 0x56b8
leaq 0x660(%rsp), %rdi
callq 0x56b8
jmp 0x780e
movq %rax, %rbx
jmp 0x780e
movq %rax, %rbx
leaq 0x4a0(%rsp), %rdi
callq 0x8952
jmp 0x797c
movq %rax, %rbx
pushq $0x30
popq %r14
leaq (%rsp,%r14), %rdi
addq $0x218, %rdi            # imm = 0x218
callq 0x56b8
addq $-0x28, %r14
cmpq $-0x20, %r14
jne 0x7980
jmp 0x79ac
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x56b8
leaq 0x110(%rsp), %rdi
callq 0x56b8
jmp 0x781b
movq %rax, %rbx
jmp 0x781b
movq %rax, %rbx
leaq 0x4a0(%rsp), %rdi
callq 0x8952
jmp 0x79db
movq %rax, %rbx
leaq 0x220(%rsp), %rdi
callq 0x56b8
jmp 0x79ed
movq %rax, %rbx
leaq 0x110(%rsp), %rdi
callq 0x56b8
jmp 0x7828
movq %rax, %rbx
jmp 0x7828
movq %rax, %rbx
leaq 0x4a0(%rsp), %rdi
callq 0x56b8
jmp 0x7835
movq %rdx, %r14
movq %rax, %rbx
movq (%r15), %rax
movq %r15, %rdi
callq *0x8(%rax)
jmp 0x7a33
movq %rdx, %r14
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0x85ce
leaq 0x80(%rsp), %rdi
callq 0x56b8
cmpl $0x3, %r14d
jne 0x7a9b
movq %rbx, %rdi
callq 0x53e0
leaq 0x80(%rsp), %rdi
movq %rax, %rsi
callq 0x8c7e
movq %rbx, %rdi
callq 0x5150
movq 0x17519(%rip), %rsi     # 0x1ef90
leaq 0x730(%rsp), %rdi
callq 0x7c16
leaq 0x80(%rsp), %rdi
callq 0x56c0
callq 0x5560
jmp 0x7447
cmpl $0x2, %r14d
jne 0x7b1e
movq %rbx, %rdi
callq 0x5150
movq %rax, %rbx
movq 0x1752d(%rip), %rdi     # 0x1efe0
leaq 0xc085(%rip), %rsi      # 0x13b3f
callq 0x5320
leaq 0x17a1a(%rip), %rsi     # 0x1f4e0
movq %rax, %rdi
callq 0x5300
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq %r14, %rdi
movq %rax, %rsi
callq 0x5320
leaq 0x17a14(%rip), %rsi     # 0x1f500
movq %rax, %rdi
callq 0x5300
leaq 0xc05e(%rip), %rsi      # 0x13b59
movq %rax, %rdi
callq 0x5320
movq 0x174d6(%rip), %rsi     # 0x1efe0
leaq 0x730(%rsp), %rdi
callq 0x7c16
callq 0x5560
jmp 0x7b80
cmpl $0x1, %r14d
jne 0x7bba
movq %rbx, %rdi
callq 0x5150
movq %rax, %rbx
movq 0x174a6(%rip), %rdi     # 0x1efe0
leaq 0x1799f(%rip), %rsi     # 0x1f4e0
callq 0x5300
movq %rax, %r14
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq %r14, %rdi
movq %rax, %rsi
callq 0x5320
leaq 0x1799c(%rip), %rsi     # 0x1f500
movq %rax, %rdi
callq 0x5300
leaq 0xbfe7(%rip), %rsi      # 0x13b5a
movq %rax, %rdi
callq 0x5320
callq 0x5560
pushq $0x1
popq %rbx
jmp 0x7449
jmp 0x7b8c
jmp 0x7b8c
movq %rax, %rbx
jmp 0x7bba
movq %rax, %rbx
leaq 0x80(%rsp), %rdi
callq 0x56c0
callq 0x5560
jmp 0x7bba
movq %rax, %rbx
callq 0x5560
jmp 0x7bba
movq %rax, %rbx
callq 0x5560
leaq 0x3d8(%rsp), %rdi
callq 0x8c94
jmp 0x76a1
movq %rax, %rdi
callq 0x85c3