extern short byte[2000];
void print_constants(int totalc)
{
  int i,j;
 
  int read_bytes(int);
  void print_bytes(int);
  void printf();

  printf("##########Constant_Pool_Start##########\n");
    for(j=1;j<totalc;j++)
      {

    printf("--------------------------------------------------------------------\n");

	printf("**********Constant_Pool[%d]=**********\n",j);

	i = read_bytes(1);
	if (i==-1) exit(0);
	print_bytes(1);
	
	switch(byte[0])
	  {
	  case 7:
	    { 
	      printf("##########ConstantClass##########\n");
	      i = read_bytes(2);
	      if (i==-1) exit(0);
	      printf("**********nameindex**********\n");
	      printf(" Look at Constant_Pool[nameindex]\n");
	      print_bytes(2);
	      break;
	    }
	  case 9:
	    {
	      printf("##########Method##########\n");
	      i = read_bytes(2);
	      if (i ==-1) exit(0);
	      printf("**********Classindex**********\n");
	      print_bytes(2);
	      printf("**********Name&TypeIndex**********\n");
	      i = read_bytes(2);
	      if(i==-1) exit(0);
	      print_bytes(2);
	      break;
	    }
	  case 10:
	    {
	      printf("##########MethodRef##########\n");
	      i = read_bytes(2);
	      if (i ==-1) exit(0);
	      printf("**********Classindex**********\n");
	      print_bytes(2);
	      printf("**********Name&TypeIndex**********\n");
	      i = read_bytes(2);
	      if(i==-1) exit(0);
	      print_bytes(2);
	      break;
	    }
	  case 11:
	    {
	      printf("##########Method##########\n");
	      i = read_bytes(2);
	      if (i ==-1) exit(0);
	      printf("**********Classindex**********\n");
	      print_bytes(2);
	      printf("**********Name&TypeIndex**********\n");
	      i = read_bytes(2);
	      if(i==-1) exit(0);
	      print_bytes(2);
	      break;
	    }

	  case 8:
	    {
	      printf("##########String##########\n");
	      i = read_bytes(2);
	      if (i ==-1) exit(0);
	      printf("**********Stringindex**********\n");
	      print_bytes(2);
	      break;
	    }

	  case 3:
	    {
	      printf("##########IntegerConstant##########\n");
	      i = read_bytes(4);
	      if (i == -1) exit(0);
	      print_bytes(4);
	      printf("Constant is %d",((byte[0]<<24)|(byte[1]<<16)
		    |(byte[2]<<8)|byte[3]));
	      break;
	    }
	  case 4:
	    {
      	      printf("##########FloatingConstant##########\n");
	      i = read_bytes(4);
	      if (i == -1) exit(0);
	      print_bytes(4);
	      break;
	    }
	  case 5:
	    {
      	      printf("##########LongConstant##########\n");
	      i = read_bytes(4);
	      if (i == -1) exit(0);
	      printf("********High Bytes*************\n");
	      print_bytes(4);
	      i = read_bytes(4);
	      if (i == -1) exit(0);
	      printf("********Low Bytes*************\n");
	      print_bytes(4);
	      break;
	    }
	  case 6:
	    {
      	      printf("##########DoubleConstant##########\n");
	      i = read_bytes(4);
	      if (i == -1) exit(0);
	      printf("********High Bytes*************\n");
	      print_bytes(4);
	      i = read_bytes(4);
	      if (i == -1) exit(0);
	      printf("********Low Bytes*************\n");
	      print_bytes(4);
	      break;
	    }
	  case 12:
	    {
	      printf("##########name&Type##########\n");
	      i = read_bytes(2);
	      if (i ==-1) exit(0);
	      printf("**********Nameindex**********\n");
	      print_bytes(2);
	      printf("**********SignatureIndex**********\n");
	      i = read_bytes(2);
	      if(i==-1) exit(0);
	      print_bytes(2);
	      break;
	    }
	  case 1:
	    { 
	      int length,x;
	      printf("##########Constant Utf8##########\n");
	      i = read_bytes(2);
	      if (i ==-1) exit(0);
	      printf("**********length**********\n");
	      print_bytes(2);
	      length=(byte[0]<<8) | byte[1];
              printf("Length is %d\n",length);
	      printf("##########Actual String##########\n");	      
              for(x=0;x<length;x++)
		{
		  read_bytes(1);
		  if (i ==-1) exit(0);
		  printf("%c",byte[0]);
		}
	      printf("\n");
	      break;
	    }
	  case 2:
	    { 
	      int length,x;
	      printf("##########Constant Unicode##########\n");
	      i = read_bytes(2);
	      if (i ==-1) exit(0);
	      printf("**********lengthx**********\n");
	      print_bytes(2);
	      length=(byte[0]<<8) | byte[1];
              printf("Length is %d\n",length);
	      printf("##########Actual String##########\n");	      
              for(x=0;x<length;x++)
		{
		  read_bytes(2);
		  if (i ==-1) exit(0);
		  print_bytes(2);
		}
	    }
	  default: 
	    {
	      printf("How did it get Here\n");
	      printf("%d\n",byte[0]);
	    }
	  }
      }
}
