
public final class Class321 {

   public float aFloat4016;
   public float aFloat4017;
   static int anInt4018;
   static int anInt4019;
   public float aFloat4020;
   public float aFloat4021;
   static Class321[] aClass321Array4022 = new Class321[0];


   public static Class321 method5772() {
      Class321[] var0 = aClass321Array4022;
      synchronized(var0) {
         if(anInt4018 == 0) {
            return new Class321();
         } else {
            aClass321Array4022[--anInt4018].method5786();
            return aClass321Array4022[anInt4018];
         }
      }
   }

   final void method5773() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
      this.aFloat4017 = -this.aFloat4017;
   }

   public String toString() {
      return this.aFloat4020 + "," + this.aFloat4016 + "," + this.aFloat4021 + "," + this.aFloat4017;
   }

   public static Class321 method5774(Class321 var0) {
      Class321[] var1 = aClass321Array4022;
      synchronized(var1) {
         if(anInt4018 == 0) {
            return new Class321(var0);
         } else {
            aClass321Array4022[--anInt4018].method5775(var0);
            return aClass321Array4022[anInt4018];
         }
      }
   }

   public void method5775(Class321 var1) {
      this.aFloat4020 = var1.aFloat4020;
      this.aFloat4016 = var1.aFloat4016;
      this.aFloat4021 = var1.aFloat4021;
      this.aFloat4017 = var1.aFloat4017;
   }

   public void method5776(float var1, float var2, float var3, float var4) {
      float var5 = (float)Math.sin((double)(var4 * 0.5F));
      float var6 = (float)Math.cos((double)(var4 * 0.5F));
      this.aFloat4020 = var1 * var5;
      this.aFloat4016 = var2 * var5;
      this.aFloat4021 = var3 * var5;
      this.aFloat4017 = var6;
   }

   void method5777(float var1, float var2, float var3, float var4) {
      this.aFloat4020 = var1;
      this.aFloat4016 = var2;
      this.aFloat4021 = var3;
      this.aFloat4017 = var4;
   }

   public static Class321 method5778() {
      Class321[] var0 = aClass321Array4022;
      synchronized(var0) {
         if(anInt4018 == 0) {
            return new Class321();
         } else {
            aClass321Array4022[--anInt4018].method5786();
            return aClass321Array4022[anInt4018];
         }
      }
   }

   public static Class321 method5779() {
      Class321[] var0 = aClass321Array4022;
      synchronized(var0) {
         if(anInt4018 == 0) {
            return new Class321();
         } else {
            aClass321Array4022[--anInt4018].method5786();
            return aClass321Array4022[anInt4018];
         }
      }
   }

   final void method5780() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
      this.aFloat4017 = -this.aFloat4017;
   }

   final void method5781() {
      this.aFloat4021 = 0.0F;
      this.aFloat4016 = 0.0F;
      this.aFloat4020 = 0.0F;
      this.aFloat4017 = 1.0F;
   }

   public final void method5782(Class321 var1) {
      this.method5777(var1.aFloat4017 * this.aFloat4020 + var1.aFloat4020 * this.aFloat4017 + var1.aFloat4016 * this.aFloat4021 - var1.aFloat4021 * this.aFloat4016, var1.aFloat4017 * this.aFloat4016 - var1.aFloat4020 * this.aFloat4021 + var1.aFloat4016 * this.aFloat4017 + var1.aFloat4021 * this.aFloat4020, var1.aFloat4017 * this.aFloat4021 + var1.aFloat4020 * this.aFloat4016 - var1.aFloat4016 * this.aFloat4020 + var1.aFloat4021 * this.aFloat4017, var1.aFloat4017 * this.aFloat4017 - var1.aFloat4020 * this.aFloat4020 - var1.aFloat4016 * this.aFloat4016 - var1.aFloat4021 * this.aFloat4021);
   }

   public void method5783(Class326 var1, float var2) {
      this.method5784(var1.aFloat4036, var1.aFloat4037, var1.aFloat4033, var2);
   }

   public void method5784(float var1, float var2, float var3, float var4) {
      float var5 = (float)Math.sin((double)(var4 * 0.5F));
      float var6 = (float)Math.cos((double)(var4 * 0.5F));
      this.aFloat4020 = var1 * var5;
      this.aFloat4016 = var2 * var5;
      this.aFloat4021 = var3 * var5;
      this.aFloat4017 = var6;
   }

   public void method5785(float var1, float var2, float var3) {
      this.method5784(0.0F, 1.0F, 0.0F, var1);
      Class321 var4 = method5779();
      var4.method5784(1.0F, 0.0F, 0.0F, var2);
      this.method5795(var4);
      var4.method5784(0.0F, 0.0F, 1.0F, var3);
      this.method5795(var4);
      var4.method5817();
   }

   final void method5786() {
      this.aFloat4021 = 0.0F;
      this.aFloat4016 = 0.0F;
      this.aFloat4020 = 0.0F;
      this.aFloat4017 = 1.0F;
   }

   public void method5787(RS2Buffer var1) {
      this.aFloat4020 = var1.method13836(-2022304539);
      this.aFloat4016 = var1.method13836(-1154648531);
      this.aFloat4021 = var1.method13836(-1159369775);
      this.aFloat4017 = var1.method13836(-1575266620);
   }

   public final void method5788() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
   }

   public static final Class321 method5789(Class321 var0) {
      Class321 var1 = method5774(var0);
      var1.method5788();
      return var1;
   }

   final void method5790() {
      float var1 = 1.0F / method5794(this);
      this.aFloat4020 *= var1;
      this.aFloat4016 *= var1;
      this.aFloat4021 *= var1;
      this.aFloat4017 *= var1;
   }

   final void method5791(Class321 var1) {
      this.aFloat4020 += var1.aFloat4020;
      this.aFloat4016 += var1.aFloat4016;
      this.aFloat4021 += var1.aFloat4021;
      this.aFloat4017 += var1.aFloat4017;
   }

   final float method5792(Class321 var1) {
      return this.aFloat4020 * var1.aFloat4020 + this.aFloat4016 * var1.aFloat4016 + this.aFloat4021 * var1.aFloat4021 + this.aFloat4017 * var1.aFloat4017;
   }

   static final float method5793(Class321 var0, Class321 var1) {
      return var0.method5792(var1);
   }

   static final float method5794(Class321 var0) {
      return (float)Math.sqrt((double)method5793(var0, var0));
   }

   public final void method5795(Class321 var1) {
      this.method5777(var1.aFloat4017 * this.aFloat4020 + var1.aFloat4020 * this.aFloat4017 + var1.aFloat4016 * this.aFloat4021 - var1.aFloat4021 * this.aFloat4016, var1.aFloat4017 * this.aFloat4016 - var1.aFloat4020 * this.aFloat4021 + var1.aFloat4016 * this.aFloat4017 + var1.aFloat4021 * this.aFloat4020, var1.aFloat4017 * this.aFloat4021 + var1.aFloat4020 * this.aFloat4016 - var1.aFloat4016 * this.aFloat4020 + var1.aFloat4021 * this.aFloat4017, var1.aFloat4017 * this.aFloat4017 - var1.aFloat4020 * this.aFloat4020 - var1.aFloat4016 * this.aFloat4016 - var1.aFloat4021 * this.aFloat4021);
   }

   static final Class321 method5796(Class321 var0, Class321 var1) {
      Class321 var2 = method5774(var0);
      var2.method5795(var1);
      return var2;
   }

   final void method5797(float var1) {
      this.aFloat4020 *= var1;
      this.aFloat4016 *= var1;
      this.aFloat4021 *= var1;
      this.aFloat4017 *= var1;
   }

   static final Class321 method5798(Class321 var0, float var1) {
      Class321 var2 = method5774(var0);
      var2.method5797(var1);
      return var2;
   }

   public String method5799() {
      return this.aFloat4020 + "," + this.aFloat4016 + "," + this.aFloat4021 + "," + this.aFloat4017;
   }

   public static void method5800(int var0) {
      anInt4019 = var0;
      aClass321Array4022 = new Class321[var0];
      anInt4018 = 0;
   }

   static {
      new Class321();
   }

   public void method5801(RS2Buffer var1) {
      this.aFloat4020 = var1.method13836(-1851332281);
      this.aFloat4016 = var1.method13836(-1786507827);
      this.aFloat4021 = var1.method13836(-404129056);
      this.aFloat4017 = var1.method13836(-1337270765);
   }

   public String method5802() {
      return this.aFloat4020 + "," + this.aFloat4016 + "," + this.aFloat4021 + "," + this.aFloat4017;
   }

   public static void method5803(int var0) {
      anInt4019 = var0;
      aClass321Array4022 = new Class321[var0];
      anInt4018 = 0;
   }

   public static void method5804(int var0) {
      anInt4019 = var0;
      aClass321Array4022 = new Class321[var0];
      anInt4018 = 0;
   }

   public static void method5805(int var0) {
      anInt4019 = var0;
      aClass321Array4022 = new Class321[var0];
      anInt4018 = 0;
   }

   static final Class321 method5806(Class321 var0, Class321 var1) {
      Class321 var2 = method5774(var0);
      var2.method5795(var1);
      return var2;
   }

   static final float method5807(Class321 var0, Class321 var1) {
      return var0.method5792(var1);
   }

   public Class321() {
      this.method5786();
   }

   public final void method5808(Class321 var1, float var2) {
      if(this.method5792(var1) < 0.0F) {
         this.method5780();
      }

      this.method5797(1.0F - var2);
      Class321 var3 = method5798(var1, var2);
      this.method5791(var3);
      var3.method5817();
      this.method5790();
   }

   public void method5809() {
      Class321[] var1 = aClass321Array4022;
      synchronized(var1) {
         if(anInt4018 < anInt4019 - 1) {
            aClass321Array4022[anInt4018++] = this;
         }

      }
   }

   static Class321 method5810(float var0, float var1, float var2, float var3) {
      Class321[] var4 = aClass321Array4022;
      synchronized(var4) {
         if(anInt4018 == 0) {
            return new Class321(var0, var1, var2, var3);
         } else {
            aClass321Array4022[--anInt4018].method5777(var0, var1, var2, var3);
            return aClass321Array4022[anInt4018];
         }
      }
   }

   public void method5811(RS2Buffer var1) {
      this.aFloat4020 = var1.method13836(-489915818);
      this.aFloat4016 = var1.method13836(-1500946702);
      this.aFloat4021 = var1.method13836(-1117522849);
      this.aFloat4017 = var1.method13836(-1459637608);
   }

   public void method5812(RS2Buffer var1) {
      this.aFloat4020 = var1.method13836(-924054635);
      this.aFloat4016 = var1.method13836(-1362885361);
      this.aFloat4021 = var1.method13836(-1369008536);
      this.aFloat4017 = var1.method13836(-1334046728);
   }

   public Class321(float var1, float var2, float var3) {
      this.method5785(var1, var2, var3);
   }

   void method5813(float var1, float var2, float var3, float var4) {
      this.aFloat4020 = var1;
      this.aFloat4016 = var2;
      this.aFloat4021 = var3;
      this.aFloat4017 = var4;
   }

   void method5814(float var1, float var2, float var3, float var4) {
      this.aFloat4020 = var1;
      this.aFloat4016 = var2;
      this.aFloat4021 = var3;
      this.aFloat4017 = var4;
   }

   public void method5815(Class321 var1) {
      this.aFloat4020 = var1.aFloat4020;
      this.aFloat4016 = var1.aFloat4016;
      this.aFloat4021 = var1.aFloat4021;
      this.aFloat4017 = var1.aFloat4017;
   }

   public void method5816(Class326 var1, float var2) {
      this.method5784(var1.aFloat4036, var1.aFloat4037, var1.aFloat4033, var2);
   }

   public void method5817() {
      Class321[] var1 = aClass321Array4022;
      synchronized(var1) {
         if(anInt4018 < anInt4019 - 1) {
            aClass321Array4022[anInt4018++] = this;
         }

      }
   }

   static final Class321 method5818(Class321 var0, float var1) {
      Class321 var2 = method5774(var0);
      var2.method5797(var1);
      return var2;
   }

   public void method5819(float var1, float var2, float var3, float var4) {
      float var5 = (float)Math.sin((double)(var4 * 0.5F));
      float var6 = (float)Math.cos((double)(var4 * 0.5F));
      this.aFloat4020 = var1 * var5;
      this.aFloat4016 = var2 * var5;
      this.aFloat4021 = var3 * var5;
      this.aFloat4017 = var6;
   }

   public void method5820(float var1, float var2, float var3, float var4) {
      float var5 = (float)Math.sin((double)(var4 * 0.5F));
      float var6 = (float)Math.cos((double)(var4 * 0.5F));
      this.aFloat4020 = var1 * var5;
      this.aFloat4016 = var2 * var5;
      this.aFloat4021 = var3 * var5;
      this.aFloat4017 = var6;
   }

   public void method5821(Class321 var1) {
      this.aFloat4020 = var1.aFloat4020;
      this.aFloat4016 = var1.aFloat4016;
      this.aFloat4021 = var1.aFloat4021;
      this.aFloat4017 = var1.aFloat4017;
   }

   public void method5822(float var1, float var2, float var3) {
      this.method5784(0.0F, 1.0F, 0.0F, var1);
      Class321 var4 = method5779();
      var4.method5784(1.0F, 0.0F, 0.0F, var2);
      this.method5795(var4);
      var4.method5784(0.0F, 0.0F, 1.0F, var3);
      this.method5795(var4);
      var4.method5817();
   }

   public final void method5823(Class321 var1, float var2) {
      if(this.method5792(var1) < 0.0F) {
         this.method5780();
      }

      this.method5797(1.0F - var2);
      Class321 var3 = method5798(var1, var2);
      this.method5791(var3);
      var3.method5817();
      this.method5790();
   }

   public Class321(float var1, float var2, float var3, float var4) {
      this.method5777(var1, var2, var3, var4);
   }

   final void method5824() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
      this.aFloat4017 = -this.aFloat4017;
   }

   final void method5825() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
      this.aFloat4017 = -this.aFloat4017;
   }

   public static final Class321 method5826(Class321 var0) {
      Class321 var1 = method5774(var0);
      var1.method5788();
      return var1;
   }

   public final void method5827() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
   }

   public final void method5828() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
   }

   public final void method5829() {
      this.aFloat4020 = -this.aFloat4020;
      this.aFloat4016 = -this.aFloat4016;
      this.aFloat4021 = -this.aFloat4021;
   }

   public void method5830(Class321 var1) {
      this.aFloat4020 = var1.aFloat4020;
      this.aFloat4016 = var1.aFloat4016;
      this.aFloat4021 = var1.aFloat4021;
      this.aFloat4017 = var1.aFloat4017;
   }

   public static final Class321 method5831(Class321 var0) {
      Class321 var1 = method5774(var0);
      var1.method5788();
      return var1;
   }

   public static final Class321 method5832(Class321 var0) {
      Class321 var1 = method5774(var0);
      var1.method5788();
      return var1;
   }

   final void method5833() {
      float var1 = 1.0F / method5794(this);
      this.aFloat4020 *= var1;
      this.aFloat4016 *= var1;
      this.aFloat4021 *= var1;
      this.aFloat4017 *= var1;
   }

   public void method5834(float var1, float var2, float var3) {
      this.method5784(0.0F, 1.0F, 0.0F, var1);
      Class321 var4 = method5779();
      var4.method5784(1.0F, 0.0F, 0.0F, var2);
      this.method5795(var4);
      var4.method5784(0.0F, 0.0F, 1.0F, var3);
      this.method5795(var4);
      var4.method5817();
   }

   final void method5835(Class321 var1) {
      this.aFloat4020 += var1.aFloat4020;
      this.aFloat4016 += var1.aFloat4016;
      this.aFloat4021 += var1.aFloat4021;
      this.aFloat4017 += var1.aFloat4017;
   }

   final float method5836(Class321 var1) {
      return this.aFloat4020 * var1.aFloat4020 + this.aFloat4016 * var1.aFloat4016 + this.aFloat4021 * var1.aFloat4021 + this.aFloat4017 * var1.aFloat4017;
   }

   final void method5837() {
      float var1 = 1.0F / method5794(this);
      this.aFloat4020 *= var1;
      this.aFloat4016 *= var1;
      this.aFloat4021 *= var1;
      this.aFloat4017 *= var1;
   }

   static final float method5838(Class321 var0, Class321 var1) {
      return var0.method5792(var1);
   }

   static final float method5839(Class321 var0) {
      return (float)Math.sqrt((double)method5793(var0, var0));
   }

   static final float method5840(Class321 var0) {
      return (float)Math.sqrt((double)method5793(var0, var0));
   }

   public static Class321 method5841() {
      Class321[] var0 = aClass321Array4022;
      synchronized(var0) {
         if(anInt4018 == 0) {
            return new Class321();
         } else {
            aClass321Array4022[--anInt4018].method5786();
            return aClass321Array4022[anInt4018];
         }
      }
   }

   public final void method5842(Class321 var1) {
      this.method5777(var1.aFloat4017 * this.aFloat4020 + var1.aFloat4020 * this.aFloat4017 + var1.aFloat4016 * this.aFloat4021 - var1.aFloat4021 * this.aFloat4016, var1.aFloat4017 * this.aFloat4016 - var1.aFloat4020 * this.aFloat4021 + var1.aFloat4016 * this.aFloat4017 + var1.aFloat4021 * this.aFloat4020, var1.aFloat4017 * this.aFloat4021 + var1.aFloat4020 * this.aFloat4016 - var1.aFloat4016 * this.aFloat4020 + var1.aFloat4021 * this.aFloat4017, var1.aFloat4017 * this.aFloat4017 - var1.aFloat4020 * this.aFloat4020 - var1.aFloat4016 * this.aFloat4016 - var1.aFloat4021 * this.aFloat4021);
   }

   public final void method5843(Class321 var1) {
      this.method5777(var1.aFloat4017 * this.aFloat4020 + var1.aFloat4020 * this.aFloat4017 + var1.aFloat4016 * this.aFloat4021 - var1.aFloat4021 * this.aFloat4016, var1.aFloat4017 * this.aFloat4016 - var1.aFloat4020 * this.aFloat4021 + var1.aFloat4016 * this.aFloat4017 + var1.aFloat4021 * this.aFloat4020, var1.aFloat4017 * this.aFloat4021 + var1.aFloat4020 * this.aFloat4016 - var1.aFloat4016 * this.aFloat4020 + var1.aFloat4021 * this.aFloat4017, var1.aFloat4017 * this.aFloat4017 - var1.aFloat4020 * this.aFloat4020 - var1.aFloat4016 * this.aFloat4016 - var1.aFloat4021 * this.aFloat4021);
   }

   void method5844(float var1, float var2, float var3, float var4) {
      this.aFloat4020 = var1;
      this.aFloat4016 = var2;
      this.aFloat4021 = var3;
      this.aFloat4017 = var4;
   }

   static final Class321 method5845(Class321 var0, Class321 var1) {
      Class321 var2 = method5774(var0);
      var2.method5795(var1);
      return var2;
   }

   static final Class321 method5846(Class321 var0, float var1) {
      Class321 var2 = method5774(var0);
      var2.method5797(var1);
      return var2;
   }

   static Class321 method5847(float var0, float var1, float var2, float var3) {
      Class321[] var4 = aClass321Array4022;
      synchronized(var4) {
         if(anInt4018 == 0) {
            return new Class321(var0, var1, var2, var3);
         } else {
            aClass321Array4022[--anInt4018].method5777(var0, var1, var2, var3);
            return aClass321Array4022[anInt4018];
         }
      }
   }

   public Class321(Class321 var1) {
      this.method5775(var1);
   }
}
