// File: /workspace/github_cpp_makefile_star2_O1/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 $0x6e8, %rsp            # imm = 0x6E8
movq %rsi, %r14
movq %rdi, %r12
xorps %xmm0, %xmm0
leaq -0x190(%rbp), %rdi
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x93ce
leaq -0x130(%rbp), %rdi
xorps %xmm0, %xmm0
movaps %xmm0, 0x40(%rdi)
movaps %xmm0, 0x30(%rdi)
movaps %xmm0, 0x20(%rdi)
movaps %xmm0, 0x10(%rdi)
movaps %xmm0, (%rdi)
xorl %esi, %esi
callq 0x955a
leaq -0x58(%rbp), %r13
movq %r13, -0x10(%r13)
xorl %eax, %eax
movq %rax, -0x8(%r13)
movb %al, (%r13)
leaq -0x38(%rbp), %r15
movq %r15, -0x10(%r15)
movq %rax, -0x8(%r15)
movb %al, (%r15)
cmpq %rax, 0x8(%r14)
je 0x430f
xorl %ebx, %ebx
movq (%r14), %rax
cmpb $0x20, (%rax,%rbx)
jne 0x4306
movl $0x1, %edx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3090
incq %rbx
cmpq %rbx, 0x8(%r14)
ja 0x42ed
movq %r12, -0x138(%rbp)
movq (%r14), %rax
cmpb $0x2d, (%rax)
jne 0x4337
leaq 0xcd62(%rip), %rcx      # 0x11087
movl $0x1, %r8d
movq %r14, %rdi
xorl %esi, %esi
xorl %edx, %edx
callq 0x3330
cmpq $0x0, 0x8(%r14)
je 0x439f
movl $0x1, %r15d
xorl %r12d, %r12d
leaq 0xcd39(%rip), %rbx      # 0x11087
movq (%r14), %rax
movzbl -0x1(%rax,%r15), %ecx
cmpl $0x28, %ecx
je 0x4370
cmpl $0x20, %ecx
jne 0x438f
cmpb $0x2d, (%rax,%r15)
movq %r15, %rsi
je 0x437c
cmpb $0x28, %cl
jne 0x438f
cmpb $0x2d, (%rax,%r15)
jne 0x438f
leaq 0x1(%r12), %rsi
movl $0x1, %r8d
movq %r14, %rdi
xorl %edx, %edx
movq %rbx, %rcx
callq 0x3330
incq %r12
leaq 0x1(%r15), %rax
cmpq %r15, 0x8(%r14)
movq %rax, %r15
ja 0x434e
movabsq $-0x100000000, %r13     # imm = 0xFFFFFFFF00000000
xorl %edx, %edx
leaq 0xccef(%rip), %rbx      # 0x110a1
leaq 0xcd3b(%rip), %r15      # 0x110f4
sarq $0x20, %rdx
movl $0x7, %ecx
movq %r14, %rdi
movq %rbx, %rsi
callq 0x3420
cmpl $-0x1, %eax
je 0x445a
movq %rax, %r12
shlq $0x20, %r12
leaq (%r12,%r13), %rsi
sarq $0x20, %rsi
movq (%r14), %rcx
cmpb $0x2e, (%rcx,%rsi)
je 0x43f1
movslq %eax, %rsi
movl $0x1, %r8d
movq %r14, %rdi
xorl %edx, %edx
movq %r15, %rcx
callq 0x3330
movabsq $0x200000000, %rax      # imm = 0x200000000
leaq (%r12,%rax), %rsi
sarq $0x20, %rsi
movl $0x1, %r8d
movq %r14, %rdi
xorl %edx, %edx
movq %r15, %rcx
callq 0x3330
sarq $0x20, %r12
movl $0x7, %ecx
movq %r14, %rdi
movq %rbx, %rsi
movq %r12, %rdx
callq 0x3420
shlq $0x20, %rax
movl $0xfffffffc, %ecx       # imm = 0xFFFFFFFC
leaq (%rcx,%rax), %rdx
addq $0x4, %rdx
cmpq %r13, %rdx
jne 0x43b9
leaq 0xcc0e(%rip), %rsi      # 0x1106f
movl $0x3, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x4528
leaq -0x320(%rbp), %rbx
leaq -0x330(%rbp), %r15
leaq -0x580(%rbp), %r12
movl $0x3, %ecx
movq %r14, %rdi
leaq 0xcbd1(%rip), %rsi      # 0x1106f
xorl %edx, %edx
callq 0x34e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x4528
movq %rbx, -0x330(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x929a
movq %r12, %rdi
movq %r15, %rsi
callq 0x3e40
movq %r14, %rdi
movq %r12, %rsi
callq 0x3360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x44ff
movq -0x570(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x330(%rbp), %rdi
cmpq %rbx, %rdi
je 0x451a
movq -0x320(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl %r13d, %eax
jne 0x448f
leaq 0xcb46(%rip), %rsi      # 0x11075
movl $0x3, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x45f6
leaq -0x300(%rbp), %rbx
leaq -0x310(%rbp), %r15
leaq -0x580(%rbp), %r12
movl $0x3, %ecx
movq %r14, %rdi
leaq 0xcb09(%rip), %rsi      # 0x11075
xorl %edx, %edx
callq 0x34e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x45f6
movq %rbx, -0x310(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x929a
movq %r12, %rdi
movq %r15, %rsi
callq 0x59f2
movq %r14, %rdi
movq %r12, %rsi
callq 0x3360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x45cd
movq -0x570(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x310(%rbp), %rdi
cmpq %rbx, %rdi
je 0x45e8
movq -0x300(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl %r13d, %eax
jne 0x455d
leaq 0xca7f(%rip), %rsi      # 0x1107c
movl $0x3, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x46c4
leaq -0x2e0(%rbp), %rbx
leaq -0x2f0(%rbp), %r15
leaq -0x580(%rbp), %r12
movl $0x3, %ecx
movq %r14, %rdi
leaq 0xca42(%rip), %rsi      # 0x1107c
xorl %edx, %edx
callq 0x34e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x46c4
movq %rbx, -0x2f0(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x929a
movq %r12, %rdi
movq %r15, %rsi
callq 0x5e14
movq %r14, %rdi
movq %r12, %rsi
callq 0x3360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x469b
movq -0x570(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x2f0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x46b6
movq -0x2e0(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl %r13d, %eax
jne 0x462b
leaq 0xc9b8(%rip), %rsi      # 0x11083
movl $0x5, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x4792
leaq -0x2c0(%rbp), %rbx
leaq -0x2d0(%rbp), %r15
leaq -0x580(%rbp), %r12
movl $0x5, %ecx
movq %r14, %rdi
leaq 0xc97b(%rip), %rsi      # 0x11083
xorl %edx, %edx
callq 0x34e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x4792
movq %rbx, -0x2d0(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x929a
movq %r12, %rdi
movq %r15, %rsi
callq 0x6236
movq %r14, %rdi
movq %r12, %rsi
callq 0x3360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x4769
movq -0x570(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x2d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4784
movq -0x2c0(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl %r13d, %eax
jne 0x46f9
leaq 0xc8f0(%rip), %rsi      # 0x11089
movl $0x3, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x4860
leaq -0x2a0(%rbp), %rbx
leaq -0x2b0(%rbp), %r15
leaq -0x580(%rbp), %r12
movl $0x3, %ecx
movq %r14, %rdi
leaq 0xc8b3(%rip), %rsi      # 0x11089
xorl %edx, %edx
callq 0x34e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x4860
movq %rbx, -0x2b0(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x929a
movq %r12, %rdi
movq %r15, %rsi
callq 0x6658
movq %r14, %rdi
movq %r12, %rsi
callq 0x3360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x4837
movq -0x570(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x2b0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4852
movq -0x2a0(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl %r13d, %eax
jne 0x47c7
leaq 0xc82a(%rip), %rsi      # 0x11091
movl $0x3, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x492e
leaq -0x280(%rbp), %rbx
leaq -0x290(%rbp), %r15
leaq -0x580(%rbp), %r12
movl $0x3, %ecx
movq %r14, %rdi
leaq 0xc7ed(%rip), %rsi      # 0x11091
xorl %edx, %edx
callq 0x34e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x492e
movq %rbx, -0x290(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x929a
movq %r12, %rdi
movq %r15, %rsi
callq 0x6a7a
movq %r14, %rdi
movq %r12, %rsi
callq 0x3360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x4905
movq -0x570(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x290(%rbp), %rdi
cmpq %rbx, %rdi
je 0x4920
movq -0x280(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl %r13d, %eax
jne 0x4895
leaq 0xc763(%rip), %rsi      # 0x11098
movl $0x4, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x49fc
leaq -0x260(%rbp), %rbx
leaq -0x270(%rbp), %r15
leaq -0x580(%rbp), %r12
movl $0x4, %ecx
movq %r14, %rdi
leaq 0xc726(%rip), %rsi      # 0x11098
xorl %edx, %edx
callq 0x34e0
movq %rax, %r13
cmpl $-0x1, %r13d
je 0x49fc
movq %rbx, -0x270(%rbp)
movq (%r14), %rsi
movq 0x8(%r14), %rdx
addq %rsi, %rdx
movq %r15, %rdi
callq 0x929a
movq %r12, %rdi
movq %r15, %rsi
callq 0x6e9c
movq %r14, %rdi
movq %r12, %rsi
callq 0x3360
movq -0x580(%rbp), %rdi
leaq -0x570(%rbp), %rax
cmpq %rax, %rdi
je 0x49d3
movq -0x570(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x270(%rbp), %rdi
cmpq %rbx, %rdi
je 0x49ee
movq -0x260(%rbp), %rsi
incq %rsi
callq 0x3300
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
cmpl %r13d, %eax
jne 0x4963
leaq 0xc6a6(%rip), %rsi      # 0x110a9
movl $0xa, %ecx
movq %r14, %rdi
xorl %edx, %edx
callq 0x34e0
cmpq $-0x1, %rax
je 0x4a49
movq -0x138(%rbp), %r14
leaq 0x10(%r14), %rax
movq %rax, (%r14)
leaq 0xc67c(%rip), %rsi      # 0x110a9
leaq 0xc67f(%rip), %rdx      # 0x110b3
movq %r14, %rdi
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
callq 0x9334
jmp 0x550c
leaq -0x580(%rbp), %rdi
movq %r14, %rsi
movl $0x8, %edx
callq 0x34b0
leaq -0x580(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x3390
movq (%rax), %rcx
movq -0x18(%rcx), %rcx
testb $0x5, 0x20(%rax,%rcx)
jne 0x520f
leaq -0x380(%rbp), %rax
movq %rax, -0x390(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x390(%rbp), %rdi
callq 0x929a
movq -0x390(%rbp), %rdi
movzbl (%rdi), %eax
addl $-0x28, %eax
cmpl $0x36, %eax
ja 0x5164
movb $0x1, %bl
movabsq $0x400000000000af, %rcx # imm = 0x400000000000AF
btq %rax, %rcx
jae 0x5141
leaq -0x380(%rbp), %rax
cmpq %rax, %rdi
je 0x4aeb
movq -0x380(%rbp), %rsi
incq %rsi
callq 0x3300
testb $0x1, %bl
je 0x502f
movq -0x48(%rbp), %rax
movzbl (%rax), %eax
cmpl $0x28, %eax
leaq -0xa0(%rbp), %rbx
je 0x516b
cmpl $0x29, %eax
leaq -0x1d0(%rbp), %rbx
jne 0x4f26
movq -0x160(%rbp), %rdi
cmpq -0x158(%rbp), %rdi
jne 0x4b3e
movq -0x148(%rbp), %rax
movq -0x8(%rax), %rdi
movl $0x200, %eax            # imm = 0x200
addq %rax, %rdi
addq $-0x20, %rdi
leaq 0xc56b(%rip), %rsi      # 0x110b4
callq 0x30e0
testl %eax, %eax
je 0x51c9
movq -0x160(%rbp), %rax
cmpq -0x158(%rbp), %rax
jne 0x4b79
movq -0x148(%rbp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
leaq -0x1a0(%rbp), %rcx
movq %rcx, -0x1b0(%rbp)
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
addq %rsi, %rdx
leaq -0x1b0(%rbp), %rdi
callq 0x929a
leaq -0xa0(%rbp), %rbx
leaq -0x190(%rbp), %rdi
callq 0x99d4
movq -0x100(%rbp), %rsi
cmpq -0xf8(%rbp), %rsi
leaq -0x130(%rbp), %r14
leaq -0x400(%rbp), %r15
leaq -0x230(%rbp), %r12
jne 0x4be9
movq -0xe8(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %rbx, %rdi
callq 0xa4f6
movq %r14, %rdi
callq 0x9a78
movq -0x100(%rbp), %rsi
cmpq -0xf8(%rbp), %rsi
jne 0x4c20
movq -0xe8(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %r15, %rdi
callq 0xa4f6
movq %r14, %rdi
callq 0x9a78
leaq -0x3c8(%rbp), %rdi
callq 0xa052
leaq -0x660(%rbp), %rdi
movq %r15, %rsi
callq 0xa4f6
leaq -0x628(%rbp), %rdi
movq %rbx, %rsi
callq 0xa4f6
leaq -0x220(%rbp), %rax
movq %rax, -0x230(%rbp)
movq -0x1b0(%rbp), %rsi
movq -0x1a8(%rbp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x929a
leaq -0xd8(%rbp), %r13
movq %r13, %rdi
leaq -0x660(%rbp), %rsi
leaq -0x628(%rbp), %rdx
movq %r12, %rcx
callq 0x731c
leaq -0x708(%rbp), %r12
movq %r12, %rdi
leaq -0x3c8(%rbp), %rsi
movq %r13, %rdx
callq 0xb80c
movq %r12, %rdi
callq 0xa0be
movq %r13, %rdi
callq 0xa0be
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0x4cf0
movq -0x220(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x628(%rbp), %rdi
callq 0xa0be
leaq -0x660(%rbp), %rdi
callq 0xa0be
movq %r14, %rdi
leaq -0x3c8(%rbp), %r14
movq %r14, %rsi
callq 0x9aea
movq %r14, %rdi
callq 0xa0be
movq %r15, %rdi
callq 0xa0be
movq %rbx, %rdi
callq 0xa0be
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x4b1b
movq -0x1a0(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x4b1b
movq -0x160(%rbp), %rax
cmpq -0x158(%rbp), %rax
jne 0x4d80
movq -0x148(%rbp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
leaq -0xc8(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
addq %rsi, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x929a
leaq -0xa0(%rbp), %rbx
leaq -0x190(%rbp), %rdi
callq 0x99d4
movq -0x100(%rbp), %rsi
cmpq -0xf8(%rbp), %rsi
leaq -0x130(%rbp), %r14
leaq -0x400(%rbp), %r15
leaq -0x210(%rbp), %r12
jne 0x4df0
movq -0xe8(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %rbx, %rdi
callq 0xa4f6
movq %r14, %rdi
callq 0x9a78
movq -0x100(%rbp), %rsi
cmpq -0xf8(%rbp), %rsi
jne 0x4e27
movq -0xe8(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %r15, %rdi
callq 0xa4f6
movq %r14, %rdi
callq 0x9a78
leaq -0x5f0(%rbp), %rdi
movq %r15, %rsi
callq 0xa4f6
leaq -0x5b8(%rbp), %rdi
movq %rbx, %rsi
callq 0xa4f6
leaq -0x200(%rbp), %rax
movq %rax, -0x210(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
movq %r12, %rdi
callq 0x929a
movq %r12, %rcx
leaq -0x3c8(%rbp), %r12
movq %r12, %rdi
leaq -0x5f0(%rbp), %rsi
leaq -0x5b8(%rbp), %rdx
callq 0x731c
movq %r14, %rdi
movq %r12, %rsi
callq 0x9d82
movq %r12, %rdi
callq 0xa0be
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x4ed5
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x5b8(%rbp), %rdi
callq 0xa0be
leaq -0x5f0(%rbp), %rdi
callq 0xa0be
movq %r15, %rdi
callq 0xa0be
movq %rbx, %rdi
callq 0xa0be
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x4f1f
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x1d0(%rbp), %rbx
movq -0x180(%rbp), %r14
movq -0x160(%rbp), %r15
cmpq %r14, %r15
je 0x4fc5
leaq -0x1c0(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
movq %rbx, %rdi
callq 0x929a
movq %rbx, %rdi
callq 0x7718
movl %eax, %r12d
movq -0x160(%rbp), %rax
cmpq -0x158(%rbp), %rax
jne 0x4f8c
movq -0x148(%rbp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
leaq -0x360(%rbp), %rcx
movq %rcx, -0x370(%rbp)
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
addq %rsi, %rdx
leaq -0x370(%rbp), %rbx
movq %rbx, %rdi
callq 0x929a
movq %rbx, %rdi
callq 0x7718
cmpl %eax, %r12d
setle %r12b
jmp 0x4fc8
xorl %r12d, %r12d
cmpq %r14, %r15
je 0x5011
movq -0x370(%rbp), %rdi
leaq -0x360(%rbp), %rax
cmpq %rax, %rdi
je 0x4fef
movq -0x360(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x1d0(%rbp), %rdi
leaq -0x1c0(%rbp), %rax
cmpq %rax, %rdi
je 0x5011
movq -0x1c0(%rbp), %rsi
incq %rsi
callq 0x3300
testb %r12b, %r12b
jne 0x4d5d
leaq -0x190(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x9ee6
jmp 0x4a5d
leaq -0x340(%rbp), %rax
movq %rax, -0x350(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x350(%rbp), %rdi
callq 0x929a
movq -0x350(%rbp), %rdi
movb (%rdi), %bl
leaq -0x340(%rbp), %rax
cmpq %rax, %rdi
je 0x5078
movq -0x340(%rbp), %rsi
incq %rsi
callq 0x3300
addb $-0x41, %bl
cmpb $0x19, %bl
ja 0x50d0
movq 0x11299(%rip), %r14     # 0x16320
movq -0x48(%rbp), %r12
movq -0x40(%rbp), %r15
addq $0x8, %r14
xorl %ebx, %ebx
movq (%r14), %rdx
cmpq %r15, %rdx
jne 0x50ba
testq %rdx, %rdx
je 0x51da
movq -0x8(%r14), %rdi
movq %r12, %rsi
callq 0x3310
testl %eax, %eax
je 0x51da
addq $-0x38, %rbx
addq $0x20, %r14
cmpq $-0x15e0, %rbx          # imm = 0xEA20
jne 0x5095
jmp 0x4a5d
leaq -0x240(%rbp), %rbx
movq %rbx, -0x250(%rbp)
movq -0x48(%rbp), %rsi
movq -0x40(%rbp), %rdx
addq %rsi, %rdx
leaq -0x250(%rbp), %r15
movq %r15, %rdi
callq 0x929a
leaq -0xa0(%rbp), %r14
movq %r14, %rdi
movq %r15, %rsi
callq 0xa768
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5125
movq -0x240(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x130(%rbp), %rdi
movq %r14, %rsi
callq 0x9aea
movq %r14, %rdi
callq 0xa0be
jmp 0x4a5d
cmpq $0x6, %rax
jne 0x5164
movb 0x1(%rdi), %cl
addb $-0x2a, %cl
cmpb $0x35, %cl
jae 0x5164
movabsq $0x1000000000002b, %rbx # imm = 0x1000000000002B
shrq %cl, %rbx
jmp 0x4ad0
xorl %ebx, %ebx
jmp 0x4ad0
leaq -0x90(%rbp), %rax
movq %rax, -0xa0(%rbp)
movq %rbx, %rdi
leaq 0xbf31(%rip), %rsi      # 0x110b4
leaq 0xbf2b(%rip), %rdx      # 0x110b5
callq 0x9334
leaq -0x190(%rbp), %rdi
movq %rbx, %rsi
callq 0x96fe
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x4a5d
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x4a5d
leaq -0x190(%rbp), %rdi
callq 0x99d4
jmp 0x4a5d
movq 0x11137(%rip), %rsi     # 0x16318
subq %rbx, %rsi
leaq -0xa0(%rbp), %rbx
movq %rbx, %rdi
callq 0xa4f6
leaq -0x130(%rbp), %rdi
movq %rbx, %rsi
callq 0x9aea
movq %rbx, %rdi
callq 0xa0be
jmp 0x4a5d
movq -0x160(%rbp), %rax
cmpq -0x180(%rbp), %rax
je 0x53f2
leaq -0x400(%rbp), %r13
leaq -0x6d0(%rbp), %rbx
leaq -0x698(%rbp), %r14
leaq -0x3c8(%rbp), %r15
cmpq -0x158(%rbp), %rax
jne 0x525b
movq -0x148(%rbp), %rax
movq -0x8(%rax), %rax
movl $0x200, %ecx            # imm = 0x200
addq %rcx, %rax
leaq -0xc8(%rbp), %rcx
movq %rcx, -0xd8(%rbp)
movq -0x20(%rax), %rsi
movq -0x18(%rax), %rdx
addq %rsi, %rdx
leaq -0xd8(%rbp), %rdi
callq 0x929a
leaq -0x190(%rbp), %rdi
callq 0x99d4
movq -0x100(%rbp), %rsi
cmpq -0xf8(%rbp), %rsi
jne 0x52af
movq -0xe8(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
leaq -0xa0(%rbp), %rdi
callq 0xa4f6
leaq -0x130(%rbp), %rdi
callq 0x9a78
movq -0x100(%rbp), %rsi
cmpq -0xf8(%rbp), %rsi
jne 0x52ee
movq -0xe8(%rbp), %rax
movq -0x8(%rax), %rsi
movl $0x1f8, %eax            # imm = 0x1F8
addq %rax, %rsi
addq $-0x38, %rsi
movq %r13, %rdi
callq 0xa4f6
leaq -0x130(%rbp), %rdi
callq 0x9a78
movq %rbx, %rdi
movq %r13, %rsi
callq 0xa4f6
movq %r14, %rdi
leaq -0xa0(%rbp), %rsi
callq 0xa4f6
leaq -0x1e0(%rbp), %rax
movq %rax, -0x1f0(%rbp)
movq -0xd8(%rbp), %rsi
movq -0xd0(%rbp), %rdx
addq %rsi, %rdx
leaq -0x1f0(%rbp), %r12
movq %r12, %rdi
callq 0x929a
movq %r15, %rdi
movq %rbx, %rsi
movq %r14, %rdx
movq %r12, %rcx
callq 0x731c
leaq -0x130(%rbp), %rdi
movq %r15, %rsi
callq 0x9d82
movq %r15, %rdi
callq 0xa0be
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x5398
movq -0x1e0(%rbp), %rsi
incq %rsi
callq 0x3300
movq %r14, %rdi
callq 0xa0be
movq %rbx, %rdi
callq 0xa0be
movq %r13, %rdi
callq 0xa0be
leaq -0xa0(%rbp), %rdi
callq 0xa0be
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x53de
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x160(%rbp), %rax
cmpq -0x180(%rbp), %rax
jne 0x523f
movq -0x100(%rbp), %rsi
movq -0xf8(%rbp), %rax
movq %rsi, %rcx
cmpq %rax, %rsi
jne 0x5418
movq -0xe8(%rbp), %rdx
movl $0x1f8, %ecx            # imm = 0x1F8
addq -0x8(%rdx), %rcx
movl -0x34(%rcx), %edx
imull -0x38(%rcx), %edx
cmpl $0x1, %edx
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
movq -0x138(%rbp), %r14
jne 0x545a
cmpq %rax, %rsi
jne 0x5448
movq -0xe8(%rbp), %rax
movl $0x1f8, %esi            # imm = 0x1F8
addq -0x8(%rax), %rsi
addq $-0x38, %rsi
leaq -0xa0(%rbp), %rdi
callq 0xb700
jmp 0x547f
cmpq %rax, %rsi
jne 0x546f
movq -0xe8(%rbp), %rax
movl $0x1f8, %esi            # imm = 0x1F8
addq -0x8(%rax), %rsi
addq $-0x38, %rsi
leaq -0xa0(%rbp), %rdi
callq 0xb5ea
leaq -0x68(%rbp), %rdi
leaq -0xa0(%rbp), %rbx
movq %rbx, %rsi
callq 0x3360
movq (%rbx), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x54b0
movq -0x90(%rbp), %rsi
incq %rsi
callq 0x3300
leaq 0x10(%r14), %rax
movq %rax, (%r14)
movq -0x68(%rbp), %rcx
cmpq %r13, %rcx
je 0x54cd
movq %rcx, (%r14)
movq -0x58(%rbp), %rax
movq %rax, 0x10(%r14)
jmp 0x54d5
movups (%r13), %xmm0
movups %xmm0, (%rax)
movq -0x60(%rbp), %rax
movq %rax, 0x8(%r14)
movq %r13, -0x68(%rbp)
movq $0x0, -0x60(%rbp)
movb $0x0, -0x58(%rbp)
movq 0x10adc(%rip), %rsi     # 0x15fd0
leaq -0x580(%rbp), %rdi
callq 0x3400
leaq -0x508(%rbp), %rdi
callq 0x3120
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x5521
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x68(%rbp), %rdi
cmpq %r13, %rdi
je 0x5536
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x130(%rbp), %rdi
callq 0x8f84
leaq -0x190(%rbp), %rdi
callq 0x90e4
movq %r14, %rax
addq $0x6e8, %rsp            # imm = 0x6E8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0x5565
movq %rax, %r14
jmp 0x5989
jmp 0x5780
jmp 0x5695
jmp 0x5773
movq %rax, %r14
jmp 0x59de
jmp 0x55da
jmp 0x58bd
movq %rax, %r14
movq -0xa0(%rbp), %rdi
leaq -0x90(%rbp), %rax
cmpq %rax, %rdi
je 0x58c0
movq -0x90(%rbp), %rsi
jmp 0x57b1
jmp 0x58bd
jmp 0x58bd
movq %rax, %r14
movq -0x250(%rbp), %rdi
cmpq %rbx, %rdi
je 0x58c0
movq -0x240(%rbp), %rsi
jmp 0x57b1
movq %rax, %r14
leaq -0xa0(%rbp), %rdi
callq 0xa0be
jmp 0x58c0
jmp 0x58bd
movq %rax, %r14
jmp 0x5672
movq %rax, %r14
jmp 0x5666
movq %rax, %r14
jmp 0x565a
movq %rax, %r14
jmp 0x564e
movq %rax, %r14
jmp 0x5642
movq %rax, %r14
jmp 0x5620
movq %rax, %r14
leaq -0x3c8(%rbp), %rdi
callq 0xa0be
movq -0x1f0(%rbp), %rdi
leaq -0x1e0(%rbp), %rax
cmpq %rax, %rdi
je 0x5642
movq -0x1e0(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x698(%rbp), %rdi
callq 0xa0be
leaq -0x6d0(%rbp), %rdi
callq 0xa0be
leaq -0x400(%rbp), %rdi
callq 0xa0be
leaq -0xa0(%rbp), %rdi
callq 0xa0be
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x58c0
movq -0xc8(%rbp), %rsi
jmp 0x57b1
movq %rax, %r14
jmp 0x5787
movq %rax, %r14
movq -0x270(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5783
movq -0x260(%rbp), %rsi
jmp 0x5767
jmp 0x5780
movq %rax, %r14
movq -0x290(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5783
movq -0x280(%rbp), %rsi
jmp 0x5767
jmp 0x5780
movq %rax, %r14
movq -0x2b0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5783
movq -0x2a0(%rbp), %rsi
jmp 0x5767
jmp 0x5780
movq %rax, %r14
movq -0x2d0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5783
movq -0x2c0(%rbp), %rsi
jmp 0x5767
jmp 0x5780
movq %rax, %r14
movq -0x2f0(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5783
movq -0x2e0(%rbp), %rsi
jmp 0x5767
jmp 0x5780
movq %rax, %r14
movq -0x310(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5783
movq -0x300(%rbp), %rsi
jmp 0x5767
jmp 0x5780
movq %rax, %r14
movq -0x330(%rbp), %rdi
cmpq %rbx, %rdi
je 0x5783
movq -0x320(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x5783
jmp 0x5780
movq %rax, %r14
jmp 0x59a8
jmp 0x58bd
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x59a8
movq %rax, %r14
movq -0x1d0(%rbp), %rdi
leaq -0x1c0(%rbp), %rax
cmpq %rax, %rdi
je 0x58c0
movq -0x1c0(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x58c0
jmp 0x58bd
movq %rax, %r14
leaq -0xd8(%rbp), %rdi
callq 0xa0be
jmp 0x57d7
movq %rax, %r14
movq -0x230(%rbp), %rdi
leaq -0x220(%rbp), %rax
cmpq %rax, %rdi
je 0x5803
movq -0x220(%rbp), %rsi
incq %rsi
callq 0x3300
jmp 0x5803
jmp 0x58bd
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
leaq -0x628(%rbp), %rdi
callq 0xa0be
jmp 0x585a
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x587e
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x588a
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x5872
jmp 0x5842
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x5866
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
leaq -0x660(%rbp), %rdi
callq 0xa0be
leaq -0x3c8(%rbp), %rdi
callq 0xa0be
leaq -0x400(%rbp), %rdi
callq 0xa0be
leaq -0xa0(%rbp), %rdi
callq 0xa0be
movq -0x1b0(%rbp), %rdi
leaq -0x1a0(%rbp), %rax
cmpq %rax, %rdi
je 0x5989
movq -0x1a0(%rbp), %rsi
jmp 0x5981
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x595b
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x5989
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x5943
movq %rax, %r14
jmp 0x592f
movq %rax, %r14
leaq -0x3c8(%rbp), %rdi
callq 0xa0be
jmp 0x590d
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x5967
movq %rax, %r14
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
jmp 0x594f
movq %rax, %r14
movq -0x210(%rbp), %rdi
leaq -0x200(%rbp), %rax
cmpq %rax, %rdi
je 0x592f
movq -0x200(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x58(%rbp), %r13
leaq -0x38(%rbp), %r15
leaq -0x5b8(%rbp), %rdi
callq 0xa0be
leaq -0x5f0(%rbp), %rdi
callq 0xa0be
leaq -0x400(%rbp), %rdi
callq 0xa0be
leaq -0xa0(%rbp), %rdi
callq 0xa0be
movq -0xd8(%rbp), %rdi
leaq -0xc8(%rbp), %rax
cmpq %rax, %rdi
je 0x5989
movq -0xc8(%rbp), %rsi
incq %rsi
callq 0x3300
movq 0x10640(%rip), %rsi     # 0x15fd0
leaq -0x580(%rbp), %rdi
callq 0x3400
leaq -0x508(%rbp), %rdi
callq 0x3120
movq -0x48(%rbp), %rdi
cmpq %r15, %rdi
je 0x59bd
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x3300
movq -0x68(%rbp), %rdi
cmpq %r13, %rdi
je 0x59d2
movq -0x58(%rbp), %rsi
incq %rsi
callq 0x3300
leaq -0x130(%rbp), %rdi
callq 0x8f84
leaq -0x190(%rbp), %rdi
callq 0x90e4
movq %r14, %rdi
callq 0x3520