// File: /workspace/github_cpp_makefile_star2_O1/ALSchwalm[P]entrospy/entrospy/entrospy.cpp
// Function: main
int main(int argc, char** argv) {
    po::options_description desc("Usage: entrospy [OPTION] PATH...", 100);

    PrintingPolicy policy;
    DataFormat format;
    std::vector<std::string> paths;

    desc.add_options()                    //
        ("help,h", "Print help messages") //
        ("paths", po::value<std::vector<std::string>>(&paths),
         "Paths to search")                  //
        ("debug", "Enable debugging output") //
        ("all,a",
         "Do not ignore hidden files and directories") //
        ("block,b", po::value<std::string>(),
         "Process each file 'block' at a time. This will show the"
         " entropy for each block rather than the total file. The provided"
         " argument will be interpreted as a byte count unless suffixed"
         " with 'K', 'M', or 'G' for kilo, mega, and giga-bytes "
         "respectively") //
        ("categorize,c",
         "Show a categorization based on entropy in addition to the score") //
        ("print,p", "Print a hex view of each block")                       //
        ("addr", po::value<AddressFormat>(&policy.addr_format)
                     ->default_value(AddressFormat::HEX, "hex"),
         "Format to use for printed addresses: 'hex' or 'dec'") //
        ("lower,l", po::value<double>(&policy.bounds.first),
         "Do not show files with entropy lower than 'lower'") //
        ("upper,u", po::value<double>(&policy.bounds.second),
         "Do not show files with entropy higher than 'upper'") //
        ("format,f", po::value<DataFormat>(&format)
                         ->default_value(DataFormat::DATA, "data"),
         "Input format: 'data','text' or 'base64'") //
        ("graph,g",
         "Output a gnuplot script to standard out") //
        ("recursive,r",
         "Run directories in PATH recursively"); //

    po::positional_options_description p;
    p.add("paths", -1);

    po::variables_map vm;

    try {
        po::store(po::command_line_parser(argc, argv)
                      .options(desc)
                      .positional(p)
                      .run(),
                  vm);

        if (vm.count("help")) {
            std::cout << desc << std::endl;
            return 0;
        }

        po::notify(vm);
    } catch (po::error& e) {
        std::cerr << "entrospy: " << e.what() << std::endl;
        return EXIT_FAILURE;
    }

    uint64_t block_size = 0;
    if (vm.count("block")) {
        block_size = parse_block_size(vm["block"].as<std::string>());
    }

    if (vm.count("print")) {
        if (!vm.count("block")) {
            std::cerr << "entrospy: cannot specify 'print' without 'block'"
                      << std::endl;
            return EXIT_FAILURE;
        } else {
            policy.print_blocks = true;
        }
    }

    if (vm.count("graph")) {
        policy.print_graph = true;
    }

    if (vm.count("categorize")) {
        policy.categorize = true;
    }

    auto title = boost::format("Entropy for %1% (bs=%2%)") %
                 boost::algorithm::join(paths, ", ") % block_size;

    EntropyGraph graph{boost::str(title), block_size, policy};
    for (const auto& path : paths) {
        if (fs::is_directory(path)) {
            if (!vm.count("recursive")) {
                std::cerr << "entrospy: " << path << ": Is a directory"
                          << std::endl;
                continue;
            } else {
                for (fs::recursive_directory_iterator iter(path), end;
                     iter != end; ++iter) {
                    if (fs::is_directory(iter->path())) {
                        if (is_hidden(iter->path()) && !vm.count("all")) {
                            iter.no_push();
                        }
                        continue;
                    }
                    if (!is_hidden(iter->path()) || vm.count("all")) {
                        shannon_file(iter->path().string(), block_size, policy,
                                     format, graph);
                    }
                }
            }
        } else {
            shannon_file(path, block_size, policy, format, graph);
        }
    }

    if (policy.print_graph) {
        std::cout << graph;
    }
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3d8, %rsp            # imm = 0x3D8
movq %rsi, %rbx
movl %edi, %ebp
leaq 0xa8(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0xf497(%rip), %rsi      # 0x1825d
leaq 0xf4b0(%rip), %rdx      # 0x1827d
leaq 0x98(%rsp), %rdi
callq 0x8b54
movq 0x1a1a7(%rip), %rax     # 0x22f88
movl (%rax), %ecx
shrl %ecx
leaq 0x358(%rsp), %rdi
leaq 0x98(%rsp), %rsi
movl $0x64, %edx
callq 0x8530
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x8e11
callq 0x8370
movw $0x0, 0x40(%rsp)
movb $0x0, 0x42(%rsp)
movaps 0xf2bc(%rip), %xmm0     # 0x180e0
movups %xmm0, 0x48(%rsp)
movl $0x0, 0x58(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x60(%rsp)
movq $0x0, 0x70(%rsp)
leaq 0x358(%rsp), %rdi
callq 0x8460
leaq 0x2b8(%rsp), %rdi
movq %rax, (%rdi)
leaq 0xf41d(%rip), %rsi      # 0x1827e
leaq 0xf41d(%rip), %rdx      # 0x18285
callq 0x86f0
movq %rax, %r14
leaq 0x60(%rsp), %rdi
callq 0x9e0b
leaq 0xf418(%rip), %rsi      # 0x18299
leaq 0xf417(%rip), %rcx      # 0x1829f
movq %r14, %rdi
movq %rax, %rdx
callq 0x8750
leaq 0xf415(%rip), %rsi      # 0x182af
leaq 0xf414(%rip), %rdx      # 0x182b5
movq %rax, %rdi
callq 0x86f0
leaq 0xf41d(%rip), %rsi      # 0x182cd
leaq 0xf41c(%rip), %rdx      # 0x182d3
movq %rax, %rdi
callq 0x86f0
movq %rax, %r14
xorl %edi, %edi
callq 0xdb0d
leaq 0xf42e(%rip), %rsi      # 0x182fe
leaq 0xf42f(%rip), %rcx      # 0x18306
movq %r14, %rdi
movq %rax, %rdx
callq 0x8750
leaq 0xf514(%rip), %rsi      # 0x183fd
leaq 0xf51a(%rip), %rdx      # 0x1840a
movq %rax, %rdi
callq 0x86f0
leaq 0xf54b(%rip), %rsi      # 0x1844a
leaq 0xf54c(%rip), %rdx      # 0x18452
movq %rax, %rdi
callq 0x86f0
movq %rax, %r14
leaq 0x58(%rsp), %rdi
callq 0x9e82
movq %rax, %r15
movl $0x1, 0x280(%rsp)
leaq 0x98(%rsp), %rdi
movq %r13, (%rdi)
leaq 0xf53b(%rip), %rsi      # 0x18476
leaq 0xf537(%rip), %rdx      # 0x18479
callq 0x8b54
leaq 0x280(%rsp), %rsi
leaq 0x98(%rsp), %rdx
movq %r15, %rdi
callq 0x9efa
leaq 0xf50b(%rip), %rsi      # 0x18471
leaq 0xf50d(%rip), %rcx      # 0x1847a
movq %r14, %rdi
movq %rax, %rdx
callq 0x8750
movq %rax, %r14
leaq 0x48(%rsp), %rdi
callq 0x9f4a
leaq 0xf522(%rip), %rsi      # 0x184ae
leaq 0xf523(%rip), %rcx      # 0x184b6
movq %r14, %rdi
movq %rax, %rdx
callq 0x8750
movq %rax, %r14
leaq 0x50(%rsp), %rdi
callq 0x9f4a
leaq 0xf536(%rip), %rsi      # 0x184e8
leaq 0xf537(%rip), %rcx      # 0x184f0
movq %r14, %rdi
movq %rax, %rdx
callq 0x8750
movq %rax, %r15
leaq 0x2c(%rsp), %rdi
callq 0x9fc1
movq %rax, %r12
movl $0x100, (%rsp)          # imm = 0x100
leaq 0x1b0(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xf53e(%rip), %rsi      # 0x1852c
leaq 0xf53b(%rip), %rdx      # 0x18530
leaq 0x1a0(%rsp), %rdi
callq 0x8b54
movq %rsp, %r14
leaq 0x1a0(%rsp), %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0xa038
leaq 0xf504(%rip), %rsi      # 0x18523
leaq 0xf50b(%rip), %rcx      # 0x18531
movq %r15, %rdi
movq %rax, %rdx
callq 0x8750
leaq 0xf521(%rip), %rsi      # 0x18559
leaq 0xf522(%rip), %rdx      # 0x18561
movq %rax, %rdi
callq 0x86f0
leaq 0xf53b(%rip), %rsi      # 0x18589
leaq 0xf540(%rip), %rdx      # 0x18595
movq %rax, %rdi
callq 0x86f0
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0x9077
callq 0x8370
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x9089
callq 0x8370
leaq 0x280(%rsp), %rdi
callq 0x84d0
leaq 0xf1fc(%rip), %rsi      # 0x18299
leaq 0x280(%rsp), %rdi
movl $0xffffffff, %edx       # imm = 0xFFFFFFFF
callq 0x83d0
leaq 0x2b8(%rsp), %rdi
callq 0x8190
leaq 0x98(%rsp), %rdi
movl %ebp, %esi
movq %rbx, %rdx
callq 0xa088
leaq 0x98(%rsp), %rdi
leaq 0x358(%rsp), %rbx
movq %rbx, %rsi
callq 0x8330
leaq 0x98(%rsp), %rdi
movq %rbx, 0x70(%rdi)
leaq 0x280(%rsp), %rsi
callq 0x8640
leaq 0x1a0(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0xa11c
leaq 0x1a0(%rsp), %rdi
leaq 0x2b8(%rsp), %rsi
xorl %edx, %edx
callq 0x8690
leaq 0x1a0(%rsp), %rdi
callq 0xa5f8
leaq 0xe8(%rsp), %rdi
callq 0xa664
leaq 0xc8(%rsp), %rdi
callq 0xa69c
leaq 0x98(%rsp), %rbx
movq %rbx, %rdi
callq 0xa578
movq %r13, (%rbx)
leaq 0xf44d(%rip), %rsi      # 0x185b9
leaq 0xf44a(%rip), %rdx      # 0x185bd
leaq 0x98(%rsp), %rdi
callq 0x8b54
leaq 0x2c8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x11652
movq %rax, %rbx
leaq 0x2d0(%rsp), %r15
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x91b2
callq 0x8370
cmpq %r15, %rbx
je 0x91fc
movq 0x19df2(%rip), %rdi     # 0x22fb0
leaq 0x358(%rsp), %rsi
callq 0x80a0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8390
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8030
xorl %ebx, %ebx
movq %rax, %rdi
callq 0x82c0
jmp 0x9a5c
leaq 0x2b8(%rsp), %rdi
callq 0x8220
movq $0x0, 0x20(%rsp)
leaq 0x98(%rsp), %rdi
movq %r13, (%rdi)
leaq 0xf247(%rip), %rsi      # 0x1846b
leaq 0xf245(%rip), %rdx      # 0x18470
callq 0x8b54
leaq 0x98(%rsp), %rsi
leaq 0x2c8(%rsp), %rdi
callq 0x11652
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x925a
callq 0x8370
cmpq %r15, %rbx
je 0x92b9
leaq 0x98(%rsp), %rdi
movq %r13, (%rdi)
leaq 0xf1fa(%rip), %rsi      # 0x1846b
leaq 0xf1f8(%rip), %rdx      # 0x18470
callq 0x8b54
leaq 0x2b8(%rsp), %rdi
leaq 0x98(%rsp), %rsi
callq 0x83f0
movq %rax, %rdi
callq 0x116db
movq %rax, %rdi
callq 0x8c42
movq %rax, 0x20(%rsp)
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x92b9
callq 0x8370
leaq 0x98(%rsp), %rdi
movq %r13, (%rdi)
leaq 0xf2fe(%rip), %rsi      # 0x185c9
leaq 0xf2fc(%rip), %rdx      # 0x185ce
callq 0x8b54
leaq 0x98(%rsp), %rsi
leaq 0x2c8(%rsp), %rdi
callq 0x11652
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x9301
callq 0x8370
cmpq %r15, %rbx
je 0x935c
leaq 0x98(%rsp), %rdi
movq %r13, (%rdi)
leaq 0xf153(%rip), %rsi      # 0x1846b
leaq 0xf151(%rip), %rdx      # 0x18470
callq 0x8b54
leaq 0x98(%rsp), %rsi
leaq 0x2c8(%rsp), %rdi
callq 0x11652
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x934e
callq 0x8370
cmpq %r15, %rbx
je 0x9a11
movb $0x1, 0x40(%rsp)
leaq 0x98(%rsp), %rdi
movq %r13, (%rdi)
leaq 0xf292(%rip), %rsi      # 0x18600
leaq 0xf290(%rip), %rdx      # 0x18605
callq 0x8b54
leaq 0x98(%rsp), %rsi
leaq 0x2c8(%rsp), %rdi
callq 0x11652
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x93a4
callq 0x8370
cmpq %r15, %rbx
je 0x93ae
movb $0x1, 0x41(%rsp)
leaq 0x98(%rsp), %rdi
movq %r13, (%rdi)
leaq 0xf246(%rip), %rsi      # 0x18606
leaq 0xf249(%rip), %rdx      # 0x18610
callq 0x8b54
leaq 0x98(%rsp), %rsi
leaq 0x2c8(%rsp), %rdi
callq 0x11652
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x93f6
callq 0x8370
cmpq %r15, %rbx
je 0x9400
movb $0x1, 0x42(%rsp)
leaq 0xf20a(%rip), %rsi      # 0x18611
leaq 0x1a0(%rsp), %rdi
callq 0xa212
movq 0x60(%rsp), %r12
movq 0x68(%rsp), %rbp
leaq 0x10(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
cmpq %rbp, %r12
je 0x9450
movq (%r12), %rcx
movq 0x8(%r12), %r8
movq %rsp, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x8410
addq $0x20, %r12
cmpq %rbp, %r12
je 0x9498
leaq 0xf1ce(%rip), %rbx      # 0x1862a
movq %rsp, %r15
movq 0x8(%rsp), %rsi
movl $0x2, %r8d
movq %r15, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x8410
movq 0x8(%rsp), %rsi
movq (%r12), %rcx
movq 0x8(%r12), %r8
movq %r15, %rdi
xorl %edx, %edx
callq 0x8410
addq $0x20, %r12
cmpq %rbp, %r12
jne 0x945f
leaq 0x78(%rsp), %rsi
movq %r14, (%rsi)
leaq 0xbb58(%rip), %rax      # 0x14fff
movq %rax, 0x8(%rsi)
leaq 0xbb4e(%rip), %rax      # 0x15000
movq %rax, 0x10(%rsi)
leaq 0x1a0(%rsp), %rdi
callq 0x13f9c
leaq 0x20(%rsp), %rcx
leaq 0x78(%rsp), %rsi
movq %rcx, (%rsi)
leaq 0xbb38(%rip), %rcx      # 0x1500f
movq %rcx, 0x8(%rsi)
leaq 0xbb2e(%rip), %rcx      # 0x15010
movq %rcx, 0x10(%rsi)
movq %rax, %rdi
callq 0x13f9c
leaq 0x98(%rsp), %rdi
movq %rax, %rsi
callq 0xa370
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x9511
callq 0x8370
cmpb $0x1, 0x270(%rsp)
jne 0x952f
leaq 0x278(%rsp), %rbx
movq %rbx, %rdi
callq 0x8560
movb $0x0, -0x8(%rbx)
leaq 0x218(%rsp), %rbx
movq %rbx, %rdi
callq 0xa6d4
movq -0x28(%rbx), %rdi
leaq 0x200(%rsp), %rax
cmpq %rax, %rdi
je 0x9555
callq 0x8370
movq 0x1b8(%rsp), %rdi
testq %rdi, %rdi
je 0x958f
callq 0x8370
xorl %eax, %eax
movq %rax, 0x1b8(%rsp)
movl %eax, 0x1c0(%rsp)
movq %rax, 0x1c8(%rsp)
movl %eax, 0x1d0(%rsp)
movq %rax, 0x1d8(%rsp)
leaq 0x1a0(%rsp), %rdi
callq 0xa728
movq %rsp, %rdi
leaq 0x98(%rsp), %rsi
callq 0x152fc
movq 0x20(%rsp), %rdx
leaq 0x1a0(%rsp), %rdi
movq %rsp, %rsi
leaq 0x40(%rsp), %rcx
callq 0x15910
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x95d9
callq 0x8370
movq 0x60(%rsp), %r14
movq 0x68(%rsp), %rax
movq %rax, 0x178(%rsp)
cmpq %rax, %r14
je 0x9941
movq %rsp, %r15
leaq 0x38(%rsp), %r12
leaq 0x78(%rsp), %rbx
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xabea
movq %rbx, %r13
movq %r12, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x85a0
movl 0x38(%rsp), %ebx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x9643
callq 0x8370
cmpl $0x3, %ebx
jne 0x988e
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq %r15, %rdi
leaq 0xefce(%rip), %rsi      # 0x1862d
leaq 0xefd0(%rip), %rdx      # 0x18636
callq 0x8b54
movq %r13, %rbx
leaq 0x2c8(%rsp), %rdi
movq %r15, %rsi
callq 0x11652
movq %rax, %rbp
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x9694
callq 0x8370
leaq 0x2d0(%rsp), %rax
cmpq %rax, %rbp
je 0x98c5
leaq 0x10(%rsp), %rax
movq %rax, (%rsp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0xabea
movq %r12, %rdi
movq %r15, %rsi
callq 0xa4d2
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x96de
callq 0x8370
movq $0x0, 0x30(%rsp)
movq 0x38(%rsp), %rcx
movq 0x30(%rsp), %rax
cmpq %rax, %rcx
je 0x98b1
testq %rcx, %rcx
je 0x9709
movq 0x8(%rcx), %rdx
cmpq 0x10(%rcx), %rdx
jne 0x9720
testq %rax, %rax
je 0x98b1
movq 0x8(%rax), %rcx
cmpq 0x10(%rax), %rcx
je 0x98b1
movq %r12, %rdi
callq 0x15850
movq %r15, %rdi
movq %rax, %rsi
xorl %edx, %edx
callq 0x85a0
cmpl $0x3, (%rsp)
jne 0x979b
movq %r12, %rdi
callq 0x15850
movq %rax, %rdi
callq 0x8be4
movl %eax, %ebp
testb %al, %al
je 0x984d
leaq 0x88(%rsp), %rax
movq %rax, 0x78(%rsp)
movq %rbx, %rdi
leaq 0xeedc(%rip), %rsi      # 0x18648
leaq 0xeed8(%rip), %rdx      # 0x1864b
callq 0x8b54
leaq 0x2c8(%rsp), %rdi
movq %rbx, %rsi
callq 0x11652
leaq 0x2d0(%rsp), %rcx
cmpq %rcx, %rax
sete %bl
jmp 0x984f
movq %r12, %rdi
callq 0x15850
movq %rax, %rdi
callq 0x8be4
movl %eax, %ebp
movb $0x1, %bl
testb %al, %al
je 0x97ff
leaq 0x190(%rsp), %rax
movq %rax, 0x180(%rsp)
leaq 0x180(%rsp), %rbx
movq %rbx, %rdi
leaq 0xee73(%rip), %rsi      # 0x18648
leaq 0xee6f(%rip), %rdx      # 0x1864b
callq 0x8b54
leaq 0x2c8(%rsp), %rdi
movq %rbx, %rsi
callq 0x11652
leaq 0x2d0(%rsp), %rcx
cmpq %rcx, %rax
setne %bl
testb %bpl, %bpl
je 0x981e
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x981e
callq 0x8370
testb %bl, %bl
movq %r13, %rbx
je 0x987f
movq %r12, %rdi
callq 0x15850
movq 0x20(%rsp), %rsi
movl 0x2c(%rsp), %ecx
movq %rax, %rdi
leaq 0x40(%rsp), %rdx
leaq 0x1a0(%rsp), %r8
callq 0x16fa8
jmp 0x987f
xorl %ebx, %ebx
testb %bpl, %bpl
je 0x986b
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x986b
callq 0x8370
testb %bl, %bl
movq %r13, %rbx
je 0x987f
movq %r12, %rdi
movl $0x1, %esi
callq 0xad1e
movq %r12, %rdi
xorl %esi, %esi
callq 0x8250
jmp 0x96e7
movq 0x20(%rsp), %rsi
movl 0x2c(%rsp), %ecx
movq %r14, %rdi
leaq 0x40(%rsp), %rdx
leaq 0x1a0(%rsp), %r8
callq 0x16fa8
movq %r13, %rbx
jmp 0x992f
leaq 0x30(%rsp), %rdi
callq 0xac7a
movq %r12, %rdi
callq 0xac7a
jmp 0x992f
movl $0xa, %edx
movq 0x19717(%rip), %rdi     # 0x22fe8
leaq 0xece6(%rip), %rsi      # 0x185be
callq 0x8420
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq 0x196fd(%rip), %rdi     # 0x22fe8
callq 0x8420
movq %rax, %rbp
movl $0x10, %edx
movq %rax, %rdi
leaq 0xed35(%rip), %rsi      # 0x18637
callq 0x8420
movq (%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbp, %rdi
movl $0xa, %esi
callq 0x8390
movsbl %al, %esi
movq %rbp, %rdi
callq 0x8030
movq %rax, %rdi
callq 0x82c0
addq $0x20, %r14
cmpq 0x178(%rsp), %r14
jne 0x9601
cmpb $0x0, 0x41(%rsp)
je 0x995c
movq 0x19661(%rip), %rdi     # 0x22fb0
leaq 0x1a0(%rsp), %rsi
callq 0x159b2
leaq 0x1e8(%rsp), %rbx
movq %rbx, %rdi
callq 0xad8a
movq -0x48(%rbx), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0x9982
callq 0x8370
cmpb $0x1, 0x168(%rsp)
jne 0x99a0
leaq 0x170(%rsp), %rbx
movq %rbx, %rdi
callq 0x8560
movb $0x0, -0x8(%rbx)
leaq 0x110(%rsp), %rbx
movq %rbx, %rdi
callq 0xa6d4
movq -0x28(%rbx), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x99c6
callq 0x8370
movq 0xb0(%rsp), %rdi
testq %rdi, %rdi
je 0x9a00
callq 0x8370
xorl %eax, %eax
movq %rax, 0xb0(%rsp)
movl %eax, 0xb8(%rsp)
movq %rax, 0xc0(%rsp)
movl %eax, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
leaq 0x98(%rsp), %rdi
callq 0xa728
xorl %ebx, %ebx
jmp 0x9a5c
movq 0x195d0(%rip), %rbx     # 0x22fe8
leaq 0xebb0(%rip), %rsi      # 0x185cf
movl $0x30, %edx
movq %rbx, %rdi
callq 0x8420
movq (%rbx), %rax
addq -0x18(%rax), %rbx
movq %rbx, %rdi
movl $0xa, %esi
callq 0x8390
movsbl %al, %esi
movq 0x1959e(%rip), %rdi     # 0x22fe8
callq 0x8030
movl $0x1, %ebx
movq %rax, %rdi
callq 0x82c0
movq 0x1955d(%rip), %rax     # 0x22fc0
addq $0x10, %rax
leaq 0x328(%rsp), %rdi
movq %rax, -0x70(%rdi)
callq 0xae06
leaq 0x2f8(%rsp), %rdi
callq 0xae86
leaq 0x2c8(%rsp), %rdi
callq 0xaee2
leaq 0x2a8(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x9aa8
callq 0x8370
leaq 0x280(%rsp), %rdi
callq 0xa578
leaq 0x60(%rsp), %rdi
callq 0xa578
leaq 0x3c0(%rsp), %r14
movq %r14, %rdi
callq 0xaf9a
movq -0x28(%r14), %rdi
testq %rdi, %rdi
je 0x9b05
callq 0x8370
xorl %eax, %eax
movq %rax, 0x398(%rsp)
movl %eax, 0x3a0(%rsp)
movq %rax, 0x3a8(%rsp)
movl %eax, 0x3b0(%rsp)
movq %rax, 0x3b8(%rsp)
leaq 0x380(%rsp), %r14
movq %r14, %rdi
callq 0xafd6
movq -0x28(%r14), %rdi
leaq 0x368(%rsp), %rax
cmpq %rax, %rdi
je 0x9b2b
callq 0x8370
movl %ebx, %eax
addq $0x3d8, %rsp            # imm = 0x3D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x9d8c
jmp 0x9d1d
jmp 0x9b90
jmp 0x9b88
jmp 0x9b88
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x9dba
callq 0x8370
jmp 0x9dba
movq %rax, %rbx
jmp 0x9dba
jmp 0x9b88
jmp 0x9b90
jmp 0x9b88
jmp 0x9b90
jmp 0x9b88
jmp 0x9b88
jmp 0x9b90
jmp 0x9b88
jmp 0x9b90
movq %rax, %rbx
jmp 0x9dc7
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x9dc7
callq 0x8370
jmp 0x9dc7
jmp 0x9d1d
movq %rdx, %r14
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x9c5b
callq 0x8370
jmp 0x9c5b
jmp 0x9c40
movq %rdx, %r14
movq %rax, %rbx
leaq 0x1a0(%rsp), %rdi
callq 0xa5f8
jmp 0x9c4e
jmp 0x9c40
jmp 0x9bef
movq %rax, %rbx
jmp 0x9dd4
jmp 0x9d91
jmp 0x9d75
jmp 0x9d91
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x9df8
callq 0x8370
jmp 0x9df8
movq %rax, %rbx
jmp 0x9df8
jmp 0x9cfc
jmp 0x9d8c
jmp 0x9cfc
jmp 0x9d8c
movq %rdx, %r14
movq %rax, %rbx
jmp 0x9c5b
movq %rdx, %r14
movq %rax, %rbx
leaq 0x98(%rsp), %rdi
callq 0xa1f2
cmpl $0x1, %r14d
jne 0x9dc7
movq %rbx, %rdi
callq 0x8170
movq %rax, %rbx
movq 0x19371(%rip), %rdi     # 0x22fe8
leaq 0xe940(%rip), %rsi      # 0x185be
movl $0xa, %edx
callq 0x8420
movq (%rbx), %rax
movq %rbx, %rdi
callq *0x10(%rax)
movq 0x19350(%rip), %rdi     # 0x22fe8
movq %rax, %rsi
callq 0x83a0
movq %rax, %rdi
callq 0x81c0
movl $0x1, %ebx
callq 0x8620
jmp 0x9a5c
jmp 0x9b88
movq %rax, %rbx
callq 0x8620
jmp 0x9dc7
movq %rax, %rdi
callq 0x9e00
movq %rax, %rbx
movq 0x1a0(%rsp), %rdi
leaq 0x1b0(%rsp), %rax
cmpq %rax, %rdi
je 0x9d78
callq 0x8370
jmp 0x9d78
jmp 0x9d8c
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x9dad
callq 0x8370
jmp 0x9dad
jmp 0x9d1d
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x9d33
callq 0x8370
leaq 0x1a0(%rsp), %rdi
jmp 0x9dc2
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
jmp 0x9d69
jmp 0x9d96
jmp 0x9d96
movq %rax, %rbx
movq 0x180(%rsp), %rdi
leaq 0x190(%rsp), %rax
cmpq %rax, %rdi
je 0x9d99
callq 0x8370
jmp 0x9d99
movq %rax, %rbx
movq 0x98(%rsp), %rdi
cmpq %r13, %rdi
je 0x9de1
callq 0x8370
jmp 0x9de1
movq %rax, %rbx
jmp 0x9dad
movq %rax, %rbx
jmp 0x9de1
movq %rax, %rbx
leaq 0x30(%rsp), %rdi
callq 0xac7a
leaq 0x38(%rsp), %rdi
callq 0xac7a
leaq 0x1a0(%rsp), %rdi
callq 0xa504
leaq 0x98(%rsp), %rdi
callq 0xa47c
leaq 0x2b8(%rsp), %rdi
callq 0xa526
leaq 0x280(%rsp), %rdi
callq 0xa558
leaq 0x60(%rsp), %rdi
callq 0xa578
leaq 0x358(%rsp), %rdi
callq 0xa5bc
movq %rbx, %rdi
callq 0x86a0