// File: 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
subq $0x1a10, %rsp           # imm = 0x1A10
movl $0x0, -0x4(%rbp)
movl %edi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
leaq -0x30(%rbp), %rdi
callq 0x3510
movq -0x10(%rbp), %rax
movq 0x8(%rax), %rsi
leaq -0x238(%rbp), %rdi
movl $0x8, %edx
callq 0x3670
jmp 0x88ad
leaq -0xed0(%rbp), %rax
movq %rax, %rcx
addq $0xc80, %rcx            # imm = 0xC80
movq %rcx, -0x16f0(%rbp)
movq %rax, -0x16e8(%rbp)
movq -0x16e8(%rbp), %rdi
movq %rdi, -0x16f8(%rbp)
callq 0x3510
movq -0x16f8(%rbp), %rax
movq -0x16f0(%rbp), %rcx
addq $0x20, %rax
cmpq %rcx, %rax
movq %rax, -0x16e8(%rbp)
jne 0x88cc
movl $0x0, -0xed4(%rbp)
movl $0x0, -0xed8(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
leaq -0x238(%rbp), %rdi
callq 0x3080
movq %rax, -0x1700(%rbp)
jmp 0x8939
movq -0x1700(%rbp), %rdi
movq (%rdi), %rax
movq -0x18(%rax), %rax
addq %rax, %rdi
callq 0x3490
movb %al, -0x1701(%rbp)
jmp 0x8957
movb -0x1701(%rbp), %al
testb $0x1, %al
jne 0x8966
jmp 0x8cbf
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x12958(%rip), %rsi     # 0x1b2da
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
movl %eax, -0xedc(%rbp)
movl $0x0, -0xee0(%rbp)
movl $0x0, -0xee4(%rbp)
movl $0x0, -0xee8(%rbp)
movslq -0xee8(%rbp), %rax
movq %rax, -0x1710(%rbp)
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
callq 0x3550
movq %rax, %rcx
movq -0x1710(%rbp), %rax
cmpq %rcx, %rax
jae 0x8abe
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0xee8(%rbp), %rsi
callq 0x3720
movq %rax, -0x1718(%rbp)
jmp 0x8a12
movq -0x1718(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5b, %eax
jne 0x8a60
movl -0xee0(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xee0(%rbp)
jmp 0x8aa8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0xab23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0xaacb
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0xee8(%rbp), %rsi
callq 0x3720
movq %rax, -0x1720(%rbp)
jmp 0x8a88
movq -0x1720(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5d, %eax
jne 0x8aa6
movl -0xee4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xee4(%rbp)
jmp 0x8aa8
jmp 0x8aaa
movl -0xee8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xee8(%rbp)
jmp 0x89af
movslq -0xedc(%rbp), %rax
cmpq $-0x1, %rax
je 0x8bb8
movl -0xee0(%rbp), %eax
cmpl -0xee4(%rbp), %eax
je 0x8bb8
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp), %rcx
leaq 0x20(%rax,%rcx), %rsi
leaq -0x238(%rbp), %rdi
callq 0x3080
jmp 0x8b06
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
leaq 0x127e8(%rip), %rdx     # 0x1b308
leaq -0xf28(%rbp), %rdi
callq 0xaf20
jmp 0x8b2e
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp), %rcx
leaq 0x20(%rax,%rcx), %rdx
leaq -0xf08(%rbp), %rdi
leaq -0xf28(%rbp), %rsi
callq 0xaed0
jmp 0x8b5a
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq -0xf08(%rbp), %rsi
callq 0x3450
leaq -0xf08(%rbp), %rdi
callq 0x3270
leaq -0xf28(%rbp), %rdi
callq 0x3270
jmp 0x8bb8
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0xf28(%rbp), %rdi
callq 0x3270
jmp 0xaacb
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
leaq 0x1283d(%rip), %rsi     # 0x1b40f
callq 0xafa0
movb %al, -0x1721(%rbp)
jmp 0x8bdf
movb -0x1721(%rbp), %al
testb $0x1, %al
jne 0x8c7e
jmp 0x8bef
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
leaq 0x126d3(%rip), %rsi     # 0x1b2dc
callq 0xafa0
movb %al, -0x1722(%rbp)
jmp 0x8c16
movb -0x1722(%rbp), %al
testb $0x1, %al
jne 0x8c7e
jmp 0x8c22
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
leaq 0x127f5(%rip), %rsi     # 0x1b431
callq 0xafa0
movb %al, -0x1723(%rbp)
jmp 0x8c49
movb -0x1723(%rbp), %al
testb $0x1, %al
jne 0x8c7e
jmp 0x8c55
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3360
cmpq $-0x1, %rax
jne 0x8c9c
movl -0xed8(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xed8(%rbp)
movl -0xed4(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0xed4(%rbp)
movl -0xed4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xed4(%rbp)
movl -0xed8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xed8(%rbp)
jmp 0x8911
movl $0x0, -0xed8(%rbp)
movl -0xed8(%rbp), %eax
cmpl -0xed4(%rbp), %eax
jge 0xaa57
movl $0x0, -0xf30(%rbp)
movl $0x0, -0xf34(%rbp)
movl $0x0, -0xf38(%rbp)
movslq -0xf38(%rbp), %rax
movq %rax, -0x1730(%rbp)
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
callq 0x3550
movq %rax, %rcx
movq -0x1730(%rbp), %rax
cmpq %rcx, %rax
jae 0x8df1
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0xf38(%rbp), %rsi
callq 0x3720
movq %rax, -0x1738(%rbp)
jmp 0x8d5c
movq -0x1738(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x28, %eax
jne 0x8d93
movl -0xf30(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf30(%rbp)
jmp 0x8ddb
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0xa8aa
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0xf38(%rbp), %rsi
callq 0x3720
movq %rax, -0x1740(%rbp)
jmp 0x8dbb
movq -0x1740(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x29, %eax
jne 0x8dd9
movl -0xf34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf34(%rbp)
jmp 0x8ddb
jmp 0x8ddd
movl -0xf38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xf38(%rbp)
jmp 0x8cf9
movl -0xf30(%rbp), %eax
cmpl -0xf34(%rbp), %eax
je 0x8e2b
movl $0x8, %edi
callq 0x31c0
movq %rax, %rdi
leaq 0x124cb(%rip), %rax     # 0x1b2de
movq %rax, (%rdi)
movq 0x191ab(%rip), %rsi     # 0x21fc8
xorl %eax, %eax
movl %eax, %edx
callq 0x35f0
jmp 0xab38
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
movl $0x5b, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
cmpq $-0x1, %rax
jne 0x938f
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x12477(%rip), %rsi     # 0x1b2eb
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
jne 0x938f
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x1244d(%rip), %rsi     # 0x1b2f0
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
jne 0x938f
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x12424(%rip), %rsi     # 0x1b2f6
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
jne 0x938f
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x123f9(%rip), %rsi     # 0x1b2fa
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
jne 0x938f
leaq -0xf58(%rbp), %rdi
callq 0x3510
leaq -0xf78(%rbp), %rdi
callq 0x3510
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0xf98(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0x8f56
leaq -0x30(%rbp), %rdi
leaq -0xf98(%rbp), %rsi
callq 0x3450
leaq -0xf98(%rbp), %rdi
callq 0x3270
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
movl $0x3d, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
cmpq $-0x1, %rax
je 0x91a4
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1750(%rbp)
callq 0x3550
movq -0x1750(%rbp), %rdi
movq %rax, %rsi
decq %rsi
callq 0x3720
movq %rax, -0x1748(%rbp)
jmp 0x8fd9
movq -0x1748(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3b, %eax
je 0x90d6
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1768(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1770(%rbp)
movl $0x3d, %esi
movl %esi, -0x1774(%rbp)
callq 0x34d0
incq %rax
movq %rax, -0x1760(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x3550
movl -0x1774(%rbp), %esi
movq -0x1770(%rbp), %rdx
movq %rax, -0x1758(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x34d0
movq -0x1768(%rbp), %rsi
movq -0x1760(%rbp), %rdx
movq %rax, %rcx
movq -0x1758(%rbp), %rax
notq %rcx
addq %rax, %rcx
leaq -0xfb8(%rbp), %rdi
callq 0x33e0
jmp 0x909b
leaq -0xf58(%rbp), %rdi
leaq -0xfb8(%rbp), %rsi
callq 0x3450
leaq -0xfb8(%rbp), %rdi
callq 0x3270
jmp 0x91a2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x9372
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1788(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1798(%rbp)
movl $0x3d, %esi
movl %esi, -0x179c(%rbp)
callq 0x34d0
incq %rax
movq %rax, -0x1780(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x3550
movl -0x179c(%rbp), %esi
movq -0x1798(%rbp), %rdx
movq %rax, -0x1790(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x34d0
movq -0x1790(%rbp), %rcx
movq -0x1788(%rbp), %rsi
movq -0x1780(%rbp), %rdx
subq %rax, %rcx
addq $-0x2, %rcx
leaq -0xfd8(%rbp), %rdi
callq 0x33e0
jmp 0x9183
leaq -0xf58(%rbp), %rdi
leaq -0xfd8(%rbp), %rsi
callq 0x3450
leaq -0xfd8(%rbp), %rdi
callq 0x3270
jmp 0x91ed
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0xff8(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0x91ce
leaq -0xf58(%rbp), %rdi
leaq -0xff8(%rbp), %rsi
callq 0x3450
leaq -0xff8(%rbp), %rdi
callq 0x3270
leaq -0x1038(%rbp), %rdi
leaq -0xf58(%rbp), %rsi
callq 0x3180
jmp 0x9202
leaq -0x1018(%rbp), %rdi
leaq -0x1038(%rbp), %rsi
callq 0x45e0
jmp 0x9217
leaq -0xf78(%rbp), %rdi
movq %rdi, -0x17a8(%rbp)
leaq -0x1018(%rbp), %rsi
movq %rsi, -0x17b0(%rbp)
callq 0x3450
movq -0x17b0(%rbp), %rdi
callq 0x3270
leaq -0x1038(%rbp), %rdi
callq 0x3270
movq -0x17a8(%rbp), %rsi
leaq -0x1090(%rbp), %rdi
callq 0x3180
jmp 0x9265
leaq -0x1070(%rbp), %rdi
leaq -0x1090(%rbp), %rsi
callq 0xf070
jmp 0x927a
leaq -0x1090(%rbp), %rdi
callq 0x3270
movq 0x19143(%rip), %rdi     # 0x223d0
movslq 0x19144(%rip), %rax     # 0x223d8
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3040
jmp 0x92a6
movq 0x1911b(%rip), %rsi     # 0x223c8
movslq 0x19124(%rip), %rax     # 0x223d8
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x10c8(%rbp), %rdi
leaq -0x1070(%rbp), %rdx
callq 0x10e80
jmp 0x92d0
leaq -0x10c8(%rbp), %rdi
callq 0xe650
movl 0x190f6(%rip), %eax     # 0x223d8
addl $0x1, %eax
movl %eax, 0x190ed(%rip)     # 0x223d8
leaq -0x1070(%rbp), %rdi
callq 0xe650
leaq -0xf78(%rbp), %rdi
callq 0x3270
leaq -0xf58(%rbp), %rdi
callq 0x3270
jmp 0xa942
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1038(%rbp), %rdi
callq 0x3270
jmp 0x9372
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1090(%rbp), %rdi
callq 0x3270
jmp 0x9372
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1070(%rbp), %rdi
callq 0xe650
leaq -0xf78(%rbp), %rdi
callq 0x3270
leaq -0xf58(%rbp), %rdi
callq 0x3270
jmp 0xa8aa
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
movl $0x5b, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
cmpq $-0x1, %rax
je 0x9dee
jmp 0x93be
movslq -0xed8(%rbp), %rcx
leaq -0xed0(%rbp), %rax
shlq $0x5, %rcx
addq %rcx, %rax
movq %rax, -0x17b8(%rbp)
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
movl $0x5b, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
movq -0x17b8(%rbp), %rdi
movq %rax, %rdx
addq $0x1, %rdx
leaq 0x11eed(%rip), %rsi     # 0x1b2ff
callq 0x31e0
cmpq $-0x1, %rax
je 0x968f
leaq -0x10e8(%rbp), %rdi
callq 0x3510
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x17c8(%rbp)
xorl %eax, %eax
movl %eax, %edx
movl $0x5b, %esi
callq 0x34d0
movq -0x17c8(%rbp), %rdi
movq %rax, %rdx
incq %rdx
leaq 0x11e96(%rip), %rsi     # 0x1b2ff
callq 0x31e0
movl %eax, -0xf2c(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0xf2c(%rbp), %rdx
leaq 0x11e70(%rip), %rsi     # 0x1b305
movq %rsi, -0x17c0(%rbp)
callq 0x3380
movq -0x17c0(%rbp), %rsi
movl %eax, -0x10ec(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0xf2c(%rbp), %rdx
callq 0x31e0
movl %eax, -0x10f0(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
movl -0x10ec(%rbp), %eax
movl %eax, %ecx
incl %ecx
movslq %ecx, %rdx
movl -0x10f0(%rbp), %ecx
notl %eax
addl %ecx, %eax
movslq %eax, %rcx
leaq -0x1110(%rbp), %rdi
callq 0x33e0
jmp 0x950e
leaq -0x10e8(%rbp), %rdi
movq %rdi, -0x17d0(%rbp)
leaq -0x1110(%rbp), %rsi
movq %rsi, -0x17d8(%rbp)
callq 0x3450
movq -0x17d8(%rbp), %rdi
callq 0x3270
movq -0x17d0(%rbp), %rsi
leaq -0x1150(%rbp), %rdi
callq 0x3180
jmp 0x9550
leaq -0x1130(%rbp), %rdi
leaq -0x1150(%rbp), %rsi
callq 0x45e0
jmp 0x9565
leaq -0x1150(%rbp), %rdi
callq 0x3270
leaq -0x1130(%rbp), %rdi
leaq 0x11d8b(%rip), %rsi     # 0x1b30a
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
je 0x9626
leaq 0x11d71(%rip), %rsi     # 0x1b30a
xorl %eax, %eax
movl %eax, %edx
leaq -0x1130(%rbp), %rdi
movq %rdi, -0x17e0(%rbp)
callq 0x3710
movq -0x17e0(%rbp), %rdi
movq %rax, %rsi
leaq 0x11d4b(%rip), %rcx     # 0x1b30c
movl $0x1, %edx
callq 0x3260
jmp 0x95cd
jmp 0x9626
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x967e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1150(%rbp), %rdi
callq 0x3270
jmp 0x967e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1130(%rbp), %rdi
callq 0x3270
jmp 0x967e
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movl -0x10ec(%rbp), %eax
movl %eax, %ecx
incl %ecx
movslq %ecx, %rsi
movl -0x10f0(%rbp), %ecx
notl %eax
addl %ecx, %eax
movslq %eax, %rdx
leaq -0x1130(%rbp), %rcx
callq 0x3150
jmp 0x9661
leaq -0x1130(%rbp), %rdi
callq 0x3270
leaq -0x10e8(%rbp), %rdi
callq 0x3270
jmp 0x93be
leaq -0x10e8(%rbp), %rdi
callq 0x3270
jmp 0xa8aa
jmp 0x9691
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
movl $0x24, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x34d0
cmpq $-0x1, %rax
je 0x9701
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x17e8(%rbp)
xorl %eax, %eax
movl %eax, %edx
movl $0x24, %esi
callq 0x34d0
movq -0x17e8(%rbp), %rdi
movq %rax, %rsi
leaq 0x11c17(%rip), %rcx     # 0x1b30a
movl $0x1, %edx
callq 0x3260
jmp 0x96ff
jmp 0x9691
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x1170(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0x972b
leaq -0x30(%rbp), %rdi
leaq -0x1170(%rbp), %rsi
callq 0x3450
leaq -0x1170(%rbp), %rdi
callq 0x3270
movl $0x1, -0x1174(%rbp)
movslq -0x1174(%rbp), %rax
movq %rax, -0x17f0(%rbp)
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
callq 0x3550
movq %rax, %rcx
movq -0x17f0(%rbp), %rax
cmpq %rcx, %rax
jae 0x9b62
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
movslq -0x1174(%rbp), %rdx
leaq -0x1198(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0x97b9
leaq -0x1198(%rbp), %rdi
callq 0x7cd0
movb %al, -0x17f1(%rbp)
jmp 0x97cd
leaq -0x1198(%rbp), %rdi
callq 0x3270
movb -0x17f1(%rbp), %al
testb $0x1, %al
jne 0x97e8
jmp 0x9b4c
movl $0x0, -0x119c(%rbp)
cmpl $0x64, -0x119c(%rbp)
jge 0x9b4a
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
movslq -0x1174(%rbp), %rdx
leaq -0x11c0(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0x982c
movq 0x18b9d(%rip), %rsi     # 0x223d0
movslq -0x119c(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rsi
leaq -0x11c0(%rbp), %rdi
callq 0xae00
movb %al, -0x17f2(%rbp)
leaq -0x11c0(%rbp), %rdi
callq 0x3270
movb -0x17f2(%rbp), %al
testb $0x1, %al
jne 0x986e
jmp 0x9b34
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0x1174(%rbp), %rdx
movl $0x5b, %esi
callq 0x34d0
movl %eax, -0x11c4(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movslq -0x1174(%rbp), %rdx
movl $0x5d, %esi
callq 0x36f0
movl %eax, -0x11c8(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
movl -0x1174(%rbp), %eax
movl %eax, %ecx
incl %ecx
movslq %ecx, %rdx
movl -0x11c4(%rbp), %ecx
notl %eax
addl %ecx, %eax
movslq %eax, %rcx
leaq -0x11e8(%rbp), %rdi
callq 0x33e0
jmp 0x98fd
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
movl -0x11c8(%rbp), %eax
movl %eax, %ecx
incl %ecx
movslq %ecx, %rdx
movl -0x1174(%rbp), %ecx
notl %eax
addl %ecx, %eax
movslq %eax, %rcx
leaq -0x1208(%rbp), %rdi
callq 0x33e0
jmp 0x9938
leaq -0x11e8(%rbp), %rdi
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3360
cmpq $-0x1, %rax
je 0x9972
leaq -0x1208(%rbp), %rdi
movl $0x20, %esi
xorl %eax, %eax
movl %eax, %edx
callq 0x3360
cmpq $-0x1, %rax
jne 0x9a63
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rax
movq %rax, -0x1808(%rbp)
movslq -0x1174(%rbp), %rax
movq %rax, -0x1800(%rbp)
movq 0x18a27(%rip), %rsi     # 0x223c8
movslq -0x119c(%rbp), %rax
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x1228(%rbp), %rdi
callq 0x10af0
jmp 0x99bd
movq -0x1800(%rbp), %rsi
movq -0x1808(%rbp), %rdi
movl $0x1, %edx
leaq -0x1228(%rbp), %rcx
callq 0x3150
jmp 0x99de
leaq -0x1228(%rbp), %rdi
callq 0x3270
jmp 0x9afd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1198(%rbp), %rdi
callq 0x3270
jmp 0xa8aa
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x9b23
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x9b17
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1228(%rbp), %rdi
callq 0x3270
jmp 0x9b17
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rax
movq %rax, -0x1818(%rbp)
movslq -0x1174(%rbp), %rax
movq %rax, -0x1810(%rbp)
movq 0x18936(%rip), %rsi     # 0x223c8
movslq -0x119c(%rbp), %rax
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x1248(%rbp), %rdi
callq 0x10cc0
jmp 0x9aae
movq -0x1810(%rbp), %rsi
movq -0x1818(%rbp), %rdi
movl $0x1, %edx
leaq -0x1248(%rbp), %rcx
callq 0x3150
jmp 0x9acf
leaq -0x1248(%rbp), %rdi
callq 0x3270
jmp 0x9afd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1248(%rbp), %rdi
callq 0x3270
jmp 0x9b17
leaq -0x1208(%rbp), %rdi
callq 0x3270
leaq -0x11e8(%rbp), %rdi
callq 0x3270
jmp 0x9b4a
leaq -0x1208(%rbp), %rdi
callq 0x3270
leaq -0x11e8(%rbp), %rdi
callq 0x3270
jmp 0xa8aa
jmp 0x9b36
movl -0x119c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x119c(%rbp)
jmp 0x97f2
jmp 0x9b4c
jmp 0x9b4e
movl -0x1174(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1174(%rbp)
jmp 0x9751
leaq -0x1268(%rbp), %rdi
callq 0x3510
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1828(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1838(%rbp)
movl $0x5b, %esi
movl %esi, -0x183c(%rbp)
callq 0x34d0
movq %rax, -0x1820(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movl $0x5d, %esi
movq $-0x1, %rdx
callq 0x36f0
movl -0x183c(%rbp), %esi
movq -0x1838(%rbp), %rdx
movq %rax, -0x1830(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x34d0
movq -0x1830(%rbp), %rcx
movq -0x1828(%rbp), %rsi
movq -0x1820(%rbp), %rdx
subq %rax, %rcx
incq %rcx
leaq -0x1288(%rbp), %rdi
callq 0x33e0
jmp 0x9c23
leaq -0x1268(%rbp), %rdi
movq %rdi, -0x1848(%rbp)
leaq -0x1288(%rbp), %rsi
movq %rsi, -0x1850(%rbp)
callq 0x3450
movq -0x1850(%rbp), %rdi
callq 0x3270
movq -0x1848(%rbp), %rsi
leaq -0x12c8(%rbp), %rdi
callq 0x3180
jmp 0x9c65
leaq -0x12a8(%rbp), %rdi
leaq -0x12c8(%rbp), %rsi
callq 0x3bb0
jmp 0x9c7a
leaq -0x1268(%rbp), %rdi
movq %rdi, -0x1858(%rbp)
leaq -0x12a8(%rbp), %rsi
movq %rsi, -0x1860(%rbp)
callq 0x3450
movq -0x1860(%rbp), %rdi
callq 0x3270
leaq -0x12c8(%rbp), %rdi
callq 0x3270
movq -0x1858(%rbp), %rsi
leaq -0x1320(%rbp), %rdi
callq 0x3180
jmp 0x9cc8
leaq -0x1300(%rbp), %rdi
leaq -0x1320(%rbp), %rsi
callq 0xf070
jmp 0x9cdd
leaq -0x1320(%rbp), %rdi
callq 0x3270
movq 0x186d8(%rip), %rsi     # 0x223c8
movslq 0x186e1(%rip), %rax     # 0x223d8
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x1358(%rbp), %rdi
leaq -0x1300(%rbp), %rdx
callq 0x10e80
jmp 0x9d13
leaq -0x1358(%rbp), %rdi
callq 0xe650
movq 0x186aa(%rip), %rdi     # 0x223d0
movslq 0x186ab(%rip), %rax     # 0x223d8
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3040
jmp 0x9d3f
movl 0x18693(%rip), %eax     # 0x223d8
addl $0x1, %eax
movl %eax, 0x1868a(%rip)     # 0x223d8
leaq -0x1300(%rbp), %rdi
callq 0xe650
leaq -0x1268(%rbp), %rdi
callq 0x3270
jmp 0xa940
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
jmp 0x9ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x12c8(%rbp), %rdi
callq 0x3270
jmp 0x9ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1320(%rbp), %rdi
callq 0x3270
jmp 0x9ddd
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1300(%rbp), %rdi
callq 0xe650
leaq -0x1268(%rbp), %rdi
callq 0x3270
jmp 0xa8aa
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x114f0(%rip), %rsi     # 0x1b2fa
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
je 0xa09f
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x1378(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0x9e47
leaq -0x30(%rbp), %rdi
leaq -0x1378(%rbp), %rsi
movq %rsi, -0x1870(%rbp)
callq 0x3450
movq -0x1870(%rbp), %rdi
callq 0x3270
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1868(%rbp)
xorl %eax, %eax
movl %eax, %edx
movl $0x28, %esi
callq 0x34d0
movq -0x1868(%rbp), %rsi
movq %rax, %rdx
incq %rdx
leaq -0x13a0(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0x9eb2
leaq -0x13a0(%rbp), %rdi
movq %rdi, -0x18a0(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x18a0(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x1898(%rbp)
callq 0x3270
movl -0x1898(%rbp), %eax
movl %eax, -0x137c(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1880(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1890(%rbp)
movl $0x2c, %esi
movl %esi, -0x1894(%rbp)
callq 0x34d0
movq -0x1890(%rbp), %rdx
incq %rax
movq %rax, -0x1878(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movl $0x29, %esi
callq 0x34d0
movl -0x1894(%rbp), %esi
movq -0x1890(%rbp), %rdx
movq %rax, -0x1888(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x34d0
movq -0x1888(%rbp), %rcx
movq -0x1880(%rbp), %rsi
movq -0x1878(%rbp), %rdx
subq %rax, %rcx
incq %rcx
leaq -0x13c8(%rbp), %rdi
callq 0x33e0
jmp 0x9fa7
leaq -0x13c8(%rbp), %rdi
movq %rdi, -0x18b0(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x18b0(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x18a4(%rbp)
callq 0x3270
movl -0x18a4(%rbp), %eax
movl %eax, -0x13a4(%rbp)
movl -0x137c(%rbp), %esi
movl -0x13a4(%rbp), %edx
leaq -0x1400(%rbp), %rdi
movl $0x3, %ecx
xorps %xmm0, %xmm0
callq 0xe7c0
jmp 0xa006
movq 0x183c3(%rip), %rdi     # 0x223d0
movslq 0x183c4(%rip), %rax     # 0x223d8
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3040
jmp 0xa026
movq 0x1839b(%rip), %rsi     # 0x223c8
movslq 0x183a4(%rip), %rax     # 0x223d8
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x1438(%rbp), %rdi
leaq -0x1400(%rbp), %rdx
callq 0x10e80
jmp 0xa050
leaq -0x1438(%rbp), %rdi
callq 0xe650
movl 0x18376(%rip), %eax     # 0x223d8
addl $0x1, %eax
movl %eax, 0x1836d(%rip)     # 0x223d8
leaq -0x1400(%rbp), %rdi
callq 0xe650
jmp 0xa93e
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x1400(%rbp), %rdi
callq 0xe650
jmp 0xa8aa
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x1123b(%rip), %rsi     # 0x1b2f6
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
je 0xa350
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x1458(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0xa0f8
leaq -0x30(%rbp), %rdi
leaq -0x1458(%rbp), %rsi
movq %rsi, -0x18c0(%rbp)
callq 0x3450
movq -0x18c0(%rbp), %rdi
callq 0x3270
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x18b8(%rbp)
xorl %eax, %eax
movl %eax, %edx
movl $0x28, %esi
callq 0x34d0
movq -0x18b8(%rbp), %rsi
movq %rax, %rdx
incq %rdx
leaq -0x1480(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0xa163
leaq -0x1480(%rbp), %rdi
movq %rdi, -0x18f0(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x18f0(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x18e8(%rbp)
callq 0x3270
movl -0x18e8(%rbp), %eax
movl %eax, -0x145c(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x18d0(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x18e0(%rbp)
movl $0x2c, %esi
movl %esi, -0x18e4(%rbp)
callq 0x34d0
movq -0x18e0(%rbp), %rdx
incq %rax
movq %rax, -0x18c8(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movl $0x29, %esi
callq 0x34d0
movl -0x18e4(%rbp), %esi
movq -0x18e0(%rbp), %rdx
movq %rax, -0x18d8(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x34d0
movq -0x18d8(%rbp), %rcx
movq -0x18d0(%rbp), %rsi
movq -0x18c8(%rbp), %rdx
subq %rax, %rcx
incq %rcx
leaq -0x14a8(%rbp), %rdi
callq 0x33e0
jmp 0xa258
leaq -0x14a8(%rbp), %rdi
movq %rdi, -0x1900(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x1900(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x18f4(%rbp)
callq 0x3270
movl -0x18f4(%rbp), %eax
movl %eax, -0x1484(%rbp)
movl -0x145c(%rbp), %esi
movl -0x1484(%rbp), %edx
leaq -0x14e0(%rbp), %rdi
movl $0x2, %ecx
xorps %xmm0, %xmm0
callq 0xe7c0
jmp 0xa2b7
movq 0x18112(%rip), %rdi     # 0x223d0
movslq 0x18113(%rip), %rax     # 0x223d8
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3040
jmp 0xa2d7
movq 0x180ea(%rip), %rsi     # 0x223c8
movslq 0x180f3(%rip), %rax     # 0x223d8
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x1518(%rbp), %rdi
leaq -0x14e0(%rbp), %rdx
callq 0x10e80
jmp 0xa301
leaq -0x1518(%rbp), %rdi
callq 0xe650
movl 0x180c5(%rip), %eax     # 0x223d8
addl $0x1, %eax
movl %eax, 0x180bc(%rip)     # 0x223d8
leaq -0x14e0(%rbp), %rdi
callq 0xe650
jmp 0xa93c
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x14e0(%rbp), %rdi
callq 0xe650
jmp 0xa8aa
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x10f84(%rip), %rsi     # 0x1b2f0
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
je 0xa5fe
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x1538(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0xa3a9
leaq -0x30(%rbp), %rdi
leaq -0x1538(%rbp), %rsi
movq %rsi, -0x1910(%rbp)
callq 0x3450
movq -0x1910(%rbp), %rdi
callq 0x3270
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1908(%rbp)
xorl %eax, %eax
movl %eax, %edx
movl $0x28, %esi
callq 0x34d0
movq -0x1908(%rbp), %rsi
movq %rax, %rdx
incq %rdx
leaq -0x1560(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0xa414
leaq -0x1560(%rbp), %rdi
movq %rdi, -0x1940(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x1940(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x1938(%rbp)
callq 0x3270
movl -0x1938(%rbp), %eax
movl %eax, -0x153c(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1920(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1930(%rbp)
movl $0x2c, %esi
movl %esi, -0x1934(%rbp)
callq 0x34d0
movq -0x1930(%rbp), %rdx
incq %rax
movq %rax, -0x1918(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movl $0x29, %esi
callq 0x34d0
movl -0x1934(%rbp), %esi
movq -0x1930(%rbp), %rdx
movq %rax, -0x1928(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x34d0
movq -0x1928(%rbp), %rcx
movq -0x1920(%rbp), %rsi
movq -0x1918(%rbp), %rdx
subq %rax, %rcx
incq %rcx
leaq -0x1588(%rbp), %rdi
callq 0x33e0
jmp 0xa509
leaq -0x1588(%rbp), %rdi
movq %rdi, -0x1950(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x1950(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x1944(%rbp)
callq 0x3270
movl -0x1944(%rbp), %eax
movl %eax, -0x1564(%rbp)
movl -0x153c(%rbp), %esi
movl -0x1564(%rbp), %edx
leaq -0x15c0(%rbp), %rdi
xorl %ecx, %ecx
xorps %xmm0, %xmm0
callq 0xe7c0
jmp 0xa565
movq 0x17e64(%rip), %rdi     # 0x223d0
movslq 0x17e65(%rip), %rax     # 0x223d8
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3040
jmp 0xa585
movq 0x17e3c(%rip), %rsi     # 0x223c8
movslq 0x17e45(%rip), %rax     # 0x223d8
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x15f8(%rbp), %rdi
leaq -0x15c0(%rbp), %rdx
callq 0x10e80
jmp 0xa5af
leaq -0x15f8(%rbp), %rdi
callq 0xe650
movl 0x17e17(%rip), %eax     # 0x223d8
addl $0x1, %eax
movl %eax, 0x17e0e(%rip)     # 0x223d8
leaq -0x15c0(%rbp), %rdi
callq 0xe650
jmp 0xa93a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x15c0(%rbp), %rdi
callq 0xe650
jmp 0xa8aa
movslq -0xed8(%rbp), %rax
leaq -0xed0(%rbp), %rdi
shlq $0x5, %rax
addq %rax, %rdi
leaq 0x10cd1(%rip), %rsi     # 0x1b2eb
xorl %eax, %eax
movl %eax, %edx
callq 0x3710
cmpq $-0x1, %rax
je 0xa938
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rsi
xorl %eax, %eax
movl %eax, %edx
leaq -0x1618(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0xa657
leaq -0x30(%rbp), %rdi
leaq -0x1618(%rbp), %rsi
movq %rsi, -0x1960(%rbp)
callq 0x3450
movq -0x1960(%rbp), %rdi
callq 0x3270
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1958(%rbp)
xorl %eax, %eax
movl %eax, %edx
movl $0x28, %esi
callq 0x34d0
movq -0x1958(%rbp), %rsi
movq %rax, %rdx
incq %rdx
leaq -0x1640(%rbp), %rdi
movl $0x1, %ecx
callq 0x33e0
jmp 0xa6c2
leaq -0x1640(%rbp), %rdi
movq %rdi, -0x1990(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x1990(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x1988(%rbp)
callq 0x3270
movl -0x1988(%rbp), %eax
movl %eax, -0x161c(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x1970(%rbp)
xorl %eax, %eax
movl %eax, %edx
movq %rdx, -0x1980(%rbp)
movl $0x2c, %esi
movl %esi, -0x1984(%rbp)
callq 0x34d0
movq -0x1980(%rbp), %rdx
incq %rax
movq %rax, -0x1968(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movl $0x29, %esi
callq 0x34d0
movl -0x1984(%rbp), %esi
movq -0x1980(%rbp), %rdx
movq %rax, -0x1978(%rbp)
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
callq 0x34d0
movq -0x1978(%rbp), %rcx
movq -0x1970(%rbp), %rsi
movq -0x1968(%rbp), %rdx
subq %rax, %rcx
incq %rcx
leaq -0x1668(%rbp), %rdi
callq 0x33e0
jmp 0xa7b7
leaq -0x1668(%rbp), %rdi
movq %rdi, -0x19a0(%rbp)
callq 0x3170
movq %rax, %rdi
callq 0x3470
movq -0x19a0(%rbp), %rdi
cvttsd2si %xmm0, %eax
movl %eax, -0x1994(%rbp)
callq 0x3270
movl -0x1994(%rbp), %eax
movl %eax, -0x1644(%rbp)
movl -0x161c(%rbp), %esi
movl -0x1644(%rbp), %edx
leaq -0x16a0(%rbp), %rdi
movl $0x1, %ecx
xorps %xmm0, %xmm0
callq 0xe7c0
jmp 0xa816
movq 0x17bb3(%rip), %rdi     # 0x223d0
movslq 0x17bb4(%rip), %rax     # 0x223d8
shlq $0x5, %rax
addq %rax, %rdi
leaq -0x30(%rbp), %rsi
callq 0x3040
jmp 0xa836
movq 0x17b8b(%rip), %rsi     # 0x223c8
movslq 0x17b94(%rip), %rax     # 0x223d8
imulq $0x38, %rax, %rax
addq %rax, %rsi
leaq -0x16d8(%rbp), %rdi
leaq -0x16a0(%rbp), %rdx
callq 0x10e80
jmp 0xa860
leaq -0x16d8(%rbp), %rdi
callq 0xe650
movl 0x17b66(%rip), %eax     # 0x223d8
addl $0x1, %eax
movl %eax, 0x17b5d(%rip)     # 0x223d8
leaq -0x16a0(%rbp), %rdi
callq 0xe650
jmp 0xa938
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
leaq -0x16a0(%rbp), %rdi
callq 0xe650
movl -0x244(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xaacb
movq -0x240(%rbp), %rdi
callq 0x3160
movq %rax, -0x16e0(%rbp)
movq 0x17701(%rip), %rdi     # 0x21fd8
leaq 0x10a34(%rip), %rsi     # 0x1b312
callq 0x33b0
movq %rax, -0x19a8(%rbp)
jmp 0xa8ec
movq -0x19a8(%rbp), %rdi
movq -0x16e0(%rbp), %rsi
callq 0x33b0
movq %rax, -0x19b0(%rbp)
jmp 0xa908
movq -0x19b0(%rbp), %rdi
movq 0x176aa(%rip), %rsi     # 0x21fc0
callq 0x33f0
jmp 0xa91d
callq 0x35b0
jmp 0xa924
movl -0xed8(%rbp), %eax
addl $0x1, %eax
movl %eax, -0xed8(%rbp)
jmp 0x8cc9
jmp 0xa93a
jmp 0xa93c
jmp 0xa93e
jmp 0xa940
jmp 0xa942
movslq -0xed8(%rbp), %rax
shlq $0x5, %rax
leaq -0xed0(%rbp,%rax), %rdi
movq %rdi, -0x19c0(%rbp)
callq 0x3550
movq -0x19c0(%rbp), %rdi
movq %rax, %rsi
addq $-0x2, %rsi
callq 0x3720
movq %rax, -0x19b8(%rbp)
jmp 0xa97d
movq -0x19b8(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x3b, %eax
je 0xaa39
movq 0x17a39(%rip), %rsi     # 0x223d0
movl 0x17a3b(%rip), %eax     # 0x223d8
decl %eax
cltq
shlq $0x5, %rax
addq %rax, %rsi
movq 0x17629(%rip), %rdi     # 0x21fd8
callq 0x3350
movq %rax, -0x19c8(%rbp)
jmp 0xa9bd
movq -0x19c8(%rbp), %rdi
leaq 0x10943(%rip), %rsi     # 0x1b30e
callq 0x33b0
movq %rax, -0x19d0(%rbp)
jmp 0xa9d9
movq -0x19d0(%rbp), %rdi
movq 0x175d9(%rip), %rsi     # 0x21fc0
callq 0x33f0
movq %rax, -0x19d8(%rbp)
jmp 0xa9f5
movq -0x19d8(%rbp), %rdi
movq 0x179c5(%rip), %rsi     # 0x223c8
movl 0x179cf(%rip), %eax     # 0x223d8
decl %eax
cltq
imulq $0x38, %rax, %rax
addq %rax, %rsi
callq 0x15ad0
movq %rax, -0x19e0(%rbp)
jmp 0xaa22
movq -0x19e0(%rbp), %rdi
movq 0x17590(%rip), %rsi     # 0x21fc0
callq 0x33f0
jmp 0xaa37
jmp 0xaa39
jmp 0xa922
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x240(%rbp)
movl %eax, -0x244(%rbp)
callq 0x35b0
jmp 0xaacb
movl $0x0, -0x4(%rbp)
leaq -0xed0(%rbp), %rax
movq %rax, -0x19f0(%rbp)
addq $0xc80, %rax            # imm = 0xC80
movq %rax, -0x19e8(%rbp)
movq -0x19e8(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x19f8(%rbp)
callq 0x3270
movq -0x19f0(%rbp), %rcx
movq -0x19f8(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x19e8(%rbp)
jne 0xaa79
leaq -0x238(%rbp), %rdi
callq 0x30e0
leaq -0x30(%rbp), %rdi
callq 0x3270
movl -0x4(%rbp), %eax
addq $0x1a10, %rsp           # imm = 0x1A10
popq %rbp
retq
leaq -0xed0(%rbp), %rax
movq %rax, -0x1a08(%rbp)
addq $0xc80, %rax            # imm = 0xC80
movq %rax, -0x1a00(%rbp)
movq -0x1a00(%rbp), %rdi
addq $-0x20, %rdi
movq %rdi, -0x1a10(%rbp)
callq 0x3270
movq -0x1a08(%rbp), %rcx
movq -0x1a10(%rbp), %rax
cmpq %rcx, %rax
movq %rax, -0x1a00(%rbp)
jne 0xaae6
leaq -0x238(%rbp), %rdi
callq 0x30e0
leaq -0x30(%rbp), %rdi
callq 0x3270
movq -0x240(%rbp), %rdi
callq 0x3630
nopl (%rax,%rax)