==================== com.ogaba.sa_combat.client.event.SACombatClientForgeEvents ====================
Compiled from "SACombatClientForgeEvents.java"
public final class com.ogaba.sa_combat.client.event.SACombatClientForgeEvents {
  private static final net.minecraft.resources.ResourceLocation BALLISTIC_VEST_BG;

  private static final net.minecraft.resources.ResourceLocation BALLISTIC_VEST_FILL;

  private static final net.minecraft.resources.ResourceLocation GRENADE_FUSE_FRAME;

  private static final net.minecraft.resources.ResourceLocation GRENADE_FUSE_FILL;

  private static final int GRENADE_FUSE_FRAME_WIDTH;

  private static final int GRENADE_FUSE_FRAME_HEIGHT;

  private static final int GRENADE_FUSE_FILL_OFFSET_X;

  private static final int GRENADE_FUSE_FILL_OFFSET_Y;

  private static final int GRENADE_FUSE_FILL_WIDTH;

  private static final int GRENADE_FUSE_FILL_HEIGHT;

  private static final int GRENADE_FUSE_CROSSHAIR_OFFSET_Y;

  private static final net.minecraft.resources.ResourceLocation VANILLA_SPYGLASS_SCOPE;

  private static float tacticalScopeProgress;

  private static java.lang.reflect.Method renderSpyglassOverlayMethod;

  private static final float SCOPE_OPEN_SMOOTH;

  private static final float SCOPE_CLOSE_SMOOTH;

  private static final int BALLISTIC_ICON_W;

  private static final int BALLISTIC_ICON_H;

  private static final int BALLISTIC_RENDER_W;

  private static final int BALLISTIC_RENDER_H;

  private static final int BALLISTIC_MARGIN_LEFT;

  private static final int BALLISTIC_MARGIN_BOTTOM;

  private static final net.minecraft.resources.ResourceLocation NAIL_ITEM_ID;

  private static final int AMMO_ICON_SIZE;

  private static final int AMMO_MARGIN_RIGHT;

  private static final int AMMO_MARGIN_BOTTOM;

  private static final int AMMO_ICON_GAP;

  private static boolean nailGunTriggerWasDown;

  private static float nailGunAutoFireAccumulator;

  private static long thirdPersonNailGunStackId;

  private static boolean thirdPersonNailGunReloadWasActive;

  private static int cachedInventoryPlayerId;

  private static int cachedInventoryTick;

  private static int cachedNailReserve;

  private static int cachedTacticalBoltReserve;

  private static int cachedImprovisedBoltReserve;

  private static boolean nailIconResolved;

  private static net.minecraft.world.item.ItemStack cachedNailIcon;

  private static net.minecraft.world.item.ItemStack cachedTacticalBoltIcon;

  private static net.minecraft.world.item.ItemStack cachedImprovisedBoltIcon;

  private static boolean crossbowCycleWasDown;

  private com.ogaba.sa_combat.client.event.SACombatClientForgeEvents();
    Code:
       0: aload_0
       1: invokespecial #133                // Method java/lang/Object."<init>":()V
       4: return

  public static void onRenderHand(net.minecraftforge.client.event.RenderHandEvent);
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_1
       4: aload_1
       5: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       8: astore_2
       9: aload_2
      10: ifnonnull     14
      13: return
      14: aload_2
      15: invokevirtual #154                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      18: astore_3
      19: aload_2
      20: invokevirtual #157                // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack;
      23: astore        4
      25: aload_3
      26: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      29: instanceof    #165                // class com/ogaba/sa_combat/item/SpecialGrenadeItem
      32: istore        5
      34: aload         4
      36: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      39: instanceof    #165                // class com/ogaba/sa_combat/item/SpecialGrenadeItem
      42: istore        6
      44: aload_3
      45: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      48: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      51: istore        7
      53: aload         4
      55: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      58: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      61: istore        8
      63: iload         5
      65: ifne          84
      68: iload         6
      70: ifne          84
      73: iload         7
      75: ifne          84
      78: iload         8
      80: ifne          84
      83: return
      84: aload_0
      85: invokevirtual #173                // Method net/minecraftforge/client/event/RenderHandEvent.getHand:()Lnet/minecraft/world/InteractionHand;
      88: getstatic     #179                // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand;
      91: if_acmpne     128
      94: iload         5
      96: ifeq          109
      99: aload_0
     100: aload_2
     101: ldc           #180                // float 0.35f
     103: invokestatic  #184                // Method applyRetainedVanillaViewBob:(Lnet/minecraftforge/client/event/RenderHandEvent;Lnet/minecraft/world/entity/player/Player;F)V
     106: goto          128
     109: iload         7
     111: ifeq          128
     114: fconst_1
     115: invokestatic  #190                // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F
     118: fsub
     119: fstore        9
     121: aload_0
     122: aload_2
     123: fload         9
     125: invokestatic  #184                // Method applyRetainedVanillaViewBob:(Lnet/minecraftforge/client/event/RenderHandEvent;Lnet/minecraft/world/entity/player/Player;F)V
     128: aload_0
     129: invokevirtual #173                // Method net/minecraftforge/client/event/RenderHandEvent.getHand:()Lnet/minecraft/world/InteractionHand;
     132: getstatic     #193                // Field net/minecraft/world/InteractionHand.OFF_HAND:Lnet/minecraft/world/InteractionHand;
     135: if_acmpne     143
     138: aload_0
     139: iconst_1
     140: invokevirtual #197                // Method net/minecraftforge/client/event/RenderHandEvent.setCanceled:(Z)V
     143: return

  private static void applyRetainedVanillaViewBob(net.minecraftforge.client.event.RenderHandEvent, net.minecraft.world.entity.player.Player, float);
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_3
       4: aload_3
       5: getfield      #214                // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options;
       8: invokevirtual #220                // Method net/minecraft/client/Options.m_231830_:()Lnet/minecraft/client/OptionInstance;
      11: invokevirtual #226                // Method net/minecraft/client/OptionInstance.m_231551_:()Ljava/lang/Object;
      14: checkcast     #228                // class java/lang/Boolean
      17: invokevirtual #232                // Method java/lang/Boolean.booleanValue:()Z
      20: ifne          24
      23: return
      24: fload_2
      25: fconst_0
      26: fconst_1
      27: invokestatic  #238                // Method net/minecraft/util/Mth.m_14036_:(FFF)F
      30: fstore_2
      31: aload_0
      32: invokevirtual #241                // Method net/minecraftforge/client/event/RenderHandEvent.getPartialTick:()F
      35: fstore        4
      37: aload_1
      38: getfield      #244                // Field net/minecraft/world/entity/player/Player.f_19787_:F
      41: aload_1
      42: getfield      #247                // Field net/minecraft/world/entity/player/Player.f_19867_:F
      45: fsub
      46: fstore        5
      48: aload_1
      49: getfield      #244                // Field net/minecraft/world/entity/player/Player.f_19787_:F
      52: fload         5
      54: fload         4
      56: fmul
      57: fadd
      58: fneg
      59: fstore        6
      61: fload         4
      63: aload_1
      64: getfield      #250                // Field net/minecraft/world/entity/player/Player.f_36099_:F
      67: aload_1
      68: getfield      #253                // Field net/minecraft/world/entity/player/Player.f_36100_:F
      71: invokestatic  #256                // Method net/minecraft/util/Mth.m_14179_:(FFF)F
      74: fstore        7
      76: fload         6
      78: ldc_w         #257                // float 3.1415927f
      81: fmul
      82: invokestatic  #261                // Method net/minecraft/util/Mth.m_14031_:(F)F
      85: fload         7
      87: fmul
      88: ldc_w         #262                // float 0.5f
      91: fmul
      92: fstore        8
      94: fload         6
      96: ldc_w         #257                // float 3.1415927f
      99: fmul
     100: invokestatic  #265                // Method net/minecraft/util/Mth.m_14089_:(F)F
     103: fload         7
     105: fmul
     106: invokestatic  #270                // Method java/lang/Math.abs:(F)F
     109: fneg
     110: fstore        9
     112: fload         6
     114: ldc_w         #257                // float 3.1415927f
     117: fmul
     118: invokestatic  #261                // Method net/minecraft/util/Mth.m_14031_:(F)F
     121: fload         7
     123: fmul
     124: ldc_w         #271                // float 3.0f
     127: fmul
     128: fstore        10
     130: fload         6
     132: ldc_w         #257                // float 3.1415927f
     135: fmul
     136: ldc_w         #272                // float 0.2f
     139: fsub
     140: invokestatic  #265                // Method net/minecraft/util/Mth.m_14089_:(F)F
     143: fload         7
     145: fmul
     146: invokestatic  #270                // Method java/lang/Math.abs:(F)F
     149: ldc_w         #273                // float 5.0f
     152: fmul
     153: fstore        11
     155: aload_0
     156: invokevirtual #277                // Method net/minecraftforge/client/event/RenderHandEvent.getPoseStack:()Lcom/mojang/blaze3d/vertex/PoseStack;
     159: astore        12
     161: aload         12
     163: getstatic     #283                // Field com/mojang/math/Axis.f_252529_:Lcom/mojang/math/Axis;
     166: fload         11
     168: fneg
     169: invokeinterface #287,  2          // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf;
     174: invokevirtual #293                // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V
     177: aload         12
     179: getstatic     #296                // Field com/mojang/math/Axis.f_252403_:Lcom/mojang/math/Axis;
     182: fload         10
     184: fneg
     185: invokeinterface #287,  2          // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf;
     190: invokevirtual #293                // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V
     193: aload         12
     195: fload         8
     197: fneg
     198: f2d
     199: fload         9
     201: fneg
     202: f2d
     203: dconst_0
     204: invokevirtual #300                // Method com/mojang/blaze3d/vertex/PoseStack.m_85837_:(DDD)V
     207: aload         12
     209: fload         8
     211: fload_2
     212: fmul
     213: f2d
     214: fload         9
     216: fload_2
     217: fmul
     218: f2d
     219: dconst_0
     220: invokevirtual #300                // Method com/mojang/blaze3d/vertex/PoseStack.m_85837_:(DDD)V
     223: aload         12
     225: getstatic     #296                // Field com/mojang/math/Axis.f_252403_:Lcom/mojang/math/Axis;
     228: fload         10
     230: fload_2
     231: fmul
     232: invokeinterface #287,  2          // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf;
     237: invokevirtual #293                // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V
     240: aload         12
     242: getstatic     #283                // Field com/mojang/math/Axis.f_252529_:Lcom/mojang/math/Axis;
     245: fload         11
     247: fload_2
     248: fmul
     249: invokeinterface #287,  2          // InterfaceMethod com/mojang/math/Axis.m_252977_:(F)Lorg/joml/Quaternionf;
     254: invokevirtual #293                // Method com/mojang/blaze3d/vertex/PoseStack.m_252781_:(Lorg/joml/Quaternionf;)V
     257: return

  public static void onClientTick(net.minecraftforge.event.TickEvent$ClientTickEvent);
    Code:
       0: aload_0
       1: getfield      #317                // Field net/minecraftforge/event/TickEvent$ClientTickEvent.phase:Lnet/minecraftforge/event/TickEvent$Phase;
       4: getstatic     #320                // Field net/minecraftforge/event/TickEvent$Phase.END:Lnet/minecraftforge/event/TickEvent$Phase;
       7: if_acmpne     28
      10: invokestatic  #325                // Method com/ogaba/sa_combat/client/sound/ChainsawSoundManager.tick:()V
      13: invokestatic  #326                // Method com/ogaba/sa_combat/client/render/NailGunAimClient.tick:()V
      16: invokestatic  #329                // Method tickNailGunThirdPersonSounds:()V
      19: invokestatic  #332                // Method tickNailGunTrigger:()V
      22: invokestatic  #335                // Method tickNailGunReloadKey:()V
      25: invokestatic  #338                // Method tickCrossbowAmmoCycle:()V
      28: return

  public static void onRenderPlayerPre(net.minecraftforge.client.event.RenderPlayerEvent$Pre);
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       6: astore_1
       7: aload_1
       8: ifnull        19
      11: aload_0
      12: invokevirtual #345                // Method net/minecraftforge/client/event/RenderPlayerEvent$Pre.getEntity:()Lnet/minecraft/world/entity/player/Player;
      15: aload_1
      16: if_acmpeq     20
      19: return
      20: aload_1
      21: invokevirtual #348                // Method net/minecraft/client/player/AbstractClientPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      24: astore_2
      25: aload_2
      26: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      29: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      32: ifne          36
      35: return
      36: invokestatic  #190                // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F
      39: ldc_w         #349                // float 0.01f
      42: fcmpl
      43: ifgt          53
      46: aload_1
      47: invokevirtual #352                // Method net/minecraft/client/player/AbstractClientPlayer.m_6117_:()Z
      50: ifeq          57
      53: iconst_1
      54: goto          58
      57: iconst_0
      58: istore_3
      59: iload_3
      60: ifne          64
      63: return
      64: aload_0
      65: invokevirtual #356                // Method net/minecraftforge/client/event/RenderPlayerEvent$Pre.getRenderer:()Lnet/minecraft/client/renderer/entity/player/PlayerRenderer;
      68: invokevirtual #362                // Method net/minecraft/client/renderer/entity/player/PlayerRenderer.m_7200_:()Lnet/minecraft/client/model/EntityModel;
      71: checkcast     #364                // class net/minecraft/client/model/PlayerModel
      74: astore        4
      76: aload_1
      77: invokevirtual #368                // Method net/minecraft/client/player/AbstractClientPlayer.m_5737_:()Lnet/minecraft/world/entity/HumanoidArm;
      80: astore        5
      82: aload         5
      84: getstatic     #374                // Field net/minecraft/world/entity/HumanoidArm.RIGHT:Lnet/minecraft/world/entity/HumanoidArm;
      87: if_acmpne     109
      90: aload         4
      92: getstatic     #380                // Field com/ogaba/sa_combat/client/SACombatArmPoses.NAIL_GUN_AIM:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
      95: putfield      #383                // Field net/minecraft/client/model/PlayerModel.f_102816_:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
      98: aload         4
     100: getstatic     #386                // Field net/minecraft/client/model/HumanoidModel$ArmPose.ITEM:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
     103: putfield      #389                // Field net/minecraft/client/model/PlayerModel.f_102815_:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
     106: goto          125
     109: aload         4
     111: getstatic     #380                // Field com/ogaba/sa_combat/client/SACombatArmPoses.NAIL_GUN_AIM:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
     114: putfield      #389                // Field net/minecraft/client/model/PlayerModel.f_102815_:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
     117: aload         4
     119: getstatic     #386                // Field net/minecraft/client/model/HumanoidModel$ArmPose.ITEM:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
     122: putfield      #383                // Field net/minecraft/client/model/PlayerModel.f_102816_:Lnet/minecraft/client/model/HumanoidModel$ArmPose;
     125: return

  public static void onNailGunAimMovement(net.minecraftforge.client.event.MovementInputUpdateEvent);
    Code:
       0: aload_0
       1: invokevirtual #403                // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getEntity:()Lnet/minecraft/world/entity/player/Player;
       4: astore_1
       5: aload_1
       6: invokevirtual #154                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
       9: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      12: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      15: ifne          19
      18: return
      19: invokestatic  #190                // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F
      22: fstore_2
      23: fload_2
      24: ldc_w         #349                // float 0.01f
      27: fcmpg
      28: ifgt          32
      31: return
      32: invokestatic  #406                // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getMovementMultiplier:()F
      35: fstore_3
      36: aload_0
      37: invokevirtual #410                // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getInput:()Lnet/minecraft/client/player/Input;
      40: dup
      41: getfield      #415                // Field net/minecraft/client/player/Input.f_108566_:F
      44: fload_3
      45: fmul
      46: putfield      #415                // Field net/minecraft/client/player/Input.f_108566_:F
      49: aload_0
      50: invokevirtual #410                // Method net/minecraftforge/client/event/MovementInputUpdateEvent.getInput:()Lnet/minecraft/client/player/Input;
      53: dup
      54: getfield      #418                // Field net/minecraft/client/player/Input.f_108567_:F
      57: fload_3
      58: fmul
      59: putfield      #418                // Field net/minecraft/client/player/Input.f_108567_:F
      62: fload_2
      63: ldc_w         #419                // float 0.05f
      66: fcmpl
      67: ifle          82
      70: aload_1
      71: invokevirtual #422                // Method net/minecraft/world/entity/player/Player.m_20142_:()Z
      74: ifeq          82
      77: aload_1
      78: iconst_0
      79: invokevirtual #425                // Method net/minecraft/world/entity/player/Player.m_6858_:(Z)V
      82: return

  private static void tickCrossbowAmmoCycle();
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_0
       4: aload_0
       5: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       8: astore_1
       9: aload_1
      10: ifnull        20
      13: aload_0
      14: getfield      #432                // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen;
      17: ifnull        25
      20: iconst_0
      21: putstatic     #434                // Field crossbowCycleWasDown:Z
      24: return
      25: aload_1
      26: invokevirtual #154                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      29: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      32: instanceof    #46                 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem
      35: ifne          51
      38: aload_1
      39: invokevirtual #157                // Method net/minecraft/world/entity/player/Player.m_21206_:()Lnet/minecraft/world/item/ItemStack;
      42: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      45: instanceof    #46                 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem
      48: ifeq          55
      51: iconst_1
      52: goto          56
      55: iconst_0
      56: istore_2
      57: iload_2
      58: ifne          66
      61: iconst_0
      62: putstatic     #434                // Field crossbowCycleWasDown:Z
      65: return
      66: aload_0
      67: getfield      #214                // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options;
      70: getfield      #438                // Field net/minecraft/client/Options.f_92096_:Lnet/minecraft/client/KeyMapping;
      73: invokevirtual #443                // Method net/minecraft/client/KeyMapping.m_90857_:()Z
      76: ifeq          90
      79: aload_1
      80: invokevirtual #446                // Method net/minecraft/world/entity/player/Player.m_6144_:()Z
      83: ifeq          90
      86: iconst_1
      87: goto          91
      90: iconst_0
      91: istore_3
      92: getstatic     #434                // Field crossbowCycleWasDown:Z
      95: istore        4
      97: iload_3
      98: putstatic     #434                // Field crossbowCycleWasDown:Z
     101: iload_3
     102: ifeq          123
     105: iload         4
     107: ifne          123
     110: getstatic     #452                // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel;
     113: new           #454                // class com/ogaba/sa_combat/network/packet/CycleBoltTypeC2SPacket
     116: dup
     117: invokespecial #455                // Method com/ogaba/sa_combat/network/packet/CycleBoltTypeC2SPacket."<init>":()V
     120: invokevirtual #461                // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V
     123: return

  public static void onNailGunInteractionKey(net.minecraftforge.client.event.InputEvent$InteractionKeyMappingTriggered);
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_1
       4: aload_1
       5: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       8: astore_2
       9: aload_2
      10: ifnull        33
      13: aload_1
      14: getfield      #432                // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen;
      17: ifnonnull     33
      20: aload_2
      21: invokevirtual #154                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      24: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      27: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      30: ifne          34
      33: return
      34: aload_0
      35: invokevirtual #472                // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.isAttack:()Z
      38: ifne          48
      41: aload_0
      42: invokevirtual #475                // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.isUseItem:()Z
      45: ifeq          58
      48: aload_0
      49: iconst_0
      50: invokevirtual #478                // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.setSwingHand:(Z)V
      53: aload_0
      54: iconst_1
      55: invokevirtual #479                // Method net/minecraftforge/client/event/InputEvent$InteractionKeyMappingTriggered.setCanceled:(Z)V
      58: return

  private static void tickNailGunThirdPersonSounds();
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_0
       4: aload_0
       5: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       8: astore_1
       9: aload_1
      10: ifnull        33
      13: aload_0
      14: getfield      #432                // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen;
      17: ifnonnull     33
      20: aload_0
      21: getfield      #214                // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options;
      24: invokevirtual #484                // Method net/minecraft/client/Options.m_92176_:()Lnet/minecraft/client/CameraType;
      27: invokevirtual #489                // Method net/minecraft/client/CameraType.m_90612_:()Z
      30: ifeq          44
      33: ldc2_w        #490                // long -9223372036854775808l
      36: putstatic     #493                // Field thirdPersonNailGunStackId:J
      39: iconst_0
      40: putstatic     #495                // Field thirdPersonNailGunReloadWasActive:Z
      43: return
      44: aload_1
      45: invokevirtual #154                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      48: astore_2
      49: aload_2
      50: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      53: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      56: ifne          70
      59: ldc2_w        #490                // long -9223372036854775808l
      62: putstatic     #493                // Field thirdPersonNailGunStackId:J
      65: iconst_0
      66: putstatic     #495                // Field thirdPersonNailGunReloadWasActive:Z
      69: return
      70: aload_2
      71: invokestatic  #501                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
      74: lstore_3
      75: getstatic     #493                // Field thirdPersonNailGunStackId:J
      78: lload_3
      79: lcmp
      80: ifeq          125
      83: lload_3
      84: putstatic     #493                // Field thirdPersonNailGunStackId:J
      87: iconst_0
      88: putstatic     #495                // Field thirdPersonNailGunReloadWasActive:Z
      91: aload_1
      92: invokevirtual #505                // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level;
      95: aload_1
      96: invokevirtual #509                // Method net/minecraft/world/entity/player/Player.m_20185_:()D
      99: aload_1
     100: invokevirtual #512                // Method net/minecraft/world/entity/player/Player.m_20186_:()D
     103: aload_1
     104: invokevirtual #515                // Method net/minecraft/world/entity/player/Player.m_20189_:()D
     107: getstatic     #521                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_DRAW:Lnet/minecraftforge/registries/RegistryObject;
     110: invokevirtual #526                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     113: checkcast     #528                // class net/minecraft/sounds/SoundEvent
     116: getstatic     #534                // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource;
     119: fconst_1
     120: fconst_1
     121: iconst_0
     122: invokevirtual #540                // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V
     125: aload_2
     126: invokestatic  #544                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
     129: ifne          139
     132: aload_2
     133: invokestatic  #547                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
     136: ifeq          143
     139: iconst_1
     140: goto          144
     143: iconst_0
     144: istore        5
     146: iload         5
     148: ifeq          191
     151: getstatic     #495                // Field thirdPersonNailGunReloadWasActive:Z
     154: ifne          191
     157: aload_1
     158: invokevirtual #505                // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level;
     161: aload_1
     162: invokevirtual #509                // Method net/minecraft/world/entity/player/Player.m_20185_:()D
     165: aload_1
     166: invokevirtual #512                // Method net/minecraft/world/entity/player/Player.m_20186_:()D
     169: aload_1
     170: invokevirtual #515                // Method net/minecraft/world/entity/player/Player.m_20189_:()D
     173: getstatic     #550                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD:Lnet/minecraftforge/registries/RegistryObject;
     176: invokevirtual #526                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     179: checkcast     #528                // class net/minecraft/sounds/SoundEvent
     182: getstatic     #534                // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource;
     185: fconst_1
     186: fconst_1
     187: iconst_0
     188: invokevirtual #540                // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V
     191: iload         5
     193: putstatic     #495                // Field thirdPersonNailGunReloadWasActive:Z
     196: return

  private static void tickNailGunTrigger();
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_0
       4: aload_0
       5: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       8: astore_1
       9: aload_1
      10: ifnull        20
      13: aload_0
      14: getfield      #432                // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen;
      17: ifnull        29
      20: iconst_0
      21: putstatic     #555                // Field nailGunTriggerWasDown:Z
      24: fconst_0
      25: putstatic     #557                // Field nailGunAutoFireAccumulator:F
      28: return
      29: aload_1
      30: invokestatic  #561                // Method resolveNailGunHand:(Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/InteractionHand;
      33: astore_2
      34: aload_2
      35: ifnonnull     47
      38: iconst_0
      39: putstatic     #555                // Field nailGunTriggerWasDown:Z
      42: fconst_0
      43: putstatic     #557                // Field nailGunAutoFireAccumulator:F
      46: return
      47: aload_1
      48: aload_2
      49: invokevirtual #565                // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;
      52: astore_3
      53: aload_0
      54: getfield      #214                // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options;
      57: getfield      #438                // Field net/minecraft/client/Options.f_92096_:Lnet/minecraft/client/KeyMapping;
      60: invokevirtual #443                // Method net/minecraft/client/KeyMapping.m_90857_:()Z
      63: istore        4
      65: getstatic     #555                // Field nailGunTriggerWasDown:Z
      68: istore        5
      70: iload         4
      72: putstatic     #555                // Field nailGunTriggerWasDown:Z
      75: iload         4
      77: ifeq          101
      80: aload_3
      81: invokestatic  #544                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
      84: ifne          101
      87: aload_3
      88: invokestatic  #547                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
      91: ifne          101
      94: aload_1
      95: invokevirtual #422                // Method net/minecraft/world/entity/player/Player.m_20142_:()Z
      98: ifeq          106
     101: fconst_0
     102: putstatic     #557                // Field nailGunAutoFireAccumulator:F
     105: return
     106: iload         5
     108: ifne          121
     111: iconst_1
     112: istore        6
     114: fconst_0
     115: putstatic     #557                // Field nailGunAutoFireAccumulator:F
     118: goto          159
     121: getstatic     #557                // Field nailGunAutoFireAccumulator:F
     124: ldc_w         #566                // float 0.6f
     127: fadd
     128: putstatic     #557                // Field nailGunAutoFireAccumulator:F
     131: getstatic     #557                // Field nailGunAutoFireAccumulator:F
     134: fconst_1
     135: fcmpl
     136: iflt          143
     139: iconst_1
     140: goto          144
     143: iconst_0
     144: istore        6
     146: iload         6
     148: ifeq          159
     151: getstatic     #557                // Field nailGunAutoFireAccumulator:F
     154: fconst_1
     155: fsub
     156: putstatic     #557                // Field nailGunAutoFireAccumulator:F
     159: iload         6
     161: ifeq          171
     164: aload_3
     165: invokestatic  #570                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I
     168: ifgt          172
     171: return
     172: aload_3
     173: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
     176: checkcast     #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
     179: aload_1
     180: invokevirtual #505                // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level;
     183: aload_1
     184: aload_3
     185: aload_2
     186: invokevirtual #574                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.fire:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;)V
     189: aload_1
     190: invokevirtual #505                // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level;
     193: aload_1
     194: aload_3
     195: invokestatic  #578                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.playLocalShotSound:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;)V
     198: getstatic     #452                // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel;
     201: new           #580                // class com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket
     204: dup
     205: aload_2
     206: invokestatic  #190                // Method com/ogaba/sa_combat/client/render/NailGunAimClient.getProgress:()F
     209: invokespecial #583                // Method com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket."<init>":(Lnet/minecraft/world/InteractionHand;F)V
     212: invokevirtual #461                // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V
     215: return

  private static void tickNailGunReloadKey();
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_0
       4: getstatic     #590                // Field com/ogaba/sa_combat/client/ModKeyBindings.RELOAD_NAIL_GUN:Lnet/minecraft/client/KeyMapping;
       7: invokevirtual #593                // Method net/minecraft/client/KeyMapping.m_90859_:()Z
      10: ifeq          150
      13: aload_0
      14: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      17: astore_1
      18: aload_1
      19: ifnonnull     26
      22: aconst_null
      23: goto          30
      26: aload_1
      27: invokestatic  #561                // Method resolveNailGunHand:(Lnet/minecraft/world/entity/player/Player;)Lnet/minecraft/world/InteractionHand;
      30: astore_2
      31: aload_1
      32: ifnull        4
      35: aload_2
      36: ifnonnull     42
      39: goto          4
      42: aload_1
      43: aload_2
      44: invokevirtual #565                // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;
      47: astore_3
      48: aload_3
      49: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      52: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      55: ifne          61
      58: goto          4
      61: aload_1
      62: invokevirtual #597                // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities;
      65: getfield      #602                // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z
      68: ifne          78
      71: aload_1
      72: invokestatic  #606                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.countReserveAmmo:(Lnet/minecraft/world/entity/player/Player;)I
      75: ifle          82
      78: iconst_1
      79: goto          83
      82: iconst_0
      83: istore        4
      85: aload_3
      86: invokestatic  #544                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
      89: ifne          119
      92: aload_3
      93: invokestatic  #547                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
      96: ifne          119
      99: aload_3
     100: invokestatic  #570                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I
     103: aload_3
     104: invokestatic  #609                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.magazineCapacity:(Lnet/minecraft/world/item/ItemStack;)I
     107: if_icmpge     119
     110: iload         4
     112: ifeq          119
     115: iconst_1
     116: goto          120
     119: iconst_0
     120: istore        5
     122: iload         5
     124: ifne          130
     127: goto          4
     130: aload_3
     131: invokestatic  #613                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.markClientReloadAnimation:(Lnet/minecraft/world/item/ItemStack;)V
     134: getstatic     #452                // Field com/ogaba/sa_combat/network/ModMessages.INSTANCE:Lnet/minecraftforge/network/simple/SimpleChannel;
     137: new           #615                // class com/ogaba/sa_combat/network/packet/ReloadNailGunC2SPacket
     140: dup
     141: invokespecial #616                // Method com/ogaba/sa_combat/network/packet/ReloadNailGunC2SPacket."<init>":()V
     144: invokevirtual #461                // Method net/minecraftforge/network/simple/SimpleChannel.sendToServer:(Ljava/lang/Object;)V
     147: goto          4
     150: return

  private static net.minecraft.world.InteractionHand resolveNailGunHand(net.minecraft.world.entity.player.Player);
    Code:
       0: aload_0
       1: invokevirtual #154                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
       4: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
       7: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      10: ifeq          17
      13: getstatic     #179                // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand;
      16: areturn
      17: aconst_null
      18: areturn

  public static void onItemTooltip(net.minecraftforge.event.entity.player.ItemTooltipEvent);
    Code:
       0: aload_0
       1: invokevirtual #626                // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getItemStack:()Lnet/minecraft/world/item/ItemStack;
       4: astore_1
       5: aload_1
       6: invokevirtual #629                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       9: ifne          19
      12: aload_1
      13: invokestatic  #634                // Method com/ogaba/sa_combat/combat/weapon/WeaponSlotProfile.isUpgradeableWeapon:(Lnet/minecraft/world/item/ItemStack;)Z
      16: ifne          20
      19: return
      20: aload_1
      21: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      24: instanceof    #636                // class com/ogaba/sa_combat/combat/weapon/BaseMeleeWeapon
      27: istore_2
      28: iload_2
      29: ifne          70
      32: aload_1
      33: invokestatic  #641                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAnyAttachment:(Lnet/minecraft/world/item/ItemStack;)Z
      36: ifne          70
      39: aload_1
      40: invokestatic  #646                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.hasModifier:(Lnet/minecraft/world/item/ItemStack;)Z
      43: ifne          70
      46: aload_1
      47: invokestatic  #650                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getAttributeUpgrades:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;
      50: invokeinterface #655,  1          // InterfaceMethod java/util/List.isEmpty:()Z
      55: ifeq          70
      58: aload_1
      59: invokestatic  #658                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getAbilityUpgrades:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;
      62: invokeinterface #655,  1          // InterfaceMethod java/util/List.isEmpty:()Z
      67: ifne          74
      70: iconst_1
      71: goto          75
      74: iconst_0
      75: istore_3
      76: iload_3
      77: ifne          81
      80: return
      81: aload_0
      82: invokevirtual #662                // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List;
      85: invokestatic  #666                // Method removeAttributeLinesBeforeMainHandHeader:(Ljava/util/List;)V
      88: aload_0
      89: aload_1
      90: invokestatic  #670                // Method replaceMainHandAttributeTooltip:(Lnet/minecraftforge/event/entity/player/ItemTooltipEvent;Lnet/minecraft/world/item/ItemStack;)V
      93: iload_2
      94: ifne          132
      97: aload_1
      98: invokestatic  #675                // Method com/ogaba/sa_combat/combat/weapon/WeaponTooltipHelper.buildExternalTooltip:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;
     101: astore        4
     103: aload         4
     105: invokeinterface #655,  1          // InterfaceMethod java/util/List.isEmpty:()Z
     110: ifne          132
     113: aload_0
     114: invokevirtual #662                // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List;
     117: aload_0
     118: invokevirtual #662                // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List;
     121: invokestatic  #679                // Method findVanillaAttributeInsertIndex:(Ljava/util/List;)I
     124: aload         4
     126: invokeinterface #683,  3          // InterfaceMethod java/util/List.addAll:(ILjava/util/Collection;)Z
     131: pop
     132: aload_0
     133: invokevirtual #662                // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List;
     136: invokestatic  #666                // Method removeAttributeLinesBeforeMainHandHeader:(Ljava/util/List;)V
     139: return

  private static void removeAttributeLinesBeforeMainHandHeader(java.util.List<net.minecraft.network.chat.Component>);
    Code:
       0: aload_0
       1: invokestatic  #693                // Method findMainHandHeaderIndex:(Ljava/util/List;)I
       4: istore_1
       5: iload_1
       6: ifge          10
       9: return
      10: iload_1
      11: iconst_1
      12: isub
      13: istore_2
      14: iload_2
      15: iconst_1
      16: if_icmplt     137
      19: aload_0
      20: iload_2
      21: invokeinterface #696,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      26: checkcast     #698                // class net/minecraft/network/chat/Component
      29: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      34: astore_3
      35: aload_3
      36: invokestatic  #706                // Method isMainHandAttributeLine:(Ljava/lang/String;)Z
      39: ifeq          131
      42: aload_0
      43: iload_2
      44: invokeinterface #709,  2          // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object;
      49: pop
      50: iload_2
      51: aload_0
      52: invokeinterface #713,  1          // InterfaceMethod java/util/List.size:()I
      57: if_icmpge     92
      60: aload_0
      61: iload_2
      62: invokeinterface #696,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      67: checkcast     #698                // class net/minecraft/network/chat/Component
      70: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      75: invokevirtual #718                // Method java/lang/String.isBlank:()Z
      78: ifeq          92
      81: aload_0
      82: iload_2
      83: invokeinterface #709,  2          // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object;
      88: pop
      89: goto          131
      92: iload_2
      93: iconst_1
      94: isub
      95: ifle          131
      98: aload_0
      99: iload_2
     100: iconst_1
     101: isub
     102: invokeinterface #696,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
     107: checkcast     #698                // class net/minecraft/network/chat/Component
     110: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
     115: invokevirtual #718                // Method java/lang/String.isBlank:()Z
     118: ifeq          131
     121: aload_0
     122: iload_2
     123: iconst_1
     124: isub
     125: invokeinterface #709,  2          // InterfaceMethod java/util/List.remove:(I)Ljava/lang/Object;
     130: pop
     131: iinc          2, -1
     134: goto          14
     137: return

  private static void replaceMainHandAttributeTooltip(net.minecraftforge.event.entity.player.ItemTooltipEvent, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #662                // Method net/minecraftforge/event/entity/player/ItemTooltipEvent.getToolTip:()Ljava/util/List;
       4: astore_2
       5: aload_2
       6: invokestatic  #693                // Method findMainHandHeaderIndex:(Ljava/util/List;)I
       9: istore_3
      10: iload_3
      11: ifge          15
      14: return
      15: iload_3
      16: iconst_1
      17: iadd
      18: istore        4
      20: iload         4
      22: aload_2
      23: invokeinterface #713,  1          // InterfaceMethod java/util/List.size:()I
      28: if_icmpge     55
      31: aload_2
      32: iload         4
      34: invokeinterface #696,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      39: checkcast     #698                // class net/minecraft/network/chat/Component
      42: aload_1
      43: invokestatic  #727                // Method isTooltipTechnicalTail:(Lnet/minecraft/network/chat/Component;Lnet/minecraft/world/item/ItemStack;)Z
      46: ifne          55
      49: iinc          4, 1
      52: goto          20
      55: aload_2
      56: iload_3
      57: iload         4
      59: invokeinterface #731,  3          // InterfaceMethod java/util/List.subList:(II)Ljava/util/List;
      64: invokeinterface #734,  1          // InterfaceMethod java/util/List.clear:()V
      69: aload_2
      70: iload_3
      71: aload_1
      72: invokestatic  #737                // Method buildUnifiedMainHandAttributeTooltip:(Lnet/minecraft/world/item/ItemStack;)Ljava/util/List;
      75: invokeinterface #683,  3          // InterfaceMethod java/util/List.addAll:(ILjava/util/Collection;)Z
      80: pop
      81: return

  private static boolean isTooltipTechnicalTail(net.minecraft.network.chat.Component, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: ifnonnull     6
       4: iconst_0
       5: ireturn
       6: aload_0
       7: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      12: invokevirtual #741                // Method java/lang/String.trim:()Ljava/lang/String;
      15: astore_2
      16: aload_2
      17: invokevirtual #742                // Method java/lang/String.isEmpty:()Z
      20: ifeq          25
      23: iconst_0
      24: ireturn
      25: aload_1
      26: invokevirtual #745                // Method net/minecraft/world/item/ItemStack.m_41763_:()Z
      29: ifeq          93
      32: aload_1
      33: invokevirtual #748                // Method net/minecraft/world/item/ItemStack.m_41768_:()Z
      36: ifeq          93
      39: ldc_w         #750                // String item.durability
      42: iconst_2
      43: anewarray     #4                  // class java/lang/Object
      46: dup
      47: iconst_0
      48: aload_1
      49: invokevirtual #753                // Method net/minecraft/world/item/ItemStack.m_41776_:()I
      52: aload_1
      53: invokevirtual #756                // Method net/minecraft/world/item/ItemStack.m_41773_:()I
      56: isub
      57: invokestatic  #762                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      60: aastore
      61: dup
      62: iconst_1
      63: aload_1
      64: invokevirtual #753                // Method net/minecraft/world/item/ItemStack.m_41776_:()I
      67: invokestatic  #762                // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
      70: aastore
      71: invokestatic  #766                // InterfaceMethod net/minecraft/network/chat/Component.m_237110_:(Ljava/lang/String;[Ljava/lang/Object;)Lnet/minecraft/network/chat/MutableComponent;
      74: astore_3
      75: aload_2
      76: aload_3
      77: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      82: invokevirtual #741                // Method java/lang/String.trim:()Ljava/lang/String;
      85: invokevirtual #770                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      88: ifeq          93
      91: iconst_1
      92: ireturn
      93: aload_2
      94: getstatic     #776                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      97: invokevirtual #780                // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
     100: astore_3
     101: aload_3
     102: ldc_w         #782                // String nbt
     105: invokevirtual #785                // Method java/lang/String.startsWith:(Ljava/lang/String;)Z
     108: ifeq          113
     111: iconst_1
     112: ireturn
     113: aload_3
     114: ldc_w         #787                // String [a-z0-9_.-]+:[a-z0-9_./-]+
     117: invokevirtual #790                // Method java/lang/String.matches:(Ljava/lang/String;)Z
     120: ireturn

  private static java.util.List<net.minecraft.network.chat.Component> buildUnifiedMainHandAttributeTooltip(net.minecraft.world.item.ItemStack);
    Code:
       0: new           #797                // class java/util/ArrayList
       3: dup
       4: invokespecial #798                // Method java/util/ArrayList."<init>":()V
       7: astore_1
       8: aload_1
       9: ldc_w         #800                // String item.modifiers.mainhand
      12: invokestatic  #804                // InterfaceMethod net/minecraft/network/chat/Component.m_237115_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      15: getstatic     #810                // Field net/minecraft/ChatFormatting.GRAY:Lnet/minecraft/ChatFormatting;
      18: invokevirtual #816                // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent;
      21: invokeinterface #819,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      26: pop
      27: aload_0
      28: invokestatic  #823                // Method totalAttackDamage:(Lnet/minecraft/world/item/ItemStack;)D
      31: dstore_2
      32: dload_2
      33: dconst_0
      34: dcmpl
      35: ifle          63
      38: aload_1
      39: dload_2
      40: invokestatic  #827                // Method fmtAttribute:(D)Ljava/lang/String;
      43: invokedynamic #839,  0            // InvokeDynamic #0:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
      48: invokestatic  #842                // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      51: getstatic     #845                // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting;
      54: invokevirtual #816                // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent;
      57: invokeinterface #819,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      62: pop
      63: aload_0
      64: invokestatic  #848                // Method totalAttackSpeed:(Lnet/minecraft/world/item/ItemStack;)D
      67: dstore        4
      69: aload_1
      70: dload         4
      72: invokestatic  #827                // Method fmtAttribute:(D)Ljava/lang/String;
      75: invokedynamic #851,  0            // InvokeDynamic #1:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
      80: invokestatic  #842                // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
      83: getstatic     #845                // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting;
      86: invokevirtual #816                // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent;
      89: invokeinterface #819,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      94: pop
      95: aload_0
      96: invokestatic  #854                // Method totalAttackKnockback:(Lnet/minecraft/world/item/ItemStack;)D
      99: dstore        6
     101: dload         6
     103: invokestatic  #857                // Method java/lang/Math.abs:(D)D
     106: ldc2_w        #858                // double 0.001d
     109: dcmpl
     110: ifle          139
     113: aload_1
     114: dload         6
     116: invokestatic  #827                // Method fmtAttribute:(D)Ljava/lang/String;
     119: invokedynamic #862,  0            // InvokeDynamic #2:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
     124: invokestatic  #842                // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
     127: getstatic     #845                // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting;
     130: invokevirtual #816                // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent;
     133: invokeinterface #819,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     138: pop
     139: aload_0
     140: invokestatic  #865                // Method totalAttackReach:(Lnet/minecraft/world/item/ItemStack;)D
     143: dstore        8
     145: aload_1
     146: dload         8
     148: invokestatic  #827                // Method fmtAttribute:(D)Ljava/lang/String;
     151: invokedynamic #868,  0            // InvokeDynamic #3:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
     156: invokestatic  #842                // InterfaceMethod net/minecraft/network/chat/Component.m_237113_:(Ljava/lang/String;)Lnet/minecraft/network/chat/MutableComponent;
     159: getstatic     #845                // Field net/minecraft/ChatFormatting.DARK_GREEN:Lnet/minecraft/ChatFormatting;
     162: invokevirtual #816                // Method net/minecraft/network/chat/MutableComponent.m_130940_:(Lnet/minecraft/ChatFormatting;)Lnet/minecraft/network/chat/MutableComponent;
     165: invokeinterface #819,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
     170: pop
     171: aload_1
     172: areturn

  private static boolean isMainHandAttributeLine(java.lang.String);
    Code:
       0: aload_0
       1: ifnull        11
       4: aload_0
       5: invokevirtual #718                // Method java/lang/String.isBlank:()Z
       8: ifeq          13
      11: iconst_0
      12: ireturn
      13: aload_0
      14: getstatic     #776                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      17: invokevirtual #780                // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
      20: astore_1
      21: aload_1
      22: ldc_w         #876                // String attack damage
      25: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      28: ifne          121
      31: aload_1
      32: ldc_w         #882                // String attack speed
      35: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      38: ifne          121
      41: aload_1
      42: ldc_w         #884                // String attack range
      45: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      48: ifne          121
      51: aload_1
      52: ldc_w         #886                // String entity reach
      55: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      58: ifne          121
      61: aload_1
      62: ldc_w         #888                // String attack knockback
      65: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      68: ifne          121
      71: aload_1
      72: ldc_w         #890                // String dano de ataque
      75: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      78: ifne          121
      81: aload_1
      82: ldc_w         #892                // String velocidade de ataque
      85: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      88: ifne          121
      91: aload_1
      92: ldc_w         #894                // String alcance de ataque
      95: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      98: ifne          121
     101: aload_1
     102: ldc_w         #896                // String repuls
     105: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
     108: ifne          121
     111: aload_1
     112: ldc_w         #897                // String knockback
     115: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
     118: ifeq          125
     121: iconst_1
     122: goto          126
     125: iconst_0
     126: ireturn

  private static int findMainHandHeaderIndex(java.util.List<net.minecraft.network.chat.Component>);
    Code:
       0: iconst_1
       1: istore_1
       2: iload_1
       3: aload_0
       4: invokeinterface #713,  1          // InterfaceMethod java/util/List.size:()I
       9: if_icmpge     49
      12: aload_0
      13: iload_1
      14: invokeinterface #696,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      19: checkcast     #698                // class net/minecraft/network/chat/Component
      22: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      27: getstatic     #776                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      30: invokevirtual #780                // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
      33: astore_2
      34: aload_2
      35: invokestatic  #902                // Method isMainHandHeader:(Ljava/lang/String;)Z
      38: ifeq          43
      41: iload_1
      42: ireturn
      43: iinc          1, 1
      46: goto          2
      49: iconst_m1
      50: ireturn

  private static boolean isMainHandHeader(java.lang.String);
    Code:
       0: aload_0
       1: ldc_w         #904                // String when in main hand
       4: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
       7: ifne          40
      10: aload_0
      11: ldc_w         #906                // String main hand
      14: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      17: ifne          40
      20: aload_0
      21: ldc_w         #908                // String m?o principal
      24: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      27: ifne          40
      30: aload_0
      31: ldc_w         #910                // String mao principal
      34: invokevirtual #880                // Method java/lang/String.contains:(Ljava/lang/CharSequence;)Z
      37: ifeq          44
      40: iconst_1
      41: goto          45
      44: iconst_0
      45: ireturn

  private static double totalAttackDamage(net.minecraft.world.item.ItemStack);
    Code:
       0: dconst_0
       1: dstore_1
       2: aload_0
       3: getstatic     #916                // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot;
       6: invokevirtual #920                // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap;
       9: getstatic     #926                // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22281_:Lnet/minecraft/world/entity/ai/attributes/Attribute;
      12: invokeinterface #931,  2          // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection;
      17: invokeinterface #937,  1          // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator;
      22: astore_3
      23: aload_3
      24: invokeinterface #942,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      29: ifeq          54
      32: aload_3
      33: invokeinterface #945,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      38: checkcast     #947                // class net/minecraft/world/entity/ai/attributes/AttributeModifier
      41: astore        4
      43: dload_1
      44: aload         4
      46: invokevirtual #950                // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D
      49: dadd
      50: dstore_1
      51: goto          23
      54: dload_1
      55: dconst_0
      56: dcmpl
      57: ifle          66
      60: dload_1
      61: dconst_1
      62: dadd
      63: goto          67
      66: dconst_0
      67: dreturn

  private static double totalAttackSpeed(net.minecraft.world.item.ItemStack);
    Code:
       0: ldc2_w        #954                // double 4.0d
       3: dstore_1
       4: aload_0
       5: getstatic     #916                // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot;
       8: invokevirtual #920                // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap;
      11: getstatic     #958                // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22283_:Lnet/minecraft/world/entity/ai/attributes/Attribute;
      14: invokeinterface #931,  2          // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection;
      19: invokeinterface #937,  1          // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator;
      24: astore_3
      25: aload_3
      26: invokeinterface #942,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      31: ifeq          56
      34: aload_3
      35: invokeinterface #945,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      40: checkcast     #947                // class net/minecraft/world/entity/ai/attributes/AttributeModifier
      43: astore        4
      45: dload_1
      46: aload         4
      48: invokevirtual #950                // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D
      51: dadd
      52: dstore_1
      53: goto          25
      56: dload_1
      57: dreturn

  private static double totalAttackKnockback(net.minecraft.world.item.ItemStack);
    Code:
       0: dconst_0
       1: dstore_1
       2: aload_0
       3: getstatic     #916                // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot;
       6: invokevirtual #920                // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap;
       9: getstatic     #961                // Field net/minecraft/world/entity/ai/attributes/Attributes.f_22282_:Lnet/minecraft/world/entity/ai/attributes/Attribute;
      12: invokeinterface #931,  2          // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection;
      17: invokeinterface #937,  1          // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator;
      22: astore_3
      23: aload_3
      24: invokeinterface #942,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      29: ifeq          54
      32: aload_3
      33: invokeinterface #945,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      38: checkcast     #947                // class net/minecraft/world/entity/ai/attributes/AttributeModifier
      41: astore        4
      43: dload_1
      44: aload         4
      46: invokevirtual #950                // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D
      49: dadd
      50: dstore_1
      51: goto          23
      54: dload_1
      55: dreturn

  private static double totalAttackReach(net.minecraft.world.item.ItemStack);
    Code:
       0: ldc2_w        #962                // double 2.5d
       3: dstore_1
       4: aload_0
       5: getstatic     #916                // Field net/minecraft/world/entity/EquipmentSlot.MAINHAND:Lnet/minecraft/world/entity/EquipmentSlot;
       8: invokevirtual #920                // Method net/minecraft/world/item/ItemStack.m_41638_:(Lnet/minecraft/world/entity/EquipmentSlot;)Lcom/google/common/collect/Multimap;
      11: getstatic     #968                // Field net/minecraftforge/common/ForgeMod.ENTITY_REACH:Lnet/minecraftforge/registries/RegistryObject;
      14: invokevirtual #526                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
      17: checkcast     #970                // class net/minecraft/world/entity/ai/attributes/Attribute
      20: invokeinterface #931,  2          // InterfaceMethod com/google/common/collect/Multimap.get:(Ljava/lang/Object;)Ljava/util/Collection;
      25: invokeinterface #937,  1          // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator;
      30: astore_3
      31: aload_3
      32: invokeinterface #942,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      37: ifeq          62
      40: aload_3
      41: invokeinterface #945,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      46: checkcast     #947                // class net/minecraft/world/entity/ai/attributes/AttributeModifier
      49: astore        4
      51: dload_1
      52: aload         4
      54: invokevirtual #950                // Method net/minecraft/world/entity/ai/attributes/AttributeModifier.m_22218_:()D
      57: dadd
      58: dstore_1
      59: goto          31
      62: dload_1
      63: dreturn

  private static java.lang.String fmtAttribute(double);
    Code:
       0: dload_0
       1: dload_0
       2: invokestatic  #973                // Method java/lang/Math.rint:(D)D
       5: dsub
       6: invokestatic  #857                // Method java/lang/Math.abs:(D)D
       9: ldc2_w        #858                // double 0.001d
      12: dcmpg
      13: ifge          25
      16: dload_0
      17: invokestatic  #973                // Method java/lang/Math.rint:(D)D
      20: d2i
      21: invokestatic  #976                // Method java/lang/String.valueOf:(I)Ljava/lang/String;
      24: areturn
      25: getstatic     #776                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      28: ldc_w         #978                // String %.2f
      31: iconst_1
      32: anewarray     #4                  // class java/lang/Object
      35: dup
      36: iconst_0
      37: dload_0
      38: invokestatic  #983                // Method java/lang/Double.valueOf:(D)Ljava/lang/Double;
      41: aastore
      42: invokestatic  #987                // Method java/lang/String.format:(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
      45: astore_2
      46: aload_2
      47: ldc_w         #989                // String 0
      50: invokevirtual #992                // Method java/lang/String.endsWith:(Ljava/lang/String;)Z
      53: ifeq          71
      56: aload_2
      57: iconst_0
      58: aload_2
      59: invokevirtual #995                // Method java/lang/String.length:()I
      62: iconst_1
      63: isub
      64: invokevirtual #999                // Method java/lang/String.substring:(II)Ljava/lang/String;
      67: astore_2
      68: goto          46
      71: aload_2
      72: ldc_w         #1001               // String .
      75: invokevirtual #992                // Method java/lang/String.endsWith:(Ljava/lang/String;)Z
      78: ifeq          93
      81: aload_2
      82: iconst_0
      83: aload_2
      84: invokevirtual #995                // Method java/lang/String.length:()I
      87: iconst_1
      88: isub
      89: invokevirtual #999                // Method java/lang/String.substring:(II)Ljava/lang/String;
      92: astore_2
      93: aload_2
      94: areturn

  private static int findVanillaAttributeInsertIndex(java.util.List<net.minecraft.network.chat.Component>);
    Code:
       0: iconst_1
       1: istore_1
       2: iload_1
       3: aload_0
       4: invokeinterface #713,  1          // InterfaceMethod java/util/List.size:()I
       9: if_icmpge     81
      12: aload_0
      13: iload_1
      14: invokeinterface #696,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      19: checkcast     #698                // class net/minecraft/network/chat/Component
      22: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      27: getstatic     #776                // Field java/util/Locale.ROOT:Ljava/util/Locale;
      30: invokevirtual #780                // Method java/lang/String.toLowerCase:(Ljava/util/Locale;)Ljava/lang/String;
      33: astore_2
      34: aload_2
      35: invokestatic  #902                // Method isMainHandHeader:(Ljava/lang/String;)Z
      38: ifeq          75
      41: iload_1
      42: iconst_1
      43: if_icmple     73
      46: aload_0
      47: iload_1
      48: iconst_1
      49: isub
      50: invokeinterface #696,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      55: checkcast     #698                // class net/minecraft/network/chat/Component
      58: invokeinterface #702,  1          // InterfaceMethod net/minecraft/network/chat/Component.getString:()Ljava/lang/String;
      63: invokevirtual #742                // Method java/lang/String.isEmpty:()Z
      66: ifeq          73
      69: iload_1
      70: iconst_1
      71: isub
      72: ireturn
      73: iload_1
      74: ireturn
      75: iinc          1, 1
      78: goto          2
      81: aload_0
      82: invokeinterface #713,  1          // InterfaceMethod java/util/List.size:()I
      87: ireturn

  public static void onRenderGuiOverlay(net.minecraftforge.client.event.RenderGuiOverlayEvent$Post);
    Code:
       0: aload_0
       1: invokevirtual #1007               // Method net/minecraftforge/client/event/RenderGuiOverlayEvent$Post.getOverlay:()Lnet/minecraftforge/client/gui/overlay/NamedGuiOverlay;
       4: invokevirtual #1013               // Method net/minecraftforge/client/gui/overlay/NamedGuiOverlay.id:()Lnet/minecraft/resources/ResourceLocation;
       7: getstatic     #1019               // Field net/minecraftforge/client/gui/overlay/VanillaGuiOverlay.HOTBAR:Lnet/minecraftforge/client/gui/overlay/VanillaGuiOverlay;
      10: invokevirtual #1020               // Method net/minecraftforge/client/gui/overlay/VanillaGuiOverlay.id:()Lnet/minecraft/resources/ResourceLocation;
      13: invokevirtual #1023               // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z
      16: ifne          20
      19: return
      20: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
      23: astore_1
      24: aload_1
      25: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      28: ifnull        41
      31: aload_1
      32: getfield      #214                // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options;
      35: getfield      #1026               // Field net/minecraft/client/Options.f_92062_:Z
      38: ifeq          42
      41: return
      42: aload_0
      43: invokevirtual #1030               // Method net/minecraftforge/client/event/RenderGuiOverlayEvent$Post.getGuiGraphics:()Lnet/minecraft/client/gui/GuiGraphics;
      46: astore_2
      47: aload_2
      48: invokestatic  #1034               // Method renderBallisticVestHud:(Lnet/minecraft/client/gui/GuiGraphics;)V
      51: aload_2
      52: aload_1
      53: invokestatic  #1038               // Method renderGrenadeFuseHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V
      56: aload_2
      57: aload_1
      58: invokestatic  #1041               // Method renderNailGunAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V
      61: aload_2
      62: aload_1
      63: invokestatic  #1044               // Method renderCrossbowAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;)V
      66: aload_1
      67: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      70: invokevirtual #1049               // Method net/minecraft/client/player/LocalPlayer.m_150108_:()Z
      73: ifne          100
      76: getstatic     #1051               // Field tacticalScopeProgress:F
      79: ldc_w         #349                // float 0.01f
      82: fcmpl
      83: ifgt          96
      86: aload_1
      87: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      90: invokestatic  #1057               // Method com/ogaba/sa_combat/client/scope/TacticalCrossbowScopeClient.isScopingWithScopedCrossbow:(Lnet/minecraft/client/player/LocalPlayer;)Z
      93: ifeq          100
      96: aload_2
      97: invokestatic  #1062               // Method renderRealSpyglassOverlay:(Lnet/minecraft/client/gui/GuiGraphics;)V
     100: return

  private static void renderGrenadeFuseHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft);
    Code:
       0: aload_1
       1: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       4: astore_2
       5: aload_2
       6: ifnull        26
       9: aload_2
      10: invokevirtual #1066               // Method net/minecraft/world/entity/player/Player.m_6117_:()Z
      13: ifeq          26
      16: aload_2
      17: invokevirtual #1069               // Method net/minecraft/world/entity/player/Player.m_7655_:()Lnet/minecraft/world/InteractionHand;
      20: getstatic     #179                // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand;
      23: if_acmpeq     27
      26: return
      27: aload_2
      28: invokevirtual #154                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      31: astore_3
      32: aload_3
      33: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      36: astore        5
      38: aload         5
      40: instanceof    #165                // class com/ogaba/sa_combat/item/SpecialGrenadeItem
      43: ifeq          68
      46: aload         5
      48: checkcast     #165                // class com/ogaba/sa_combat/item/SpecialGrenadeItem
      51: astore        4
      53: aload         4
      55: invokevirtual #1072               // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.hasCookableFuse:()Z
      58: ifeq          68
      61: aload_3
      62: invokestatic  #1075               // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.isArmed:(Lnet/minecraft/world/item/ItemStack;)Z
      65: ifne          69
      68: return
      69: aload_3
      70: invokestatic  #1079               // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.getFuseTimerProgress:(Lnet/minecraft/world/item/ItemStack;)F
      73: fstore        5
      75: ldc_w         #1080               // float 55.0f
      78: fload         5
      80: fmul
      81: invokestatic  #1084               // Method net/minecraft/util/Mth.m_14143_:(F)I
      84: iconst_0
      85: bipush        55
      87: invokestatic  #1088               // Method net/minecraft/util/Mth.m_14045_:(III)I
      90: istore        6
      92: aload_0
      93: invokevirtual #1091               // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I
      96: bipush        64
      98: isub
      99: iconst_2
     100: idiv
     101: istore        7
     103: aload_0
     104: invokevirtual #1094               // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I
     107: iconst_2
     108: idiv
     109: bipush        27
     111: iadd
     112: istore        8
     114: invokestatic  #1099               // Method com/mojang/blaze3d/systems/RenderSystem.enableBlend:()V
     117: invokestatic  #1102               // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V
     120: iload         6
     122: ifle          151
     125: aload_0
     126: getstatic     #1104               // Field GRENADE_FUSE_FILL:Lnet/minecraft/resources/ResourceLocation;
     129: iload         7
     131: iconst_5
     132: iadd
     133: iload         8
     135: iconst_2
     136: iadd
     137: ldc_w         #273                // float 5.0f
     140: fconst_2
     141: iload         6
     143: iconst_4
     144: bipush        64
     146: bipush        10
     148: invokevirtual #1108               // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V
     151: aload_0
     152: getstatic     #1110               // Field GRENADE_FUSE_FRAME:Lnet/minecraft/resources/ResourceLocation;
     155: iload         7
     157: iload         8
     159: fconst_0
     160: fconst_0
     161: bipush        64
     163: bipush        10
     165: bipush        64
     167: bipush        10
     169: invokevirtual #1108               // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V
     172: invokestatic  #1113               // Method com/mojang/blaze3d/systems/RenderSystem.disableBlend:()V
     175: return

  private static void renderBallisticVestHud(net.minecraft.client.gui.GuiGraphics);
    Code:
       0: invokestatic  #1124               // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.shouldRender:()Z
       3: ifne          7
       6: return
       7: iconst_1
       8: invokestatic  #1127               // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.getMaxProtection:()I
      11: invokestatic  #1131               // Method java/lang/Math.max:(II)I
      14: istore_1
      15: invokestatic  #1134               // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.getProtection:()I
      18: iconst_0
      19: iload_1
      20: invokestatic  #1088               // Method net/minecraft/util/Mth.m_14045_:(III)I
      23: istore_2
      24: iload_2
      25: i2f
      26: iload_1
      27: i2f
      28: fdiv
      29: fconst_0
      30: fconst_1
      31: invokestatic  #238                // Method net/minecraft/util/Mth.m_14036_:(FFF)F
      34: fstore_3
      35: fload_3
      36: ldc_w         #1135               // float 16.0f
      39: fmul
      40: invokestatic  #1138               // Method net/minecraft/util/Mth.m_14167_:(F)I
      43: istore        4
      45: iload         4
      47: iconst_0
      48: bipush        16
      50: invokestatic  #1088               // Method net/minecraft/util/Mth.m_14045_:(III)I
      53: istore        4
      55: bipush        20
      57: istore        5
      59: aload_0
      60: invokevirtual #1094               // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I
      63: bipush        30
      65: isub
      66: bipush        20
      68: isub
      69: istore        6
      71: ldc_w         #1139               // float 1.875f
      74: fstore        7
      76: ldc_w         #1139               // float 1.875f
      79: fstore        8
      81: aload_0
      82: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      85: invokevirtual #1145               // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V
      88: aload_0
      89: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
      92: iload         5
      94: i2f
      95: iload         6
      97: i2f
      98: fconst_0
      99: invokevirtual #1149               // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V
     102: aload_0
     103: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     106: fload         7
     108: fload         8
     110: fconst_1
     111: invokevirtual #1152               // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V
     114: aload_0
     115: getstatic     #1154               // Field BALLISTIC_VEST_BG:Lnet/minecraft/resources/ResourceLocation;
     118: iconst_0
     119: iconst_0
     120: fconst_0
     121: fconst_0
     122: bipush        16
     124: bipush        16
     126: bipush        16
     128: bipush        16
     130: invokevirtual #1108               // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V
     133: iload         4
     135: ifle          167
     138: bipush        16
     140: iload         4
     142: isub
     143: istore        9
     145: aload_0
     146: getstatic     #1156               // Field BALLISTIC_VEST_FILL:Lnet/minecraft/resources/ResourceLocation;
     149: iconst_0
     150: iload         9
     152: fconst_0
     153: iload         9
     155: i2f
     156: bipush        16
     158: iload         4
     160: bipush        16
     162: bipush        16
     164: invokevirtual #1108               // Method net/minecraft/client/gui/GuiGraphics.m_280163_:(Lnet/minecraft/resources/ResourceLocation;IIFFIIII)V
     167: aload_0
     168: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     171: invokevirtual #1159               // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V
     174: return

  private static void renderNailGunAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft);
    Code:
       0: aload_1
       1: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       4: ifnonnull     8
       7: return
       8: aload_1
       9: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      12: invokevirtual #1168               // Method net/minecraft/client/player/LocalPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      15: astore_2
      16: aload_2
      17: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      20: instanceof    #167                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      23: ifne          27
      26: return
      27: aload_2
      28: invokestatic  #570                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I
      31: istore_3
      32: aload_1
      33: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      36: invokestatic  #1172               // Method refreshInventoryHudCache:(Lnet/minecraft/world/entity/player/Player;)V
      39: getstatic     #1174               // Field cachedNailReserve:I
      42: istore        4
      44: aload_0
      45: aload_1
      46: invokestatic  #1177               // Method nailIconStack:()Lnet/minecraft/world/item/ItemStack;
      49: iload_3
      50: invokestatic  #976                // Method java/lang/String.valueOf:(I)Ljava/lang/String;
      53: iload         4
      55: invokedynamic #1181,  0           // InvokeDynamic #4:makeConcatWithConstants:(I)Ljava/lang/String;
      60: iload_3
      61: ifgt          68
      64: iconst_1
      65: goto          69
      68: iconst_0
      69: aload_2
      70: invokestatic  #544                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
      73: ifne          83
      76: aload_2
      77: invokestatic  #547                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
      80: ifeq          87
      83: iconst_1
      84: goto          88
      87: iconst_0
      88: invokestatic  #1185               // Method renderAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Ljava/lang/String;ZZ)V
      91: return

  private static void renderCrossbowAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft);
    Code:
       0: aload_1
       1: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       4: ifnonnull     8
       7: return
       8: aload_1
       9: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      12: invokevirtual #1168               // Method net/minecraft/client/player/LocalPlayer.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      15: astore_2
      16: aload_2
      17: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      20: instanceof    #46                 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem
      23: ifne          45
      26: aload_1
      27: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      30: invokevirtual #1188               // Method net/minecraft/client/player/LocalPlayer.m_21206_:()Lnet/minecraft/world/item/ItemStack;
      33: astore_2
      34: aload_2
      35: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      38: instanceof    #46                 // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem
      41: ifne          45
      44: return
      45: aload_2
      46: invokestatic  #1192               // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.getSelectedBoltType:(Lnet/minecraft/world/item/ItemStack;)Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType;
      49: astore_3
      50: aload_3
      51: getstatic     #1196               // Field com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType.IMPROVISED:Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType;
      54: if_acmpne     63
      57: invokestatic  #1199               // Method improvisedBoltIconStack:()Lnet/minecraft/world/item/ItemStack;
      60: goto          66
      63: invokestatic  #1202               // Method tacticalBoltIconStack:()Lnet/minecraft/world/item/ItemStack;
      66: astore        4
      68: aload_1
      69: getfield      #148                // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
      72: invokestatic  #1172               // Method refreshInventoryHudCache:(Lnet/minecraft/world/entity/player/Player;)V
      75: aload_3
      76: getstatic     #1196               // Field com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType.IMPROVISED:Lcom/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem$BoltType;
      79: if_acmpne     88
      82: getstatic     #1204               // Field cachedImprovisedBoltReserve:I
      85: goto          91
      88: getstatic     #1206               // Field cachedTacticalBoltReserve:I
      91: istore        5
      93: aload_2
      94: invokestatic  #1209               // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoaded:(Lnet/minecraft/world/item/ItemStack;)Z
      97: istore        6
      99: aload_2
     100: invokestatic  #1212               // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoading:(Lnet/minecraft/world/item/ItemStack;)Z
     103: ifeq          117
     106: aload_2
     107: invokestatic  #1215               // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.hasAutoMechanism:(Lnet/minecraft/world/item/ItemStack;)Z
     110: ifne          117
     113: iconst_1
     114: goto          118
     117: iconst_0
     118: istore        7
     120: aload_0
     121: aload_1
     122: aload         4
     124: iload         6
     126: ifeq          135
     129: ldc_w         #1217               // String 1
     132: goto          138
     135: ldc_w         #989                // String 0
     138: iload         5
     140: invokedynamic #1181,  0           // InvokeDynamic #4:makeConcatWithConstants:(I)Ljava/lang/String;
     145: iload         6
     147: ifne          159
     150: iload         5
     152: ifgt          159
     155: iconst_1
     156: goto          160
     159: iconst_0
     160: iload         7
     162: invokestatic  #1185               // Method renderAmmoHud:(Lnet/minecraft/client/gui/GuiGraphics;Lnet/minecraft/client/Minecraft;Lnet/minecraft/world/item/ItemStack;Ljava/lang/String;Ljava/lang/String;ZZ)V
     165: return

  private static void refreshInventoryHudCache(net.minecraft.world.entity.player.Player);
    Code:
       0: aload_0
       1: ifnull        24
       4: getstatic     #1223               // Field cachedInventoryPlayerId:I
       7: aload_0
       8: invokevirtual #1226               // Method net/minecraft/world/entity/player/Player.m_19879_:()I
      11: if_icmpne     25
      14: getstatic     #1228               // Field cachedInventoryTick:I
      17: aload_0
      18: getfield      #1231               // Field net/minecraft/world/entity/player/Player.f_19797_:I
      21: if_icmpne     25
      24: return
      25: aload_0
      26: invokevirtual #1226               // Method net/minecraft/world/entity/player/Player.m_19879_:()I
      29: putstatic     #1223               // Field cachedInventoryPlayerId:I
      32: aload_0
      33: getfield      #1231               // Field net/minecraft/world/entity/player/Player.f_19797_:I
      36: putstatic     #1228               // Field cachedInventoryTick:I
      39: iconst_0
      40: putstatic     #1174               // Field cachedNailReserve:I
      43: iconst_0
      44: putstatic     #1206               // Field cachedTacticalBoltReserve:I
      47: iconst_0
      48: putstatic     #1204               // Field cachedImprovisedBoltReserve:I
      51: aload_0
      52: invokevirtual #1235               // Method net/minecraft/world/entity/player/Player.m_150109_:()Lnet/minecraft/world/entity/player/Inventory;
      55: getfield      #1241               // Field net/minecraft/world/entity/player/Inventory.f_35974_:Lnet/minecraft/core/NonNullList;
      58: invokevirtual #1244               // Method net/minecraft/core/NonNullList.iterator:()Ljava/util/Iterator;
      61: astore_1
      62: aload_1
      63: invokeinterface #942,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      68: ifeq          186
      71: aload_1
      72: invokeinterface #945,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      77: checkcast     #159                // class net/minecraft/world/item/ItemStack
      80: astore_2
      81: aload_2
      82: invokevirtual #629                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      85: ifeq          91
      88: goto          62
      91: getstatic     #1246               // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation;
      94: getstatic     #1252               // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry;
      97: aload_2
      98: invokevirtual #163                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
     101: invokeinterface #1258,  2         // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getKey:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation;
     106: invokevirtual #1023               // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z
     109: ifeq          126
     112: getstatic     #1174               // Field cachedNailReserve:I
     115: aload_2
     116: invokevirtual #1261               // Method net/minecraft/world/item/ItemStack.m_41613_:()I
     119: iadd
     120: putstatic     #1174               // Field cachedNailReserve:I
     123: goto          183
     126: aload_2
     127: getstatic     #1266               // Field com/ogaba/sa_combat/registry/ModItems.TACTICAL_BOLT:Lnet/minecraftforge/registries/RegistryObject;
     130: invokevirtual #526                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     133: checkcast     #1268               // class net/minecraft/world/item/Item
     136: invokevirtual #1272               // Method net/minecraft/world/item/ItemStack.m_150930_:(Lnet/minecraft/world/item/Item;)Z
     139: ifeq          156
     142: getstatic     #1206               // Field cachedTacticalBoltReserve:I
     145: aload_2
     146: invokevirtual #1261               // Method net/minecraft/world/item/ItemStack.m_41613_:()I
     149: iadd
     150: putstatic     #1206               // Field cachedTacticalBoltReserve:I
     153: goto          183
     156: aload_2
     157: getstatic     #1275               // Field com/ogaba/sa_combat/registry/ModItems.IMPROVISED_BOLT:Lnet/minecraftforge/registries/RegistryObject;
     160: invokevirtual #526                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     163: checkcast     #1268               // class net/minecraft/world/item/Item
     166: invokevirtual #1272               // Method net/minecraft/world/item/ItemStack.m_150930_:(Lnet/minecraft/world/item/Item;)Z
     169: ifeq          183
     172: getstatic     #1204               // Field cachedImprovisedBoltReserve:I
     175: aload_2
     176: invokevirtual #1261               // Method net/minecraft/world/item/ItemStack.m_41613_:()I
     179: iadd
     180: putstatic     #1204               // Field cachedImprovisedBoltReserve:I
     183: goto          62
     186: return

  private static void renderAmmoHud(net.minecraft.client.gui.GuiGraphics, net.minecraft.client.Minecraft, net.minecraft.world.item.ItemStack, java.lang.String, java.lang.String, boolean, boolean);
    Code:
       0: ldc_w         #1276               // float 1.4f
       3: fstore        7
       5: ldc_w         #1277               // float 1.8f
       8: fstore        8
      10: ldc_w         #1278               // float 1.2f
      13: fstore        9
      15: ldc_w         #1135               // float 16.0f
      18: fload         7
      20: fmul
      21: invokestatic  #1281               // Method java/lang/Math.round:(F)I
      24: istore        10
      26: aload_1
      27: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
      30: aload_3
      31: invokevirtual #1291               // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
      34: i2f
      35: fload         8
      37: fmul
      38: invokestatic  #1281               // Method java/lang/Math.round:(F)I
      41: istore        11
      43: aload_1
      44: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
      47: aload         4
      49: invokevirtual #1291               // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
      52: i2f
      53: fload         9
      55: fmul
      56: invokestatic  #1281               // Method java/lang/Math.round:(F)I
      59: istore        12
      61: iload         10
      63: bipush        8
      65: iadd
      66: iload         11
      68: iadd
      69: iconst_3
      70: iadd
      71: iload         12
      73: iadd
      74: istore        13
      76: iload         10
      78: aload_1
      79: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
      82: invokestatic  #1297               // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
      85: pop
      86: ldc_w         #1298               // float 9.0f
      89: fload         8
      91: fmul
      92: invokestatic  #1281               // Method java/lang/Math.round:(F)I
      95: invokestatic  #1131               // Method java/lang/Math.max:(II)I
      98: istore        14
     100: aload_0
     101: invokevirtual #1091               // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I
     104: bipush        16
     106: isub
     107: iload         13
     109: isub
     110: istore        15
     112: aload_0
     113: invokevirtual #1094               // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I
     116: bipush        16
     118: isub
     119: iload         14
     121: isub
     122: istore        16
     124: iload         6
     126: ifeq          189
     129: ldc_w         #1300               // String Reloading...
     132: astore        17
     134: aload_0
     135: invokevirtual #1091               // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I
     138: bipush        16
     140: isub
     141: aload_1
     142: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
     145: aload         17
     147: invokevirtual #1291               // Method net/minecraft/client/gui/Font.m_92895_:(Ljava/lang/String;)I
     150: isub
     151: istore        18
     153: iload         16
     155: aload_1
     156: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
     159: invokestatic  #1297               // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
     162: pop
     163: bipush        9
     165: isub
     166: iconst_3
     167: isub
     168: istore        19
     170: aload_0
     171: aload_1
     172: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
     175: aload         17
     177: iload         18
     179: iload         19
     181: ldc_w         #1301               // int 16765517
     184: iconst_1
     185: invokevirtual #1305               // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
     188: pop
     189: iload         15
     191: istore        17
     193: iload         16
     195: iload         14
     197: iload         10
     199: isub
     200: iconst_2
     201: idiv
     202: iadd
     203: istore        18
     205: aload_2
     206: invokevirtual #629                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
     209: ifne          259
     212: aload_0
     213: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     216: invokevirtual #1145               // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V
     219: aload_0
     220: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     223: iload         17
     225: i2f
     226: iload         18
     228: i2f
     229: fconst_0
     230: invokevirtual #1149               // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V
     233: aload_0
     234: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     237: fload         7
     239: fload         7
     241: fconst_1
     242: invokevirtual #1152               // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V
     245: aload_0
     246: aload_2
     247: iconst_0
     248: iconst_0
     249: invokevirtual #1309               // Method net/minecraft/client/gui/GuiGraphics.m_280480_:(Lnet/minecraft/world/item/ItemStack;II)V
     252: aload_0
     253: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     256: invokevirtual #1159               // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V
     259: iload         17
     261: iload         10
     263: iadd
     264: bipush        8
     266: iadd
     267: istore        19
     269: iload         5
     271: ifeq          280
     274: ldc_w         #1310               // int 16733525
     277: goto          283
     280: ldc_w         #1311               // int 16777215
     283: istore        20
     285: aload_0
     286: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     289: invokevirtual #1145               // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V
     292: aload_0
     293: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     296: iload         19
     298: i2f
     299: iload         16
     301: i2f
     302: iload         14
     304: aload_1
     305: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
     308: invokestatic  #1297               // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
     311: pop
     312: ldc_w         #1298               // float 9.0f
     315: fload         8
     317: fmul
     318: invokestatic  #1281               // Method java/lang/Math.round:(F)I
     321: isub
     322: i2f
     323: fconst_2
     324: fdiv
     325: fadd
     326: fconst_0
     327: invokevirtual #1149               // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V
     330: aload_0
     331: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     334: fload         8
     336: fload         8
     338: fconst_1
     339: invokevirtual #1152               // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V
     342: aload_0
     343: aload_1
     344: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
     347: aload_3
     348: iconst_0
     349: iconst_0
     350: iload         20
     352: iconst_1
     353: invokevirtual #1305               // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
     356: pop
     357: aload_0
     358: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     361: invokevirtual #1159               // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V
     364: aload_0
     365: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     368: invokevirtual #1145               // Method com/mojang/blaze3d/vertex/PoseStack.m_85836_:()V
     371: aload_0
     372: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     375: iload         19
     377: iload         11
     379: iadd
     380: iconst_3
     381: iadd
     382: i2f
     383: iload         16
     385: i2f
     386: iload         14
     388: aload_1
     389: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
     392: invokestatic  #1297               // Method java/util/Objects.requireNonNull:(Ljava/lang/Object;)Ljava/lang/Object;
     395: pop
     396: ldc_w         #1298               // float 9.0f
     399: fload         9
     401: fmul
     402: invokestatic  #1281               // Method java/lang/Math.round:(F)I
     405: isub
     406: i2f
     407: fconst_2
     408: fdiv
     409: fadd
     410: fconst_0
     411: invokevirtual #1149               // Method com/mojang/blaze3d/vertex/PoseStack.m_252880_:(FFF)V
     414: aload_0
     415: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     418: fload         9
     420: fload         9
     422: fconst_1
     423: invokevirtual #1152               // Method com/mojang/blaze3d/vertex/PoseStack.m_85841_:(FFF)V
     426: aload_0
     427: aload_1
     428: getfield      #1285               // Field net/minecraft/client/Minecraft.f_91062_:Lnet/minecraft/client/gui/Font;
     431: aload         4
     433: iconst_0
     434: iconst_0
     435: ldc_w         #1312               // int 11184810
     438: iconst_1
     439: invokevirtual #1305               // Method net/minecraft/client/gui/GuiGraphics.m_280056_:(Lnet/minecraft/client/gui/Font;Ljava/lang/String;IIIZ)I
     442: pop
     443: aload_0
     444: invokevirtual #1142               // Method net/minecraft/client/gui/GuiGraphics.m_280168_:()Lcom/mojang/blaze3d/vertex/PoseStack;
     447: invokevirtual #1159               // Method com/mojang/blaze3d/vertex/PoseStack.m_85849_:()V
     450: return

  private static net.minecraft.world.item.ItemStack nailIconStack();
    Code:
       0: getstatic     #1335               // Field nailIconResolved:Z
       3: ifne          46
       6: iconst_1
       7: putstatic     #1335               // Field nailIconResolved:Z
      10: getstatic     #1252               // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry;
      13: getstatic     #1246               // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation;
      16: invokeinterface #1339,  2         // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getValue:(Lnet/minecraft/resources/ResourceLocation;)Ljava/lang/Object;
      21: checkcast     #1268               // class net/minecraft/world/item/Item
      24: astore_0
      25: aload_0
      26: ifnonnull     35
      29: getstatic     #1342               // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
      32: goto          43
      35: new           #159                // class net/minecraft/world/item/ItemStack
      38: dup
      39: aload_0
      40: invokespecial #1345               // Method net/minecraft/world/item/ItemStack."<init>":(Lnet/minecraft/world/level/ItemLike;)V
      43: putstatic     #1347               // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack;
      46: getstatic     #1347               // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack;
      49: areturn

  private static net.minecraft.world.item.ItemStack tacticalBoltIconStack();
    Code:
       0: getstatic     #1351               // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack;
       3: invokevirtual #629                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       6: ifeq          28
       9: new           #159                // class net/minecraft/world/item/ItemStack
      12: dup
      13: getstatic     #1266               // Field com/ogaba/sa_combat/registry/ModItems.TACTICAL_BOLT:Lnet/minecraftforge/registries/RegistryObject;
      16: invokevirtual #526                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
      19: checkcast     #1353               // class net/minecraft/world/level/ItemLike
      22: invokespecial #1345               // Method net/minecraft/world/item/ItemStack."<init>":(Lnet/minecraft/world/level/ItemLike;)V
      25: putstatic     #1351               // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack;
      28: getstatic     #1351               // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack;
      31: areturn

  private static net.minecraft.world.item.ItemStack improvisedBoltIconStack();
    Code:
       0: getstatic     #1355               // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack;
       3: invokevirtual #629                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       6: ifeq          28
       9: new           #159                // class net/minecraft/world/item/ItemStack
      12: dup
      13: getstatic     #1275               // Field com/ogaba/sa_combat/registry/ModItems.IMPROVISED_BOLT:Lnet/minecraftforge/registries/RegistryObject;
      16: invokevirtual #526                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
      19: checkcast     #1353               // class net/minecraft/world/level/ItemLike
      22: invokespecial #1345               // Method net/minecraft/world/item/ItemStack."<init>":(Lnet/minecraft/world/level/ItemLike;)V
      25: putstatic     #1355               // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack;
      28: getstatic     #1355               // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack;
      31: areturn

  private static void renderRealSpyglassOverlay(net.minecraft.client.gui.GuiGraphics);
    Code:
       0: invokestatic  #144                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_1
       4: invokestatic  #1362               // Method vanillaSpyglassScopeScale:()F
       7: fstore_2
       8: getstatic     #1364               // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method;
      11: ifnonnull     53
      14: aload_1
      15: getfield      #1368               // Field net/minecraft/client/Minecraft.f_91065_:Lnet/minecraft/client/gui/Gui;
      18: invokevirtual #1372               // Method java/lang/Object.getClass:()Ljava/lang/Class;
      21: ldc_w         #1374               // String renderSpyglassOverlay
      24: iconst_2
      25: anewarray     #1376               // class java/lang/Class
      28: dup
      29: iconst_0
      30: ldc_w         #1059               // class net/minecraft/client/gui/GuiGraphics
      33: aastore
      34: dup
      35: iconst_1
      36: getstatic     #1382               // Field java/lang/Float.TYPE:Ljava/lang/Class;
      39: aastore
      40: invokevirtual #1386               // Method java/lang/Class.getDeclaredMethod:(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
      43: putstatic     #1364               // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method;
      46: getstatic     #1364               // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method;
      49: iconst_1
      50: invokevirtual #1391               // Method java/lang/reflect/Method.setAccessible:(Z)V
      53: getstatic     #1364               // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method;
      56: aload_1
      57: getfield      #1368               // Field net/minecraft/client/Minecraft.f_91065_:Lnet/minecraft/client/gui/Gui;
      60: iconst_2
      61: anewarray     #4                  // class java/lang/Object
      64: dup
      65: iconst_0
      66: aload_0
      67: aastore
      68: dup
      69: iconst_1
      70: fload_2
      71: invokestatic  #1394               // Method java/lang/Float.valueOf:(F)Ljava/lang/Float;
      74: aastore
      75: invokevirtual #1398               // Method java/lang/reflect/Method.invoke:(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
      78: pop
      79: return
      80: astore_3
      81: aload_0
      82: fload_2
      83: invokestatic  #1404               // Method renderVanillaSpyglassOverlayFallback:(Lnet/minecraft/client/gui/GuiGraphics;F)V
      86: return
    Exception table:
       from    to  target type
           8    79    80   Class java/lang/ReflectiveOperationException
           8    79    80   Class java/lang/RuntimeException

  private static float vanillaSpyglassScopeScale();
    Code:
       0: invokestatic  #1410               // Method easedScopeProgress:()F
       3: ldc_w         #262                // float 0.5f
       6: ldc_w         #1411               // float 1.125f
       9: invokestatic  #256                // Method net/minecraft/util/Mth.m_14179_:(FFF)F
      12: freturn

  private static float easedScopeProgress();
    Code:
       0: getstatic     #1051               // Field tacticalScopeProgress:F
       3: fconst_0
       4: fconst_1
       5: invokestatic  #238                // Method net/minecraft/util/Mth.m_14036_:(FFF)F
       8: fstore_0
       9: fload_0
      10: fload_0
      11: fmul
      12: ldc_w         #271                // float 3.0f
      15: fconst_2
      16: fload_0
      17: fmul
      18: fsub
      19: fmul
      20: freturn

  private static void renderVanillaSpyglassOverlayFallback(net.minecraft.client.gui.GuiGraphics, float);
    Code:
       0: aload_0
       1: invokevirtual #1091               // Method net/minecraft/client/gui/GuiGraphics.m_280182_:()I
       4: istore_2
       5: aload_0
       6: invokevirtual #1094               // Method net/minecraft/client/gui/GuiGraphics.m_280206_:()I
       9: istore_3
      10: iload_2
      11: ifle          18
      14: iload_3
      15: ifgt          19
      18: return
      19: iload_2
      20: iload_3
      21: invokestatic  #1414               // Method java/lang/Math.min:(II)I
      24: i2f
      25: fstore        4
      27: iload_2
      28: i2f
      29: fload         4
      31: fdiv
      32: iload_3
      33: i2f
      34: fload         4
      36: fdiv
      37: invokestatic  #1417               // Method java/lang/Math.min:(FF)F
      40: fload_1
      41: fmul
      42: fstore        5
      44: fload         4
      46: fload         5
      48: fmul
      49: invokestatic  #1084               // Method net/minecraft/util/Mth.m_14143_:(F)I
      52: istore        6
      54: fload         4
      56: fload         5
      58: fmul
      59: invokestatic  #1084               // Method net/minecraft/util/Mth.m_14143_:(F)I
      62: istore        7
      64: iload_2
      65: iload         6
      67: isub
      68: iconst_2
      69: idiv
      70: istore        8
      72: iload_3
      73: iload         7
      75: isub
      76: iconst_2
      77: idiv
      78: istore        9
      80: iload         8
      82: iload         6
      84: iadd
      85: istore        10
      87: iload         9
      89: iload         7
      91: iadd
      92: istore        11
      94: invokestatic  #1420               // Method com/mojang/blaze3d/systems/RenderSystem.disableDepthTest:()V
      97: iconst_0
      98: invokestatic  #1423               // Method com/mojang/blaze3d/systems/RenderSystem.depthMask:(Z)V
     101: invokestatic  #1099               // Method com/mojang/blaze3d/systems/RenderSystem.enableBlend:()V
     104: invokestatic  #1102               // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V
     107: aload_0
     108: getstatic     #1425               // Field VANILLA_SPYGLASS_SCOPE:Lnet/minecraft/resources/ResourceLocation;
     111: iload         8
     113: iload         9
     115: bipush        -90
     117: fconst_0
     118: fconst_0
     119: iload         6
     121: iload         7
     123: iload         6
     125: iload         7
     127: invokevirtual #1429               // Method net/minecraft/client/gui/GuiGraphics.m_280398_:(Lnet/minecraft/resources/ResourceLocation;IIIFFIIII)V
     130: aload_0
     131: invokestatic  #1435               // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType;
     134: iconst_0
     135: iload         11
     137: iload_2
     138: iload_3
     139: bipush        -90
     141: ldc_w         #1436               // int -16777216
     144: invokevirtual #1440               // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V
     147: aload_0
     148: invokestatic  #1435               // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType;
     151: iconst_0
     152: iconst_0
     153: iload_2
     154: iload         9
     156: bipush        -90
     158: ldc_w         #1436               // int -16777216
     161: invokevirtual #1440               // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V
     164: aload_0
     165: invokestatic  #1435               // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType;
     168: iconst_0
     169: iload         9
     171: iload         8
     173: iload         11
     175: bipush        -90
     177: ldc_w         #1436               // int -16777216
     180: invokevirtual #1440               // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V
     183: aload_0
     184: invokestatic  #1435               // Method net/minecraft/client/renderer/RenderType.m_286086_:()Lnet/minecraft/client/renderer/RenderType;
     187: iload         10
     189: iload         9
     191: iload_2
     192: iload         11
     194: bipush        -90
     196: ldc_w         #1436               // int -16777216
     199: invokevirtual #1440               // Method net/minecraft/client/gui/GuiGraphics.m_285795_:(Lnet/minecraft/client/renderer/RenderType;IIIIII)V
     202: iconst_1
     203: invokestatic  #1423               // Method com/mojang/blaze3d/systems/RenderSystem.depthMask:(Z)V
     206: invokestatic  #1102               // Method com/mojang/blaze3d/systems/RenderSystem.defaultBlendFunc:()V
     209: invokestatic  #1443               // Method com/mojang/blaze3d/systems/RenderSystem.enableDepthTest:()V
     212: return

  public static void onClientLoggingIn(net.minecraftforge.client.event.ClientPlayerNetworkEvent$LoggingIn);
    Code:
       0: invokestatic  #1457               // Method resetClientSessionState:()V
       3: return

  public static void onClientLoggingOut(net.minecraftforge.client.event.ClientPlayerNetworkEvent$LoggingOut);
    Code:
       0: invokestatic  #1457               // Method resetClientSessionState:()V
       3: return

  private static void resetClientSessionState();
    Code:
       0: iconst_0
       1: iconst_0
       2: invokestatic  #1465               // Method com/ogaba/sa_combat/client/armor/ClientBallisticProtectionData.set:(II)V
       5: fconst_0
       6: putstatic     #1051               // Field tacticalScopeProgress:F
       9: aconst_null
      10: putstatic     #1364               // Field renderSpyglassOverlayMethod:Ljava/lang/reflect/Method;
      13: iconst_0
      14: putstatic     #555                // Field nailGunTriggerWasDown:Z
      17: fconst_0
      18: putstatic     #557                // Field nailGunAutoFireAccumulator:F
      21: ldc2_w        #490                // long -9223372036854775808l
      24: putstatic     #493                // Field thirdPersonNailGunStackId:J
      27: iconst_0
      28: putstatic     #495                // Field thirdPersonNailGunReloadWasActive:Z
      31: iconst_0
      32: putstatic     #434                // Field crossbowCycleWasDown:Z
      35: ldc_w         #1466               // int -2147483648
      38: putstatic     #1223               // Field cachedInventoryPlayerId:I
      41: ldc_w         #1466               // int -2147483648
      44: putstatic     #1228               // Field cachedInventoryTick:I
      47: invokestatic  #1469               // Method com/ogaba/sa_combat/item/SpecialGrenadeItem.clearClientAnimationState:()V
      50: invokestatic  #1470               // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.clearClientAnimationState:()V
      53: invokestatic  #1473               // Method com/ogaba/sa_combat/client/render/NailGunAimClient.reset:()V
      56: invokestatic  #1478               // Method com/ogaba/sa_combat/client/render/NailGunCameraAnimation.resetImmediately:()V
      59: invokestatic  #1481               // Method com/ogaba/sa_combat/client/effect/NailHoleManager.clear:()V
      62: invokestatic  #1484               // Method com/ogaba/sa_combat/client/sound/ChainsawSoundManager.stop:()V
      65: return

  private static net.minecraft.resources.ResourceLocation rl(java.lang.String);
    Code:
       0: new           #1022               // class net/minecraft/resources/ResourceLocation
       3: dup
       4: ldc_w         #1487               // String sa_combat
       7: aload_0
       8: invokespecial #1490               // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      11: areturn

  static {};
    Code:
       0: ldc_w         #1494               // String textures/gui/hud/ballistic_vest_bg.png
       3: invokestatic  #1496               // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
       6: putstatic     #1154               // Field BALLISTIC_VEST_BG:Lnet/minecraft/resources/ResourceLocation;
       9: ldc_w         #1498               // String textures/gui/hud/ballistic_vest_fill.png
      12: invokestatic  #1496               // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
      15: putstatic     #1156               // Field BALLISTIC_VEST_FILL:Lnet/minecraft/resources/ResourceLocation;
      18: ldc_w         #1500               // String textures/gui/hud/grenade_fuse_frame.png
      21: invokestatic  #1496               // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
      24: putstatic     #1110               // Field GRENADE_FUSE_FRAME:Lnet/minecraft/resources/ResourceLocation;
      27: ldc_w         #1502               // String textures/gui/hud/compound_bow_power_fill.png
      30: invokestatic  #1496               // Method rl:(Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
      33: putstatic     #1104               // Field GRENADE_FUSE_FILL:Lnet/minecraft/resources/ResourceLocation;
      36: new           #1022               // class net/minecraft/resources/ResourceLocation
      39: dup
      40: ldc_w         #1503               // String minecraft
      43: ldc_w         #1505               // String textures/misc/spyglass_scope.png
      46: invokespecial #1490               // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      49: putstatic     #1425               // Field VANILLA_SPYGLASS_SCOPE:Lnet/minecraft/resources/ResourceLocation;
      52: new           #1022               // class net/minecraft/resources/ResourceLocation
      55: dup
      56: ldc_w         #1507               // String sa_core
      59: ldc_w         #1509               // String nails
      62: invokespecial #1490               // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      65: putstatic     #1246               // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation;
      68: ldc2_w        #490                // long -9223372036854775808l
      71: putstatic     #493                // Field thirdPersonNailGunStackId:J
      74: ldc_w         #1466               // int -2147483648
      77: putstatic     #1223               // Field cachedInventoryPlayerId:I
      80: ldc_w         #1466               // int -2147483648
      83: putstatic     #1228               // Field cachedInventoryTick:I
      86: getstatic     #1342               // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
      89: putstatic     #1347               // Field cachedNailIcon:Lnet/minecraft/world/item/ItemStack;
      92: getstatic     #1342               // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
      95: putstatic     #1351               // Field cachedTacticalBoltIcon:Lnet/minecraft/world/item/ItemStack;
      98: getstatic     #1342               // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
     101: putstatic     #1355               // Field cachedImprovisedBoltIcon:Lnet/minecraft/world/item/ItemStack;
     104: return
}


==================== com.ogaba.sa_combat.client.model.SAWeaponGeoModel ====================
Compiled from "SAWeaponGeoModel.java"
public class com.ogaba.sa_combat.client.model.SAWeaponGeoModel extends software.bernie.geckolib.model.GeoModel<com.ogaba.sa_combat.combat.weapon.SAWeaponItem> {
  private static final java.util.Map<net.minecraft.resources.ResourceLocation, java.lang.Boolean> RESOURCE_EXISTS_CACHE;

  private static final java.util.Map<net.minecraft.resources.ResourceLocation, java.util.List<java.lang.String>> ATTACHMENT_BONE_CANDIDATES_CACHE;

  private static final java.util.Map<com.ogaba.sa_combat.combat.weapon.SAWeaponItem, java.lang.String> ITEM_PATH_CACHE;

  private static final java.util.Map<java.lang.String, net.minecraft.resources.ResourceLocation> MODEL_RESOURCE_CACHE;

  private static final java.util.Map<java.lang.String, net.minecraft.resources.ResourceLocation> TEXTURE_RESOURCE_CACHE;

  private static final java.util.Map<java.lang.String, net.minecraft.resources.ResourceLocation> ANIMATION_RESOURCE_CACHE;

  private net.minecraft.world.item.ItemStack currentRenderStack;

  private static final java.util.List<java.lang.String> ELECTRIC_FX_BONES;

  private static final int ELECTRIC_FX_FRAME_TIME_TICKS;

  private static final java.util.List<java.lang.String> CROSSBOW_PROJECTILE_BONES;

  private static volatile int dynamicBoneCacheGeneration;

  private int observedDynamicBoneCacheGeneration;

  private final java.util.Map<java.lang.String, java.util.List<java.lang.String>> supportedAttachmentBonesByModel;

  private final java.util.Map<java.lang.String, java.util.List<java.lang.String>> supportedElectricFxBonesByModel;

  private boolean electricAttachmentInstalled;

  private final com.ogaba.sa_combat.combat.attachment.WeaponAttachmentData$AttachmentVisitor attachmentVisualVisitor;

  public com.ogaba.sa_combat.client.model.SAWeaponGeoModel();
    Code:
       0: aload_0
       1: invokespecial #49                 // Method software/bernie/geckolib/model/GeoModel."<init>":()V
       4: aload_0
       5: getstatic     #54                 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
       8: putfield      #56                 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack;
      11: aload_0
      12: getstatic     #58                 // Field dynamicBoneCacheGeneration:I
      15: putfield      #60                 // Field observedDynamicBoneCacheGeneration:I
      18: aload_0
      19: new           #62                 // class java/util/HashMap
      22: dup
      23: invokespecial #63                 // Method java/util/HashMap."<init>":()V
      26: putfield      #65                 // Field supportedAttachmentBonesByModel:Ljava/util/Map;
      29: aload_0
      30: new           #62                 // class java/util/HashMap
      33: dup
      34: invokespecial #63                 // Method java/util/HashMap."<init>":()V
      37: putfield      #67                 // Field supportedElectricFxBonesByModel:Ljava/util/Map;
      40: aload_0
      41: aload_0
      42: invokedynamic #84,  0             // InvokeDynamic #0:accept:(Lcom/ogaba/sa_combat/client/model/SAWeaponGeoModel;)Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor;
      47: putfield      #86                 // Field attachmentVisualVisitor:Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor;
      50: return

  public void setCurrentRenderStack(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: aload_1
       2: ifnonnull     11
       5: getstatic     #54                 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
       8: goto          12
      11: aload_1
      12: putfield      #56                 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack;
      15: return

  public void clearCurrentRenderStack();
    Code:
       0: aload_0
       1: getstatic     #54                 // Field net/minecraft/world/item/ItemStack.f_41583_:Lnet/minecraft/world/item/ItemStack;
       4: putfield      #56                 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack;
       7: return

  public net.minecraft.resources.ResourceLocation getModelResource(com.ogaba.sa_combat.combat.weapon.SAWeaponItem);
    Code:
       0: aload_1
       1: invokestatic  #98                 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String;
       4: astore_2
       5: getstatic     #100                // Field MODEL_RESOURCE_CACHE:Ljava/util/Map;
       8: aload_2
       9: invokedynamic #112,  0            // InvokeDynamic #1:apply:()Ljava/util/function/Function;
      14: invokeinterface #118,  3          // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
      19: checkcast     #120                // class net/minecraft/resources/ResourceLocation
      22: areturn

  public net.minecraft.resources.ResourceLocation getTextureResource(com.ogaba.sa_combat.combat.weapon.SAWeaponItem);
    Code:
       0: aload_1
       1: invokestatic  #98                 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String;
       4: astore_2
       5: ldc           #127                // String baseball_bat
       7: aload_2
       8: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      11: ifeq          74
      14: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
      17: aload_2
      18: invokeinterface #138,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      23: checkcast     #120                // class net/minecraft/resources/ResourceLocation
      26: astore_3
      27: aload_3
      28: ifnull        33
      31: aload_3
      32: areturn
      33: ldc           #140                // String textures/item/weapons/baseball_bat_modular.png
      35: iconst_3
      36: anewarray     #129                // class java/lang/String
      39: dup
      40: iconst_0
      41: ldc           #142                // String textures/item/baseball_bat_modular.png
      43: aastore
      44: dup
      45: iconst_1
      46: ldc           #144                // String textures/item/weapons/baseball_bat.png
      48: aastore
      49: dup
      50: iconst_2
      51: ldc           #146                // String textures/item/baseball_bat.png
      53: aastore
      54: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
      57: astore        4
      59: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
      62: aload_2
      63: aload         4
      65: invokeinterface #154,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      70: pop
      71: aload         4
      73: areturn
      74: ldc           #156                // String aluminum_baseball_bat
      76: aload_2
      77: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      80: ifeq          143
      83: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
      86: aload_2
      87: invokeinterface #138,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      92: checkcast     #120                // class net/minecraft/resources/ResourceLocation
      95: astore_3
      96: aload_3
      97: ifnull        102
     100: aload_3
     101: areturn
     102: ldc           #158                // String textures/item/weapons/aluminum_baseball_bat_modular.png
     104: iconst_3
     105: anewarray     #129                // class java/lang/String
     108: dup
     109: iconst_0
     110: ldc           #160                // String textures/item/aluminum_baseball_bat_modular.png
     112: aastore
     113: dup
     114: iconst_1
     115: ldc           #162                // String textures/item/weapons/aluminum_baseball_bat.png
     117: aastore
     118: dup
     119: iconst_2
     120: ldc           #164                // String textures/item/aluminum_baseball_bat.png
     122: aastore
     123: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
     126: astore        4
     128: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
     131: aload_2
     132: aload         4
     134: invokeinterface #154,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     139: pop
     140: aload         4
     142: areturn
     143: ldc           #166                // String chainsaw
     145: aload_2
     146: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     149: ifeq          295
     152: aload_0
     153: getfield      #56                 // Field currentRenderStack:Lnet/minecraft/world/item/ItemStack;
     156: invokestatic  #172                // Method com/ogaba/sa_combat/combat/weapon/ChainsawItem.isRunning:(Lnet/minecraft/world/item/ItemStack;)Z
     159: ifeq          174
     162: aload_0
     163: invokevirtual #176                // Method chainsawTextureFrame:()I
     166: iconst_1
     167: if_icmpne     174
     170: iconst_1
     171: goto          175
     174: iconst_0
     175: istore        5
     177: iload         5
     179: ifeq          187
     182: ldc           #178                // String chainsaw#frame1
     184: goto          189
     187: ldc           #180                // String chainsaw#frame0
     189: astore        6
     191: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
     194: aload         6
     196: invokeinterface #138,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     201: checkcast     #120                // class net/minecraft/resources/ResourceLocation
     204: astore_3
     205: aload_3
     206: ifnull        211
     209: aload_3
     210: areturn
     211: iload         5
     213: ifeq          253
     216: ldc           #184                // String textures/item/weapons/chainsaw1.png
     218: iconst_5
     219: anewarray     #129                // class java/lang/String
     222: dup
     223: iconst_0
     224: ldc           #186                // String textures/item/chainsaw1.png
     226: aastore
     227: dup
     228: iconst_1
     229: ldc           #188                // String textures/item/weapons/chainsaw.png
     231: aastore
     232: dup
     233: iconst_2
     234: ldc           #190                // String textures/item/chainsaw.png
     236: aastore
     237: dup
     238: iconst_3
     239: ldc           #192                // String textures/item/weapons/chainsaw0.png
     241: aastore
     242: dup
     243: iconst_4
     244: ldc           #194                // String textures/item/chainsaw0.png
     246: aastore
     247: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
     250: goto          277
     253: ldc           #188                // String textures/item/weapons/chainsaw.png
     255: iconst_3
     256: anewarray     #129                // class java/lang/String
     259: dup
     260: iconst_0
     261: ldc           #190                // String textures/item/chainsaw.png
     263: aastore
     264: dup
     265: iconst_1
     266: ldc           #192                // String textures/item/weapons/chainsaw0.png
     268: aastore
     269: dup
     270: iconst_2
     271: ldc           #194                // String textures/item/chainsaw0.png
     273: aastore
     274: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
     277: astore        4
     279: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
     282: aload         6
     284: aload         4
     286: invokeinterface #154,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     291: pop
     292: aload         4
     294: areturn
     295: ldc           #196                // String chainsaw_sword
     297: aload_2
     298: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     301: ifeq          447
     304: aload_0
     305: invokevirtual #176                // Method chainsawTextureFrame:()I
     308: iconst_1
     309: if_icmpne     316
     312: iconst_1
     313: goto          317
     316: iconst_0
     317: istore        5
     319: iload         5
     321: ifeq          329
     324: ldc           #198                // String chainsaw_sword#frame1
     326: goto          331
     329: ldc           #200                // String chainsaw_sword#frame0
     331: astore        6
     333: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
     336: aload         6
     338: invokeinterface #138,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     343: checkcast     #120                // class net/minecraft/resources/ResourceLocation
     346: astore_3
     347: aload_3
     348: ifnull        353
     351: aload_3
     352: areturn
     353: iload         5
     355: ifeq          395
     358: ldc           #202                // String textures/item/weapons/chainsaw_sword1.png
     360: iconst_5
     361: anewarray     #129                // class java/lang/String
     364: dup
     365: iconst_0
     366: ldc           #204                // String textures/item/chainsaw_sword1.png
     368: aastore
     369: dup
     370: iconst_1
     371: ldc           #206                // String textures/item/weapons/chainsaw_sword.png
     373: aastore
     374: dup
     375: iconst_2
     376: ldc           #208                // String textures/item/chainsaw_sword.png
     378: aastore
     379: dup
     380: iconst_3
     381: ldc           #210                // String textures/item/weapons/chainsaw_sword0.png
     383: aastore
     384: dup
     385: iconst_4
     386: ldc           #212                // String textures/item/chainsaw_sword0.png
     388: aastore
     389: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
     392: goto          429
     395: ldc           #206                // String textures/item/weapons/chainsaw_sword.png
     397: iconst_5
     398: anewarray     #129                // class java/lang/String
     401: dup
     402: iconst_0
     403: ldc           #208                // String textures/item/chainsaw_sword.png
     405: aastore
     406: dup
     407: iconst_1
     408: ldc           #210                // String textures/item/weapons/chainsaw_sword0.png
     410: aastore
     411: dup
     412: iconst_2
     413: ldc           #212                // String textures/item/chainsaw_sword0.png
     415: aastore
     416: dup
     417: iconst_3
     418: ldc           #202                // String textures/item/weapons/chainsaw_sword1.png
     420: aastore
     421: dup
     422: iconst_4
     423: ldc           #204                // String textures/item/chainsaw_sword1.png
     425: aastore
     426: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
     429: astore        4
     431: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
     434: aload         6
     436: aload         4
     438: invokeinterface #154,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     443: pop
     444: aload         4
     446: areturn
     447: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
     450: aload_2
     451: invokeinterface #138,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     456: checkcast     #120                // class net/minecraft/resources/ResourceLocation
     459: astore_3
     460: aload_3
     461: ifnull        466
     464: aload_3
     465: areturn
     466: aload_2
     467: invokestatic  #216                // Method isShieldPath:(Ljava/lang/String;)Z
     470: ifeq          509
     473: aload_2
     474: invokedynamic #228,  0            // InvokeDynamic #2:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
     479: iconst_2
     480: anewarray     #129                // class java/lang/String
     483: dup
     484: iconst_0
     485: aload_2
     486: invokedynamic #231,  0            // InvokeDynamic #3:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
     491: aastore
     492: dup
     493: iconst_1
     494: aload_2
     495: invokedynamic #234,  0            // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
     500: aastore
     501: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
     504: astore        4
     506: goto          533
     509: aload_2
     510: invokedynamic #231,  0            // InvokeDynamic #3:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
     515: iconst_1
     516: anewarray     #129                // class java/lang/String
     519: dup
     520: iconst_0
     521: aload_2
     522: invokedynamic #234,  0            // InvokeDynamic #4:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
     527: aastore
     528: invokestatic  #150                // Method firstExisting:(Ljava/lang/String;[Ljava/lang/String;)Lnet/minecraft/resources/ResourceLocation;
     531: astore        4
     533: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
     536: aload_2
     537: aload         4
     539: invokeinterface #154,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     544: pop
     545: aload         4
     547: areturn

  public net.minecraft.resources.ResourceLocation getAnimationResource(com.ogaba.sa_combat.combat.weapon.SAWeaponItem);
    Code:
       0: aload_1
       1: invokestatic  #98                 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String;
       4: astore_2
       5: getstatic     #242                // Field ANIMATION_RESOURCE_CACHE:Ljava/util/Map;
       8: aload_2
       9: invokedynamic #247,  0            // InvokeDynamic #5:apply:()Ljava/util/function/Function;
      14: invokeinterface #118,  3          // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
      19: checkcast     #120                // class net/minecraft/resources/ResourceLocation
      22: areturn

  public void setCustomAnimations(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, long, software.bernie.geckolib.core.animation.AnimationState<com.ogaba.sa_combat.combat.weapon.SAWeaponItem>);
    Code:
       0: aload_0
       1: aload_1
       2: lload_2
       3: aload         4
       5: invokespecial #253                // Method software/bernie/geckolib/model/GeoModel.setCustomAnimations:(Lsoftware/bernie/geckolib/core/animatable/GeoAnimatable;JLsoftware/bernie/geckolib/core/animation/AnimationState;)V
       8: aload_1
       9: invokestatic  #98                 // Method itemPath:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Ljava/lang/String;
      12: astore        5
      14: aload_0
      15: aload         5
      17: invokevirtual #257                // Method prepareDynamicBoneState:(Ljava/lang/String;)V
      20: aload_0
      21: aload_1
      22: invokevirtual #261                // Method hideCrossbowProjectileVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)V
      25: aload         4
      27: getstatic     #267                // Field software/bernie/geckolib/constant/DataTickets.ITEMSTACK:Lsoftware/bernie/geckolib/core/object/DataTicket;
      30: invokevirtual #273                // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object;
      33: checkcast     #51                 // class net/minecraft/world/item/ItemStack
      36: astore        6
      38: aload         6
      40: ifnull        51
      43: aload         6
      45: invokevirtual #277                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      48: ifeq          52
      51: return
      52: aload         4
      54: getstatic     #280                // Field software/bernie/geckolib/constant/DataTickets.ITEM_RENDER_PERSPECTIVE:Lsoftware/bernie/geckolib/core/object/DataTicket;
      57: invokevirtual #273                // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object;
      60: checkcast     #282                // class net/minecraft/world/item/ItemDisplayContext
      63: astore        7
      65: aload_0
      66: aload_1
      67: invokevirtual #286                // Method isCrossbow:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Z
      70: ifeq          89
      73: aload_0
      74: aload         7
      76: invokevirtual #290                // Method isHandRender:(Lnet/minecraft/world/item/ItemDisplayContext;)Z
      79: ifne          89
      82: aload_0
      83: invokevirtual #293                // Method resetCrossbowNonHandPose:()V
      86: goto          96
      89: aload_0
      90: aload_1
      91: aload         6
      93: invokevirtual #297                // Method applyCrossbowLoadedVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemStack;)V
      96: aload_0
      97: iconst_0
      98: putfield      #299                // Field electricAttachmentInstalled:Z
     101: aload         6
     103: aload_0
     104: getfield      #86                 // Field attachmentVisualVisitor:Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor;
     107: invokestatic  #303                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.visitInstalledAttachments:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachmentData$AttachmentVisitor;)I
     110: pop
     111: aload_0
     112: getfield      #299                // Field electricAttachmentInstalled:Z
     115: ifeq          124
     118: aload_0
     119: aload         5
     121: invokevirtual #306                // Method showElectricFxFrame:(Ljava/lang/String;)V
     124: aload_0
     125: aload_1
     126: aload         6
     128: invokevirtual #309                // Method applyNailGunMagazineVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemStack;)V
     131: aload_0
     132: aload_1
     133: aload         7
     135: invokevirtual #313                // Method applyCompoundBowPerspectivePose:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemDisplayContext;)V
     138: aload_0
     139: aload_1
     140: aload         6
     142: invokevirtual #316                // Method applyCompoundBowArrowVisual:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;Lnet/minecraft/world/item/ItemStack;)V
     145: return

  private void applyCompoundBowPerspectivePose(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemDisplayContext);
    Code:
       0: aload_1
       1: instanceof    #326                // class com/ogaba/sa_combat/combat/weapon/CompoundBowItem
       4: ifne          8
       7: return
       8: aload_2
       9: getstatic     #329                // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
      12: if_acmpeq     22
      15: aload_2
      16: getstatic     #332                // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
      19: if_acmpne     26
      22: iconst_1
      23: goto          27
      26: iconst_0
      27: istore_3
      28: iload_3
      29: ifeq          147
      32: aload_0
      33: invokevirtual #336                // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor;
      36: ldc_w         #338                // String refit
      39: invokevirtual #344                // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone;
      42: astore        4
      44: aload         4
      46: ifnull        146
      49: invokestatic  #350                // Method com/ogaba/sa_combat/client/render/CompoundBowClient.getAimProgress:()F
      52: fstore        5
      54: fload         5
      56: fconst_0
      57: fconst_0
      58: invokestatic  #356                // Method net/minecraft/util/Mth.m_14179_:(FFF)F
      61: fstore        6
      63: fload         5
      65: fconst_0
      66: fconst_0
      67: invokestatic  #356                // Method net/minecraft/util/Mth.m_14179_:(FFF)F
      70: fstore        7
      72: fload         5
      74: fconst_0
      75: ldc_w         #357                // float 72.5f
      78: invokestatic  #356                // Method net/minecraft/util/Mth.m_14179_:(FFF)F
      81: fstore        8
      83: aload         4
      85: aload         4
      87: invokeinterface #362,  1          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.getRotX:()F
      92: fload         6
      94: ldc_w         #363                // float 0.017453292f
      97: fmul
      98: fadd
      99: invokeinterface #367,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotX:(F)V
     104: aload         4
     106: aload         4
     108: invokeinterface #370,  1          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.getRotY:()F
     113: fload         7
     115: ldc_w         #363                // float 0.017453292f
     118: fmul
     119: fadd
     120: invokeinterface #373,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotY:(F)V
     125: aload         4
     127: aload         4
     129: invokeinterface #376,  1          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.getRotZ:()F
     134: fload         8
     136: ldc_w         #363                // float 0.017453292f
     139: fmul
     140: fadd
     141: invokeinterface #379,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotZ:(F)V
     146: return
     147: aload_0
     148: invokevirtual #382                // Method resetCompoundBowExternalPose:()V
     151: return

  private void resetCompoundBowExternalPose();
    Code:
       0: bipush        16
       2: anewarray     #129                // class java/lang/String
       5: dup
       6: iconst_0
       7: ldc_w         #338                // String refit
      10: aastore
      11: dup
      12: iconst_1
      13: ldc_w         #391                // String weapon
      16: aastore
      17: dup
      18: iconst_2
      19: ldc_w         #393                // String right_hand
      22: aastore
      23: dup
      24: iconst_3
      25: ldc_w         #395                // String left_hand
      28: aastore
      29: dup
      30: iconst_4
      31: ldc_w         #397                // String base
      34: aastore
      35: dup
      36: iconst_5
      37: ldc_w         #399                // String down
      40: aastore
      41: dup
      42: bipush        6
      44: ldc_w         #401                // String circ
      47: aastore
      48: dup
      49: bipush        7
      51: ldc_w         #403                // String up
      54: aastore
      55: dup
      56: bipush        8
      58: ldc_w         #405                // String circ2
      61: aastore
      62: dup
      63: bipush        9
      65: ldc_w         #407                // String string
      68: aastore
      69: dup
      70: bipush        10
      72: ldc_w         #409                // String up_string
      75: aastore
      76: dup
      77: bipush        11
      79: ldc_w         #411                // String down_string
      82: aastore
      83: dup
      84: bipush        12
      86: ldc_w         #413                // String arrow_bolt
      89: aastore
      90: dup
      91: bipush        13
      93: ldc_w         #415                // String arrow_Improvised
      96: aastore
      97: dup
      98: bipush        14
     100: ldc_w         #417                // String camera
     103: aastore
     104: dup
     105: bipush        15
     107: ldc_w         #419                // String idle_view
     110: aastore
     111: astore_1
     112: aload_1
     113: astore_2
     114: aload_2
     115: arraylength
     116: istore_3
     117: iconst_0
     118: istore        4
     120: iload         4
     122: iload_3
     123: if_icmpge     153
     126: aload_2
     127: iload         4
     129: aaload
     130: astore        5
     132: aload_0
     133: aload         5
     135: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
     138: aload_0
     139: aload         5
     141: fconst_1
     142: fconst_1
     143: fconst_1
     144: invokevirtual #428                // Method setBoneScale:(Ljava/lang/String;FFF)V
     147: iinc          4, 1
     150: goto          120
     153: return

  private void applyCompoundBowArrowVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_1
       1: instanceof    #326                // class com/ogaba/sa_combat/combat/weapon/CompoundBowItem
       4: ifne          8
       7: return
       8: aload_2
       9: invokestatic  #433                // Method com/ogaba/sa_combat/combat/weapon/CompoundBowItem.isClientImprovisedBolt:(Lnet/minecraft/world/item/ItemStack;)Z
      12: istore_3
      13: aload_0
      14: ldc_w         #413                // String arrow_bolt
      17: iload_3
      18: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      21: aload_0
      22: ldc_w         #415                // String arrow_Improvised
      25: iload_3
      26: ifne          33
      29: iconst_1
      30: goto          34
      33: iconst_0
      34: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      37: return

  private void applyNailGunMagazineVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_1
       1: instanceof    #440                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
       4: ifne          8
       7: return
       8: aload_2
       9: invokestatic  #443                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.hasExtendedMag:(Lnet/minecraft/world/item/ItemStack;)Z
      12: istore_3
      13: aload_2
      14: invokestatic  #446                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
      17: ifne          27
      20: aload_2
      21: invokestatic  #449                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
      24: ifeq          31
      27: iconst_1
      28: goto          32
      31: iconst_0
      32: istore        4
      34: aload_0
      35: ldc_w         #451                // String normal_mag
      38: iload_3
      39: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      42: aload_0
      43: ldc_w         #453                // String attach_extended_mag
      46: iload_3
      47: ifne          54
      50: iconst_1
      51: goto          55
      54: iconst_0
      55: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      58: aload_0
      59: ldc_w         #455                // String reload_normal_mag
      62: iload         4
      64: ifeq          71
      67: iload_3
      68: ifeq          75
      71: iconst_1
      72: goto          76
      75: iconst_0
      76: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      79: aload_0
      80: ldc_w         #457                // String reload_extended_mag
      83: iload         4
      85: ifeq          92
      88: iload_3
      89: ifne          96
      92: iconst_1
      93: goto          97
      96: iconst_0
      97: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
     100: return

  private static boolean isShieldPath(java.lang.String);
    Code:
       0: ldc_w         #461                // String scrap_shield
       3: aload_0
       4: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
       7: ifne          50
      10: ldc_w         #463                // String trash_lid_shield
      13: aload_0
      14: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      17: ifne          50
      20: ldc_w         #465                // String police_shield
      23: aload_0
      24: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      27: ifne          50
      30: ldc_w         #467                // String stop_sign_shield
      33: aload_0
      34: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      37: ifne          50
      40: ldc_w         #469                // String manhole_shield
      43: aload_0
      44: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      47: ifeq          54
      50: iconst_1
      51: goto          55
      54: iconst_0
      55: ireturn

  private boolean isCrossbow(com.ogaba.sa_combat.combat.weapon.SAWeaponItem);
    Code:
       0: aload_1
       1: instanceof    #471                // class com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem
       4: ireturn

  private boolean isHandRender(net.minecraft.world.item.ItemDisplayContext);
    Code:
       0: aload_1
       1: getstatic     #329                // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
       4: if_acmpeq     28
       7: aload_1
       8: getstatic     #332                // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
      11: if_acmpeq     28
      14: aload_1
      15: getstatic     #474                // Field net/minecraft/world/item/ItemDisplayContext.THIRD_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
      18: if_acmpeq     28
      21: aload_1
      22: getstatic     #477                // Field net/minecraft/world/item/ItemDisplayContext.THIRD_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
      25: if_acmpne     32
      28: iconst_1
      29: goto          33
      32: iconst_0
      33: ireturn

  private void resetCrossbowNonHandPose();
    Code:
       0: aload_0
       1: ldc_w         #480                // String main
       4: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
       7: aload_0
       8: ldc_w         #482                // String right_string
      11: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      14: aload_0
      15: ldc_w         #484                // String left_string
      18: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      21: aload_0
      22: ldc_w         #486                // String left
      25: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      28: aload_0
      29: ldc_w         #488                // String right
      32: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      35: aload_0
      36: ldc_w         #407                // String string
      39: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      42: aload_0
      43: ldc_w         #490                // String left_gear
      46: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      49: aload_0
      50: ldc_w         #492                // String right_gear
      53: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      56: aload_0
      57: ldc_w         #494                // String front_right
      60: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      63: aload_0
      64: ldc_w         #496                // String front_left
      67: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
      70: aload_0
      71: invokevirtual #500                // Method crossbowProjectileBones:()Ljava/util/List;
      74: invokeinterface #506,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      79: astore_1
      80: aload_1
      81: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      86: ifeq          121
      89: aload_1
      90: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      95: checkcast     #129                // class java/lang/String
      98: astore_2
      99: aload_0
     100: aload_2
     101: invokevirtual #424                // Method resetBonePose:(Ljava/lang/String;)V
     104: aload_0
     105: aload_2
     106: fconst_1
     107: fconst_1
     108: fconst_1
     109: invokevirtual #428                // Method setBoneScale:(Ljava/lang/String;FFF)V
     112: aload_0
     113: aload_2
     114: iconst_1
     115: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
     118: goto          80
     121: return

  private void resetBonePose(java.lang.String);
    Code:
       0: aload_0
       1: aload_1
       2: fconst_0
       3: fconst_0
       4: fconst_0
       5: fconst_0
       6: fconst_0
       7: fconst_0
       8: invokevirtual #520                // Method setBonePose:(Ljava/lang/String;FFFFFF)V
      11: return

  private void setBonePose(java.lang.String, float, float, float, float, float, float);
    Code:
       0: aload_0
       1: invokevirtual #336                // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor;
       4: aload_1
       5: invokevirtual #344                // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone;
       8: astore        8
      10: aload         8
      12: ifnull        79
      15: aload         8
      17: aload_0
      18: fload_2
      19: invokevirtual #524                // Method degreesToRadians:(F)F
      22: invokeinterface #367,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotX:(F)V
      27: aload         8
      29: aload_0
      30: fload_3
      31: invokevirtual #524                // Method degreesToRadians:(F)F
      34: invokeinterface #373,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotY:(F)V
      39: aload         8
      41: aload_0
      42: fload         4
      44: invokevirtual #524                // Method degreesToRadians:(F)F
      47: invokeinterface #379,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setRotZ:(F)V
      52: aload         8
      54: fload         5
      56: invokeinterface #527,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setPosX:(F)V
      61: aload         8
      63: fload         6
      65: invokeinterface #530,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setPosY:(F)V
      70: aload         8
      72: fload         7
      74: invokeinterface #533,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setPosZ:(F)V
      79: return

  private void setBoneScale(java.lang.String, float, float, float);
    Code:
       0: aload_0
       1: invokevirtual #336                // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor;
       4: aload_1
       5: invokevirtual #344                // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone;
       8: astore        5
      10: aload         5
      12: ifnull        40
      15: aload         5
      17: fload_2
      18: invokeinterface #542,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setScaleX:(F)V
      23: aload         5
      25: fload_3
      26: invokeinterface #545,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setScaleY:(F)V
      31: aload         5
      33: fload         4
      35: invokeinterface #548,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setScaleZ:(F)V
      40: return

  private float degreesToRadians(float);
    Code:
       0: fload_1
       1: ldc_w         #363                // float 0.017453292f
       4: fmul
       5: freturn

  private void hideCrossbowProjectileVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem);
    Code:
       0: aload_0
       1: aload_1
       2: invokevirtual #286                // Method isCrossbow:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Z
       5: ifne          9
       8: return
       9: aload_0
      10: invokevirtual #500                // Method crossbowProjectileBones:()Ljava/util/List;
      13: invokeinterface #506,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      18: astore_2
      19: aload_2
      20: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      25: ifeq          47
      28: aload_2
      29: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      34: checkcast     #129                // class java/lang/String
      37: astore_3
      38: aload_0
      39: aload_3
      40: iconst_1
      41: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      44: goto          19
      47: return

  private void applyCrossbowLoadedVisual(com.ogaba.sa_combat.combat.weapon.SAWeaponItem, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: aload_1
       2: invokevirtual #286                // Method isCrossbow:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Z
       5: ifne          9
       8: return
       9: aload_2
      10: invokestatic  #555                // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoaded:(Lnet/minecraft/world/item/ItemStack;)Z
      13: ifne          23
      16: aload_2
      17: invokestatic  #558                // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isLoading:(Lnet/minecraft/world/item/ItemStack;)Z
      20: ifeq          27
      23: iconst_1
      24: goto          28
      27: iconst_0
      28: istore_3
      29: iload_3
      30: ifne          34
      33: return
      34: aload_2
      35: invokestatic  #561                // Method com/ogaba/sa_combat/combat/weapon/TacticalCrossbowItem.isImprovisedBoltLoaded:(Lnet/minecraft/world/item/ItemStack;)Z
      38: istore        4
      40: iload         4
      42: ifeq          62
      45: aload_0
      46: ldc_w         #415                // String arrow_Improvised
      49: ldc_w         #563                // String arrow_improvised
      52: ldc_w         #565                // String improvised_arrow
      55: invokevirtual #569                // Method showFirstExistingBone:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
      58: ifeq          79
      61: return
      62: aload_0
      63: ldc_w         #413                // String arrow_bolt
      66: ldc_w         #571                // String tactical_arrow
      69: ldc_w         #573                // String bolt
      72: invokevirtual #569                // Method showFirstExistingBone:(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
      75: ifeq          79
      78: return
      79: aload_0
      80: ldc_w         #575                // String arrow
      83: invokevirtual #577                // Method showFirstExistingBone:(Ljava/lang/String;)Z
      86: pop
      87: return

  private java.util.List<java.lang.String> crossbowProjectileBones();
    Code:
       0: getstatic     #582                // Field CROSSBOW_PROJECTILE_BONES:Ljava/util/List;
       3: areturn

  private boolean showFirstExistingBone(java.lang.String);
    Code:
       0: aload_0
       1: aload_1
       2: invokevirtual #585                // Method hasBone:(Ljava/lang/String;)Z
       5: ifne          10
       8: iconst_0
       9: ireturn
      10: aload_0
      11: aload_1
      12: iconst_0
      13: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      16: iconst_1
      17: ireturn

  private boolean showFirstExistingBone(java.lang.String, java.lang.String, java.lang.String);
    Code:
       0: aload_0
       1: aload_1
       2: invokevirtual #577                // Method showFirstExistingBone:(Ljava/lang/String;)Z
       5: ifeq          10
       8: iconst_1
       9: ireturn
      10: aload_0
      11: aload_2
      12: invokevirtual #577                // Method showFirstExistingBone:(Ljava/lang/String;)Z
      15: ifeq          20
      18: iconst_1
      19: ireturn
      20: aload_0
      21: aload_3
      22: invokevirtual #577                // Method showFirstExistingBone:(Ljava/lang/String;)Z
      25: ireturn

  private void prepareDynamicBoneState(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #592                // Method refreshDynamicBoneCachesAfterReload:()V
       4: aload_0
       5: aload_1
       6: invokevirtual #596                // Method supportedAttachmentBones:(Ljava/lang/String;)Ljava/util/List;
       9: invokeinterface #506,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      14: astore_2
      15: aload_2
      16: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      21: ifeq          43
      24: aload_2
      25: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      30: checkcast     #129                // class java/lang/String
      33: astore_3
      34: aload_0
      35: aload_3
      36: iconst_1
      37: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      40: goto          15
      43: aload_0
      44: aload_1
      45: invokevirtual #599                // Method supportedElectricFxBones:(Ljava/lang/String;)Ljava/util/List;
      48: invokeinterface #506,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      53: astore_2
      54: aload_2
      55: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      60: ifeq          82
      63: aload_2
      64: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      69: checkcast     #129                // class java/lang/String
      72: astore_3
      73: aload_0
      74: aload_3
      75: iconst_1
      76: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      79: goto          54
      82: return

  private void refreshDynamicBoneCachesAfterReload();
    Code:
       0: getstatic     #58                 // Field dynamicBoneCacheGeneration:I
       3: istore_1
       4: aload_0
       5: getfield      #60                 // Field observedDynamicBoneCacheGeneration:I
       8: iload_1
       9: if_icmpne     13
      12: return
      13: aload_0
      14: getfield      #65                 // Field supportedAttachmentBonesByModel:Ljava/util/Map;
      17: invokeinterface #602,  1          // InterfaceMethod java/util/Map.clear:()V
      22: aload_0
      23: getfield      #67                 // Field supportedElectricFxBonesByModel:Ljava/util/Map;
      26: invokeinterface #602,  1          // InterfaceMethod java/util/Map.clear:()V
      31: aload_0
      32: iload_1
      33: putfield      #60                 // Field observedDynamicBoneCacheGeneration:I
      36: return

  private java.util.List<java.lang.String> supportedAttachmentBones(java.lang.String);
    Code:
       0: aload_0
       1: getfield      #65                 // Field supportedAttachmentBonesByModel:Ljava/util/Map;
       4: aload_1
       5: aload_0
       6: invokedynamic #612,  0            // InvokeDynamic #6:apply:(Lcom/ogaba/sa_combat/client/model/SAWeaponGeoModel;)Ljava/util/function/Function;
      11: invokeinterface #118,  3          // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
      16: checkcast     #502                // class java/util/List
      19: areturn

  private java.util.List<java.lang.String> supportedElectricFxBones(java.lang.String);
    Code:
       0: aload_0
       1: getfield      #67                 // Field supportedElectricFxBonesByModel:Ljava/util/Map;
       4: aload_1
       5: aload_0
       6: invokedynamic #617,  0            // InvokeDynamic #7:apply:(Lcom/ogaba/sa_combat/client/model/SAWeaponGeoModel;)Ljava/util/function/Function;
      11: invokeinterface #118,  3          // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
      16: checkcast     #502                // class java/util/List
      19: areturn

  private void applyAttachmentVisual(com.ogaba.sa_combat.combat.attachment.AttachmentSlot, com.ogaba.sa_combat.combat.attachment.WeaponAttachment);
    Code:
       0: aload_2
       1: ifnull        21
       4: aload_2
       5: invokevirtual #623                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String;
       8: ifnull        21
      11: aload_2
      12: invokevirtual #623                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String;
      15: invokevirtual #626                // Method java/lang/String.isBlank:()Z
      18: ifeq          22
      21: return
      22: aload_0
      23: aload_2
      24: invokevirtual #630                // Method resolveAttachmentBone:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/lang/String;
      27: astore_3
      28: aload_0
      29: aload_3
      30: iconst_0
      31: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      34: ldc_w         #632                // String attach_core_electric
      37: aload_3
      38: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      41: ifne          60
      44: ldc_w         #634                // String electric_kit
      47: aload_2
      48: invokevirtual #638                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation;
      51: invokevirtual #641                // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String;
      54: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      57: ifeq          65
      60: aload_0
      61: iconst_1
      62: putfield      #299                // Field electricAttachmentInstalled:Z
      65: return

  private java.lang.String resolveAttachmentBone(com.ogaba.sa_combat.combat.attachment.WeaponAttachment);
    Code:
       0: aload_0
       1: aload_1
       2: invokevirtual #649                // Method attachmentBoneCandidates:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/util/List;
       5: invokeinterface #506,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      10: astore_2
      11: aload_2
      12: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      17: ifeq          43
      20: aload_2
      21: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      26: checkcast     #129                // class java/lang/String
      29: astore_3
      30: aload_0
      31: aload_3
      32: invokevirtual #585                // Method hasBone:(Ljava/lang/String;)Z
      35: ifeq          40
      38: aload_3
      39: areturn
      40: goto          11
      43: aload_1
      44: invokevirtual #623                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String;
      47: areturn

  private java.util.List<java.lang.String> attachmentBoneCandidates(com.ogaba.sa_combat.combat.attachment.WeaponAttachment);
    Code:
       0: getstatic     #652                // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map;
       3: aload_1
       4: invokevirtual #638                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation;
       7: invokeinterface #138,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      12: checkcast     #502                // class java/util/List
      15: astore_2
      16: aload_2
      17: ifnull        22
      20: aload_2
      21: areturn
      22: aload_0
      23: aload_1
      24: invokevirtual #655                // Method computeAttachmentBoneCandidates:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/util/List;
      27: astore_3
      28: getstatic     #652                // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map;
      31: aload_1
      32: invokevirtual #638                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation;
      35: aload_3
      36: invokeinterface #154,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      41: pop
      42: aload_3
      43: areturn

  private java.util.List<java.lang.String> computeAttachmentBoneCandidates(com.ogaba.sa_combat.combat.attachment.WeaponAttachment);
    Code:
       0: aload_1
       1: invokevirtual #623                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.visualBoneName:()Ljava/lang/String;
       4: astore_2
       5: aload_1
       6: invokevirtual #638                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachment.id:()Lnet/minecraft/resources/ResourceLocation;
       9: invokevirtual #641                // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String;
      12: astore_3
      13: aload_3
      14: invokedynamic #659,  0            // InvokeDynamic #8:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
      19: astore        4
      21: ldc_w         #661                // String spyglass
      24: aload_3
      25: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      28: ifeq          80
      31: iconst_4
      32: anewarray     #129                // class java/lang/String
      35: dup
      36: iconst_0
      37: aload_2
      38: aastore
      39: dup
      40: iconst_1
      41: ldc_w         #663                // String attach_sight
      44: aastore
      45: dup
      46: iconst_2
      47: aload         4
      49: aastore
      50: dup
      51: iconst_3
      52: ldc_w         #661                // String spyglass
      55: aastore
      56: invokestatic  #669                // InterfaceMethod java/util/stream/Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
      59: invokedynamic #679,  0            // InvokeDynamic #9:test:()Ljava/util/function/Predicate;
      64: invokeinterface #683,  2          // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
      69: invokeinterface #687,  1          // InterfaceMethod java/util/stream/Stream.distinct:()Ljava/util/stream/Stream;
      74: invokeinterface #690,  1          // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List;
      79: areturn
      80: ldc_w         #692                // String spiked
      83: aload_3
      84: invokevirtual #133                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      87: ifeq          139
      90: iconst_4
      91: anewarray     #129                // class java/lang/String
      94: dup
      95: iconst_0
      96: aload_2
      97: aastore
      98: dup
      99: iconst_1
     100: ldc_w         #694                // String attach_spike
     103: aastore
     104: dup
     105: iconst_2
     106: aload         4
     108: aastore
     109: dup
     110: iconst_3
     111: ldc_w         #692                // String spiked
     114: aastore
     115: invokestatic  #669                // InterfaceMethod java/util/stream/Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
     118: invokedynamic #699,  0            // InvokeDynamic #10:test:()Ljava/util/function/Predicate;
     123: invokeinterface #683,  2          // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
     128: invokeinterface #687,  1          // InterfaceMethod java/util/stream/Stream.distinct:()Ljava/util/stream/Stream;
     133: invokeinterface #690,  1          // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List;
     138: areturn
     139: iconst_2
     140: anewarray     #129                // class java/lang/String
     143: dup
     144: iconst_0
     145: aload_2
     146: aastore
     147: dup
     148: iconst_1
     149: aload         4
     151: aastore
     152: invokestatic  #669                // InterfaceMethod java/util/stream/Stream.of:([Ljava/lang/Object;)Ljava/util/stream/Stream;
     155: invokedynamic #704,  0            // InvokeDynamic #11:test:()Ljava/util/function/Predicate;
     160: invokeinterface #683,  2          // InterfaceMethod java/util/stream/Stream.filter:(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
     165: invokeinterface #687,  1          // InterfaceMethod java/util/stream/Stream.distinct:()Ljava/util/stream/Stream;
     170: invokeinterface #690,  1          // InterfaceMethod java/util/stream/Stream.toList:()Ljava/util/List;
     175: areturn

  private void showElectricFxFrame(java.lang.String);
    Code:
       0: aload_0
       1: aload_1
       2: invokevirtual #599                // Method supportedElectricFxBones:(Ljava/lang/String;)Ljava/util/List;
       5: astore_2
       6: aload_2
       7: invokeinterface #709,  1          // InterfaceMethod java/util/List.isEmpty:()Z
      12: ifeq          16
      15: return
      16: invokestatic  #715                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
      19: getfield      #719                // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel;
      22: ifnull        37
      25: invokestatic  #715                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
      28: getfield      #719                // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel;
      31: invokevirtual #725                // Method net/minecraft/client/multiplayer/ClientLevel.m_46467_:()J
      34: goto          44
      37: invokestatic  #730                // Method net/minecraft/Util.m_137550_:()J
      40: ldc2_w        #731                // long 50l
      43: ldiv
      44: lstore_3
      45: lload_3
      46: ldc2_w        #733                // long 3l
      49: ldiv
      50: aload_2
      51: invokeinterface #737,  1          // InterfaceMethod java/util/List.size:()I
      56: i2l
      57: lrem
      58: l2i
      59: istore        5
      61: aload_0
      62: aload_2
      63: iload         5
      65: invokeinterface #740,  2          // InterfaceMethod java/util/List.get:(I)Ljava/lang/Object;
      70: checkcast     #129                // class java/lang/String
      73: iconst_0
      74: invokevirtual #437                // Method setBoneHidden:(Ljava/lang/String;Z)V
      77: return

  private int chainsawTextureFrame();
    Code:
       0: invokestatic  #715                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: getfield      #719                // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel;
       6: ifnull        21
       9: invokestatic  #715                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
      12: getfield      #719                // Field net/minecraft/client/Minecraft.f_91073_:Lnet/minecraft/client/multiplayer/ClientLevel;
      15: invokevirtual #725                // Method net/minecraft/client/multiplayer/ClientLevel.m_46467_:()J
      18: goto          28
      21: invokestatic  #730                // Method net/minecraft/Util.m_137550_:()J
      24: ldc2_w        #731                // long 50l
      27: ldiv
      28: lstore_1
      29: lload_1
      30: ldc2_w        #744                // long 2l
      33: ldiv
      34: lconst_1
      35: land
      36: l2i
      37: ireturn

  private boolean hasBone(java.lang.String);
    Code:
       0: aload_0
       1: invokevirtual #336                // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor;
       4: aload_1
       5: invokevirtual #344                // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone;
       8: ifnull        15
      11: iconst_1
      12: goto          16
      15: iconst_0
      16: ireturn

  private void setBoneHidden(java.lang.String, boolean);
    Code:
       0: aload_0
       1: invokevirtual #336                // Method getAnimationProcessor:()Lsoftware/bernie/geckolib/core/animation/AnimationProcessor;
       4: aload_1
       5: invokevirtual #344                // Method software/bernie/geckolib/core/animation/AnimationProcessor.getBone:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animatable/model/CoreGeoBone;
       8: astore_3
       9: aload_3
      10: ifnull        20
      13: aload_3
      14: iload_2
      15: invokeinterface #749,  2          // InterfaceMethod software/bernie/geckolib/core/animatable/model/CoreGeoBone.setHidden:(Z)V
      20: return

  private static net.minecraft.resources.ResourceLocation firstExisting(java.lang.String, java.lang.String...);
    Code:
       0: new           #120                // class net/minecraft/resources/ResourceLocation
       3: dup
       4: ldc_w         #752                // String sa_combat
       7: aload_0
       8: invokespecial #755                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      11: astore_2
      12: aload_2
      13: invokestatic  #759                // Method textureExists:(Lnet/minecraft/resources/ResourceLocation;)Z
      16: ifeq          21
      19: aload_2
      20: areturn
      21: aload_1
      22: astore_3
      23: aload_3
      24: arraylength
      25: istore        4
      27: iconst_0
      28: istore        5
      30: iload         5
      32: iload         4
      34: if_icmpge     74
      37: aload_3
      38: iload         5
      40: aaload
      41: astore        6
      43: new           #120                // class net/minecraft/resources/ResourceLocation
      46: dup
      47: ldc_w         #752                // String sa_combat
      50: aload         6
      52: invokespecial #755                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      55: astore        7
      57: aload         7
      59: invokestatic  #759                // Method textureExists:(Lnet/minecraft/resources/ResourceLocation;)Z
      62: ifeq          68
      65: aload         7
      67: areturn
      68: iinc          5, 1
      71: goto          30
      74: aload_2
      75: areturn

  private static boolean textureExists(net.minecraft.resources.ResourceLocation);
    Code:
       0: aload_0
       1: invokestatic  #765                // Method resourceExists:(Lnet/minecraft/resources/ResourceLocation;)Z
       4: ireturn

  private static boolean resourceExists(net.minecraft.resources.ResourceLocation);
    Code:
       0: getstatic     #770                // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map;
       3: aload_0
       4: invokeinterface #138,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
       9: checkcast     #772                // class java/lang/Boolean
      12: astore_1
      13: aload_1
      14: ifnull        22
      17: aload_1
      18: invokevirtual #775                // Method java/lang/Boolean.booleanValue:()Z
      21: ireturn
      22: invokestatic  #715                // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
      25: invokevirtual #779                // Method net/minecraft/client/Minecraft.m_91098_:()Lnet/minecraft/server/packs/resources/ResourceManager;
      28: aload_0
      29: invokeinterface #785,  2          // InterfaceMethod net/minecraft/server/packs/resources/ResourceManager.m_213713_:(Lnet/minecraft/resources/ResourceLocation;)Ljava/util/Optional;
      34: invokevirtual #790                // Method java/util/Optional.isPresent:()Z
      37: istore_2
      38: goto          44
      41: astore_3
      42: iconst_0
      43: istore_2
      44: getstatic     #770                // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map;
      47: aload_0
      48: iload_2
      49: invokestatic  #794                // Method java/lang/Boolean.valueOf:(Z)Ljava/lang/Boolean;
      52: invokeinterface #154,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      57: pop
      58: iload_2
      59: ireturn
    Exception table:
       from    to  target type
          22    38    41   Class java/lang/Exception

  public static void clearResourceExistenceCache();
    Code:
       0: getstatic     #770                // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map;
       3: invokeinterface #602,  1          // InterfaceMethod java/util/Map.clear:()V
       8: getstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
      11: invokeinterface #602,  1          // InterfaceMethod java/util/Map.clear:()V
      16: getstatic     #242                // Field ANIMATION_RESOURCE_CACHE:Ljava/util/Map;
      19: invokeinterface #602,  1          // InterfaceMethod java/util/Map.clear:()V
      24: getstatic     #652                // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map;
      27: invokeinterface #602,  1          // InterfaceMethod java/util/Map.clear:()V
      32: getstatic     #58                 // Field dynamicBoneCacheGeneration:I
      35: iconst_1
      36: iadd
      37: putstatic     #58                 // Field dynamicBoneCacheGeneration:I
      40: return

  private static java.lang.String itemPath(com.ogaba.sa_combat.combat.weapon.SAWeaponItem);
    Code:
       0: getstatic     #802                // Field ITEM_PATH_CACHE:Ljava/util/Map;
       3: aload_0
       4: invokedynamic #808,  0            // InvokeDynamic #12:apply:()Ljava/util/function/Function;
       9: invokeinterface #118,  3          // InterfaceMethod java/util/Map.computeIfAbsent:(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
      14: checkcast     #129                // class java/lang/String
      17: areturn

  public net.minecraft.resources.ResourceLocation getAnimationResource(software.bernie.geckolib.core.animatable.GeoAnimatable);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #182                // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem
       5: invokevirtual #812                // Method getAnimationResource:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Lnet/minecraft/resources/ResourceLocation;
       8: areturn

  public net.minecraft.resources.ResourceLocation getTextureResource(software.bernie.geckolib.core.animatable.GeoAnimatable);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #182                // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem
       5: invokevirtual #814                // Method getTextureResource:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Lnet/minecraft/resources/ResourceLocation;
       8: areturn

  public net.minecraft.resources.ResourceLocation getModelResource(software.bernie.geckolib.core.animatable.GeoAnimatable);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #182                // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem
       5: invokevirtual #816                // Method getModelResource:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;)Lnet/minecraft/resources/ResourceLocation;
       8: areturn

  public void setCustomAnimations(software.bernie.geckolib.core.animatable.GeoAnimatable, long, software.bernie.geckolib.core.animation.AnimationState);
    Code:
       0: aload_0
       1: aload_1
       2: checkcast     #182                // class com/ogaba/sa_combat/combat/weapon/SAWeaponItem
       5: lload_2
       6: aload         4
       8: invokevirtual #818                // Method setCustomAnimations:(Lcom/ogaba/sa_combat/combat/weapon/SAWeaponItem;JLsoftware/bernie/geckolib/core/animation/AnimationState;)V
      11: return

  private static java.lang.String lambda$itemPath$7(com.ogaba.sa_combat.combat.weapon.SAWeaponItem);
    Code:
       0: getstatic     #824                // Field net/minecraft/core/registries/BuiltInRegistries.f_257033_:Lnet/minecraft/core/DefaultedRegistry;
       3: aload_0
       4: invokeinterface #830,  2          // InterfaceMethod net/minecraft/core/DefaultedRegistry.m_7981_:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation;
       9: astore_1
      10: aload_1
      11: ifnonnull     19
      14: ldc           #127                // String baseball_bat
      16: goto          23
      19: aload_1
      20: invokevirtual #641                // Method net/minecraft/resources/ResourceLocation.m_135815_:()Ljava/lang/String;
      23: areturn

  private static boolean lambda$computeAttachmentBoneCandidates$6(java.lang.String);
    Code:
       0: aload_0
       1: ifnull        15
       4: aload_0
       5: invokevirtual #626                // Method java/lang/String.isBlank:()Z
       8: ifne          15
      11: iconst_1
      12: goto          16
      15: iconst_0
      16: ireturn

  private static boolean lambda$computeAttachmentBoneCandidates$5(java.lang.String);
    Code:
       0: aload_0
       1: ifnull        15
       4: aload_0
       5: invokevirtual #626                // Method java/lang/String.isBlank:()Z
       8: ifne          15
      11: iconst_1
      12: goto          16
      15: iconst_0
      16: ireturn

  private static boolean lambda$computeAttachmentBoneCandidates$4(java.lang.String);
    Code:
       0: aload_0
       1: ifnull        15
       4: aload_0
       5: invokevirtual #626                // Method java/lang/String.isBlank:()Z
       8: ifne          15
      11: iconst_1
      12: goto          16
      15: iconst_0
      16: ireturn

  private java.util.List lambda$supportedElectricFxBones$3(java.lang.String);
    Code:
       0: new           #835                // class java/util/ArrayList
       3: dup
       4: getstatic     #837                // Field ELECTRIC_FX_BONES:Ljava/util/List;
       7: invokeinterface #737,  1          // InterfaceMethod java/util/List.size:()I
      12: invokespecial #840                // Method java/util/ArrayList."<init>":(I)V
      15: astore_2
      16: getstatic     #837                // Field ELECTRIC_FX_BONES:Ljava/util/List;
      19: invokeinterface #506,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      24: astore_3
      25: aload_3
      26: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      31: ifeq          66
      34: aload_3
      35: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      40: checkcast     #129                // class java/lang/String
      43: astore        4
      45: aload_0
      46: aload         4
      48: invokevirtual #585                // Method hasBone:(Ljava/lang/String;)Z
      51: ifeq          63
      54: aload_2
      55: aload         4
      57: invokeinterface #843,  2          // InterfaceMethod java/util/List.add:(Ljava/lang/Object;)Z
      62: pop
      63: goto          25
      66: aload_2
      67: invokestatic  #847                // InterfaceMethod java/util/List.copyOf:(Ljava/util/Collection;)Ljava/util/List;
      70: areturn

  private java.util.List lambda$supportedAttachmentBones$2(java.lang.String);
    Code:
       0: new           #850                // class java/util/LinkedHashSet
       3: dup
       4: invokespecial #851                // Method java/util/LinkedHashSet."<init>":()V
       7: astore_2
       8: invokestatic  #857                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentRegistry.values:()Ljava/util/Collection;
      11: invokeinterface #860,  1          // InterfaceMethod java/util/Collection.iterator:()Ljava/util/Iterator;
      16: astore_3
      17: aload_3
      18: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      23: ifeq          104
      26: aload_3
      27: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      32: checkcast     #619                // class com/ogaba/sa_combat/combat/attachment/WeaponAttachment
      35: astore        4
      37: aload         4
      39: ifnonnull     45
      42: goto          17
      45: aload_0
      46: aload         4
      48: invokevirtual #649                // Method attachmentBoneCandidates:(Lcom/ogaba/sa_combat/combat/attachment/WeaponAttachment;)Ljava/util/List;
      51: invokeinterface #506,  1          // InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
      56: astore        5
      58: aload         5
      60: invokeinterface #511,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      65: ifeq          101
      68: aload         5
      70: invokeinterface #515,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      75: checkcast     #129                // class java/lang/String
      78: astore        6
      80: aload_0
      81: aload         6
      83: invokevirtual #585                // Method hasBone:(Ljava/lang/String;)Z
      86: ifeq          98
      89: aload_2
      90: aload         6
      92: invokeinterface #863,  2          // InterfaceMethod java/util/Set.add:(Ljava/lang/Object;)Z
      97: pop
      98: goto          58
     101: goto          17
     104: aload_2
     105: invokestatic  #847                // InterfaceMethod java/util/List.copyOf:(Ljava/util/Collection;)Ljava/util/List;
     108: areturn

  private static net.minecraft.resources.ResourceLocation lambda$getAnimationResource$1(java.lang.String);
    Code:
       0: new           #120                // class net/minecraft/resources/ResourceLocation
       3: dup
       4: ldc_w         #752                // String sa_combat
       7: aload_0
       8: invokedynamic #868,  0            // InvokeDynamic #13:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
      13: invokespecial #755                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      16: astore_1
      17: aload_1
      18: invokestatic  #765                // Method resourceExists:(Lnet/minecraft/resources/ResourceLocation;)Z
      21: ifeq          26
      24: aload_1
      25: areturn
      26: aload_0
      27: invokestatic  #216                // Method isShieldPath:(Ljava/lang/String;)Z
      30: ifeq          56
      33: new           #120                // class net/minecraft/resources/ResourceLocation
      36: dup
      37: ldc_w         #752                // String sa_combat
      40: ldc_w         #870                // String animations/item/shield.animation.json
      43: invokespecial #755                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      46: astore_2
      47: aload_2
      48: invokestatic  #765                // Method resourceExists:(Lnet/minecraft/resources/ResourceLocation;)Z
      51: ifeq          56
      54: aload_2
      55: areturn
      56: new           #120                // class net/minecraft/resources/ResourceLocation
      59: dup
      60: ldc_w         #752                // String sa_combat
      63: ldc_w         #872                // String animations/item/empty.animation.json
      66: invokespecial #755                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      69: areturn

  private static net.minecraft.resources.ResourceLocation lambda$getModelResource$0(java.lang.String);
    Code:
       0: new           #120                // class net/minecraft/resources/ResourceLocation
       3: dup
       4: ldc_w         #752                // String sa_combat
       7: aload_0
       8: invokedynamic #877,  0            // InvokeDynamic #14:makeConcatWithConstants:(Ljava/lang/String;)Ljava/lang/String;
      13: invokespecial #755                // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      16: areturn

  static {};
    Code:
       0: new           #880                // class java/util/concurrent/ConcurrentHashMap
       3: dup
       4: invokespecial #881                // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
       7: putstatic     #770                // Field RESOURCE_EXISTS_CACHE:Ljava/util/Map;
      10: new           #880                // class java/util/concurrent/ConcurrentHashMap
      13: dup
      14: invokespecial #881                // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      17: putstatic     #652                // Field ATTACHMENT_BONE_CANDIDATES_CACHE:Ljava/util/Map;
      20: new           #880                // class java/util/concurrent/ConcurrentHashMap
      23: dup
      24: invokespecial #881                // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      27: putstatic     #802                // Field ITEM_PATH_CACHE:Ljava/util/Map;
      30: new           #880                // class java/util/concurrent/ConcurrentHashMap
      33: dup
      34: invokespecial #881                // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      37: putstatic     #100                // Field MODEL_RESOURCE_CACHE:Ljava/util/Map;
      40: new           #880                // class java/util/concurrent/ConcurrentHashMap
      43: dup
      44: invokespecial #881                // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      47: putstatic     #135                // Field TEXTURE_RESOURCE_CACHE:Ljava/util/Map;
      50: new           #880                // class java/util/concurrent/ConcurrentHashMap
      53: dup
      54: invokespecial #881                // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      57: putstatic     #242                // Field ANIMATION_RESOURCE_CACHE:Ljava/util/Map;
      60: bipush        16
      62: anewarray     #129                // class java/lang/String
      65: dup
      66: iconst_0
      67: ldc_w         #883                // String attach_core_electric_fx_0
      70: aastore
      71: dup
      72: iconst_1
      73: ldc_w         #885                // String attach_core_electric_fx_1
      76: aastore
      77: dup
      78: iconst_2
      79: ldc_w         #887                // String attach_core_electric_fx_2
      82: aastore
      83: dup
      84: iconst_3
      85: ldc_w         #889                // String attach_core_electric_fx_3
      88: aastore
      89: dup
      90: iconst_4
      91: ldc_w         #891                // String attach_core_electric_fx_4
      94: aastore
      95: dup
      96: iconst_5
      97: ldc_w         #893                // String attach_core_electric_fx_5
     100: aastore
     101: dup
     102: bipush        6
     104: ldc_w         #895                // String attach_core_electric_fx_6
     107: aastore
     108: dup
     109: bipush        7
     111: ldc_w         #897                // String attach_core_electric_fx_7
     114: aastore
     115: dup
     116: bipush        8
     118: ldc_w         #899                // String electric_fx_0
     121: aastore
     122: dup
     123: bipush        9
     125: ldc_w         #901                // String electric_fx_1
     128: aastore
     129: dup
     130: bipush        10
     132: ldc_w         #903                // String electric_fx_2
     135: aastore
     136: dup
     137: bipush        11
     139: ldc_w         #905                // String electric_fx_3
     142: aastore
     143: dup
     144: bipush        12
     146: ldc_w         #907                // String electric_fx_4
     149: aastore
     150: dup
     151: bipush        13
     153: ldc_w         #909                // String electric_fx_5
     156: aastore
     157: dup
     158: bipush        14
     160: ldc_w         #911                // String electric_fx_6
     163: aastore
     164: dup
     165: bipush        15
     167: ldc_w         #913                // String electric_fx_7
     170: aastore
     171: invokestatic  #916                // InterfaceMethod java/util/List.of:([Ljava/lang/Object;)Ljava/util/List;
     174: putstatic     #837                // Field ELECTRIC_FX_BONES:Ljava/util/List;
     177: ldc_w         #575                // String arrow
     180: ldc_w         #413                // String arrow_bolt
     183: ldc_w         #415                // String arrow_Improvised
     186: ldc_w         #563                // String arrow_improvised
     189: ldc_w         #571                // String tactical_arrow
     192: ldc_w         #565                // String improvised_arrow
     195: ldc_w         #573                // String bolt
     198: invokestatic  #919                // InterfaceMethod java/util/List.of:(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/List;
     201: putstatic     #582                // Field CROSSBOW_PROJECTILE_BONES:Ljava/util/List;
     204: return
}


==================== com.ogaba.sa_combat.client.render.NailGunAimClient ====================
Compiled from "NailGunAimClient.java"
public final class com.ogaba.sa_combat.client.render.NailGunAimClient {
  private static final float OPEN_RESPONSE_PER_SECOND;

  private static final float CLOSE_RESPONSE_PER_SECOND;

  private static final float AIM_MOVEMENT_MULTIPLIER;

  private static float progress;

  private static long lastUpdateNanos;

  private com.ogaba.sa_combat.client.render.NailGunAimClient();
    Code:
       0: aload_0
       1: invokespecial #19                 // Method java/lang/Object."<init>":()V
       4: return

  public static void tick();
    Code:
       0: invokestatic  #28                 // Method net/minecraft/client/Minecraft.m_91087_:()Lnet/minecraft/client/Minecraft;
       3: astore_0
       4: invokestatic  #34                 // Method java/lang/System.nanoTime:()J
       7: lstore_1
       8: getstatic     #36                 // Field lastUpdateNanos:J
      11: lconst_0
      12: lcmp
      13: ifne          22
      16: ldc           #37                 // float 0.05f
      18: fstore_3
      19: goto          38
      22: lload_1
      23: getstatic     #36                 // Field lastUpdateNanos:J
      26: lsub
      27: l2f
      28: ldc           #38                 // float 1.0E9f
      30: fdiv
      31: fconst_0
      32: ldc           #39                 // float 0.1f
      34: invokestatic  #45                 // Method net/minecraft/util/Mth.m_14036_:(FFF)F
      37: fstore_3
      38: lload_1
      39: putstatic     #36                 // Field lastUpdateNanos:J
      42: aload_0
      43: invokestatic  #49                 // Method shouldAim:(Lnet/minecraft/client/Minecraft;)Z
      46: ifeq          53
      49: fconst_1
      50: goto          54
      53: fconst_0
      54: fstore        4
      56: fload         4
      58: getstatic     #51                 // Field progress:F
      61: fcmpl
      62: ifle          70
      65: ldc           #8                  // float 18.0f
      67: goto          72
      70: ldc           #10                 // float 22.0f
      72: fstore        5
      74: fconst_1
      75: fload         5
      77: fneg
      78: fload_3
      79: fmul
      80: f2d
      81: invokestatic  #57                 // Method java/lang/Math.exp:(D)D
      84: d2f
      85: fsub
      86: fstore        6
      88: fload         6
      90: getstatic     #51                 // Field progress:F
      93: fload         4
      95: invokestatic  #60                 // Method net/minecraft/util/Mth.m_14179_:(FFF)F
      98: putstatic     #51                 // Field progress:F
     101: getstatic     #51                 // Field progress:F
     104: ldc           #61                 // float 5.0E-4f
     106: fcmpg
     107: ifge          124
     110: fload         4
     112: fconst_0
     113: fcmpl
     114: ifne          124
     117: fconst_0
     118: putstatic     #51                 // Field progress:F
     121: goto          144
     124: getstatic     #51                 // Field progress:F
     127: ldc           #62                 // float 0.9995f
     129: fcmpl
     130: ifle          144
     133: fload         4
     135: fconst_1
     136: fcmpl
     137: ifne          144
     140: fconst_1
     141: putstatic     #51                 // Field progress:F
     144: return

  private static boolean shouldAim(net.minecraft.client.Minecraft);
    Code:
       0: aload_0
       1: getfield      #73                 // Field net/minecraft/client/Minecraft.f_91074_:Lnet/minecraft/client/player/LocalPlayer;
       4: astore_1
       5: aload_1
       6: ifnull        42
       9: aload_0
      10: getfield      #77                 // Field net/minecraft/client/Minecraft.f_91080_:Lnet/minecraft/client/gui/screens/Screen;
      13: ifnonnull     42
      16: aload_0
      17: getfield      #81                 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options;
      20: invokevirtual #87                 // Method net/minecraft/client/Options.m_92176_:()Lnet/minecraft/client/CameraType;
      23: invokevirtual #93                 // Method net/minecraft/client/CameraType.m_90612_:()Z
      26: ifeq          42
      29: aload_0
      30: getfield      #81                 // Field net/minecraft/client/Minecraft.f_91066_:Lnet/minecraft/client/Options;
      33: getfield      #97                 // Field net/minecraft/client/Options.f_92095_:Lnet/minecraft/client/KeyMapping;
      36: invokevirtual #102                // Method net/minecraft/client/KeyMapping.m_90857_:()Z
      39: ifne          44
      42: iconst_0
      43: ireturn
      44: aload_1
      45: invokevirtual #108                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
      48: astore_2
      49: aload_2
      50: invokevirtual #114                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      53: instanceof    #116                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      56: ifeq          77
      59: aload_2
      60: invokestatic  #120                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
      63: ifne          77
      66: aload_2
      67: invokestatic  #123                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
      70: ifne          77
      73: iconst_1
      74: goto          78
      77: iconst_0
      78: ireturn

  public static float getProgress();
    Code:
       0: getstatic     #51                 // Field progress:F
       3: fconst_0
       4: fconst_1
       5: invokestatic  #45                 // Method net/minecraft/util/Mth.m_14036_:(FFF)F
       8: fstore_0
       9: fload_0
      10: fload_0
      11: fmul
      12: ldc           #130                // float 3.0f
      14: fconst_2
      15: fload_0
      16: fmul
      17: fsub
      18: fmul
      19: freturn

  public static boolean isAiming(net.minecraft.world.entity.player.Player);
    Code:
       0: aload_0
       1: ifnull        30
       4: aload_0
       5: invokevirtual #108                // Method net/minecraft/world/entity/player/Player.m_21205_:()Lnet/minecraft/world/item/ItemStack;
       8: invokevirtual #114                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      11: instanceof    #116                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      14: ifeq          30
      17: invokestatic  #135                // Method getProgress:()F
      20: ldc           #136                // float 0.01f
      22: fcmpl
      23: ifle          30
      26: iconst_1
      27: goto          31
      30: iconst_0
      31: ireturn

  public static float getMovementMultiplier();
    Code:
       0: invokestatic  #135                // Method getProgress:()F
       3: fconst_1
       4: ldc           #12                 // float 0.58f
       6: invokestatic  #60                 // Method net/minecraft/util/Mth.m_14179_:(FFF)F
       9: freturn

  public static void reset();
    Code:
       0: fconst_0
       1: putstatic     #51                 // Field progress:F
       4: lconst_0
       5: putstatic     #36                 // Field lastUpdateNanos:J
       8: return
}


==================== com.ogaba.sa_combat.combat.weapon.NailGunItem ====================
Compiled from "NailGunItem.java"
public class com.ogaba.sa_combat.combat.weapon.NailGunItem extends com.ogaba.sa_combat.combat.weapon.SAWeaponItem {
  private static final java.lang.String NBT_MAGAZINE;

  private static final java.lang.String NBT_RELOADING;

  private static final java.lang.String NBT_RELOAD_TARGET;

  private static final java.lang.String NBT_RELOAD_END_TICK;

  private static final java.lang.String NBT_SERVER_NEXT_FIRE_SCALED;

  private static final int BASE_MAGAZINE_CAPACITY;

  private static final int EXTENDED_MAGAZINE_CAPACITY;

  public static final int RELOAD_TICKS;

  public static final float AUTO_FIRE_RATE_PER_SECOND;

  private static final long SHOOT_ANIM_DURATION_MS;

  private static final float BASE_INACCURACY;

  private static final float STOCK_INACCURACY;

  private static final float BASE_VOLUME;

  private static final float SILENCED_VOLUME;

  private static final float BASE_PITCH_MIN;

  private static final float BASE_PITCH_MAX;

  private static final float SILENCED_PITCH_MIN;

  private static final float SILENCED_PITCH_MAX;

  private static final float NAIL_VELOCITY;

  private static final float SILENCED_NAIL_VELOCITY;

  private static final double MUZZLE_FORWARD_HIP;

  private static final double MUZZLE_FORWARD_AIM;

  private static final double MUZZLE_RIGHT_HIP;

  private static final double MUZZLE_DOWN_HIP;

  private static final double MUZZLE_DOWN_AIM;

  private static final double MUZZLE_STRAFE_COMPENSATION;

  private static final double MUZZLE_STRAFE_COMPENSATION_LIMIT;

  private static final double AIM_CONVERGENCE_DISTANCE;

  private static final net.minecraft.resources.ResourceLocation NAIL_ITEM_ID;

  private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_IDLE;

  private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_DRAW;

  private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_SHOOT;

  private static final software.bernie.geckolib.core.animation.RawAnimation ANIM_RELOAD;

  private static final java.util.Map<java.lang.Long, java.lang.Long> CLIENT_SHOOT_ANIM_START;

  private static final java.util.Map<java.lang.Long, java.lang.Long> CLIENT_LAST_HANDLED_SHOT;

  private static final java.util.Map<java.lang.Long, java.lang.Long> CLIENT_LAST_HAND_RENDER;

  private static final java.util.Map<java.lang.Long, java.lang.Long> CLIENT_DRAW_ANIM_START;

  private static final java.util.Map<java.lang.Long, java.lang.Long> CLIENT_LAST_HANDLED_DRAW;

  private static final java.util.Map<java.lang.Long, java.lang.Long> CLIENT_RELOAD_ANIM_START;

  private static final java.util.Map<java.lang.Long, java.lang.Long> CLIENT_LAST_HANDLED_RELOAD;

  private static final long DRAW_ANIM_DURATION_MS;

  private static final long DRAW_REARM_GAP_MS;

  private static int reloadTicksForStack(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokestatic  #131                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getSpeedBonus:(Lnet/minecraft/world/item/ItemStack;)D
       4: aload_0
       5: invokestatic  #134                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getSpeedBonus:(Lnet/minecraft/world/item/ItemStack;)D
       8: dadd
       9: dstore_1
      10: dload_1
      11: ldc2_w        #135                // double 0.1d
      14: ddiv
      15: invokestatic  #142                // Method java/lang/Math.round:(D)J
      18: l2i
      19: istore_3
      20: iload_3
      21: iconst_4
      22: imul
      23: istore        4
      25: bipush        15
      27: bipush        37
      29: iload         4
      31: isub
      32: invokestatic  #146                // Method java/lang/Math.max:(II)I
      35: ireturn

  public com.ogaba.sa_combat.combat.weapon.NailGunItem(com.ogaba.sa_combat.combat.weapon.WeaponDefinition);
    Code:
       0: aload_0
       1: aload_1
       2: invokespecial #155                // Method com/ogaba/sa_combat/combat/weapon/SAWeaponItem."<init>":(Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition;)V
       5: return

  public net.minecraft.world.item.UseAnim m_6164_(net.minecraft.world.item.ItemStack);
    Code:
       0: getstatic     #167                // Field net/minecraft/world/item/UseAnim.NONE:Lnet/minecraft/world/item/UseAnim;
       3: areturn

  public boolean shouldCauseReequipAnimation(net.minecraft.world.item.ItemStack, net.minecraft.world.item.ItemStack, boolean);
    Code:
       0: iload_3
       1: ifeq          6
       4: iconst_1
       5: ireturn
       6: aload_1
       7: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      10: ifne          20
      13: aload_2
      14: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      17: ifeq          37
      20: aload_1
      21: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      24: aload_2
      25: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      28: if_icmpeq     35
      31: iconst_1
      32: goto          36
      35: iconst_0
      36: ireturn
      37: aload_1
      38: invokevirtual #179                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      41: aload_2
      42: invokevirtual #179                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      45: if_acmpeq     52
      48: iconst_1
      49: goto          53
      52: iconst_0
      53: ireturn

  public boolean shouldCauseBlockBreakReset(net.minecraft.world.item.ItemStack, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_1
       1: invokevirtual #179                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
       4: aload_2
       5: invokevirtual #179                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
       8: if_acmpeq     15
      11: iconst_1
      12: goto          16
      15: iconst_0
      16: ireturn

  public com.google.common.collect.Multimap<net.minecraft.world.entity.ai.attributes.Attribute, net.minecraft.world.entity.ai.attributes.AttributeModifier> m_7167_(net.minecraft.world.entity.EquipmentSlot);
    Code:
       0: invokestatic  #194                // Method com/google/common/collect/ImmutableMultimap.of:()Lcom/google/common/collect/ImmutableMultimap;
       3: areturn

  public com.google.common.collect.Multimap<net.minecraft.world.entity.ai.attributes.Attribute, net.minecraft.world.entity.ai.attributes.AttributeModifier> getAttributeModifiers(net.minecraft.world.entity.EquipmentSlot, net.minecraft.world.item.ItemStack);
    Code:
       0: invokestatic  #194                // Method com/google/common/collect/ImmutableMultimap.of:()Lcom/google/common/collect/ImmutableMultimap;
       3: areturn

  public boolean m_7579_(net.minecraft.world.item.ItemStack, net.minecraft.world.entity.LivingEntity, net.minecraft.world.entity.LivingEntity);
    Code:
       0: iconst_0
       1: ireturn

  public net.minecraft.world.InteractionResultHolder<net.minecraft.world.item.ItemStack> m_7203_(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.InteractionHand);
    Code:
       0: aload_2
       1: aload_3
       2: invokevirtual #213                // Method net/minecraft/world/entity/player/Player.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;
       5: invokestatic  #219                // Method net/minecraft/world/InteractionResultHolder.m_19100_:(Ljava/lang/Object;)Lnet/minecraft/world/InteractionResultHolder;
       8: areturn

  public void m_6883_(net.minecraft.world.item.ItemStack, net.minecraft.world.level.Level, net.minecraft.world.entity.Entity, int, boolean);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: aload_3
       4: iload         4
       6: iload         5
       8: invokespecial #229                // Method com/ogaba/sa_combat/combat/weapon/SAWeaponItem.m_6883_:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/Entity;IZ)V
      11: aload_2
      12: instanceof    #231                // class net/minecraft/server/level/ServerLevel
      15: ifeq          31
      18: aload_2
      19: checkcast     #231                // class net/minecraft/server/level/ServerLevel
      22: astore        6
      24: aload_1
      25: aload         6
      27: invokestatic  #237                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getOrAssignId:(Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/server/level/ServerLevel;)J
      30: pop2
      31: aload_2
      32: invokevirtual #242                // Method net/minecraft/world/level/Level.m_5776_:()Z
      35: ifne          61
      38: aload_1
      39: invokestatic  #246                // Method isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
      42: ifeq          61
      45: aload_3
      46: instanceof    #209                // class net/minecraft/world/entity/player/Player
      49: ifeq          61
      52: aload_3
      53: checkcast     #209                // class net/minecraft/world/entity/player/Player
      56: astore        6
      58: goto          62
      61: return
      62: iload         5
      64: ifne          78
      67: aload_1
      68: iconst_0
      69: invokestatic  #250                // Method setReloading:(Lnet/minecraft/world/item/ItemStack;Z)V
      72: aload_1
      73: iconst_0
      74: invokestatic  #254                // Method setReloadTarget:(Lnet/minecraft/world/item/ItemStack;I)V
      77: return
      78: aload         6
      80: invokevirtual #257                // Method net/minecraft/world/entity/player/Player.m_20142_:()Z
      83: ifeq          92
      86: aload         6
      88: iconst_0
      89: invokevirtual #261                // Method net/minecraft/world/entity/player/Player.m_6858_:(Z)V
      92: aload_2
      93: invokevirtual #265                // Method net/minecraft/world/level/Level.m_46467_:()J
      96: aload_1
      97: invokestatic  #269                // Method getReloadEndTick:(Lnet/minecraft/world/item/ItemStack;)J
     100: lcmp
     101: ifge          105
     104: return
     105: aload_1
     106: invokestatic  #272                // Method getReloadTarget:(Lnet/minecraft/world/item/ItemStack;)I
     109: istore        7
     111: aload         6
     113: invokevirtual #276                // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities;
     116: getfield      #281                // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z
     119: istore        8
     121: iload         8
     123: ifne          138
     126: iload         7
     128: ifle          138
     131: aload         6
     133: iload         7
     135: invokestatic  #285                // Method consumeReserveAmmo:(Lnet/minecraft/world/entity/player/Player;I)V
     138: aload_1
     139: aload_1
     140: invokestatic  #288                // Method magazineCapacity:(Lnet/minecraft/world/item/ItemStack;)I
     143: aload_1
     144: invokestatic  #291                // Method getMagazine:(Lnet/minecraft/world/item/ItemStack;)I
     147: iload         7
     149: iadd
     150: invokestatic  #294                // Method java/lang/Math.min:(II)I
     153: invokestatic  #297                // Method setMagazine:(Lnet/minecraft/world/item/ItemStack;I)V
     156: aload_1
     157: iconst_0
     158: invokestatic  #250                // Method setReloading:(Lnet/minecraft/world/item/ItemStack;Z)V
     161: aload_1
     162: iconst_0
     163: invokestatic  #254                // Method setReloadTarget:(Lnet/minecraft/world/item/ItemStack;I)V
     166: return

  public boolean attemptReload(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_3
       1: invokestatic  #246                // Method isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
       4: ifeq          9
       7: iconst_0
       8: ireturn
       9: aload_3
      10: invokestatic  #291                // Method getMagazine:(Lnet/minecraft/world/item/ItemStack;)I
      13: istore        4
      15: aload_3
      16: invokestatic  #288                // Method magazineCapacity:(Lnet/minecraft/world/item/ItemStack;)I
      19: istore        5
      21: iload         4
      23: iload         5
      25: if_icmplt     30
      28: iconst_0
      29: ireturn
      30: aload_2
      31: invokevirtual #276                // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities;
      34: getfield      #281                // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z
      37: istore        6
      39: aload_2
      40: invokestatic  #311                // Method countReserveAmmo:(Lnet/minecraft/world/entity/player/Player;)I
      43: istore        7
      45: iload         7
      47: ifgt          57
      50: iload         6
      52: ifne          57
      55: iconst_0
      56: ireturn
      57: aload_2
      58: invokevirtual #257                // Method net/minecraft/world/entity/player/Player.m_20142_:()Z
      61: ifeq          69
      64: aload_2
      65: iconst_0
      66: invokevirtual #261                // Method net/minecraft/world/entity/player/Player.m_6858_:(Z)V
      69: iload         6
      71: ifeq          82
      74: iload         5
      76: iload         4
      78: isub
      79: goto          92
      82: iload         5
      84: iload         4
      86: isub
      87: iload         7
      89: invokestatic  #294                // Method java/lang/Math.min:(II)I
      92: istore        8
      94: aload_3
      95: iconst_1
      96: invokestatic  #250                // Method setReloading:(Lnet/minecraft/world/item/ItemStack;Z)V
      99: aload_3
     100: iload         8
     102: invokestatic  #254                // Method setReloadTarget:(Lnet/minecraft/world/item/ItemStack;I)V
     105: aload_3
     106: aload_1
     107: invokevirtual #265                // Method net/minecraft/world/level/Level.m_46467_:()J
     110: aload_3
     111: invokestatic  #313                // Method reloadTicksForStack:(Lnet/minecraft/world/item/ItemStack;)I
     114: i2l
     115: ladd
     116: invokestatic  #317                // Method setReloadEndTick:(Lnet/minecraft/world/item/ItemStack;J)V
     119: iconst_1
     120: ireturn

  public void fire(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack, net.minecraft.world.InteractionHand);
    Code:
       0: aload_0
       1: aload_1
       2: aload_2
       3: aload_3
       4: aload         4
       6: fconst_0
       7: invokevirtual #325                // Method fire:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;F)V
      10: return

  public void fire(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack, net.minecraft.world.InteractionHand, float);
    Code:
       0: aload_1
       1: invokevirtual #242                // Method net/minecraft/world/level/Level.m_5776_:()Z
       4: ifeq          12
       7: aload_3
       8: invokestatic  #329                // Method markShootAnimation:(Lnet/minecraft/world/item/ItemStack;)V
      11: return
      12: aload_0
      13: aload_1
      14: aload_2
      15: aload_3
      16: invokevirtual #333                // Method createNail:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;)Lcom/ogaba/sa_combat/entity/projectile/NailEntity;
      19: astore        6
      21: fload         5
      23: invokestatic  #339                // Method java/lang/Float.isFinite:(F)Z
      26: ifeq          39
      29: fload         5
      31: fconst_0
      32: fconst_1
      33: invokestatic  #345                // Method net/minecraft/util/Mth.m_14036_:(FFF)F
      36: goto          40
      39: fconst_0
      40: fstore        7
      42: aload_2
      43: aload         4
      45: fload         7
      47: invokestatic  #351                // Method muzzlePosition:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;F)Lnet/minecraft/world/phys/Vec3;
      50: astore        8
      52: aload_2
      53: aload         8
      55: invokestatic  #355                // Method nailAimDirection:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;
      58: astore        9
      60: aload         6
      62: aload         8
      64: getfield      #360                // Field net/minecraft/world/phys/Vec3.f_82479_:D
      67: aload         8
      69: getfield      #363                // Field net/minecraft/world/phys/Vec3.f_82480_:D
      72: aload         8
      74: getfield      #366                // Field net/minecraft/world/phys/Vec3.f_82481_:D
      77: invokevirtual #370                // Method com/ogaba/sa_combat/entity/projectile/NailEntity.m_6034_:(DDD)V
      80: aload_3
      81: invokestatic  #373                // Method hasSilencer:(Lnet/minecraft/world/item/ItemStack;)Z
      84: istore        10
      86: aload_3
      87: invokestatic  #377                // Method projectileVelocity:(Lnet/minecraft/world/item/ItemStack;)F
      90: fstore        11
      92: aload         6
      94: aload         9
      96: getfield      #360                // Field net/minecraft/world/phys/Vec3.f_82479_:D
      99: aload         9
     101: getfield      #363                // Field net/minecraft/world/phys/Vec3.f_82480_:D
     104: aload         9
     106: getfield      #366                // Field net/minecraft/world/phys/Vec3.f_82481_:D
     109: fload         11
     111: aload_3
     112: invokestatic  #380                // Method projectileInaccuracy:(Lnet/minecraft/world/item/ItemStack;)F
     115: invokevirtual #384                // Method com/ogaba/sa_combat/entity/projectile/NailEntity.m_6686_:(DDDFF)V
     118: aload_1
     119: aload         6
     121: invokevirtual #388                // Method net/minecraft/world/level/Level.m_7967_:(Lnet/minecraft/world/entity/Entity;)Z
     124: pop
     125: aload_3
     126: iconst_0
     127: aload_3
     128: invokestatic  #291                // Method getMagazine:(Lnet/minecraft/world/item/ItemStack;)I
     131: iconst_1
     132: isub
     133: invokestatic  #146                // Method java/lang/Math.max:(II)I
     136: invokestatic  #297                // Method setMagazine:(Lnet/minecraft/world/item/ItemStack;I)V
     139: aload_3
     140: iconst_1
     141: aload_2
     142: invokedynamic #410,  0            // InvokeDynamic #0:accept:()Ljava/util/function/Consumer;
     147: invokevirtual #414                // Method net/minecraft/world/item/ItemStack.m_41622_:(ILnet/minecraft/world/entity/LivingEntity;Ljava/util/function/Consumer;)V
     150: aload_2
     151: getstatic     #420                // Field net/minecraft/stats/Stats.f_12982_:Lnet/minecraft/stats/StatType;
     154: aload_0
     155: invokevirtual #426                // Method net/minecraft/stats/StatType.m_12902_:(Ljava/lang/Object;)Lnet/minecraft/stats/Stat;
     158: invokevirtual #430                // Method net/minecraft/world/entity/player/Player.m_36246_:(Lnet/minecraft/stats/Stat;)V
     161: iload         10
     163: ifeq          171
     166: ldc           #65                 // float 0.75f
     168: goto          172
     171: fconst_2
     172: fstore        12
     174: iload         10
     176: ifeq          198
     179: ldc           #71                 // float 1.08f
     181: aload_1
     182: getfield      #436                // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource;
     185: invokeinterface #442,  1          // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F
     190: ldc_w         #443                // float 0.099999905f
     193: fmul
     194: fadd
     195: goto          214
     198: ldc           #67                 // float 0.94f
     200: aload_1
     201: getfield      #436                // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource;
     204: invokeinterface #442,  1          // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F
     209: ldc_w         #444                // float 0.119999945f
     212: fmul
     213: fadd
     214: fstore        13
     216: aload_1
     217: aload_2
     218: aload_2
     219: invokevirtual #448                // Method net/minecraft/world/entity/player/Player.m_20185_:()D
     222: aload_2
     223: invokevirtual #451                // Method net/minecraft/world/entity/player/Player.m_20186_:()D
     226: aload_2
     227: invokevirtual #454                // Method net/minecraft/world/entity/player/Player.m_20189_:()D
     230: getstatic     #460                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_SHOOT:Lnet/minecraftforge/registries/RegistryObject;
     233: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     236: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     239: getstatic     #474                // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource;
     242: fload         12
     244: fload         13
     246: invokevirtual #478                // Method net/minecraft/world/level/Level.m_6263_:(Lnet/minecraft/world/entity/player/Player;DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FF)V
     249: return

  public static void playLocalShotSound(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: ifnull        19
       4: aload_1
       5: ifnull        19
       8: aload_2
       9: ifnull        19
      12: aload_2
      13: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      16: ifeq          20
      19: return
      20: aload_2
      21: invokestatic  #373                // Method hasSilencer:(Lnet/minecraft/world/item/ItemStack;)Z
      24: istore_3
      25: iload_3
      26: ifeq          34
      29: ldc           #65                 // float 0.75f
      31: goto          35
      34: fconst_2
      35: fstore        4
      37: iload_3
      38: ifeq          60
      41: ldc           #71                 // float 1.08f
      43: aload_0
      44: getfield      #436                // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource;
      47: invokeinterface #442,  1          // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F
      52: ldc_w         #443                // float 0.099999905f
      55: fmul
      56: fadd
      57: goto          76
      60: ldc           #67                 // float 0.94f
      62: aload_0
      63: getfield      #436                // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource;
      66: invokeinterface #442,  1          // InterfaceMethod net/minecraft/util/RandomSource.m_188501_:()F
      71: ldc_w         #444                // float 0.119999945f
      74: fmul
      75: fadd
      76: fstore        5
      78: aload_0
      79: aload_1
      80: invokevirtual #448                // Method net/minecraft/world/entity/player/Player.m_20185_:()D
      83: aload_1
      84: invokevirtual #451                // Method net/minecraft/world/entity/player/Player.m_20186_:()D
      87: aload_1
      88: invokevirtual #454                // Method net/minecraft/world/entity/player/Player.m_20189_:()D
      91: getstatic     #460                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_SHOOT:Lnet/minecraftforge/registries/RegistryObject;
      94: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
      97: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     100: getstatic     #474                // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource;
     103: fload         4
     105: fload         5
     107: iconst_0
     108: invokevirtual #495                // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V
     111: return

  public static net.minecraft.world.phys.Vec3 muzzlePosition(net.minecraft.world.entity.player.Player, net.minecraft.world.InteractionHand);
    Code:
       0: aload_0
       1: aload_1
       2: fconst_0
       3: invokestatic  #351                // Method muzzlePosition:(Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/InteractionHand;F)Lnet/minecraft/world/phys/Vec3;
       6: areturn

  public static net.minecraft.world.phys.Vec3 muzzlePosition(net.minecraft.world.entity.player.Player, net.minecraft.world.InteractionHand, float);
    Code:
       0: fload_2
       1: fconst_0
       2: fconst_1
       3: invokestatic  #345                // Method net/minecraft/util/Mth.m_14036_:(FFF)F
       6: fstore_3
       7: aload_0
       8: invokevirtual #500                // Method net/minecraft/world/entity/player/Player.m_146892_:()Lnet/minecraft/world/phys/Vec3;
      11: astore        4
      13: aload_0
      14: invokevirtual #503                // Method net/minecraft/world/entity/player/Player.m_146909_:()F
      17: aload_0
      18: invokevirtual #506                // Method net/minecraft/world/entity/player/Player.m_146908_:()F
      21: invokestatic  #510                // Method net/minecraft/world/phys/Vec3.m_82498_:(FF)Lnet/minecraft/world/phys/Vec3;
      24: astore        5
      26: aload_0
      27: invokevirtual #506                // Method net/minecraft/world/entity/player/Player.m_146908_:()F
      30: ldc_w         #511                // float 0.017453292f
      33: fmul
      34: fstore        6
      36: new           #357                // class net/minecraft/world/phys/Vec3
      39: dup
      40: fload         6
      42: invokestatic  #515                // Method net/minecraft/util/Mth.m_14089_:(F)F
      45: fneg
      46: f2d
      47: dconst_0
      48: fload         6
      50: invokestatic  #518                // Method net/minecraft/util/Mth.m_14031_:(F)F
      53: fneg
      54: f2d
      55: invokespecial #520                // Method net/minecraft/world/phys/Vec3."<init>":(DDD)V
      58: astore        7
      60: aload_1
      61: getstatic     #523                // Field net/minecraft/world/InteractionHand.OFF_HAND:Lnet/minecraft/world/InteractionHand;
      64: if_acmpne     73
      67: ldc2_w        #524                // double -1.0d
      70: goto          74
      73: dconst_1
      74: dstore        8
      76: fload_3
      77: f2d
      78: ldc2_w        #79                 // double 1.16d
      81: ldc2_w        #82                 // double 1.3d
      84: invokestatic  #529                // Method net/minecraft/util/Mth.m_14139_:(DDD)D
      87: dstore        10
      89: fload_3
      90: f2d
      91: ldc2_w        #85                 // double 0.24d
      94: dconst_0
      95: invokestatic  #529                // Method net/minecraft/util/Mth.m_14139_:(DDD)D
      98: dload         8
     100: dmul
     101: dstore        12
     103: fload_3
     104: f2d
     105: ldc2_w        #88                 // double 0.2d
     108: ldc2_w        #91                 // double 0.11d
     111: invokestatic  #529                // Method net/minecraft/util/Mth.m_14139_:(DDD)D
     114: dstore        14
     116: aload_0
     117: invokevirtual #532                // Method net/minecraft/world/entity/player/Player.m_20184_:()Lnet/minecraft/world/phys/Vec3;
     120: astore        16
     122: aload         16
     124: aload         7
     126: invokevirtual #536                // Method net/minecraft/world/phys/Vec3.m_82526_:(Lnet/minecraft/world/phys/Vec3;)D
     129: dstore        17
     131: dload         17
     133: dneg
     134: ldc2_w        #94                 // double 0.55d
     137: dmul
     138: ldc2_w        #537                // double -0.075d
     141: ldc2_w        #97                 // double 0.075d
     144: invokestatic  #541                // Method net/minecraft/util/Mth.m_14008_:(DDD)D
     147: dconst_1
     148: fload_3
     149: f2d
     150: dsub
     151: dmul
     152: dstore        19
     154: dload         12
     156: dload         19
     158: dadd
     159: dstore        12
     161: aload         4
     163: aload         5
     165: dload         10
     167: invokevirtual #545                // Method net/minecraft/world/phys/Vec3.m_82490_:(D)Lnet/minecraft/world/phys/Vec3;
     170: invokevirtual #549                // Method net/minecraft/world/phys/Vec3.m_82549_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;
     173: aload         7
     175: dload         12
     177: invokevirtual #545                // Method net/minecraft/world/phys/Vec3.m_82490_:(D)Lnet/minecraft/world/phys/Vec3;
     180: invokevirtual #549                // Method net/minecraft/world/phys/Vec3.m_82549_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;
     183: dconst_0
     184: dload         14
     186: dneg
     187: dconst_0
     188: invokevirtual #553                // Method net/minecraft/world/phys/Vec3.m_82520_:(DDD)Lnet/minecraft/world/phys/Vec3;
     191: areturn

  private static net.minecraft.world.phys.Vec3 nailAimDirection(net.minecraft.world.entity.player.Player, net.minecraft.world.phys.Vec3);
    Code:
       0: aload_0
       1: invokevirtual #503                // Method net/minecraft/world/entity/player/Player.m_146909_:()F
       4: aload_0
       5: invokevirtual #506                // Method net/minecraft/world/entity/player/Player.m_146908_:()F
       8: invokestatic  #510                // Method net/minecraft/world/phys/Vec3.m_82498_:(FF)Lnet/minecraft/world/phys/Vec3;
      11: astore_2
      12: aload_0
      13: invokevirtual #500                // Method net/minecraft/world/entity/player/Player.m_146892_:()Lnet/minecraft/world/phys/Vec3;
      16: aload_2
      17: ldc2_w        #100                // double 12.0d
      20: invokevirtual #545                // Method net/minecraft/world/phys/Vec3.m_82490_:(D)Lnet/minecraft/world/phys/Vec3;
      23: invokevirtual #549                // Method net/minecraft/world/phys/Vec3.m_82549_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;
      26: astore_3
      27: aload_3
      28: aload_1
      29: invokevirtual #568                // Method net/minecraft/world/phys/Vec3.m_82546_:(Lnet/minecraft/world/phys/Vec3;)Lnet/minecraft/world/phys/Vec3;
      32: invokevirtual #571                // Method net/minecraft/world/phys/Vec3.m_82541_:()Lnet/minecraft/world/phys/Vec3;
      35: areturn

  private com.ogaba.sa_combat.entity.projectile.NailEntity createNail(net.minecraft.world.level.Level, net.minecraft.world.entity.player.Player, net.minecraft.world.item.ItemStack);
    Code:
       0: new           #347                // class com/ogaba/sa_combat/entity/projectile/NailEntity
       3: dup
       4: aload_1
       5: aload_2
       6: invokespecial #575                // Method com/ogaba/sa_combat/entity/projectile/NailEntity."<init>":(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/LivingEntity;)V
       9: astore        4
      11: aload_0
      12: invokevirtual #578                // Method definitionDamage:()D
      15: aload_3
      16: invokestatic  #581                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D
      19: dadd
      20: aload_3
      21: invokestatic  #582                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D
      24: dadd
      25: dstore        5
      27: ldc2_w        #583                // double 0.95d
      30: dconst_0
      31: aload_3
      32: invokestatic  #587                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getCriticalChanceBonus:(Lnet/minecraft/world/item/ItemStack;)D
      35: invokestatic  #590                // Method java/lang/Math.max:(DD)D
      38: invokestatic  #592                // Method java/lang/Math.min:(DD)D
      41: dstore        7
      43: dload         7
      45: dconst_0
      46: dcmpl
      47: ifle          80
      50: aload_1
      51: getfield      #436                // Field net/minecraft/world/level/Level.f_46441_:Lnet/minecraft/util/RandomSource;
      54: invokeinterface #595,  1          // InterfaceMethod net/minecraft/util/RandomSource.m_188500_:()D
      59: dload         7
      61: dcmpg
      62: ifge          80
      65: dload         5
      67: dconst_1
      68: dconst_0
      69: aload_3
      70: invokestatic  #598                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getCriticalDamageBonus:(Lnet/minecraft/world/item/ItemStack;)D
      73: invokestatic  #590                // Method java/lang/Math.max:(DD)D
      76: dadd
      77: dmul
      78: dstore        5
      80: dconst_1
      81: dload         5
      83: invokestatic  #590                // Method java/lang/Math.max:(DD)D
      86: dstore        9
      88: aload         4
      90: dload         9
      92: ldc2_w        #599                // double 0.05d
      95: aload_3
      96: invokestatic  #377                // Method projectileVelocity:(Lnet/minecraft/world/item/ItemStack;)F
      99: f2d
     100: invokestatic  #590                // Method java/lang/Math.max:(DD)D
     103: ddiv
     104: invokevirtual #604                // Method com/ogaba/sa_combat/entity/projectile/NailEntity.m_36781_:(D)V
     107: aload_2
     108: invokevirtual #276                // Method net/minecraft/world/entity/player/Player.m_150110_:()Lnet/minecraft/world/entity/player/Abilities;
     111: getfield      #281                // Field net/minecraft/world/entity/player/Abilities.f_35937_:Z
     114: ifeq          125
     117: aload         4
     119: getstatic     #608                // Field net/minecraft/world/entity/projectile/AbstractArrow$Pickup.CREATIVE_ONLY:Lnet/minecraft/world/entity/projectile/AbstractArrow$Pickup;
     122: putfield      #611                // Field com/ogaba/sa_combat/entity/projectile/NailEntity.f_36705_:Lnet/minecraft/world/entity/projectile/AbstractArrow$Pickup;
     125: aload         4
     127: areturn

  private double definitionDamage();
    Code:
       0: aload_0
       1: invokevirtual #619                // Method getDefinition:()Lcom/ogaba/sa_combat/combat/weapon/WeaponDefinition;
       4: astore_1
       5: aload_1
       6: ifnonnull     13
       9: dconst_1
      10: goto          22
      13: dconst_1
      14: aload_1
      15: invokevirtual #625                // Method com/ogaba/sa_combat/combat/weapon/WeaponDefinition.attackDamage:()I
      18: i2d
      19: invokestatic  #590                // Method java/lang/Math.max:(DD)D
      22: dreturn

  private static float projectileVelocity(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokestatic  #628                // Method com/ogaba/sa_combat/combat/upgrade/WeaponUpgradeData.getReachBonus:(Lnet/minecraft/world/item/ItemStack;)D
       4: aload_0
       5: invokestatic  #629                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.getReachBonus:(Lnet/minecraft/world/item/ItemStack;)D
       8: dadd
       9: dstore_1
      10: aload_0
      11: invokestatic  #373                // Method hasSilencer:(Lnet/minecraft/world/item/ItemStack;)Z
      14: ifeq          23
      17: ldc2_w        #630                // double 2.299999952316284d
      20: goto          26
      23: ldc2_w        #632                // double 2.0d
      26: dstore_3
      27: ldc2_w        #634                // double 3.2d
      30: dload_3
      31: dload_1
      32: ldc2_w        #636                // double 1.1d
      35: dmul
      36: dadd
      37: invokestatic  #592                // Method java/lang/Math.min:(DD)D
      40: d2f
      41: freturn

  private static float projectileInaccuracy(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokestatic  #642                // Method hasStock:(Lnet/minecraft/world/item/ItemStack;)Z
       4: ifeq          11
       7: fconst_2
       8: goto          13
      11: ldc           #60                 // float 8.5f
      13: freturn

  public static boolean hasStock(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: getstatic     #648                // Field com/ogaba/sa_combat/combat/attachment/AttachmentSlot.STOCK:Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;
       4: invokestatic  #652                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAttachmentInSlot:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;)Z
       7: ireturn

  public static boolean hasSilencer(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: getstatic     #655                // Field com/ogaba/sa_combat/combat/attachment/AttachmentSlot.SILENCER:Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;
       4: invokestatic  #652                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAttachmentInSlot:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;)Z
       7: ireturn

  public static boolean hasExtendedMag(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: getstatic     #659                // Field com/ogaba/sa_combat/combat/attachment/AttachmentSlot.MAGAZINE:Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;
       4: invokestatic  #652                // Method com/ogaba/sa_combat/combat/attachment/WeaponAttachmentData.hasAttachmentInSlot:(Lnet/minecraft/world/item/ItemStack;Lcom/ogaba/sa_combat/combat/attachment/AttachmentSlot;)Z
       7: ireturn

  public static int magazineCapacity(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokestatic  #661                // Method hasExtendedMag:(Lnet/minecraft/world/item/ItemStack;)Z
       4: ifeq          12
       7: bipush        32
       9: goto          14
      12: bipush        16
      14: ireturn

  public static boolean consumeServerFirePermit(net.minecraft.world.item.ItemStack, long);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifeq          9
       7: iconst_0
       8: ireturn
       9: ldc2_w        #664                // long 3l
      12: lstore_3
      13: ldc2_w        #666                // long 5l
      16: lstore        5
      18: lload_1
      19: ldc2_w        #664                // long 3l
      22: lmul
      23: lstore        7
      25: aload_0
      26: invokevirtual #671                // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag;
      29: astore        9
      31: aload         9
      33: ldc           #44                 // String SACombatNailGunServerNextFireScaled
      35: invokevirtual #677                // Method net/minecraft/nbt/CompoundTag.m_128441_:(Ljava/lang/String;)Z
      38: ifne          56
      41: aload         9
      43: ldc           #44                 // String SACombatNailGunServerNextFireScaled
      45: lload         7
      47: ldc2_w        #666                // long 5l
      50: ladd
      51: invokevirtual #681                // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V
      54: iconst_1
      55: ireturn
      56: aload         9
      58: ldc           #44                 // String SACombatNailGunServerNextFireScaled
      60: invokevirtual #685                // Method net/minecraft/nbt/CompoundTag.m_128454_:(Ljava/lang/String;)J
      63: lstore        10
      65: lload         10
      67: lload         7
      69: lsub
      70: ldc2_w        #686                // long 60l
      73: lcmp
      74: ifle          92
      77: aload         9
      79: ldc           #44                 // String SACombatNailGunServerNextFireScaled
      81: lload         7
      83: ldc2_w        #666                // long 5l
      86: ladd
      87: invokevirtual #681                // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V
      90: iconst_1
      91: ireturn
      92: lload         7
      94: lload         10
      96: lcmp
      97: ifge          102
     100: iconst_0
     101: ireturn
     102: lload         7
     104: lload         10
     106: lsub
     107: lstore        12
     109: lload         12
     111: ldc2_w        #666                // long 5l
     114: lcmp
     115: iflt          127
     118: lload         7
     120: ldc2_w        #666                // long 5l
     123: ladd
     124: goto          133
     127: lload         10
     129: ldc2_w        #666                // long 5l
     132: ladd
     133: lstore        14
     135: aload         9
     137: ldc           #44                 // String SACombatNailGunServerNextFireScaled
     139: lload         14
     141: invokevirtual #681                // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V
     144: iconst_1
     145: ireturn

  public static int getMagazine(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifne          14
       7: aload_0
       8: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      11: ifnonnull     16
      14: iconst_0
      15: ireturn
      16: aload_0
      17: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      20: ldc           #32                 // String SACombatNailGunMagazine
      22: invokevirtual #703                // Method net/minecraft/nbt/CompoundTag.m_128451_:(Ljava/lang/String;)I
      25: ireturn

  public static void setMagazine(net.minecraft.world.item.ItemStack, int);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifeq          8
       7: return
       8: aload_0
       9: invokevirtual #671                // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag;
      12: ldc           #32                 // String SACombatNailGunMagazine
      14: iconst_0
      15: iload_1
      16: invokestatic  #146                // Method java/lang/Math.max:(II)I
      19: invokevirtual #707                // Method net/minecraft/nbt/CompoundTag.m_128405_:(Ljava/lang/String;I)V
      22: return

  public static boolean isReloading(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifne          30
       7: aload_0
       8: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      11: ifnull        30
      14: aload_0
      15: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      18: ldc           #35                 // String SACombatNailGunReloading
      20: invokevirtual #711                // Method net/minecraft/nbt/CompoundTag.m_128471_:(Ljava/lang/String;)Z
      23: ifeq          30
      26: iconst_1
      27: goto          31
      30: iconst_0
      31: ireturn

  private static void setReloading(net.minecraft.world.item.ItemStack, boolean);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifeq          8
       7: return
       8: iload_1
       9: ifeq          25
      12: aload_0
      13: invokevirtual #671                // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag;
      16: ldc           #35                 // String SACombatNailGunReloading
      18: iconst_1
      19: invokevirtual #715                // Method net/minecraft/nbt/CompoundTag.m_128379_:(Ljava/lang/String;Z)V
      22: goto          41
      25: aload_0
      26: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      29: ifnull        41
      32: aload_0
      33: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      36: ldc           #35                 // String SACombatNailGunReloading
      38: invokevirtual #719                // Method net/minecraft/nbt/CompoundTag.m_128473_:(Ljava/lang/String;)V
      41: return

  private static int getReloadTarget(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifne          14
       7: aload_0
       8: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      11: ifnonnull     18
      14: iconst_0
      15: goto          27
      18: aload_0
      19: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      22: ldc           #38                 // String SACombatNailGunReloadTarget
      24: invokevirtual #703                // Method net/minecraft/nbt/CompoundTag.m_128451_:(Ljava/lang/String;)I
      27: ireturn

  private static void setReloadTarget(net.minecraft.world.item.ItemStack, int);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifeq          8
       7: return
       8: iload_1
       9: ifgt          31
      12: aload_0
      13: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      16: ifnull        41
      19: aload_0
      20: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      23: ldc           #38                 // String SACombatNailGunReloadTarget
      25: invokevirtual #719                // Method net/minecraft/nbt/CompoundTag.m_128473_:(Ljava/lang/String;)V
      28: goto          41
      31: aload_0
      32: invokevirtual #671                // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag;
      35: ldc           #38                 // String SACombatNailGunReloadTarget
      37: iload_1
      38: invokevirtual #707                // Method net/minecraft/nbt/CompoundTag.m_128405_:(Ljava/lang/String;I)V
      41: return

  private static long getReloadEndTick(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifne          14
       7: aload_0
       8: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      11: ifnonnull     18
      14: lconst_0
      15: goto          27
      18: aload_0
      19: invokevirtual #699                // Method net/minecraft/world/item/ItemStack.m_41783_:()Lnet/minecraft/nbt/CompoundTag;
      22: ldc           #41                 // String SACombatNailGunReloadEndTick
      24: invokevirtual #685                // Method net/minecraft/nbt/CompoundTag.m_128454_:(Ljava/lang/String;)J
      27: lreturn

  private static void setReloadEndTick(net.minecraft.world.item.ItemStack, long);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifne          17
       7: aload_0
       8: invokevirtual #671                // Method net/minecraft/world/item/ItemStack.m_41784_:()Lnet/minecraft/nbt/CompoundTag;
      11: ldc           #41                 // String SACombatNailGunReloadEndTick
      13: lload_1
      14: invokevirtual #681                // Method net/minecraft/nbt/CompoundTag.m_128356_:(Ljava/lang/String;J)V
      17: return

  private static void markShootAnimation(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifne          57
       7: aload_0
       8: invokestatic  #724                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
      11: lstore_1
      12: getstatic     #726                // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map;
      15: lload_1
      16: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      19: invokestatic  #737                // Method net/minecraft/Util.m_137550_:()J
      22: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      25: invokeinterface #743,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      30: pop
      31: getstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
      34: lload_1
      35: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      38: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      43: pop
      44: getstatic     #751                // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map;
      47: lload_1
      48: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      51: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      56: pop
      57: return

  public static void markClientReloadAnimation(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: ifnull        11
       4: aload_0
       5: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       8: ifeq          12
      11: return
      12: aload_0
      13: invokestatic  #724                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
      16: lstore_1
      17: getstatic     #755                // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map;
      20: lload_1
      21: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      24: invokestatic  #737                // Method net/minecraft/Util.m_137550_:()J
      27: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      30: invokeinterface #743,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      35: pop
      36: getstatic     #757                // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map;
      39: lload_1
      40: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      43: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      48: pop
      49: getstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
      52: lload_1
      53: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      56: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      61: pop
      62: getstatic     #751                // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map;
      65: lload_1
      66: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      69: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      74: pop
      75: getstatic     #726                // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map;
      78: lload_1
      79: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      82: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      87: pop
      88: getstatic     #759                // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map;
      91: lload_1
      92: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      95: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
     100: pop
     101: return

  public static boolean isClientReloadAnimationActive(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: ifnull        11
       4: aload_0
       5: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       8: ifeq          13
      11: iconst_0
      12: ireturn
      13: aload_0
      14: invokestatic  #724                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
      17: lstore_1
      18: getstatic     #755                // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map;
      21: lload_1
      22: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      25: invokeinterface #762,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      30: checkcast     #728                // class java/lang/Long
      33: astore_3
      34: aload_3
      35: ifnonnull     40
      38: iconst_0
      39: ireturn
      40: aload_0
      41: invokestatic  #313                // Method reloadTicksForStack:(Lnet/minecraft/world/item/ItemStack;)I
      44: i2l
      45: ldc2_w        #763                // long 50l
      48: lmul
      49: ldc2_w        #765                // long 100l
      52: ladd
      53: lstore        4
      55: invokestatic  #737                // Method net/minecraft/Util.m_137550_:()J
      58: aload_3
      59: invokevirtual #769                // Method java/lang/Long.longValue:()J
      62: lsub
      63: lload         4
      65: lcmp
      66: iflt          84
      69: getstatic     #755                // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map;
      72: lload_1
      73: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      76: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      81: pop
      82: iconst_0
      83: ireturn
      84: iconst_1
      85: ireturn

  private static boolean isDrawAnimationActive(net.minecraft.world.item.ItemStack, long);
    Code:
       0: aload_0
       1: invokestatic  #724                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
       4: lstore_3
       5: getstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
       8: lload_3
       9: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      12: invokeinterface #762,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      17: checkcast     #728                // class java/lang/Long
      20: astore        5
      22: aload         5
      24: ifnonnull     29
      27: iconst_0
      28: ireturn
      29: lload_1
      30: aload         5
      32: invokevirtual #769                // Method java/lang/Long.longValue:()J
      35: lsub
      36: ldc2_w        #119                // long 925l
      39: lcmp
      40: iflt          71
      43: getstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
      46: lload_3
      47: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      50: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      55: pop
      56: getstatic     #751                // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map;
      59: lload_3
      60: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      63: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      68: pop
      69: iconst_0
      70: ireturn
      71: iconst_1
      72: ireturn

  private static void resetForNewStart(long, java.util.Map<java.lang.Long, java.lang.Long>, java.util.Map<java.lang.Long, java.lang.Long>, software.bernie.geckolib.core.animation.AnimationController<com.ogaba.sa_combat.combat.weapon.NailGunItem>);
    Code:
       0: aload_2
       1: lload_0
       2: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
       5: invokeinterface #762,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      10: checkcast     #728                // class java/lang/Long
      13: astore        5
      15: aload         5
      17: ifnull        56
      20: aload         5
      22: aload_3
      23: lload_0
      24: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      27: invokeinterface #762,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      32: invokevirtual #781                // Method java/lang/Long.equals:(Ljava/lang/Object;)Z
      35: ifne          56
      38: aload         4
      40: invokevirtual #785                // Method software/bernie/geckolib/core/animation/AnimationController.forceAnimationReset:()V
      43: aload_3
      44: lload_0
      45: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      48: aload         5
      50: invokeinterface #743,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      55: pop
      56: return

  private static boolean isShootAnimationActive(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifeq          9
       7: iconst_0
       8: ireturn
       9: getstatic     #726                // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map;
      12: aload_0
      13: invokestatic  #724                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
      16: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      19: invokeinterface #762,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
      24: checkcast     #728                // class java/lang/Long
      27: astore_1
      28: aload_1
      29: ifnonnull     34
      32: iconst_0
      33: ireturn
      34: invokestatic  #737                // Method net/minecraft/Util.m_137550_:()J
      37: aload_1
      38: invokevirtual #769                // Method java/lang/Long.longValue:()J
      41: lsub
      42: lstore_2
      43: lload_2
      44: ldc2_w        #57                 // long 390l
      47: lcmp
      48: iflt          87
      51: aload_0
      52: invokestatic  #724                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
      55: lstore        4
      57: getstatic     #726                // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map;
      60: lload         4
      62: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      65: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      70: pop
      71: getstatic     #759                // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map;
      74: lload         4
      76: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      79: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
      84: pop
      85: iconst_0
      86: ireturn
      87: lload_2
      88: lconst_0
      89: lcmp
      90: iflt          97
      93: iconst_1
      94: goto          98
      97: iconst_0
      98: ireturn

  public static void clearClientAnimationState();
    Code:
       0: getstatic     #726                // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map;
       3: invokeinterface #797,  1          // InterfaceMethod java/util/Map.clear:()V
       8: getstatic     #759                // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map;
      11: invokeinterface #797,  1          // InterfaceMethod java/util/Map.clear:()V
      16: getstatic     #799                // Field CLIENT_LAST_HAND_RENDER:Ljava/util/Map;
      19: invokeinterface #797,  1          // InterfaceMethod java/util/Map.clear:()V
      24: getstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
      27: invokeinterface #797,  1          // InterfaceMethod java/util/Map.clear:()V
      32: getstatic     #751                // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map;
      35: invokeinterface #797,  1          // InterfaceMethod java/util/Map.clear:()V
      40: getstatic     #755                // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map;
      43: invokeinterface #797,  1          // InterfaceMethod java/util/Map.clear:()V
      48: getstatic     #757                // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map;
      51: invokeinterface #797,  1          // InterfaceMethod java/util/Map.clear:()V
      56: return

  private static boolean isNailAmmo(net.minecraft.world.item.ItemStack);
    Code:
       0: aload_0
       1: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
       4: ifeq          9
       7: iconst_0
       8: ireturn
       9: getstatic     #806                // Field net/minecraftforge/registries/ForgeRegistries.ITEMS:Lnet/minecraftforge/registries/IForgeRegistry;
      12: aload_0
      13: invokevirtual #179                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      16: invokeinterface #812,  2          // InterfaceMethod net/minecraftforge/registries/IForgeRegistry.getKey:(Ljava/lang/Object;)Lnet/minecraft/resources/ResourceLocation;
      21: astore_1
      22: getstatic     #814                // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation;
      25: aload_1
      26: invokevirtual #817                // Method net/minecraft/resources/ResourceLocation.equals:(Ljava/lang/Object;)Z
      29: ireturn

  public static int countReserveAmmo(net.minecraft.world.entity.player.Player);
    Code:
       0: iconst_0
       1: istore_1
       2: aload_0
       3: invokevirtual #821                // Method net/minecraft/world/entity/player/Player.m_150109_:()Lnet/minecraft/world/entity/player/Inventory;
       6: getfield      #827                // Field net/minecraft/world/entity/player/Inventory.f_35974_:Lnet/minecraft/core/NonNullList;
       9: invokevirtual #833                // Method net/minecraft/core/NonNullList.iterator:()Ljava/util/Iterator;
      12: astore_2
      13: aload_2
      14: invokeinterface #838,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      19: ifeq          49
      22: aload_2
      23: invokeinterface #841,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      28: checkcast     #171                // class net/minecraft/world/item/ItemStack
      31: astore_3
      32: aload_3
      33: invokestatic  #843                // Method isNailAmmo:(Lnet/minecraft/world/item/ItemStack;)Z
      36: ifeq          46
      39: iload_1
      40: aload_3
      41: invokevirtual #846                // Method net/minecraft/world/item/ItemStack.m_41613_:()I
      44: iadd
      45: istore_1
      46: goto          13
      49: iload_1
      50: ireturn

  private static void consumeReserveAmmo(net.minecraft.world.entity.player.Player, int);
    Code:
       0: iload_1
       1: istore_2
       2: aload_0
       3: invokevirtual #821                // Method net/minecraft/world/entity/player/Player.m_150109_:()Lnet/minecraft/world/entity/player/Inventory;
       6: getfield      #827                // Field net/minecraft/world/entity/player/Inventory.f_35974_:Lnet/minecraft/core/NonNullList;
       9: invokevirtual #833                // Method net/minecraft/core/NonNullList.iterator:()Ljava/util/Iterator;
      12: astore_3
      13: aload_3
      14: invokeinterface #838,  1          // InterfaceMethod java/util/Iterator.hasNext:()Z
      19: ifeq          77
      22: aload_3
      23: invokeinterface #841,  1          // InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
      28: checkcast     #171                // class net/minecraft/world/item/ItemStack
      31: astore        4
      33: iload_2
      34: ifgt          40
      37: goto          77
      40: aload         4
      42: invokestatic  #843                // Method isNailAmmo:(Lnet/minecraft/world/item/ItemStack;)Z
      45: ifne          51
      48: goto          13
      51: iload_2
      52: aload         4
      54: invokevirtual #846                // Method net/minecraft/world/item/ItemStack.m_41613_:()I
      57: invokestatic  #294                // Method java/lang/Math.min:(II)I
      60: istore        5
      62: aload         4
      64: iload         5
      66: invokevirtual #851                // Method net/minecraft/world/item/ItemStack.m_41774_:(I)V
      69: iload_2
      70: iload         5
      72: isub
      73: istore_2
      74: goto          13
      77: return

  public void registerControllers(software.bernie.geckolib.core.animation.AnimatableManager$ControllerRegistrar);
    Code:
       0: aload_1
       1: iconst_1
       2: anewarray     #14                 // class software/bernie/geckolib/core/animation/AnimationController
       5: dup
       6: iconst_0
       7: new           #14                 // class software/bernie/geckolib/core/animation/AnimationController
      10: dup
      11: aload_0
      12: ldc_w         #857                // String nail_gun
      15: iconst_0
      16: invokedynamic #867,  0            // InvokeDynamic #1:handle:()Lsoftware/bernie/geckolib/core/animation/AnimationController$AnimationStateHandler;
      21: invokespecial #870                // Method software/bernie/geckolib/core/animation/AnimationController."<init>":(Lsoftware/bernie/geckolib/core/animatable/GeoAnimatable;Ljava/lang/String;ILsoftware/bernie/geckolib/core/animation/AnimationController$AnimationStateHandler;)V
      24: invokedynamic #879,  0            // InvokeDynamic #2:handle:()Lsoftware/bernie/geckolib/core/animation/AnimationController$SoundKeyframeHandler;
      29: invokevirtual #883                // Method software/bernie/geckolib/core/animation/AnimationController.setSoundKeyframeHandler:(Lsoftware/bernie/geckolib/core/animation/AnimationController$SoundKeyframeHandler;)Lsoftware/bernie/geckolib/core/animation/AnimationController;
      32: aastore
      33: invokevirtual #887                // Method software/bernie/geckolib/core/animation/AnimatableManager$ControllerRegistrar.add:([Lsoftware/bernie/geckolib/core/animation/AnimationController;)Lsoftware/bernie/geckolib/core/animation/AnimatableManager$ControllerRegistrar;
      36: pop
      37: return

  private static net.minecraft.sounds.SoundEvent nailGunKeyframeSound(java.lang.String);
    Code:
       0: aload_0
       1: ifnonnull     6
       4: aconst_null
       5: areturn
       6: aload_0
       7: astore_1
       8: iconst_m1
       9: istore_2
      10: aload_1
      11: invokevirtual #897                // Method java/lang/String.hashCode:()I
      14: lookupswitch  { // 6

           -1641162943: 87

             663556368: 102

             663556369: 117

             663556370: 132

             663556371: 147

            1186712812: 72
               default: 159
          }
      72: aload_1
      73: ldc_w         #899                // String nail_gun_draw
      76: invokevirtual #900                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      79: ifeq          159
      82: iconst_0
      83: istore_2
      84: goto          159
      87: aload_1
      88: ldc_w         #902                // String nail_gun_reload
      91: invokevirtual #900                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
      94: ifeq          159
      97: iconst_1
      98: istore_2
      99: goto          159
     102: aload_1
     103: ldc_w         #904                // String nail_gun_reload1
     106: invokevirtual #900                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     109: ifeq          159
     112: iconst_2
     113: istore_2
     114: goto          159
     117: aload_1
     118: ldc_w         #906                // String nail_gun_reload2
     121: invokevirtual #900                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     124: ifeq          159
     127: iconst_3
     128: istore_2
     129: goto          159
     132: aload_1
     133: ldc_w         #908                // String nail_gun_reload3
     136: invokevirtual #900                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     139: ifeq          159
     142: iconst_4
     143: istore_2
     144: goto          159
     147: aload_1
     148: ldc_w         #910                // String nail_gun_reload4
     151: invokevirtual #900                // Method java/lang/String.equals:(Ljava/lang/Object;)Z
     154: ifeq          159
     157: iconst_5
     158: istore_2
     159: iload_2
     160: tableswitch   { // 0 to 5

                     0: 200

                     1: 212

                     2: 224

                     3: 236

                     4: 248

                     5: 260
               default: 272
          }
     200: getstatic     #913                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_DRAW:Lnet/minecraftforge/registries/RegistryObject;
     203: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     206: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     209: goto          273
     212: getstatic     #916                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD:Lnet/minecraftforge/registries/RegistryObject;
     215: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     218: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     221: goto          273
     224: getstatic     #919                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD1:Lnet/minecraftforge/registries/RegistryObject;
     227: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     230: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     233: goto          273
     236: getstatic     #922                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD2:Lnet/minecraftforge/registries/RegistryObject;
     239: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     242: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     245: goto          273
     248: getstatic     #925                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD3:Lnet/minecraftforge/registries/RegistryObject;
     251: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     254: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     257: goto          273
     260: getstatic     #928                // Field com/ogaba/sa_combat/registry/ModSounds.NAIL_GUN_RELOAD4:Lnet/minecraftforge/registries/RegistryObject;
     263: invokevirtual #466                // Method net/minecraftforge/registries/RegistryObject.get:()Ljava/lang/Object;
     266: checkcast     #468                // class net/minecraft/sounds/SoundEvent
     269: goto          273
     272: aconst_null
     273: areturn

  private static boolean isHandRender(net.minecraft.world.item.ItemDisplayContext);
    Code:
       0: aload_0
       1: getstatic     #937                // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_LEFT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
       4: if_acmpeq     14
       7: aload_0
       8: getstatic     #940                // Field net/minecraft/world/item/ItemDisplayContext.FIRST_PERSON_RIGHT_HAND:Lnet/minecraft/world/item/ItemDisplayContext;
      11: if_acmpne     18
      14: iconst_1
      15: goto          19
      18: iconst_0
      19: ireturn

  private static void lambda$registerControllers$1(software.bernie.geckolib.core.keyframe.event.SoundKeyframeEvent);
    Code:
       0: invokestatic  #947                // Method software/bernie/geckolib/util/ClientUtils.getClientPlayer:()Lnet/minecraft/world/entity/player/Player;
       3: astore_1
       4: aload_1
       5: ifnonnull     9
       8: return
       9: aload_0
      10: invokevirtual #953                // Method software/bernie/geckolib/core/keyframe/event/SoundKeyframeEvent.getKeyframeData:()Lsoftware/bernie/geckolib/core/keyframe/event/data/SoundKeyframeData;
      13: invokevirtual #959                // Method software/bernie/geckolib/core/keyframe/event/data/SoundKeyframeData.getSound:()Ljava/lang/String;
      16: invokestatic  #961                // Method nailGunKeyframeSound:(Ljava/lang/String;)Lnet/minecraft/sounds/SoundEvent;
      19: astore_2
      20: aload_2
      21: ifnull        50
      24: aload_1
      25: invokevirtual #965                // Method net/minecraft/world/entity/player/Player.m_9236_:()Lnet/minecraft/world/level/Level;
      28: aload_1
      29: invokevirtual #448                // Method net/minecraft/world/entity/player/Player.m_20185_:()D
      32: aload_1
      33: invokevirtual #451                // Method net/minecraft/world/entity/player/Player.m_20186_:()D
      36: aload_1
      37: invokevirtual #454                // Method net/minecraft/world/entity/player/Player.m_20189_:()D
      40: aload_2
      41: getstatic     #474                // Field net/minecraft/sounds/SoundSource.PLAYERS:Lnet/minecraft/sounds/SoundSource;
      44: fconst_1
      45: fconst_1
      46: iconst_0
      47: invokevirtual #495                // Method net/minecraft/world/level/Level.m_7785_:(DDDLnet/minecraft/sounds/SoundEvent;Lnet/minecraft/sounds/SoundSource;FFZ)V
      50: return

  private static software.bernie.geckolib.core.object.PlayState lambda$registerControllers$0(software.bernie.geckolib.core.animation.AnimationState);
    Code:
       0: aload_0
       1: getstatic     #975                // Field software/bernie/geckolib/constant/DataTickets.ITEMSTACK:Lsoftware/bernie/geckolib/core/object/DataTicket;
       4: invokevirtual #981                // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object;
       7: checkcast     #171                // class net/minecraft/world/item/ItemStack
      10: astore_1
      11: aload_1
      12: ifnull        22
      15: aload_1
      16: invokevirtual #175                // Method net/minecraft/world/item/ItemStack.m_41619_:()Z
      19: ifeq          26
      22: getstatic     #987                // Field software/bernie/geckolib/core/object/PlayState.STOP:Lsoftware/bernie/geckolib/core/object/PlayState;
      25: areturn
      26: aload_0
      27: getstatic     #990                // Field software/bernie/geckolib/constant/DataTickets.ITEM_RENDER_PERSPECTIVE:Lsoftware/bernie/geckolib/core/object/DataTicket;
      30: invokevirtual #981                // Method software/bernie/geckolib/core/animation/AnimationState.getData:(Lsoftware/bernie/geckolib/core/object/DataTicket;)Ljava/lang/Object;
      33: checkcast     #933                // class net/minecraft/world/item/ItemDisplayContext
      36: astore_2
      37: aload_2
      38: invokestatic  #992                // Method isHandRender:(Lnet/minecraft/world/item/ItemDisplayContext;)Z
      41: istore_3
      42: aload_1
      43: invokestatic  #724                // InterfaceMethod software/bernie/geckolib/animatable/GeoItem.getId:(Lnet/minecraft/world/item/ItemStack;)J
      46: lstore        4
      48: invokestatic  #737                // Method net/minecraft/Util.m_137550_:()J
      51: lstore        6
      53: iload_3
      54: ifne          80
      57: aload_0
      58: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
      61: dconst_1
      62: invokevirtual #1000               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController;
      65: pop
      66: aload_0
      67: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
      70: getstatic     #1002               // Field ANIM_IDLE:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      73: invokevirtual #1006               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V
      76: getstatic     #1009               // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState;
      79: areturn
      80: getstatic     #799                // Field CLIENT_LAST_HAND_RENDER:Ljava/util/Map;
      83: lload         4
      85: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      88: lload         6
      90: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
      93: invokeinterface #743,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
      98: checkcast     #728                // class java/lang/Long
     101: astore        8
     103: aload         8
     105: ifnull        123
     108: lload         6
     110: aload         8
     112: invokevirtual #769                // Method java/lang/Long.longValue:()J
     115: lsub
     116: ldc2_w        #122                // long 700l
     119: lcmp
     120: ifle          156
     123: getstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
     126: lload         4
     128: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     131: lload         6
     133: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     136: invokeinterface #743,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     141: pop
     142: getstatic     #751                // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map;
     145: lload         4
     147: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     150: invokeinterface #749,  2          // InterfaceMethod java/util/Map.remove:(Ljava/lang/Object;)Ljava/lang/Object;
     155: pop
     156: aload_1
     157: invokestatic  #246                // Method isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
     160: istore        9
     162: aload_1
     163: invokestatic  #1011               // Method isClientReloadAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
     166: istore        10
     168: iload         9
     170: ifeq          216
     173: iload         10
     175: ifne          216
     178: getstatic     #757                // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map;
     181: lload         4
     183: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     186: invokeinterface #1014,  2         // InterfaceMethod java/util/Map.containsKey:(Ljava/lang/Object;)Z
     191: ifne          216
     194: getstatic     #755                // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map;
     197: lload         4
     199: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     202: lload         6
     204: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     207: invokeinterface #1017,  3         // InterfaceMethod java/util/Map.putIfAbsent:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     212: pop
     213: iconst_1
     214: istore        10
     216: iload         9
     218: ifne          226
     221: iload         10
     223: ifeq          280
     226: lload         4
     228: getstatic     #755                // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map;
     231: getstatic     #757                // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map;
     234: aload_0
     235: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     238: invokestatic  #1019               // Method resetForNewStart:(JLjava/util/Map;Ljava/util/Map;Lsoftware/bernie/geckolib/core/animation/AnimationController;)V
     241: ldc2_w        #1020               // double 37.0d
     244: iconst_1
     245: aload_1
     246: invokestatic  #313                // Method reloadTicksForStack:(Lnet/minecraft/world/item/ItemStack;)I
     249: invokestatic  #146                // Method java/lang/Math.max:(II)I
     252: i2d
     253: ddiv
     254: dstore        11
     256: aload_0
     257: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     260: dload         11
     262: invokevirtual #1000               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController;
     265: pop
     266: aload_0
     267: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     270: getstatic     #1023               // Field ANIM_RELOAD:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
     273: invokevirtual #1006               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V
     276: getstatic     #1009               // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState;
     279: areturn
     280: aload_1
     281: invokestatic  #1025               // Method isShootAnimationActive:(Lnet/minecraft/world/item/ItemStack;)Z
     284: ifeq          377
     287: getstatic     #726                // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map;
     290: lload         4
     292: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     295: invokeinterface #762,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     300: checkcast     #728                // class java/lang/Long
     303: astore        11
     305: aload         11
     307: ifnull        354
     310: aload         11
     312: getstatic     #759                // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map;
     315: lload         4
     317: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     320: invokeinterface #762,  2          // InterfaceMethod java/util/Map.get:(Ljava/lang/Object;)Ljava/lang/Object;
     325: invokevirtual #781                // Method java/lang/Long.equals:(Ljava/lang/Object;)Z
     328: ifne          354
     331: aload_0
     332: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     335: invokevirtual #785                // Method software/bernie/geckolib/core/animation/AnimationController.forceAnimationReset:()V
     338: getstatic     #759                // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map;
     341: lload         4
     343: invokestatic  #732                // Method java/lang/Long.valueOf:(J)Ljava/lang/Long;
     346: aload         11
     348: invokeinterface #743,  3          // InterfaceMethod java/util/Map.put:(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
     353: pop
     354: aload_0
     355: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     358: dconst_1
     359: invokevirtual #1000               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController;
     362: pop
     363: aload_0
     364: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     367: getstatic     #1027               // Field ANIM_SHOOT:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
     370: invokevirtual #1006               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V
     373: getstatic     #1009               // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState;
     376: areturn
     377: aload_1
     378: lload         6
     380: invokestatic  #1029               // Method isDrawAnimationActive:(Lnet/minecraft/world/item/ItemStack;J)Z
     383: ifeq          424
     386: lload         4
     388: getstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
     391: getstatic     #751                // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map;
     394: aload_0
     395: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     398: invokestatic  #1019               // Method resetForNewStart:(JLjava/util/Map;Ljava/util/Map;Lsoftware/bernie/geckolib/core/animation/AnimationController;)V
     401: aload_0
     402: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     405: dconst_1
     406: invokevirtual #1000               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController;
     409: pop
     410: aload_0
     411: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     414: getstatic     #1031               // Field ANIM_DRAW:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
     417: invokevirtual #1006               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V
     420: getstatic     #1009               // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState;
     423: areturn
     424: aload_0
     425: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     428: dconst_1
     429: invokevirtual #1000               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimationSpeed:(D)Lsoftware/bernie/geckolib/core/animation/AnimationController;
     432: pop
     433: aload_0
     434: invokevirtual #996                // Method software/bernie/geckolib/core/animation/AnimationState.getController:()Lsoftware/bernie/geckolib/core/animation/AnimationController;
     437: getstatic     #1002               // Field ANIM_IDLE:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
     440: invokevirtual #1006               // Method software/bernie/geckolib/core/animation/AnimationController.setAnimation:(Lsoftware/bernie/geckolib/core/animation/RawAnimation;)V
     443: getstatic     #1009               // Field software/bernie/geckolib/core/object/PlayState.CONTINUE:Lsoftware/bernie/geckolib/core/object/PlayState;
     446: areturn

  static {};
    Code:
       0: new           #816                // class net/minecraft/resources/ResourceLocation
       3: dup
       4: ldc_w         #1044               // String sa_core
       7: ldc_w         #1046               // String nails
      10: invokespecial #1049               // Method net/minecraft/resources/ResourceLocation."<init>":(Ljava/lang/String;Ljava/lang/String;)V
      13: putstatic     #814                // Field NAIL_ITEM_ID:Lnet/minecraft/resources/ResourceLocation;
      16: invokestatic  #1055               // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      19: ldc_w         #1057               // String idle
      22: invokevirtual #1061               // Method software/bernie/geckolib/core/animation/RawAnimation.thenLoop:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      25: putstatic     #1002               // Field ANIM_IDLE:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      28: invokestatic  #1055               // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      31: ldc_w         #1063               // String draw
      34: invokevirtual #1066               // Method software/bernie/geckolib/core/animation/RawAnimation.thenPlayAndHold:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      37: putstatic     #1031               // Field ANIM_DRAW:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      40: invokestatic  #1055               // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      43: ldc_w         #1068               // String shoot_normal
      46: invokevirtual #1066               // Method software/bernie/geckolib/core/animation/RawAnimation.thenPlayAndHold:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      49: putstatic     #1027               // Field ANIM_SHOOT:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      52: invokestatic  #1055               // Method software/bernie/geckolib/core/animation/RawAnimation.begin:()Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      55: ldc_w         #1070               // String reload
      58: invokevirtual #1066               // Method software/bernie/geckolib/core/animation/RawAnimation.thenPlayAndHold:(Ljava/lang/String;)Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      61: putstatic     #1023               // Field ANIM_RELOAD:Lsoftware/bernie/geckolib/core/animation/RawAnimation;
      64: new           #1072               // class java/util/concurrent/ConcurrentHashMap
      67: dup
      68: invokespecial #1074               // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      71: putstatic     #726                // Field CLIENT_SHOOT_ANIM_START:Ljava/util/Map;
      74: new           #1072               // class java/util/concurrent/ConcurrentHashMap
      77: dup
      78: invokespecial #1074               // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      81: putstatic     #759                // Field CLIENT_LAST_HANDLED_SHOT:Ljava/util/Map;
      84: new           #1072               // class java/util/concurrent/ConcurrentHashMap
      87: dup
      88: invokespecial #1074               // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
      91: putstatic     #799                // Field CLIENT_LAST_HAND_RENDER:Ljava/util/Map;
      94: new           #1072               // class java/util/concurrent/ConcurrentHashMap
      97: dup
      98: invokespecial #1074               // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
     101: putstatic     #745                // Field CLIENT_DRAW_ANIM_START:Ljava/util/Map;
     104: new           #1072               // class java/util/concurrent/ConcurrentHashMap
     107: dup
     108: invokespecial #1074               // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
     111: putstatic     #751                // Field CLIENT_LAST_HANDLED_DRAW:Ljava/util/Map;
     114: new           #1072               // class java/util/concurrent/ConcurrentHashMap
     117: dup
     118: invokespecial #1074               // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
     121: putstatic     #755                // Field CLIENT_RELOAD_ANIM_START:Ljava/util/Map;
     124: new           #1072               // class java/util/concurrent/ConcurrentHashMap
     127: dup
     128: invokespecial #1074               // Method java/util/concurrent/ConcurrentHashMap."<init>":()V
     131: putstatic     #757                // Field CLIENT_LAST_HANDLED_RELOAD:Ljava/util/Map;
     134: return
}


==================== com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket ====================
Compiled from "FireNailGunC2SPacket.java"
public class com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket {
  private final net.minecraft.world.InteractionHand hand;

  private final float aimProgress;

  public com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket(net.minecraft.world.InteractionHand);
    Code:
       0: aload_0
       1: aload_1
       2: fconst_0
       3: invokespecial #24                 // Method "<init>":(Lnet/minecraft/world/InteractionHand;F)V
       6: return

  public com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket(net.minecraft.world.InteractionHand, float);
    Code:
       0: aload_0
       1: invokespecial #29                 // Method java/lang/Object."<init>":()V
       4: aload_0
       5: aload_1
       6: putfield      #31                 // Field hand:Lnet/minecraft/world/InteractionHand;
       9: aload_0
      10: fload_2
      11: putfield      #33                 // Field aimProgress:F
      14: return

  public static void encode(com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket, net.minecraft.network.FriendlyByteBuf);
    Code:
       0: aload_1
       1: aload_0
       2: getfield      #31                 // Field hand:Lnet/minecraft/world/InteractionHand;
       5: invokevirtual #41                 // Method net/minecraft/network/FriendlyByteBuf.m_130068_:(Ljava/lang/Enum;)Lnet/minecraft/network/FriendlyByteBuf;
       8: pop
       9: aload_1
      10: aload_0
      11: getfield      #33                 // Field aimProgress:F
      14: invokevirtual #45                 // Method net/minecraft/network/FriendlyByteBuf.writeFloat:(F)Lio/netty/buffer/ByteBuf;
      17: pop
      18: return

  public static com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket decode(net.minecraft.network.FriendlyByteBuf);
    Code:
       0: new           #2                  // class com/ogaba/sa_combat/network/packet/FireNailGunC2SPacket
       3: dup
       4: aload_0
       5: ldc           #52                 // class net/minecraft/world/InteractionHand
       7: invokevirtual #56                 // Method net/minecraft/network/FriendlyByteBuf.m_130066_:(Ljava/lang/Class;)Ljava/lang/Enum;
      10: checkcast     #52                 // class net/minecraft/world/InteractionHand
      13: aload_0
      14: invokevirtual #60                 // Method net/minecraft/network/FriendlyByteBuf.readFloat:()F
      17: invokespecial #24                 // Method "<init>":(Lnet/minecraft/world/InteractionHand;F)V
      20: areturn

  public static void handle(com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket, java.util.function.Supplier<net.minecraftforge.network.NetworkEvent$Context>);
    Code:
       0: aload_1
       1: invokeinterface #69,  1           // InterfaceMethod java/util/function/Supplier.get:()Ljava/lang/Object;
       6: checkcast     #7                  // class net/minecraftforge/network/NetworkEvent$Context
       9: astore_2
      10: aload_2
      11: aload_2
      12: aload_0
      13: invokedynamic #86,  0             // InvokeDynamic #0:run:(Lnet/minecraftforge/network/NetworkEvent$Context;Lcom/ogaba/sa_combat/network/packet/FireNailGunC2SPacket;)Ljava/lang/Runnable;
      18: invokevirtual #90                 // Method net/minecraftforge/network/NetworkEvent$Context.enqueueWork:(Ljava/lang/Runnable;)Ljava/util/concurrent/CompletableFuture;
      21: pop
      22: aload_2
      23: iconst_1
      24: invokevirtual #94                 // Method net/minecraftforge/network/NetworkEvent$Context.setPacketHandled:(Z)V
      27: return

  private static void lambda$handle$0(net.minecraftforge.network.NetworkEvent$Context, com.ogaba.sa_combat.network.packet.FireNailGunC2SPacket);
    Code:
       0: aload_0
       1: invokevirtual #103                // Method net/minecraftforge/network/NetworkEvent$Context.getSender:()Lnet/minecraft/server/level/ServerPlayer;
       4: astore_2
       5: aload_2
       6: ifnonnull     10
       9: return
      10: aload_1
      11: getfield      #31                 // Field hand:Lnet/minecraft/world/InteractionHand;
      14: getstatic     #108                // Field net/minecraft/world/InteractionHand.MAIN_HAND:Lnet/minecraft/world/InteractionHand;
      17: if_acmpeq     21
      20: return
      21: aload_2
      22: aload_1
      23: getfield      #31                 // Field hand:Lnet/minecraft/world/InteractionHand;
      26: invokevirtual #112                // Method net/minecraft/server/level/ServerPlayer.m_21120_:(Lnet/minecraft/world/InteractionHand;)Lnet/minecraft/world/item/ItemStack;
      29: astore_3
      30: aload_3
      31: invokevirtual #118                // Method net/minecraft/world/item/ItemStack.m_41720_:()Lnet/minecraft/world/item/Item;
      34: astore        5
      36: aload         5
      38: instanceof    #120                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      41: ifeq          54
      44: aload         5
      46: checkcast     #120                // class com/ogaba/sa_combat/combat/weapon/NailGunItem
      49: astore        4
      51: goto          55
      54: return
      55: aload_3
      56: invokestatic  #124                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.isReloading:(Lnet/minecraft/world/item/ItemStack;)Z
      59: ifne          76
      62: aload_2
      63: invokevirtual #128                // Method net/minecraft/server/level/ServerPlayer.m_20142_:()Z
      66: ifne          76
      69: aload_3
      70: invokestatic  #132                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.getMagazine:(Lnet/minecraft/world/item/ItemStack;)I
      73: ifgt          77
      76: return
      77: aload_2
      78: invokevirtual #136                // Method net/minecraft/server/level/ServerPlayer.m_36335_:()Lnet/minecraft/world/item/ItemCooldowns;
      81: aload         4
      83: invokevirtual #142                // Method net/minecraft/world/item/ItemCooldowns.m_41519_:(Lnet/minecraft/world/item/Item;)Z
      86: ifne          103
      89: aload_3
      90: aload_2
      91: invokevirtual #146                // Method net/minecraft/server/level/ServerPlayer.m_9236_:()Lnet/minecraft/world/level/Level;
      94: invokevirtual #152                // Method net/minecraft/world/level/Level.m_46467_:()J
      97: invokestatic  #156                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.consumeServerFirePermit:(Lnet/minecraft/world/item/ItemStack;J)Z
     100: ifne          104
     103: return
     104: aload         4
     106: aload_2
     107: invokevirtual #146                // Method net/minecraft/server/level/ServerPlayer.m_9236_:()Lnet/minecraft/world/level/Level;
     110: aload_2
     111: aload_3
     112: aload_1
     113: getfield      #31                 // Field hand:Lnet/minecraft/world/InteractionHand;
     116: aload_1
     117: getfield      #33                 // Field aimProgress:F
     120: invokevirtual #160                // Method com/ogaba/sa_combat/combat/weapon/NailGunItem.fire:(Lnet/minecraft/world/level/Level;Lnet/minecraft/world/entity/player/Player;Lnet/minecraft/world/item/ItemStack;Lnet/minecraft/world/InteractionHand;F)V
     123: aload_2
     124: invokevirtual #136                // Method net/minecraft/server/level/ServerPlayer.m_36335_:()Lnet/minecraft/world/item/ItemCooldowns;
     127: aload         4
     129: iconst_1
     130: invokevirtual #164                // Method net/minecraft/world/item/ItemCooldowns.m_41524_:(Lnet/minecraft/world/item/Item;I)V
     133: return
}
