// File: stevedonovan[P]outstreams/testins.cpp
// Function: main
int main(int argc, char **argv)
{
    int i;
    double x = 1.2;
    int res = 0, N = 0;
    string s1,s2,s3;
    vector<string> lines;
    Reader::Error err;
    char ch = 'X';

    outs.sep(' ');

    outs("+++all lines from file matching some condition")();
    Reader inf("instream.cpp");
    while (inf.getline(s3)) {
        if (s3.find('#')==0)
            outs(s3)(eol);
    }
    // this will normally happen when inf goes out of scope
    inf.close();

    // alternatively, getlines will append lines using push_back
    // and an optional number of lines to grab can be set
    inf.open("instream.cpp");
    inf.getlines(lines,4);
    inf.close();
    outs(range(lines),quote_s)(eol);

    outs("+++read variables from file")();
    Reader rdr("input-test.txt");

    rdr(i)(x)(s1);
    outs(i)(x)(s1,quote_s)(eol);

    // this line fails since there's no good match for res
    // () means grab rest of line and continue...
    // (err) captures error state of instream
    rdr(i)(s1)(s2)()(res)(ch)(err);
    if (err) {
        outs("failed")(err.errcode)(err.msg)(eol);
    }
    outs(i)(s1)(s2)(res)(ch)(eol);


    outs("+++read input-test.txt contents")();
    string contents;
    Reader("input-test.txt").readall(contents);
    outs(contents)(eol);

    outs("+++read from string with errors")();
    StrReader sc(contents);
    sc()(i)(s1)(s2)()(res)(ch)(err);
    if (err) {
        outs("failed")(err.errcode)(err.msg)(eol);
    }
    outs(i)(s1)(s2)(res)(ch)(eol);

    outs("+++all header files in this directory")();
    lines.clear();
    CmdReader("ls *.h").getlines(lines);
    for (string L : lines) outs(L,quote_s)(eol);

    outs("+++file doesn't exist")();
    Reader b("bonzo.txt");
    b(res);
    if (! b) {
       outs("bonzo.txt doesn't exist")(b.error())(eol);
    }

    outs("+++CmdReader result")();
    string line = CmdReader("uname").line();
    outs("uname")(line)(eol);

    outs("+++How to execute commands silently and test errors")();
    string result = CmdReader("true",cmd_ok).line();   
    if (result == "OK") {
        outs("true is OK")(eol);
    }
    if (CmdReader("false",cmd_ok).line() != "OK") {
        outs("false is not OK")(eol);
    }

    int retcode;
    CmdReader("false",cmd_retcode) (retcode);
    outs("actual retcode")(retcode)(eol);

    /*

   s = "one two   30";
   StrReader ss(s);
   ss(s1)(s2)(res);

   printf("'%s' '%s' '%s' %d\n",C(s1),C(s2),C(s3),res);
*/
   return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x840, %rsp            # imm = 0x840
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movabsq $0x3ff3333333333333, %rax # imm = 0x3FF3333333333333
movq %rax, -0x20(%rbp)
movl $0x0, -0x24(%rbp)
movl $0x0, -0x28(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x3320
leaq -0x68(%rbp), %rdi
callq 0x3320
leaq -0x88(%rbp), %rdi
callq 0x3320
leaq -0xa0(%rbp), %rdi
callq 0x4e30
leaq -0xd0(%rbp), %rdi
callq 0x4e50
movb $0x58, -0xd1(%rbp)
leaq 0xaa67(%rip), %rdi      # 0xe300
movl $0x20, %esi
callq 0x8b80
jmp 0x38a5
leaq 0xaa54(%rip), %rdi      # 0xe300
leaq 0x677f(%rip), %rsi      # 0xa032
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x610(%rbp)
jmp 0x38c5
movq -0x610(%rbp), %rdi
callq 0x8c20
jmp 0x38d3
leaq 0x6787(%rip), %rsi      # 0xa061
leaq 0x69c6(%rip), %rdx      # 0xa2a7
leaq -0x128(%rbp), %rdi
callq 0x6460
jmp 0x38ef
jmp 0x38f1
leaq -0x128(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x78b0
movq %rax, -0x618(%rbp)
jmp 0x390d
movq -0x618(%rbp), %rdi
callq 0x6700
movb %al, -0x619(%rbp)
jmp 0x3921
movb -0x619(%rbp), %al
testb $0x1, %al
jne 0x3930
jmp 0x39b7
leaq -0x88(%rbp), %rdi
movl $0x23, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x32e0
cmpq $0x0, %rax
jne 0x39b2
leaq 0xa9ae(%rip), %rdi      # 0xe300
xorl %eax, %eax
movl %eax, %edx
leaq -0x88(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x628(%rbp)
jmp 0x396b
movq -0x628(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x3982
jmp 0x39b2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4d32
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4d26
jmp 0x38f1
leaq -0x128(%rbp), %rdi
callq 0x66a0
jmp 0x39c5
leaq -0x149(%rbp), %rdi
movq %rdi, -0x630(%rbp)
callq 0x33a0
movq -0x630(%rbp), %rdx
leaq 0x667b(%rip), %rsi      # 0xa061
leaq -0x148(%rbp), %rdi
callq 0x4d80
jmp 0x39f4
leaq 0x68ac(%rip), %rdx      # 0xa2a7
leaq -0x128(%rbp), %rdi
leaq -0x148(%rbp), %rsi
callq 0x6540
jmp 0x3a10
leaq -0x148(%rbp), %rdi
callq 0x3428
leaq -0x149(%rbp), %rdi
callq 0x3230
leaq -0x128(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
movl $0x4, %edx
callq 0x4f50
jmp 0x3a42
leaq -0x128(%rbp), %rdi
callq 0x66a0
jmp 0x3a50
leaq -0xa0(%rbp), %rdi
callq 0x50d0
movq %rdx, -0x640(%rbp)
movq %rax, -0x638(%rbp)
jmp 0x3a6c
movq -0x640(%rbp), %rax
movq -0x638(%rbp), %rcx
movq %rcx, -0x160(%rbp)
movq %rax, -0x158(%rbp)
leaq 0xa871(%rip), %rdi      # 0xe300
leaq 0x65d8(%rip), %rdx      # 0xa06e
leaq -0x160(%rbp), %rsi
movl $0x20, %ecx
callq 0x5040
movq %rax, -0x648(%rbp)
jmp 0x3ab0
movq -0x648(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x3ac7
leaq 0xa832(%rip), %rdi      # 0xe300
leaq 0x659b(%rip), %rsi      # 0xa070
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x650(%rbp)
jmp 0x3ae7
movq -0x650(%rbp), %rdi
callq 0x8c20
jmp 0x3af5
leaq 0x6590(%rip), %rsi      # 0xa08c
leaq 0x67a4(%rip), %rdx      # 0xa2a7
leaq -0x1a0(%rbp), %rdi
callq 0x6460
jmp 0x3b11
xorl %eax, %eax
movl %eax, %edx
leaq -0x1a0(%rbp), %rdi
leaq -0x14(%rbp), %rsi
callq 0x7460
movq %rax, -0x658(%rbp)
jmp 0x3b2e
movq -0x658(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x20(%rbp), %rsi
callq 0x7320
movq %rax, -0x660(%rbp)
jmp 0x3b4b
movq -0x660(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x48(%rbp), %rsi
callq 0x6dc0
jmp 0x3b61
movl -0x14(%rbp), %esi
leaq 0xa795(%rip), %rdi      # 0xe300
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x668(%rbp)
jmp 0x3b7d
movq -0x668(%rbp), %rdi
movsd -0x20(%rbp), %xmm0
xorl %eax, %eax
movl %eax, %esi
callq 0x5160
movq %rax, -0x670(%rbp)
jmp 0x3b9b
movq -0x670(%rbp), %rdi
leaq 0x64c5(%rip), %rdx      # 0xa06e
leaq -0x48(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x678(%rbp)
jmp 0x3bbb
movq -0x678(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x3bd2
xorl %eax, %eax
movl %eax, %edx
leaq -0x1a0(%rbp), %rdi
leaq -0x14(%rbp), %rsi
callq 0x7460
movq %rax, -0x680(%rbp)
jmp 0x3bef
movq -0x680(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x48(%rbp), %rsi
callq 0x6dc0
movq %rax, -0x688(%rbp)
jmp 0x3c0c
movq -0x688(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x68(%rbp), %rsi
callq 0x6dc0
movq %rax, -0x690(%rbp)
jmp 0x3c29
movq -0x690(%rbp), %rdi
callq 0x77f0
movq %rax, -0x698(%rbp)
jmp 0x3c3e
movq -0x698(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x24(%rbp), %rsi
callq 0x7460
movq %rax, -0x6a0(%rbp)
jmp 0x3c5b
movq -0x6a0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0xd1(%rbp), %rsi
callq 0x76a0
movq %rax, -0x6a8(%rbp)
jmp 0x3c7b
movq -0x6a8(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x72d0
jmp 0x3c90
leaq -0xd0(%rbp), %rdi
callq 0x51a0
movb %al, -0x6a9(%rbp)
jmp 0x3ca4
movb -0x6a9(%rbp), %al
testb $0x1, %al
jne 0x3cb3
jmp 0x3d85
leaq 0xa646(%rip), %rdi      # 0xe300
leaq 0x63da(%rip), %rsi      # 0xa09b
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x6b8(%rbp)
jmp 0x3cd3
movq -0x6b8(%rbp), %rdi
movl -0xd0(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x6c0(%rbp)
jmp 0x3cf2
movq -0x6c0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x4eb0
movq %rax, -0x6c8(%rbp)
jmp 0x3d12
movq -0x6c8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x3d29
jmp 0x3d85
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x3d5d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x3428
leaq -0x149(%rbp), %rdi
callq 0x3230
jmp 0x4d26
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4d1a
movl -0x14(%rbp), %esi
leaq 0xa571(%rip), %rdi      # 0xe300
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x6d0(%rbp)
jmp 0x3da1
movq -0x6d0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x48(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x6d8(%rbp)
jmp 0x3dbe
movq -0x6d8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x68(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x6e0(%rbp)
jmp 0x3ddb
movq -0x6e0(%rbp), %rdi
movl -0x24(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x6e8(%rbp)
jmp 0x3df7
movq -0x6e8(%rbp), %rdi
movsbl -0xd1(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x4ef0
movq %rax, -0x6f0(%rbp)
jmp 0x3e17
movq -0x6f0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x3e2e
leaq 0xa4cb(%rip), %rdi      # 0xe300
leaq 0x6266(%rip), %rsi      # 0xa0a2
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x6f8(%rbp)
jmp 0x3e4e
movq -0x6f8(%rbp), %rdi
callq 0x8c20
jmp 0x3e5c
leaq -0x1c0(%rbp), %rdi
callq 0x3320
leaq 0x621d(%rip), %rsi      # 0xa08c
leaq 0x6431(%rip), %rdx      # 0xa2a7
leaq -0x200(%rbp), %rdi
callq 0x6460
jmp 0x3e84
leaq -0x200(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x7230
jmp 0x3e99
leaq -0x200(%rbp), %rdi
callq 0x6660
leaq 0xa454(%rip), %rdi      # 0xe300
xorl %eax, %eax
movl %eax, %edx
leaq -0x1c0(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x700(%rbp)
jmp 0x3ec5
movq -0x700(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x3edc
leaq 0xa41d(%rip), %rdi      # 0xe300
leaq 0x61d8(%rip), %rsi      # 0xa0c2
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x708(%rbp)
jmp 0x3efc
movq -0x708(%rbp), %rdi
callq 0x8c20
jmp 0x3f0a
leaq -0x250(%rbp), %rdi
leaq -0x1c0(%rbp), %rsi
callq 0x7c70
jmp 0x3f1f
leaq -0x250(%rbp), %rdi
callq 0x77f0
movq %rax, -0x710(%rbp)
jmp 0x3f34
movq -0x710(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x14(%rbp), %rsi
callq 0x7460
movq %rax, -0x718(%rbp)
jmp 0x3f51
movq -0x718(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x48(%rbp), %rsi
callq 0x6dc0
movq %rax, -0x720(%rbp)
jmp 0x3f6e
movq -0x720(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x68(%rbp), %rsi
callq 0x6dc0
movq %rax, -0x728(%rbp)
jmp 0x3f8b
movq -0x728(%rbp), %rdi
callq 0x77f0
movq %rax, -0x730(%rbp)
jmp 0x3fa0
movq -0x730(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x24(%rbp), %rsi
callq 0x7460
movq %rax, -0x738(%rbp)
jmp 0x3fbd
movq -0x738(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0xd1(%rbp), %rsi
callq 0x76a0
movq %rax, -0x740(%rbp)
jmp 0x3fdd
movq -0x740(%rbp), %rdi
leaq -0xd0(%rbp), %rsi
callq 0x72d0
jmp 0x3ff2
leaq -0xd0(%rbp), %rdi
callq 0x51a0
movb %al, -0x741(%rbp)
jmp 0x4006
movb -0x741(%rbp), %al
testb $0x1, %al
jne 0x4015
jmp 0x40de
leaq 0xa2e4(%rip), %rdi      # 0xe300
leaq 0x6078(%rip), %rsi      # 0xa09b
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x750(%rbp)
jmp 0x4035
movq -0x750(%rbp), %rdi
movl -0xd0(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x758(%rbp)
jmp 0x4054
movq -0x758(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
xorl %eax, %eax
movl %eax, %edx
callq 0x4eb0
movq %rax, -0x760(%rbp)
jmp 0x4074
movq -0x760(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x408b
jmp 0x40de
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x200(%rbp), %rdi
callq 0x6660
jmp 0x4d0e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4d02
movl -0x14(%rbp), %esi
leaq 0xa218(%rip), %rdi      # 0xe300
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x768(%rbp)
jmp 0x40fa
movq -0x768(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x48(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x770(%rbp)
jmp 0x4117
movq -0x770(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x68(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x778(%rbp)
jmp 0x4134
movq -0x778(%rbp), %rdi
movl -0x24(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x780(%rbp)
jmp 0x4150
movq -0x780(%rbp), %rdi
movsbl -0xd1(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x4ef0
movq %rax, -0x788(%rbp)
jmp 0x4170
movq -0x788(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x4187
leaq 0xa172(%rip), %rdi      # 0xe300
leaq 0x5f4d(%rip), %rsi      # 0xa0e2
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x790(%rbp)
jmp 0x41a7
movq -0x790(%rbp), %rdi
callq 0x8c20
jmp 0x41b5
leaq -0xa0(%rbp), %rdi
callq 0x51c0
leaq -0x2b1(%rbp), %rdi
movq %rdi, -0x798(%rbp)
callq 0x33a0
movq -0x798(%rbp), %rdx
leaq 0x5f26(%rip), %rsi      # 0xa108
leaq -0x2b0(%rbp), %rdi
callq 0x4d80
jmp 0x41f0
leaq -0x2d9(%rbp), %rdi
movq %rdi, -0x7a0(%rbp)
callq 0x33a0
movq -0x7a0(%rbp), %rdx
leaq 0x60ac(%rip), %rsi      # 0xa2bd
leaq -0x2d8(%rbp), %rdi
callq 0x4d80
jmp 0x421f
leaq -0x290(%rbp), %rdi
leaq -0x2b0(%rbp), %rsi
leaq -0x2d8(%rbp), %rdx
callq 0x7ac0
jmp 0x423b
leaq -0x290(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
movq $-0x1, %rdx
callq 0x4f50
jmp 0x4257
leaq -0x290(%rbp), %rdi
callq 0x51e0
leaq -0x2d8(%rbp), %rdi
callq 0x3428
leaq -0x2d9(%rbp), %rdi
callq 0x3230
leaq -0x2b0(%rbp), %rdi
callq 0x3428
leaq -0x2b1(%rbp), %rdi
callq 0x3230
leaq -0xa0(%rbp), %rax
movq %rax, -0x2e8(%rbp)
movq -0x2e8(%rbp), %rdi
callq 0x5200
movq %rax, -0x2f0(%rbp)
movq -0x2e8(%rbp), %rdi
callq 0x5230
movq %rax, -0x2f8(%rbp)
leaq -0x2f0(%rbp), %rdi
leaq -0x2f8(%rbp), %rsi
callq 0x5260
testb $0x1, %al
jne 0x42e3
jmp 0x4409
leaq -0x2f0(%rbp), %rdi
callq 0x52a0
movq %rax, %rsi
leaq -0x318(%rbp), %rdi
callq 0x3100
jmp 0x4300
leaq 0x9ff9(%rip), %rdi      # 0xe300
leaq 0x5d60(%rip), %rdx      # 0xa06e
leaq -0x318(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x7a8(%rbp)
jmp 0x4323
movq -0x7a8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x433a
leaq -0x318(%rbp), %rdi
callq 0x3428
leaq -0x2f0(%rbp), %rdi
callq 0x52c0
jmp 0x42c7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x43d5
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x43bd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x43b1
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x290(%rbp), %rdi
callq 0x51e0
leaq -0x2d8(%rbp), %rdi
callq 0x3428
leaq -0x2d9(%rbp), %rdi
callq 0x3230
leaq -0x2b0(%rbp), %rdi
callq 0x3428
leaq -0x2b1(%rbp), %rdi
callq 0x3230
jmp 0x4d02
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x318(%rbp), %rdi
callq 0x3428
jmp 0x4d02
leaq 0x9ef0(%rip), %rdi      # 0xe300
leaq 0x5cf8(%rip), %rsi      # 0xa10f
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x7b0(%rbp)
jmp 0x4429
movq -0x7b0(%rbp), %rdi
callq 0x8c20
jmp 0x4437
leaq 0x5ce7(%rip), %rsi      # 0xa125
leaq 0x5e62(%rip), %rdx      # 0xa2a7
leaq -0x358(%rbp), %rdi
callq 0x6460
jmp 0x4453
xorl %eax, %eax
movl %eax, %edx
leaq -0x358(%rbp), %rdi
leaq -0x24(%rbp), %rsi
callq 0x7460
jmp 0x4469
leaq -0x358(%rbp), %rdi
callq 0x6700
movb %al, -0x7b1(%rbp)
jmp 0x447d
movb -0x7b1(%rbp), %al
testb $0x1, %al
jne 0x4541
jmp 0x448d
leaq 0x9e6c(%rip), %rdi      # 0xe300
leaq 0x5c94(%rip), %rsi      # 0xa12f
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x7c0(%rbp)
jmp 0x44ad
leaq -0x378(%rbp), %rdi
leaq -0x358(%rbp), %rsi
callq 0x6740
jmp 0x44c2
movq -0x7c0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x378(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x7c8(%rbp)
jmp 0x44e2
movq -0x7c8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x44f9
leaq -0x378(%rbp), %rdi
callq 0x3428
jmp 0x4541
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4cf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x378(%rbp), %rdi
callq 0x3428
jmp 0x4cf6
leaq 0x9db8(%rip), %rdi      # 0xe300
leaq 0x5bf8(%rip), %rsi      # 0xa147
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x7d0(%rbp)
jmp 0x4561
movq -0x7d0(%rbp), %rdi
callq 0x8c20
jmp 0x456f
leaq -0x3f9(%rbp), %rdi
movq %rdi, -0x7d8(%rbp)
callq 0x33a0
movq -0x7d8(%rbp), %rdx
leaq 0x5bcb(%rip), %rsi      # 0xa15b
leaq -0x3f8(%rbp), %rdi
callq 0x4d80
jmp 0x459e
leaq -0x421(%rbp), %rdi
movq %rdi, -0x7e0(%rbp)
callq 0x33a0
movq -0x7e0(%rbp), %rdx
leaq 0x5cfe(%rip), %rsi      # 0xa2bd
leaq -0x420(%rbp), %rdi
callq 0x4d80
jmp 0x45cd
leaq -0x3d8(%rbp), %rdi
leaq -0x3f8(%rbp), %rsi
leaq -0x420(%rbp), %rdx
callq 0x7ac0
jmp 0x45e9
leaq -0x398(%rbp), %rdi
leaq -0x3d8(%rbp), %rsi
callq 0x7bf0
jmp 0x45fe
leaq -0x3d8(%rbp), %rdi
callq 0x51e0
leaq -0x420(%rbp), %rdi
callq 0x3428
leaq -0x421(%rbp), %rdi
callq 0x3230
leaq -0x3f8(%rbp), %rdi
callq 0x3428
leaq -0x3f9(%rbp), %rdi
callq 0x3230
leaq 0x9cbf(%rip), %rdi      # 0xe300
leaq 0x5b13(%rip), %rsi      # 0xa15b
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x7e8(%rbp)
jmp 0x465a
movq -0x7e8(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
leaq -0x398(%rbp), %rsi
callq 0x4eb0
movq %rax, -0x7f0(%rbp)
jmp 0x467a
movq -0x7f0(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x4691
leaq 0x9c68(%rip), %rdi      # 0xe300
leaq 0x5ac2(%rip), %rsi      # 0xa161
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x7f8(%rbp)
jmp 0x46b1
movq -0x7f8(%rbp), %rdi
callq 0x8c20
jmp 0x46bf
leaq -0x4a9(%rbp), %rdi
movq %rdi, -0x800(%rbp)
callq 0x33a0
movq -0x800(%rbp), %rdx
leaq 0x5ab5(%rip), %rsi      # 0xa195
leaq -0x4a8(%rbp), %rdi
callq 0x4d80
jmp 0x46ee
leaq 0x9b43(%rip), %rsi      # 0xe238
leaq -0x4d0(%rbp), %rdi
callq 0x3100
jmp 0x4703
leaq -0x488(%rbp), %rdi
leaq -0x4a8(%rbp), %rsi
leaq -0x4d0(%rbp), %rdx
callq 0x7ac0
jmp 0x471f
leaq -0x448(%rbp), %rdi
leaq -0x488(%rbp), %rsi
callq 0x7bf0
jmp 0x4734
leaq -0x488(%rbp), %rdi
callq 0x51e0
leaq -0x4d0(%rbp), %rdi
callq 0x3428
leaq -0x4a8(%rbp), %rdi
callq 0x3428
leaq -0x4a9(%rbp), %rdi
callq 0x3230
leaq 0x58ad(%rip), %rsi      # 0xa018
leaq -0x448(%rbp), %rdi
callq 0x52e0
movb %al, -0x801(%rbp)
jmp 0x477f
movb -0x801(%rbp), %al
testb $0x1, %al
jne 0x478e
jmp 0x490a
leaq 0x9b6b(%rip), %rdi      # 0xe300
leaq 0x59fe(%rip), %rsi      # 0xa19a
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x810(%rbp)
jmp 0x47ae
movq -0x810(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x47c5
jmp 0x490a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4848
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4830
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4824
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x3d8(%rbp), %rdi
callq 0x51e0
leaq -0x420(%rbp), %rdi
callq 0x3428
leaq -0x421(%rbp), %rdi
callq 0x3230
leaq -0x3f8(%rbp), %rdi
callq 0x3428
leaq -0x3f9(%rbp), %rdi
callq 0x3230
jmp 0x4cf6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4cea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x48e2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x48d6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x48ca
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x488(%rbp), %rdi
callq 0x51e0
leaq -0x4d0(%rbp), %rdi
callq 0x3428
leaq -0x4a8(%rbp), %rdi
callq 0x3428
leaq -0x4a9(%rbp), %rdi
callq 0x3230
jmp 0x4cea
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4cde
leaq -0x551(%rbp), %rdi
movq %rdi, -0x818(%rbp)
callq 0x33a0
movq -0x818(%rbp), %rdx
leaq 0x587a(%rip), %rsi      # 0xa1a5
leaq -0x550(%rbp), %rdi
callq 0x4d80
jmp 0x4939
leaq 0x98f8(%rip), %rsi      # 0xe238
leaq -0x578(%rbp), %rdi
callq 0x3100
jmp 0x494e
leaq -0x530(%rbp), %rdi
leaq -0x550(%rbp), %rsi
leaq -0x578(%rbp), %rdx
callq 0x7ac0
jmp 0x496a
leaq -0x4f0(%rbp), %rdi
leaq -0x530(%rbp), %rsi
callq 0x7bf0
jmp 0x497f
leaq 0x5692(%rip), %rsi      # 0xa018
leaq -0x4f0(%rbp), %rdi
callq 0x5310
movb %al, -0x819(%rbp)
jmp 0x499a
leaq -0x4f0(%rbp), %rdi
callq 0x3428
leaq -0x530(%rbp), %rdi
callq 0x51e0
leaq -0x578(%rbp), %rdi
callq 0x3428
leaq -0x550(%rbp), %rdi
callq 0x3428
leaq -0x551(%rbp), %rdi
callq 0x3230
movb -0x819(%rbp), %al
testb $0x1, %al
jne 0x49e5
jmp 0x4ac4
leaq 0x9914(%rip), %rdi      # 0xe300
leaq 0x57b8(%rip), %rsi      # 0xa1ab
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x828(%rbp)
jmp 0x4a05
movq -0x828(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x4a1c
jmp 0x4ac4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4ab3
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4aa7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4a9b
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4a8f
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x4f0(%rbp), %rdi
callq 0x3428
leaq -0x530(%rbp), %rdi
callq 0x51e0
leaq -0x578(%rbp), %rdi
callq 0x3428
leaq -0x550(%rbp), %rdi
callq 0x3428
leaq -0x551(%rbp), %rdi
callq 0x3230
jmp 0x4cde
leaq -0x5e1(%rbp), %rdi
movq %rdi, -0x830(%rbp)
callq 0x33a0
movq -0x830(%rbp), %rdx
leaq 0x56c0(%rip), %rsi      # 0xa1a5
leaq -0x5e0(%rbp), %rdi
callq 0x4d80
jmp 0x4af3
leaq 0x975e(%rip), %rsi      # 0xe258
leaq -0x608(%rbp), %rdi
callq 0x3100
jmp 0x4b08
leaq -0x5c0(%rbp), %rdi
leaq -0x5e0(%rbp), %rsi
leaq -0x608(%rbp), %rdx
callq 0x7ac0
jmp 0x4b24
xorl %eax, %eax
movl %eax, %edx
leaq -0x5c0(%rbp), %rdi
leaq -0x57c(%rbp), %rsi
callq 0x7460
jmp 0x4b3d
leaq -0x5c0(%rbp), %rdi
callq 0x51e0
leaq -0x608(%rbp), %rdi
callq 0x3428
leaq -0x5e0(%rbp), %rdi
callq 0x3428
leaq -0x5e1(%rbp), %rdi
callq 0x3230
leaq 0x978c(%rip), %rdi      # 0xe300
leaq 0x5640(%rip), %rsi      # 0xa1bb
xorl %eax, %eax
movl %eax, %edx
callq 0x4e70
movq %rax, -0x838(%rbp)
jmp 0x4b8d
movq -0x838(%rbp), %rdi
movl -0x57c(%rbp), %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x5120
movq %rax, -0x840(%rbp)
jmp 0x4bac
movq -0x840(%rbp), %rdi
xorl %eax, %eax
movl %eax, %edx
movl $0xa, %esi
callq 0x4ef0
jmp 0x4bc3
movl $0x0, -0x4(%rbp)
leaq -0x448(%rbp), %rdi
callq 0x3428
leaq -0x398(%rbp), %rdi
callq 0x3428
leaq -0x358(%rbp), %rdi
callq 0x6660
leaq -0x250(%rbp), %rdi
callq 0x5340
leaq -0x1c0(%rbp), %rdi
callq 0x3428
leaq -0x1a0(%rbp), %rdi
callq 0x6660
leaq -0x128(%rbp), %rdi
callq 0x6660
leaq -0xd0(%rbp), %rdi
callq 0x5360
leaq -0xa0(%rbp), %rdi
callq 0x5380
leaq -0x88(%rbp), %rdi
callq 0x3428
leaq -0x68(%rbp), %rdi
callq 0x3428
leaq -0x48(%rbp), %rdi
callq 0x3428
movl -0x4(%rbp), %eax
addq $0x840, %rsp            # imm = 0x840
popq %rbp
retq
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4cd2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4cc6
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
jmp 0x4cba
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0xe0(%rbp)
movl %eax, -0xe4(%rbp)
leaq -0x5c0(%rbp), %rdi
callq 0x51e0
leaq -0x608(%rbp), %rdi
callq 0x3428
leaq -0x5e0(%rbp), %rdi
callq 0x3428
leaq -0x5e1(%rbp), %rdi
callq 0x3230
leaq -0x448(%rbp), %rdi
callq 0x3428
leaq -0x398(%rbp), %rdi
callq 0x3428
leaq -0x358(%rbp), %rdi
callq 0x6660
leaq -0x250(%rbp), %rdi
callq 0x5340
leaq -0x1c0(%rbp), %rdi
callq 0x3428
leaq -0x1a0(%rbp), %rdi
callq 0x6660
leaq -0x128(%rbp), %rdi
callq 0x6660
leaq -0xd0(%rbp), %rdi
callq 0x5360
leaq -0xa0(%rbp), %rdi
callq 0x5380
leaq -0x88(%rbp), %rdi
callq 0x3428
leaq -0x68(%rbp), %rdi
callq 0x3428
leaq -0x48(%rbp), %rdi
callq 0x3428
movq -0xe0(%rbp), %rdi
callq 0x3390
nopw %cs:(%rax,%rax)
nop