// File: /workspace/github_cpp_makefile_star2_O3/illmat[P]MemCrawl/main.cpp
// Function: main
int main(int argc, char* argv[])
{
    pid_t pid;
    int input = 0;
    bool isFirstRun = true;
    std::string commando;
    std::vector<scanRegion> regions;
    std::vector<scanResult> results;

    if(argc < 2)
    {
        printError("usage ./MemCrawl <pid>");
        return 1;
    }

    if ((pid = atol(argv[1])) == 0)
    {
        printError("usage ./MemCrawl <pid>");
        return 1;
    }

    // get read/writeable scan regions
    if (getRegions(regions, pid) != 0)
    {
        printError("could not get regions");
        return 1;
    }

    std::cout << "Enter Command (try: help)" << std::endl;
    std::cout << results.size() << "> ";
    std::getline (std::cin, commando);

    while (commando != "quit" && commando != "q")
    {

        try
        {
            input = string2int(commando);
            if (isFirstRun)
            {
                isFirstRun = false;
                if (scanIntInit(regions, results, pid, input) != 0)
                {
                    printError("could not scan memory");
                    return 1;
                }
            }
            else
            {
                if (scanIntResults(results, pid, input) != 0)
                {
                    std::cout << "could not scan memory" << std::endl;
                    return 1;
                }
            }

        }
        catch (int e)
        {
            if (e == 1)
            {
                if (commando == "help")
                {
                    printHelp();
                }

                if (commando == "list")
                {
                    printResults(results);
                }

                if (commando == "update")
                {
                    if (updateIntResults(results, pid) != 0)
                    {
                        printError("could not scan memory");
                        return 1;
                    }
                }

                if (commando == "ulist")
                {
                    if (updateIntResults(results, pid) != 0)
                    {
                        printError("could not scan memory");
                        return 1;
                    }
                    printResults(results);
                }

                if (commando == "info")
                {
                    std::cout << std::endl << "scan regions: " << std::endl;
                    int adresses = 0;
                    for(std::vector<scanRegion>::iterator it = regions.begin(); it != regions.end(); ++it)
                    {
                        scanRegion sr = (scanRegion) *it;
                        std::cout << std::hex << sr.startRegion << " - " << sr.endRegion << std::dec <<std::endl;
                        adresses += sr.endRegion - sr.startRegion;
                    }
                    std::cout << std::endl << adresses << " adresses" << std::endl;

                }

                if (commando == "reset")
                {
                    regions.clear();
                    results.clear();
                    isFirstRun = true;
                    // get read/writeable scan regions
                    if (getRegions(regions, pid) != 0)
                    {
                        printError("could not get regions");
                        return 1;
                    }

                }

                if (commando.substr(0, 3) == "pid")
                {
                    if (commando.length() < 5)
                    {
                        std::cout << "correct usage: pid <pid>" << std::endl;
                    }
                    else
                    {
                        int val = 0;
                        std::stringstream ss(commando.substr(4, commando.length()));
                        if ((ss >> val).fail())
                        {
                            printError("wrong parameter for pid command");
                        }
                        else
                        {
                            pid = val;
                            // reset
                            regions.clear();
                            results.clear();
                            isFirstRun = true;
                            // get read/writeable scan regions
                            if (getRegions(regions, pid) != 0)
                            {
                                printError("could not get regions");
                                return 1;
                            }
                        }
                    }
                }

                if (commando.substr(0, 3) == "set")
                {
                    if (commando.length() < 5)
                    {
                        std::cout << "correct usage: set 5" << std::endl;
                    }
                    else
                    {
                        int val = 0;
                        std::stringstream ss(commando.substr(4, commando.length()));
                        if ((ss >> val).fail())
                        {
                            printError("wrong parameter for set command");
                        }
                        else
                        {
                            if (setInt(results, pid, val) != 0)
                            {
                                std::cout << "could not set value" << std::endl;
                                return 1;
                            }
                        }
                    }
                }
            }
            else
            {
                printError("unknown");
            }
        }
        std::cout << results.size() << "> ";
        std::getline (std::cin, commando);
    }

    return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3e8, %rsp            # imm = 0x3E8
leaq -0x160(%rbp), %r12
movq %r12, -0x10(%r12)
xorl %eax, %eax
movq %rax, -0x8(%r12)
movb $0x0, (%r12)
movq %rax, -0x70(%rbp)
xorps %xmm0, %xmm0
movaps %xmm0, -0x80(%rbp)
movq %rax, -0x50(%rbp)
movaps %xmm0, -0x60(%rbp)
cmpl $0x1, %edi
jg 0x2603
leaq -0x210(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x2a42(%rip), %rsi      # 0x5004
leaq 0x2a51(%rip), %rdx      # 0x501a
leaq -0x220(%rbp), %rdi
callq 0x3524
leaq -0x220(%rbp), %rdi
callq 0x407f
movq -0x220(%rbp), %rdi
movl $0x1, %r14d
cmpq %rbx, %rdi
je 0x3090
movq -0x210(%rbp), %rsi
jmp 0x3088
movq 0x8(%rsi), %rdi
callq 0x2210
movq %rax, %rbx
testl %ebx, %ebx
je 0x2679
leaq -0x80(%rbp), %rdi
movl %ebx, %esi
callq 0x3600
testl %eax, %eax
je 0x26cc
leaq -0x1d0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x29e3(%rip), %rsi      # 0x501b
leaq 0x29f1(%rip), %rdx      # 0x5030
leaq -0x1e0(%rbp), %rdi
callq 0x3524
leaq -0x1e0(%rbp), %rdi
callq 0x407f
movq -0x1e0(%rbp), %rdi
movl $0x1, %r14d
cmpq %rbx, %rdi
je 0x3090
movq -0x1d0(%rbp), %rsi
jmp 0x3088
leaq -0x1f0(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x2979(%rip), %rsi      # 0x5004
leaq 0x2988(%rip), %rdx      # 0x501a
leaq -0x200(%rbp), %rdi
callq 0x3524
leaq -0x200(%rbp), %rdi
callq 0x407f
movq -0x200(%rbp), %rdi
movl $0x1, %r14d
cmpq %rbx, %rdi
je 0x3090
movq -0x1f0(%rbp), %rsi
jmp 0x3088
movq 0x48fd(%rip), %r14      # 0x6fd0
leaq 0x2957(%rip), %rsi      # 0x5031
movl $0x19, %edx
movq %r14, %rdi
callq 0x21e0
movq (%r14), %rax
addq -0x18(%rax), %r14
movq %r14, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %esi
movq 0x48cb(%rip), %rdi      # 0x6fd0
callq 0x2030
movq %rax, %rdi
callq 0x20e0
movq -0x58(%rbp), %rsi
subq -0x60(%rbp), %rsi
sarq $0x4, %rsi
movq 0x48ab(%rip), %rdi      # 0x6fd0
callq 0x20d0
leaq 0x291a(%rip), %rsi      # 0x504b
movl $0x2, %edx
movq %rax, %rdi
callq 0x21e0
movq 0x489b(%rip), %rdi      # 0x6fe0
movq (%rdi), %rax
addq -0x18(%rax), %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %edx
movq 0x4880(%rip), %rdi      # 0x6fe0
leaq -0x170(%rbp), %rsi
callq 0x2310
leaq -0x408(%rbp), %rax
addq $0x80, %rax
movq %rax, -0x88(%rbp)
movb $0x1, %r15b
leaq -0x170(%rbp), %r13
movl $0x0, -0x34(%rbp)
movq %r13, %rdi
leaq 0x28b3(%rip), %rsi      # 0x504e
callq 0x2050
testl %eax, %eax
je 0x30ea
movq %r13, %rdi
leaq 0x28a1(%rip), %rsi      # 0x5053
callq 0x2050
testl %eax, %eax
je 0x30ea
movq %r13, %rdi
callq 0x39b8
movl %eax, %r14d
testb $0x1, %r15b
je 0x285b
xorl %r15d, %r15d
leaq -0x1c0(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x341c
leaq -0x1c0(%rbp), %rdi
leaq -0x60(%rbp), %rsi
movl %ebx, %edx
movl %r14d, %ecx
callq 0x4308
movl %eax, %r14d
movq -0x1c0(%rbp), %rdi
testq %rdi, %rdi
je 0x281a
movq -0x1b0(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
testl %r14d, %r14d
je 0x28d1
leaq -0x140(%rbp), %rax
movq %rax, -0x150(%rbp)
leaq -0x150(%rbp), %r14
movq %r14, %rdi
leaq 0x2813(%rip), %rsi      # 0x5055
leaq 0x2821(%rip), %rdx      # 0x506a
callq 0x3524
movq %r14, %rdi
callq 0x407f
jmp 0x3068
xorl %r15d, %r15d
leaq -0x60(%rbp), %rdi
movl %ebx, %esi
movl %r14d, %edx
callq 0x4410
testl %eax, %eax
je 0x28d1
xorl %r15d, %r15d
movl $0x15, %edx
movq 0x4751(%rip), %rdi      # 0x6fd0
leaq 0x27cf(%rip), %rsi      # 0x5055
callq 0x21e0
movq 0x473e(%rip), %rcx      # 0x6fd0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
xorl %r15d, %r15d
movl $0xa, %esi
callq 0x2180
xorl %r15d, %r15d
movsbl %al, %esi
movq 0x471a(%rip), %rdi      # 0x6fd0
callq 0x2030
movl $0x1, %r14d
xorl %r15d, %r15d
movq %rax, %rdi
callq 0x20e0
jmp 0x3090
xorl %r15d, %r15d
movq -0x58(%rbp), %rsi
subq -0x60(%rbp), %rsi
sarq $0x4, %rsi
movq 0x46e9(%rip), %rdi      # 0x6fd0
callq 0x20d0
movl $0x2, %edx
movq %rax, %rdi
leaq 0x2750(%rip), %rsi      # 0x504b
callq 0x21e0
movq 0x46d9(%rip), %rcx      # 0x6fe0
movq (%rcx), %rax
movq -0x18(%rax), %rdi
addq %rcx, %rdi
movl $0xa, %esi
callq 0x2180
movsbl %al, %edx
movq 0x46bb(%rip), %rdi      # 0x6fe0
movq %r13, %rsi
callq 0x2310
jmp 0x2791
movq %rdx, %r14
movq %rax, -0x30(%rbp)
jmp 0x2983
movq %rdx, %r14
movq %rax, -0x30(%rbp)
movq -0x1c0(%rbp), %rdi
testq %rdi, %rdi
je 0x2983
movq -0x1b0(%rbp), %rsi
subq %rdi, %rsi
jmp 0x297e
movq %rdx, %r14
movq %rax, -0x30(%rbp)
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x2983
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x21c0
xorl %r15d, %r15d
jmp 0x298f
movq %rdx, %r14
movq %rax, -0x30(%rbp)
cmpl $0x1, %r14d
jne 0x33cd
movq -0x30(%rbp), %rdi
callq 0x2080
cmpl $0x1, (%rax)
jne 0x2b90
movq %r13, %rdi
leaq 0x26b6(%rip), %rsi      # 0x506b
callq 0x2050
testl %eax, %eax
jne 0x29c3
callq 0x40e1
movq %r13, %rdi
leaq 0x26ab(%rip), %rsi      # 0x5078
callq 0x2050
testl %eax, %eax
jne 0x2a0d
leaq -0x1a8(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x34a0
leaq -0x1a8(%rbp), %rdi
callq 0x3f34
movq -0x1a8(%rbp), %rdi
testq %rdi, %rdi
je 0x2a0d
movq -0x198(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
movq %r13, %rdi
leaq 0x2659(%rip), %rsi      # 0x5070
callq 0x2050
testl %eax, %eax
jne 0x2a33
leaq -0x60(%rbp), %rdi
movl %ebx, %esi
callq 0x4532
testl %eax, %eax
jne 0x30ef
movq %r13, %rdi
leaq 0x263a(%rip), %rsi      # 0x5077
callq 0x2050
testl %eax, %eax
jne 0x2a90
leaq -0x60(%rbp), %rdi
movl %ebx, %esi
callq 0x4532
testl %eax, %eax
jne 0x3129
leaq -0x190(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x34a0
leaq -0x190(%rbp), %rdi
callq 0x3f34
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x2a90
movq -0x180(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
movq %r13, %rdi
leaq 0x25e3(%rip), %rsi      # 0x507d
callq 0x2050
testl %eax, %eax
jne 0x2c2c
movq 0x4522(%rip), %rdi      # 0x6fd0
callq 0x2090
movq %rax, %r14
movl $0xe, %edx
movq %rax, %rdi
leaq 0x25bd(%rip), %rsi      # 0x5082
callq 0x21e0
movq %r14, %rdi
callq 0x2090
movq -0x80(%rbp), %rax
movq %rax, -0x30(%rbp)
cmpq -0x78(%rbp), %rax
je 0x2bef
movl $0x0, -0x3c(%rbp)
movq -0x30(%rbp), %rax
movq (%rax), %rsi
movq 0x8(%rax), %rax
movq %rax, -0xb0(%rbp)
movq 0x44cc(%rip), %rdi      # 0x6fd0
movq (%rdi), %rax
movq -0x18(%rax), %rax
movl 0x18(%rdi,%rax), %ecx
andl $-0x4b, %ecx
orl $0x8, %ecx
movl %ecx, 0x18(%rdi,%rax)
movq %rsi, -0x178(%rbp)
callq 0x20d0
movq %rax, %r14
movl $0x3, %edx
movq %rax, %rdi
leaq 0x255a(%rip), %rsi      # 0x5091
callq 0x21e0
movq %r14, %rdi
movq -0xb0(%rbp), %rsi
callq 0x20d0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
movl 0x18(%rax,%rcx), %edx
andl $-0x4b, %edx
orl $0x2, %edx
movl %edx, 0x18(%rax,%rcx)
movq %rax, %rdi
callq 0x2090
movq -0xb0(%rbp), %rax
subl -0x178(%rbp), %eax
addl %eax, -0x3c(%rbp)
movq -0x30(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x30(%rbp)
cmpq -0x78(%rbp), %rax
jne 0x2aeb
jmp 0x2bf6
leaq -0xc0(%rbp), %rax
movq %rax, -0xd0(%rbp)
leaq -0xd0(%rbp), %rdi
leaq 0x257b(%rip), %rsi      # 0x5127
leaq 0x257b(%rip), %rdx      # 0x512e
callq 0x3524
leaq -0xd0(%rbp), %rdi
callq 0x407f
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x2f07
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x21c0
jmp 0x2f07
movl $0x0, -0x3c(%rbp)
movq 0x43d3(%rip), %rdi      # 0x6fd0
callq 0x2090
movq %rax, %rdi
movl -0x3c(%rbp), %esi
callq 0x22e0
movq %rax, %r14
movl $0x9, %edx
movq %rax, %rdi
leaq 0x2476(%rip), %rsi      # 0x5095
callq 0x21e0
movq %r14, %rdi
callq 0x2090
movq %r13, %rdi
leaq 0x2469(%rip), %rsi      # 0x509f
callq 0x2050
testl %eax, %eax
jne 0x2c71
movq -0x80(%rbp), %rax
cmpq %rax, -0x78(%rbp)
je 0x2c4d
movq %rax, -0x78(%rbp)
movq -0x60(%rbp), %rax
cmpq %rax, -0x58(%rbp)
je 0x2c5b
movq %rax, -0x58(%rbp)
leaq -0x80(%rbp), %rdi
movl %ebx, %esi
callq 0x3600
movb $0x1, %r15b
testl %eax, %eax
jne 0x3163
movl $0x3, %ecx
leaq -0x408(%rbp), %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x21d0
leaq -0x408(%rbp), %rdi
leaq 0x2719(%rip), %rsi      # 0x53ae
callq 0x2050
movl %eax, %r14d
movq -0x408(%rbp), %rdi
leaq -0x3f8(%rbp), %rax
cmpq %rax, %rdi
je 0x2cbf
movq -0x3f8(%rbp), %rsi
incq %rsi
callq 0x21c0
testl %r14d, %r14d
jne 0x2e83
movq -0x168(%rbp), %rcx
cmpq $0x4, %rcx
ja 0x2cfe
movl $0x18, %edx
movq 0x42ef(%rip), %rdi      # 0x6fd0
leaq 0x23bd(%rip), %rsi      # 0x50a5
callq 0x21e0
movq 0x42dc(%rip), %rdi      # 0x6fd0
callq 0x2090
jmp 0x2e83
movl $0x0, -0x38(%rbp)
movl $0x4, %edx
leaq -0xa8(%rbp), %rdi
movq %r13, %rsi
callq 0x21d0
leaq -0x408(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
movl $0x18, %edx
callq 0x2280
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x2d53
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21c0
leaq -0x408(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x20c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
setne %r14b
je 0x2dc5
leaq -0x120(%rbp), %rax
movq %rax, -0x130(%rbp)
leaq -0x130(%rbp), %rdi
leaq 0x232d(%rip), %rsi      # 0x50be
leaq 0x2345(%rip), %rdx      # 0x50dd
callq 0x3524
leaq -0x130(%rbp), %rdi
callq 0x407f
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
jne 0x2e48
jmp 0x2e58
movq -0x80(%rbp), %rax
cmpq %rax, -0x78(%rbp)
je 0x2dd3
movq %rax, -0x78(%rbp)
movq -0x60(%rbp), %rax
cmpq %rax, -0x58(%rbp)
je 0x2de1
movq %rax, -0x58(%rbp)
movl -0x38(%rbp), %ebx
leaq -0x80(%rbp), %rdi
movl %ebx, %esi
callq 0x3600
testl %eax, %eax
je 0x2e55
leaq -0x100(%rbp), %rax
movq %rax, -0x110(%rbp)
leaq -0x110(%rbp), %rdi
leaq 0x220c(%rip), %rsi      # 0x501b
leaq 0x221a(%rip), %rdx      # 0x5030
callq 0x3524
leaq -0x110(%rbp), %rdi
callq 0x407f
movq -0x110(%rbp), %rdi
movl $0x1, -0x34(%rbp)
movb $0x1, %r15b
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x3060
movq (%rax), %rsi
incq %rsi
callq 0x21c0
jmp 0x2e5b
movb $0x1, %r15b
movb $0x1, %r14b
leaq -0x408(%rbp), %rdi
movq 0x4147(%rip), %rsi      # 0x6fb0
callq 0x2110
movq -0x88(%rbp), %rdi
callq 0x2060
testb %r14b, %r14b
je 0x31b2
movl $0x3, %ecx
leaq -0x408(%rbp), %rdi
movq %r13, %rsi
xorl %edx, %edx
callq 0x21d0
leaq -0x408(%rbp), %rdi
leaq 0x21fa(%rip), %rsi      # 0x50a1
callq 0x2050
movl %eax, %r14d
movq -0x408(%rbp), %rdi
leaq -0x3f8(%rbp), %rax
cmpq %rax, %rdi
je 0x2ed1
movq -0x3f8(%rbp), %rsi
incq %rsi
callq 0x21c0
testl %r14d, %r14d
jne 0x2f07
movq -0x168(%rbp), %rcx
cmpq $0x4, %rcx
ja 0x2f11
movl $0x14, %edx
movq 0x40e1(%rip), %rdi      # 0x6fd0
leaq 0x21e8(%rip), %rsi      # 0x50de
callq 0x21e0
movq 0x40ce(%rip), %rdi      # 0x6fd0
callq 0x2090
callq 0x22b0
jmp 0x28d4
movl $0x0, -0x38(%rbp)
movl $0x4, %edx
leaq -0xa8(%rbp), %rdi
movq %r13, %rsi
callq 0x21d0
leaq -0x408(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
movl $0x18, %edx
callq 0x2280
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x2f66
movq -0x98(%rbp), %rsi
incq %rsi
callq 0x21c0
leaq -0x408(%rbp), %rdi
leaq -0x38(%rbp), %rsi
callq 0x20c0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
je 0x2fe1
leaq -0xe0(%rbp), %rax
movq %rax, -0xf0(%rbp)
leaq -0xf0(%rbp), %rdi
leaq 0x2153(%rip), %rsi      # 0x50f3
leaq 0x216b(%rip), %rdx      # 0x5112
callq 0x3524
leaq -0xf0(%rbp), %rdi
callq 0x407f
movq -0xf0(%rbp), %rdi
movb $0x1, %al
movl %eax, -0x30(%rbp)
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x302c
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x21c0
jmp 0x302c
movl -0x38(%rbp), %edx
leaq -0x60(%rbp), %rdi
movl %ebx, %esi
callq 0x45cb
testl %eax, %eax
je 0x3027
movl $0x13, %edx
movq 0x3fd1(%rip), %rdi      # 0x6fd0
leaq 0x210d(%rip), %rsi      # 0x5113
callq 0x21e0
movq 0x3fbe(%rip), %rdi      # 0x6fd0
callq 0x2090
movl $0x1, -0x34(%rbp)
movl $0x0, -0x30(%rbp)
jmp 0x302c
movb $0x1, %al
movl %eax, -0x30(%rbp)
leaq -0x408(%rbp), %rdi
movq 0x3f76(%rip), %rsi      # 0x6fb0
callq 0x2110
movq -0x88(%rbp), %rdi
callq 0x2060
callq 0x22b0
movl -0x34(%rbp), %r14d
cmpb $0x0, -0x30(%rbp)
jne 0x28d4
jmp 0x3090
xorl %r14d, %r14d
jmp 0x2e5b
movq -0x150(%rbp), %rdi
movl $0x1, %r14d
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x3090
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x21c0
movq -0x60(%rbp), %rdi
testq %rdi, %rdi
je 0x30a5
movq -0x50(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x30ba
movq -0x70(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
movq -0x170(%rbp), %rdi
cmpq %r12, %rdi
je 0x30d5
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x21c0
movl %r14d, %eax
addq $0x3e8, %rsp            # imm = 0x3E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r14d, %r14d
jmp 0x3090
leaq -0x270(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x1f54(%rip), %rsi      # 0x5055
leaq 0x1f62(%rip), %rdx      # 0x506a
leaq -0x280(%rbp), %rdi
callq 0x3524
leaq -0x280(%rbp), %rdi
callq 0x407f
movq -0x280(%rbp), %rdi
jmp 0x319b
leaq -0x250(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x1f1a(%rip), %rsi      # 0x5055
leaq 0x1f28(%rip), %rdx      # 0x506a
leaq -0x260(%rbp), %rdi
callq 0x3524
leaq -0x260(%rbp), %rdi
callq 0x407f
movq -0x260(%rbp), %rdi
jmp 0x319b
leaq -0x230(%rbp), %rbx
movq %rbx, -0x10(%rbx)
leaq 0x1ea6(%rip), %rsi      # 0x501b
leaq 0x1eb4(%rip), %rdx      # 0x5030
leaq -0x240(%rbp), %rdi
callq 0x3524
leaq -0x240(%rbp), %rdi
callq 0x407f
movq -0x240(%rbp), %rdi
cmpq %rbx, %rdi
je 0x31ab
movq (%rbx), %rsi
incq %rsi
callq 0x21c0
movl $0x1, -0x34(%rbp)
callq 0x22b0
movl -0x34(%rbp), %r14d
jmp 0x3090
movq %rax, -0x30(%rbp)
movq -0x240(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3367
movq -0x230(%rbp), %rsi
jmp 0x333d
jmp 0x3342
movq %rax, -0x30(%rbp)
movq -0x260(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3367
movq -0x250(%rbp), %rsi
jmp 0x333d
jmp 0x3342
movq %rax, -0x30(%rbp)
movq -0x280(%rbp), %rdi
cmpq %rbx, %rdi
je 0x3367
movq -0x270(%rbp), %rsi
jmp 0x333d
jmp 0x3342
jmp 0x32b6
movq %rax, -0x30(%rbp)
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x32ba
movq -0xe0(%rbp), %rsi
jmp 0x32ac
jmp 0x32b6
jmp 0x32de
jmp 0x3342
jmp 0x3342
jmp 0x3342
movq %rax, -0x30(%rbp)
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x32ba
movq -0x100(%rbp), %rsi
jmp 0x32ac
jmp 0x32b6
jmp 0x32b6
movq %rax, -0x30(%rbp)
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x32ba
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x21c0
jmp 0x32ba
movq %rax, -0x30(%rbp)
movq 0x3cef(%rip), %rsi      # 0x6fb0
leaq -0x408(%rbp), %rdi
callq 0x2110
movq -0x88(%rbp), %rdi
callq 0x2060
jmp 0x3367
movq %rax, -0x30(%rbp)
movq -0xa8(%rbp), %rdi
leaq -0x98(%rbp), %rax
cmpq %rax, %rdi
je 0x3367
movq -0x98(%rbp), %rsi
jmp 0x333d
jmp 0x3342
jmp 0x3342
jmp 0x3342
jmp 0x3342
movq %rax, -0x30(%rbp)
movq -0x190(%rbp), %rdi
testq %rdi, %rdi
je 0x3367
movq -0x180(%rbp), %rsi
jmp 0x335f
movq %rax, -0x30(%rbp)
movq -0xd0(%rbp), %rdi
leaq -0xc0(%rbp), %rax
cmpq %rax, %rdi
je 0x3367
movq -0xc0(%rbp), %rsi
incq %rsi
jmp 0x3362
movq %rax, -0x30(%rbp)
jmp 0x3367
movq %rax, -0x30(%rbp)
movq -0x1a8(%rbp), %rdi
testq %rdi, %rdi
je 0x3367
movq -0x198(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
callq 0x22b0
jmp 0x33cd
movq %rax, -0x30(%rbp)
movq -0x200(%rbp), %rdi
cmpq %rbx, %rdi
je 0x33cd
movq -0x1f0(%rbp), %rsi
jmp 0x33bd
jmp 0x33c9
movq %rax, -0x30(%rbp)
movq -0x1e0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x33cd
movq -0x1d0(%rbp), %rsi
jmp 0x33bd
jmp 0x33c9
jmp 0x33c9
movq %rax, -0x30(%rbp)
movq -0x220(%rbp), %rdi
cmpq %rbx, %rdi
je 0x33cd
movq -0x210(%rbp), %rsi
incq %rsi
callq 0x21c0
jmp 0x33cd
jmp 0x33c9
movq %rax, -0x30(%rbp)
movq -0x60(%rbp), %rdi
testq %rdi, %rdi
je 0x33e2
movq -0x50(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
movq -0x80(%rbp), %rdi
testq %rdi, %rdi
je 0x33f7
movq -0x70(%rbp), %rsi
subq %rdi, %rsi
callq 0x21c0
movq -0x170(%rbp), %rdi
cmpq %r12, %rdi
je 0x3412
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x21c0
movq -0x30(%rbp), %rdi
callq 0x22f0
nop