// File: /workspace/github_cpp_makefile_star2_O1/bothaynahazem[P]AsuMathLabG13/main.cpp
// Function: main
int main(int argc,char* argv[])
{
string matrix_char;
ifstream infile(argv[1]);
string contents[100];
int numberoflines=0;
int i=0;
while(getline(infile,contents[i]))// getting file contents
    {

        int pos =contents[i].find("[");
        int nbracketso =0;
        int nbracketsc =0;
        for(int j=0;j<contents[i].length();j++)
        {
            if(contents[i][j]=='[')
                nbracketso++;
            else if(contents[i][j]==']')
                nbracketsc++;
        }
        if(pos!=string::npos && nbracketso != nbracketsc)
        {
             getline(infile,contents[i+1]);
             contents[i] = contents[i] + ";" + contents[i+1];
        }


        if(contents[i]=="\n"||contents[i] == "\r" || contents[i] == "\t"||contents[i].find_first_not_of(' ') == std::string::npos)
        {
            i--;
            numberoflines--;
        }

        numberoflines++;

        i++;
    }


	int pos1;
for (i=0; i<numberoflines;i++)
{
    try
    {
int openbrackets =0, closedbrackets=0;
for (int h=0; h<contents[i].length();h++)
        {
        if(contents[i][h]=='(')
            openbrackets++;
        else if(contents[i][h]==')')
            closedbrackets++;
        }
    if (openbrackets!=closedbrackets)
        {
           throw("Syntax Error");
        }
	if (contents[i].find('[', 0) == string::npos && contents[i].find("ones", 0) == string::npos && contents[i].find("zeros", 0) == string::npos && contents[i].find("eye", 0) == string::npos && contents[i].find("rand", 0) == string::npos) //Only math expression
	{
	    string m;
	    string e;
		matrix_char = contents[i].substr(0, 1);
		if (contents[i].find('=',0)!=string::npos)
		{if (contents[i][contents[i].length()-1]!=';')
			m = contents[i].substr(contents[i].find('=', 0)+1, contents[i].length() - contents[i].find('=', 0)-1);
		else
			m = contents[i].substr(contents[i].find('=', 0) + 1, contents[i].length() - contents[i].find('=', 0)-2);}
        else{
            m = contents[i].substr(0,1);
        }
        e = evaluate(m);
        Matrix X(e);
        variables_names[in_cntr] = matrix_char;
        input_matrices[in_cntr] = X;
        in_cntr++;
	}
	else if (contents[i].find('[', 0) != string::npos)
	{
	while (contents[i].find_first_of("+-*/^", contents[i].find('[', 0) + 1)!= string::npos) //find and replace all math expressions if square bracket is found
	{
		string d;
		int begin, end;
		pos1 = contents[i].find_first_of("+-*/^", contents[i].find('[', 0) + 1);
		begin = contents[i].find_last_of(" [];", pos1);
		end = contents[i].find_first_of(" [];", pos1);
		d = contents[i].substr(begin+1, end-begin-1);
		string f = evaluate(d);
		if(f.find("-",0)!=string::npos)
            f.replace(f.find("-",0),1,"$");
		contents[i].replace(begin+1, end - begin-1, f);
	}
	while(contents[i].find('$',0)!=string::npos)
        contents[i].replace(contents[i].find('$',0),1,"-");
	matrix_char = contents[i].substr(0,1);
	for (int k=1;k<contents[i].length();k++)
    {
        if(isLetter(contents[i].substr(k,1)))
        {
            for (int j=0;j<100;j++)
            {
                if (contents[i].substr(k,1)==variables_names[j])
                {
                    int opened_bracket = contents[i].find('[',k);
                    int closed_bracket = contents[i].rfind(']',k);
                    string space = contents[i].substr(k+1,opened_bracket-k-1);
                    string space2 = contents[i].substr(closed_bracket+1,k-closed_bracket-1);
                    if(space.find_first_not_of(' ') == std::string::npos || space2.find_first_not_of(' ') == std::string::npos)
                    contents[i].replace(k,1,input_matrices[j].getAltString());
                    else
                     contents[i].replace(k,1,input_matrices[j].getAltStringNoB());
                    break;
                }

            }
        }
    }
	string x;
    x = contents[i].substr(contents[i].find('[',0),contents[i].rfind(']')-contents[i].find('[',0)+1);
    x = concatenate(x);
    Matrix X(x);
    input_matrices[in_cntr] = X;
    variables_names[in_cntr] = matrix_char;
    in_cntr++;
	}

	else if (contents[i].find("rand", 0) != string::npos)
	{
	    matrix_char = contents[i].substr(0,1);
		int nR = atof((contents[i].substr(contents[i].find('(', 0) + 1, 1).c_str()));
		int nC = atof((contents[i].substr(contents[i].find(',', 0) + 1, contents[i].find(')',0)-contents[i].find(',', 0) + 1)).c_str());
		Matrix X(nR, nC, MI_RAND,0.0);
		variables_names[in_cntr] = matrix_char;
        input_matrices[in_cntr] = X;
        in_cntr++;
	}
	else if (contents[i].find("eye", 0) != string::npos)
	{
	    matrix_char = contents[i].substr(0,1);
		int nR = atof((contents[i].substr(contents[i].find('(', 0) + 1, 1).c_str()));
		int nC = atof((contents[i].substr(contents[i].find(',', 0) + 1, contents[i].find(')',0)-contents[i].find(',', 0) + 1)).c_str());
		Matrix X(nR, nC, MI_EYE,0.0);
		variables_names[in_cntr] = matrix_char;
        input_matrices[in_cntr] = X;
        in_cntr++;
	}
	else if (contents[i].find("zeros", 0) != string::npos)
	{
	    matrix_char = contents[i].substr(0,1);
		int nR = atof((contents[i].substr(contents[i].find('(', 0) + 1, 1).c_str()));
		int nC = atof((contents[i].substr(contents[i].find(',', 0) + 1, contents[i].find(')',0)-contents[i].find(',', 0) + 1)).c_str());
		Matrix X(nR, nC, MI_ZEROS,0.0);
		variables_names[in_cntr] = matrix_char;
        input_matrices[in_cntr] = X;
        in_cntr++;
	}
	else if (contents[i].find("ones", 0) != string::npos)
	{
	    matrix_char = contents[i].substr(0,1);
		int nR = atof((contents[i].substr(contents[i].find('(', 0) + 1, 1).c_str()));
		int nC = atof((contents[i].substr(contents[i].find(',', 0) + 1, contents[i].find(')',0)-contents[i].find(',', 0) + 1)).c_str());
		Matrix X(nR, nC, MI_ONES,0.0);

        variables_names[in_cntr] = matrix_char;
        input_matrices[in_cntr] = X;
        in_cntr++;
	}

	//Output all the results
if(contents[i][contents[i].length()-2]!=';') //might be length()-1 due to difference in compilers ('\n') is counted in some compilers
cout << variables_names[in_cntr-1] << " = " << endl << input_matrices[in_cntr-1] << endl;
    }
    catch(char const* s)
    {
        cout<< "Error: " << s << endl;
    }
	}


return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x1158, %rsp           # imm = 0x1158
leaq -0xc0(%rbp), %r15
movq %r15, -0x10(%r15)
movq $0x0, -0x8(%r15)
movb $0x0, (%r15)
movq 0x8(%rsi), %rsi
leaq -0x4f8(%rbp), %rbx
movq %rbx, %rdi
movl $0x8, %edx
callq 0x3550
movl $0x10, %eax
leaq (%rax,%rbp), %rcx
addq $-0x1180, %rcx          # imm = 0xEE80
movq %rcx, -0x10(%rcx)
movq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rax
cmpq $0xc90, %rax            # imm = 0xC90
jne 0x77c7
xorl %r15d, %r15d
xorl %r13d, %r13d
movq -0x4f8(%rbp), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32d0
movslq %r15d, %r14
shlq $0x5, %r14
leaq (%r14,%rbp), %r12
addq $-0x1180, %r12          # imm = 0xEE80
movsbl %al, %edx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3560
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x7a03
xorl %ebx, %ebx
movl $0x1, %ecx
movq %r12, %rdi
leaq 0x9868(%rip), %rsi      # 0x110b6
xorl %edx, %edx
callq 0x34e0
movq 0x8(%r12), %rdx
movl $0x0, %ecx
testq %rdx, %rdx
je 0x7896
movq (%r12), %rsi
xorl %edi, %edi
xorl %ecx, %ecx
xorl %ebx, %ebx
movb (%rsi,%rdi), %r8b
xorl %r9d, %r9d
cmpb $0x5b, %r8b
sete %r9b
xorl %r10d, %r10d
cmpb $0x5d, %r8b
sete %r10b
addl %r10d, %ebx
addl %r9d, %ecx
incq %rdi
cmpq %rdi, %rdx
jne 0x786e
cmpl $-0x1, %eax
je 0x799d
cmpl %ebx, %ecx
je 0x799d
movq -0x4f8(%rbp), %rax
movq -0x18(%rax), %rdi
leaq -0x4f8(%rbp), %rbx
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32d0
leaq -0x1180(%rbp), %rcx
addq %rcx, %r14
addq $0x20, %r14
movsbl %al, %edx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x3560
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq (%r12), %rsi
movq 0x8(%r12), %rdx
addq %rsi, %rdx
leaq -0x48(%rbp), %rbx
movq %rbx, %rdi
callq 0x929a
movq %rbx, %rdi
leaq 0x97d8(%rip), %rsi      # 0x110e4
callq 0x3590
movq (%r14), %rsi
movq 0x8(%r14), %rdx
movq %rbx, %rdi
callq 0x3100
leaq -0x70(%rbp), %rbx
movq %rbx, -0x80(%rbp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x7944
movq %rdx, -0x80(%rbp)
movq (%rcx), %rdx
movq %rdx, -0x70(%rbp)
jmp 0x794c
movupd (%rcx), %xmm0
movupd %xmm0, (%rbx)
movq 0x8(%rax), %rdx
movq %rdx, -0x78(%rbp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r12, %rdi
leaq -0x80(%rbp), %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
cmpq %rbx, %rdi
je 0x7984
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x799d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r12, %rdi
leaq 0x9858(%rip), %rsi      # 0x111ff
callq 0x30e0
testl %eax, %eax
je 0x79eb
movq %r12, %rdi
leaq 0x96fe(%rip), %rsi      # 0x110b8
callq 0x30e0
testl %eax, %eax
je 0x79eb
movq %r12, %rdi
leaq 0x9854(%rip), %rsi      # 0x11221
callq 0x30e0
testl %eax, %eax
je 0x79eb
movq %r12, %rdi
movl $0x20, %esi
xorl %edx, %edx
callq 0x32a0
cmpq $-0x1, %rax
jne 0x79f1
decl %r15d
decl %r13d
incl %r13d
incl %r15d
leaq -0x4f8(%rbp), %rbx
jmp 0x77f3
testl %r13d, %r13d
jle 0x8e78
movl %r13d, %eax
movq %rax, -0x178(%rbp)
leaq -0x80(%rbp), %r14
leaq -0x48(%rbp), %r12
xorl %eax, %eax
movq %rax, -0x180(%rbp)
shlq $0x5, %rax
leaq (%rax,%rbp), %r15
addq $-0x1180, %r15          # imm = 0xEE80
movq 0x8(%r15), %rax
movl $0x0, %ecx
movl $0x0, %edx
testq %rax, %rax
je 0x7a7a
movq (%r15), %rsi
xorl %edi, %edi
xorl %edx, %edx
xorl %ecx, %ecx
movb (%rsi,%rdi), %r8b
xorl %r9d, %r9d
cmpb $0x28, %r8b
sete %r9b
xorl %r10d, %r10d
cmpb $0x29, %r8b
sete %r10b
addl %r10d, %ecx
addl %r9d, %edx
incq %rdi
cmpq %rdi, %rax
jne 0x7a52
cmpl %ecx, %edx
jne 0x8b88
movq %r15, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x33b0
cmpq $-0x1, %rax
jne 0x7b0b
movl $0x4, %ecx
movq %r15, %rdi
leaq 0x9621(%rip), %rsi      # 0x110c7
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
jne 0x7b0b
movl $0x5, %ecx
movq %r15, %rdi
leaq 0x960a(%rip), %rsi      # 0x110cc
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
jne 0x7b0b
movl $0x3, %ecx
movq %r15, %rdi
leaq 0x95f4(%rip), %rsi      # 0x110d2
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
jne 0x7b0b
movl $0x4, %ecx
movq %r15, %rdi
leaq 0x95dc(%rip), %rsi      # 0x110d6
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x88eb
movq %r15, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x33b0
cmpq $-0x1, %rax
je 0x81b9
movq %r15, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rdx
movl $0x5, %ecx
movq %r15, %rdi
leaq 0x9595(%rip), %rsi      # 0x110db
callq 0x3420
cmpq $-0x1, %rax
je 0x7d44
leaq -0x70(%rbp), %rax
movq %rax, -0x80(%rbp)
movq $0x0, -0x78(%rbp)
movb $0x0, -0x70(%rbp)
movq %r15, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rdx
movl $0x5, %ecx
movq %r15, %rdi
leaq 0x9550(%rip), %rsi      # 0x110db
callq 0x3420
movslq %eax, %rbx
movl $0x4, %ecx
movq %r15, %rdi
leaq 0x953f(%rip), %r13      # 0x110e1
movq %r13, %rsi
movq %rbx, %rdx
callq 0x35c0
movq %rax, %r12
movl $0x4, %ecx
movq %r15, %rdi
movq %r13, %rsi
movq %rbx, %rdx
callq 0x3420
movq %r12, %rbx
shlq $0x20, %rbx
movabsq $0x100000000, %rcx      # imm = 0x100000000
addq %rcx, %rbx
sarq $0x20, %rbx
notl %r12d
addl %r12d, %eax
movslq %eax, %r12
leaq -0x48(%rbp), %r13
movq %r13, %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r12, %rcx
callq 0x3320
movq %r14, %rdi
movq %r13, %rsi
callq 0x3360
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7c1d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x120(%rbp), %rax
movq %rax, -0x130(%rbp)
movq -0x80(%rbp), %rsi
movq -0x78(%rbp), %rdx
addq %rsi, %rdx
leaq -0x130(%rbp), %r13
movq %r13, %rdi
callq 0x929a
leaq -0x48(%rbp), %rdi
movq %r13, %rsi
callq 0x4262
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x7c73
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0x1, %ecx
leaq -0x48(%rbp), %rdi
leaq 0x9463(%rip), %rsi      # 0x110e6
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x7cc7
movl $0x1, %ecx
leaq -0x48(%rbp), %r13
movq %r13, %rdi
leaq 0x9443(%rip), %rsi      # 0x110e6
xorl %edx, %edx
callq 0x34e0
movl $0x1, %edx
movl $0x1, %r8d
movq %r13, %rdi
movq %rax, %rsi
leaq 0x9426(%rip), %rcx      # 0x110e8
callq 0x3330
movq -0x48(%rbp), %rcx
movq -0x40(%rbp), %r8
movq %r15, %rdi
movq %rbx, %rsi
movq %r12, %rdx
callq 0x3330
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7cf6
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x7b24
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x7b24
movq %r15, %rdi
movl $0x24, %esi
xorl %edx, %edx
callq 0x33b0
movl $0x1, %edx
movl $0x1, %r8d
movq %r15, %rdi
movq %rax, %rsi
leaq 0x93a7(%rip), %rcx      # 0x110e6
callq 0x3330
movq %r15, %rdi
movl $0x24, %esi
xorl %edx, %edx
callq 0x33b0
cmpq $-0x1, %rax
jne 0x7d18
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3320
leaq -0xd0(%rbp), %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
leaq -0x48(%rbp), %r12
je 0x7d97
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
cmpq $0x2, 0x8(%r15)
jb 0x7fe6
movl $0x1, %ebx
movl $0x1, %ecx
leaq -0x1a0(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x3320
movq -0x1a0(%rbp), %rdi
movb (%rdi), %r14b
leaq -0x190(%rbp), %rax
cmpq %rax, %rdi
je 0x7de3
movq -0x190(%rbp), %rsi
incq %rsi
callq 0x3300
addb $-0x41, %r14b
cmpb $0x19, %r14b
ja 0x7fd5
movl $0x8, %r14d
xorl %r13d, %r13d
movl $0x1, %ecx
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x3320
movq 0xe50b(%rip), %rax      # 0x16320
movq -0x78(%rbp), %rdx
cmpq (%rax,%r14), %rdx
jne 0x7e3a
testq %rdx, %rdx
je 0x7e3f
movq -0x8(%rax,%r14), %rsi
movq -0x80(%rbp), %rdi
callq 0x3310
testl %eax, %eax
sete %r12b
jmp 0x7e42
xorl %r12d, %r12d
jmp 0x7e42
movb $0x1, %r12b
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x7e5b
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
testb %r12b, %r12b
jne 0x7e7a
addq $-0x38, %r13
addq $0x20, %r14
cmpq $0xc88, %r14            # imm = 0xC88
leaq -0x48(%rbp), %r12
jne 0x7dfa
jmp 0x7fd5
movq %r15, %rdi
movl $0x5b, %esi
movq %rbx, %rdx
callq 0x33b0
movq %rax, %r14
movq %r15, %rdi
movl $0x5d, %esi
movq %rbx, %rdx
callq 0x35b0
movq %rax, %r12
leaq 0x1(%rbx), %rdx
movl %ebx, %eax
notl %eax
addl %eax, %r14d
movslq %r14d, %rcx
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq %r12, %rdx
shlq $0x20, %rdx
movabsq $0x100000000, %rax      # imm = 0x100000000
addq %rax, %rdx
sarq $0x20, %rdx
notl %r12d
addl %ebx, %r12d
movslq %r12d, %rcx
leaq -0x48(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
callq 0x3320
movq %r14, %rdi
movl $0x20, %esi
xorl %edx, %edx
callq 0x32a0
cmpq $-0x1, %rax
je 0x7f4d
movq %r12, %rdi
movl $0x20, %esi
xorl %edx, %edx
callq 0x32a0
cmpq $-0x1, %rax
je 0x7f4d
movq 0xe3fa(%rip), %rsi      # 0x16318
subq %r13, %rsi
leaq -0xb0(%rbp), %rdi
callq 0xb700
movq -0xb0(%rbp), %rcx
movq -0xa8(%rbp), %r8
movl $0x1, %edx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x3330
jmp 0x7f81
movq 0xe3c4(%rip), %rsi      # 0x16318
subq %r13, %rsi
leaq -0xb0(%rbp), %rdi
callq 0xb5ea
movq -0xb0(%rbp), %rcx
movq -0xa8(%rbp), %r8
movl $0x1, %edx
movq %r15, %rdi
movq %rbx, %rsi
callq 0x3330
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x7fa3
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x7fbc
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x7fd5
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
incq %rbx
cmpq %rbx, 0x8(%r15)
leaq -0x80(%rbp), %r14
ja 0x7da7
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
movq $0x0, -0x40(%rbp)
movb $0x0, -0x38(%rbp)
movq %r15, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x33b0
movq %rax, %rbx
movq %r15, %rdi
movl $0x5d, %esi
movq $-0x1, %rdx
callq 0x35b0
movq %rax, %r12
movq %r15, %rdi
movl $0x5b, %esi
xorl %edx, %edx
callq 0x33b0
subq %rax, %r12
incq %r12
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r12, %rcx
callq 0x3320
leaq -0x48(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x8071
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x100(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x110(%rbp), %rbx
movq %rbx, %rdi
callq 0x929a
movq %r14, %rdi
movq %rbx, %rsi
callq 0x397a
movq %r12, %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x80c8
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x80ea
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0xe0(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0xf0(%rbp), %rbx
movq %rbx, %rdi
callq 0x929a
movq %r14, %rdi
movq %rbx, %rsi
callq 0xa768
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x813f
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x3300
movslq 0xe1e2(%rip), %rax      # 0x16328
imulq $0x38, %rax, %rsi
addq 0xe1c7(%rip), %rsi      # 0x16318
leaq -0x2b8(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rdx
callq 0xb80c
movq %rbx, %rdi
callq 0xa0be
movslq 0xe1b6(%rip), %rdi      # 0x16328
shlq $0x5, %rdi
addq 0xe1a3(%rip), %rdi      # 0x16320
leaq -0xd0(%rbp), %rsi
callq 0x31c0
incl 0xe199(%rip)            # 0x16328
movq %r14, %rdi
callq 0xa0be
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x880b
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x880b
movl $0x4, %ecx
movq %r15, %rdi
leaq 0x8f0e(%rip), %rsi      # 0x110d6
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x834a
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3320
leaq -0xd0(%rbp), %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x8213
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r15, %rdi
movl $0x28, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rdx
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
movsd %xmm0, -0x90(%rbp)
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x8262
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
callq 0x3300
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rbx
movq %r15, %rdi
movl $0x29, %esi
xorl %edx, %edx
callq 0x33b0
movq %rax, %r14
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
subq %rax, %r14
incq %r14
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x82e2
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
movsd %xmm0, -0x88(%rbp)
callq 0x3300
movsd -0x88(%rbp), %xmm0
cvttsd2si -0x90(%rbp), %esi
cvttsd2si %xmm0, %edx
xorpd %xmm0, %xmm0
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movl $0x3, %ecx
callq 0xa1a2
movslq 0xe01e(%rip), %rdi      # 0x16328
shlq $0x5, %rdi
addq 0xe00b(%rip), %rdi      # 0x16320
leaq -0xd0(%rbp), %rsi
leaq -0x280(%rbp), %rbx
callq 0x31c0
movslq 0xdff9(%rip), %rax      # 0x16328
imulq $0x38, %rax, %rsi
addq 0xdfde(%rip), %rsi      # 0x16318
movq %rbx, %rdi
movq %r14, %rdx
callq 0xb80c
jmp 0x87f5
movl $0x3, %ecx
movq %r15, %rdi
leaq 0x8d79(%rip), %rsi      # 0x110d2
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x84db
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3320
leaq -0xd0(%rbp), %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x83a4
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r15, %rdi
movl $0x28, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rdx
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
movsd %xmm0, -0x90(%rbp)
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x83f3
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
callq 0x3300
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rbx
movq %r15, %rdi
movl $0x29, %esi
xorl %edx, %edx
callq 0x33b0
movq %rax, %r14
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
subq %rax, %r14
incq %r14
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x8473
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
movsd %xmm0, -0x88(%rbp)
callq 0x3300
movsd -0x88(%rbp), %xmm0
cvttsd2si -0x90(%rbp), %esi
cvttsd2si %xmm0, %edx
xorpd %xmm0, %xmm0
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movl $0x2, %ecx
callq 0xa1a2
movslq 0xde8d(%rip), %rdi      # 0x16328
shlq $0x5, %rdi
addq 0xde7a(%rip), %rdi      # 0x16320
leaq -0xd0(%rbp), %rsi
leaq -0x248(%rbp), %rbx
callq 0x31c0
movslq 0xde68(%rip), %rax      # 0x16328
imulq $0x38, %rax, %rsi
addq 0xde4d(%rip), %rsi      # 0x16318
movq %rbx, %rdi
movq %r14, %rdx
callq 0xb80c
jmp 0x87f5
movl $0x5, %ecx
movq %r15, %rdi
leaq 0x8be2(%rip), %rsi      # 0x110cc
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x8669
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3320
leaq -0xd0(%rbp), %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x8535
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r15, %rdi
movl $0x28, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rdx
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
movsd %xmm0, -0x90(%rbp)
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x8584
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
callq 0x3300
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rbx
movq %r15, %rdi
movl $0x29, %esi
xorl %edx, %edx
callq 0x33b0
movq %rax, %r14
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
subq %rax, %r14
incq %r14
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x8604
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
movsd %xmm0, -0x88(%rbp)
callq 0x3300
movsd -0x88(%rbp), %xmm0
cvttsd2si -0x90(%rbp), %esi
cvttsd2si %xmm0, %edx
xorpd %xmm0, %xmm0
leaq -0x80(%rbp), %r14
movq %r14, %rdi
xorl %ecx, %ecx
callq 0xa1a2
movslq 0xdcff(%rip), %rdi      # 0x16328
shlq $0x5, %rdi
addq 0xdcec(%rip), %rdi      # 0x16320
leaq -0xd0(%rbp), %rsi
leaq -0x210(%rbp), %rbx
callq 0x31c0
movslq 0xdcda(%rip), %rax      # 0x16328
imulq $0x38, %rax, %rsi
addq 0xdcbf(%rip), %rsi      # 0x16318
movq %rbx, %rdi
movq %r14, %rdx
callq 0xb80c
jmp 0x87f5
movl $0x4, %ecx
movq %r15, %rdi
leaq 0x8a4f(%rip), %rsi      # 0x110c7
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x880b
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3320
leaq -0xd0(%rbp), %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x86c3
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r15, %rdi
movl $0x28, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rdx
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
movsd %xmm0, -0x90(%rbp)
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x8712
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
callq 0x3300
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rbx
movq %r15, %rdi
movl $0x29, %esi
xorl %edx, %edx
callq 0x33b0
movq %rax, %r14
movq %r15, %rdi
movl $0x2c, %esi
xorl %edx, %edx
callq 0x33b0
subq %rax, %r14
incq %r14
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3320
movq -0x80(%rbp), %rbx
movq %rbx, %rdi
callq 0x3370
leaq -0x70(%rbp), %rax
cmpq %rax, %rbx
je 0x8792
movq -0x70(%rbp), %rsi
incq %rsi
movq %rbx, %rdi
movsd %xmm0, -0x88(%rbp)
callq 0x3300
movsd -0x88(%rbp), %xmm0
cvttsd2si -0x90(%rbp), %esi
cvttsd2si %xmm0, %edx
xorpd %xmm0, %xmm0
leaq -0x80(%rbp), %r14
movq %r14, %rdi
movl $0x1, %ecx
callq 0xa1a2
movslq 0xdb6e(%rip), %rdi      # 0x16328
shlq $0x5, %rdi
addq 0xdb5b(%rip), %rdi      # 0x16320
leaq -0xd0(%rbp), %rsi
leaq -0x1d8(%rbp), %rbx
callq 0x31c0
movslq 0xdb49(%rip), %rax      # 0x16328
imulq $0x38, %rax, %rsi
addq 0xdb2e(%rip), %rsi      # 0x16318
movq %rbx, %rdi
movq %r14, %rdx
callq 0xb80c
movq %rbx, %rdi
callq 0xa0be
incl 0xdb25(%rip)            # 0x16328
movq %r14, %rdi
callq 0xa0be
movq (%r15), %rax
movq 0x8(%r15), %rcx
cmpb $0x3b, -0x2(%rax,%rcx)
je 0x88cf
movq 0xdafc(%rip), %rax      # 0x16320
movslq 0xdafd(%rip), %rcx      # 0x16328
shlq $0x5, %rcx
movq -0x20(%rax,%rcx), %rsi
movq -0x18(%rax,%rcx), %rdx
movq 0xd798(%rip), %rdi      # 0x15fd8
callq 0x3340
movq %rax, %rbx
movl $0x3, %edx
movq %rax, %rdi
leaq 0x8893(%rip), %rsi      # 0x110ea
callq 0x3340
movq (%rbx), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3210
movq 0xda8e(%rip), %rcx      # 0x16318
movslq 0xda97(%rip), %rdx      # 0x16328
imulq $0x38, %rdx, %rdx
leaq (%rcx,%rdx), %rsi
addq $-0x38, %rsi
movq %rax, %rdi
callq 0xe6d0
movq %rax, %rbx
movq (%rax), %rax
movq -0x18(%rax), %rdi
addq %rbx, %rdi
movl $0xa, %esi
callq 0x32d0
movsbl %al, %esi
movq %rbx, %rdi
callq 0x3040
movq %rax, %rdi
callq 0x3210
movq -0x180(%rbp), %rax
incq %rax
cmpq -0x178(%rbp), %rax
jne 0x7a20
jmp 0x8e78
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
xorl %ecx, %ecx
movq %rcx, -0x40(%rbp)
movb %cl, -0x38(%rbp)
leaq -0xa0(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq %rcx, -0xa8(%rbp)
movb %cl, -0xa0(%rbp)
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3320
leaq -0xd0(%rbp), %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x8951
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r15, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x33b0
cmpq $-0x1, %rax
je 0x89b4
movq (%r15), %rax
movq 0x8(%r15), %rcx
cmpb $0x3b, -0x1(%rax,%rcx)
jne 0x89c8
movq %r15, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rbx
movq 0x8(%r15), %r12
movq %r15, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x33b0
subq %rax, %r12
addq $-0x2, %r12
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r12, %rcx
callq 0x3320
jmp 0x8a05
movl $0x1, %ecx
movq %r14, %rdi
movq %r15, %rsi
xorl %edx, %edx
callq 0x3320
jmp 0x8a09
movq %r15, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x33b0
leaq 0x1(%rax), %rbx
movq 0x8(%r15), %r12
movq %r15, %rdi
movl $0x3d, %esi
xorl %edx, %edx
callq 0x33b0
notq %rax
addq %rax, %r12
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
movq %r12, %rcx
callq 0x3320
leaq -0x48(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x8a2d
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x160(%rbp), %rax
movq %rax, -0x170(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x170(%rbp), %rbx
movq %rbx, %rdi
callq 0x929a
movq %r14, %rdi
movq %rbx, %rsi
callq 0x4262
leaq -0xb0(%rbp), %rdi
movq %r14, %rsi
callq 0x3360
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x8a88
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x8aaa
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x140(%rbp), %rax
movq %rax, -0x150(%rbp)
movq -0xb0(%rbp), %rsi
movq -0xa8(%rbp), %rdx
addq %rsi, %rdx
leaq -0x150(%rbp), %rbx
movq %rbx, %rdi
callq 0x929a
movq %r14, %rdi
movq %rbx, %rsi
callq 0xa768
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x8b05
movq -0x140(%rbp), %rsi
incq %rsi
callq 0x3300
movslq 0xd81c(%rip), %rdi      # 0x16328
shlq $0x5, %rdi
addq 0xd809(%rip), %rdi      # 0x16320
leaq -0xd0(%rbp), %rsi
leaq -0x2f0(%rbp), %rbx
callq 0x31c0
movslq 0xd7f7(%rip), %rax      # 0x16328
imulq $0x38, %rax, %rsi
addq 0xd7dc(%rip), %rsi      # 0x16318
movq %rbx, %rdi
movq %r14, %rdx
callq 0xb80c
movq %rbx, %rdi
callq 0xa0be
incl 0xd7d3(%rip)            # 0x16328
movq %r14, %rdi
callq 0xa0be
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x8197
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x8197
movl $0x8, %edi
callq 0x3170
leaq 0x8521(%rip), %rcx      # 0x110ba
movq %rcx, (%rax)
movq %rax, %rdi
movq 0xd41a(%rip), %rsi      # 0x15fc0
xorl %edx, %edx
callq 0x34d0
jmp 0x8eeb
jmp 0x8c08
jmp 0x8c08
jmp 0x8c08
movq %rdx, %r15
movq %rax, %rbx
movq -0x150(%rbp), %rdi
leaq -0x140(%rbp), %rax
cmpq %rax, %rdi
je 0x8c32
movq -0x140(%rbp), %rsi
jmp 0x8bfc
jmp 0x8c08
movq %rdx, %r15
movq %rax, %rbx
movq -0x170(%rbp), %rdi
leaq -0x160(%rbp), %rax
cmpq %rax, %rdi
je 0x8c32
movq -0x160(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x8c32
jmp 0x8c08
movq %rdx, %r15
movq %rax, %rbx
jmp 0x8c32
jmp 0x8d96
jmp 0x8e20
jmp 0x8d96
jmp 0x8d96
movq %rdx, %r15
movq %rax, %rbx
movq %r14, %rdi
callq 0xa0be
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x8d19
movq -0xa0(%rbp), %rsi
jmp 0x8cee
jmp 0x8c97
jmp 0x8d96
jmp 0x8e20
jmp 0x8d96
jmp 0x8d96
jmp 0x8c97
jmp 0x8d96
jmp 0x8e20
jmp 0x8d96
jmp 0x8d96
jmp 0x8c97
jmp 0x8d96
jmp 0x8e20
jmp 0x8d96
jmp 0x8d96
movq %rdx, %r15
movq %rax, %rbx
movq %r14, %rdi
callq 0xa0be
jmp 0x8e2a
movq %rdx, %r15
movq %rax, %rbx
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x8d19
movq -0xe0(%rbp), %rsi
jmp 0x8cee
jmp 0x8cfa
movq %rdx, %r15
movq %rax, %rbx
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x8d19
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x8d19
jmp 0x8cfa
movq %rdx, %r15
movq %rax, %rbx
jmp 0x8d19
jmp 0x8dd6
jmp 0x8d3b
jmp 0x8d65
movq %rdx, %r15
movq %rax, %rbx
movq %r14, %rdi
callq 0xa0be
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x8d32
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x80(%rbp), %r14
jmp 0x8ddc
movq %rdx, %r15
movq %rax, %rbx
movq -0xb0(%rbp), %rdi
leaq -0xa0(%rbp), %rax
cmpq %rax, %rdi
je 0x8d6b
movq -0xa0(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x8d6b
movq %rdx, %r15
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x8d84
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x80(%rbp), %r14
jmp 0x8e01
movq %rdx, %r15
movq %rax, %rbx
jmp 0x8e05
jmp 0x8dd6
jmp 0x8d96
movq %rdx, %r15
movq %rax, %rbx
jmp 0x8e2a
movq %rdx, %r15
movq %rax, %rbx
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x8e01
movq -0x120(%rbp), %rsi
jmp 0x8df9
movq %rdx, %r15
movq %rax, %rbx
movq %r13, %r12
jmp 0x8e05
movq %rdx, %r15
movq %rax, %rbx
jmp 0x8e01
movq %rdx, %r15
movq %rax, %rbx
leaq -0x48(%rbp), %r12
jmp 0x8e2a
movq %rdx, %r15
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x8e01
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x48(%rbp), %r12
movq -0x80(%rbp), %rdi
leaq -0x70(%rbp), %rax
cmpq %rax, %rdi
je 0x8e2a
movq -0x70(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x8e2a
movq %rdx, %r15
movq %rax, %rbx
leaq -0x80(%rbp), %r14
cmpl $0x1, %r15d
jne 0x8ee6
movq %rbx, %rdi
callq 0x3140
movq %rax, %rbx
movl $0x7, %edx
movq 0xd18d(%rip), %rdi      # 0x15fd8
leaq 0x829c(%rip), %rsi      # 0x110ee
callq 0x3340
movq 0xd17a(%rip), %rdi      # 0x15fd8
movq %rbx, %rsi
callq 0x32e0
movq %rax, %rdi
callq 0x3160
callq 0x3490
jmp 0x88cf
movq $-0xc80, %rbx           # imm = 0xF380
leaq -0x510(%rbp), %r14
leaq -0xc0(%rbp), %r15
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x8ea1
movq (%r14), %rsi
incq %rsi
callq 0x3300
addq $-0x20, %r14
addq $0x20, %rbx
jne 0x8e8d
leaq -0x4f8(%rbp), %rdi
callq 0x30b0
movq -0xd0(%rbp), %rdi
cmpq %r15, %rdi
je 0x8ed2
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x3300
xorl %eax, %eax
addq $0x1158, %rsp           # imm = 0x1158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rbx, %r12
jmp 0x8f21
movq %rax, %r12
callq 0x3490
jmp 0x8f21
movq %rax, %r12
jmp 0x8f60
jmp 0x8efc
movq %rax, %r12
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x8f21
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x8f21
jmp 0x8f1e
jmp 0x8f1e
movq %rax, %r12
leaq -0xc0(%rbp), %r15
movq $-0xc80, %rbx           # imm = 0xF380
leaq -0x510(%rbp), %r14
movq -0x10(%r14), %rdi
cmpq %rdi, %r14
je 0x8f4a
movq (%r14), %rsi
incq %rsi
callq 0x3300
addq $-0x20, %r14
addq $0x20, %rbx
jne 0x8f36
leaq -0x4f8(%rbp), %rdi
callq 0x30b0
movq -0xd0(%rbp), %rdi
cmpq %r15, %rdi
je 0x8f7b
movq -0xc0(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r12, %rdi
callq 0x3520
nop