// File: /workspace/github_cpp_makefile_star2_O1/phillip-h[P]todo/src/draw.cpp
// Function: drawTasks(TodoList*, unsigned int)
void drawTasks(TodoList* list, unsigned selected)
{
    auto tasks = list->tasks();
    
    taskWin->clear();    

    if (tasks && tasks->size()){
        xpos = 1;
        ypos = 1;

        unsigned numTasks = height - 2;
        endTask = tasks->size();
        if (endTask > numTasks)
            endTask = numTasks;

        if (numTasks < tasks->size()){
            while (selected > (int) endTask + listOff - 2 && selected != 0)
                listOff++;
            while (selected < (int) startTask + listOff && 
                   selected != list->size() - 1)
                listOff--;
        } else{
            listOff = 0;
        }

        unsigned count = startTask + listOff;

        for (unsigned i = startTask + listOff; i < endTask + listOff &&
                                               i < tasks->size() ; i++){
            Task t = tasks->at(i);
            
            if (showNumbers){
                taskWin->inverse();
                taskWin->color(GUTTER_COLOR_PAIR);
                
                std::string number = std::to_string(count);
                if (!zeroIndexNumbers)
                    number = std::to_string(count + 1);
                while (number.size() < 2)
                    number = "0"+number;
                
                taskWin->print(number + ")", xpos, ypos);
                taskWin->colorOff(GUTTER_COLOR_PAIR);
                taskWin->inverseOff();
                xpos += 5;
            }
           
            if (i == selected){
                std::string tmp = tasks->at(i).task();
                if (tasks->at(i).div()){
                    taskWin->inverse();
                    taskWin->color(SELECT_COLOR_PAIR);
                    drawDivider(tmp.substr(5, tmp.size() - 5), ypos);
                    taskWin->colorOff(SELECT_COLOR_PAIR);
                    taskWin->inverseOff();
                    ypos++;
                    if (showNumbers){
                        xpos -= 5;
                    }
                    continue;
                }

                std::string line = tmp;
                unsigned pad = showNumbers ? 8 : 5;
                if (line.size() >= width - pad) {
                    line = line.substr(0, width - pad - 3) + "...";
                }
                if (highlightWholeLine){
                    for (int k = tmp.size() + xpos; k < width - 2; k++){
                        line += " ";
                    }
                }
                
                std::string mark = line.substr(0, STRING_COMPLETE.size());
                line = line.substr(mark.size());
                
                taskWin->inverse();

                taskWin->color(!t.completed() ? MARK_COLOR_PAIR
                                              : MARK_COLOR_PAIR_DONE); 
                taskWin->print(mark, xpos, ypos);
                taskWin->colorOff(!t.completed() ? MARK_COLOR_PAIR
                                                 : MARK_COLOR_PAIR_DONE);

                taskWin->color(SELECT_COLOR_PAIR);
                taskWin->print(line, xpos + mark.size(), ypos);
                taskWin->colorOff(SELECT_COLOR_PAIR);
                
                taskWin->inverseOff();
            } else{
                std::string tmp = tasks->at(i).task();
                if (tasks->at(i).div()){
                    drawDivider(tmp.substr(5, tmp.size() - 5), ypos);
                    ypos++;
                    if (showNumbers){
                        xpos -= 5;
                    }
                    continue;
                }
                
                std::string text = tmp;
                unsigned pad = showNumbers ? 8 : 5;
                if (text.size() >= width - pad) {
                    text = text.substr(0, width - pad - 3) + "...";
                }

                std::string mark = text.substr(0, STRING_COMPLETE.size());
                text = text.substr(mark.size());

                taskWin->color(!t.completed() ? MARK_COLOR_PAIR
                                              : MARK_COLOR_PAIR_DONE); 
                taskWin->print(mark, xpos, ypos);
                taskWin->colorOff(!t.completed() ? MARK_COLOR_PAIR
                                                 : MARK_COLOR_PAIR_DONE);

                taskWin->print(text, xpos + mark.size(), ypos);
            }
            ypos++;
            if (ypos > numTasks || i >= tasks->size() - 1){
                break;
            }
            if (showNumbers){
                xpos -= 5;
                count++;
            }
        }
    }
    
    taskWin->color(BORDER_COLOR_PAIR, true);
    taskWin->draw();
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1a8, %rsp            # imm = 0x1A8
movl %esi, 0x74(%rsp)
movq %rdi, %rbx
callq 0x9976
movq %rax, %r14
movq 0x9230(%rip), %rdi      # 0x10668
callq 0xb71e
movq %r14, 0x28(%rsp)
testq %r14, %r14
je 0x8046
movq 0x28(%rsp), %rcx
movq 0x8(%rcx), %rax
subq (%rcx), %rax
je 0x8046
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rax
movl $0x1, %ecx
movl %ecx, 0x9216(%rip)      # 0x10690
movl %ecx, 0x9214(%rip)      # 0x10694
movl 0x9206(%rip), %edx      # 0x1068c
addl $-0x2, %edx
cmpl %eax, %edx
movl %eax, %ecx
cmovbl %edx, %ecx
movl %ecx, 0x9206(%rip)      # 0x1069c
movq %rdx, 0x160(%rsp)
cmpq %rdx, %rax
jbe 0x74f1
movl 0x91f7(%rip), %eax      # 0x106a0
addl %ecx, %eax
addl $-0x2, %eax
movl 0x74(%rsp), %ebp
cmpl %ebp, %eax
jae 0x74c3
movl %ebp, %eax
subl %ecx, %eax
addl $0x2, %eax
movl %eax, 0x91dd(%rip)      # 0x106a0
movl 0x91d7(%rip), %eax      # 0x106a0
addl 0x91c9(%rip), %eax      # 0x10698
cmpl %ebp, %eax
jbe 0x74fb
movq %rbx, %rdi
callq 0x95f2
decl %eax
cmpl %ebp, %eax
je 0x74fb
movl 0x91b9(%rip), %eax      # 0x106a0
decl %eax
movl %eax, 0x91b1(%rip)      # 0x106a0
jmp 0x74c9
movl $0x0, 0x91a5(%rip)      # 0x106a0
movl 0x919f(%rip), %eax      # 0x106a0
movl 0x9191(%rip), %ecx      # 0x10698
addl %eax, %ecx
addl 0x918d(%rip), %eax      # 0x1069c
movl %ecx, 0x4(%rsp)
cmpl %eax, %ecx
jae 0x8046
leaq 0x30(%rsp), %r13
leaq 0x50(%rsp), %rbx
movl 0x4(%rsp), %eax
movl %eax, %r15d
movq 0x28(%rsp), %rcx
movq 0x8(%rcx), %rax
subq (%rcx), %rax
movl %r15d, %r15d
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rax
cmpq %r15, %rax
jbe 0x8046
movq 0x28(%rsp), %rax
movq (%rax), %rbp
movq 0x8(%rax), %rdx
subq %rbp, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rax # imm = 0xCCCCCCCCCCCCCCCD
imulq %rax, %rdx
cmpq %r15, %rdx
jbe 0x807a
leaq (%r15,%r15,4), %r12
leaq 0xc8(%rsp), %rax
movq %rax, 0xb8(%rsp)
movq (%rbp,%r12,8), %rsi
movq 0x8(%rbp,%r12,8), %rdx
addq %rsi, %rdx
leaq 0xb8(%rsp), %rdi
callq 0x5cbc
movb 0x20(%rbp,%r12,8), %al
movb %al, 0xd8(%rsp)
movq 0x90a7(%rip), %rdi      # 0x10668
xorl %esi, %esi
callq 0xb87c
movq 0x9099(%rip), %rdi      # 0x10668
movl $0x2, %esi
xorl %edx, %edx
callq 0xb8ce
movl $0x1, %eax
cmpl $0xa, 0x4(%rsp)
leaq 0x60(%rsp), %rbp
jb 0x7632
movl $0x4, %eax
movl 0x4(%rsp), %ecx
movl $0xd1b71759, %esi       # imm = 0xD1B71759
cmpl $0x63, %ecx
jbe 0x762b
cmpl $0x3e7, %ecx            # imm = 0x3E7
jbe 0x7630
cmpl $0x2710, %ecx           # imm = 0x2710
jb 0x7632
movl %ecx, %edx
imulq %rsi, %rdx
shrq $0x2d, %rdx
addl $0x4, %eax
cmpl $0x1869f, %ecx          # imm = 0x1869F
movl %edx, %ecx
ja 0x75fa
addl $-0x3, %eax
jmp 0x7632
addl $-0x2, %eax
jmp 0x7632
decl %eax
movl %eax, %esi
leaq 0x40(%rsp), %rax
movq %rax, 0x30(%rsp)
movq %r13, %rdi
xorl %edx, %edx
callq 0x3330
movq 0x30(%rsp), %rdi
movl 0x38(%rsp), %esi
movl 0x4(%rsp), %edx
callq 0x886d
movq 0x38(%rsp), %rdx
cmpq $0x1, %rdx
ja 0x76a4
movq %rbx, %rdi
leaq 0x4ebc(%rip), %rsi      # 0xc52b
movq %r13, %rdx
callq 0x6aa0
movq %r13, %rdi
movq %rbx, %rsi
callq 0x3360
movq 0x50(%rsp), %rdi
cmpq %rbp, %rdi
je 0x7699
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x38(%rsp), %rdx
cmpq $0x2, %rdx
jb 0x7665
movq 0x8fbd(%rip), %rbp      # 0x10668
leaq 0xa8(%rsp), %rax
movq %rax, 0x98(%rsp)
movq 0x30(%rsp), %rsi
addq %rsi, %rdx
leaq 0x98(%rsp), %rdi
callq 0x5cbc
leaq 0x98(%rsp), %r14
movq %r14, %rdi
leaq 0x4d4e(%rip), %rsi      # 0xc430
callq 0x3560
movl 0x8fa3(%rip), %edx      # 0x10690
movl 0x8fa1(%rip), %ecx      # 0x10694
movq %rbp, %rdi
movq %r14, %rsi
callq 0xb8bc
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x7723
movq 0xa8(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x8f3e(%rip), %rdi      # 0x10668
movl $0x2, %esi
xorl %edx, %edx
callq 0xb8e2
movq 0x8f2b(%rip), %rdi      # 0x10668
xorl %esi, %esi
callq 0xb88e
addl $0x5, 0x8f45(%rip)      # 0x10690
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7767
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
cmpl 0x74(%rsp), %r15d
leaq 0x60(%rsp), %rbp
jne 0x78a0
movq 0x28(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rdx
cmpq %r15, %rdx
jbe 0x80be
leaq (%rax,%r12,8), %rsi
movq %r13, %rdi
callq 0x892a
movq 0x28(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rdx
cmpq %r15, %rdx
jbe 0x809c
leaq (%rax,%r12,8), %rdi
callq 0x8ca6
leaq 0x18(%rsp), %r12
movl %eax, %r14d
testb %al, %al
je 0x7986
movq 0x8e71(%rip), %rdi      # 0x10668
xorl %esi, %esi
callq 0xb87c
movq 0x8e63(%rip), %rdi      # 0x10668
movl $0x3, %esi
xorl %edx, %edx
callq 0xb8ce
movq 0x38(%rsp), %rcx
addq $-0x5, %rcx
movl $0x5, %edx
leaq 0x188(%rsp), %rdi
movq %r13, %rsi
callq 0x32c0
movl 0x8e5f(%rip), %esi      # 0x10694
leaq 0x188(%rsp), %rdi
callq 0x86d4
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x7867
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x8dfa(%rip), %rdi      # 0x10668
movl $0x3, %esi
xorl %edx, %edx
callq 0xb8e2
movq 0x8de7(%rip), %rdi      # 0x10668
xorl %esi, %esi
callq 0xb88e
incl 0x8e06(%rip)            # 0x10694
addl $-0x5, 0x8dfb(%rip)     # 0x10690
movl $0x8, %r12d
jmp 0x7d37
movq 0x28(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rdx
cmpq %r15, %rdx
jbe 0x808b
leaq (%rax,%r12,8), %rsi
movq %r13, %rdi
callq 0x892a
movq 0x28(%rsp), %rcx
movq (%rcx), %rax
movq 0x8(%rcx), %rdx
subq %rax, %rdx
sarq $0x3, %rdx
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rdx
cmpq %r15, %rdx
jbe 0x80ad
leaq (%rax,%r12,8), %rdi
callq 0x8ca6
leaq 0x18(%rsp), %r12
movl %eax, %ebp
testb %al, %al
je 0x7a07
movq 0x38(%rsp), %rcx
addq $-0x5, %rcx
movl $0x5, %edx
leaq 0x168(%rsp), %rdi
movq %r13, %rsi
callq 0x32c0
movl 0x8d58(%rip), %esi      # 0x10694
leaq 0x168(%rsp), %rdi
callq 0x86d4
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x796e
movq 0x178(%rsp), %rsi
incq %rsi
callq 0x32b0
incl 0x8d20(%rip)            # 0x10694
addl $-0x5, 0x8d15(%rip)     # 0x10690
movl $0x8, %r12d
jmp 0x7f91
movq %rbp, 0x50(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x5cbc
movb %r14b, 0x3(%rsp)
movl 0x8cdd(%rip), %ecx      # 0x10688
leal -0x8(%rcx), %eax
cmpq %rax, 0x58(%rsp)
jb 0x7aee
addl $-0xb, %ecx
leaq 0x78(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x32c0
movq %r14, %rdi
leaq 0x4b55(%rip), %rsi      # 0xc52d
callq 0x3560
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7a88
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x7a90
leaq 0x60(%rsp), %rax
movq %rax, 0x50(%rsp)
movq 0x30(%rsp), %rsi
movq 0x38(%rsp), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x5cbc
movl 0x8c5c(%rip), %ecx      # 0x10688
leal -0x8(%rcx), %eax
cmpq %rax, 0x58(%rsp)
jb 0x7dc7
addl $-0xb, %ecx
leaq 0x78(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x32c0
movq %r14, %rdi
leaq 0x4ad4(%rip), %rsi      # 0xc52d
callq 0x3560
movq %r12, 0x8(%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7d61
movq %rdx, 0x8(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x18(%rsp)
jmp 0x7d69
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
leaq 0x8(%rsp), %rsi
callq 0x3360
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7acc
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x7aee
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x32b0
movl 0x8b9c(%rip), %ebp      # 0x10690
addl 0x38(%rsp), %ebp
movl 0x8b8a(%rip), %eax      # 0x10688
addl $-0x2, %eax
cmpl %eax, %ebp
leaq 0x49cf(%rip), %r14      # 0xc4d9
leaq 0x78(%rsp), %r12
jge 0x7b2b
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3560
incl %ebp
movl 0x8b64(%rip), %eax      # 0x10688
addl $-0x2, %eax
cmpl %eax, %ebp
jl 0x7b11
movq 0x8ab6(%rip), %rcx      # 0x105e8
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x32c0
movq 0x10(%rsp), %rdx
movq %r12, %rdi
movq %rbx, %rsi
movq $-0x1, %rcx
callq 0x32c0
movb 0x3(%rsp), %r14b
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3360
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x7b8a
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x8ad7(%rip), %rdi      # 0x10668
xorl %esi, %esi
callq 0xb87c
movq 0x8ac9(%rip), %r12      # 0x10668
leaq 0xb8(%rsp), %rdi
callq 0x8d30
movzbl %al, %esi
addl $0x5, %esi
movq %r12, %rdi
xorl %edx, %edx
callq 0xb8ce
movq 0x8aa5(%rip), %r12      # 0x10668
leaq 0x150(%rsp), %rax
movq %rax, 0x140(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x140(%rsp), %rdi
callq 0x5cbc
movl 0x8a9d(%rip), %edx      # 0x10690
movl 0x8a9b(%rip), %ecx      # 0x10694
movq %r12, %rdi
leaq 0x140(%rsp), %rsi
callq 0xb8bc
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x7c2e
movq 0x150(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x8a33(%rip), %r12      # 0x10668
leaq 0xb8(%rsp), %rdi
callq 0x8d30
movzbl %al, %esi
addl $0x5, %esi
movq %r12, %rdi
xorl %edx, %edx
callq 0xb8e2
movq 0x8a0f(%rip), %rdi      # 0x10668
movl $0x3, %esi
xorl %edx, %edx
callq 0xb8ce
movq 0x89fc(%rip), %rbp      # 0x10668
leaq 0x130(%rsp), %rax
movq %rax, 0x120(%rsp)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
addq %rsi, %rdx
leaq 0x120(%rsp), %rdi
callq 0x5cbc
movl 0x89f4(%rip), %edx      # 0x10690
addl 0x10(%rsp), %edx
movl 0x89ee(%rip), %ecx      # 0x10694
movq %rbp, %rdi
leaq 0x120(%rsp), %rsi
callq 0xb8bc
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x7cdb
movq 0x130(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x8986(%rip), %rdi      # 0x10668
movl $0x3, %esi
xorl %edx, %edx
callq 0xb8e2
movq 0x8973(%rip), %rdi      # 0x10668
xorl %esi, %esi
callq 0xb88e
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x7d18
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7d34
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
xorl %r12d, %r12d
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7d53
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
testb %r14b, %r14b
je 0x7fb2
jmp 0x8003
movups (%rcx), %xmm0
movups %xmm0, (%r12)
movq 0x8(%rax), %rdx
movq %rdx, 0x10(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %rbx, %rdi
leaq 0x8(%rsp), %rsi
callq 0x3360
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7da5
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x7dc7
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x881a(%rip), %rcx      # 0x105e8
leaq 0x8(%rsp), %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x32c0
movq 0x10(%rsp), %rdx
leaq 0x78(%rsp), %r14
movq %r14, %rdi
movq %rbx, %rsi
movq $-0x1, %rcx
callq 0x32c0
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3360
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x7e26
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x883b(%rip), %r12      # 0x10668
leaq 0xb8(%rsp), %rdi
callq 0x8d30
movzbl %al, %esi
addl $0x5, %esi
movq %r12, %rdi
xorl %edx, %edx
callq 0xb8ce
movq 0x8817(%rip), %r12      # 0x10668
leaq 0x110(%rsp), %rax
movq %rax, 0x100(%rsp)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x100(%rsp), %rdi
callq 0x5cbc
movl 0x880f(%rip), %edx      # 0x10690
movl 0x880d(%rip), %ecx      # 0x10694
movq %r12, %rdi
leaq 0x100(%rsp), %rsi
callq 0xb8bc
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x7ebc
movq 0x110(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x87a5(%rip), %r12      # 0x10668
leaq 0xb8(%rsp), %rdi
callq 0x8d30
movzbl %al, %esi
addl $0x5, %esi
movq %r12, %rdi
xorl %edx, %edx
callq 0xb8e2
movq 0x8781(%rip), %r12      # 0x10668
leaq 0xf0(%rsp), %rax
movq %rax, 0xe0(%rsp)
movq 0x50(%rsp), %rsi
movq 0x58(%rsp), %rdx
addq %rsi, %rdx
leaq 0xe0(%rsp), %rdi
callq 0x5cbc
movl 0x8779(%rip), %edx      # 0x10690
addl 0x10(%rsp), %edx
movl 0x8773(%rip), %ecx      # 0x10694
movq %r12, %rdi
leaq 0xe0(%rsp), %rsi
callq 0xb8bc
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
leaq 0x18(%rsp), %r12
je 0x7f5b
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x7f72
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x7f8e
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
xorl %r12d, %r12d
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x7fad
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
testb %bpl, %bpl
jne 0x8003
movl 0x86dc(%rip), %eax      # 0x10694
incl %eax
movl %eax, 0x86d4(%rip)      # 0x10694
movl $0x6, %r12d
cmpl 0x160(%rsp), %eax
ja 0x8003
movq 0x28(%rsp), %rcx
movq 0x8(%rcx), %rax
subq (%rcx), %rax
sarq $0x3, %rax
movabsq $-0x3333333333333333, %rcx # imm = 0xCCCCCCCCCCCCCCCD
imulq %rcx, %rax
decq %rax
cmpq %r15, %rax
jbe 0x8003
addl $-0x5, 0x8694(%rip)     # 0x10690
incl 0x4(%rsp)
xorl %r12d, %r12d
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x8028
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x32b0
testb $0x7, %r12b
jne 0x8046
incl %r15d
movl 0x8669(%rip), %eax      # 0x106a0
addl 0x865f(%rip), %eax      # 0x1069c
cmpl %eax, %r15d
jb 0x752c
movq 0x861b(%rip), %rdi      # 0x10668
movl $0x4, %esi
movl $0x1, %edx
callq 0xb8ce
movq 0x8605(%rip), %rdi      # 0x10668
callq 0xb734
addq $0x1a8, %rsp            # imm = 0x1A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x4367(%rip), %rdi      # 0xc3e8
movq %r15, %rsi
xorl %eax, %eax
callq 0x3410
leaq 0x4356(%rip), %rdi      # 0xc3e8
movq %r15, %rsi
xorl %eax, %eax
callq 0x3410
leaq 0x4345(%rip), %rdi      # 0xc3e8
movq %r15, %rsi
xorl %eax, %eax
callq 0x3410
leaq 0x4334(%rip), %rdi      # 0xc3e8
movq %r15, %rsi
xorl %eax, %eax
callq 0x3410
leaq 0x4323(%rip), %rdi      # 0xc3e8
movq %r15, %rsi
xorl %eax, %eax
callq 0x3410
jmp 0x80d6
jmp 0x8270
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x8273
movq 0x88(%rsp), %rsi
jmp 0x8264
jmp 0x8270
movq %rax, %rbx
movq 0x100(%rsp), %rdi
leaq 0x110(%rsp), %rax
cmpq %rax, %rdi
je 0x8250
movq 0x110(%rsp), %rsi
jmp 0x8206
movq %rax, %rbx
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x8294
movq 0x198(%rsp), %rsi
jmp 0x8287
jmp 0x824d
jmp 0x8270
jmp 0x8291
movq %rax, %rbx
movq 0x120(%rsp), %rdi
leaq 0x130(%rsp), %rax
cmpq %rax, %rdi
je 0x8250
movq 0x130(%rsp), %rsi
jmp 0x8206
movq %rax, %rbx
movq 0x140(%rsp), %rdi
leaq 0x150(%rsp), %rax
cmpq %rax, %rdi
je 0x8250
movq 0x150(%rsp), %rsi
jmp 0x8206
jmp 0x824d
jmp 0x8270
jmp 0x8291
movq %rax, %rbx
movq 0x168(%rsp), %rdi
leaq 0x178(%rsp), %rax
cmpq %rax, %rdi
je 0x8294
movq 0x178(%rsp), %rsi
jmp 0x8287
movq %rax, %rbx
movq 0xe0(%rsp), %rdi
leaq 0xf0(%rsp), %rax
cmpq %rax, %rdi
je 0x8250
movq 0xf0(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x8250
jmp 0x8248
jmp 0x8248
jmp 0x8291
jmp 0x8248
jmp 0x8291
jmp 0x8248
jmp 0x8291
jmp 0x8248
jmp 0x8222
movq %rax, %rbx
movq 0x98(%rsp), %rdi
leaq 0xa8(%rsp), %rax
cmpq %rax, %rdi
je 0x8294
movq 0xa8(%rsp), %rsi
jmp 0x8287
jmp 0x824d
jmp 0x8291
movq %rax, %rbx
jmp 0x82b0
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x8273
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x8273
jmp 0x8291
movq %rax, %rbx
movq 0x50(%rsp), %rdi
leaq 0x60(%rsp), %rax
cmpq %rax, %rdi
je 0x8294
movq 0x60(%rsp), %rsi
incq %rsi
callq 0x32b0
jmp 0x8294
movq %rax, %rbx
movq 0x30(%rsp), %rdi
leaq 0x40(%rsp), %rax
cmpq %rax, %rdi
je 0x82b0
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x32b0
movq 0xb8(%rsp), %rdi
leaq 0xc8(%rsp), %rax
cmpq %rax, %rdi
je 0x82d5
movq 0xc8(%rsp), %rsi
incq %rsi
callq 0x32b0
movq %rbx, %rdi
callq 0x3500