// File: /workspace/github_cpp_makefile_star2_O1/srajangarg[P]raytracer/src/core/mathexpr.cpp
// Function: ROperation::Diff(RVar const&) const
ROperation ROperation::Diff(const RVar& var) const
{
  if(!ContainVar(var))return 0.0;
  if(op==Var)return 1.0;
  ROperation **ppop1,op2;int i,j;
  switch(op){
  case Juxt:return(mmb1->Diff(var),mmb2->Diff(var));
  case Add:return(mmb1->Diff(var)+mmb2->Diff(var));
  case Sub:return(mmb1->Diff(var)-mmb2->Diff(var));
  case Opp:return(-mmb2->Diff(var));
  case Mult:return((*mmb1)*(mmb2->Diff(var))+(*mmb2)*(mmb1->Diff(var)));
  case Div:if(mmb2->ContainVar(var))return(((*mmb2)*(mmb1->Diff(var))-(*mmb1)*(mmb2->Diff(var)))/((*mmb2)^2));
  else return(mmb1->Diff(var)/(*mmb2));
  case Pow:if(mmb2->ContainVar(var))return((*this)*(log(*mmb1)*mmb2->Diff(var)+
						    (*mmb2)*mmb1->Diff(var)/(*mmb1)));else
						      return (*mmb2)*mmb1->Diff(var)*((*mmb1)^(*mmb2-1));
  case Sqrt:return(mmb2->Diff(var)/(2*sqrt(*mmb2)));
  case NthRoot:{ROperation interm=(*mmb2)^(1/(*mmb1));return interm.Diff(var);};
  case E10:{ROperation interm=(*mmb1)*(10^(*mmb2));return interm.Diff(var);};;
  case Ln:return (mmb2->Diff(var)/(*mmb2));
  case Exp:return (mmb2->Diff(var)*(*this));
  case Sin:return (mmb2->Diff(var)*cos(*mmb2));
  case Cos:return (-mmb2->Diff(var)*sin(*mmb2));
  case Tg:return (mmb2->Diff(var)*(1+((*this)^2)));
  case Atan:
    if(mmb2->op!=Juxt)return(mmb2->Diff(var)/(1+((*mmb2)^2)));
    else return ((mmb2->NthMember(1).Diff(var))*(mmb2->NthMember(2))-(mmb2->NthMember(2).Diff(var))*(mmb2->NthMember(1)))/(((mmb2->NthMember(1))^2)+((mmb2->NthMember(2))^2));
  case Asin:return(mmb2->Diff(var)/sqrt(1-((*mmb2)^2)));
  case Acos:return(-mmb2->Diff(var)/sqrt(1-((*mmb2)^2)));
  case Abs:return(mmb2->Diff(var)*(*mmb2)/(*this));
  case Fun:if(pfunc->type==-1||pfunc->type==0)return ErrVal;
    if(pfunc->nvars==0)return 0.;
    else if(pfunc->op.NMembers()>1){
      j=pfunc->op.NMembers();
      ppop1=new ROperation*[j];
      for(i=0;i<j;i++)ppop1[i]=new ROperation(NthMember(i+1).Diff(var));
      op2=ApplyOperator(pfunc->nvars,ppop1,&operator,);
      for(i=0;i<pfunc->nvars;i++)delete ppop1[i];
      delete[]ppop1;
      return op2;
    }else{
      ppop1=new ROperation*[pfunc->nvars];
      for(i=0;i<pfunc->nvars;i++){
	ppop1[i]=new ROperation(pfunc->op.Diff(*pfunc->ppvar[i]));
	for(j=0;j<pfunc->nvars;j++)
	  *ppop1[i]=ppop1[i]->Substitute(*pfunc->ppvar[j],mmb2->NthMember(j+1));
	*ppop1[i]=(mmb2->NthMember(i+1).Diff(var))*(*ppop1[i]);
      }
      op2=ApplyOperator(pfunc->nvars,ppop1,&::operator+);
      for(i=0;i<pfunc->nvars;i++)delete ppop1[i];
      delete[]ppop1;
      return op2;
      // In the obtained expression, f' will have been replaced with its expression but f will remain pointing to itself ; this could cause some trouble if changing f afterwards
    }
  default:return ErrVal;
  };
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x628, %rsp            # imm = 0x628
movq %rdx, %r13
movq %rsi, %r14
movq %rdi, %r12
movq %rsi, %rdi
movq %rdx, %rsi
callq 0x11200
testb %al, %al
je 0x11775
cmpl $0x3, 0x24(%r14)
jne 0x117b4
movl $0x2, 0x24(%r12)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%r12)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x38(%r12)
movups %xmm0, (%r12)
movups %xmm0, 0x10(%r12)
movb $0x0, 0x20(%r12)
movups %xmm0, 0x40(%r12)
movq $0x0, 0x50(%r12)
jmp 0x117a4
movl $0x2, 0x24(%r12)
xorps %xmm0, %xmm0
movups %xmm0, (%r12)
movups %xmm0, 0x10(%r12)
movb $0x0, 0x20(%r12)
movups %xmm0, 0x28(%r12)
movups %xmm0, 0x38(%r12)
movups %xmm0, 0x48(%r12)
movq %r12, %rdi
callq 0xdc5e
movq %r12, %rax
jmp 0x126d6
xorps %xmm0, %xmm0
leaq 0x2a0(%rsp), %rdi
movups %xmm0, 0x24(%rdi)
movl $0x0, 0x34(%rdi)
movabsq $0x7fefffffffffffff, %rbx # imm = 0x7FEFFFFFFFFFFFFF
movq %rbx, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
movl 0x24(%r14), %eax
decl %eax
cmpl $0x15, %eax
movq %r12, 0x118(%rsp)
ja 0x11a27
leaq 0x1b166(%rip), %rcx     # 0x2c978
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq 0x28(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xe784
jmp 0x11c59
movq 0x28(%r14), %r15
leaq 0xc0(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4024000000000000, %rax # imm = 0x4024000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
movq 0x30(%r14), %rdx
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xef70
movq %rsp, %rdi
leaq 0x68(%rsp), %rdx
movq %r15, %rsi
callq 0xeb47
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
callq 0xe18c
movq %rsp, %rsi
movq %r12, %rdi
movq %r13, %rdx
callq 0x116fe
jmp 0x125b4
movq 0x30(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rdx
movq %rsp, %rsi
movq %r12, %rdi
callq 0xed36
jmp 0x125b4
movq 0x30(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
callq 0xf2bc
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xeb47
jmp 0x11c59
movq 0x30(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0xc0(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x180(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x120(%rsp), %rdi
leaq 0x180(%rsp), %rdx
movq %r14, %rsi
callq 0xef70
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0xe84d
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xeb47
jmp 0x12583
movq 0x50(%r14), %r15
movzbl 0x8(%r15), %eax
cmpl $0xff, %eax
je 0x11a27
testl %eax, %eax
jne 0x126e8
xorps %xmm0, %xmm0
movups %xmm0, 0x24(%r12)
movl $0x0, 0x34(%r12)
movq %rbx, 0x38(%r12)
movups %xmm0, (%r12)
movups %xmm0, 0x10(%r12)
movb $0x0, 0x20(%r12)
movups %xmm0, 0x40(%r12)
movq $0x0, 0x50(%r12)
movq %r12, %rdi
callq 0xdc5e
jmp 0x126c1
movq 0x28(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xe9b0
jmp 0x11c59
movq 0x30(%r14), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x11200
testb %al, %al
je 0x125bc
movq 0x28(%r14), %rsi
leaq 0xc0(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rdx
movq %r15, %rsi
callq 0xeb47
movq 0x28(%r14), %rbx
movq 0x30(%r14), %rsi
leaq 0x180(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0x120(%rsp), %rdi
leaq 0x180(%rsp), %rdx
movq %rbx, %rsi
callq 0xeb47
movq %rsp, %rdi
leaq 0x68(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0xe9b0
movq 0x30(%r14), %r14
leaq 0x240(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x1e0(%rsp), %rdi
leaq 0x240(%rsp), %rdx
movq %r14, %rsi
callq 0xef70
movq %rsp, %rsi
leaq 0x1e0(%rsp), %rdx
movq %r12, %rdi
callq 0xed36
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
leaq 0x240(%rsp), %rdi
callq 0xe18c
movq %rsp, %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
callq 0xe18c
leaq 0x180(%rsp), %rdi
callq 0xe18c
leaq 0x68(%rsp), %rdi
jmp 0x11d66
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rdi
leaq 0x68(%rsp), %rsi
callq 0xe6b8
movq 0x30(%r14), %rsi
leaq 0xc0(%rsp), %rdi
callq 0xf228
movq %rsp, %rsi
leaq 0xc0(%rsp), %rdx
movq %r12, %rdi
callq 0xeb47
leaq 0xc0(%rsp), %rdi
jmp 0x126aa
movq 0x28(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xe84d
leaq 0x68(%rsp), %rdi
jmp 0x125af
movq 0x30(%r14), %r15
movq %r15, %rdi
movq %r13, %rsi
callq 0x11200
testb %al, %al
je 0x125dc
movq 0x28(%r14), %rsi
leaq 0xc0(%rsp), %rdi
callq 0xf3e4
movq 0x30(%r14), %rsi
leaq 0x120(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0xeb47
movq 0x30(%r14), %rbx
movq 0x28(%r14), %rsi
leaq 0x240(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0x1e0(%rsp), %rdi
leaq 0x240(%rsp), %rdx
movq %rbx, %rsi
callq 0xeb47
movq 0x28(%r14), %rdx
leaq 0x180(%rsp), %rdi
leaq 0x1e0(%rsp), %rsi
callq 0xed36
movq %rsp, %rdi
leaq 0x68(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0xe84d
movq %rsp, %rdx
movq %r12, %rdi
movq %r14, %rsi
callq 0xeb47
movq %rsp, %rdi
callq 0xe18c
leaq 0x180(%rsp), %rdi
callq 0xe18c
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
leaq 0x240(%rsp), %rdi
callq 0xe18c
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
jmp 0x126bc
movq 0x30(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0xc0(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
movq 0x30(%r14), %rsi
leaq 0x120(%rsp), %rdi
callq 0xf100
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0xeb47
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xed36
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
jmp 0x125a2
movq 0x30(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rsi
movq %r12, %rdi
movq %r14, %rdx
callq 0xeb47
jmp 0x125b4
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rdi
leaq 0x68(%rsp), %rsi
callq 0xe6b8
leaq 0x180(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
movq 0x30(%r14), %r14
leaq 0x240(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x1e0(%rsp), %rdi
leaq 0x240(%rsp), %rdx
movq %r14, %rsi
callq 0xef70
leaq 0x120(%rsp), %rdi
leaq 0x180(%rsp), %rsi
leaq 0x1e0(%rsp), %rdx
callq 0xe9b0
leaq 0xc0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
callq 0xf100
movq %rsp, %rsi
leaq 0xc0(%rsp), %rdx
movq %r12, %rdi
callq 0xed36
leaq 0xc0(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
callq 0xe18c
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
leaq 0x240(%rsp), %rdi
jmp 0x1269d
movq 0x30(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rsi
movq %r12, %rdi
callq 0xe6b8
jmp 0x125b4
movq 0x28(%r14), %rbx
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rdi
leaq 0x68(%rsp), %rdx
movq %rbx, %rsi
callq 0xeb47
movq 0x30(%r14), %rbx
movq 0x28(%r14), %rsi
leaq 0x120(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0xc0(%rsp), %rdi
leaq 0x120(%rsp), %rdx
movq %rbx, %rsi
callq 0xeb47
movq %rsp, %rsi
leaq 0xc0(%rsp), %rdx
movq %r12, %rdi
callq 0xe84d
leaq 0xc0(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
jmp 0x126aa
movq 0x30(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rdx
movq %rsp, %rdi
leaq 0x68(%rsp), %rsi
callq 0xeb47
movq %rsp, %rsi
movq %r12, %rdi
movq %r14, %rdx
callq 0xed36
jmp 0x126af
movq 0x30(%r14), %r15
leaq 0xc0(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
movq 0x28(%r14), %rdx
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xed36
movq %rsp, %rdi
leaq 0x68(%rsp), %rdx
movq %r15, %rsi
callq 0xef70
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
callq 0xe18c
movq %rsp, %rsi
movq %r12, %rdi
movq %r13, %rdx
callq 0x116fe
jmp 0x125b4
movq 0x30(%r14), %rsi
cmpl $0x1, 0x24(%rsi)
jne 0x124b2
leaq 0x120(%rsp), %rdi
movl $0x1, %edx
callq 0x11418
leaq 0xc0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rsi
leaq 0x180(%rsp), %rdi
movl $0x2, %edx
callq 0x11418
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0xeb47
movq 0x30(%r14), %rsi
leaq 0x5d0(%rsp), %rdi
movl $0x2, %edx
callq 0x11418
leaq 0x240(%rsp), %rdi
leaq 0x5d0(%rsp), %rsi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rsi
leaq 0x578(%rsp), %rdi
movl $0x1, %edx
callq 0x11418
leaq 0x1e0(%rsp), %rdi
leaq 0x240(%rsp), %rsi
leaq 0x578(%rsp), %rdx
callq 0xeb47
movq %rsp, %rdi
leaq 0x68(%rsp), %rsi
leaq 0x1e0(%rsp), %rdx
callq 0xe9b0
movq 0x30(%r14), %rsi
leaq 0x470(%rsp), %rdi
movl $0x1, %edx
callq 0x11418
leaq 0x360(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4000000000000000, %rbx # imm = 0x4000000000000000
movq %rbx, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x4c8(%rsp), %rdi
leaq 0x470(%rsp), %rsi
leaq 0x360(%rsp), %rdx
callq 0xef70
movq 0x30(%r14), %rsi
leaq 0x3c0(%rsp), %rdi
movl $0x2, %edx
callq 0x11418
leaq 0x300(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movq %rbx, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x418(%rsp), %rdi
leaq 0x3c0(%rsp), %rsi
leaq 0x300(%rsp), %rdx
callq 0xef70
leaq 0x520(%rsp), %rdi
leaq 0x4c8(%rsp), %rsi
leaq 0x418(%rsp), %rdx
callq 0xe84d
movq %rsp, %rsi
leaq 0x520(%rsp), %rdx
movq %r12, %rdi
callq 0xed36
leaq 0x520(%rsp), %rdi
callq 0xe18c
leaq 0x418(%rsp), %rdi
callq 0xe18c
leaq 0x300(%rsp), %rdi
callq 0xe18c
leaq 0x3c0(%rsp), %rdi
callq 0xe18c
leaq 0x4c8(%rsp), %rdi
callq 0xe18c
leaq 0x360(%rsp), %rdi
callq 0xe18c
leaq 0x470(%rsp), %rdi
callq 0xe18c
movq %rsp, %rdi
callq 0xe18c
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
leaq 0x578(%rsp), %rdi
callq 0xe18c
leaq 0x240(%rsp), %rdi
callq 0xe18c
leaq 0x5d0(%rsp), %rdi
callq 0xe18c
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0x180(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
jmp 0x126bc
movq 0x30(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0x120(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
movq 0x30(%r14), %r14
leaq 0x1e0(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x180(%rsp), %rdi
leaq 0x1e0(%rsp), %rdx
movq %r14, %rsi
callq 0xef70
leaq 0xc0(%rsp), %rdi
leaq 0x120(%rsp), %rsi
leaq 0x180(%rsp), %rdx
callq 0xe9b0
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
callq 0xf100
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xed36
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
callq 0xe18c
leaq 0x180(%rsp), %rdi
callq 0xe18c
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
jmp 0x125af
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
leaq 0xc0(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
movq 0x30(%r14), %r14
leaq 0x180(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x4000000000000000, %rax # imm = 0x4000000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x120(%rsp), %rdi
leaq 0x180(%rsp), %rdx
movq %r14, %rsi
callq 0xef70
leaq 0x68(%rsp), %rdi
leaq 0xc0(%rsp), %rsi
leaq 0x120(%rsp), %rdx
callq 0xe84d
movq %rsp, %rsi
leaq 0x68(%rsp), %rdx
movq %r12, %rdi
callq 0xed36
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
callq 0xe18c
leaq 0x180(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
callq 0xe18c
movq %rsp, %rdi
jmp 0x126bc
movq 0x28(%r14), %rsi
movq %rsp, %rdi
movq %r13, %rdx
callq 0x116fe
movq 0x30(%r14), %rdx
movq %rsp, %rsi
movq %r12, %rdi
callq 0xed36
jmp 0x125b4
movq 0x28(%r14), %rsi
leaq 0x68(%rsp), %rdi
movq %r13, %rdx
callq 0x116fe
movq %rsp, %rdi
leaq 0x68(%rsp), %rdx
movq %r15, %rsi
callq 0xeb47
movq 0x28(%r14), %r15
movq 0x30(%r14), %r14
leaq 0x180(%rsp), %rdi
movl $0x2, 0x24(%rdi)
xorps %xmm0, %xmm0
movups %xmm0, 0x28(%rdi)
movabsq $0x3ff0000000000000, %rax # imm = 0x3FF0000000000000
movq %rax, 0x38(%rdi)
movaps %xmm0, (%rdi)
movaps %xmm0, 0x10(%rdi)
movb $0x0, 0x20(%rdi)
movaps %xmm0, 0x40(%rdi)
movq $0x0, 0x50(%rdi)
callq 0xdc5e
leaq 0x120(%rsp), %rdi
leaq 0x180(%rsp), %rdx
movq %r14, %rsi
callq 0xe9b0
leaq 0xc0(%rsp), %rdi
leaq 0x120(%rsp), %rdx
movq %r15, %rsi
callq 0xef70
movq %rsp, %rsi
leaq 0xc0(%rsp), %rdx
movq %r12, %rdi
callq 0xeb47
leaq 0xc0(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
callq 0xe18c
leaq 0x180(%rsp), %rdi
callq 0xe18c
movq %rsp, %rdi
callq 0xe18c
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0x2a0(%rsp), %rdi
callq 0xe18c
movq 0x118(%rsp), %rax
addq $0x628, %rsp            # imm = 0x628
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movslq 0x70(%r15), %rbx
testq %rbx, %rbx
je 0x12825
movq %r13, 0x178(%rsp)
movq %r14, 0x60(%rsp)
addq $0x18, %r15
movq %r15, %rdi
callq 0x110ec
cmpl $0x2, %eax
jl 0x12859
movq %r15, %rdi
callq 0x110ec
movl %eax, %ebp
cltq
leaq (,%rax,8), %rcx
testl %eax, %eax
movq $-0x1, %rdi
cmovnsq %rcx, %rdi
callq 0x4040
movq %rax, 0x58(%rsp)
testl %ebp, %ebp
jle 0x1279a
movl %ebp, %ebx
xorl %r14d, %r14d
movq %rsp, %r13
movl $0x58, %edi
callq 0x4310
movq %rax, %r15
leaq 0x1(%r14), %rbp
movq %r13, %rdi
movq 0x60(%rsp), %rsi
movl %ebp, %edx
callq 0x11418
movq %r15, %rdi
movq %r13, %rsi
movq 0x178(%rsp), %rdx
callq 0x116fe
movq 0x58(%rsp), %rax
movq %r15, (%rax,%r14,8)
movq %r13, %rdi
callq 0xe18c
movq %rbp, %r14
cmpq %rbp, %rbx
jne 0x1274e
movq 0x60(%rsp), %r12
movq 0x50(%r12), %rax
movl 0x70(%rax), %esi
leaq -0x402a(%rip), %rcx     # 0xe784
movq %rsp, %rdi
movq 0x58(%rsp), %r13
movq %r13, %rdx
callq 0xf6c8
leaq 0x2a0(%rsp), %rdi
movq %rsp, %rsi
callq 0xd4fe
movq 0x118(%rsp), %r15
movq %rsp, %rdi
callq 0xe18c
movq 0x50(%r12), %rax
cmpl $0x0, 0x70(%rax)
jle 0x12a3a
xorl %r14d, %r14d
movq (%r13,%r14,8), %rbx
testq %rbx, %rbx
je 0x1280f
movq %rbx, %rdi
callq 0xe18c
movl $0x58, %esi
movq %rbx, %rdi
callq 0x4320
incq %r14
movq 0x50(%r12), %rax
movslq 0x70(%rax), %rax
cmpq %rax, %r14
jl 0x127f0
jmp 0x12a3a
movl $0x2, 0x24(%r12)
xorps %xmm0, %xmm0
movups %xmm0, (%r12)
movups %xmm0, 0x10(%r12)
movb $0x0, 0x20(%r12)
movups %xmm0, 0x28(%r12)
movups %xmm0, 0x38(%r12)
movups %xmm0, 0x48(%r12)
jmp 0x11a5e
movq %rbx, %rax
shlq $0x3, %rax
testl %ebx, %ebx
movq $-0x1, %rdi
cmovnsq %rax, %rdi
callq 0x4040
movq %rax, %r13
movq 0x60(%rsp), %r12
movq 0x50(%r12), %r15
movl 0x70(%r15), %esi
testl %esi, %esi
jle 0x129ca
movq %r13, 0x58(%rsp)
xorl %r14d, %r14d
leaq 0x68(%rsp), %r12
movq %rsp, %rbp
movl $0x58, %edi
callq 0x4310
movq %rax, %r13
movq 0x78(%r15), %rax
addq $0x18, %r15
movq (%rax,%r14,8), %rdx
movq %r13, %rdi
movq %r15, %rsi
callq 0x116fe
movq 0x58(%rsp), %rax
movq %r13, (%rax,%r14,8)
movq 0x60(%rsp), %rdx
movq 0x50(%rdx), %rax
cmpl $0x0, 0x70(%rax)
jle 0x12941
xorl %r15d, %r15d
movq 0x58(%rsp), %rcx
movq (%rcx,%r14,8), %rbx
movq 0x78(%rax), %rax
movq (%rax,%r15,8), %r13
movq 0x30(%rdx), %rsi
incq %r15
movq %r12, %rdi
movl %r15d, %edx
callq 0x11418
movq %rbp, %rdi
movq %rbx, %rsi
movq %r13, %rdx
movq %r12, %rcx
callq 0x115a2
movq 0x58(%rsp), %rax
movq (%rax,%r14,8), %rdi
movq %rbp, %rsi
callq 0xd4fe
movq %rbp, %rdi
callq 0xe18c
movq %r12, %rdi
callq 0xe18c
movq 0x60(%rsp), %rdx
movq 0x50(%rdx), %rax
movslq 0x70(%rax), %rcx
cmpq %rcx, %r15
jl 0x128da
movq 0x30(%rdx), %rsi
leaq 0x1(%r14), %r13
leaq 0xc0(%rsp), %r15
movq %r15, %rdi
movl %r13d, %edx
callq 0x11418
movq %r12, %rdi
movq %r15, %rsi
movq 0x178(%rsp), %rdx
callq 0x116fe
movq 0x58(%rsp), %rbx
movq (%rbx,%r14,8), %rdx
movq %rbp, %rdi
movq %r12, %rsi
callq 0xeb47
movq (%rbx,%r14,8), %rdi
movq %rbp, %rsi
callq 0xd4fe
movq %rbp, %rdi
callq 0xe18c
movq %r12, %rdi
callq 0xe18c
movq %r15, %rdi
callq 0xe18c
movq 0x60(%rsp), %rax
movq 0x50(%rax), %r15
movslq 0x70(%r15), %rsi
movq %r13, %r14
cmpq %rsi, %r13
jl 0x1289b
movq 0x60(%rsp), %r12
movq 0x58(%rsp), %r13
leaq -0x4184(%rip), %rcx     # 0xe84d
movq %rsp, %rdi
movq %r13, %rdx
callq 0xf6c8
leaq 0x2a0(%rsp), %rdi
movq %rsp, %rsi
callq 0xd4fe
movq %rsp, %rdi
callq 0xe18c
movq 0x50(%r12), %rax
cmpl $0x0, 0x70(%rax)
movq 0x118(%rsp), %r15
jle 0x12a3a
xorl %r14d, %r14d
movq (%r13,%r14,8), %rbx
testq %rbx, %rbx
je 0x12a29
movq %rbx, %rdi
callq 0xe18c
movl $0x58, %esi
movq %rbx, %rdi
callq 0x4320
incq %r14
movq 0x50(%r12), %rax
movslq 0x70(%rax), %rax
cmpq %rax, %r14
jl 0x12a0a
movq %r13, %rdi
callq 0x43d0
leaq 0x2a0(%rsp), %rsi
movq %r15, %rdi
callq 0xe2ba
jmp 0x126c1
jmp 0x12e59
jmp 0x12f23
jmp 0x12e59
jmp 0x12f23
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0xe18c
jmp 0x12a80
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
jmp 0x12d53
jmp 0x12d9f
jmp 0x12f07
jmp 0x12f14
jmp 0x12e59
jmp 0x12f23
jmp 0x12f23
movq %rax, %rbx
leaq 0x520(%rsp), %rdi
callq 0xe18c
jmp 0x12ac0
movq %rax, %rbx
leaq 0x418(%rsp), %rdi
callq 0xe18c
jmp 0x12ad2
movq %rax, %rbx
leaq 0x300(%rsp), %rdi
callq 0xe18c
jmp 0x12ae4
movq %rax, %rbx
leaq 0x3c0(%rsp), %rdi
callq 0xe18c
jmp 0x12af6
movq %rax, %rbx
leaq 0x4c8(%rsp), %rdi
callq 0xe18c
leaq 0x360(%rsp), %rdi
callq 0xe18c
leaq 0x470(%rsp), %rdi
callq 0xe18c
movq %rsp, %rdi
callq 0xe18c
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
leaq 0x578(%rsp), %rdi
callq 0xe18c
leaq 0x240(%rsp), %rdi
callq 0xe18c
leaq 0x5d0(%rsp), %rdi
callq 0xe18c
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0x180(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
jmp 0x12f1c
movq %rax, %rbx
jmp 0x12b03
movq %rax, %rbx
jmp 0x12b10
movq %rax, %rbx
jmp 0x12b1d
movq %rax, %rbx
jmp 0x12b25
movq %rax, %rbx
jmp 0x12b32
movq %rax, %rbx
jmp 0x12b3f
jmp 0x12d15
movq %rax, %rbx
jmp 0x12b4c
jmp 0x12d69
movq %rax, %rbx
jmp 0x12b59
jmp 0x12dce
movq %rax, %rbx
jmp 0x12b63
jmp 0x12e0e
movq %rax, %rbx
jmp 0x12b70
jmp 0x12e59
movq %rax, %rbx
jmp 0x12b7d
jmp 0x12f23
jmp 0x12f23
movq %rax, %rbx
movq %rsp, %rdi
callq 0xe18c
jmp 0x12c12
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
jmp 0x12c24
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0xe18c
jmp 0x12c36
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0xe18c
jmp 0x12c48
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
jmp 0x12c55
movq %rax, %rbx
movq %rsp, %rdi
callq 0xe18c
jmp 0x12c67
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0xe18c
jmp 0x12c79
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xe18c
jmp 0x12c93
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0x120(%rsp), %rdi
jmp 0x12ec6
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
jmp 0x12ebc
movq %rax, %rbx
jmp 0x12c83
jmp 0x12eb1
jmp 0x12eac
jmp 0x12eac
jmp 0x12f23
jmp 0x12f23
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0xe18c
jmp 0x12ce2
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xe18c
jmp 0x12cf4
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xe18c
jmp 0x12d06
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0xe18c
jmp 0x12d27
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
jmp 0x12d4b
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xe18c
jmp 0x12d6c
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0xe18c
jmp 0x12d7e
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
callq 0xe18c
jmp 0x12d95
movq %rax, %rbx
leaq 0x240(%rsp), %rdi
callq 0xe18c
jmp 0x12da2
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xe18c
jmp 0x12db7
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
callq 0xe18c
jmp 0x12dd1
movq %rax, %rbx
leaq 0x1e0(%rsp), %rdi
callq 0xe18c
jmp 0x12de5
jmp 0x12e59
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
jmp 0x12daa
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0xe18c
jmp 0x12f0a
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
jmp 0x12dd9
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
jmp 0x12daa
movq %rax, %rbx
leaq 0x180(%rsp), %rdi
callq 0xe18c
jmp 0x12e11
jmp 0x12e59
movq %rax, %rbx
leaq 0x120(%rsp), %rdi
jmp 0x12e25
jmp 0x12eb1
jmp 0x12f07
jmp 0x12f07
jmp 0x12f07
jmp 0x12e0e
jmp 0x12e1d
jmp 0x12f07
jmp 0x12e1d
movq %rax, %rbx
leaq 0xc0(%rsp), %rdi
jmp 0x12e25
jmp 0x12e1d
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xe18c
jmp 0x12e5c
jmp 0x12eb1
jmp 0x12e59
jmp 0x12eac
jmp 0x12f14
jmp 0x12f14
jmp 0x12e59
jmp 0x12f14
jmp 0x12e59
jmp 0x12e59
jmp 0x12e59
jmp 0x12f14
jmp 0x12e59
jmp 0x12e59
jmp 0x12e59
jmp 0x12e59
movq %rax, %rbx
movq %rsp, %rdi
jmp 0x12f1c
jmp 0x12eac
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
jmp 0x12f23
movq %rax, %rbx
jmp 0x12ecb
movq %rax, %rbx
jmp 0x12ec1
movq %rax, %rbx
movq %rsp, %rdi
callq 0xe18c
leaq 0x68(%rsp), %rdi
callq 0xe18c
leaq 0xc0(%rsp), %rdi
jmp 0x12f1c
jmp 0x12f23
movq %rax, %rbx
movl $0x58, %esi
movq %r13, %rdi
jmp 0x12efe
jmp 0x12f23
movq %rax, %rbx
jmp 0x12ef6
movq %rax, %rbx
movq %rsp, %rdi
callq 0xe18c
movl $0x58, %esi
movq %r15, %rdi
callq 0x4320
jmp 0x12f26
jmp 0x12f23
movq %rax, %rbx
movq %rsp, %rdi
callq 0xe18c
jmp 0x12f17
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0xe18c
jmp 0x12f26
movq %rax, %rbx
leaq 0x2a0(%rsp), %rdi
callq 0xe18c
movq %rbx, %rdi
callq 0x45c0