// File: /workspace/github_cpp_makefile_star2_O2/bothaynahazem[P]AsuMathLabG13/main.cpp
// Function: evaluate(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
string evaluate(string s1)
{
	stack<string> operators;
	stack<Matrix> operands;
	string result;
	string s;
for (int i=0; i<s1.length();i++)
    if (s1[i]==' ')
    s1.erase(i,1);
	if(s1[0]=='-')
        s1.insert(0,"0");
    for (int i=0; i<s1.length();i++)
    if(s1[i]==' '&& s1[i+1] == '-')
        s1.insert(i+1,"0");
    else if(s1[i]=='('&& s1[i+1]=='-')
        s1.insert(i+1,"0");

	int pos = 0;
        while (pos != string::npos)
	{
		pos = s1.find_first_of("()+-/*^", pos);
		if (pos == -1) break;
		if (s1[pos - 1] == '.')
		{
			s1.insert(pos-1, " ");
			s1.insert(pos + 2, " ");
		}
		else
		{
            s1.insert(pos, " ");
            s1.insert(pos + 2, " ");
		}
		pos = s1.find_first_of("()+-/*^", pos) + 1;
	}

	if (s1.find("sin") != string::npos )
    {

			int pos = 0;
			while (pos != string::npos)
			{
				pos = s1.find("sin");
				if (pos == -1) break;
				pos += 3;
				s1 = replaceSin(s1);
			}
		}

    if (s1.find("cos") != string::npos)
	{

		int pos = 0;
		while (pos != string::npos)
		{
			pos = s1.find("cos");
			if (pos == -1) break;
			pos += 3;
			s1 = replaceCos(s1);
		}
	}

	if (s1.find("tan") != string::npos)
	{

		int pos = 0;
		while (pos != string::npos)
		{
			pos = s1.find("tan");
			if (pos == -1) break;
			pos += 3;
			s1 = replaceTan(s1);
		}
	}

	if (s1.find("log10") != string::npos)
	{

		int pos = 0;
		while (pos != string::npos)
		{
			pos = s1.find("log10");
			if (pos == -1) break;
			pos += 3;
			s1 = replaceLog(s1);
		}
	}


	if (s1.find("log") != string::npos)
	{

		int pos = 0;
		while (pos != string::npos)
		{
			pos = s1.find("log");
			if (pos == -1) break;
			pos += 3;
			s1 = replaceLn(s1);
		}
	}

	if (s1.find("exp") != string::npos)
	{

		int pos = 0;
		while (pos != string::npos)
		{
			pos = s1.find("exp");
			if (pos == -1) break;
			pos += 3;
			s1 = replaceExp(s1);
		}
	}

    if (s1.find("sqrt") != string::npos)
	{

		int pos = 0;
		while (pos != string::npos)
		{
			pos = s1.find("sqrt");
			if (pos == -1) break;
			pos += 3;
			s1 = replaceSqrt(s1);
		}
	}

	if (s1.find("Math error") != string::npos)
		return "Math error";



	istringstream is(s1);
	while (is >> s)
	{
		if (isChar(s))
		{
			if (s[0] == '(') operators.push("(");
			else if (s[0] == ')')
			{
				while (operators.top() != "(")
				{
					string ch = operators.top(); operators.pop();
					Matrix op2 = operands.top(); operands.pop();
					Matrix op1 = operands.top(); operands.pop();
					Matrix H;
                    H=solve(op1, op2, ch);
					operands.push(H);
				}
				operators.pop();
			}
			else
			{
				while (!operators.empty() && preference(s) <= preference(operators.top()))
				{

					string ch = operators.top(); operators.pop();
					Matrix op2 = operands.top(); operands.pop();
					Matrix op1 = operands.top(); operands.pop();

					operands.push(solve(op1, op2, ch));

				}

				operators.push(s);
			}

		}
		else if(isLetter(s))
        {
            for (int i=0;i<100;i++)
            {
                if(variables_names[i]==s)
                {
                    Matrix H(input_matrices[i]);
                    operands.push(H);
                    break;
                }
            }
        }
		else
		{
			Matrix op(s);
			operands.push(op);
		}

	}

	while (!operators.empty())
	{
		string ch = operators.top(); operators.pop();
		Matrix op2 = operands.top(); operands.pop();
		Matrix op1 = operands.top(); operands.pop();

		operands.push(solve(op1, op2, ch));
	}

//	char buffer[1000];
//	sprintf(buffer, "%f", operands.top().getDeterminate());
if(operands.top().getn()!=1)
	result = operands.top().getAltString();
	else
        result = operands.top().getAltStringNoB();

	return result;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x6d8, %rsp            # imm = 0x6D8
movq %rsi, %r14
movq %rdi, -0x30(%rbp)
leaq -0x148(%rbp), %rdi
callq 0x7880
leaq -0x80(%rbp), %rdi
callq 0x78a0
leaq -0xc8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
andq $0x0, -0x8(%rcx)
leaq -0xe8(%rbp), %rax
movq %rax, -0x10(%rax)
andq $0x0, -0x8(%rax)
xorl %r15d, %r15d
movb %r15b, (%rcx)
movb %r15b, (%rax)
pushq $0x1
popq %rbx
movq (%r14), %rax
cmpq %r15, 0x8(%r14)
jbe 0x4012
cmpb $0x20, (%rax,%r15)
jne 0x400d
movq %r14, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x3090
incq %r15
jmp 0x3fef
cmpb $0x2d, (%rax)
jne 0x4028
leaq 0xb069(%rip), %rdx      # 0xf087
movq %r14, %rdi
xorl %esi, %esi
callq 0x30b0
leaq 0xb058(%rip), %r15      # 0xf087
leaq -0x1(%rbx), %rax
cmpq %rax, 0x8(%r14)
jbe 0x4064
movq (%r14), %rax
movzbl -0x1(%rax,%rbx), %ecx
cmpl $0x28, %ecx
je 0x404b
cmpl $0x20, %ecx
jne 0x405f
cmpb $0x2d, (%rax,%rbx)
jne 0x405f
movq %r14, %rdi
movq %rbx, %rsi
movq %r15, %rdx
callq 0x30b0
incq %rbx
jmp 0x402f
movabsq $-0x100000000, %r13     # imm = 0xFFFFFFFF00000000
xorl %edx, %edx
leaq 0xb02a(%rip), %rbx      # 0xf0a1
shlq $0x20, %rdx
cmpq %r13, %rdx
je 0x4149
sarq $0x20, %rdx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x31c0
movq %rax, %r12
cmpl $-0x1, %r12d
je 0x4149
shlq $0x20, %r12
movq %r13, %r15
leaq (%r12,%r13), %rsi
sarq $0x20, %rsi
movq (%r14), %rax
cmpb $0x2e, (%rax,%rsi)
jne 0x40f1
movq %r14, %rdi
leaq 0xb032(%rip), %rdx      # 0xf0f4
callq 0x30b0
movabsq $0x200000000, %rax      # imm = 0x200000000
leaq (%r12,%rax), %rsi
sarq $0x20, %rsi
movq %r14, %rdi
leaq 0xb011(%rip), %rdx      # 0xf0f4
callq 0x30b0
sarq $0x20, %r12
movq %r12, %r13
jmp 0x412d
movq %r12, %r13
sarq $0x20, %r13
movq %r14, %rdi
movq %r13, %rsi
leaq 0xafef(%rip), %rdx      # 0xf0f4
callq 0x30b0
movabsq $0x200000000, %rax      # imm = 0x200000000
addq %rax, %r12
sarq $0x20, %r12
movq %r14, %rdi
movq %r12, %rsi
leaq 0xafcc(%rip), %rdx      # 0xf0f4
callq 0x30b0
movq %r14, %rdi
movq %rbx, %rsi
movq %r13, %rdx
callq 0x31c0
movq %rax, %rdx
incq %rdx
movq %r15, %r13
jmp 0x4077
leaq 0xaf1f(%rip), %rsi      # 0xf06f
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x41cb
xorl %r13d, %r13d
leaq 0xaf05(%rip), %rbx      # 0xf06f
leaq -0x4b0(%rbp), %r15
leaq -0x6c0(%rbp), %r12
cmpl $-0x1, %r13d
je 0x41cb
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x35e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x41cb
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x3c8a
addq $0x3, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
jmp 0x4178
leaq 0xaea3(%rip), %rsi      # 0xf075
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x424d
xorl %r13d, %r13d
leaq 0xae89(%rip), %rbx      # 0xf075
leaq -0x490(%rbp), %r15
leaq -0x6c0(%rbp), %r12
cmpl $-0x1, %r13d
je 0x424d
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x35e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x424d
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x4fae
addq $0x3, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
jmp 0x41fa
leaq 0xae28(%rip), %rsi      # 0xf07c
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x42cf
xorl %r13d, %r13d
leaq 0xae0e(%rip), %rbx      # 0xf07c
leaq -0x470(%rbp), %r15
leaq -0x6c0(%rbp), %r12
cmpl $-0x1, %r13d
je 0x42cf
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x35e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x42cf
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x52b7
addq $0x3, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
jmp 0x427c
leaq 0xadad(%rip), %rsi      # 0xf083
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x4351
xorl %r13d, %r13d
leaq 0xad93(%rip), %rbx      # 0xf083
leaq -0x450(%rbp), %r15
leaq -0x6c0(%rbp), %r12
cmpl $-0x1, %r13d
je 0x4351
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x35e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x4351
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x55c0
addq $0x3, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
jmp 0x42fe
leaq 0xad31(%rip), %rsi      # 0xf089
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x43d3
xorl %r13d, %r13d
leaq 0xad17(%rip), %rbx      # 0xf089
leaq -0x430(%rbp), %r15
leaq -0x6c0(%rbp), %r12
cmpl $-0x1, %r13d
je 0x43d3
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x35e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x43d3
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x58c9
addq $0x3, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
jmp 0x4380
leaq 0xacb7(%rip), %rsi      # 0xf091
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x4455
xorl %r13d, %r13d
leaq 0xac9d(%rip), %rbx      # 0xf091
leaq -0x410(%rbp), %r15
leaq -0x6c0(%rbp), %r12
cmpl $-0x1, %r13d
je 0x4455
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x35e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x4455
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x5bd2
addq $0x3, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
jmp 0x4402
leaq 0xac3c(%rip), %rsi      # 0xf098
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x44d7
xorl %r13d, %r13d
leaq 0xac22(%rip), %rbx      # 0xf098
leaq -0x3f0(%rbp), %r15
leaq -0x6c0(%rbp), %r12
cmpl $-0x1, %r13d
je 0x44d7
movq %r14, %rdi
movq %rbx, %rsi
xorl %edx, %edx
callq 0x35e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x44d7
movq %r15, %rdi
movq %r14, %rsi
callq 0x3410
movq %r12, %rdi
movq %r15, %rsi
callq 0x5edb
addq $0x3, %r13
movq %r14, %rdi
movq %r12, %rsi
callq 0x3380
movq %r12, %rdi
callq 0x3170
movq %r15, %rdi
callq 0x3170
jmp 0x4484
leaq 0xabcb(%rip), %rsi      # 0xf0a9
movq %r14, %rdi
xorl %edx, %edx
callq 0x35e0
cmpq $-0x1, %rax
je 0x450e
leaq 0xabb4(%rip), %rsi      # 0xf0a9
leaq -0x6c0(%rbp), %rdx
movq -0x30(%rbp), %rdi
callq 0x7844
movq -0x30(%rbp), %rbx
jmp 0x4cca
leaq -0x6c0(%rbp), %rdi
pushq $0x8
popq %rdx
movq %r14, %rsi
callq 0x34c0
leaq -0x290(%rbp), %r15
leaq -0x6c0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x33b0
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x4a7f
leaq -0x3d0(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3410
leaq -0x3d0(%rbp), %r13
movq %r13, %rdi
callq 0x61e4
movl %eax, %r14d
movq %r13, %rdi
callq 0x3170
testb %r14b, %r14b
je 0x496f
movq -0xf8(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x28, %eax
leaq -0x1b8(%rbp), %rdx
leaq -0xb8(%rbp), %rbx
je 0x4a47
cmpl $0x29, %eax
leaq -0x148(%rbp), %r13
jne 0x48ba
movq -0x118(%rbp), %rdi
cmpq -0x110(%rbp), %rdi
jne 0x45d6
movq -0x100(%rbp), %rax
movq -0x8(%rax), %rdi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rdi
addq $-0x20, %rdi
leaq 0xaad3(%rip), %rsi      # 0xf0b4
callq 0x78c0
testb %al, %al
je 0x4a72
movq -0x118(%rbp), %rsi
cmpq -0x110(%rbp), %rsi
jne 0x4611
movq -0x100(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
leaq -0x1d8(%rbp), %rdi
callq 0x3410
movq %r13, %rdi
callq 0x8422
movq -0x50(%rbp), %rsi
cmpq -0x48(%rbp), %rsi
leaq -0x1b8(%rbp), %r14
jne 0x464a
movq -0x38(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x8daa
leaq -0x80(%rbp), %rdi
callq 0x8494
movq -0x50(%rbp), %rsi
cmpq -0x48(%rbp), %rsi
jne 0x467d
movq -0x38(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %r14, %rdi
callq 0x8daa
leaq -0x80(%rbp), %rdi
callq 0x8494
movq %r15, %rdi
callq 0x89d6
leaq -0x370(%rbp), %rdi
movq %r14, %rsi
callq 0x8daa
leaq -0x338(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x8daa
leaq -0x258(%rbp), %r12
movq %r12, %rdi
leaq -0x1d8(%rbp), %rsi
callq 0x3410
leaq -0x180(%rbp), %rbx
movq %rbx, %rdi
leaq -0x370(%rbp), %rsi
leaq -0x338(%rbp), %rdx
movq %r12, %rcx
callq 0x6242
leaq -0x6f8(%rbp), %r12
movq %r12, %rdi
movq %r15, %rsi
movq %rbx, %rdx
callq 0x9e42
movq %r12, %rdi
callq 0x8a24
movq %rbx, %rdi
callq 0x8a24
leaq -0x258(%rbp), %rdi
callq 0x3170
leaq -0x338(%rbp), %rdi
callq 0x8a24
leaq -0x370(%rbp), %rdi
callq 0x8a24
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
callq 0x8506
movq %r15, %rdi
callq 0x8a24
movq %r14, %rdi
callq 0x8a24
leaq -0xb8(%rbp), %rdi
callq 0x8a24
leaq -0x1d8(%rbp), %rdi
callq 0x3170
jmp 0x45b3
movq -0x118(%rbp), %rsi
cmpq -0x110(%rbp), %rsi
jne 0x4797
movq -0x100(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
leaq -0x180(%rbp), %rdi
callq 0x3410
movq %r13, %rdi
callq 0x8422
movq -0x50(%rbp), %rsi
cmpq -0x48(%rbp), %rsi
jne 0x47c9
movq -0x38(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x8daa
leaq -0x80(%rbp), %rdi
callq 0x8494
movq -0x50(%rbp), %rsi
cmpq -0x48(%rbp), %rsi
jne 0x47fc
movq -0x38(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %r14, %rdi
callq 0x8daa
leaq -0x80(%rbp), %rdi
callq 0x8494
leaq -0x300(%rbp), %rdi
movq %r14, %rsi
callq 0x8daa
leaq -0x2c8(%rbp), %rdi
leaq -0xb8(%rbp), %rsi
callq 0x8daa
leaq -0x218(%rbp), %rbx
movq %rbx, %rdi
leaq -0x180(%rbp), %rsi
callq 0x3410
movq %r15, %rdi
leaq -0x300(%rbp), %rsi
leaq -0x2c8(%rbp), %rdx
movq %rbx, %rcx
callq 0x6242
leaq -0x80(%rbp), %rdi
movq %r15, %rsi
callq 0x87ba
movq %r15, %rdi
callq 0x8a24
leaq -0x218(%rbp), %rdi
callq 0x3170
leaq -0x2c8(%rbp), %rdi
callq 0x8a24
leaq -0x300(%rbp), %rdi
callq 0x8a24
movq %r14, %rdi
callq 0x8a24
leaq -0xb8(%rbp), %rdi
callq 0x8a24
leaq -0x180(%rbp), %rdi
callq 0x3170
movq -0x118(%rbp), %rax
cmpq -0x138(%rbp), %rax
je 0x495b
leaq -0x238(%rbp), %rbx
movq %rbx, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3410
movq %rbx, %rdi
callq 0x6635
movl %eax, %r14d
movq -0x118(%rbp), %rsi
cmpq -0x110(%rbp), %rsi
jne 0x4912
movq -0x100(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
leaq -0x540(%rbp), %rbx
movq %rbx, %rdi
callq 0x3410
movq %rbx, %rdi
callq 0x6635
movl %eax, %r13d
movq %rbx, %rdi
callq 0x3170
leaq -0x238(%rbp), %rdi
callq 0x3170
cmpl %r13d, %r14d
leaq -0x1b8(%rbp), %r14
leaq -0x148(%rbp), %r13
jle 0x4774
movq %r13, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x88c6
jmp 0x4527
leaq -0x1f8(%rbp), %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3410
movq -0x1f8(%rbp), %rax
movb (%rax), %r14b
addb $-0x41, %r14b
leaq -0x1f8(%rbp), %rdi
callq 0x3170
cmpb $0x19, %r14b
ja 0x49fe
xorl %edi, %edi
pushq $0x38
popq %r14
addq $-0x38, %r14
leaq 0x20(%rdi), %r13
cmpq $0xca0, %r13            # imm = 0xCA0
je 0x4527
addq 0xf96c(%rip), %rdi      # 0x14330
leaq -0xf8(%rbp), %rsi
callq 0x78cd
movq %r13, %rdi
testb %al, %al
je 0x49a8
movq 0xf94a(%rip), %rsi      # 0x14328
subq %r14, %rsi
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
callq 0x8daa
leaq -0x80(%rbp), %rdi
movq %rbx, %rsi
callq 0x8506
jmp 0x4a3a
leaq -0x3b0(%rbp), %r14
movq %r14, %rdi
leaq -0xf8(%rbp), %rsi
callq 0x3410
leaq -0xb8(%rbp), %rbx
movq %rbx, %rdi
movq %r14, %rsi
callq 0x8fdc
movq %r14, %rdi
callq 0x3170
leaq -0x80(%rbp), %rdi
movq %rbx, %rsi
callq 0x8506
movq %rbx, %rdi
callq 0x8a24
jmp 0x4527
movq %rbx, %rdi
leaq 0xa663(%rip), %rsi      # 0xf0b4
callq 0x7844
leaq -0x148(%rbp), %rdi
movq %rbx, %rsi
callq 0x8198
movq %rbx, %rdi
callq 0x3170
jmp 0x4527
movq %r13, %rdi
callq 0x8422
jmp 0x4527
leaq -0x1b8(%rbp), %r13
leaq -0x520(%rbp), %r14
leaq -0x4e8(%rbp), %rbx
leaq -0x390(%rbp), %r15
leaq -0x290(%rbp), %r12
movq -0x118(%rbp), %rsi
cmpq -0x138(%rbp), %rsi
je 0x4bdb
cmpq -0x110(%rbp), %rsi
jne 0x4ad2
movq -0x100(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rsi
addq $-0x20, %rsi
leaq -0x180(%rbp), %rdi
callq 0x3410
leaq -0x148(%rbp), %rdi
callq 0x8422
movq -0x50(%rbp), %rsi
cmpq -0x48(%rbp), %rsi
jne 0x4b08
movq -0x38(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x8daa
leaq -0x80(%rbp), %rdi
callq 0x8494
movq -0x50(%rbp), %rsi
cmpq -0x48(%rbp), %rsi
jne 0x4b3b
movq -0x38(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %r13, %rdi
callq 0x8daa
leaq -0x80(%rbp), %rdi
callq 0x8494
movq %r14, %rdi
movq %r13, %rsi
callq 0x8daa
movq %rbx, %rdi
leaq -0xb8(%rbp), %rsi
callq 0x8daa
movq %r15, %rdi
leaq -0x180(%rbp), %rsi
callq 0x3410
movq %r12, %rdi
movq %r14, %rsi
movq %rbx, %rdx
movq %r15, %rcx
callq 0x6242
leaq -0x80(%rbp), %rdi
movq %r12, %rsi
callq 0x87ba
movq %r12, %rdi
callq 0x8a24
movq %r15, %rdi
callq 0x3170
movq %rbx, %rdi
callq 0x8a24
movq %r14, %rdi
callq 0x8a24
movq %r13, %rdi
callq 0x8a24
leaq -0xb8(%rbp), %rdi
callq 0x8a24
leaq -0x180(%rbp), %rdi
callq 0x3170
jmp 0x4aa2
movq -0x50(%rbp), %rsi
movq -0x48(%rbp), %rax
movq %rsi, %rcx
cmpq %rax, %rsi
jne 0x4bf8
movq -0x38(%rbp), %rdx
movl $0x1f8, %ecx            # imm = 0x1F8
addq -0x8(%rdx), %rcx
movl -0x34(%rcx), %edx
imull -0x38(%rcx), %edx
cmpl $0x1, %edx
leaq -0xc8(%rbp), %r14
jne 0x4c2f
cmpq %rax, %rsi
jne 0x4c1d
movq -0x38(%rbp), %rax
movl $0x1f8, %esi            # imm = 0x1F8
addq -0x8(%rax), %rsi
addq $-0x38, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x9d60
jmp 0x4c51
cmpq %rax, %rsi
jne 0x4c41
movq -0x38(%rbp), %rax
movl $0x1f8, %esi            # imm = 0x1F8
addq -0x8(%rax), %rsi
addq $-0x38, %rsi
leaq -0xb8(%rbp), %rdi
callq 0x9c7a
leaq -0xd8(%rbp), %rdi
leaq -0xb8(%rbp), %rbx
movq %rbx, %rsi
callq 0x3380
movq %rbx, %rdi
callq 0x3170
movq -0x30(%rbp), %rbx
leaq 0x10(%rbx), %rax
movq %rax, (%rbx)
movq -0xd8(%rbp), %rcx
cmpq %r14, %rcx
je 0x4c96
movq %rcx, (%rbx)
movq -0xc8(%rbp), %rax
movq %rax, 0x10(%rbx)
jmp 0x4c9d
movups (%r14), %xmm0
movups %xmm0, (%rax)
movq -0xd0(%rbp), %rax
movq %rax, 0x8(%rbx)
movq %r14, -0xd8(%rbp)
andq $0x0, -0xd0(%rbp)
movb $0x0, -0xc8(%rbp)
leaq -0x6c0(%rbp), %rdi
callq 0x3180
leaq -0xf8(%rbp), %rdi
callq 0x3170
leaq -0xd8(%rbp), %rdi
callq 0x3170
leaq -0x80(%rbp), %rdi
callq 0x796a
leaq -0x148(%rbp), %rdi
callq 0x7b2a
movq %rbx, %rax
addq $0x6d8, %rsp            # imm = 0x6D8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x4f6a
jmp 0x4f6a
jmp 0x4ed1
jmp 0x4ed1
jmp 0x4ed1
movq %rax, %rbx
jmp 0x4f9a
jmp 0x4d5c
jmp 0x4f6a
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
jmp 0x4f5c
jmp 0x4f6a
movq %rax, %rbx
leaq -0x3b0(%rbp), %rdi
jmp 0x4f5c
jmp 0x4f6a
movq %rax, %rbx
leaq -0xb8(%rbp), %rdi
callq 0x8a24
jmp 0x4f6d
jmp 0x4ed1
movq %rax, %rbx
leaq -0x3f0(%rbp), %rdi
jmp 0x4de5
jmp 0x4ed1
movq %rax, %rbx
leaq -0x410(%rbp), %rdi
jmp 0x4de5
jmp 0x4ed1
movq %rax, %rbx
leaq -0x430(%rbp), %rdi
jmp 0x4de5
jmp 0x4ed1
movq %rax, %rbx
leaq -0x450(%rbp), %rdi
jmp 0x4de5
jmp 0x4ed1
movq %rax, %rbx
leaq -0x470(%rbp), %rdi
jmp 0x4de5
jmp 0x4ed1
movq %rax, %rbx
leaq -0x490(%rbp), %rdi
jmp 0x4de5
jmp 0x4ed1
movq %rax, %rbx
leaq -0x4b0(%rbp), %rdi
callq 0x3170
jmp 0x4f79
jmp 0x4ed1
movq %rax, %rbx
jmp 0x4e2a
movq %rax, %rbx
jmp 0x4e1e
movq %rax, %rbx
jmp 0x4e12
movq %rax, %rbx
leaq -0x290(%rbp), %rdi
callq 0x8a24
leaq -0x390(%rbp), %rdi
callq 0x3170
leaq -0x4e8(%rbp), %rdi
callq 0x8a24
leaq -0x520(%rbp), %rdi
jmp 0x4e94
jmp 0x4f6a
jmp 0x4e57
jmp 0x4e4d
jmp 0x4e5c
jmp 0x4ed1
movq %rax, %rbx
jmp 0x4e8d
movq %rax, %rbx
jmp 0x4e75
movq %rax, %rbx
jmp 0x4ea5
movq %rax, %rbx
jmp 0x4e81
movq %rax, %rbx
jmp 0x4eb1
movq %rax, %rbx
jmp 0x4e99
jmp 0x4f6a
movq %rax, %rbx
leaq -0x290(%rbp), %rdi
callq 0x8a24
leaq -0x218(%rbp), %rdi
callq 0x3170
leaq -0x2c8(%rbp), %rdi
callq 0x8a24
leaq -0x300(%rbp), %rdi
callq 0x8a24
leaq -0x1b8(%rbp), %rdi
callq 0x8a24
leaq -0xb8(%rbp), %rdi
callq 0x8a24
leaq -0x180(%rbp), %rdi
jmp 0x4f5c
jmp 0x4f6a
movq %rax, %rbx
leaq -0x238(%rbp), %rdi
jmp 0x4f5c
movq %rax, %rbx
jmp 0x4f79
jmp 0x4f6a
movq %rax, %rbx
jmp 0x4f55
movq %rax, %rbx
jmp 0x4f08
movq %rax, %rbx
jmp 0x4f20
jmp 0x4f2e
movq %rax, %rbx
jmp 0x4f3d
movq %rax, %rbx
jmp 0x4f14
movq %rax, %rbx
leaq -0x180(%rbp), %rdi
callq 0x8a24
leaq -0x258(%rbp), %rdi
callq 0x3170
leaq -0x338(%rbp), %rdi
callq 0x8a24
leaq -0x370(%rbp), %rdi
callq 0x8a24
jmp 0x4f31
movq %rax, %rbx
leaq -0x290(%rbp), %rdi
callq 0x8a24
leaq -0x1b8(%rbp), %rdi
callq 0x8a24
leaq -0xb8(%rbp), %rdi
callq 0x8a24
leaq -0x1d8(%rbp), %rdi
callq 0x3170
jmp 0x4f6d
movq %rax, %rbx
jmp 0x4f49
jmp 0x4f6a
movq %rax, %rbx
leaq -0x6c0(%rbp), %rdi
callq 0x3180
leaq -0xf8(%rbp), %rdi
callq 0x3170
leaq -0xd8(%rbp), %rdi
callq 0x3170
leaq -0x80(%rbp), %rdi
callq 0x796a
leaq -0x148(%rbp), %rdi
callq 0x7b2a
movq %rbx, %rdi
callq 0x3520