// File: /workspace/github_cpp_makefile_star2_O3/mshabbirhasan[P]ups-indel/src/ups_indel.cpp
// Function: generateEir(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, unsigned long, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>, _IO_FILE*)
void generateEir(string chrom, string pos, string id, string refer, string alt,
    string qual, string filter, string info, string * sequence,
    unsigned long int position, string pattern, string type,
    FILE * fout) {
    if (type == "I") {
        string x;
        string x_prime;
        string str1;
        string str2;
        unsigned long int ir, il;

        int length_difference = alt.length() - refer.length();

        if (refer.length() > 1 && refer == alt.substr(0, refer.length())) {
            position += refer.length() - 1;
        } else if (refer.length() > 2 &&
            refer == alt.substr(length_difference, alt.length())) {
            position -= 1;
        }

        /*********Extend to the right *************/
        x = pattern;
        x_prime = getLeftCircularPermutation( & x);
        ir = position - 1; // because in VCF file position starts from 1 but in

        if ((ir + 1) < sequence -> length()) {
            string r(1, sequence -> at(ir + 1));

            str1 = x + r;
            str2 = r + x_prime;

            while (str1.compare(str2) == 0) {
                x = x_prime;
                ir++;
                if ((ir + 1) >= sequence -> length()) {
                    ir--;
                    break;
                }
                r = sequence -> at(ir + 1);
                x_prime = getLeftCircularPermutation( & x);

                str1 = x + r;
                str2 = r + x_prime;
            }
        } else {
            ir--;
        }

        /*********Extend to the left *************/
        x = pattern;
        x_prime = getRightCircularPermutation( &x);
        il = position - 1; // because in VCF file position starts from 1 but seqan
        // starts string index from 0.
        if (il > 0) {
            string l(1, sequence -> at(il));

            str1 = l + x;
            str2 = x_prime + l;

            while (str1.compare(str2) == 0) {
                x = x_prime;
                il--;
                if (il < 0) {
                    break;
                }
                l = sequence -> at(il);
                x_prime = getRightCircularPermutation( &x);

                str1 = l + x;
                str2 = x_prime + l;
            }
        }

        fprintf(fout, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s%s%s%lu%s%lu%s\t%s\n",
            chrom.c_str(), pos.c_str(), id.c_str(), refer.c_str(), alt.c_str(),
            qual.c_str(), filter.c_str(), "+", x.c_str(), "[", (il + 2), " - ",
            (ir + 2), "]", info.c_str());
    } else if (type == "D") {
        string x;
        string x_prime;
        string str1;
        string str2;
        unsigned long int ir, il;

        int deletionLength = refer.length() - alt.length();

        if ((alt.length() > 1 && alt == refer.substr(0, alt.length()))) {
            if (alt != refer.substr(deletionLength, refer.length())) { // TCA TC
                position += alt.length() - 1;
            } else {
                if (alt.length() <= 2) { // AAAAAAAAA AA
                    position += alt.length() - 1;
                } else { // AAACAAA AAA
                    position += deletionLength - 1;
                }
            }
        } else if (alt.length() == 1 && alt == refer.substr(0, alt.length()) &&
            alt == refer.substr(refer.length() - 1)) { // CAC C
            if (deletionLength == 1) { // CC C
                position -= 1;
            } else { // CAC C
                position -= alt.length() + 1;
            }
        } else if (alt == refer.substr(deletionLength, refer.length()) &&
            refer.length() != 4 && alt.length() != 2 &&
            alt != refer.substr(0, deletionLength - 1)) { // TATAC TAC
            position -= 1;
        }

        /*********Extend to the right *************/

        x = pattern;

        int length = strlen(pattern.c_str());
        x_prime = getLeftCircularPermutation( & x);

        ir = position + 1;
        if (ir < sequence -> length()) {
            string substring = sequence -> substr(ir, length);

            while (substring.compare(x_prime) == 0) {
                ir++;
                x = x_prime;
                x_prime = getLeftCircularPermutation( & x);
                substring = sequence -> substr(ir, length);
            }
        }

        /*********Extend to the left *************/
        x = pattern;
        x_prime = getRightCircularPermutation( & x);
        il = position - 1;
        if (il >= 0) {
            string l(1, sequence -> at(il));

            str1 = l + x;
            str2 = x_prime + l;

            while (str1.compare(str2) == 0) {
                x = x_prime;
                il--;
                if (il < 0) {
                    break;
                }
                l = sequence -> at(il);
                x_prime = getRightCircularPermutation( & x);

                str1 = l + x;
                str2 = x_prime + l;
            }
        }

        fprintf(fout, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s%s%s%lu%s%lu%s\t%s\n",
            chrom.c_str(), pos.c_str(), id.c_str(), refer.c_str(), alt.c_str(),
            qual.c_str(), filter.c_str(), "-", x.c_str(), "[", (il + 2), " - ",
            ir, "]", info.c_str());
    } else if (type == "N/A") {
        fprintf(fout, "%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", chrom.c_str(),
            pos.c_str(), id.c_str(), refer.c_str(), alt.c_str(), qual.c_str(),
            filter.c_str(), "N/A[]", info.c_str());
    }
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x108, %rsp            # imm = 0x108
movq %r9, -0x128(%rbp)
movq %r8, -0x30(%rbp)
movq %rcx, %r14
movq %rdx, -0x120(%rbp)
movq %rsi, -0x118(%rbp)
movq %rdi, -0x110(%rbp)
movq 0x38(%rbp), %rbx
movq 0x28(%rbp), %rax
movq %rax, -0x58(%rbp)
leaq 0xd0df(%rip), %rsi      # 0x11022
movq %rbx, %rdi
callq 0x30e0
testl %eax, %eax
movq %r14, -0x60(%rbp)
je 0x3ff4
leaq 0xd0f8(%rip), %rsi      # 0x11056
movq %rbx, %rdi
callq 0x30e0
testl %eax, %eax
je 0x4097
leaq 0xd0e3(%rip), %rsi      # 0x11058
movq %rbx, %rdi
callq 0x30e0
testl %eax, %eax
jne 0x4e46
movq -0x110(%rbp), %rax
movq (%rax), %rdx
movq -0x118(%rbp), %rax
movq (%rax), %rcx
movq -0x120(%rbp), %rax
movq (%rax), %r8
movq -0x60(%rbp), %rax
movq (%rax), %r9
subq $0x8, %rsp
leaq 0xd0c3(%rip), %r10      # 0x11078
leaq 0xd0a0(%rip), %rsi      # 0x1105c
movq 0x40(%rbp), %rdi
xorl %eax, %eax
movq 0x18(%rbp), %r11
pushq (%r11)
pushq %r10
movq 0x10(%rbp), %r10
pushq (%r10)
movq -0x128(%rbp), %r10
pushq (%r10)
movq -0x30(%rbp), %r10
pushq (%r10)
callq 0x3480
addq $0x138, %rsp            # imm = 0x138
jmp 0x4e4d
leaq -0x90(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xb0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xf8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xd8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq 0x8(%r14), %rbx
cmpq $0x2, %rbx
jb 0x437d
movq -0x30(%rbp), %rsi
movq 0x8(%rsi), %r12
leaq -0x50(%rbp), %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x3360
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdx
cmpq -0x48(%rbp), %rdx
jne 0x413d
movq -0x50(%rbp), %r15
testq %rdx, %rdx
je 0x4152
movq -0x60(%rbp), %rax
movq (%rax), %rdi
movq %r15, %rsi
callq 0x3350
testl %eax, %eax
sete %r13b
jmp 0x4155
leaq -0x90(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xb0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xf8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0xd8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq -0x60(%rbp), %rbx
movq 0x8(%rbx), %r15
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rcx
subq %rcx, %r15
cmpq $0x2, %rcx
jb 0x425d
leaq -0x50(%rbp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3360
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
cmpq -0x48(%rbp), %rdx
jne 0x4146
movq -0x50(%rbp), %rbx
testq %rdx, %rdx
je 0x41eb
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x3350
testl %eax, %eax
sete %r12b
jmp 0x41ee
movq -0x50(%rbp), %r15
xorl %r13d, %r13d
jmp 0x4155
movq -0x50(%rbp), %rbx
xorl %r12d, %r12d
jmp 0x41ee
movb $0x1, %r13b
leaq -0x40(%rbp), %r14
cmpq %r14, %r15
je 0x4166
movq %r15, %rdi
callq 0x32f0
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rax
testb %r13b, %r13b
je 0x4186
movq 0x28(%rbp), %rcx
addq %rcx, %rax
decq %rax
movq %rax, -0x58(%rbp)
jmp 0x437d
cmpq $0x3, %rax
jb 0x437d
subq %rbx, %r12
movslq %r12d, %rdx
movq -0x30(%rbp), %rsi
movq 0x8(%rsi), %rcx
leaq -0x50(%rbp), %rdi
callq 0x3360
movq -0x60(%rbp), %rax
movq 0x8(%rax), %rdx
cmpq -0x48(%rbp), %rdx
jne 0x41df
movq -0x50(%rbp), %rbx
testq %rdx, %rdx
je 0x4365
movq -0x60(%rbp), %rax
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x3350
xorl %r15d, %r15d
cmpl $0x1, %eax
sbbq %r15, %r15
jmp 0x436c
movq -0x50(%rbp), %rbx
xorl %r15d, %r15d
jmp 0x436c
movb $0x1, %r12b
leaq -0x40(%rbp), %r14
cmpq %r14, %rbx
je 0x41ff
movq %rbx, %rdi
callq 0x32f0
testb %r12b, %r12b
je 0x4251
movslq %r15d, %rdx
movq -0x60(%rbp), %rsi
movq 0x8(%rsi), %rcx
leaq -0x50(%rbp), %rdi
callq 0x3360
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
cmpq -0x48(%rbp), %rdx
jne 0x42ad
movq -0x50(%rbp), %rbx
testq %rdx, %rdx
je 0x4311
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x3350
testl %eax, %eax
setne %r12b
jmp 0x4314
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rcx
movq -0x60(%rbp), %rbx
movq 0x28(%rbp), %r14
cmpq $0x1, %rcx
jne 0x4929
leaq -0x50(%rbp), %rdi
movl $0x1, %ecx
movq %rbx, %rsi
xorl %edx, %edx
callq 0x3360
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
cmpq -0x48(%rbp), %rdx
jne 0x42a5
testq %rdx, %rdx
je 0x42b6
movq -0x50(%rbp), %rsi
movq -0x30(%rbp), %rax
movq (%rax), %rdi
callq 0x3350
testl %eax, %eax
je 0x42b6
xorl %r14d, %r14d
jmp 0x48f8
movb $0x1, %r12b
movq -0x50(%rbp), %rbx
jmp 0x4314
movq 0x8(%rbx), %rdx
decq %rdx
leaq -0x80(%rbp), %rdi
movq %rbx, %rsi
movq $-0x1, %rcx
callq 0x3360
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
cmpq -0x78(%rbp), %rdx
jne 0x4305
movq -0x80(%rbp), %rbx
testq %rdx, %rdx
je 0x48e0
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x3350
testl %eax, %eax
sete %r14b
jmp 0x48e3
movq -0x80(%rbp), %rbx
xorl %r14d, %r14d
jmp 0x48e3
xorl %r12d, %r12d
cmpq %r14, %rbx
je 0x4321
movq %rbx, %rdi
callq 0x32f0
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
testb %r12b, %r12b
movq 0x28(%rbp), %rcx
movq 0x30(%rbp), %rbx
jne 0x433c
cmpq $0x2, %rax
ja 0x4344
addq %rcx, %rax
decq %rax
jmp 0x435c
shlq $0x20, %r15
movabsq $-0x100000000, %rax     # imm = 0xFFFFFFFF00000000
addq %r15, %rax
sarq $0x20, %rax
addq %rcx, %rax
movq %rax, -0x58(%rbp)
jmp 0x49b0
movq $-0x1, %r15
cmpq %r14, %rbx
je 0x4379
movq %rbx, %rdi
callq 0x32f0
addq %r15, -0x58(%rbp)
movq 0x20(%rbp), %r14
leaq -0xa0(%rbp), %rdi
movq 0x30(%rbp), %rsi
callq 0x31b0
leaq -0x50(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3d8d
leaq -0xc0(%rbp), %rdi
leaq -0x50(%rbp), %rbx
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x43c5
callq 0x32f0
movq -0x58(%rbp), %rax
movq %rax, %rbx
cmpq 0x8(%r14), %rax
jae 0x45ab
movq (%r14), %rax
movq -0x58(%rbp), %r14
movsbl (%rax,%r14), %edx
leaq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
movq %rax, (%rdi)
movl $0x1, %esi
callq 0x33b0
leaq -0x80(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x882a
leaq -0x108(%rbp), %rdi
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
leaq -0x70(%rbp), %r15
cmpq %r15, %rdi
je 0x442f
callq 0x32f0
leaq -0x80(%rbp), %rdi
leaq -0x50(%rbp), %rsi
leaq -0xc0(%rbp), %rdx
callq 0x882a
leaq -0xe8(%rbp), %rdi
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
cmpq %r15, %rdi
je 0x445f
callq 0x32f0
leaq 0x1(%r14), %r15
leaq -0x50(%rbp), %r12
leaq -0x80(%rbp), %r13
movq -0x100(%rbp), %r14
movq -0xe0(%rbp), %rbx
cmpq %r14, %rbx
movq %r14, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0x44b8
movq -0xe8(%rbp), %rsi
movq -0x108(%rbp), %rdi
callq 0x3350
cmpq %rbx, %r14
movq 0x20(%rbp), %r14
movq %r15, %rbx
leaq -0x70(%rbp), %r15
jne 0x4599
testl %eax, %eax
je 0x44cc
jmp 0x4599
cmpq %rbx, %r14
movq 0x20(%rbp), %r14
movq %r15, %rbx
leaq -0x70(%rbp), %r15
jne 0x4599
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x31b0
cmpq 0x8(%r14), %rbx
jae 0x4599
movq (%r14), %rax
movsbl (%rax,%rbx), %r8d
movq -0x48(%rbp), %rdx
movl $0x1, %ecx
movq %r12, %rdi
xorl %esi, %esi
callq 0x3620
movq %r13, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3d8d
leaq -0xc0(%rbp), %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
je 0x4530
callq 0x32f0
movq %r13, %rdi
leaq -0xa0(%rbp), %rsi
movq %r12, %rdx
callq 0x882a
leaq -0x108(%rbp), %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
je 0x455f
callq 0x32f0
movq %r13, %rdi
movq %r12, %rsi
leaq -0xc0(%rbp), %rdx
callq 0x882a
leaq -0xe8(%rbp), %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r15, %rdi
je 0x458e
callq 0x32f0
incq %rbx
movq %rbx, %r15
jmp 0x446b
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x45ab
callq 0x32f0
leaq -0xa0(%rbp), %rdi
movq 0x30(%rbp), %rsi
callq 0x31b0
movq %rbx, -0xc8(%rbp)
leaq -0x50(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3e40
movq -0x58(%rbp), %rax
leaq -0x1(%rax), %rbx
leaq -0xc0(%rbp), %rdi
leaq -0x50(%rbp), %r15
movq %r15, %rsi
callq 0x3400
movq (%r15), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x45fe
callq 0x32f0
testq %rbx, %rbx
je 0x47e7
movq 0x8(%r14), %rdx
cmpq %rbx, %rdx
jbe 0x4f0a
movq (%r14), %rax
movsbl (%rax,%rbx), %edx
leaq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
movq %rax, (%rdi)
movl $0x1, %esi
callq 0x33b0
leaq -0x80(%rbp), %rdi
leaq -0x50(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x882a
movq -0x58(%rbp), %r15
leaq -0x108(%rbp), %rdi
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
leaq -0x70(%rbp), %r14
cmpq %r14, %rdi
je 0x466c
callq 0x32f0
leaq -0x80(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x882a
leaq -0xe8(%rbp), %rdi
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x469c
callq 0x32f0
addq $-0x2, %r15
leaq -0x50(%rbp), %r12
leaq -0x80(%rbp), %r13
movq -0x100(%rbp), %r14
movq -0xe0(%rbp), %rbx
cmpq %r14, %rbx
movq %r14, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0x46ea
movq -0xe8(%rbp), %rsi
movq -0x108(%rbp), %rdi
callq 0x3350
cmpq %rbx, %r14
jne 0x47c8
testl %eax, %eax
je 0x46f3
jmp 0x47c8
cmpq %rbx, %r14
jne 0x47c8
leaq -0xa0(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
callq 0x31b0
movq 0x20(%rbp), %rax
leaq -0x70(%rbp), %r14
movq 0x8(%rax), %rdx
cmpq %r15, %rdx
jbe 0x4ee8
movq (%rax), %rax
movsbl (%rax,%r15), %r8d
movq -0x48(%rbp), %rdx
movl $0x1, %ecx
movq %r12, %rdi
xorl %esi, %esi
callq 0x3620
movq %r13, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3e40
leaq -0xc0(%rbp), %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x4762
callq 0x32f0
movq %r13, %rdi
movq %r12, %rsi
leaq -0xa0(%rbp), %rdx
callq 0x882a
leaq -0x108(%rbp), %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x4791
callq 0x32f0
movq %r13, %rdi
leaq -0xc0(%rbp), %rsi
movq %r12, %rdx
callq 0x882a
leaq -0xe8(%rbp), %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x47c0
callq 0x32f0
decq %r15
jmp 0x46a8
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
movq -0x60(%rbp), %rbx
je 0x47de
callq 0x32f0
addq $0x3, %r15
movq %r15, %r12
jmp 0x47f1
movl $0x2, %r12d
movq -0x60(%rbp), %rbx
movq -0x110(%rbp), %rax
movq (%rax), %rdx
movq -0x118(%rbp), %rax
movq (%rax), %rcx
movq -0x120(%rbp), %rax
movq (%rax), %r8
movq (%rbx), %r9
subq $0x8, %rsp
leaq 0xc85f(%rip), %r10      # 0x1107c
leaq 0xc82e(%rip), %r11      # 0x11052
leaq 0xc825(%rip), %rbx      # 0x11050
leaq 0xc81c(%rip), %r14      # 0x1104e
leaq 0xc7eb(%rip), %rsi      # 0x11024
movq 0x40(%rbp), %rdi
xorl %eax, %eax
movq 0x18(%rbp), %r15
pushq (%r15)
pushq %r10
pushq -0xc8(%rbp)
pushq %r11
pushq %r12
pushq %rbx
pushq -0xa0(%rbp)
pushq %r14
movq 0x10(%rbp), %r10
pushq (%r10)
movq -0x128(%rbp), %r10
pushq (%r10)
movq -0x30(%rbp), %r10
pushq (%r10)
callq 0x3480
addq $0x60, %rsp
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x4894
callq 0x32f0
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x48ac
callq 0x32f0
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x48c4
callq 0x32f0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x4e46
jmp 0x4e41
movb $0x1, %r14b
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x48f4
movq %rbx, %rdi
callq 0x32f0
movq -0x60(%rbp), %rbx
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x490a
callq 0x32f0
testb %r14b, %r14b
movq 0x28(%rbp), %r14
je 0x4929
cmpl $0x1, %r15d
jne 0x4e58
decq %r14
movq %r14, -0x58(%rbp)
jmp 0x49ac
movslq %r15d, %rdx
movq 0x8(%rbx), %rcx
leaq -0x50(%rbp), %rdi
movq %rbx, %rsi
callq 0x3360
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rbx
cmpq -0x48(%rbp), %rbx
jne 0x4991
testq %rbx, %rbx
je 0x4982
movq -0x50(%rbp), %rsi
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq %rbx, %rdx
callq 0x3350
testl %eax, %eax
jne 0x4991
cmpq $0x2, %rbx
je 0x4991
movq -0x60(%rbp), %rsi
cmpq $0x4, 0x8(%rsi)
movl $0x0, %ebx
jne 0x4e6f
jmp 0x4993
movq -0x60(%rbp), %rsi
cmpq $0x4, 0x8(%rsi)
jne 0x4e6f
xorl %ebx, %ebx
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x49a5
callq 0x32f0
addq %r14, %rbx
movq %rbx, -0x58(%rbp)
movq 0x30(%rbp), %rbx
leaq -0xa0(%rbp), %rdi
movq %rbx, %rsi
callq 0x31b0
movq (%rbx), %rdi
callq 0x3170
movq %rax, %rbx
leaq -0x50(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3d8d
leaq -0xc0(%rbp), %rdi
leaq -0x50(%rbp), %r14
movq %r14, %rsi
callq 0x3400
movq (%r14), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x49fe
callq 0x32f0
movq -0x58(%rbp), %rax
leaq 0x1(%rax), %r15
movq 0x20(%rbp), %r14
cmpq 0x8(%r14), %r15
jae 0x4b29
movslq %ebx, %rcx
leaq -0x50(%rbp), %rdi
movq %r14, %rsi
movq %r15, %rdx
movq %rcx, -0xc8(%rbp)
callq 0x3360
movq %r15, %r12
leaq -0xa0(%rbp), %rbx
movq %rbx, %r13
movq -0x48(%rbp), %r15
movq -0xb8(%rbp), %r14
cmpq %r15, %r14
movq %r15, %rdx
cmovbq %r14, %rdx
testq %rdx, %rdx
je 0x4a80
movq -0xc0(%rbp), %rsi
movq -0x50(%rbp), %rbx
movq %rbx, %rdi
callq 0x3350
cmpq %r14, %r15
jne 0x4b11
testl %eax, %eax
movq 0x20(%rbp), %r14
movq %r12, %r15
je 0x4a8c
jmp 0x4b18
cmpq %r14, %r15
movq 0x20(%rbp), %r14
movq %r12, %r15
jne 0x4b0b
movq %r13, %rbx
movq %r13, %rdi
leaq -0xc0(%rbp), %r12
movq %r12, %rsi
callq 0x31b0
leaq -0x80(%rbp), %r13
movq %r13, %rdi
movq %rbx, %rsi
callq 0x3d8d
movq %r12, %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x4acd
callq 0x32f0
incq %r15
movq %r13, %rdi
movq %r14, %rsi
movq %r15, %rdx
movq -0xc8(%rbp), %rcx
callq 0x3360
leaq -0x50(%rbp), %rdi
movq %r13, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x4b03
callq 0x32f0
movq %r15, %r12
jmp 0x4a37
movq -0x50(%rbp), %rbx
jmp 0x4b18
movq 0x20(%rbp), %r14
movq %r12, %r15
leaq -0x40(%rbp), %rax
cmpq %rax, %rbx
je 0x4b29
movq %rbx, %rdi
callq 0x32f0
leaq -0xa0(%rbp), %rdi
movq 0x30(%rbp), %rsi
callq 0x31b0
leaq -0x50(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3e40
leaq -0xc0(%rbp), %rdi
leaq -0x50(%rbp), %rbx
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4b6d
callq 0x32f0
movq -0x58(%rbp), %rax
leaq -0x1(%rax), %rsi
movq 0x8(%r14), %rdx
cmpq %rsi, %rdx
jbe 0x4f1b
movq (%r14), %rax
movsbl (%rax,%rsi), %edx
leaq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
movq %rax, (%rdi)
movl $0x1, %esi
callq 0x33b0
leaq -0x80(%rbp), %rdi
leaq -0x50(%rbp), %rsi
leaq -0xa0(%rbp), %rdx
callq 0x882a
leaq -0x108(%rbp), %rdi
leaq -0x80(%rbp), %rbx
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
leaq -0x70(%rbp), %r14
cmpq %r14, %rdi
je 0x4bd6
callq 0x32f0
leaq -0x80(%rbp), %rdi
leaq -0xc0(%rbp), %rsi
leaq -0x50(%rbp), %rdx
callq 0x882a
movq %r15, -0xc8(%rbp)
leaq -0xe8(%rbp), %rdi
movq %rbx, %rsi
callq 0x3400
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x4c0d
callq 0x32f0
addq $-0x2, -0x58(%rbp)
leaq -0xc0(%rbp), %r12
leaq -0x50(%rbp), %r13
leaq -0x80(%rbp), %r15
movq -0x100(%rbp), %r14
movq -0xe0(%rbp), %rbx
cmpq %r14, %rbx
movq %r14, %rdx
cmovbq %rbx, %rdx
testq %rdx, %rdx
je 0x4c63
movq -0xe8(%rbp), %rsi
movq -0x108(%rbp), %rdi
callq 0x3350
cmpq %rbx, %r14
jne 0x4d3d
testl %eax, %eax
je 0x4c6c
jmp 0x4d3d
cmpq %rbx, %r14
jne 0x4d3d
leaq -0xa0(%rbp), %rdi
movq %r12, %rsi
callq 0x31b0
movq 0x20(%rbp), %rax
movq -0x58(%rbp), %rbx
leaq -0x70(%rbp), %r14
movq 0x8(%rax), %rdx
cmpq %rbx, %rdx
jbe 0x4ef9
movq (%rax), %rax
movsbl (%rax,%rbx), %r8d
movq -0x48(%rbp), %rdx
movl $0x1, %ecx
movq %r13, %rdi
xorl %esi, %esi
callq 0x3620
movq %r15, %rdi
leaq -0xa0(%rbp), %rsi
callq 0x3e40
movq %r12, %rdi
movq %r15, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x4cd7
callq 0x32f0
movq %r15, %rdi
movq %r13, %rsi
leaq -0xa0(%rbp), %rdx
callq 0x882a
leaq -0x108(%rbp), %rdi
movq %r15, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x4d06
callq 0x32f0
movq %r15, %rdi
movq %r12, %rsi
movq %r13, %rdx
callq 0x882a
leaq -0xe8(%rbp), %rdi
movq %r15, %rsi
callq 0x3400
movq -0x80(%rbp), %rdi
cmpq %r14, %rdi
je 0x4d31
callq 0x32f0
decq %rbx
movq %rbx, -0x58(%rbp)
jmp 0x4c21
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
movq -0x60(%rbp), %rbx
je 0x4d53
callq 0x32f0
movq -0x110(%rbp), %rax
movq (%rax), %rdx
movq -0x118(%rbp), %rax
movq (%rax), %rcx
movq -0x120(%rbp), %rax
movq (%rax), %r8
movq (%rbx), %r9
movq -0x58(%rbp), %r12
addq $0x3, %r12
subq $0x8, %rsp
leaq 0xc2f5(%rip), %r10      # 0x1107c
leaq 0xc2c4(%rip), %r11      # 0x11052
leaq 0xc2bb(%rip), %rbx      # 0x11050
leaq 0xc284(%rip), %r14      # 0x11020
leaq 0xc281(%rip), %rsi      # 0x11024
movq 0x40(%rbp), %rdi
xorl %eax, %eax
movq 0x18(%rbp), %r15
pushq (%r15)
pushq %r10
pushq -0xc8(%rbp)
pushq %r11
pushq %r12
pushq %rbx
pushq -0xa0(%rbp)
pushq %r14
movq 0x10(%rbp), %r10
pushq (%r10)
movq -0x128(%rbp), %r10
pushq (%r10)
movq -0x30(%rbp), %r10
pushq (%r10)
callq 0x3480
addq $0x60, %rsp
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x4dfe
callq 0x32f0
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
leaq -0xb0(%rbp), %rbx
je 0x4e1d
callq 0x32f0
movq -0xc0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4e2e
callq 0x32f0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x4e46
callq 0x32f0
addq $0x108, %rsp            # imm = 0x108
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
notq %rax
addq %r14, %rax
movq %rax, -0x58(%rbp)
jmp 0x49ac
shlq $0x20, %r15
movabsq $-0x100000000, %rcx     # imm = 0xFFFFFFFF00000000
addq %r15, %rcx
sarq $0x20, %rcx
leaq -0x80(%rbp), %rdi
xorl %edx, %edx
callq 0x3360
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
cmpq -0x78(%rbp), %rdx
jne 0x4ebf
movq -0x80(%rbp), %rbx
testq %rdx, %rdx
je 0x4ecc
movq -0x30(%rbp), %rax
movq (%rax), %rdi
movq %rbx, %rsi
callq 0x3350
xorl %r15d, %r15d
negl %eax
sbbq %r15, %r15
jmp 0x4ecf
movq $-0x1, %r15
movq -0x80(%rbp), %rbx
jmp 0x4ecf
xorl %r15d, %r15d
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x4ee0
movq %rbx, %rdi
callq 0x32f0
movq %r15, %rbx
jmp 0x4993
leaq 0xc7e2(%rip), %rdi      # 0x116d1
movq %r15, %rsi
xorl %eax, %eax
callq 0x34b0
leaq 0xc7d1(%rip), %rdi      # 0x116d1
movq %rbx, %rsi
xorl %eax, %eax
callq 0x34b0
leaq 0xc7c0(%rip), %rdi      # 0x116d1
movq %rbx, %rsi
xorl %eax, %eax
callq 0x34b0
leaq 0xc7af(%rip), %rdi      # 0x116d1
xorl %eax, %eax
callq 0x34b0
movq %rax, %rbx
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4ff6
jmp 0x4ff1
movq %rax, %rbx
leaq -0x40(%rbp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x4ff6
jmp 0x4ff1
jmp 0x4f94
jmp 0x4f8b
jmp 0x4f8b
jmp 0x4f8b
jmp 0x4f8b
jmp 0x4f8b
jmp 0x4fb8
jmp 0x4fb8
jmp 0x4f94
jmp 0x4f94
jmp 0x4fe1
jmp 0x4fe1
jmp 0x4f8b
jmp 0x4f8b
jmp 0x4f8b
jmp 0x4f8b
jmp 0x5053
jmp 0x5053
jmp 0x4f94
jmp 0x4f94
jmp 0x4f8b
movq %rax, %rbx
jmp 0x4ff6
jmp 0x4f94
jmp 0x4f94
movq %rax, %rbx
jmp 0x5068
jmp 0x4fb8
jmp 0x4fb8
jmp 0x4fb8
jmp 0x4fa6
jmp 0x4fa6
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4ff6
jmp 0x4ff1
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x5068
jmp 0x5063
jmp 0x4fe1
jmp 0x4fe1
jmp 0x4fe1
jmp 0x4fe1
jmp 0x5053
jmp 0x5053
jmp 0x5053
jmp 0x5053
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x4ff6
callq 0x32f0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x500e
callq 0x32f0
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x5026
callq 0x32f0
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x503e
callq 0x32f0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x50c8
jmp 0x50c3
movq %rax, %rbx
movq -0x50(%rbp), %rdi
leaq -0x40(%rbp), %rax
cmpq %rax, %rdi
je 0x5068
callq 0x32f0
movq -0xe8(%rbp), %rdi
leaq -0xd8(%rbp), %rax
cmpq %rax, %rdi
je 0x5080
callq 0x32f0
movq -0x108(%rbp), %rdi
leaq -0xf8(%rbp), %rax
cmpq %rax, %rdi
je 0x5098
callq 0x32f0
movq -0xc0(%rbp), %rdi
leaq -0xb0(%rbp), %rax
cmpq %rax, %rdi
je 0x50b0
callq 0x32f0
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x50c8
callq 0x32f0
movq %rbx, %rdi
callq 0x35b0