// File: /workspace/github_cpp_makefile_star2_O3/millanek[P]evo/evo_getInformativePairs.cpp
// Function: InfoPairsMain(int, char**)
int InfoPairsMain(int argc, char** argv) {
    parseInfoPairsOptions(argc, argv);
    string line; // for reading the input files
    
    std::istream* hetFile = createReader(opt::hetFile.c_str());
    std::ifstream* pairtoolsFile = new std::ifstream(opt::pairtoolsFile.c_str());
    
    std::unordered_set<int> phasedHetsPos;
    
    
    if (opt::hapcutFormat) {
        // Parse the Hapcut blocks file
        while (getline(*hetFile, line)) {
            if (line == "********") continue;
            if (line[0] == 'B' && line[1] == 'L') { // New block - should in the future separate the hets by blocks
                
            } else {
                std::vector<string> phasedSNPdetails = split(line, '\t');
                int snpPos = atoi(phasedSNPdetails[4].c_str());
                phasedHetsPos.insert(snpPos);
            }
        }
    } else {
        while (getline(*hetFile, line)) {
            std::vector<string> phasedSNPdetails = split(line, '\t');
            int snpPos = atoi(phasedSNPdetails[1].c_str());
            phasedHetsPos.insert(snpPos);
        }
    }
    
    // Now parse the pairtools file to find read pairs that can be informative about the phasing and recombination
    while (getline(*pairtoolsFile,line)) {
        // std::cerr << line << std::endl;
        std::vector<string> pairVec = split(line, '\t'); assert(pairVec.size() == 8);
        
        int pair1pos = atoi(pairVec[2].c_str());
        int pair2pos = atoi(pairVec[4].c_str());
        string pair1strand = pairVec[5];
        string pair2strand = pairVec[6];
        
        std::vector<int> posCovered1; posCovered1.resize(150);
        if (pair1strand == "+") std::iota(posCovered1.begin(), posCovered1.end(), pair1pos);
        else std::iota(posCovered1.begin(), posCovered1.end(), pair1pos-150);
        
        std::vector<int> posCovered2; posCovered2.resize(150);
        if (pair2strand == "+") std::iota(posCovered2.begin(), posCovered2.end(), pair2pos);
        else std::iota(posCovered2.begin(), posCovered2.end(), pair2pos-150);
        
        int phasedHetsOnPair = 0;
        
        std::vector<int> hetPosVec;
        
        for (int i = 0; i < posCovered1.size(); i++) {
            if (phasedHetsPos.count(posCovered1[i]) == 1) {
                phasedHetsOnPair++;
                hetPosVec.push_back(posCovered1[i]);
            }
        }
        
        for (int i = 0; i < posCovered2.size(); i++) {
            if (phasedHetsPos.count(posCovered2[i]) == 1) {
                phasedHetsOnPair++;
                hetPosVec.push_back(posCovered2[i]);
            }
        }
        
        if (phasedHetsOnPair > 1) {
            std::cout << line << std::endl;
            //std::cerr << "pair1pos: " << pair1pos << " ; pair2pos: " << pair2pos << std::endl;
            //std::cerr << "pair1strand: " << pair1strand << " ; pair2strand: " << pair2strand << std::endl;
            //print_vector(hetPosVec, std::cerr);
        }
        
    }
    
    return 0;
    
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x118, %rsp            # imm = 0x118
callq 0xbf866
leaq 0xb0(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x455fc(%rip), %rsi     # 0x104280
leaq 0xe0(%rsp), %rdi
leaq 0x60(%rsp), %rdx
callq 0x287de
leaq 0xe0(%rsp), %r14
movq %r14, %rdi
movl $0x8, %esi
callq 0x500af
movq %rax, %r15
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbeccf
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x8480
movl $0x208, %edi            # imm = 0x208
callq 0x8470
movq %rax, %rbx
movq 0x455bd(%rip), %rsi     # 0x1042a0
movq %rax, %rdi
movl $0x8, %edx
callq 0x8860
movq %rbx, 0xd8(%rsp)
leaq 0x110(%rsp), %rax
movq %rax, -0x30(%rax)
movq $0x1, -0x28(%rax)
pxor %xmm0, %xmm0
movdqu %xmm0, -0x20(%rax)
movl $0x3f800000, -0x10(%rax) # imm = 0x3F800000
movdqu %xmm0, -0x8(%rax)
cmpb $0x0, 0x455b8(%rip)     # 0x1042e0
je 0xbedf0
leaq 0xa0(%rsp), %r12
leaq 0x21a0a(%rip), %r13     # 0xe0747
leaq 0x60(%rsp), %rbp
leaq 0xc0(%rsp), %rbx
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xbee82
movq %r12, %rdi
movq %r13, %rsi
callq 0x8160
testl %eax, %eax
je 0xbed4a
movq 0xa0(%rsp), %rax
cmpb $0x42, (%rax)
jne 0xbeda0
cmpb $0x4c, 0x1(%rax)
je 0xbed4a
movq %rbp, %rdi
movq %r12, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x60(%rsp), %rax
movq 0x80(%rax), %rdi
callq 0x86e0
movl %eax, 0xc0(%rsp)
movq %r14, 0x80(%rsp)
movq %r14, %rdi
movq %rbx, %rsi
leaq 0x80(%rsp), %rdx
callq 0xbfb88
movq %rbp, %rdi
callq 0x2e784
jmp 0xbed4a
leaq 0xa0(%rsp), %r12
leaq 0x60(%rsp), %r13
leaq 0xc0(%rsp), %rbp
leaq 0x80(%rsp), %rbx
movq (%r15), %rax
movq -0x18(%rax), %rdi
addq %r15, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %r15, %rdi
movq %r12, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xbee82
movq %r13, %rdi
movq %r12, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0x60(%rsp), %rax
movq 0x20(%rax), %rdi
callq 0x86e0
movl %eax, 0xc0(%rsp)
movq %r14, 0x80(%rsp)
movq %r14, %rdi
movq %rbp, %rsi
movq %rbx, %rdx
callq 0xbfb88
movq %r13, %rdi
callq 0x2e784
jmp 0xbee0d
leaq 0xa0(%rsp), %r14
leaq 0xc0(%rsp), %r13
leaq 0xe0(%rsp), %r15
leaq 0x40(%rsp), %r12
movq 0xd8(%rsp), %rbx
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8870
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0xbf6af
movq %r13, %rdi
movq %r14, %rsi
movl $0x9, %edx
callq 0x4d650
movq 0xc0(%rsp), %rbx
movq 0xc8(%rsp), %rax
subq %rbx, %rax
cmpq $0x100, %rax            # imm = 0x100
jne 0xbf6f5
movq %r13, %r14
movq 0x40(%rbx), %rdi
callq 0x86e0
movl %eax, %ebp
movq 0x80(%rbx), %rdi
callq 0x86e0
movl %eax, %r13d
leaq 0x70(%rsp), %rax
movq %rax, 0x60(%rsp)
movq 0xa0(%rbx), %rsi
movq 0xa8(%rbx), %rdx
addq %rsi, %rdx
leaq 0x60(%rsp), %rbx
movq %rbx, %rdi
callq 0x2ba06
movq 0xc0(%rsp), %rax
leaq 0x90(%rsp), %rcx
movq %rcx, 0x80(%rsp)
movq 0xc0(%rax), %rsi
movq 0xc8(%rax), %rdx
addq %rsi, %rdx
leaq 0x80(%rsp), %rdi
callq 0x2ba06
pxor %xmm0, %xmm0
movdqa %xmm0, 0x20(%rsp)
movq $0x0, 0x30(%rsp)
movl $0x96, %esi
leaq 0x20(%rsp), %rdi
callq 0x51d1c
movq %rbx, %rdi
leaq 0xe0fa(%rip), %rsi      # 0xcd0ab
callq 0x8160
movq 0x20(%rsp), %rcx
movq 0x28(%rsp), %rdx
testl %eax, %eax
je 0xbf10e
cmpq %rdx, %rcx
movdqa 0x1114d(%rip), %xmm6    # 0xd0120
movdqa 0x11125(%rip), %xmm7    # 0xd0100
movdqa 0x1112c(%rip), %xmm8    # 0xd0110
pcmpeqd %xmm9, %xmm9
je 0xbf229
subq %rcx, %rdx
addq $-0x4, %rdx
movq %rdx, %xmm0
shrq $0x2, %rdx
addq $0x4, %rdx
movabsq $0x7ffffffffffffffc, %rax # imm = 0x7FFFFFFFFFFFFFFC
andq %rax, %rdx
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
psrlq $0x2, %xmm0
leal -0x96(%rbp), %eax
leal -0x93(%rbp), %esi
movl %ebp, %edi
addl $0xffffff6b, %ebp       # imm = 0xFFFFFF6B
xorl %r8d, %r8d
movq %r8, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm3
por %xmm7, %xmm3
movdqa %xmm0, %xmm2
pxor %xmm8, %xmm2
pxor %xmm8, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm2, %xmm4
pcmpeqd %xmm2, %xmm3
pshufd $0xf5, %xmm3, %xmm5     # xmm5 = xmm3[1,1,3,3]
pand %xmm4, %xmm5
pshufd $0xf5, %xmm4, %xmm3     # xmm3 = xmm4[1,1,3,3]
por %xmm5, %xmm3
movd %xmm3, %r9d
notl %r9d
testb $0x1, %r9b
je 0xbf085
leaq (%rax,%r8), %r9
movl %r9d, (%rcx,%r8,4)
pxor %xmm9, %xmm3
pextrw $0x4, %xmm3, %r9d
testb $0x1, %r9b
je 0xbf09f
leal (%r8,%rbp), %r9d
movl %r9d, 0x4(%rcx,%r8,4)
por %xmm6, %xmm1
pxor %xmm8, %xmm1
movdqa %xmm1, %xmm3
pcmpgtd %xmm2, %xmm3
pcmpeqd %xmm2, %xmm1
pshufd $0xf5, %xmm1, %xmm2     # xmm2 = xmm1[1,1,3,3]
pand %xmm3, %xmm2
pshufd $0xf5, %xmm3, %xmm1     # xmm1 = xmm3[1,1,3,3]
por %xmm2, %xmm1
pxor %xmm9, %xmm1
pextrw $0x0, %xmm1, %r9d
testb $0x1, %r9b
je 0xbf0e7
leal (%rdi,%r8), %r9d
addl $0xffffff6c, %r9d       # imm = 0xFFFFFF6C
movl %r9d, 0x8(%rcx,%r8,4)
pextrw $0x4, %xmm1, %r9d
testb $0x1, %r9b
je 0xbf0fc
leal (%rsi,%r8), %r9d
movl %r9d, 0xc(%rcx,%r8,4)
addq $0x4, %r8
cmpq %r8, %rdx
jne 0xbf031
jmp 0xbf229
cmpq %rdx, %rcx
movdqa 0x11007(%rip), %xmm5    # 0xd0120
movdqa 0x10fdf(%rip), %xmm6    # 0xd0100
movdqa 0x10fe7(%rip), %xmm7    # 0xd0110
pcmpeqd %xmm8, %xmm8
je 0xbf229
subq %rcx, %rdx
addq $-0x4, %rdx
movq %rdx, %xmm0
shrq $0x2, %rdx
addq $0x4, %rdx
movabsq $0x7ffffffffffffffc, %rax # imm = 0x7FFFFFFFFFFFFFFC
andq %rax, %rdx
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
psrlq $0x2, %xmm0
movl %ebp, %eax
pxor %xmm7, %xmm0
xorl %esi, %esi
movq %rsi, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm2
por %xmm6, %xmm2
pxor %xmm7, %xmm2
movdqa %xmm2, %xmm3
pcmpgtd %xmm0, %xmm3
pcmpeqd %xmm0, %xmm2
pshufd $0xf5, %xmm2, %xmm4     # xmm4 = xmm2[1,1,3,3]
pand %xmm3, %xmm4
pshufd $0xf5, %xmm3, %xmm2     # xmm2 = xmm3[1,1,3,3]
por %xmm4, %xmm2
movd %xmm2, %edi
notl %edi
testb $0x1, %dil
je 0xbf1ae
leaq (%rax,%rsi), %rdi
movl %edi, (%rcx,%rsi,4)
pxor %xmm8, %xmm2
pextrw $0x4, %xmm2, %edi
testb $0x1, %dil
je 0xbf1c7
leal (%rax,%rsi), %edi
incl %edi
movl %edi, 0x4(%rcx,%rsi,4)
por %xmm5, %xmm1
pxor %xmm7, %xmm1
movdqa %xmm1, %xmm2
pcmpgtd %xmm0, %xmm2
pcmpeqd %xmm0, %xmm1
pshufd $0xf5, %xmm1, %xmm3     # xmm3 = xmm1[1,1,3,3]
pand %xmm2, %xmm3
pshufd $0xf5, %xmm2, %xmm1     # xmm1 = xmm2[1,1,3,3]
por %xmm3, %xmm1
pxor %xmm8, %xmm1
pextrw $0x0, %xmm1, %edi
testb $0x1, %dil
je 0xbf207
leal (%rax,%rsi), %edi
addl $0x2, %edi
movl %edi, 0x8(%rcx,%rsi,4)
pextrw $0x4, %xmm1, %edi
testb $0x1, %dil
je 0xbf21c
leal (%rax,%rsi), %edi
addl $0x3, %edi
movl %edi, 0xc(%rcx,%rsi,4)
addq $0x4, %rsi
cmpq %rsi, %rdx
jne 0xbf167
pxor %xmm0, %xmm0
movdqa %xmm0, (%rsp)
movq $0x0, 0x10(%rsp)
movl $0x96, %esi
movq %rsp, %rdi
callq 0x51d1c
leaq 0x80(%rsp), %rdi
leaq 0xde54(%rip), %rsi      # 0xcd0ab
callq 0x8160
movq (%rsp), %rcx
movq 0x8(%rsp), %rdx
testl %eax, %eax
je 0xbf3b7
cmpq %rdx, %rcx
movdqa 0x10ea8(%rip), %xmm6    # 0xd0120
movdqa 0x10e80(%rip), %xmm7    # 0xd0100
movdqa 0x10e87(%rip), %xmm8    # 0xd0110
pcmpeqd %xmm9, %xmm9
je 0xbf4db
subq %rcx, %rdx
addq $-0x4, %rdx
movq %rdx, %xmm0
shrq $0x2, %rdx
addq $0x4, %rdx
movabsq $0x7ffffffffffffffc, %rax # imm = 0x7FFFFFFFFFFFFFFC
andq %rax, %rdx
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
psrlq $0x2, %xmm0
leal -0x96(%r13), %eax
leal -0x93(%r13), %esi
movl %r13d, %edi
addl $0xffffff6b, %r13d      # imm = 0xFFFFFF6B
xorl %r8d, %r8d
movq %r8, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm3
por %xmm7, %xmm3
movdqa %xmm0, %xmm2
pxor %xmm8, %xmm2
pxor %xmm8, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm2, %xmm4
pcmpeqd %xmm2, %xmm3
pshufd $0xf5, %xmm3, %xmm5     # xmm5 = xmm3[1,1,3,3]
pand %xmm4, %xmm5
pshufd $0xf5, %xmm4, %xmm3     # xmm3 = xmm4[1,1,3,3]
por %xmm5, %xmm3
movd %xmm3, %r9d
notl %r9d
testb $0x1, %r9b
je 0xbf32e
leaq (%rax,%r8), %r9
movl %r9d, (%rcx,%r8,4)
pxor %xmm9, %xmm3
pextrw $0x4, %xmm3, %r9d
testb $0x1, %r9b
je 0xbf348
leal (%r8,%r13), %r9d
movl %r9d, 0x4(%rcx,%r8,4)
por %xmm6, %xmm1
pxor %xmm8, %xmm1
movdqa %xmm1, %xmm3
pcmpgtd %xmm2, %xmm3
pcmpeqd %xmm2, %xmm1
pshufd $0xf5, %xmm1, %xmm2     # xmm2 = xmm1[1,1,3,3]
pand %xmm3, %xmm2
pshufd $0xf5, %xmm3, %xmm1     # xmm1 = xmm3[1,1,3,3]
por %xmm2, %xmm1
pxor %xmm9, %xmm1
pextrw $0x0, %xmm1, %r9d
testb $0x1, %r9b
je 0xbf390
leal (%rdi,%r8), %r9d
addl $0xffffff6c, %r9d       # imm = 0xFFFFFF6C
movl %r9d, 0x8(%rcx,%r8,4)
pextrw $0x4, %xmm1, %r9d
testb $0x1, %r9b
je 0xbf3a5
leal (%rsi,%r8), %r9d
movl %r9d, 0xc(%rcx,%r8,4)
addq $0x4, %r8
cmpq %r8, %rdx
jne 0xbf2da
jmp 0xbf4db
cmpq %rdx, %rcx
movdqa 0x10d5e(%rip), %xmm6    # 0xd0120
movdqa 0x10d36(%rip), %xmm7    # 0xd0100
movdqa 0x10d3d(%rip), %xmm8    # 0xd0110
pcmpeqd %xmm9, %xmm9
je 0xbf4db
subq %rcx, %rdx
addq $-0x4, %rdx
movq %rdx, %xmm0
shrq $0x2, %rdx
addq $0x4, %rdx
movabsq $0x7ffffffffffffffc, %rax # imm = 0x7FFFFFFFFFFFFFFC
andq %rax, %rdx
pshufd $0x44, %xmm0, %xmm0     # xmm0 = xmm0[0,1,0,1]
psrlq $0x2, %xmm0
movl %r13d, %eax
xorl %esi, %esi
movq %rsi, %xmm1
pshufd $0x44, %xmm1, %xmm1     # xmm1 = xmm1[0,1,0,1]
movdqa %xmm1, %xmm3
por %xmm7, %xmm3
movdqa %xmm0, %xmm2
pxor %xmm8, %xmm2
pxor %xmm8, %xmm3
movdqa %xmm3, %xmm4
pcmpgtd %xmm2, %xmm4
pcmpeqd %xmm2, %xmm3
pshufd $0xf5, %xmm3, %xmm5     # xmm5 = xmm3[1,1,3,3]
pand %xmm4, %xmm5
pshufd $0xf5, %xmm4, %xmm3     # xmm3 = xmm4[1,1,3,3]
por %xmm5, %xmm3
movd %xmm3, %edi
notl %edi
testb $0x1, %dil
je 0xbf45f
leaq (%rax,%rsi), %rdi
movl %edi, (%rcx,%rsi,4)
pxor %xmm9, %xmm3
pextrw $0x4, %xmm3, %edi
testb $0x1, %dil
je 0xbf478
leal (%rax,%rsi), %edi
incl %edi
movl %edi, 0x4(%rcx,%rsi,4)
por %xmm6, %xmm1
pxor %xmm8, %xmm1
movdqa %xmm1, %xmm3
pcmpgtd %xmm2, %xmm3
pcmpeqd %xmm2, %xmm1
pshufd $0xf5, %xmm1, %xmm2     # xmm2 = xmm1[1,1,3,3]
pand %xmm3, %xmm2
pshufd $0xf5, %xmm3, %xmm1     # xmm1 = xmm3[1,1,3,3]
por %xmm2, %xmm1
pxor %xmm9, %xmm1
pextrw $0x0, %xmm1, %edi
testb $0x1, %dil
je 0xbf4b9
leal (%rax,%rsi), %edi
addl $0x2, %edi
movl %edi, 0x8(%rcx,%rsi,4)
pextrw $0x4, %xmm1, %edi
testb $0x1, %dil
je 0xbf4ce
leal (%rax,%rsi), %edi
addl $0x3, %edi
movl %edi, 0xc(%rcx,%rsi,4)
addq $0x4, %rsi
cmpq %rsi, %rdx
jne 0xbf40e
pxor %xmm0, %xmm0
movdqa %xmm0, 0x40(%rsp)
movq $0x0, 0x50(%rsp)
movq 0x20(%rsp), %rsi
cmpq %rsi, 0x28(%rsp)
je 0xbf55d
xorl %r13d, %r13d
xorl %ebp, %ebp
xorl %ebx, %ebx
addq %r13, %rsi
movq %r15, %rdi
callq 0xbfe14
testq %rax, %rax
je 0xbf53e
incl %ebx
movq 0x20(%rsp), %rdx
addq %r13, %rdx
movq 0x48(%rsp), %rsi
cmpq 0x50(%rsp), %rsi
je 0xbf536
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%rsp)
jmp 0xbf53e
movq %r12, %rdi
callq 0x48c2e
incq %rbp
movq 0x20(%rsp), %rsi
movq 0x28(%rsp), %rax
subq %rsi, %rax
sarq $0x2, %rax
addq $0x4, %r13
cmpq %rbp, %rax
ja 0xbf501
jmp 0xbf55f
xorl %ebx, %ebx
movq (%rsp), %rsi
cmpq %rsi, 0x8(%rsp)
je 0xbf5c7
xorl %r13d, %r13d
xorl %ebp, %ebp
addq %r13, %rsi
movq %r15, %rdi
callq 0xbfe14
testq %rax, %rax
je 0xbf5ab
incl %ebx
movq (%rsp), %rdx
addq %r13, %rdx
movq 0x48(%rsp), %rsi
cmpq 0x50(%rsp), %rsi
je 0xbf5a3
movl (%rdx), %eax
movl %eax, (%rsi)
addq $0x4, %rsi
movq %rsi, 0x48(%rsp)
jmp 0xbf5ab
movq %r12, %rdi
callq 0x48c2e
incq %rbp
movq (%rsp), %rsi
movq 0x8(%rsp), %rax
subq %rsi, %rax
sarq $0x2, %rax
addq $0x4, %r13
cmpq %rbp, %rax
ja 0xbf56f
cmpl $0x1, %ebx
jle 0xbf612
movq 0xa0(%rsp), %rsi
movq 0xa8(%rsp), %rdx
movq 0x429d5(%rip), %rdi     # 0x101fb8
callq 0x84e0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x8450
movsbl %al, %esi
movq %rbx, %rdi
callq 0x8040
movq %rax, %rdi
callq 0x8300
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
movq %r14, %r13
leaq 0xa0(%rsp), %r14
je 0xbf634
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq (%rsp), %rdi
testq %rdi, %rdi
je 0xbf64a
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0xbf661
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xbf686
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xbf6a2
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x8480
movq %r13, %rdi
callq 0x2e784
jmp 0xbee9f
leaq 0xe0(%rsp), %rdi
callq 0xbfb18
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0xbf6e1
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x8480
xorl %eax, %eax
addq $0x118, %rsp            # imm = 0x118
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x21054(%rip), %rdi     # 0xe0750
leaq 0x21061(%rip), %rsi     # 0xe0764
leaq 0x21076(%rip), %rcx     # 0xe0780
movl $0x51, %edx
callq 0x82c0
movq %rax, %r14
movl $0x208, %esi            # imm = 0x208
movq %rbx, %rdi
jmp 0xbf746
jmp 0xbf750
movq %rax, %r14
leaq 0xf0(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0xbf839
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x8480
jmp 0xbf839
movq %rax, %r14
jmp 0xbf839
jmp 0xbf75e
jmp 0xbf78d
jmp 0xbf78d
movq %rax, %r14
leaq 0x60(%rsp), %rdi
jmp 0xbf827
movq %rax, %r14
jmp 0xbf7c7
movq %rax, %r14
jmp 0xbf7b1
movq %rax, %r14
jmp 0xbf803
movq %rax, %r14
jmp 0xbf81f
jmp 0xbf78d
jmp 0xbf78d
jmp 0xbf78d
jmp 0xbf797
movq %rax, %r14
jmp 0xbf82c
jmp 0xbf797
movq %rax, %r14
movq 0x40(%rsp), %rdi
testq %rdi, %rdi
je 0xbf7b1
movq 0x50(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq (%rsp), %rdi
testq %rdi, %rdi
je 0xbf7c7
movq 0x10(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x20(%rsp), %rdi
testq %rdi, %rdi
je 0xbf7de
movq 0x30(%rsp), %rsi
subq %rdi, %rsi
callq 0x8480
movq 0x80(%rsp), %rdi
leaq 0x90(%rsp), %rax
cmpq %rax, %rdi
je 0xbf803
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x8480
movq 0x60(%rsp), %rdi
leaq 0x70(%rsp), %rax
cmpq %rax, %rdi
je 0xbf81f
movq 0x70(%rsp), %rsi
incq %rsi
callq 0x8480
leaq 0xc0(%rsp), %rdi
callq 0x2e784
leaq 0xe0(%rsp), %rdi
callq 0xbfb18
movq 0xa0(%rsp), %rdi
leaq 0xb0(%rsp), %rax
cmpq %rax, %rdi
je 0xbf85e
movq 0xb0(%rsp), %rsi
incq %rsi
callq 0x8480
movq %r14, %rdi
callq 0x8840