// File: /workspace/github_cpp_makefile_star2_O2/srajangarg[P]raytracer/src/core/mathexpr.cpp
// Function: ROperation::ROperation(char const*, int, RVar**, int, RFunction**)
ROperation::ROperation(const char*sp,int nvar,PRVar*ppvarp,int nfuncp,PRFunction*ppfuncp)
{
  ValC=ErrVal;mmb1=NULL;mmb2=NULL;pvar=NULL;op=ErrOp;pvarval=NULL;containfuncflag=0;pfunc=NULL;pinstr=NULL;pvals=NULL;ppile=NULL;pfuncpile=NULL;
  int i,j,k,l;signed char flag=1;
  char*s=CopyStr(sp),*s1=NULL,*s2=NULL;
  SimplifyStr(s);if(!s[0]||!strcmp(s,"Error")){goto fin;}
  while(s[0]==':'||s[0]==';'){
    s1=CopyStr(s+1);delete[]s;s=s1;s1=NULL;
    SimplifyStr(s);if(!s[0]||!strcmp(s,"Error")){goto fin;}
  }
  if(IsTNumeric(s)){op=Num;ValC=atof(s);mmb1=NULL;mmb2=NULL;goto fin;};
  if(EqStr(s,"pi")||EqStr(s,"PI")||EqStr(s,"Pi"))
    {op=Num;ValC=3.141592653589793238462643383279L;mmb1=NULL;mmb2=NULL;goto fin;};
	if(IsFunction(s,0,nfuncp,ppfuncp)<IsVar(s,0,nvar,ppvarp))
		for(i=0;i<nvar;i++)if(EqStr(s,(*(ppvarp+i))->name))
		{pvar=ppvarp[i];pvarval=pvar->pval;op=Var;mmb1=NULL;mmb2=NULL;goto fin;};
	for(k=0;s[k];k++){
    if(s[k]=='('){k=SearchCorOpenbracket(s,k);if(k==-1)break;continue;};
    if((l=IsFunction(s,k,nfuncp,ppfuncp))&&l>=IsVar(s,k,nvar,ppvarp)){
      i=k+l;while(s[i]==' ')i++;
      if(s[i]=='('){
				j=SearchCorOpenbracket(s,i);
				if(j!=-1){InsStr(s,i,';');k=j+1;}else break;
      }else if(s[i]!=':'&&s[i]!=';'){InsStr(s,i,':');k=i;}
    }
  }
	IsolateNumbers(s,nvar,ppvarp,nfuncp,ppfuncp);
	if(nvar)IsolateVars(s,nvar,ppvarp,nfuncp,ppfuncp);
  SupprSpaces(s);
  i=SearchOperator(s,Juxt);
  if(i!=-1){s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
  op=Juxt;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  i=SearchOperator(s,Add);
  if(i!=-1){s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
  op=Add;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  i=SearchOperator(s,Sub);
  if(i!=-1){
    s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
    op=Sub;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);
    mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  if(s[0]=='-'){s2=MidStr(s,1,strlen(s)-1);
  op=Opp;mmb1=NULL;
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  for(i=0;s[i];i++){
		if(s[i]=='('){i=SearchCorOpenbracket(s,i);if(i==-1)break;continue;};
		if(IsFunction(s,i,nfuncp,ppfuncp)){
			k=i+IsFunction(s,i,nfuncp,ppfuncp);while(s[k]==' ')k++;
			if(s[k]==';'){
				//	s=DelStr(s,k);
				j=k;while(s[j]!='(')j++;
				j=SearchCorOpenbracket(s,j);
				if(j!=-1){InsStr(s,j,')');InsStr(s,i,'(');i=j+2;}
			}else if(s[k]==':'){
				//	s=DelStr(s,k);
				for(j=k;s[j];j++)
					if(s[j]=='('){j=SearchCorOpenbracket(s,j);break;}
				if(j==-1)break;
				for(j++;s[j];j++){
					if(s[j]=='('){j=SearchCorOpenbracket(s,j);if(j==-1){flag=0;break;};continue;};
					if(IsFunction(s,j,nfuncp,ppfuncp))break;
				}
				if(flag==0){flag=1;break;}
				while(j>i&&s[j-1]!=')')j--;if(j<=i+1)break;
				InsStr(s,i,'(');InsStr(s,j+1,')');
				i=j+1;
			}
		}
  }
  for(i=0;s[i]&&s[i+1];i++)if(s[i]==')'&&s[i+1]=='(')
    InsStr(s,++i,'*');
  if(s[0]=='('&&SearchCorOpenbracket(s,0)==(int)strlen(s)-1){
    if(CompStr(s,1,"exp")){op=Exp;s2=MidStr(s,4,strlen(s)-2);}
    else if(CompStr(s,1,"abs")){op=Abs;s2=MidStr(s,4,strlen(s)-2);}
    else if(CompStr(s,1,"sin")){op=Sin;s2=MidStr(s,4,strlen(s)-2);}
    else if(CompStr(s,1,"cos")){op=Cos;s2=MidStr(s,4,strlen(s)-2);}
    else if(CompStr(s,1,"tan")){op=Tg;s2=MidStr(s,4,strlen(s)-2);}
    else if(CompStr(s,1,"log")){op=Ln;s2=MidStr(s,4,strlen(s)-2);}
    else if(CompStr(s,1,"atg")){op=Atan;s2=MidStr(s,4,strlen(s)-2);}
    else if(CompStr(s,1,"tg")){op=Tg;s2=MidStr(s,3,strlen(s)-2);}
    else if(CompStr(s,1,"ln")){op=Ln;s2=MidStr(s,3,strlen(s)-2);}
    else if(CompStr(s,1,"asin")){op=Asin;s2=MidStr(s,5,strlen(s)-2);}
    else if(CompStr(s,1,"acos")){op=Acos;s2=MidStr(s,5,strlen(s)-2);}
    else if(CompStr(s,1,"atan")){op=Atan;s2=MidStr(s,5,strlen(s)-2);}
    else if(CompStr(s,1,"sqrt")){op=Sqrt;s2=MidStr(s,5,strlen(s)-2);}
    else if(CompStr(s,1,"arcsin")){op=Asin;s2=MidStr(s,7,strlen(s)-2);}
    else if(CompStr(s,1,"arccos")){op=Acos;s2=MidStr(s,7,strlen(s)-2);}
    else if(CompStr(s,1,"arctan")){op=Atan;s2=MidStr(s,7,strlen(s)-2);}
    else if(CompStr(s,1,"arctg")){op=Atan;s2=MidStr(s,6,strlen(s)-2);}
    else {
			for(i=-1,k=0,j=0;j<nfuncp;j++)if(CompStr(s,1,ppfuncp[j]->name)&&k<(int)strlen(ppfuncp[j]->name)){k=strlen(ppfuncp[j]->name);i=j;}
			if(i>-1){
				op=Fun;s2=MidStr(s,strlen(ppfuncp[i]->name)+1,strlen(s)-2);
				pfunc=ppfuncp[i];
			}
		}
		mmb1=NULL;mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);
		if(op==Fun)if(mmb2->NMembers()!=pfunc->nvars){op=ErrOp;mmb1=NULL;mmb2=NULL;goto fin;}
    goto fin;
  };
  i=SearchOperator(s,Mult);
  if(i!=-1){s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
  op=Mult;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  i=SearchOperator(s,Div);
  if(i!=-1){s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
  op=Div;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  i=SearchOperator(s,Pow);
  if(i!=-1){s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
  op=Pow;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  i=SearchOperator(s,NthRoot);
  if(i!=-1){s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
  if(i==0||s[i-1]!=')')
    {op=Sqrt;mmb1=NULL;}else
      {op=NthRoot;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);};
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  i=SearchOperator(s,E10);
  if(i!=-1){s1=MidStr(s,0,i-1);s2=MidStr(s,i+1,strlen(s)-1);
  op=E10;mmb1=new ROperation(s1,nvar,ppvarp,nfuncp,ppfuncp);
  mmb2=new ROperation(s2,nvar,ppvarp,nfuncp,ppfuncp);goto fin;
  };
  op=ErrOp;mmb1=NULL;mmb2=NULL;
fin:
	BuildCode();
	delete[]s;if(s1!=NULL)delete[] s1;if(s2!=NULL)delete[]s2;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x38, %rsp
movq %r9, %r15
movl %r8d, %ebp
movq %rcx, %r13
movl %edx, 0x4(%rsp)
movq %rdi, %rbx
movabsq $0x7fefffffffffffff, %rax # imm = 0x7FEFFFFFFFFFFFFF
movq %rax, 0x38(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, (%rdi)
movups %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movups %xmm0, 0x24(%rdi)
andl $0x0, 0x34(%rdi)
movups %xmm0, 0x40(%rdi)
andq $0x0, 0x50(%rdi)
movq %rsi, %rdi
callq 0xbac0
leaq 0x20(%rsp), %r14
movq %rax, (%r14)
movq %r14, %rdi
callq 0xdb79
movq (%r14), %r14
movb (%r14), %r12b
testb %r12b, %r12b
je 0xe32c
leaq 0x13894(%rip), %rsi     # 0x21abb
movq %r14, %rdi
callq 0x4470
testl %eax, %eax
je 0xe32c
movq %r13, 0x10(%rsp)
movl %ebp, (%rsp)
movq %r15, 0x18(%rsp)
leaq 0x28(%rbx), %rax
movq %rax, 0x28(%rsp)
leaq 0x24(%rbx), %rax
movq %rax, 0x8(%rsp)
leaq 0x20(%rsp), %rbp
xorl %r15d, %r15d
leaq 0x13856(%rip), %r13     # 0x21abb
movl %r12d, %eax
andb $-0x2, %al
cmpb $0x3a, %al
jne 0xe2b1
leaq 0x1(%r14), %rdi
callq 0xbac0
movq %rax, %r12
movq %r14, %rdi
callq 0x43e0
movq %r12, 0x20(%rsp)
movq %rbp, %rdi
callq 0xdb79
movq 0x20(%rsp), %r14
movb (%r14), %r12b
testb %r12b, %r12b
je 0xe32f
movq %r14, %rdi
movq %r13, %rsi
callq 0x4470
testl %eax, %eax
jne 0xe265
jmp 0xe32f
movq %r14, %rdi
callq 0xda1f
testb %al, %al
je 0xe2d3
movl $0x2, 0x24(%rbx)
movq %r14, %rdi
callq 0x43c0
movsd %xmm0, 0x38(%rbx)
jmp 0xe321
leaq 0x137d8(%rip), %rsi     # 0x21ab2
movq %r14, %rdi
callq 0xbb58
testb %al, %al
jne 0xe30c
leaq 0x137c8(%rip), %rsi     # 0x21ab5
movq %r14, %rdi
callq 0xbb58
testb %al, %al
jne 0xe30c
leaq 0x137b8(%rip), %rsi     # 0x21ab8
movq %r14, %rdi
callq 0xbb58
testb %al, %al
je 0xe37d
movl $0x2, 0x24(%rbx)
movabsq $0x400921fb54442d18, %rax # imm = 0x400921FB54442D18
movq %rax, 0x38(%rbx)
xorps %xmm0, %xmm0
movq 0x28(%rsp), %rax
movups %xmm0, (%rax)
xorl %r15d, %r15d
xorl %ebp, %ebp
movq %rbx, %rdi
callq 0xc3d2
testq %r14, %r14
je 0xe346
movq %r14, %rdi
callq 0x43e0
testq %r15, %r15
je 0xe353
movq %r15, %rdi
callq 0x43e0
testq %rbp, %rbp
je 0xe36e
movq %rbp, %rdi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x43e0
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %ebp, %ebp
movq %r14, %rdi
xorl %esi, %esi
movl (%rsp), %edx
movq 0x18(%rsp), %rcx
callq 0xde8b
movl %eax, %r15d
movq %r14, %rdi
xorl %esi, %esi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
callq 0xdc64
cmpl %eax, %r15d
jge 0xe3fd
xorl %r15d, %r15d
movl 0x4(%rsp), %eax
testl %eax, %eax
movl $0x0, %ecx
cmovgl %eax, %ecx
movq %rcx, 0x30(%rsp)
cmpq %r15, 0x30(%rsp)
je 0xe3fd
movq 0x10(%rsp), %rax
movq (%rax,%r15,8), %r13
movq (%r13), %rsi
movq %r14, %rdi
callq 0xbb58
incq %r15
testb %al, %al
je 0xe3c2
movq %r13, 0x40(%rbx)
movq 0x8(%r13), %rax
movq %rax, 0x48(%rbx)
movl $0x3, 0x24(%rbx)
jmp 0xe321
movq 0x18(%rsp), %r13
cmpb $0x28, %r12b
je 0xe45c
movzbl %r12b, %eax
testl %eax, %eax
je 0xe4d0
movq %r14, %rdi
movl %ebp, %esi
movl (%rsp), %edx
movq %r13, %rcx
callq 0xde8b
testl %eax, %eax
je 0xe478
movl %eax, %r15d
movq %r14, %rdi
movl %ebp, %esi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
callq 0xdc64
cmpl %eax, %r15d
jl 0xe478
addl %ebp, %r15d
movslq %r15d, %rax
addq %r14, %rax
movzbl (%rax), %ecx
cmpl $0x20, %ecx
jne 0xe470
incl %r15d
incq %rax
jmp 0xe44c
movq %r14, %rdi
movl %ebp, %esi
callq 0xda55
movl %eax, %r15d
cmpl $-0x1, %eax
jne 0xe47b
jmp 0xe4d0
leal -0x3a(%rcx), %eax
cmpl $0x2, %eax
jae 0xe490
movl %ebp, %r15d
movslq %r15d, %rbp
movq 0x20(%rsp), %r14
movb 0x1(%r14,%rbp), %r12b
incq %rbp
jmp 0xe402
cmpl $0x28, %ecx
jne 0xe4be
movq %r14, %rdi
movl %r15d, %esi
callq 0xda55
cmpl $-0x1, %eax
je 0xe4d0
movl %eax, %ebp
leaq 0x20(%rsp), %rdi
movl %r15d, %esi
pushq $0x3b
popq %rdx
callq 0xbae3
incl %ebp
movl %ebp, %r15d
jmp 0xe47b
leaq 0x20(%rsp), %rdi
movl %r15d, %esi
pushq $0x3a
popq %rdx
callq 0xbae3
jmp 0xe47b
leaq 0x20(%rsp), %rdi
movl 0x4(%rsp), %r12d
movl %r12d, %esi
movq 0x10(%rsp), %r14
movq %r14, %rdx
movl (%rsp), %ebp
movl %ebp, %ecx
movq %r13, %r8
callq 0xe057
testl %r12d, %r12d
je 0xe50c
leaq 0x20(%rsp), %rdi
movl %r12d, %esi
movq %r14, %rdx
movl %ebp, %ecx
movq %r13, %r8
callq 0xdf30
leaq 0x20(%rsp), %r14
movq %r14, %rdi
callq 0xd9d0
movq (%r14), %r14
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xe5c8
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
incl %r13d
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r13d, %esi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x1, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl %r12d, %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r12
movq %r12, %r9
callq 0xe1ae
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq %r12, %r9
callq 0xe1ae
jmp 0xe71b
pushq $0x4
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xe674
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
incl %r13d
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r13d, %esi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x4, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl %r12d, %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r12
movq %r12, %r9
callq 0xe1ae
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq %r12, %r9
callq 0xe1ae
jmp 0xe71b
pushq $0x5
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xe724
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
incl %r13d
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r13d, %esi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x5, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl %r12d, %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r12
movq %r12, %r9
callq 0xe1ae
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq %r12, %r9
callq 0xe1ae
movq %r13, 0x30(%rbx)
jmp 0xe331
movb (%r14), %al
cmpb $0x2d, %al
jne 0xe78b
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x6, (%rax)
movq 0x28(%rsp), %rax
andq $0x0, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl %r12d, %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
movq %r13, 0x30(%rbx)
xorl %r15d, %r15d
jmp 0xe331
xorl %ebp, %ebp
cmpb $0x28, %al
je 0xe7e6
movzbl %al, %eax
testl %eax, %eax
je 0xe920
movq %r14, %rdi
movl %ebp, %esi
movl (%rsp), %edx
movq 0x18(%rsp), %rcx
callq 0xde8b
testl %eax, %eax
je 0xe7fb
movslq %ebp, %r12
leal (%rax,%rbp), %r15d
movslq %r15d, %rdx
leaq (%r14,%rdx), %rcx
incq %rcx
leal (%rax,%rbp), %esi
decl %esi
leaq (%r14,%rdx), %rax
movzbl (%r14,%rdx), %edi
cmpl $0x20, %edi
jne 0xe80d
incq %rdx
incl %r15d
incq %rcx
incl %esi
incq %rax
jmp 0xe7cc
movq %r14, %rdi
movl %ebp, %esi
callq 0xda55
movl %eax, %ebp
cmpl $-0x1, %eax
je 0xe920
movslq %ebp, %rbp
movq 0x20(%rsp), %r14
movb 0x1(%r14,%rbp), %al
incq %rbp
jmp 0xe78d
cmpl $0x3b, %edi
je 0xe830
cmpl $0x3a, %edi
jne 0xe7fb
testb %dil, %dil
je 0xe881
movzbl %dil, %eax
cmpl $0x28, %eax
je 0xe873
movb (%rcx), %dil
incl %r15d
incq %rcx
jmp 0xe817
incl %esi
cmpb $0x28, (%rax)
leaq 0x1(%rax), %rax
jne 0xe830
movq %r14, %rdi
callq 0xda55
cmpl $-0x1, %eax
je 0xe7fb
movl %eax, %r14d
leaq 0x20(%rsp), %r15
movq %r15, %rdi
movl %eax, %esi
pushq $0x29
popq %rdx
callq 0xbae3
movq %r15, %rdi
movl %ebp, %esi
pushq $0x28
popq %rdx
callq 0xbae3
addl $0x2, %r14d
movl %r14d, %ebp
jmp 0xe7fb
movq %r14, %rdi
movl %r15d, %esi
callq 0xda55
movl %eax, %r15d
cmpl $-0x1, %r15d
je 0xe920
movslq %r15d, %r15
movzbl 0x1(%r14,%r15), %eax
incq %r15
cmpl $0x28, %eax
je 0xe8b9
testl %eax, %eax
je 0xe8ce
movq %r14, %rdi
movl %r15d, %esi
movl (%rsp), %edx
movq 0x18(%rsp), %rcx
callq 0xde8b
testl %eax, %eax
je 0xe88b
jmp 0xe8ce
movq %r14, %rdi
movl %r15d, %esi
callq 0xda55
movl %eax, %r15d
cmpl $-0x1, %eax
jne 0xe88b
jmp 0xe920
cmpl %r15d, %ebp
movl %r15d, %r13d
cmovll %ebp, %r13d
cmpq %r12, %r15
jle 0xe8ed
cmpb $0x29, -0x1(%r14,%r15)
je 0xe8ea
decq %r15
jmp 0xe8d8
movl %r15d, %r13d
leal 0x1(%rbp), %eax
cmpl %eax, %r13d
jle 0xe920
leaq 0x20(%rsp), %r14
movq %r14, %rdi
movl %ebp, %esi
pushq $0x28
popq %rdx
callq 0xbae3
incl %r13d
movq %r14, %rdi
movl %r13d, %esi
pushq $0x29
popq %rdx
callq 0xbae3
movl %r13d, %ebp
jmp 0xe7fb
xorl %ebp, %ebp
leaq 0x20(%rsp), %r12
pushq $0x2a
popq %r15
movslq %ebp, %rax
addq %r14, %rax
movb (%rax), %cl
testb %cl, %cl
je 0xe967
incl %ebp
movslq %ebp, %rdx
movb (%r14,%rdx), %dl
testb %dl, %dl
je 0xe967
incq %rax
cmpb $0x29, %cl
jne 0xe931
cmpb $0x28, %dl
jne 0xe931
movq %r12, %rdi
movl %ebp, %esi
movl %r15d, %edx
callq 0xbae3
movq 0x20(%rsp), %r14
incl %ebp
jmp 0xe92b
cmpb $0x28, (%r14)
jne 0xe9b1
movq %r14, %rdi
xorl %esi, %esi
callq 0xda55
movl %eax, %ebp
movq %r14, %rdi
callq 0x4150
decl %eax
cmpl %eax, %ebp
jne 0xe9b1
leaq 0x130e2(%rip), %rdx     # 0x21a70
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xebb5
movq 0x8(%rsp), %rax
movl $0x11, (%rax)
jmp 0xee20
pushq $0x7
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xea5d
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
incl %r13d
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r13d, %esi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x7, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
jmp 0xe71b
pushq $0x8
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xeb09
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
incl %r13d
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r13d, %esi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x8, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
jmp 0xe71b
pushq $0x9
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xebdf
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
incl %r13d
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r13d, %esi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x9, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
jmp 0xe71b
leaq 0x12ec0(%rip), %rdx     # 0x21a7c
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xec68
movq 0x8(%rsp), %rax
movl $0xc, (%rax)
jmp 0xee20
pushq $0xb
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xecd5
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
leal 0x1(%r13), %ebp
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %ebp, %esi
callq 0xba50
movq %rax, %rbp
subl $0x1, %r13d
jb 0xec92
movl %r13d, %eax
cmpb $0x29, (%r14,%rax)
jne 0xec92
movq 0x8(%rsp), %rax
movl $0xb, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
jmp 0xeca0
leaq 0x12e1a(%rip), %rdx     # 0x21a89
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xed81
movq 0x8(%rsp), %rax
movl $0xd, (%rax)
jmp 0xee20
movq 0x8(%rsp), %rax
movl $0xa, (%rax)
xorl %r13d, %r13d
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
jmp 0xe71b
pushq $0x15
popq %rsi
movq %r14, %rdi
callq 0xdad8
cmpl $-0x1, %eax
je 0xeda4
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xba50
movq %rax, %r15
incl %r13d
movq %r14, %rdi
callq 0x4150
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r13d, %esi
callq 0xba50
movq %rax, %rbp
movq 0x8(%rsp), %rax
movl $0x15, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
movq 0x28(%rsp), %rax
movq %r13, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
jmp 0xe71b
leaq 0x12d0b(%rip), %rdx     # 0x21a93
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xedb5
movq 0x8(%rsp), %rax
movl $0xe, (%rax)
jmp 0xee20
movq 0x8(%rsp), %rax
andl $0x0, 0x10(%rax)
xorps %xmm0, %xmm0
jmp 0xe329
leaq 0x12cd2(%rip), %rdx     # 0x21a8e
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xedd8
movq 0x8(%rsp), %rax
movl $0xf, (%rax)
jmp 0xee20
leaq 0x12c95(%rip), %rdx     # 0x21a74
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xedfb
movq 0x8(%rsp), %rax
movl $0x10, (%rax)
jmp 0xee20
leaq 0x12c76(%rip), %rdx     # 0x21a78
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xeea1
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
movq %r14, %rdi
callq 0x4150
leal -0x2(%rax), %edx
pushq $0x4
popq %rsi
movq %r14, %rdi
callq 0xba50
movq %rax, %rbp
movq 0x28(%rsp), %rax
andq $0x0, (%rax)
pushq $0x58
popq %rdi
callq 0x4320
movq %rax, %r13
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x10(%rsp), %rcx
movl (%rsp), %r8d
movq 0x18(%rsp), %r9
callq 0xe1ae
movq %r13, 0x30(%rbx)
cmpl $0x16, 0x24(%rbx)
jne 0xe783
movq %r13, %rdi
callq 0xf126
movq 0x50(%rbx), %rcx
cmpl 0x70(%rcx), %eax
je 0xe783
xorps %xmm0, %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
andl $0x0, 0x10(%rax)
jmp 0xe783
leaq 0x12bd1(%rip), %rdx     # 0x21a79
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xeec4
movq 0x8(%rsp), %rax
movl $0xf, (%rax)
jmp 0xeee5
leaq 0x12bb5(%rip), %rdx     # 0x21a80
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xeef7
movq 0x8(%rsp), %rax
movl $0x10, (%rax)
movq %r14, %rdi
callq 0x4150
leal -0x2(%rax), %edx
pushq $0x3
jmp 0xee2d
leaq 0x12b8a(%rip), %rdx     # 0x21a88
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xef1a
movq 0x8(%rsp), %rax
movl $0x13, (%rax)
jmp 0xef81
leaq 0x12b71(%rip), %rdx     # 0x21a92
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xef3d
movq 0x8(%rsp), %rax
movl $0x12, (%rax)
jmp 0xef81
leaq 0x12b49(%rip), %rdx     # 0x21a8d
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xef60
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
jmp 0xef81
leaq 0x12b1c(%rip), %rdx     # 0x21a83
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xef93
movq 0x8(%rsp), %rax
movl $0xa, (%rax)
movq %r14, %rdi
callq 0x4150
leal -0x2(%rax), %edx
pushq $0x5
jmp 0xee2d
leaq 0x12afd(%rip), %rdx     # 0x21a97
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xefb6
movq 0x8(%rsp), %rax
movl $0x13, (%rax)
jmp 0xeffa
leaq 0x12ae1(%rip), %rdx     # 0x21a9e
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xefd9
movq 0x8(%rsp), %rax
movl $0x12, (%rax)
jmp 0xeffa
leaq 0x12ac5(%rip), %rdx     # 0x21aa5
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xf00c
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
movq %r14, %rdi
callq 0x4150
leal -0x2(%rax), %edx
pushq $0x7
jmp 0xee2d
leaq 0x12a99(%rip), %rdx     # 0x21aac
pushq $0x1
popq %rsi
movq %r14, %rdi
callq 0xbb9a
testb %al, %al
je 0xf03f
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
movq %r14, %rdi
callq 0x4150
leal -0x2(%rax), %edx
pushq $0x6
jmp 0xee2d
xorl %r13d, %r13d
movl (%rsp), %eax
testl %eax, %eax
movl $0x0, %ecx
cmovgl %eax, %ecx
movq %rcx, 0x30(%rsp)
pushq $-0x1
popq %r12
xorl %ebp, %ebp
cmpq %r13, 0x30(%rsp)
je 0xf09b
movq 0x18(%rsp), %rax
movq (%rax,%r13,8), %rax
movq 0x80(%rax), %r15
movq %r14, %rdi
pushq $0x1
popq %rsi
movq %r15, %rdx
callq 0xbb9a
testb %al, %al
je 0xf096
movq %r15, %rdi
callq 0x4150
cmpl %eax, %ebp
cmovgl %ebp, %eax
cmovll %r13d, %r12d
movl %eax, %ebp
incq %r13
jmp 0xf05a
testl %r12d, %r12d
js 0xf0e7
movl $0x16, 0x24(%rbx)
movl %r12d, %r15d
movq 0x18(%rsp), %r12
movq (%r12,%r15,8), %rax
movq 0x80(%rax), %rdi
callq 0x4150
leal 0x1(%rax), %ebp
movq %r14, %rdi
callq 0x4150
leal -0x2(%rax), %edx
movq %r14, %rdi
movl %ebp, %esi
callq 0xba50
movq %rax, %rbp
movq (%r12,%r15,8), %rax
movq %rax, 0x50(%rbx)
jmp 0xee39
xorl %ebp, %ebp
jmp 0xee39
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
jmp 0xf110
movq %rax, %rbx
pushq $0x58
popq %rsi
movq %r13, %rdi
callq 0x4330
movq %rbx, %rdi
callq 0x45c0