// File: /workspace/github_cpp_makefile_star2_O1/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, %r12
movl %r8d, %ebp
movq %rcx, %r15
movl %edx, %r13d
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)
movl $0x0, 0x34(%rdi)
movups %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
movq %rsi, %rdi
callq 0xd1e5
leaq 0x18(%rsp), %r14
movq %rax, (%r14)
movq %r14, %rdi
callq 0xfa31
movq (%r14), %rdi
cmpb $0x0, (%rdi)
je 0x1021d
leaq 0x1c988(%rip), %rsi     # 0x2ca9b
callq 0x4440
testl %eax, %eax
je 0x1021d
movl %r13d, 0x4(%rsp)
movl %ebp, (%rsp)
movq %r12, 0x10(%rsp)
leaq 0x28(%rbx), %rax
movq %rax, 0x28(%rsp)
leaq 0x24(%rbx), %rax
movq %rax, 0x8(%rsp)
leaq 0x18(%rsp), %rbp
xorl %r13d, %r13d
leaq 0x1c94d(%rip), %r12     # 0x2ca9b
movq 0x18(%rsp), %r14
movb (%r14), %al
andb $-0x2, %al
cmpb $0x3a, %al
jne 0x101a2
incq %r14
movq %r14, %rdi
callq 0xd1e5
movq %rax, %r14
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x10179
callq 0x43d0
movq %r14, 0x18(%rsp)
movq %rbp, %rdi
callq 0xfa31
movq 0x18(%rsp), %rdi
cmpb $0x0, (%rdi)
je 0x10220
movq %r12, %rsi
callq 0x4440
testl %eax, %eax
jne 0x1014e
jmp 0x10220
movq %r14, %rdi
callq 0xf878
testb %al, %al
je 0x101c4
movl $0x2, 0x24(%rbx)
movq %r14, %rdi
callq 0x43b0
movsd %xmm0, 0x38(%rbx)
jmp 0x10212
leaq 0x1c8c7(%rip), %rsi     # 0x2ca92
movq %r14, %rdi
callq 0xd2a8
testb %al, %al
jne 0x101fd
leaq 0x1c8b7(%rip), %rsi     # 0x2ca95
movq %r14, %rdi
callq 0xd2a8
testb %al, %al
jne 0x101fd
leaq 0x1c8a7(%rip), %rsi     # 0x2ca98
movq %r14, %rdi
callq 0xd2a8
testb %al, %al
je 0x10271
movl $0x2, 0x24(%rbx)
movabsq $0x400921fb54442d18, %rax # imm = 0x400921FB54442D18
movq %rax, 0x38(%rbx)
xorps %xmm0, %xmm0
movq 0x28(%rsp), %rax
movups %xmm0, (%rax)
xorl %r13d, %r13d
xorl %r14d, %r14d
movq %rbx, %rdi
callq 0xdc5e
movq 0x18(%rsp), %rdi
testq %rdi, %rdi
je 0x1023a
callq 0x43d0
testq %r13, %r13
je 0x10247
movq %r13, %rdi
callq 0x43d0
testq %r14, %r14
je 0x10262
movq %r14, %rdi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x43d0
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 0x10(%rsp), %rcx
callq 0xfd52
movl %eax, %r12d
movq %r14, %rdi
xorl %esi, %esi
movl 0x4(%rsp), %r13d
movl %r13d, %edx
movq %r15, %rcx
callq 0xfb1e
cmpl %eax, %r12d
setl %al
testl %r13d, %r13d
setg %cl
testb %cl, %al
je 0x102db
movl 0x4(%rsp), %eax
movq %rax, 0x20(%rsp)
xorl %r13d, %r13d
movq (%r15,%r13,8), %r12
movq (%r12), %rsi
movq %r14, %rdi
callq 0xd2a8
testb %al, %al
jne 0x10550
incq %r13
cmpq %r13, 0x20(%rsp)
jne 0x102b9
movq 0x10(%rsp), %r12
movq 0x18(%rsp), %r14
movslq %ebp, %rax
movzbl (%r14,%rax), %eax
cmpl $0x28, %eax
je 0x10340
testl %eax, %eax
je 0x103a9
movq %r14, %rdi
movl %ebp, %esi
movl (%rsp), %edx
movq %r12, %rcx
callq 0xfd52
testl %eax, %eax
je 0x10387
movl %eax, %r13d
movq %r14, %rdi
movl %ebp, %esi
movl 0x4(%rsp), %edx
movq %r15, %rcx
callq 0xfb1e
cmpl %eax, %r13d
jl 0x10387
addl %ebp, %r13d
movslq %r13d, %rax
addq %r14, %rax
movzbl (%rax), %ecx
cmpl $0x20, %ecx
jne 0x10354
incl %r13d
incq %rax
jmp 0x10330
movq %r14, %rdi
movl %ebp, %esi
callq 0xf8bc
movl %eax, %r13d
cmpl $-0x1, %eax
jne 0x1038a
jmp 0x103a9
leal -0x3a(%rcx), %eax
cmpl $0x2, %eax
jb 0x10387
cmpl $0x28, %ecx
jne 0x10395
movq %r14, %rdi
movl %r13d, %esi
callq 0xf8bc
cmpl $-0x1, %eax
je 0x103a9
movl %eax, %ebp
leaq 0x18(%rsp), %rdi
movl %r13d, %esi
movl $0x3b, %edx
callq 0xd208
incl %ebp
movl %ebp, %r13d
incl %r13d
movl %r13d, %ebp
jmp 0x102e0
leaq 0x18(%rsp), %rdi
movl %r13d, %esi
movl $0x3a, %edx
callq 0xd208
jmp 0x1038a
leaq 0x18(%rsp), %rdi
movl 0x4(%rsp), %r13d
movl %r13d, %esi
movq %r15, %rdx
movl (%rsp), %ebp
movl %ebp, %ecx
movq %r12, %r8
callq 0xff0d
testl %r13d, %r13d
je 0x103e0
leaq 0x18(%rsp), %rdi
movl %r13d, %esi
movq %r15, %rdx
movl %ebp, %ecx
movq %r12, %r8
callq 0xfdef
leaq 0x18(%rsp), %r14
movq %r14, %rdi
callq 0xf829
movq (%r14), %r14
movq %r14, %rdi
movl $0x1, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x104a1
movl %eax, %r12d
leal -0x1(%r12), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xd174
movl %r13d, %ebp
movq %rax, %r13
incl %r12d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r12d, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x1, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl %ebp, %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %rbp
movq %rbp, %r9
callq 0x10098
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq %rbp, %r9
callq 0x10098
jmp 0x10613
movq %r14, %rdi
movl $0x4, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x10569
movl %eax, %r12d
leal -0x1(%r12), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xd174
movq %rax, %r13
incl %r12d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r12d, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x4, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl %ebp, %r8d
movq 0x10(%rsp), %rbp
movq %rbp, %r9
callq 0x10098
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq %rbp, %r9
callq 0x10098
jmp 0x10613
movq %r12, 0x40(%rbx)
movq 0x8(%r12), %rax
movq %rax, 0x48(%rbx)
movl $0x3, 0x24(%rbx)
jmp 0x10212
movq %r14, %rdi
movl $0x5, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x1061c
movl %eax, %r12d
leal -0x1(%r12), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xd174
movq %rax, %r13
incl %r12d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r12d, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x5, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl 0x4(%rsp), %ebp
movl %ebp, %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl %ebp, %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq %r12, 0x30(%rbx)
jmp 0x10223
cmpb $0x2d, (%r14)
jne 0x10688
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl $0x1, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x6, (%rax)
movq 0x28(%rsp), %rax
movq $0x0, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq %r12, 0x30(%rbx)
xorl %r13d, %r13d
jmp 0x10223
movb $0x1, %al
movl %eax, 0x30(%rsp)
xorl %r12d, %r12d
movq 0x18(%rsp), %r14
movslq %r12d, %rbp
movzbl (%r14,%rbp), %eax
cmpl $0x28, %eax
je 0x106f3
testl %eax, %eax
je 0x10854
movq %r14, %rdi
movl %r12d, %esi
movl (%rsp), %edx
movq 0x10(%rsp), %rcx
callq 0xfd52
testl %eax, %eax
je 0x1084c
leal (%rax,%r12), %r13d
movslq %r13d, %rdx
leaq (%r14,%rdx), %rcx
movq %r12, 0x20(%rsp)
leal (%rax,%r12), %esi
decl %esi
movzbl (%r14,%rdx), %eax
cmpl $0x20, %eax
jne 0x1070f
incq %rdx
incl %r13d
incq %rcx
incl %esi
jmp 0x106dc
movq %r14, %rdi
movl %r12d, %esi
callq 0xf8bc
movl %eax, %r12d
cmpl $-0x1, %eax
jne 0x1084c
jmp 0x10854
cmpl $0x3b, %eax
je 0x1072d
cmpl $0x3a, %eax
jne 0x10778
movzbl (%rcx), %eax
testl %eax, %eax
je 0x10790
cmpl $0x28, %eax
je 0x10782
incl %r13d
incq %rcx
jmp 0x10719
incl %esi
cmpb $0x28, (%rcx)
leaq 0x1(%rcx), %rcx
jne 0x1072d
movq %r14, %rdi
callq 0xf8bc
cmpl $-0x1, %eax
je 0x10778
movl %eax, %ebp
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movl %eax, %esi
movl $0x29, %edx
callq 0xd208
movq %r14, %rdi
movq 0x20(%rsp), %rsi
movl $0x28, %edx
callq 0xd208
addl $0x2, %ebp
movl %ebp, %r12d
jmp 0x1084c
movq 0x20(%rsp), %r12
jmp 0x1084c
movq %r14, %rdi
movl %r13d, %esi
callq 0xf8bc
movl %eax, %r13d
cmpl $-0x1, %r13d
je 0x10854
movslq %r13d, %r13
movzbl 0x1(%r14,%r13), %eax
incq %r13
cmpl $0x28, %eax
je 0x107c8
testl %eax, %eax
je 0x107e9
movq %r14, %rdi
movl %r13d, %esi
movl (%rsp), %edx
movq 0x10(%rsp), %rcx
callq 0xfd52
testl %eax, %eax
je 0x1079a
jmp 0x107e9
movq %r14, %rdi
movl %r13d, %esi
callq 0xf8bc
movl %eax, %r13d
cmpl $-0x1, %eax
jne 0x1079a
movl $0xffffffff, %r13d      # imm = 0xFFFFFFFF
movl $0x0, 0x30(%rsp)
cmpb $0x0, 0x30(%rsp)
movq 0x20(%rsp), %rsi
je 0x10854
cmpl %esi, %r13d
jle 0x1081c
movslq %r13d, %r13
cmpb $0x29, -0x1(%r14,%r13)
je 0x10817
decq %r13
cmpq %rbp, %r13
jg 0x107fd
movq 0x20(%rsp), %rsi
movl %esi, %r13d
jmp 0x1081c
movq 0x20(%rsp), %rsi
leal 0x1(%rsi), %eax
cmpl %eax, %r13d
jle 0x10854
leaq 0x18(%rsp), %r14
movq %r14, %rdi
movl $0x28, %edx
callq 0xd208
incl %r13d
movq %r14, %rdi
movl %r13d, %esi
movl $0x29, %edx
callq 0xd208
movl %r13d, %r12d
incl %r12d
jmp 0x10691
movq 0x18(%rsp), %rax
movq %rax, %r13
movb (%rax), %cl
testb %cl, %cl
je 0x108a8
xorl %eax, %eax
leaq 0x18(%rsp), %r14
movslq %eax, %r12
movb 0x1(%r13,%r12), %dl
testb %dl, %dl
je 0x108a8
cmpb $0x29, %cl
jne 0x10895
cmpb $0x28, %dl
jne 0x10895
incq %r12
movq %r14, %rdi
movl %r12d, %esi
movl $0x2a, %edx
callq 0xd208
movl %r12d, %eax
cltq
movq 0x18(%rsp), %r13
movb 0x1(%r13,%rax), %cl
incq %rax
testb %cl, %cl
jne 0x10869
cmpb $0x28, (%r13)
jne 0x108f8
movq %r13, %rdi
xorl %esi, %esi
callq 0xf8bc
movl %eax, %ebp
movq %r13, %rdi
callq 0x4170
decl %eax
cmpl %eax, %ebp
jne 0x108f8
leaq 0x1c180(%rip), %rdx     # 0x2ca50
movq %r13, %rbp
movq %r13, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10b05
movq 0x8(%rsp), %rax
movl $0x11, (%rax)
jmp 0x10d91
movq %r13, %rbp
movq %r13, %rdi
movl $0x7, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x109a9
movl %eax, %r14d
leal -0x1(%r14), %edx
movq %rbp, %rdi
xorl %esi, %esi
callq 0xd174
movq %rax, %r13
incl %r14d
movq %rbp, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %rbp, %rdi
movl %r14d, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x7, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
jmp 0x10613
movq %rbp, %rdi
movl $0x8, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x10a57
movl %eax, %r14d
leal -0x1(%r14), %edx
movq %rbp, %rdi
xorl %esi, %esi
callq 0xd174
movq %rax, %r13
incl %r14d
movq %rbp, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %rbp, %rdi
movl %r14d, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x8, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
jmp 0x10613
movq %rbp, %rdi
movl $0x9, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x10b31
movl %eax, %r14d
leal -0x1(%r14), %edx
movq %rbp, %rdi
xorl %esi, %esi
callq 0xd174
movq %rax, %r13
incl %r14d
movq %rbp, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %rbp, %rdi
movl %r14d, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x9, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
jmp 0x10613
leaq 0x1bf50(%rip), %rdx     # 0x2ca5c
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10bc4
movq 0x8(%rsp), %rax
movl $0xc, (%rax)
jmp 0x10d91
movq %rbp, %rdi
movl $0xb, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x10c33
movl %eax, %r12d
leal -0x1(%r12), %edx
movq %rbp, %rdi
xorl %esi, %esi
callq 0xd174
movq %rax, %r13
leal 0x1(%r12), %eax
movl %eax, 0x20(%rsp)
movq %rbp, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %rbp, %rdi
movl 0x20(%rsp), %esi
callq 0xd174
movq %rax, %r14
subl $0x1, %r12d
jb 0x10bf0
movslq %r12d, %rax
cmpb $0x29, (%rbp,%rax)
jne 0x10bf0
movq 0x8(%rsp), %rax
movl $0xb, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
jmp 0x10bfe
leaq 0x1be9e(%rip), %rdx     # 0x2ca69
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10ce1
movq 0x8(%rsp), %rax
movl $0xd, (%rax)
jmp 0x10d91
movq 0x8(%rsp), %rax
movl $0xa, (%rax)
xorl %r12d, %r12d
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
jmp 0x10613
movq %rbp, %rdi
movl $0x15, %esi
callq 0xf945
cmpl $-0x1, %eax
je 0x10d09
movl %eax, %r14d
leal -0x1(%r14), %edx
movq %rbp, %rdi
xorl %esi, %esi
callq 0xd174
movq %rax, %r13
incl %r14d
movq %rbp, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %rbp, %rdi
movl %r14d, %esi
callq 0xd174
movq %rax, %r14
movq 0x8(%rsp), %rax
movl $0x15, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r13, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq 0x28(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
jmp 0x10613
leaq 0x1bd8b(%rip), %rdx     # 0x2ca73
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10d20
movq 0x8(%rsp), %rax
movl $0xe, (%rax)
jmp 0x10d91
xorps %xmm0, %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
movl $0x0, 0x10(%rax)
jmp 0x1021d
leaq 0x1bd47(%rip), %rdx     # 0x2ca6e
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10d45
movq 0x8(%rsp), %rax
movl $0xf, (%rax)
jmp 0x10d91
leaq 0x1bd08(%rip), %rdx     # 0x2ca54
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10d6a
movq 0x8(%rsp), %rax
movl $0x10, (%rax)
jmp 0x10d91
leaq 0x1bce7(%rip), %rdx     # 0x2ca58
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10e1a
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
movq %rbp, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %rbp, %rdi
movl $0x4, %esi
callq 0xd174
movq %rax, %r14
movq 0x28(%rsp), %rax
movq $0x0, (%rax)
movl $0x58, %edi
callq 0x4310
movq %rax, %r12
movq %rax, %rdi
movq %r14, %rsi
movl 0x4(%rsp), %edx
movq %r15, %rcx
movl (%rsp), %r8d
movq 0x10(%rsp), %r9
callq 0x10098
movq %r12, 0x30(%rbx)
cmpl $0x16, 0x24(%rbx)
jne 0x10680
movq %r12, %rdi
callq 0x110ec
movq 0x50(%rbx), %rcx
cmpl 0x70(%rcx), %eax
je 0x10680
xorps %xmm0, %xmm0
movq 0x8(%rsp), %rax
movups %xmm0, (%rax)
movl $0x0, 0x10(%rax)
jmp 0x10680
leaq 0x1bc38(%rip), %rdx     # 0x2ca59
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10e3f
movq 0x8(%rsp), %rax
movl $0xf, (%rax)
jmp 0x10e62
leaq 0x1bc1a(%rip), %rdx     # 0x2ca60
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10e7a
movq 0x8(%rsp), %rax
movl $0x10, (%rax)
movq %rbp, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %rbp, %rdi
movl $0x3, %esi
jmp 0x10da4
leaq 0x1bbe7(%rip), %rdx     # 0x2ca68
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10e9f
movq 0x8(%rsp), %rax
movl $0x13, (%rax)
jmp 0x10f0c
leaq 0x1bbcc(%rip), %rdx     # 0x2ca72
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10ec4
movq 0x8(%rsp), %rax
movl $0x12, (%rax)
jmp 0x10f0c
leaq 0x1bba2(%rip), %rdx     # 0x2ca6d
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10ee9
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
jmp 0x10f0c
leaq 0x1bb73(%rip), %rdx     # 0x2ca63
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10f24
movq 0x8(%rsp), %rax
movl $0xa, (%rax)
movq %rbp, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %rbp, %rdi
movl $0x5, %esi
jmp 0x10da4
leaq 0x1bb4c(%rip), %rdx     # 0x2ca77
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10f49
movq 0x8(%rsp), %rax
movl $0x13, (%rax)
jmp 0x10f91
leaq 0x1bb2e(%rip), %rdx     # 0x2ca7e
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10f6e
movq 0x8(%rsp), %rax
movl $0x12, (%rax)
jmp 0x10f91
leaq 0x1bb10(%rip), %rdx     # 0x2ca85
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10fa9
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
movq %rbp, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %rbp, %rdi
movl $0x7, %esi
jmp 0x10da4
leaq 0x1badc(%rip), %rdx     # 0x2ca8c
movq %rbp, %rdi
movl $0x1, %esi
callq 0xd2ee
testb %al, %al
je 0x10fe4
movq 0x8(%rsp), %rax
movl $0x14, (%rax)
movq %rbp, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %rbp, %rdi
movl $0x6, %esi
jmp 0x10da4
cmpl $0x0, (%rsp)
jle 0x1104e
movl (%rsp), %eax
movq %rax, 0x30(%rsp)
xorl %r13d, %r13d
movl $0xffffffff, 0x20(%rsp) # imm = 0xFFFFFFFF
xorl %r12d, %r12d
movq 0x10(%rsp), %rax
movq (%rax,%r13,8), %rax
movq 0x80(%rax), %r14
movq %rbp, %rdi
movl $0x1, %esi
movq %r14, %rdx
callq 0xd2ee
testb %al, %al
je 0x11042
movq %r14, %rdi
callq 0x4170
cmpl %eax, %r12d
cmovgl %r12d, %eax
movl 0x20(%rsp), %ecx
cmovll %r13d, %ecx
movl %ecx, 0x20(%rsp)
movl %eax, %r12d
incq %r13
cmpq %r13, 0x30(%rsp)
jne 0x11000
jmp 0x11056
movl $0xffffffff, 0x20(%rsp) # imm = 0xFFFFFFFF
cmpl $0x0, 0x20(%rsp)
js 0x110aa
movl $0x16, 0x24(%rbx)
movl 0x20(%rsp), %r12d
movq 0x10(%rsp), %r13
movq (%r13,%r12,8), %rax
movq 0x80(%rax), %rdi
callq 0x4170
leal 0x1(%rax), %r14d
movq %rbp, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %rbp, %rdi
movl %r14d, %esi
callq 0xd174
movq %rax, %r14
movq (%r13,%r12,8), %rax
movq %rax, 0x50(%rbx)
jmp 0x10dac
xorl %r14d, %r14d
jmp 0x10dac
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
jmp 0x110d4
movq %rax, %rbx
movl $0x58, %esi
movq %r12, %rdi
callq 0x4320
movq %rbx, %rdi
callq 0x45c0