// File: srajangarg[P]raytracer/src/core/mathexpr.cpp
// Function: ROperation::Expr() const
char* ROperation::Expr() const
{
  char*s=NULL,*s1=NULL,*s2=NULL;int n=10;signed char f=0,g=0;
  if(op==Fun)if(strlen(pfunc->name)>4)n+=strlen(pfunc->name)-4;
  if(mmb1!=NULL){s1=mmb1->Expr();n+=strlen(s1);f=IsFunction(mmb1->op);}
  if(mmb2!=NULL){s2=mmb2->Expr();n+=strlen(s2);g=IsFunction(mmb2->op);}
  s=new char[n];
  switch(op){
  case Num:return ValToStr(ValC);
  case Var:return CopyStr(pvar->name);
  case Juxt:sprintf(s,"%s , %s",s1,s2);break;
  case Add:
    f=f||(mmb1->op==Juxt);
    g=g||(mmb2->op==Juxt);
    if(f&&g)sprintf(s,"(%s)+(%s)",s1,s2);else
      if(f)sprintf(s,"(%s)+%s",s1,s2);else
	if(g)sprintf(s,"%s+(%s)",s1,s2);else
	  sprintf(s,"%s+%s",s1,s2);
    break;
  case Sub:
    f=f||(mmb1->op==Juxt);
    g=g||(mmb2->op==Juxt||mmb2->op==Add||mmb2->op==Sub);
    if(f&&g)sprintf(s,"(%s)-(%s)",s1,s2);else
      if(f)sprintf(s,"(%s)-%s",s1,s2);else
	if(g)sprintf(s,"%s-(%s)",s1,s2);else
	  sprintf(s,"%s-%s",s1,s2);
    break;
  case Opp:
    if(mmb2->op==Add||mmb2->op==Sub||mmb2->op==Juxt)sprintf(s,"-(%s)",s2);else
      sprintf(s,"-%s",s2);
    break;
  case Mult:
    f=f||(mmb1->op==Juxt||mmb1->op==Add||mmb1->op==Sub||mmb1->op==Opp||mmb1->op==Div);
    g=g||(mmb2->op==Juxt||mmb2->op==Add||mmb2->op==Sub||mmb2->op==Opp);
    if(f&&g)sprintf(s,"(%s)*(%s)",s1,s2);else
      if(f)sprintf(s,"(%s)*%s",s1,s2);else
	if(g)sprintf(s,"%s*(%s)",s1,s2);else
	  sprintf(s,"%s*%s",s1,s2);
    break;
  case Div:
    f=f||(mmb1->op==Juxt||mmb1->op==Add||mmb1->op==Sub||mmb1->op==Opp||mmb1->op==Div);
    g=g||(mmb2->op==Juxt||mmb2->op==Add||mmb2->op==Sub||mmb2->op==Opp||mmb2->op==Mult||mmb2->op==Div);
    if(f&&g)sprintf(s,"(%s)/(%s)",s1,s2);else
      if(f)sprintf(s,"(%s)/%s",s1,s2);else
	if(g)sprintf(s,"%s/(%s)",s1,s2);else
	  sprintf(s,"%s/%s",s1,s2);
    break;
  case Pow:
    f=(mmb1->op!=Num&&mmb1->op!=Var);
    g=(mmb2->op!=Num&&mmb2->op!=Var);
    if(f&&g)sprintf(s,"(%s)^(%s)",s1,s2);else
      if(f)sprintf(s,"(%s)^%s",s1,s2);else
	if(g)sprintf(s,"%s^(%s)",s1,s2);else
	  sprintf(s,"%s^%s",s1,s2);
    break;
  case Sqrt:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"sqrt(%s)",s2);
    else sprintf(s,"sqrt %s",s2);
    break;
  case NthRoot:
    f=(mmb1->op!=Num&&mmb1->op!=Var);
    g=(mmb2->op!=Num&&mmb2->op!=Var);
    if(f&&g)sprintf(s,"(%s)#(%s)",s1,s2);else
      if(f)sprintf(s,"(%s)#%s",s1,s2);else
	if(g)sprintf(s,"%s#(%s)",s1,s2);else
	  sprintf(s,"%s#%s",s1,s2);
    break;
  case E10:
    f=(mmb1->op!=Num&&mmb1->op!=Var);
    g=(mmb2->op!=Num&&mmb2->op!=Var);
    if(f&&g)sprintf(s,"(%s)E(%s)",s1,s2);else
      if(f)sprintf(s,"(%s)E%s",s1,s2);else
	if(g)sprintf(s,"%sE(%s)",s1,s2);else
	  sprintf(s,"%sE%s",s1,s2);
    break;
  case Ln:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"log(%s)",s2);
    else sprintf(s,"log %s",s2);
    break;
  case Exp:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"exp(%s)",s2);
    else sprintf(s,"exp %s",s2);
    break;
  case Sin:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"sin(%s)",s2);
    else sprintf(s,"sin %s",s2);
    break;
  case Cos:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"cos(%s)",s2);
    else sprintf(s,"cos %s",s2);
    break;
  case Tg:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"tan(%s)",s2);
    else sprintf(s,"tan %s",s2);
    break;
  case Atan:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"atan(%s)",s2);
    else sprintf(s,"atan %s",s2);
    break;
  case Asin:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"asin(%s)",s2);
    else sprintf(s,"asin %s",s2);
    break;
  case Acos:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"acos(%s)",s2);
    else sprintf(s,"acos %s",s2);
    break;
  case Abs:
    g=(mmb2->op!=Num&&mmb2->op!=Var&&!g);
    if(g)sprintf(s,"abs(%s)",s2);
    else sprintf(s,"abs %s",s2);
    break;
  case Fun:
    sprintf(s,"%s(%s)",pfunc->name,s2);
    break;
  default:return CopyStr("Error");
  };
  if(s1!=NULL)delete[] s1;if(s2!=NULL)delete[] s2;
  return s;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x70, %rsp
movq %rdi, -0x10(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq $0x0, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
movq $0x0, -0x28(%rbp)
movl $0xa, -0x2c(%rbp)
movb $0x0, -0x2d(%rbp)
movb $0x0, -0x2e(%rbp)
cmpl $0x16, 0x24(%rax)
jne 0x24992
movq -0x38(%rbp), %rax
movq 0x50(%rax), %rax
movq 0x80(%rax), %rdi
callq 0x51c0
cmpq $0x4, %rax
jbe 0x24990
movq -0x38(%rbp), %rax
movq 0x50(%rax), %rax
movq 0x80(%rax), %rdi
callq 0x51c0
movq %rax, %rcx
subq $0x4, %rcx
movslq -0x2c(%rbp), %rax
addq %rcx, %rax
movl %eax, -0x2c(%rbp)
jmp 0x24992
movq -0x38(%rbp), %rax
cmpq $0x0, 0x28(%rax)
je 0x249d7
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rdi
callq 0x24910
movq %rax, -0x20(%rbp)
movq -0x20(%rbp), %rdi
callq 0x51c0
movq %rax, %rdx
movq -0x38(%rbp), %rax
movslq -0x2c(%rbp), %rcx
addq %rdx, %rcx
movl %ecx, -0x2c(%rbp)
movq 0x28(%rax), %rax
movl 0x24(%rax), %edi
callq 0x1f8f0
movb %al, -0x2d(%rbp)
movq -0x38(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x24a1c
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x24910
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rdi
callq 0x51c0
movq %rax, %rdx
movq -0x38(%rbp), %rax
movslq -0x2c(%rbp), %rcx
addq %rdx, %rcx
movl %ecx, -0x2c(%rbp)
movq 0x30(%rax), %rax
movl 0x24(%rax), %edi
callq 0x1f8f0
movb %al, -0x2e(%rbp)
movslq -0x2c(%rbp), %rdi
callq 0x5050
movq %rax, %rcx
movq -0x38(%rbp), %rax
movq %rcx, -0x18(%rbp)
movl 0x24(%rax), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x40(%rbp)
subl $0x15, %eax
ja 0x2573c
movq -0x40(%rbp), %rax
leaq 0x23055(%rip), %rcx     # 0x47aa4
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x38(%rbp), %rax
movsd 0x38(%rax), %xmm0
callq 0x248a0
movq %rax, -0x8(%rbp)
jmp 0x25796
movq -0x38(%rbp), %rax
movq 0x40(%rax), %rax
movq (%rax), %rdi
callq 0x1afd0
movq %rax, -0x8(%rbp)
jmp 0x25796
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x230e4(%rip), %rsi     # 0x47b7f
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movb $0x1, %al
cmpb $0x0, -0x2d(%rbp)
movb %al, -0x41(%rbp)
jne 0x24ac4
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x1, 0x24(%rax)
sete %al
movb %al, -0x41(%rbp)
movb -0x41(%rbp), %al
andb $0x1, %al
movb %al, -0x2d(%rbp)
movb $0x1, %al
cmpb $0x0, -0x2e(%rbp)
movb %al, -0x42(%rbp)
jne 0x24ae9
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x1, 0x24(%rax)
sete %al
movb %al, -0x42(%rbp)
movb -0x42(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2d(%rbp)
je 0x24b19
cmpb $0x0, -0x2e(%rbp)
je 0x24b19
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x23077(%rip), %rsi     # 0x47b87
movb $0x0, %al
callq 0x50d0
jmp 0x24b7b
cmpb $0x0, -0x2d(%rbp)
je 0x24b3b
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x2305f(%rip), %rsi     # 0x47b91
movb $0x0, %al
callq 0x50d0
jmp 0x24b79
cmpb $0x0, -0x2e(%rbp)
je 0x24b5d
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x23045(%rip), %rsi     # 0x47b99
movb $0x0, %al
callq 0x50d0
jmp 0x24b77
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x23031(%rip), %rsi     # 0x47ba1
movb $0x0, %al
callq 0x50d0
jmp 0x24b79
jmp 0x24b7b
jmp 0x2574e
movb $0x1, %al
cmpb $0x0, -0x2d(%rbp)
movb %al, -0x43(%rbp)
jne 0x24b9d
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x1, 0x24(%rax)
sete %al
movb %al, -0x43(%rbp)
movb -0x43(%rbp), %al
andb $0x1, %al
movb %al, -0x2d(%rbp)
movb $0x1, %al
cmpb $0x0, -0x2e(%rbp)
movb %al, -0x44(%rbp)
jne 0x24bee
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x1, 0x24(%rcx)
movb %al, -0x45(%rbp)
je 0x24be8
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x4, 0x24(%rcx)
movb %al, -0x45(%rbp)
je 0x24be8
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x5, 0x24(%rax)
sete %al
movb %al, -0x45(%rbp)
movb -0x45(%rbp), %al
movb %al, -0x44(%rbp)
movb -0x44(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2d(%rbp)
je 0x24c1e
cmpb $0x0, -0x2e(%rbp)
je 0x24c1e
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22f92(%rip), %rsi     # 0x47ba7
movb $0x0, %al
callq 0x50d0
jmp 0x24c80
cmpb $0x0, -0x2d(%rbp)
je 0x24c40
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22f7a(%rip), %rsi     # 0x47bb1
movb $0x0, %al
callq 0x50d0
jmp 0x24c7e
cmpb $0x0, -0x2e(%rbp)
je 0x24c62
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22f60(%rip), %rsi     # 0x47bb9
movb $0x0, %al
callq 0x50d0
jmp 0x24c7c
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22f4c(%rip), %rsi     # 0x47bc1
movb $0x0, %al
callq 0x50d0
jmp 0x24c7e
jmp 0x24c80
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x4, 0x24(%rax)
je 0x24caf
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x5, 0x24(%rax)
je 0x24caf
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x1, 0x24(%rax)
jne 0x24cc7
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22eed(%rip), %rsi     # 0x47bab
movb $0x0, %al
callq 0x50d0
jmp 0x24cdd
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22edf(%rip), %rsi     # 0x47bb5
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movb $0x1, %al
cmpb $0x0, -0x2d(%rbp)
movb %al, -0x46(%rbp)
jne 0x24d51
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x1, 0x24(%rcx)
movb %al, -0x47(%rbp)
je 0x24d4b
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x4, 0x24(%rcx)
movb %al, -0x47(%rbp)
je 0x24d4b
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x5, 0x24(%rcx)
movb %al, -0x47(%rbp)
je 0x24d4b
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x6, 0x24(%rcx)
movb %al, -0x47(%rbp)
je 0x24d4b
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x8, 0x24(%rax)
sete %al
movb %al, -0x47(%rbp)
movb -0x47(%rbp), %al
movb %al, -0x46(%rbp)
movb -0x46(%rbp), %al
andb $0x1, %al
movb %al, -0x2d(%rbp)
movb $0x1, %al
cmpb $0x0, -0x2e(%rbp)
movb %al, -0x48(%rbp)
jne 0x24db5
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x1, 0x24(%rcx)
movb %al, -0x49(%rbp)
je 0x24daf
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x4, 0x24(%rcx)
movb %al, -0x49(%rbp)
je 0x24daf
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x5, 0x24(%rcx)
movb %al, -0x49(%rbp)
je 0x24daf
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x6, 0x24(%rax)
sete %al
movb %al, -0x49(%rbp)
movb -0x49(%rbp), %al
movb %al, -0x48(%rbp)
movb -0x48(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2d(%rbp)
je 0x24de5
cmpb $0x0, -0x2e(%rbp)
je 0x24de5
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22deb(%rip), %rsi     # 0x47bc7
movb $0x0, %al
callq 0x50d0
jmp 0x24e47
cmpb $0x0, -0x2d(%rbp)
je 0x24e07
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22dd3(%rip), %rsi     # 0x47bd1
movb $0x0, %al
callq 0x50d0
jmp 0x24e45
cmpb $0x0, -0x2e(%rbp)
je 0x24e29
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22db9(%rip), %rsi     # 0x47bd9
movb $0x0, %al
callq 0x50d0
jmp 0x24e43
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22da5(%rip), %rsi     # 0x47be1
movb $0x0, %al
callq 0x50d0
jmp 0x24e45
jmp 0x24e47
jmp 0x2574e
movb $0x1, %al
cmpb $0x0, -0x2d(%rbp)
movb %al, -0x4a(%rbp)
jne 0x24ebb
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x1, 0x24(%rcx)
movb %al, -0x4b(%rbp)
je 0x24eb5
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x4, 0x24(%rcx)
movb %al, -0x4b(%rbp)
je 0x24eb5
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x5, 0x24(%rcx)
movb %al, -0x4b(%rbp)
je 0x24eb5
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
movb $0x1, %al
cmpl $0x6, 0x24(%rcx)
movb %al, -0x4b(%rbp)
je 0x24eb5
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x8, 0x24(%rax)
sete %al
movb %al, -0x4b(%rbp)
movb -0x4b(%rbp), %al
movb %al, -0x4a(%rbp)
movb -0x4a(%rbp), %al
andb $0x1, %al
movb %al, -0x2d(%rbp)
movb $0x1, %al
cmpb $0x0, -0x2e(%rbp)
movb %al, -0x4c(%rbp)
jne 0x24f45
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x1, 0x24(%rcx)
movb %al, -0x4d(%rbp)
je 0x24f3f
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x4, 0x24(%rcx)
movb %al, -0x4d(%rbp)
je 0x24f3f
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x5, 0x24(%rcx)
movb %al, -0x4d(%rbp)
je 0x24f3f
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x6, 0x24(%rcx)
movb %al, -0x4d(%rbp)
je 0x24f3f
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
movb $0x1, %al
cmpl $0x7, 0x24(%rcx)
movb %al, -0x4d(%rbp)
je 0x24f3f
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x8, 0x24(%rax)
sete %al
movb %al, -0x4d(%rbp)
movb -0x4d(%rbp), %al
movb %al, -0x4c(%rbp)
movb -0x4c(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2d(%rbp)
je 0x24f75
cmpb $0x0, -0x2e(%rbp)
je 0x24f75
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22c7b(%rip), %rsi     # 0x47be7
movb $0x0, %al
callq 0x50d0
jmp 0x24fd7
cmpb $0x0, -0x2d(%rbp)
je 0x24f97
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22c63(%rip), %rsi     # 0x47bf1
movb $0x0, %al
callq 0x50d0
jmp 0x24fd5
cmpb $0x0, -0x2e(%rbp)
je 0x24fb9
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22c49(%rip), %rsi     # 0x47bf9
movb $0x0, %al
callq 0x50d0
jmp 0x24fd3
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22c35(%rip), %rsi     # 0x47c01
movb $0x0, %al
callq 0x50d0
jmp 0x24fd5
jmp 0x24fd7
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x4e(%rbp)
je 0x25001
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x3, 0x24(%rax)
setne %al
movb %al, -0x4e(%rbp)
movq -0x38(%rbp), %rax
movb -0x4e(%rbp), %cl
andb $0x1, %cl
movb %cl, -0x2d(%rbp)
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x4f(%rbp)
je 0x2502f
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x3, 0x24(%rax)
setne %al
movb %al, -0x4f(%rbp)
movb -0x4f(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2d(%rbp)
je 0x2505f
cmpb $0x0, -0x2e(%rbp)
je 0x2505f
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22bb1(%rip), %rsi     # 0x47c07
movb $0x0, %al
callq 0x50d0
jmp 0x250c1
cmpb $0x0, -0x2d(%rbp)
je 0x25081
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22b99(%rip), %rsi     # 0x47c11
movb $0x0, %al
callq 0x50d0
jmp 0x250bf
cmpb $0x0, -0x2e(%rbp)
je 0x250a3
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22b7f(%rip), %rsi     # 0x47c19
movb $0x0, %al
callq 0x50d0
jmp 0x250bd
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22b6b(%rip), %rsi     # 0x47c21
movb $0x0, %al
callq 0x50d0
jmp 0x250bf
jmp 0x250c1
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x50(%rbp)
je 0x250f8
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x50(%rbp)
je 0x250f8
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x50(%rbp)
movb -0x50(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x2511e
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22b12(%rip), %rsi     # 0x47c27
movb $0x0, %al
callq 0x50d0
jmp 0x25134
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22b03(%rip), %rsi     # 0x47c30
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x51(%rbp)
je 0x2515e
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x3, 0x24(%rax)
setne %al
movb %al, -0x51(%rbp)
movq -0x38(%rbp), %rax
movb -0x51(%rbp), %cl
andb $0x1, %cl
movb %cl, -0x2d(%rbp)
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x52(%rbp)
je 0x2518c
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x3, 0x24(%rax)
setne %al
movb %al, -0x52(%rbp)
movb -0x52(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2d(%rbp)
je 0x251bc
cmpb $0x0, -0x2e(%rbp)
je 0x251bc
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22a85(%rip), %rsi     # 0x47c38
movb $0x0, %al
callq 0x50d0
jmp 0x2521e
cmpb $0x0, -0x2d(%rbp)
je 0x251de
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22a6d(%rip), %rsi     # 0x47c42
movb $0x0, %al
callq 0x50d0
jmp 0x2521c
cmpb $0x0, -0x2e(%rbp)
je 0x25200
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22a53(%rip), %rsi     # 0x47c4a
movb $0x0, %al
callq 0x50d0
jmp 0x2521a
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22a3f(%rip), %rsi     # 0x47c52
movb $0x0, %al
callq 0x50d0
jmp 0x2521c
jmp 0x2521e
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x53(%rbp)
je 0x25248
movq -0x38(%rbp), %rax
movq 0x28(%rax), %rax
cmpl $0x3, 0x24(%rax)
setne %al
movb %al, -0x53(%rbp)
movq -0x38(%rbp), %rax
movb -0x53(%rbp), %cl
andb $0x1, %cl
movb %cl, -0x2d(%rbp)
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x54(%rbp)
je 0x25276
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rax
cmpl $0x3, 0x24(%rax)
setne %al
movb %al, -0x54(%rbp)
movb -0x54(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2d(%rbp)
je 0x252a6
cmpb $0x0, -0x2e(%rbp)
je 0x252a6
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x229bb(%rip), %rsi     # 0x47c58
movb $0x0, %al
callq 0x50d0
jmp 0x25308
cmpb $0x0, -0x2d(%rbp)
je 0x252c8
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x229a3(%rip), %rsi     # 0x47c62
movb $0x0, %al
callq 0x50d0
jmp 0x25306
cmpb $0x0, -0x2e(%rbp)
je 0x252ea
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22989(%rip), %rsi     # 0x47c6a
movb $0x0, %al
callq 0x50d0
jmp 0x25304
movq -0x18(%rbp), %rdi
movq -0x20(%rbp), %rdx
movq -0x28(%rbp), %rcx
leaq 0x22975(%rip), %rsi     # 0x47c72
movb $0x0, %al
callq 0x50d0
jmp 0x25306
jmp 0x25308
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x55(%rbp)
je 0x2533f
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x55(%rbp)
je 0x2533f
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x55(%rbp)
movb -0x55(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x25365
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x2291c(%rip), %rsi     # 0x47c78
movb $0x0, %al
callq 0x50d0
jmp 0x2537b
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x2290c(%rip), %rsi     # 0x47c80
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x56(%rbp)
je 0x253b2
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x56(%rbp)
je 0x253b2
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x56(%rbp)
movb -0x56(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x253d8
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x228b8(%rip), %rsi     # 0x47c87
movb $0x0, %al
callq 0x50d0
jmp 0x253ee
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x228a8(%rip), %rsi     # 0x47c8f
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x57(%rbp)
je 0x25425
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x57(%rbp)
je 0x25425
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x57(%rbp)
movb -0x57(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x2544b
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22866(%rip), %rsi     # 0x47ca8
movb $0x0, %al
callq 0x50d0
jmp 0x25461
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22857(%rip), %rsi     # 0x47cb1
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x58(%rbp)
je 0x25498
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x58(%rbp)
je 0x25498
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x58(%rbp)
movb -0x58(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x254be
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22804(%rip), %rsi     # 0x47cb9
movb $0x0, %al
callq 0x50d0
jmp 0x254d4
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x227f5(%rip), %rsi     # 0x47cc2
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x59(%rbp)
je 0x2550b
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x59(%rbp)
je 0x2550b
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x59(%rbp)
movb -0x59(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x25531
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x2276f(%rip), %rsi     # 0x47c97
movb $0x0, %al
callq 0x50d0
jmp 0x25547
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22760(%rip), %rsi     # 0x47ca0
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x5a(%rbp)
je 0x2557e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x5a(%rbp)
je 0x2557e
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x5a(%rbp)
movb -0x5a(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x255a4
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x226fb(%rip), %rsi     # 0x47c96
movb $0x0, %al
callq 0x50d0
jmp 0x255ba
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x226ec(%rip), %rsi     # 0x47c9f
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x5b(%rbp)
je 0x255f1
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x5b(%rbp)
je 0x255f1
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x5b(%rbp)
movb -0x5b(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x25617
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22699(%rip), %rsi     # 0x47ca7
movb $0x0, %al
callq 0x50d0
jmp 0x2562d
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x2268a(%rip), %rsi     # 0x47cb0
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x5c(%rbp)
je 0x25664
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x5c(%rbp)
je 0x25664
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x5c(%rbp)
movb -0x5c(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x2568a
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22637(%rip), %rsi     # 0x47cb8
movb $0x0, %al
callq 0x50d0
jmp 0x256a0
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x22628(%rip), %rsi     # 0x47cc1
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x2, 0x24(%rcx)
movb %al, -0x5d(%rbp)
je 0x256d7
movq -0x38(%rbp), %rax
movq 0x30(%rax), %rcx
xorl %eax, %eax
cmpl $0x3, 0x24(%rcx)
movb %al, -0x5d(%rbp)
je 0x256d7
cmpb $0x0, -0x2e(%rbp)
setne %al
xorb $-0x1, %al
movb %al, -0x5d(%rbp)
movb -0x5d(%rbp), %al
andb $0x1, %al
movb %al, -0x2e(%rbp)
cmpb $0x0, -0x2e(%rbp)
je 0x256fd
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x225d5(%rip), %rsi     # 0x47cc9
movb $0x0, %al
callq 0x50d0
jmp 0x25713
movq -0x18(%rbp), %rdi
movq -0x28(%rbp), %rdx
leaq 0x225c5(%rip), %rsi     # 0x47cd1
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
movq -0x38(%rbp), %rax
movq -0x18(%rbp), %rdi
movq 0x50(%rax), %rax
movq 0x80(%rax), %rdx
movq -0x28(%rbp), %rcx
leaq 0x225a5(%rip), %rsi     # 0x47cd8
movb $0x0, %al
callq 0x50d0
jmp 0x2574e
leaq 0x22428(%rip), %rdi     # 0x47b6b
callq 0x1afd0
movq %rax, -0x8(%rbp)
jmp 0x25796
cmpq $0x0, -0x20(%rbp)
je 0x2576e
movq -0x20(%rbp), %rax
movq %rax, -0x68(%rbp)
cmpq $0x0, %rax
je 0x2576c
movq -0x68(%rbp), %rdi
callq 0x5520
jmp 0x2576e
cmpq $0x0, -0x28(%rbp)
je 0x2578e
movq -0x28(%rbp), %rax
movq %rax, -0x70(%rbp)
cmpq $0x0, %rax
je 0x2578c
movq -0x70(%rbp), %rdi
callq 0x5520
jmp 0x2578e
movq -0x18(%rbp), %rax
movq %rax, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x70, %rsp
popq %rbp
retq