// File: /workspace/github_cpp_makefile_star2_O3/saumya-prakash[P]AssemblerEmulator/Assembler.cpp
// Function: Assembler::analyze(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>&)
void Assembler::analyze(string& s)
{
    string::size_type ind = s.find(':');

    if(ind!=string::npos)       // : found -> label found
    {
        string tmp1(s.begin(), s.begin()+ind);      // label name
        string tmp2(s.begin()+ind+1, s.end());     // get after the label part

        struct label l(tmp1, -1);

        istringstream iss(tmp2);

        string t1;
        iss>>t1;

        if(t1=="SET")   // get the value/label specified with SET -> may need to process in pass-2
        {   
            int flag = 0;
            string less, more;

            if(l.name.empty())      // invalid label name -> no need to process SET
            {
                errors.insert({line_cnt, Error(1)});           // generate invalid_label error
                flag = 1;
            }
            
            iss>>less;
            if(less.empty())           // too few operands
            {
                errors.insert({line_cnt, Error(9)});
                return;     // nothing to be done now
            }

            t1 = less;

            if(valid_number(t1)==false)             // not a valid numer following SET
            {
                errors.insert({line_cnt, Error(8)});   // generate Number expected error
                flag = 1;
            }

            string num = t1;
            
            iss>>more;
            if(!more.empty())     // more operands found
            {    
                errors.insert({line_cnt, Error(6)});    // generate too many opearands error
                flag = 1;
            }

            if(flag==0)     // no error -> safe to process SET
            {
                int a = str_to_int(num);

                l.addr = a;
                l.line_no = line_cnt;

                insert_into_symtab(l);  // will take care of insertion, error-detection

                struct line aux(s, line_cnt, pc);
                aux.encoding = a;       // encoded form of opearnd of SET
                aux_lines.push_back(aux);
            }


            return;     // ANALYSIS COMPLETE HERE
        }

        else if(t1=="data")     // data directive -> process it
        {
            if(l.name.empty())      // invalid label name
                errors.insert({line_cnt, Error(1)});    // invalid label name error
            
            int flag = 0;
            string less, more;

            iss>>less;
            if(less.empty())       // too few operands
            {
                errors.insert({line_cnt, Error(9)});
                return;     // nothing to be done now
            }

            t1 = less;
            if(valid_number(t1)==false)
            {
                errors.insert({line_cnt, Error(8)});   // generate Number expected error
                flag = 1;
            }

            string num = t1;

            iss>>more;
            if(!more.empty())
            {
                errors.insert({line_cnt, Error(6)});    // generate too many opearands error
                flag = 1;
            }

            if(flag==0)
            {
                int value = str_to_int(num);

                data_to_reserve[data_addr] = value;
                l.addr = data_addr;
                l.line_no = line_cnt;

                insert_into_symtab(l);
                
                struct line aux(s, line_cnt, data_addr);
                aux.encoding = value;
                aux_lines.push_back(aux);

                data_addr++;     // incrementing by 1 as it is a word-addressable machine
            }

            return ;    // ANALYSIS COMPLETE HERE
        }

        else    // label followed by a statement -> modify line and leave it for pass-2
        {
            int flag = 0;

            if(l.name.empty())
            {
                errors.insert({line_cnt, Error(1)});    // invalid label name error
                flag = 1;
            }

            l.addr = pc;
            l.line_no = line_cnt;


            if(flag==0)
            { 
                insert_into_symtab(l);

                struct line aux(l.name+":", line_cnt, pc);
                aux_lines.push_back(aux);
            }


            if(!t1.empty())     // some mnemonic should be there after label -> otherwise no need to increment PC and insert line to linked list
            {
                struct line ll(tmp2, line_cnt, pc);
                pc++;
                lines.push_back(ll);
            }

       
            return;     // ANALYSIS COMPLETE HERE
        }
    }


    else        // not a labeled statement
    {
        istringstream iss(s);
        string t1;

        iss>>t1;

        if(t1=="SET")   // no label, so processing SET is not at all required
        {
            warnings.insert({line_cnt, Warning(2)});

            string less, more;
            int flag = 0;

            iss>>less;
            if(less.empty())
            {
                errors.insert({line_cnt, Error(9)});
                return;     // nothing to be done now
            }

            t1 = less;
            if(valid_number(t1)==false)
            {
                errors.insert({line_cnt, Error(8)});   // generate Number expected error
                flag = 1;
            }

            iss>>more;
            if(!more.empty())   // more operands than required
            {
                errors.insert({line_cnt, Error(6)});
                flag = 1;
            }

            if(flag==0)
            {
                int a = str_to_int(t1);

                struct line aux(s, line_cnt, pc);
                aux.encoding = a;
                aux_lines.push_back(aux);
            }

            return ;    // ANALYSIS DONE HERE
        }

        else if(t1=="data")
        {
            string less, more;
            int flag = 0;

            iss>>less;
            if(less.empty())
            {
                errors.insert({line_cnt, Error(9)});
                return;     // nothing to do now
            }

            t1 = less;
            if(valid_number(t1)==false)
            {
                errors.insert({line_cnt, Error(8)});   // generate Number expected error
                flag = 1;
            }

            iss>>more;
            if(!more.empty())       // too many operands
            {
                errors.insert({line_cnt, Error(6)});
                flag = 1;
            }

            if(flag==0)     // okay to reserve memory
            {
                int a = str_to_int(t1);

                data_to_reserve[data_addr] = a;
                struct line aux(s, line_cnt, data_addr);
                aux.encoding = a;
                aux_lines.push_back(aux);

                data_addr++;
            }

            return;     // ANALYSIS COMPLETE HERE
        }

        else        // some simple statement - mnemonic followed by operands (0 or more)
        {
            struct line ll(s, line_cnt, pc);
            pc++;

            lines.push_back(ll);

            return ;
        }
    }

    return ;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x3e8, %rsp            # imm = 0x3E8
movq %rsi, %r14
movq %rdi, %rbx
movq %rsi, %rdi
movl $0x3a, %esi
xorl %edx, %edx
callq 0x2240
cmpq $-0x1, %rax
je 0x42fb
movq %rax, %r15
movq (%r14), %rsi
leaq (%rsi,%rax), %rdx
leaq 0xd8(%rsp), %r12
movq %r12, -0x10(%r12)
leaq 0xc8(%rsp), %rdi
callq 0x8998
movq (%r14), %rdx
leaq (%rdx,%r15), %rsi
incq %rsi
addq 0x8(%r14), %rdx
leaq 0x118(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x108(%rsp), %rdi
callq 0x8998
leaq 0x258(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x248(%rsp), %rdi
callq 0x3298
leaq 0x78(%rsp), %rdi
leaq 0x248(%rsp), %rdx
movq %rdi, %rsi
callq 0x8274
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x98(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x415f
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x268(%rsp), %rdi
leaq 0x108(%rsp), %rsi
movl $0x8, %edx
callq 0x22d0
leaq 0x18(%rsp), %rax
movq %rax, -0x10(%rax)
movq $0x0, -0x8(%rax)
movb $0x0, (%rax)
leaq 0x268(%rsp), %rdi
leaq 0x8(%rsp), %rsi
callq 0x2230
leaq 0x6000(%rip), %rsi      # 0xa1a6
leaq 0x8(%rsp), %rdi
callq 0x20a0
testl %eax, %eax
je 0x4441
leaq 0x5feb(%rip), %rsi      # 0xa1aa
leaq 0x8(%rsp), %rdi
callq 0x20a0
movq 0x80(%rsp), %rcx
testl %eax, %eax
je 0x44eb
testq %rcx, %rcx
je 0x45fb
movl 0x90(%rbx), %eax
leaq 0x78(%rsp), %rsi
movl %eax, 0x20(%rsi)
movl 0x98(%rbx), %eax
movl %eax, 0x28(%rsi)
movq %rbx, %rdi
callq 0x6318
leaq 0x160(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
addq %rsi, %rdx
leaq 0x150(%rsp), %rdi
callq 0x3298
leaq 0x5f7e(%rip), %rsi      # 0xa1af
leaq 0x150(%rsp), %rdi
callq 0x2310
leaq 0x90(%rbx), %r15
leaq 0x98(%rbx), %r13
movl (%r13), %r12d
movl (%r15), %r14d
leaq 0x38(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq 0x150(%rsp), %rsi
movq 0x158(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x3298
movl %r12d, 0x48(%rsp)
movl %r14d, 0x4c(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x42b0
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x78(%rbx), %r14
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
leaq 0xd8(%rsp), %r12
callq 0x8b02
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x49d2
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x49d2
leaq 0x268(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movl $0x8, %edx
callq 0x22d0
leaq 0x38(%rsp), %r12
movq %r12, -0x10(%r12)
movq $0x0, -0x8(%r12)
movb $0x0, (%r12)
leaq 0x28(%rsp), %rsi
movq %r15, %rdi
callq 0x2230
leaq 0x5e67(%rip), %rsi      # 0xa1a6
leaq 0x28(%rsp), %rdi
callq 0x20a0
testl %eax, %eax
je 0x4573
leaq 0x5e52(%rip), %rsi      # 0xa1aa
leaq 0x28(%rsp), %rdi
callq 0x20a0
testl %eax, %eax
je 0x467a
leaq 0x1d8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x1c8(%rsp), %rdi
callq 0x3298
movl 0x90(%rbx), %ebp
movl 0x98(%rbx), %r14d
leaq 0x88(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x1c8(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x3298
movl %r14d, 0x98(%rsp)
movl %ebp, 0x9c(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x43fb
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x21c0
incl 0x90(%rbx)
leaq 0x60(%rbx), %r14
leaq 0x78(%rsp), %rsi
movq %r14, %rdi
leaq 0x38(%rsp), %r12
callq 0x8b02
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x70(%rbx)
movq 0x78(%rsp), %rdi
cmpq %r15, %rdi
je 0x5b94
movq 0x88(%rsp), %rsi
jmp 0x5b8c
leaq 0xb8(%rsp), %rax
movq %rax, -0x10(%rax)
xorl %ebp, %ebp
movq %rbp, -0x8(%rax)
movb %bpl, (%rax)
leaq 0x138(%rsp), %r13
movq %r13, -0x10(%r13)
movq %rbp, -0x8(%r13)
movb %bpl, (%r13)
cmpq %rbp, 0x80(%rsp)
jne 0x4b8a
leaq 0xe8(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x9d63(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x68(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x3298
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0x58(%rsp), %rax
cmpq %rbp, %rax
je 0x4b27
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4b31
testq %rcx, %rcx
jne 0x507b
leaq 0x128(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x9ce7(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0xb8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x3298
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r13
movl %eax, -0x18(%r13)
movq %r13, -0x10(%r13)
movq 0xa8(%rsp), %rax
cmpq %r15, %rax
je 0x500a
movq %rax, 0x30(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x5015
leaq 0x108(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x9c98(%rip), %rdi      # 0xe220
callq 0x82f6
leaq 0xd8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xc8(%rsp), %rdi
callq 0x3298
leaq 0xf8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x90(%rsp), %r13
movl %eax, -0x18(%r13)
movq %r13, -0x10(%r13)
movq 0xc8(%rsp), %rax
cmpq %r15, %rax
je 0x476a
movq %rax, 0x80(%rsp)
movq 0xd8(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x4775
leaq 0x128(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x9be0(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0xb8(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x3298
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0xa8(%rsp), %rax
cmpq %r14, %rax
je 0x493a
movq %rax, 0x30(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4944
leaq 0xd8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x118(%rsp), %r13
movq %r13, -0x10(%r13)
movq %rax, -0x8(%r13)
movb %al, (%r13)
leaq 0x268(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0xd0(%rsp)
je 0x4aab
leaq 0x28(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x20f0
leaq 0x28(%rsp), %rsi
callq 0x35e0
movl %eax, %ebp
testb %al, %al
jne 0x595f
leaq 0xa8(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x9aef(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x3298
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x90(%rsp), %r12
movl %eax, -0x18(%r12)
movq %r12, -0x10(%r12)
movq 0x8(%rsp), %rax
cmpq %r15, %rax
je 0x58f5
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x5900
movdqu (%r15), %xmm0
movdqu %xmm0, (%r13)
movq 0xd0(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r15, 0xc8(%rsp)
movq $0x0, 0xd0(%rsp)
movb $0x0, 0xd8(%rsp)
callq 0x8d68
movq 0x80(%rsp), %rdi
cmpq %r13, %rdi
je 0x47c4
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x47e1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0xc8(%rsp), %rsi
movq %r15, (%rsi)
xorl %eax, %eax
movq %rax, 0x8(%rsi)
movb %al, 0x10(%rsi)
leaq 0x118(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x268(%rsp), %rdi
callq 0x2230
cmpq $0x0, 0xd0(%rsp)
je 0x48c2
leaq 0x28(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x20f0
leaq 0x28(%rsp), %rsi
callq 0x35e0
movl %eax, %ebp
testb %al, %al
jne 0x5694
leaq 0xa8(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x9992(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x18(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x3298
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
movl %eax, 0x78(%rsp)
movq %r13, 0x80(%rsp)
movq 0x8(%rsp), %rax
cmpq %r12, %rax
je 0x5629
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x5635
leaq 0xa8(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x9919(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
movl %eax, 0x78(%rsp)
movq %r13, 0x80(%rsp)
movq 0x8(%rsp), %rax
cmpq %r14, %rax
je 0x5229
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x5234
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq 0xb0(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0xa8(%rsp)
movq $0x0, 0xb0(%rsp)
movb $0x0, 0xb8(%rsp)
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x498d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x49aa
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x98(%rbx), %r13
leaq 0x90(%rbx), %r15
movl 0x90(%rbx), %eax
movl %eax, 0x98(%rsp)
movl 0x98(%rbx), %eax
movl %eax, 0xa0(%rsp)
cmpq $0x0, 0x10(%rsp)
je 0x5580
leaq 0x238(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x108(%rsp), %rsi
movq 0x110(%rsp), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %rdi
callq 0x3298
movl (%r13), %ebp
movl (%r15), %r12d
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x228(%rsp), %rsi
movq 0x230(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x3298
movl %ebp, 0x48(%rsp)
movl %r12d, 0x4c(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x228(%rsp), %rdi
cmpq %r14, %rdi
je 0x4a65
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x21c0
incl 0x90(%rbx)
leaq 0x60(%rbx), %r14
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
leaq 0xd8(%rsp), %r12
callq 0x8b02
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x70(%rbx)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x5580
movq 0x38(%rsp), %rsi
jmp 0x5578
leaq 0xa8(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x9730(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
leaq 0x90(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rax
cmpq %r14, %rax
je 0x58bd
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x58c7
movdqu (%rbp), %xmm0
movdqu %xmm0, (%r15)
movq 0x60(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %rbp, 0x58(%rsp)
movq $0x0, 0x60(%rsp)
movb $0x0, 0x68(%rsp)
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4b6e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4b85
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %ebp
leaq 0x268(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0xb0(%rsp)
je 0x4c45
leaq 0x8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x20f0
leaq 0x8(%rsp), %rsi
callq 0x35e0
testb %al, %al
jne 0x4d71
leaq 0xe8(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x9609(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x68(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x3298
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0x58(%rsp), %rax
cmpq %rbp, %rax
je 0x4d0e
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4d18
leaq 0xe8(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x9596(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x68(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0x58(%rsp), %rax
cmpq %r14, %rax
je 0x4cb1
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4cbb
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq 0x60(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0x58(%rsp)
movq $0x0, 0x60(%rsp)
movb $0x0, 0x68(%rsp)
movq %rbx, %rdi
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4cfb
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x4fc2
jmp 0x4fcf
movdqu (%rbp), %xmm0
movdqu %xmm0, (%r15)
movq 0x60(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %rbp, 0x58(%rsp)
movq $0x0, 0x60(%rsp)
movb $0x0, 0x68(%rsp)
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4d55
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4d6c
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %ebp
leaq 0x68(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x3298
leaq 0x268(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0x130(%rsp)
je 0x4e37
movq %r15, %rbp
leaq 0x14c(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x9423(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0xf8(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0xe8(%rsp), %rax
cmpq %r14, %rax
je 0x4f42
movq %rax, 0x30(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4f4c
testl %ebp, %ebp
jne 0x4fb8
leaq 0x58(%rsp), %rsi
callq 0x368e
movl %eax, %ebp
leaq 0x78(%rsp), %rsi
movl %eax, 0x20(%rsi)
movl 0x98(%rbx), %eax
movl %eax, 0x28(%rsi)
movq %rbx, %rdi
callq 0x6318
movl %ebp, 0x170(%rsp)
movq %r15, %rbp
leaq 0x1b8(%rsp), %rax
movq %rax, -0x10(%rax)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x1a8(%rsp), %rdi
callq 0x3298
movl 0x90(%rbx), %r14d
movl 0x98(%rbx), %r15d
leaq 0x38(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x1a8(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x3298
movl %r15d, 0x48(%rsp)
movl %r14d, 0x4c(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x4efc
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x28(%rsp), %rsi
movl 0x170(%rsp), %eax
movl %eax, 0x28(%rsi)
leaq 0x78(%rbx), %r14
movq %r14, %rdi
movq %rbp, %r15
callq 0x8b02
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x4fb8
movq 0x38(%rsp), %rsi
jmp 0x4fb0
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq 0xf0(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0xe8(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xf8(%rsp)
movq %rbx, %rdi
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4f98
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
movq %rbp, %r15
je 0x4fb8
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x4fcf
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x128(%rsp), %rdi
cmpq %r13, %rdi
je 0x4fec
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
jne 0x5570
jmp 0x5580
movdqu (%r15), %xmm0
movdqu %xmm0, (%r13)
movq 0xb0(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r15, 0xa8(%rsp)
movq $0x0, 0xb0(%rsp)
movb $0x0, 0xb8(%rsp)
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0x505e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
je 0x507b
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0xb8(%rsp), %r13
movq %r13, -0x10(%r13)
xorl %eax, %eax
movq %rax, -0x8(%r13)
movb %al, (%r13)
leaq 0x138(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x268(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0xb0(%rsp)
je 0x5160
leaq 0x8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x20f0
leaq 0x8(%rsp), %rsi
callq 0x35e0
movl %eax, %ebp
testb %al, %al
jne 0x52c9
leaq 0xe8(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x90ee(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x68(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x3298
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r13
movl %eax, -0x18(%r13)
movq %r13, -0x10(%r13)
movq 0x58(%rsp), %rax
cmpq %r15, %rax
je 0x5262
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x526d
leaq 0xe8(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x907b(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x68(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0x58(%rsp), %rax
cmpq %r14, %rax
je 0x51cc
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x51d6
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq 0x60(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0x58(%rsp)
movq $0x0, 0x60(%rsp)
movb $0x0, 0x68(%rsp)
movq %rbx, %rdi
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5216
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x5531
jmp 0x553e
movdqu (%r14), %xmm0
movdqu %xmm0, (%r13)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq %rbx, %rdi
callq 0x8a12
jmp 0x584e
movdqu (%r15), %xmm0
movdqu %xmm0, (%r13)
movq 0x60(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r15, 0x58(%rsp)
movq $0x0, 0x60(%rsp)
movb $0x0, 0x68(%rsp)
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0x52aa
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
leaq 0xb8(%rsp), %r13
je 0x52c9
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x68(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rsi
movq 0x10(%rsp), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x3298
leaq 0x268(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0x130(%rsp)
je 0x5388
leaq 0x14c(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x8ed2(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0xf8(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xe8(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0xe8(%rsp), %rax
cmpq %r14, %rax
je 0x54af
movq %rax, 0x30(%rsp)
movq 0xf8(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x54b9
testb %bpl, %bpl
je 0x5527
leaq 0x58(%rsp), %rsi
callq 0x368e
movl %eax, %ebp
leaq 0x30(%rbx), %rdi
leaq 0x94(%rbx), %r15
movq %r15, %rsi
callq 0x80a2
movl %ebp, (%rax)
movl 0x94(%rbx), %eax
leaq 0x78(%rsp), %rsi
movl %eax, 0x20(%rsi)
movl 0x98(%rbx), %eax
movl %eax, 0x28(%rsi)
movq %rbx, %rdi
callq 0x6318
leaq 0x198(%rsp), %rax
movq %rax, -0x10(%rax)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0x3298
movq (%r15), %xmm0
movdqa %xmm0, 0x170(%rsp)
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x188(%rsp), %rsi
movq 0x190(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x3298
pshufd $0xe1, 0x170(%rsp), %xmm0 # xmm0 = mem[1,0,2,3]
movq %xmm0, 0x48(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x5465
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x28(%rsp), %rsi
movl %ebp, 0x28(%rsi)
leaq 0x78(%rbx), %r14
movq %r14, %rdi
callq 0x8b02
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
incl 0x94(%rbx)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x54a8
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x68(%rsp), %r15
jmp 0x5527
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq 0xf0(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0xe8(%rsp)
movq $0x0, 0xf0(%rsp)
movb $0x0, 0xf8(%rsp)
movq %rbx, %rdi
callq 0x8a12
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5505
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
leaq 0x68(%rsp), %r15
je 0x5527
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x553e
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x5563
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r13, %rdi
je 0x5580
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x559c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8a2d(%rip), %rsi      # 0xdfd0
leaq 0x268(%rsp), %rdi
callq 0x2270
leaq 0x2e0(%rsp), %rdi
callq 0x20b0
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x55de
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x5603
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5bcc
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x5bcc
movdqu (%r12), %xmm0
movdqu %xmm0, (%r13)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r12, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
callq 0x8a12
movq 0x80(%rsp), %rdi
cmpq %r13, %rdi
je 0x5678
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
je 0x568f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x38(%rsp), %r12
leaq 0x268(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0x110(%rsp)
je 0x572c
leaq 0xa8(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x8b27(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
movl %eax, 0x78(%rsp)
movq %r13, 0x80(%rsp)
movq 0x8(%rsp), %rax
cmpq %r14, %rax
je 0x581a
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x5825
testb %bpl, %bpl
je 0x5882
leaq 0x28(%rsp), %rsi
callq 0x368e
movl %eax, %ebp
leaq 0x218(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0x3298
movl 0x90(%rbx), %r14d
movl 0x98(%rbx), %r12d
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x208(%rsp), %rsi
movq 0x210(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x3298
movl %r12d, 0x98(%rsp)
movl %r14d, 0x9c(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x208(%rsp), %rdi
cmpq %r13, %rdi
je 0x57d3
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x78(%rsp), %rsi
movl %ebp, 0x28(%rsi)
leaq 0x78(%rbx), %r14
movq %r14, %rdi
leaq 0x38(%rsp), %r12
callq 0x8b02
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x5882
movq 0x88(%rsp), %rsi
jmp 0x587a
movdqu (%r14), %xmm0
movdqu %xmm0, (%r13)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq %rbx, %rdi
callq 0x8a12
movq 0x80(%rsp), %rdi
cmpq %r13, %rdi
je 0x586b
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x5882
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x58a7
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x5b84
jmp 0x5b94
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq %rbx, %rdi
callq 0x8a12
jmp 0x5b1e
movdqu (%r15), %xmm0
movdqu %xmm0, (%r12)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r15, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
callq 0x8a12
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5943
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
leaq 0x38(%rsp), %r12
je 0x595f
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x268(%rsp), %rdi
leaq 0x108(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0x110(%rsp)
je 0x59fb
leaq 0xa8(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x885c(%rip), %rdi      # 0xe1f0
callq 0x82f6
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x3298
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
leaq 0x90(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0x8(%rsp), %rax
cmpq %r14, %rax
je 0x5aeb
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x5af5
testb %bpl, %bpl
je 0x5b52
leaq 0x28(%rsp), %rsi
callq 0x368e
movl %eax, %ebp
leaq 0x30(%rbx), %rdi
leaq 0x94(%rbx), %r15
movq %r15, %rsi
callq 0x80a2
movl %ebp, (%rax)
leaq 0x1f8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x1e8(%rsp), %rdi
callq 0x3298
movq (%r15), %xmm0
movdqa %xmm0, 0x170(%rsp)
leaq 0x88(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x1e8(%rsp), %rsi
movq 0x1f0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x3298
pshufd $0xe1, 0x170(%rsp), %xmm0 # xmm0 = mem[1,0,2,3]
movq %xmm0, 0x98(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5abb
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x78(%rsp), %rsi
movl %ebp, 0x28(%rsi)
addq $0x78, %rbx
movq %rbx, %rdi
leaq 0x38(%rsp), %r12
callq 0x8088
incl (%r15)
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
je 0x5b52
movq 0x88(%rsp), %rsi
jmp 0x5b4a
movdqu (%r14), %xmm0
movdqu %xmm0, (%r15)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r14, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
movq %rbx, %rdi
callq 0x8a12
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x5b3b
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x5b52
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x5b6f
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x5b94
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x28(%rsp), %rdi
cmpq %r12, %rdi
je 0x5bab
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x841e(%rip), %rsi      # 0xdfd0
leaq 0x268(%rsp), %rdi
callq 0x2270
leaq 0x2e0(%rsp), %rdi
callq 0x20b0
addq $0x3e8, %rsp            # imm = 0x3E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %rbx
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
je 0x610c
movq 0x88(%rsp), %rsi
jmp 0x5d73
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %r12, %rdi
je 0x610c
movq 0x1f8(%rsp), %rsi
jmp 0x5d73
jmp 0x6109
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x6166
movq 0x88(%rsp), %rsi
jmp 0x5e1b
movq %rax, %rbx
movq 0x208(%rsp), %rdi
cmpq %r13, %rdi
je 0x6166
movq 0x218(%rsp), %rsi
jmp 0x5e1b
jmp 0x6163
jmp 0x6163
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x5fb3
movq 0x38(%rsp), %rsi
jmp 0x5ebd
movq %rax, %rbx
movq 0x188(%rsp), %rdi
leaq 0x198(%rsp), %rax
cmpq %rax, %rdi
je 0x5fb3
movq 0x198(%rsp), %rsi
jmp 0x5ebd
jmp 0x5fb0
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x60e4
movq 0x38(%rsp), %rsi
jmp 0x5f53
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
leaq 0x1b8(%rsp), %rax
cmpq %rax, %rdi
je 0x60e4
movq 0x1b8(%rsp), %rsi
jmp 0x5f53
jmp 0x60e1
jmp 0x6109
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5d2f
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x5d6e
jmp 0x610c
jmp 0x5d40
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x5d60
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x610c
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x610c
jmp 0x5ff9
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r13, %rdi
je 0x5da5
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x5e16
jmp 0x6166
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0x5dce
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
jne 0x5fc6
jmp 0x6143
jmp 0x5fb0
jmp 0x5de8
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r13, %rdi
je 0x5e08
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x6166
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x6166
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5e42
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x5fc6
jmp 0x6143
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r13, %rdi
je 0x5e6f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x6224
jmp 0x6239
jmp 0x6109
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5ea4
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
je 0x5fb3
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x5fb3
jmp 0x6109
jmp 0x6109
jmp 0x5f03
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5ef0
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x60f2
jmp 0x61f2
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x60e4
movq 0x40(%rsp), %rsi
jmp 0x5f53
jmp 0x6163
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f3a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
cmpq %r14, %rdi
je 0x60e4
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x60e4
jmp 0x5fb0
jmp 0x6140
jmp 0x6140
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f86
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x6224
jmp 0x6239
jmp 0x6163
jmp 0x6163
jmp 0x6140
jmp 0x6236
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x6143
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x6143
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r13, %rdi
je 0x618b
movq 0x90(%rsp), %rsi
jmp 0x6183
movq %r15, %rbp
jmp 0x60e1
jmp 0x61ef
jmp 0x61ef
movq %rax, %rbx
movq 0x78(%rsp), %rdi
cmpq %r15, %rdi
je 0x61ad
movq 0x88(%rsp), %rsi
jmp 0x61a0
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x61ad
movq 0x1d8(%rsp), %rsi
jmp 0x61a0
jmp 0x61aa
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
jne 0x6098
jmp 0x6239
movq %rax, %rbx
movq 0x228(%rsp), %rdi
cmpq %r14, %rdi
je 0x6239
movq 0x238(%rsp), %rsi
jmp 0x622c
jmp 0x6236
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6239
movq 0x38(%rsp), %rsi
jmp 0x622c
jmp 0x60a4
movq %rax, %rbx
movq 0x150(%rsp), %rdi
leaq 0x160(%rsp), %rax
cmpq %rax, %rdi
je 0x6239
movq 0x160(%rsp), %rsi
jmp 0x622c
jmp 0x6236
jmp 0x6236
jmp 0x61ef
jmp 0x61ef
movq %rax, %rbx
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x61f2
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x61f2
jmp 0x6236
movq %rax, %rbx
movq 0x108(%rsp), %rdi
cmpq %r13, %rdi
je 0x6129
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
jne 0x6198
jmp 0x61ad
movq %rax, %rbx
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
jne 0x61ff
jmp 0x620f
jmp 0x61aa
movq %rax, %rbx
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x618b
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x61ad
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x61ad
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x61c9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x7e00(%rip), %rsi      # 0xdfd0
leaq 0x268(%rsp), %rdi
callq 0x2270
leaq 0x2e0(%rsp), %rdi
callq 0x20b0
jmp 0x62e1
movq %rax, %rbx
movq 0x128(%rsp), %rdi
cmpq %r13, %rdi
je 0x620f
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x6239
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x6239
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x6255
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x7d74(%rip), %rsi      # 0xdfd0
leaq 0x268(%rsp), %rdi
callq 0x2270
leaq 0x2e0(%rsp), %rdi
callq 0x20b0
leaq 0x88(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x6297
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
leaq 0x118(%rsp), %rax
cmpq %rax, %rdi
je 0x62bc
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x62e1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq %rbx, %rdi
callq 0x22e0
movq %rax, %rbx
jmp 0x6276
movq %rax, %rbx
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x6297
movq 0x258(%rsp), %rsi
jmp 0x628f
movq %rax, %rbx
jmp 0x6297
movq %rax, %rbx
jmp 0x62bc
movq %rax, %rbx
jmp 0x62e1
nop