// File: /workspace/github_cpp_makefile_star2_O3/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)
movl $0x0, 0x34(%rdi)
movups %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
movq %rsi, %rdi
callq 0xce11
leaq 0x28(%rsp), %r14
movq %rax, (%r14)
movq %r14, %rdi
callq 0xf607
movq (%r14), %r14
movb (%r14), %r12b
testb %r12b, %r12b
je 0xfe0a
leaq 0x1bd56(%rip), %rsi     # 0x2ba5b
movq %r14, %rdi
callq 0x4430
testl %eax, %eax
je 0xfe0a
movq %r13, 0x18(%rsp)
movl %ebp, (%rsp)
movq %r15, 0x20(%rsp)
leaq 0x28(%rbx), %rax
movq %rax, 0x30(%rsp)
leaq 0x24(%rbx), %rax
movq %rax, 0x10(%rsp)
leaq 0x28(%rsp), %rbp
xorl %r15d, %r15d
leaq 0x1bd18(%rip), %r13     # 0x2ba5b
movl %r12d, %eax
andb $-0x2, %al
cmpb $0x3a, %al
jne 0xfd8f
leaq 0x1(%r14), %rdi
callq 0xce11
movq %rax, %r12
movq %r14, %rdi
callq 0x43c0
movq %r12, 0x28(%rsp)
movq %rbp, %rdi
callq 0xf607
movq 0x28(%rsp), %r14
movb (%r14), %r12b
testb %r12b, %r12b
je 0xfe0d
movq %r14, %rdi
movq %r13, %rsi
callq 0x4430
testl %eax, %eax
jne 0xfd43
jmp 0xfe0d
movq %r14, %rdi
callq 0xf45c
testb %al, %al
je 0xfdb1
movl $0x2, 0x24(%rbx)
movq %r14, %rdi
callq 0x43a0
movsd %xmm0, 0x38(%rbx)
jmp 0xfdff
leaq 0x1bc9a(%rip), %rsi     # 0x2ba52
movq %r14, %rdi
callq 0xced3
testb %al, %al
jne 0xfdea
leaq 0x1bc8a(%rip), %rsi     # 0x2ba55
movq %r14, %rdi
callq 0xced3
testb %al, %al
jne 0xfdea
leaq 0x1bc7a(%rip), %rsi     # 0x2ba58
movq %r14, %rdi
callq 0xced3
testb %al, %al
je 0xfe56
movl $0x2, 0x24(%rbx)
movabsq $0x400921fb54442d18, %rax # imm = 0x400921FB54442D18
movq %rax, 0x38(%rbx)
xorps %xmm0, %xmm0
movq 0x30(%rsp), %rax
movups %xmm0, (%rax)
xorl %r15d, %r15d
xorl %ebp, %ebp
movq %rbx, %rdi
callq 0xd888
movq %r14, %rdi
callq 0x43c0
testq %rbp, %rbp
je 0xfe2c
movq %rbp, %rdi
callq 0x43c0
testq %r15, %r15
je 0xfe47
movq %r15, %rdi
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x43c0
addq $0x38, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
xorl %r15d, %r15d
movq %r14, %rdi
xorl %esi, %esi
movl (%rsp), %edx
movq 0x20(%rsp), %rcx
callq 0xf928
movl %eax, 0x8(%rsp)
movq %r14, %rdi
xorl %esi, %esi
movl 0x4(%rsp), %ebp
movl %ebp, %edx
movq 0x18(%rsp), %r13
movq %r13, %rcx
callq 0xf6f4
cmpl %eax, 0x8(%rsp)
setl %al
testl %ebp, %ebp
setg %cl
testb %cl, %al
je 0xfeca
movl 0x4(%rsp), %eax
movq %rax, 0x8(%rsp)
xorl %ebp, %ebp
movq (%r13,%rbp,8), %r13
movq (%r13), %rsi
movq %r14, %rdi
callq 0xced3
testb %al, %al
jne 0x10147
incq %rbp
cmpq %rbp, 0x8(%rsp)
movq 0x18(%rsp), %r13
jne 0xfea2
movq 0x20(%rsp), %r13
cmpb $0x28, %r12b
je 0xff28
movzbl %r12b, %eax
testl %eax, %eax
je 0xff9f
movq %r14, %rdi
movl %r15d, %esi
movl (%rsp), %edx
movq %r13, %rcx
callq 0xf928
testl %eax, %eax
je 0xff44
movl %eax, %ebp
movq %r14, %rdi
movl %r15d, %esi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
callq 0xf6f4
cmpl %eax, %ebp
jl 0xff44
addl %r15d, %ebp
movslq %ebp, %rax
addq %r14, %rax
movzbl (%rax), %ecx
cmpl $0x20, %ecx
jne 0xff3c
incl %ebp
incq %rax
jmp 0xff19
movq %r14, %rdi
movl %r15d, %esi
callq 0xf4a0
movl %eax, %ebp
cmpl $-0x1, %eax
jne 0xff47
jmp 0xff9f
leal -0x3a(%rcx), %eax
cmpl $0x2, %eax
jae 0xff5c
movl %r15d, %ebp
movslq %ebp, %r15
movq 0x28(%rsp), %r14
movb 0x1(%r14,%r15), %r12b
incq %r15
jmp 0xfecf
cmpl $0x28, %ecx
jne 0xff8c
movq %r14, %rdi
movl %ebp, %esi
callq 0xf4a0
cmpl $-0x1, %eax
je 0xff9f
movl %eax, %r14d
leaq 0x28(%rsp), %rdi
movl %ebp, %esi
movl $0x3b, %edx
callq 0xce34
incl %r14d
movl %r14d, %ebp
jmp 0xff47
leaq 0x28(%rsp), %rdi
movl %ebp, %esi
movl $0x3a, %edx
callq 0xce34
jmp 0xff47
leaq 0x28(%rsp), %rdi
movl 0x4(%rsp), %r15d
movl %r15d, %esi
movq 0x18(%rsp), %r14
movq %r14, %rdx
movl (%rsp), %ebp
movl %ebp, %ecx
movq %r13, %r8
callq 0xfae3
testl %r15d, %r15d
je 0xffdb
leaq 0x28(%rsp), %rdi
movl %r15d, %esi
movq %r14, %rdx
movl %ebp, %ecx
movq %r13, %r8
callq 0xf9c5
leaq 0x28(%rsp), %r14
movq %r14, %rdi
callq 0xf40d
movq (%r14), %r14
movq %r14, %rdi
movl $0x1, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x10099
movl %eax, %r15d
leal -0x1(%r15), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
incl %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x1, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, %r12
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq %r13, %r9
callq 0xfc86
movq 0x30(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq %r13, %r9
callq 0xfc86
jmp 0x10218
movq %r14, %rdi
movl $0x4, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x1016f
movl %eax, %r15d
leal -0x1(%r15), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
incl %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x4, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, %r12
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq %r13, %r9
callq 0xfc86
movq 0x30(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq %r13, %r9
callq 0xfc86
jmp 0x10218
movq %r13, 0x40(%rbx)
movq 0x8(%r13), %rax
movq %rax, 0x48(%rbx)
movl $0x3, 0x24(%rbx)
xorps %xmm0, %xmm0
movq 0x30(%rsp), %rax
movups %xmm0, (%rax)
xorl %ebp, %ebp
xorl %r15d, %r15d
jmp 0x1021c
movq %r14, %rdi
movl $0x5, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x10232
movl %eax, %r15d
leal -0x1(%r15), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
incl %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x5, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, %r12
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq %r13, %r9
callq 0xfc86
movq 0x30(%rsp), %rax
movq %r12, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, %r12
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq %r13, %r9
callq 0xfc86
movq %r12, 0x30(%rbx)
movq %rbx, %rdi
callq 0xd888
testq %r14, %r14
jne 0xfe17
jmp 0xfe1f
movb (%r14), %al
cmpb $0x2d, %al
jne 0x102a3
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl $0x1, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x6, (%rax)
movq 0x30(%rsp), %rax
movq $0x0, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq %r13, %r9
callq 0xfc86
movq 0x8(%rsp), %rax
movq %rax, 0x30(%rbx)
jmp 0xfe0d
xorl %r15d, %r15d
cmpb $0x28, %al
je 0x10300
movzbl %al, %eax
testl %eax, %eax
je 0x10437
movq %r14, %rdi
movl %r15d, %esi
movl (%rsp), %edx
movq 0x20(%rsp), %rcx
callq 0xf928
testl %eax, %eax
je 0x10317
movslq %r15d, %r12
leal (%rax,%r15), %ebp
movslq %ebp, %rdx
leaq (%r14,%rdx), %rcx
incq %rcx
leal (%rax,%r15), %esi
decl %esi
leaq (%r14,%rdx), %rax
movzbl (%r14,%rdx), %edi
cmpl $0x20, %edi
jne 0x1032c
incq %rdx
incl %ebp
incq %rcx
incl %esi
incq %rax
jmp 0x102e7
movq %r14, %rdi
movl %r15d, %esi
callq 0xf4a0
movl %eax, %r15d
cmpl $-0x1, %eax
je 0x10437
movslq %r15d, %r15
movq 0x28(%rsp), %r14
movb 0x1(%r14,%r15), %al
incq %r15
jmp 0x102a6
cmpl $0x3b, %edi
je 0x1034e
cmpl $0x3a, %edi
jne 0x10317
testb %dil, %dil
je 0x103a0
movzbl %dil, %eax
cmpl $0x28, %eax
je 0x10394
movb (%rcx), %dil
incl %ebp
incq %rcx
jmp 0x10336
incl %esi
cmpb $0x28, (%rax)
leaq 0x1(%rax), %rax
jne 0x1034e
movq %r14, %rdi
callq 0xf4a0
cmpl $-0x1, %eax
je 0x10317
movl %eax, %ebp
leaq 0x28(%rsp), %r14
movq %r14, %rdi
movl %eax, %esi
movl $0x29, %edx
callq 0xce34
movq %r14, %rdi
movl %r15d, %esi
movl $0x28, %edx
callq 0xce34
addl $0x2, %ebp
movl %ebp, %r15d
jmp 0x10317
movq %r14, %rdi
movl %ebp, %esi
callq 0xf4a0
movl %eax, %ebp
cmpl $-0x1, %ebp
je 0x10437
movl %ebp, %r13d
movslq %ebp, %rbp
movzbl 0x1(%r14,%rbp), %eax
incq %rbp
cmpl $0x28, %eax
je 0x103d9
testl %eax, %eax
je 0x103ec
movq %r14, %rdi
movl %ebp, %esi
movl (%rsp), %edx
movq 0x20(%rsp), %rcx
callq 0xf928
testl %eax, %eax
je 0x103a9
jmp 0x103ec
movq %r14, %rdi
movl %ebp, %esi
callq 0xf4a0
movl %eax, %ebp
cmpl $-0x1, %eax
jne 0x103a9
jmp 0x10437
cmpl %r15d, %r13d
jge 0x10427
leal 0x1(%r15), %eax
cmpl %eax, %ebp
jle 0x10437
leaq 0x28(%rsp), %r14
movq %r14, %rdi
movl %r15d, %esi
movl $0x28, %edx
callq 0xce34
incl %ebp
movq %r14, %rdi
movl %ebp, %esi
movl $0x29, %edx
callq 0xce34
movl %ebp, %r15d
jmp 0x10317
cmpb $0x29, -0x1(%r14,%rbp)
je 0x103f1
decq %rbp
cmpq %r12, %rbp
jg 0x10427
movb (%r14), %al
testb %al, %al
je 0x104d1
xorl %ebp, %ebp
leaq 0x28(%rsp), %r15
movslq %ebp, %rsi
movb 0x1(%r14,%rsi), %cl
testb %cl, %cl
je 0x10485
incq %rsi
cmpb $0x29, %al
jne 0x1047b
cmpb $0x28, %cl
jne 0x1047b
movq %r15, %rdi
movl $0x2a, %edx
callq 0xce34
movq 0x28(%rsp), %r14
addl $0x2, %ebp
movslq %ebp, %rsi
jmp 0x1047d
movl %esi, %ebp
movb (%r14,%rsi), %al
testb %al, %al
jne 0x10449
cmpb $0x28, (%r14)
jne 0x104d1
movq %r14, %rdi
xorl %esi, %esi
callq 0xf4a0
movl %eax, %ebp
movq %r14, %rdi
callq 0x4170
decl %eax
cmpl %eax, %ebp
jne 0x104d1
leaq 0x1b564(%rip), %rdx     # 0x2ba10
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10702
movq 0x10(%rsp), %rax
movl $0x11, (%rax)
jmp 0x109b0
movq %r14, %rdi
movl $0x7, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x1058c
movl %eax, %r15d
leal -0x1(%r15), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
incl %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x7, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
movq 0x30(%rsp), %rax
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
jmp 0x108f2
movq %r14, %rdi
movl $0x8, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x10647
movl %eax, %r15d
leal -0x1(%r15), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
incl %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x8, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
movq 0x30(%rsp), %rax
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
jmp 0x108f2
movq %r14, %rdi
movl $0x9, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x1072e
movl %eax, %r15d
leal -0x1(%r15), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
incl %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x9, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
movq 0x30(%rsp), %rax
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
jmp 0x108f2
leaq 0x1b313(%rip), %rdx     # 0x2ba1c
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x107be
movq 0x10(%rsp), %rax
movl $0xc, (%rax)
jmp 0x109b0
movq %r14, %rdi
movl $0xb, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x1083c
movl %eax, %r13d
leal -0x1(%r13), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
leal 0x1(%r13), %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
subl $0x1, %r13d
jb 0x107ea
movl %r13d, %eax
cmpb $0x29, (%r14,%rax)
jne 0x107ea
movq 0x10(%rsp), %rax
movl $0xb, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
jmp 0x107fe
leaq 0x1b264(%rip), %rdx     # 0x2ba29
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10900
movq 0x10(%rsp), %rax
movl $0xd, (%rax)
jmp 0x109b0
movq 0x10(%rsp), %rax
movl $0xa, (%rax)
movq $0x0, 0x8(%rsp)
movq 0x30(%rsp), %rax
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
jmp 0x108f2
movq %r14, %rdi
movl $0x15, %esi
callq 0xf529
cmpl $-0x1, %eax
je 0x10928
movl %eax, %r15d
leal -0x1(%r15), %edx
movq %r14, %rdi
xorl %esi, %esi
callq 0xcda0
movq %rax, %rbp
incl %r15d
movq %r14, %rdi
callq 0x4170
leal -0x1(%rax), %edx
movq %r14, %rdi
movl %r15d, %esi
callq 0xcda0
movq %rax, %r15
movq 0x10(%rsp), %rax
movl $0x15, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %rbp, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
movq 0x30(%rsp), %rax
movq 0x8(%rsp), %rcx
movq %rcx, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
movq 0x8(%rsp), %rax
movq %rax, 0x30(%rbx)
jmp 0xfe0f
leaq 0x1b12c(%rip), %rdx     # 0x2ba33
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x1093f
movq 0x10(%rsp), %rax
movl $0xe, (%rax)
jmp 0x109b0
xorps %xmm0, %xmm0
movq 0x10(%rsp), %rax
movups %xmm0, (%rax)
movl $0x0, 0x10(%rax)
jmp 0xfe0a
leaq 0x1b0e8(%rip), %rdx     # 0x2ba2e
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10964
movq 0x10(%rsp), %rax
movl $0xf, (%rax)
jmp 0x109b0
leaq 0x1b0a9(%rip), %rdx     # 0x2ba14
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10989
movq 0x10(%rsp), %rax
movl $0x10, (%rax)
jmp 0x109b0
leaq 0x1b088(%rip), %rdx     # 0x2ba18
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10a3e
movq 0x10(%rsp), %rax
movl $0x14, (%rax)
movq %r14, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %r14, %rdi
movl $0x4, %esi
callq 0xcda0
movq %rax, %r15
movq 0x30(%rsp), %rax
movq $0x0, (%rax)
movl $0x58, %edi
callq 0x4300
movq %rax, 0x8(%rsp)
movq %rax, %rdi
movq %r15, %rsi
movl 0x4(%rsp), %edx
movq 0x18(%rsp), %rcx
movl (%rsp), %r8d
movq 0x20(%rsp), %r9
callq 0xfc86
movq 0x8(%rsp), %rax
movq %rax, 0x30(%rbx)
cmpl $0x16, 0x24(%rbx)
jne 0x10a37
movq 0x8(%rsp), %rdi
callq 0x10d00
movq 0x50(%rbx), %rcx
cmpl 0x70(%rcx), %eax
je 0x10a37
xorps %xmm0, %xmm0
movq 0x10(%rsp), %rax
movups %xmm0, (%rax)
movl $0x0, 0x10(%rax)
xorl %ebp, %ebp
jmp 0x1021c
leaq 0x1afd4(%rip), %rdx     # 0x2ba19
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10a63
movq 0x10(%rsp), %rax
movl $0xf, (%rax)
jmp 0x10a86
leaq 0x1afb6(%rip), %rdx     # 0x2ba20
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10a9e
movq 0x10(%rsp), %rax
movl $0x10, (%rax)
movq %r14, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %r14, %rdi
movl $0x3, %esi
jmp 0x109c3
leaq 0x1af83(%rip), %rdx     # 0x2ba28
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10ac3
movq 0x10(%rsp), %rax
movl $0x13, (%rax)
jmp 0x10b30
leaq 0x1af68(%rip), %rdx     # 0x2ba32
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10ae8
movq 0x10(%rsp), %rax
movl $0x12, (%rax)
jmp 0x10b30
leaq 0x1af3e(%rip), %rdx     # 0x2ba2d
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10b0d
movq 0x10(%rsp), %rax
movl $0x14, (%rax)
jmp 0x10b30
leaq 0x1af0f(%rip), %rdx     # 0x2ba23
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10b48
movq 0x10(%rsp), %rax
movl $0xa, (%rax)
movq %r14, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %r14, %rdi
movl $0x5, %esi
jmp 0x109c3
leaq 0x1aee8(%rip), %rdx     # 0x2ba37
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10b6d
movq 0x10(%rsp), %rax
movl $0x13, (%rax)
jmp 0x10bb5
leaq 0x1aeca(%rip), %rdx     # 0x2ba3e
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10b92
movq 0x10(%rsp), %rax
movl $0x12, (%rax)
jmp 0x10bb5
leaq 0x1aeac(%rip), %rdx     # 0x2ba45
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10bcd
movq 0x10(%rsp), %rax
movl $0x14, (%rax)
movq %r14, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %r14, %rdi
movl $0x7, %esi
jmp 0x109c3
leaq 0x1ae78(%rip), %rdx     # 0x2ba4c
movq %r14, %rdi
movl $0x1, %esi
callq 0xcf19
testb %al, %al
je 0x10c08
movq 0x10(%rsp), %rax
movl $0x14, (%rax)
movq %r14, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %r14, %rdi
movl $0x6, %esi
jmp 0x109c3
xorl %r15d, %r15d
cmpl $0x0, (%rsp)
jle 0x109cb
movl (%rsp), %eax
movq %rax, 0x8(%rsp)
movl $0xffffffff, %ebp       # imm = 0xFFFFFFFF
xorl %r12d, %r12d
movq 0x20(%rsp), %rax
movq (%rax,%r12,8), %rax
movq 0x80(%rax), %r13
movq %r14, %rdi
movl $0x1, %esi
movq %r13, %rdx
callq 0xcf19
testb %al, %al
je 0x10c5f
movq %r13, %rdi
callq 0x4170
cmpl %eax, %r15d
cmovgl %r15d, %eax
cmovll %r12d, %ebp
movl %eax, %r15d
incq %r12
cmpq %r12, 0x8(%rsp)
jne 0x10c25
testl %ebp, %ebp
js 0x10cb6
movl $0x16, 0x24(%rbx)
movl %ebp, %r12d
movq 0x20(%rsp), %r13
movq (%r13,%r12,8), %rax
movq 0x80(%rax), %rdi
callq 0x4170
leal 0x1(%rax), %ebp
movq %r14, %rdi
callq 0x4170
leal -0x2(%rax), %edx
movq %r14, %rdi
movl %ebp, %esi
callq 0xcda0
movq %rax, %r15
movq (%r13,%r12,8), %rax
movq %rax, 0x50(%rbx)
jmp 0x109cb
xorl %r15d, %r15d
jmp 0x109cb
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce5
jmp 0x10ce0
jmp 0x10ce0
jmp 0x10ce0
jmp 0x10ce0
jmp 0x10ce0
movq %r12, 0x8(%rsp)
movq %rax, %rbx
movl $0x58, %esi
movq 0x8(%rsp), %rdi
callq 0x4310
movq %rbx, %rdi
callq 0x45b0
nop