

#include "BUILTIN.h"

#include "Nat.h"
extern OBJ _ATreeCompare_3(OBJ,OBJ);OBJ __ATreeCompare_3; /* ~ */

extern OBJ _ATreeCompare_3(register OBJ x1,register OBJ x2) /* ~ */
{OBJ r;
 for(;;){
  if(ISPRM(x1)){
   if(ISPRM(x2)){
    r=__ABUILTIN_5;
   }else{
    if(EXPRD(x2,1)){
     DSPRD(x2);
    }else{
     DCPRD(x2,1);}
    r=__ABUILTIN_3;}
  }else{
   {OBJ x81=FLD1(x1,2);OBJ x82=FLD1(x1,3);
    if(EXPRD(x1,1)){
     FREE(FLD1(x1,1),1);DSPRDF(x1);
    }else{
     COPY(x81,1);COPY(x82,1);
     FRPRD(x1,1);}
    if(ISPRM(x2)){
     FREE(x81,1);
     FREE(x82,1);
     r=__ABUILTIN_3;
    }else{
     {OBJ x84=FLD1(x2,2);OBJ x85=FLD1(x2,3);
      if(EXPRD(x2,1)){
       FREE(FLD1(x2,1),1);DSPRDF(x2);
      }else{
       COPY(x84,1);COPY(x85,1);
       FRPRD(x2,1);}
      {OBJ x88;
       x88=_ATreeCompare_3(x81,x84);
       if(ISTGPRM(x88,1)){
	x1=x82;x2=x85;continue;
       }else{
	FREE(x82,1);
	FREE(x85,1);
	r=__ABUILTIN_3;}}}}}}
  break;}
 return r;}

init_ATreeCompare()
{
 static int visited=0; if(visited) return; visited=1;
 init_ATree();
 init_ANat();
 init_AOption();
 init_ASeq();
 init_ARelCmp();
 CLS(2,_ATreeCompare_3,__ATreeCompare_3);}

