// File: /workspace/github_cpp_makefile_star2_O1/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 0x426a
movq %rax, %r15
movq (%r14), %rsi
leaq (%rsi,%rax), %rdx
leaq 0xd8(%rsp), %r13
movq %r13, -0x10(%r13)
leaq 0xc8(%rsp), %rdi
callq 0x8a3c
movq (%r14), %rdx
leaq (%rdx,%r15), %rsi
incq %rsi
addq 0x8(%r14), %rdx
leaq 0xf8(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0xe8(%rsp), %rdi
callq 0x8a3c
leaq 0x258(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0xc8(%rsp), %rsi
movq 0xd0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x248(%rsp), %rdi
callq 0x32b6
leaq 0x78(%rsp), %rdi
leaq 0x248(%rsp), %rdx
movq %rdi, %rsi
callq 0x82f0
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
movq %rax, 0x98(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x4166
movq 0x258(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x268(%rsp), %rdi
leaq 0xe8(%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 0x5ff9(%rip), %rsi      # 0xa1a6
leaq 0x8(%rsp), %rdi
callq 0x20a0
testl %eax, %eax
je 0x43a9
leaq 0x5fe4(%rip), %rsi      # 0xa1aa
leaq 0x8(%rsp), %rdi
callq 0x20a0
movq 0x80(%rsp), %r15
testl %eax, %eax
je 0x4455
testq %r15, %r15
jne 0x489b
leaq 0x128(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x9ff2(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0xb8(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x32b6
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r12
movl %eax, -0x18(%r12)
movq %r12, -0x10(%r12)
movq 0xa8(%rsp), %rax
cmpq %r14, %rax
je 0x482a
movq %rax, 0x30(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4835
leaq 0x268(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
movl $0x8, %edx
callq 0x22d0
leaq 0x38(%rsp), %r13
movq %r13, -0x10(%r13)
movq $0x0, -0x8(%r13)
movb $0x0, (%r13)
leaq 0x28(%rsp), %rsi
movq %r15, %rdi
callq 0x2230
leaq 0x5efa(%rip), %rsi      # 0xa1a6
leaq 0x28(%rsp), %rdi
callq 0x20a0
testl %eax, %eax
je 0x44df
leaq 0x5ee5(%rip), %rsi      # 0xa1aa
leaq 0x28(%rsp), %rdi
callq 0x20a0
testl %eax, %eax
je 0x4566
leaq 0x198(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x188(%rsp), %rdi
callq 0x32b6
movl 0x90(%rbx), %ebp
movl 0x98(%rbx), %r14d
leaq 0x88(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x188(%rsp), %rsi
movq 0x190(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x32b6
movl %r14d, 0x98(%rsp)
movl %ebp, 0x9c(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x4368
movq 0x198(%rsp), %rsi
incq %rsi
callq 0x21c0
incl 0x90(%rbx)
leaq 0x60(%rbx), %r14
leaq 0x78(%rsp), %rsi
movq %r14, %rdi
callq 0x8b9e
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x70(%rbx)
movq 0x78(%rsp), %rdi
cmpq %r15, %rdi
je 0x5bf1
movq 0x88(%rsp), %rsi
jmp 0x5be9
leaq 0xb8(%rsp), %r12
movq %r12, -0x10(%r12)
xorl %ebp, %ebp
movq %rbp, -0x8(%r12)
movb %bpl, (%r12)
leaq 0x138(%rsp), %rax
movq %rax, -0x10(%rax)
movq %rbp, -0x8(%rax)
movb %bpl, (%rax)
cmpq %rbp, 0x80(%rsp)
jne 0x4b59
leaq 0x108(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x9df9(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x68(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x32b6
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 0x4af6
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4b00
testq %r15, %r15
jne 0x503f
leaq 0x128(%rsp), %rsi
movl $0x1, (%rsi)
leaq 0x9d7d(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0xb8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xa8(%rsp), %rdi
callq 0x32b6
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r12
movl %eax, -0x18(%r12)
movq %r12, -0x10(%r12)
movq 0xa8(%rsp), %rax
cmpq %r15, %rax
je 0x4fce
movq %rax, 0x30(%rsp)
movq 0xb8(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4fd9
leaq 0xe8(%rsp), %rsi
movl $0x2, (%rsi)
leaq 0x9d2c(%rip), %rdi      # 0xe220
callq 0x839a
leaq 0xd8(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0xc8(%rsp), %rdi
callq 0x32b6
leaq 0xf8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x90(%rsp), %rbp
movl %eax, -0x18(%rbp)
movq %rbp, -0x10(%rbp)
movq 0xc8(%rsp), %rax
cmpq %r15, %rax
je 0x465b
movq %rax, 0x80(%rsp)
movq 0xd8(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x4665
leaq 0xd8(%rsp), %r12
movq %r12, -0x10(%r12)
xorl %eax, %eax
movq %rax, -0x8(%r12)
movb %al, (%r12)
leaq 0xf8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x268(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0xd0(%rsp)
je 0x4a7a
leaq 0x28(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x20f0
leaq 0x28(%rsp), %rsi
callq 0x35f4
xorl %ebp, %ebp
testb %al, %al
jne 0x59a9
movq %r12, %r13
leaq 0xa8(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x9bfe(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x32b6
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 0x593c
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x5947
movdqu (%r15), %xmm0
movdqu %xmm0, (%rbp)
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 0x8e06
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x46b4
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x46d1
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 0xf8(%rsp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq 0x268(%rsp), %rdi
callq 0x2230
cmpq $0x0, 0xd0(%rsp)
je 0x47b2
leaq 0x28(%rsp), %rdi
leaq 0xc8(%rsp), %rsi
callq 0x20f0
leaq 0x28(%rsp), %rsi
callq 0x35f4
xorl %r12d, %r12d
testb %al, %al
jne 0x569f
leaq 0xa8(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x9aa1(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x18(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x32b6
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
movl %eax, 0x78(%rsp)
movq %rbp, 0x80(%rsp)
movq 0x8(%rsp), %rax
cmpq %r13, %rax
je 0x562f
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x563a
leaq 0xa8(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x9a29(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x32b6
movl 0x98(%rbx), %eax
addq $0xc8, %rbx
movl %eax, 0x78(%rsp)
movq %rbp, 0x80(%rsp)
movq 0x8(%rsp), %rax
cmpq %r14, %rax
je 0x51f4
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x51fe
movdqu (%r14), %xmm0
movdqu %xmm0, (%r12)
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 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x487e
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
je 0x489b
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
movl 0x90(%rbx), %eax
movl %eax, 0x98(%rsp)
movl 0x98(%rbx), %eax
movl %eax, 0xa0(%rsp)
testq %r15, %r15
je 0x49a3
leaq 0x78(%rsp), %rsi
movq %rbx, %rdi
callq 0x6398
leaq 0x160(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x78(%rsp), %rsi
movq 0x80(%rsp), %rdx
addq %rsi, %rdx
leaq 0x150(%rsp), %rdi
callq 0x32b6
leaq 0x58b4(%rip), %rsi      # 0xa1af
leaq 0x150(%rsp), %rdi
callq 0x2310
movl 0x90(%rbx), %ebp
movl 0x98(%rbx), %r12d
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x150(%rsp), %rsi
movq 0x158(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x32b6
movl %r12d, 0x48(%rsp)
movl %ebp, 0x4c(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x150(%rsp), %rdi
cmpq %r14, %rdi
je 0x4969
movq 0x160(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x78(%rbx), %r14
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
callq 0x8b9e
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x49a3
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
cmpq $0x0, 0x10(%rsp)
je 0x5586
leaq 0x1f8(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0xe8(%rsp), %rsi
movq 0xf0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x1e8(%rsp), %rdi
callq 0x32b6
movl 0x90(%rbx), %ebp
movl 0x98(%rbx), %r12d
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x1e8(%rsp), %rsi
movq 0x1f0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x32b6
movl %r12d, 0x48(%rsp)
movl %ebp, 0x4c(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x1e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x4a3c
movq 0x1f8(%rsp), %rsi
incq %rsi
callq 0x21c0
incl 0x90(%rbx)
leaq 0x60(%rbx), %r14
leaq 0x28(%rsp), %rsi
movq %r14, %rdi
callq 0x8b9e
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x70(%rbx)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x5586
movq 0x38(%rsp), %rsi
jmp 0x557e
leaq 0xa8(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x9761(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x18(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x32b6
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 0x58d4
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x58de
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 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4b3d
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4b54
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 0x4c14
leaq 0x8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x20f0
leaq 0x8(%rsp), %rsi
callq 0x35f4
testb %al, %al
jne 0x4d40
leaq 0x108(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x963a(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x68(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x32b6
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 0x4cdd
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4ce7
leaq 0x108(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x95c7(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x68(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x32b6
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 0x4c80
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4c8a
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 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4cca
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x4f86
jmp 0x4f93
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 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4d24
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
je 0x4d3b
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 0x32b6
leaq 0x268(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0x130(%rsp)
je 0x4e76
leaq 0x14c(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x9457(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x118(%rsp), %rbp
movq %rbp, -0x10(%rbp)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x108(%rsp), %rdi
callq 0x32b6
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r15
movl %eax, -0x18(%r15)
movq %r15, -0x10(%r15)
movq 0x108(%rsp), %rax
cmpq %rbp, %rax
je 0x4dfc
movq %rax, 0x30(%rsp)
movq 0x118(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x4e06
movdqu (%rbp), %xmm0
movdqu %xmm0, (%r15)
movq 0x110(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %rbp, 0x108(%rsp)
movq $0x0, 0x110(%rsp)
movb $0x0, 0x118(%rsp)
callq 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x4e4f
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
cmpq %rbp, %rdi
leaq 0x68(%rsp), %r15
je 0x4e71
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %ebp
testl %ebp, %ebp
jne 0x4f7c
leaq 0x58(%rsp), %rsi
callq 0x369e
movl %eax, %ebp
leaq 0x78(%rsp), %rsi
movl %eax, 0x20(%rsi)
movl 0x98(%rbx), %eax
movl %eax, 0x28(%rsi)
movq %rbx, %rdi
callq 0x6398
leaq 0x238(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x228(%rsp), %rdi
callq 0x32b6
movl 0x90(%rbx), %r14d
movl 0x98(%rbx), %r13d
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x228(%rsp), %rsi
movq 0x230(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x32b6
movl %r13d, 0x48(%rsp)
movl %r14d, 0x4c(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x4f2a
movq 0x238(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x28(%rsp), %rsi
movl %ebp, 0x28(%rsi)
leaq 0x78(%rbx), %r14
movq %r14, %rdi
leaq 0xd8(%rsp), %r13
leaq 0xb8(%rsp), %r12
callq 0x8b9e
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x4f77
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x68(%rsp), %r15
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x4f93
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x4fb8
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
jne 0x5576
jmp 0x5586
movdqu (%r15), %xmm0
movdqu %xmm0, (%r12)
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 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5022
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
je 0x503f
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0xb8(%rsp), %r12
movq %r12, -0x10(%r12)
xorl %eax, %eax
movq %rax, -0x8(%r12)
movb %al, (%r12)
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 0x512b
leaq 0x8(%rsp), %rdi
leaq 0xa8(%rsp), %rsi
callq 0x20f0
leaq 0x8(%rsp), %rsi
callq 0x35f4
xorl %ebp, %ebp
testb %al, %al
jne 0x52c3
movq %r12, %r13
leaq 0x108(%rsp), %rsi
movl $0x8, (%rsi)
leaq 0x9125(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x68(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x32b6
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r12
movl %eax, -0x18(%r12)
movq %r12, -0x10(%r12)
movq 0x58(%rsp), %rax
cmpq %r15, %rax
je 0x525c
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x5267
leaq 0x108(%rsp), %rsi
movl $0x9, (%rsi)
leaq 0x90b0(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x68(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x58(%rsp), %rdi
callq 0x32b6
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 0x5197
movq %rax, 0x30(%rsp)
movq 0x68(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x51a1
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 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x51e1
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x552f
jmp 0x553c
movdqu (%r14), %xmm0
movdqu %xmm0, (%rbp)
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 0x8ab0
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5244
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x5899
movq 0x18(%rsp), %rsi
jmp 0x5891
movdqu (%r15), %xmm0
movdqu %xmm0, (%r12)
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 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x52a4
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
movq %r13, %r12
je 0x52be
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 0x32b6
leaq 0x268(%rsp), %rdi
leaq 0x128(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0x130(%rsp)
je 0x5402
movq %r12, %r13
leaq 0x14c(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x8ed1(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x118(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x108(%rsp), %rdi
callq 0x32b6
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
leaq 0x40(%rsp), %r12
movl %eax, -0x18(%r12)
movq %r12, -0x10(%r12)
movq 0x108(%rsp), %rax
cmpq %r15, %rax
je 0x5384
movq %rax, 0x30(%rsp)
movq 0x118(%rsp), %rax
movq %rax, 0x40(%rsp)
jmp 0x538f
movdqu (%r15), %xmm0
movdqu %xmm0, (%r12)
movq 0x110(%rsp), %rax
leaq 0x28(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r15, 0x108(%rsp)
movq $0x0, 0x110(%rsp)
movb $0x0, 0x118(%rsp)
callq 0x8ab0
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x53d8
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
cmpq %r15, %rdi
movq %r13, %r12
je 0x53f8
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %ebp
leaq 0x68(%rsp), %r15
testl %ebp, %ebp
jne 0x5525
movq %r12, %r13
leaq 0x58(%rsp), %rsi
callq 0x369e
movl %eax, %ebp
leaq 0x30(%rbx), %rdi
leaq 0x94(%rbx), %r15
movq %r15, %rsi
callq 0x8120
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 0x6398
leaq 0x218(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x208(%rsp), %rdi
callq 0x32b6
movq (%r15), %xmm0
movdqa %xmm0, 0x170(%rsp)
leaq 0x38(%rsp), %r15
movq %r15, -0x10(%r15)
movq 0x208(%rsp), %rsi
movq 0x210(%rsp), %rdx
addq %rsi, %rdx
leaq 0x28(%rsp), %rdi
callq 0x32b6
pshufd $0xe1, 0x170(%rsp), %xmm0 # xmm0 = mem[1,0,2,3]
movq %xmm0, 0x48(%rsp)
movl $0x0, 0x50(%rsp)
movq 0x208(%rsp), %rdi
cmpq %r12, %rdi
je 0x54da
movq 0x218(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x28(%rsp), %rsi
movl %ebp, 0x28(%rsi)
leaq 0x78(%rbx), %r14
movq %r14, %rdi
movq %r13, %r12
callq 0x8b9e
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
incl 0x94(%rbx)
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x5520
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x68(%rsp), %r15
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
je 0x553c
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x5561
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r12, %rdi
leaq 0xd8(%rsp), %r13
je 0x5586
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x55a2
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8a27(%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 0x55e4
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x5609
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r13, %rdi
je 0x5c29
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x5c29
movdqu (%r13), %xmm0
movdqu %xmm0, (%rbp)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
callq 0x8ab0
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x567d
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x5694
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %r12d
leaq 0x38(%rsp), %r13
leaq 0x268(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0xf0(%rsp)
je 0x57a4
leaq 0xa8(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x8b18(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x18(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x32b6
leaq 0xc8(%rbx), %rdi
movl 0x98(%rbx), %eax
movl %eax, 0x78(%rsp)
movq %rbp, 0x80(%rsp)
movq 0x8(%rsp), %rax
cmpq %r13, %rax
je 0x5734
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x573f
movdqu (%r13), %xmm0
movdqu %xmm0, (%rbp)
movq 0x10(%rsp), %rax
leaq 0x78(%rsp), %rsi
movq %rax, 0x10(%rsi)
movq %r13, 0x8(%rsp)
movq $0x0, 0x10(%rsp)
movb $0x0, 0x18(%rsp)
callq 0x8ab0
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5782
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x5799
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %r12d
leaq 0x38(%rsp), %r13
testl %r12d, %r12d
jne 0x5899
leaq 0x28(%rsp), %rsi
callq 0x369e
movl %eax, %ebp
leaq 0x1d8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x1c8(%rsp), %rdi
callq 0x32b6
movl 0x90(%rbx), %r14d
movl 0x98(%rbx), %r13d
leaq 0x88(%rsp), %rax
movq %rax, -0x10(%rax)
movq 0x1c8(%rsp), %rsi
movq 0x1d0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x32b6
movl %r13d, 0x98(%rsp)
movl %r14d, 0x9c(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x584c
movq 0x1d8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x78(%rsp), %rsi
movl %ebp, 0x28(%rsi)
leaq 0x78(%rbx), %r14
movq %r14, %rdi
leaq 0x38(%rsp), %r13
callq 0x8b9e
movq %rax, %rdi
movq %r14, %rsi
callq 0x2050
incq 0x88(%rbx)
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x5899
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x58be
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x5be1
jmp 0x5bf1
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 0x8ab0
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x5924
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
je 0x5baa
movq 0x18(%rsp), %rsi
jmp 0x5ba2
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 0x8ab0
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x598a
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
movq %r13, %r12
je 0x59a4
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %ebp
leaq 0x268(%rsp), %rdi
leaq 0xe8(%rsp), %rsi
callq 0x2230
cmpq $0x0, 0xf0(%rsp)
je 0x5ab4
movq %r12, %r13
leaq 0xa8(%rsp), %rsi
movl $0x6, (%rsi)
leaq 0x880b(%rip), %rdi      # 0xe1f0
callq 0x839a
leaq 0x18(%rsp), %r15
movq %r15, -0x10(%r15)
movq (%rax), %rsi
movq 0x8(%rax), %rdx
addq %rsi, %rdx
leaq 0x8(%rsp), %rdi
callq 0x32b6
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 0x5a47
movq %rax, 0x80(%rsp)
movq 0x18(%rsp), %rax
movq %rax, 0x90(%rsp)
jmp 0x5a52
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 0x8ab0
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5a95
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
movq %r13, %r12
je 0x5aaf
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movl $0x1, %ebp
testl %ebp, %ebp
jne 0x5baa
movq %r12, %r13
leaq 0x28(%rsp), %rsi
callq 0x369e
movl %eax, %ebp
leaq 0x30(%rbx), %rdi
leaq 0x94(%rbx), %r15
movq %r15, %rsi
callq 0x8120
movl %ebp, (%rax)
leaq 0x1b8(%rsp), %r12
movq %r12, -0x10(%r12)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
leaq 0x1a8(%rsp), %rdi
callq 0x32b6
movq (%r15), %xmm0
movdqa %xmm0, 0x170(%rsp)
leaq 0x88(%rsp), %r14
movq %r14, -0x10(%r14)
movq 0x1a8(%rsp), %rsi
movq 0x1b0(%rsp), %rdx
addq %rsi, %rdx
leaq 0x78(%rsp), %rdi
callq 0x32b6
pshufd $0xe1, 0x170(%rsp), %xmm0 # xmm0 = mem[1,0,2,3]
movq %xmm0, 0x98(%rsp)
movl $0x0, 0xa0(%rsp)
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x5b76
movq 0x1b8(%rsp), %rsi
incq %rsi
callq 0x21c0
leaq 0x78(%rsp), %rsi
movl %ebp, 0x28(%rsi)
addq $0x78, %rbx
movq %rbx, %rdi
movq %r13, %r12
callq 0x8106
incl (%r15)
movq 0x78(%rsp), %rdi
cmpq %r14, %rdi
je 0x5baa
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x5bcf
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r12, %rdi
leaq 0x38(%rsp), %r13
je 0x5bf1
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x28(%rsp), %rdi
cmpq %r13, %rdi
je 0x5c08
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x83c1(%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 0x6162
movq 0x88(%rsp), %rsi
jmp 0x5d7b
movq %rax, %rbx
movq 0x1a8(%rsp), %rdi
cmpq %r12, %rdi
je 0x6162
movq 0x1b8(%rsp), %rsi
jmp 0x5d7b
jmp 0x615f
jmp 0x5d48
movq %rax, %rbx
movq 0x78(%rsp), %rdi
leaq 0x88(%rsp), %rax
cmpq %rax, %rdi
je 0x61df
movq 0x88(%rsp), %rsi
jmp 0x5e62
movq %rax, %rbx
movq 0x1c8(%rsp), %rdi
cmpq %r12, %rdi
je 0x61df
movq 0x1d8(%rsp), %rsi
jmp 0x5e62
jmp 0x61dc
jmp 0x61dc
movq %r12, %r13
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r15, %rdi
je 0x5cf8
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x5d76
jmp 0x6162
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x601c
movq 0x38(%rsp), %rsi
jmp 0x5f07
movq %rax, %rbx
movq 0x208(%rsp), %rdi
cmpq %r12, %rdi
je 0x601c
movq 0x218(%rsp), %rsi
jmp 0x5f07
jmp 0x6019
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %r12, %rdi
je 0x5d68
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6162
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x6162
jmp 0x615f
jmp 0x5e2f
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5dac
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r15, %rdi
jne 0x602f
jmp 0x619f
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5ddf
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x5e5d
jmp 0x61df
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x6132
movq 0x38(%rsp), %rsi
jmp 0x5fb2
movq %rax, %rbx
movq 0x228(%rsp), %rdi
cmpq %r12, %rdi
je 0x6132
movq 0x238(%rsp), %rsi
jmp 0x5fb2
jmp 0x612f
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x5e4f
movq 0x90(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x8(%rsp), %rdi
cmpq %r13, %rdi
je 0x61df
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x61df
movq %r12, %r13
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5e8c
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x602f
jmp 0x619f
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5eb9
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r15, %rdi
jne 0x62a5
jmp 0x62ba
jmp 0x615f
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5eee
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
cmpq %r15, %rdi
je 0x601c
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x601c
jmp 0x615c
jmp 0x615f
jmp 0x5f4d
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f3a
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %r14, %rdi
jne 0x6145
jmp 0x626b
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f67
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x58(%rsp), %rdi
cmpq %rbp, %rdi
jne 0x6145
jmp 0x626b
jmp 0x61dc
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r15, %rdi
je 0x5f99
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x108(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6132
movq 0x118(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x6132
movq %r12, %r13
jmp 0x6019
jmp 0x6199
jmp 0x619c
movq %rax, %rbx
movq 0x30(%rsp), %rdi
cmpq %r12, %rdi
je 0x5fe8
movq 0x40(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r14, %rdi
jne 0x62a5
jmp 0x62ba
jmp 0x6019
jmp 0x61dc
jmp 0x612f
jmp 0x61dc
jmp 0x6199
jmp 0x62b7
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x619f
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x619f
movq %rax, %rbx
movq 0x80(%rsp), %rdi
cmpq %rbp, %rdi
je 0x6204
movq 0x90(%rsp), %rsi
jmp 0x61fc
jmp 0x612f
jmp 0x6268
jmp 0x6268
movq %rax, %rbx
movq 0x78(%rsp), %rdi
cmpq %r15, %rdi
je 0x6226
movq 0x88(%rsp), %rsi
jmp 0x6219
movq %rax, %rbx
movq 0x188(%rsp), %rdi
cmpq %r12, %rdi
je 0x6226
movq 0x198(%rsp), %rsi
jmp 0x6219
jmp 0x6223
jmp 0x60d8
movq %rax, %rbx
movq 0x1e8(%rsp), %rdi
cmpq %r14, %rdi
je 0x62ba
movq 0x1f8(%rsp), %rsi
jmp 0x62ad
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r15, %rdi
je 0x62ba
movq 0x38(%rsp), %rsi
jmp 0x62ad
jmp 0x62b7
jmp 0x60fa
movq %rax, %rbx
movq 0x150(%rsp), %rdi
cmpq %r14, %rdi
je 0x62ba
movq 0x160(%rsp), %rsi
jmp 0x62ad
jmp 0x62b7
jmp 0x62b7
jmp 0x6268
jmp 0x6268
movq %rax, %rbx
movq 0x58(%rsp), %rdi
leaq 0x68(%rsp), %rax
cmpq %rax, %rdi
je 0x626b
movq 0x68(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x626b
jmp 0x62b7
movq %r12, %r13
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x6187
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r13, %rdi
jne 0x6211
jmp 0x6226
movq %r12, %r13
movq %rax, %rbx
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x61c4
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
cmpq %r13, %rdi
jne 0x62a5
jmp 0x62ba
jmp 0x6223
movq %rax, %rbx
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x6204
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
cmpq %r15, %rdi
je 0x6226
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x6226
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x6242
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x7d87(%rip), %rsi      # 0xdfd0
leaq 0x268(%rsp), %rdi
callq 0x2270
leaq 0x2e0(%rsp), %rdi
callq 0x20b0
jmp 0x6362
movq %rax, %rbx
movq 0x128(%rsp), %rdi
leaq 0x138(%rsp), %rax
cmpq %rax, %rdi
je 0x6290
movq 0x138(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xa8(%rsp), %rdi
leaq 0xb8(%rsp), %rax
cmpq %rax, %rdi
je 0x62ba
movq 0xb8(%rsp), %rsi
incq %rsi
callq 0x21c0
jmp 0x62ba
movq %rax, %rbx
movq 0x8(%rsp), %rdi
leaq 0x18(%rsp), %rax
cmpq %rax, %rdi
je 0x62d6
movq 0x18(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0x7cf3(%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 0x6318
movq 0x88(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xe8(%rsp), %rdi
leaq 0xf8(%rsp), %rax
cmpq %rax, %rdi
je 0x633d
movq 0xf8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq 0xc8(%rsp), %rdi
leaq 0xd8(%rsp), %rax
cmpq %rax, %rdi
je 0x6362
movq 0xd8(%rsp), %rsi
incq %rsi
callq 0x21c0
movq %rbx, %rdi
callq 0x22e0
movq %rax, %rbx
jmp 0x62f7
movq %rax, %rbx
movq 0x248(%rsp), %rdi
cmpq %r15, %rdi
je 0x6318
movq 0x258(%rsp), %rsi
jmp 0x6310
movq %rax, %rbx
jmp 0x6318
movq %rax, %rbx
jmp 0x633d
movq %rax, %rbx
jmp 0x6362