// File: /workspace/github_cpp_makefile_star2_O2/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 -0x70(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
movb $0x0, (%rax)
movq 0x8(%rsi), %rsi
leaq -0x4f8(%rbp), %rdi
pushq $0x8
popq %rdx
callq 0x3550
pushq $0x10
popq %rax
leaq (%rax,%rbp), %rcx
addq $-0x1180, %rcx          # imm = 0xEE80
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
movb $0x0, (%rcx)
addq $0x20, %rax
cmpq $0xc90, %rax            # imm = 0xC90
jne 0x66d6
xorl %ebx, %ebx
leaq -0x60(%rbp), %r12
movq $0x0, -0x38(%rbp)
movslq %ebx, %r15
shlq $0x5, %r15
leaq (%r15,%rbp), %r14
addq $-0x1180, %r14          # imm = 0xEE80
leaq -0x4f8(%rbp), %rdi
movq %r14, %rsi
callq 0x3060
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x685e
movq %rbx, %r13
movq %r12, %rbx
xorl %r12d, %r12d
movq %r14, %rdi
leaq 0x8969(%rip), %rsi      # 0xf0b6
xorl %edx, %edx
callq 0x35e0
movq 0x8(%r14), %rsi
xorl %ecx, %ecx
xorl %edx, %edx
cmpq %r12, %rsi
je 0x6789
movq (%r14), %rdi
movb (%rdi,%r12), %dil
xorl %r8d, %r8d
cmpb $0x5b, %dil
sete %r8b
xorl %r9d, %r9d
cmpb $0x5d, %dil
sete %r9b
addl %r9d, %ecx
addl %r8d, %edx
incq %r12
jmp 0x675c
cmpl $-0x1, %eax
movq %rbx, %r12
movq %r13, %rbx
leaq -0xb8(%rbp), %r13
je 0x67f7
cmpl %ecx, %edx
je 0x67f7
leaq -0x1180(%rbp), %rax
addq %rax, %r15
addq $0x20, %r15
leaq -0x4f8(%rbp), %rdi
movq %r15, %rsi
callq 0x3060
movq %r12, %rdi
movq %r14, %rsi
leaq 0x891b(%rip), %rdx      # 0xf0e4
callq 0x7922
movq %r13, %rdi
movq %r12, %rsi
movq %r15, %rdx
callq 0x78f9
movq %r14, %rdi
movq %r13, %rsi
callq 0x3380
movq %r13, %rdi
callq 0x3170
movq %r12, %rdi
callq 0x3170
movq %r14, %rdi
leaq 0x89fe(%rip), %rsi      # 0xf1ff
callq 0x795a
testb %al, %al
jne 0x6849
movq %r14, %rdi
leaq 0x88a4(%rip), %rsi      # 0xf0b8
callq 0x795a
testb %al, %al
jne 0x6849
movq %r14, %rdi
leaq 0x89fa(%rip), %rsi      # 0xf221
callq 0x795a
testb %al, %al
jne 0x6849
movq %r14, %rdi
pushq $0x20
popq %rsi
xorl %edx, %edx
callq 0x32f0
cmpq $-0x1, %rax
je 0x6849
movq -0x38(%rbp), %rax
jmp 0x6851
decl %ebx
movq -0x38(%rbp), %rax
decl %eax
incl %eax
movq %rax, -0x38(%rbp)
incl %ebx
jmp 0x6707
xorl %eax, %eax
movq -0x38(%rbp), %r13
testl %r13d, %r13d
cmovlel %eax, %r13d
leaq -0xb8(%rbp), %r12
xorl %eax, %eax
movq %r13, -0x38(%rbp)
cmpq -0x38(%rbp), %rax
je 0x779c
movq %rax, -0xe0(%rbp)
shlq $0x5, %rax
leaq (%rax,%rbp), %r13
addq $-0x1180, %r13          # imm = 0xEE80
movq 0x8(%r13), %rax
xorl %ecx, %ecx
xorl %edx, %edx
xorl %esi, %esi
cmpq %rcx, %rax
je 0x68d0
movq (%r13), %rdi
movb (%rdi,%rcx), %dil
xorl %r8d, %r8d
cmpb $0x28, %dil
sete %r8b
xorl %r9d, %r9d
cmpb $0x29, %dil
sete %r9b
addl %r9d, %edx
addl %r8d, %esi
incq %rcx
jmp 0x68a2
cmpl %edx, %esi
jne 0x75a4
movq %r13, %rdi
pushq $0x5b
popq %rsi
xorl %edx, %edx
callq 0x33e0
cmpq $-0x1, %rax
movq %r13, -0x30(%rbp)
jne 0x694f
movq %r13, %rdi
leaq 0x87ce(%rip), %rsi      # 0xf0c7
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
jne 0x694f
movq %r13, %rdi
leaq 0x87bc(%rip), %rsi      # 0xf0cc
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
jne 0x694f
movq %r13, %rdi
leaq 0x87ab(%rip), %rsi      # 0xf0d2
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
jne 0x694f
movq %r13, %rdi
leaq 0x8798(%rip), %rsi      # 0xf0d6
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x73ae
movq %r13, %rdi
pushq $0x5b
popq %rsi
xorl %edx, %edx
callq 0x33e0
cmpq $-0x1, %rax
je 0x6e31
movq %r13, %rdi
pushq $0x5b
popq %rsi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rdx
movq %r13, %rdi
leaq 0x875a(%rip), %rsi      # 0xf0db
callq 0x31c0
cmpq $-0x1, %rax
je 0x6aec
leaq -0xa8(%rbp), %rax
movq %rax, -0xb8(%rbp)
andq $0x0, -0xb0(%rbp)
movb $0x0, -0xa8(%rbp)
movq %r13, %rdi
pushq $0x5b
popq %rsi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rdx
movq %r13, %rdi
leaq 0x8713(%rip), %rsi      # 0xf0db
callq 0x31c0
movslq %eax, %r14
movq %r13, %rdi
leaq 0x8707(%rip), %r15      # 0xf0e1
movq %r15, %rsi
movq %r14, %rdx
callq 0x3310
movq %rax, %rbx
movq %r13, %rdi
movq %r15, %rsi
movq %r14, %rdx
callq 0x31c0
movq %rbx, %r15
shlq $0x20, %r15
movabsq $0x100000000, %rcx      # imm = 0x100000000
addq %rcx, %r15
sarq $0x20, %r15
notl %ebx
addl %ebx, %eax
movslq %eax, %r14
movq %r13, %rsi
leaq -0x60(%rbp), %r13
movq %r13, %rdi
movq %r15, %rdx
movq %r14, %rcx
callq 0x3360
movq %r12, %rdi
movq %r13, %rsi
callq 0x3380
movq %r13, %rdi
callq 0x3170
leaq -0x160(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3410
movq %r13, %rdi
movq %rbx, %rsi
callq 0x3f93
movq %rbx, %rdi
callq 0x3170
movq %r13, %rdi
leaq 0x867a(%rip), %rsi      # 0xf0e6
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x6a9f
movq %r13, %rdi
leaq 0x8663(%rip), %rsi      # 0xf0e6
xorl %edx, %edx
callq 0x35e0
movq %r13, %rdi
movq %rax, %rsi
pushq $0x1
popq %rdx
leaq 0x864e(%rip), %rcx      # 0xf0e8
callq 0x3240
movq -0x30(%rbp), %rdi
movq %r15, %rsi
movq %r14, %rdx
movq %r13, %rcx
callq 0x3130
movq %r13, %rdi
callq 0x3170
movq %r12, %rdi
callq 0x3170
movq -0x30(%rbp), %r13
jmp 0x6966
movq %r13, %rdi
movl %r14d, %esi
xorl %edx, %edx
callq 0x33e0
movq %r13, %rdi
movq %rax, %rsi
pushq $0x1
popq %rdx
leaq 0x85ff(%rip), %rcx      # 0xf0e6
callq 0x3240
movq %r13, %rdi
pushq $0x24
popq %r14
movl %r14d, %esi
xorl %edx, %edx
callq 0x33e0
cmpq $-0x1, %rax
jne 0x6aca
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
pushq $0x1
popq %rbx
movq %rbx, %rcx
callq 0x3360
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
cmpq %rbx, 0x8(%r13)
jbe 0x6cfc
leaq -0x100(%rbp), %r14
movq %r14, %rdi
movq %r13, %rsi
movq %rbx, %rdx
pushq $0x1
popq %rcx
callq 0x3360
movq %rbx, -0x40(%rbp)
movq -0x100(%rbp), %rax
movb (%rax), %bl
addb $-0x41, %bl
movq %r14, %rdi
callq 0x3170
cmpb $0x19, %bl
ja 0x6ce5
xorl %r14d, %r14d
pushq $0x38
popq %r15
leaq 0x20(%r14), %r13
cmpq $0xca0, %r13            # imm = 0xCA0
je 0x6ce5
leaq -0xb8(%rbp), %r12
movq %r12, %rdi
movq -0x30(%rbp), %rsi
movq -0x40(%rbp), %rdx
pushq $0x1
popq %rcx
callq 0x3360
addq $-0x38, %r15
addq 0xd786(%rip), %r14      # 0x14330
movq %r12, %rdi
movq %r14, %rsi
callq 0x78cd
movl %eax, %ebx
movq %r12, %rdi
callq 0x3170
movq %r13, %r14
testb %bl, %bl
je 0x6b74
movq -0x30(%rbp), %r12
movq %r12, %rdi
pushq $0x5b
popq %rsi
movq -0x40(%rbp), %r13
movq %r13, %rdx
callq 0x33e0
movq %rax, %rbx
movq %r12, %rdi
pushq $0x5d
popq %rsi
movq %r13, %rdx
callq 0x35d0
movq %rax, %r14
leaq 0x1(%r13), %rdx
movl %r13d, %eax
notl %eax
addl %eax, %ebx
movslq %ebx, %rcx
leaq -0xb8(%rbp), %rdi
movq %r12, %rsi
callq 0x3360
movq %r14, %rdx
shlq $0x20, %rdx
movabsq $0x100000000, %rax      # imm = 0x100000000
addq %rax, %rdx
sarq $0x20, %rdx
notl %r14d
addl %r13d, %r14d
movslq %r14d, %rcx
leaq -0x60(%rbp), %rdi
movq %r12, %rsi
callq 0x3360
leaq -0xb8(%rbp), %rdi
pushq $0x20
popq %rbx
movl %ebx, %esi
xorl %edx, %edx
callq 0x32f0
cmpq $-0x1, %rax
je 0x6c9a
leaq -0x60(%rbp), %rdi
movl %ebx, %esi
xorl %edx, %edx
callq 0x32f0
cmpq $-0x1, %rax
je 0x6c9a
movq 0xd6bb(%rip), %rsi      # 0x14328
subq %r15, %rsi
leaq -0xd8(%rbp), %rbx
movq %rbx, %rdi
callq 0x9d60
movq %r12, %rdi
movq -0x40(%rbp), %rsi
pushq $0x1
popq %rdx
movq %rbx, %rcx
leaq -0xb8(%rbp), %r12
callq 0x3130
jmp 0x6ccc
movq 0xd687(%rip), %rsi      # 0x14328
subq %r15, %rsi
leaq -0xd8(%rbp), %rbx
movq %rbx, %rdi
callq 0x9c7a
movq %r12, %rdi
movq -0x40(%rbp), %rsi
pushq $0x1
popq %rdx
movq %rbx, %rcx
leaq -0xb8(%rbp), %r12
callq 0x3130
movq %rbx, %rdi
callq 0x3170
leaq -0x60(%rbp), %rdi
callq 0x3170
movq %r12, %rdi
callq 0x3170
movq -0x40(%rbp), %rbx
incq %rbx
leaq -0xb8(%rbp), %r12
movq -0x30(%rbp), %r13
jmp 0x6b2a
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
movb $0x0, -0x50(%rbp)
movq %r13, %rdi
pushq $0x5b
popq %r15
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
movq %rax, %rbx
movq %r13, %rdi
pushq $0x5d
popq %rsi
pushq $-0x1
popq %rdx
callq 0x35d0
movq %rax, %r14
movq %r13, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
subq %rax, %r14
incq %r14
movq %r12, %rdi
movq %r13, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3360
leaq -0x60(%rbp), %rbx
movq %rbx, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
leaq -0x140(%rbp), %r15
movq %r15, %rdi
movq %rbx, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x3913
leaq -0x60(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
leaq -0x120(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x8fdc
movq %r15, %rdi
callq 0x3170
movslq 0xd563(%rip), %rax      # 0x14338
imulq $0x38, %rax, %rsi
addq 0xd548(%rip), %rsi      # 0x14328
leaq -0x2b8(%rbp), %r14
movq %r14, %rdi
movq %r12, %rdx
callq 0x9e42
movq %r14, %rdi
callq 0x8a24
movslq 0xd537(%rip), %rdi      # 0x14338
shlq $0x5, %rdi
addq 0xd524(%rip), %rdi      # 0x14330
leaq -0x80(%rbp), %rsi
callq 0x3200
incl 0xd51d(%rip)            # 0x14338
movq %r12, %rdi
callq 0x8a24
leaq -0x60(%rbp), %rdi
callq 0x3170
jmp 0x7329
movq %r13, %rdi
leaq 0x829b(%rip), %rsi      # 0xf0d6
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x6f6b
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
pushq $0x1
popq %r14
movq %r14, %rcx
callq 0x3360
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x28
popq %rsi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rdx
movq %r12, %rdi
movq %r13, %rsi
movq %r14, %rcx
callq 0x3360
movq -0xb8(%rbp), %rdi
callq 0x3390
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x2c
popq %r15
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rbx
movq %r13, %rdi
pushq $0x29
popq %rsi
xorl %edx, %edx
callq 0x33e0
movq %rax, %r14
movq %r13, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
subq %rax, %r14
incq %r14
movq %r12, %rdi
movq %r13, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3360
cvttsd2si -0x30(%rbp), %ebx
movq -0xb8(%rbp), %rdi
callq 0x3390
cvttsd2si %xmm0, %r14d
movq %r12, %rdi
callq 0x3170
xorpd %xmm0, %xmm0
movq %r12, %rdi
movl %ebx, %esi
movl %r14d, %edx
pushq $0x3
popq %rcx
callq 0x8ace
movslq 0xd40a(%rip), %rdi      # 0x14338
shlq $0x5, %rdi
addq 0xd3f7(%rip), %rdi      # 0x14330
leaq -0x80(%rbp), %rsi
leaq -0x280(%rbp), %r14
callq 0x3200
movslq 0xd3e8(%rip), %rax      # 0x14338
imulq $0x38, %rax, %rsi
addq 0xd3cd(%rip), %rsi      # 0x14328
movq %r14, %rdi
movq %r12, %rdx
callq 0x9e42
jmp 0x7313
movq %r13, %rdi
leaq 0x815d(%rip), %rsi      # 0xf0d2
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x70a5
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
pushq $0x1
popq %r14
movq %r14, %rcx
callq 0x3360
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x28
popq %rsi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rdx
movq %r12, %rdi
movq %r13, %rsi
movq %r14, %rcx
callq 0x3360
movq -0xb8(%rbp), %rdi
callq 0x3390
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x2c
popq %r15
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rbx
movq %r13, %rdi
pushq $0x29
popq %rsi
xorl %edx, %edx
callq 0x33e0
movq %rax, %r14
movq %r13, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
subq %rax, %r14
incq %r14
movq %r12, %rdi
movq %r13, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3360
cvttsd2si -0x30(%rbp), %ebx
movq -0xb8(%rbp), %rdi
callq 0x3390
cvttsd2si %xmm0, %r14d
movq %r12, %rdi
callq 0x3170
xorpd %xmm0, %xmm0
movq %r12, %rdi
movl %ebx, %esi
movl %r14d, %edx
pushq $0x2
popq %rcx
callq 0x8ace
movslq 0xd2d0(%rip), %rdi      # 0x14338
shlq $0x5, %rdi
addq 0xd2bd(%rip), %rdi      # 0x14330
leaq -0x80(%rbp), %rsi
leaq -0x248(%rbp), %r14
callq 0x3200
movslq 0xd2ae(%rip), %rax      # 0x14338
imulq $0x38, %rax, %rsi
addq 0xd293(%rip), %rsi      # 0x14328
movq %r14, %rdi
movq %r12, %rdx
callq 0x9e42
jmp 0x7313
movq %r13, %rdi
leaq 0x801d(%rip), %rsi      # 0xf0cc
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x71de
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
pushq $0x1
popq %r14
movq %r14, %rcx
callq 0x3360
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x28
popq %rsi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rdx
movq %r12, %rdi
movq %r13, %rsi
movq %r14, %rcx
callq 0x3360
movq -0xb8(%rbp), %rdi
callq 0x3390
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x2c
popq %r15
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rbx
movq %r13, %rdi
pushq $0x29
popq %rsi
xorl %edx, %edx
callq 0x33e0
movq %rax, %r14
movq %r13, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
subq %rax, %r14
incq %r14
movq %r12, %rdi
movq %r13, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3360
cvttsd2si -0x30(%rbp), %ebx
movq -0xb8(%rbp), %rdi
callq 0x3390
cvttsd2si %xmm0, %r14d
movq %r12, %rdi
callq 0x3170
xorpd %xmm0, %xmm0
movq %r12, %rdi
movl %ebx, %esi
movl %r14d, %edx
xorl %ecx, %ecx
callq 0x8ace
movslq 0xd197(%rip), %rdi      # 0x14338
shlq $0x5, %rdi
addq 0xd184(%rip), %rdi      # 0x14330
leaq -0x80(%rbp), %rsi
leaq -0x210(%rbp), %r14
callq 0x3200
movslq 0xd175(%rip), %rax      # 0x14338
imulq $0x38, %rax, %rsi
addq 0xd15a(%rip), %rsi      # 0x14328
movq %r14, %rdi
movq %r12, %rdx
callq 0x9e42
jmp 0x7313
movq %r13, %rdi
leaq 0x7edf(%rip), %rsi      # 0xf0c7
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x7329
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
pushq $0x1
popq %r14
movq %r14, %rcx
callq 0x3360
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x28
popq %rsi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rdx
movq %r12, %rdi
movq %r13, %rsi
movq %r14, %rcx
callq 0x3360
movq -0xb8(%rbp), %rdi
callq 0x3390
movsd %xmm0, -0x30(%rbp)
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x2c
popq %r15
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %rbx
movq %r13, %rdi
pushq $0x29
popq %rsi
xorl %edx, %edx
callq 0x33e0
movq %rax, %r14
movq %r13, %rdi
movl %r15d, %esi
xorl %edx, %edx
callq 0x33e0
subq %rax, %r14
incq %r14
movq %r12, %rdi
movq %r13, %rsi
movq %rbx, %rdx
movq %r14, %rcx
callq 0x3360
cvttsd2si -0x30(%rbp), %ebx
movq -0xb8(%rbp), %rdi
callq 0x3390
cvttsd2si %xmm0, %r14d
movq %r12, %rdi
callq 0x3170
xorpd %xmm0, %xmm0
movq %r12, %rdi
movl %ebx, %esi
movl %r14d, %edx
pushq $0x1
popq %rcx
callq 0x8ace
movslq 0xd05d(%rip), %rdi      # 0x14338
shlq $0x5, %rdi
addq 0xd04a(%rip), %rdi      # 0x14330
leaq -0x80(%rbp), %rsi
leaq -0x1d8(%rbp), %r14
callq 0x3200
movslq 0xd03b(%rip), %rax      # 0x14338
imulq $0x38, %rax, %rsi
addq 0xd020(%rip), %rsi      # 0x14328
movq %r14, %rdi
movq %r12, %rdx
callq 0x9e42
movq %r14, %rdi
callq 0x8a24
incl 0xd017(%rip)            # 0x14338
movq %r12, %rdi
callq 0x8a24
movq (%r13), %rax
movq 0x8(%r13), %rcx
cmpb $0x3b, -0x2(%rax,%rcx)
je 0x739f
movq 0xcff1(%rip), %rax      # 0x14330
movslq 0xcff2(%rip), %rcx      # 0x14338
shlq $0x5, %rcx
leaq (%rax,%rcx), %rsi
addq $-0x20, %rsi
movq 0xcc7f(%rip), %rdi      # 0x13fd8
callq 0x32e0
movq %rax, %rdi
leaq 0x7d82(%rip), %rsi      # 0xf0ea
callq 0x3330
movq %rax, %rdi
callq 0x3190
movq 0xcfac(%rip), %rcx      # 0x14328
movslq 0xcfb5(%rip), %rdx      # 0x14338
imulq $0x38, %rdx, %rdx
leaq (%rcx,%rdx), %rsi
addq $-0x38, %rsi
movq %rax, %rdi
callq 0xc867
movq %rax, %rdi
callq 0x3190
movq -0xe0(%rbp), %rax
incq %rax
jmp 0x6878
leaq -0x50(%rbp), %rax
movq %rax, -0x60(%rbp)
andq $0x0, -0x58(%rbp)
xorl %ecx, %ecx
movb %cl, -0x50(%rbp)
leaq -0xc8(%rbp), %rax
movq %rax, -0xd8(%rbp)
andq $0x0, -0xd0(%rbp)
movb %cl, -0xc8(%rbp)
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
pushq $0x1
popq %rcx
callq 0x3360
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r13, %rdi
pushq $0x3d
popq %rsi
xorl %edx, %edx
callq 0x33e0
cmpq $-0x1, %rax
je 0x746b
movq (%r13), %rax
movq 0x8(%r13), %rcx
cmpb $0x3b, -0x1(%rax,%rcx)
jne 0x747d
movq %r13, %rdi
pushq $0x3d
popq %r13
movl %r13d, %esi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %r14
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r15
movq -0x30(%rbp), %rdi
movl %r13d, %esi
movq -0x30(%rbp), %r13
xorl %edx, %edx
callq 0x33e0
subq %rax, %r15
addq $-0x2, %r15
movq %r12, %rdi
movq %r13, %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x3360
jmp 0x74c3
movq %r12, %rdi
movq %r13, %rsi
xorl %edx, %edx
pushq $0x1
popq %rcx
callq 0x3360
jmp 0x74c3
movq %r13, %rdi
pushq $0x3d
popq %r13
movl %r13d, %esi
xorl %edx, %edx
callq 0x33e0
leaq 0x1(%rax), %r14
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r15
movq -0x30(%rbp), %rdi
movl %r13d, %esi
movq -0x30(%rbp), %r13
xorl %edx, %edx
callq 0x33e0
notq %rax
addq %rax, %r15
movq %r12, %rdi
movq %r13, %rsi
movq %r14, %rdx
movq %r15, %rcx
callq 0x3360
leaq -0x60(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
leaq -0x1a0(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x3f93
leaq -0xd8(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
leaq -0x180(%rbp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x8fdc
movq %r15, %rdi
callq 0x3170
movslq 0xcdf3(%rip), %rdi      # 0x14338
shlq $0x5, %rdi
addq 0xcde0(%rip), %rdi      # 0x14330
leaq -0x80(%rbp), %rsi
leaq -0x2f0(%rbp), %r14
callq 0x3200
movslq 0xcdd1(%rip), %rax      # 0x14338
imulq $0x38, %rax, %rsi
addq 0xcdb6(%rip), %rsi      # 0x14328
movq %r14, %rdi
movq %r12, %rdx
callq 0x9e42
movq %r14, %rdi
callq 0x8a24
incl 0xcdad(%rip)            # 0x14338
movq %r12, %rdi
callq 0x8a24
leaq -0xd8(%rbp), %rdi
callq 0x3170
jmp 0x6e23
pushq $0x8
popq %rdi
callq 0x31a0
leaq 0x7b07(%rip), %rcx      # 0xf0ba
movq %rcx, (%rax)
movq %rax, %rdi
movq 0xca08(%rip), %rsi      # 0x13fc8
xorl %edx, %edx
callq 0x34e0
jmp 0x77e4
jmp 0x75e8
jmp 0x75e8
jmp 0x75e8
jmp 0x75d6
jmp 0x75e8
movq %rdx, %r14
movq %rax, %rbx
movq %r15, %rdi
callq 0x3170
jmp 0x7612
jmp 0x75e8
movq %rdx, %r14
movq %rax, %rbx
jmp 0x7612
jmp 0x7751
jmp 0x7751
jmp 0x7751
jmp 0x7751
movq %rdx, %r14
movq %rax, %rbx
movq %r12, %rdi
callq 0x8a24
leaq -0xd8(%rbp), %rdi
callq 0x3170
leaq -0x60(%rbp), %rdi
callq 0x3170
leaq -0xb8(%rbp), %r12
movq %rbx, %r15
jmp 0x7757
jmp 0x7678
jmp 0x7751
jmp 0x7751
jmp 0x7751
jmp 0x7751
jmp 0x7678
jmp 0x7751
jmp 0x7751
jmp 0x7751
jmp 0x7751
jmp 0x7678
jmp 0x7751
jmp 0x7751
jmp 0x7751
jmp 0x7751
movq %rdx, %r14
movq %rax, %r15
movq %r12, %rdi
callq 0x8a24
jmp 0x7757
movq %rdx, %r14
movq %rax, %rbx
movq %r15, %rdi
callq 0x3170
jmp 0x76d0
movq %rdx, %r14
movq %rax, %rbx
jmp 0x76d0
movq %rdx, %r14
movq %r15, %rdi
movq %rax, %r15
callq 0x3170
jmp 0x76d3
jmp 0x76b5
movq %rdx, %r14
movq %rax, %r15
jmp 0x76d3
jmp 0x7751
movq %rdx, %r14
movq %rax, %rbx
movq %r12, %rdi
callq 0x8a24
movq %rbx, %r15
leaq -0x60(%rbp), %rdi
jmp 0x774a
jmp 0x76dd
jmp 0x76ed
movq %rdx, %r14
movq %rax, %r15
movq %rbx, %rdi
callq 0x3170
jmp 0x76fa
movq %rdx, %r14
movq %rax, %r15
leaq -0xb8(%rbp), %r12
leaq -0x60(%rbp), %rdi
jmp 0x7742
jmp 0x7751
movq %rdx, %r14
movq %rax, %r15
leaq -0xb8(%rbp), %r12
jmp 0x7747
movq %rdx, %r14
movq %rax, %r15
leaq -0xb8(%rbp), %r12
jmp 0x7757
jmp 0x7751
jmp 0x7751
jmp 0x7726
movq %rdx, %r14
movq %rax, %r15
jmp 0x7747
movq %rdx, %r14
movq %rax, %r15
movq %rbx, %rdi
jmp 0x7742
movq %rdx, %r14
movq %rax, %r15
movq %r13, %rdi
callq 0x3170
movq %r12, %rdi
callq 0x3170
jmp 0x7757
movq %rdx, %r14
movq %rax, %r15
cmpl $0x1, %r14d
jne 0x7808
movq %r15, %rdi
callq 0x3140
movq %rax, %r14
movq 0xc865(%rip), %rdi      # 0x13fd8
leaq 0x7974(%rip), %rsi      # 0xf0ee
callq 0x3330
movq %rax, %rdi
movq %r14, %rsi
callq 0x3330
movq %rax, %rdi
callq 0x3190
callq 0x34a0
jmp 0x739f
movl $0xc60, %ebx            # imm = 0xC60
leaq (%rbx,%rbp), %rdi
addq $-0x1180, %rdi          # imm = 0xEE80
callq 0x3170
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x77a1
leaq -0x4f8(%rbp), %rdi
callq 0x30c0
leaq -0x80(%rbp), %rdi
callq 0x3170
xorl %eax, %eax
addq $0x1158, %rsp           # imm = 0x1158
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rax, %r15
callq 0x34a0
jmp 0x7808
movq %rax, %r15
jmp 0x7833
movq %rax, %r15
leaq -0x60(%rbp), %rdi
callq 0x3170
jmp 0x7808
jmp 0x7805
jmp 0x7805
movq %rax, %r15
movl $0xc60, %ebx            # imm = 0xC60
leaq (%rbx,%rbp), %rdi
addq $-0x1180, %rdi          # imm = 0xEE80
callq 0x3170
addq $-0x20, %rbx
cmpq $-0x20, %rbx
jne 0x780d
leaq -0x4f8(%rbp), %rdi
callq 0x30c0
leaq -0x80(%rbp), %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3520