Decompiled source of LLBCommunityPatch v1.5.1

BepInEx/patchers/LLBPatcher.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using BepInEx.Logging;
using Microsoft.CodeAnalysis;
using Mono.Cecil;
using Mono.Cecil.Cil;
using Mono.Collections.Generic;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: AssemblyCompany("LLBPatcher")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("LLBPatcher")]
[assembly: AssemblyTitle("LLBPatcher")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace LLBPatcher
{
	public class Plugin
	{
		internal static ManualLogSource Logger = Logger.CreateLogSource("LLBPatcher");

		private static TypeReference vector3;

		private static TypeReference quaternion;

		public static IEnumerable<string> TargetDLLs => GetDLLs();

		public static void Initialize()
		{
		}

		public static void Patch(AssemblyDefinition assembly)
		{
			//IL_0221: Unknown result type (might be due to invalid IL or missing references)
			//IL_0226: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Expected O, but got Unknown
			//IL_0102: Unknown result type (might be due to invalid IL or missing references)
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0116: Unknown result type (might be due to invalid IL or missing references)
			//IL_011c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0126: Unknown result type (might be due to invalid IL or missing references)
			//IL_0134: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Unknown result type (might be due to invalid IL or missing references)
			//IL_0188: Unknown result type (might be due to invalid IL or missing references)
			//IL_023f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_0283: Unknown result type (might be due to invalid IL or missing references)
			//IL_028a: Expected O, but got Unknown
			//IL_02e2: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ec: Expected O, but got Unknown
			//IL_02f6: Unknown result type (might be due to invalid IL or missing references)
			//IL_02fd: Expected O, but got Unknown
			//IL_0355: Unknown result type (might be due to invalid IL or missing references)
			//IL_035f: Expected O, but got Unknown
			//IL_0369: Unknown result type (might be due to invalid IL or missing references)
			//IL_0370: Expected O, but got Unknown
			//IL_03ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_03d1: Expected O, but got Unknown
			//IL_042b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0432: Expected O, but got Unknown
			if (((AssemblyNameReference)assembly.Name).Name == "Assembly-CSharp")
			{
				Logger.LogWarning((object)("<<<< Starting Patch: " + ((AssemblyNameReference)assembly.Name).Name));
				TypeDefinition type = assembly.MainModule.GetType("GameplayEntities", "MovableEntity");
				Logger.LogInfo((object)("MovableEntity: " + ((MemberReference)type).FullName));
				TypeDefinition type2 = assembly.MainModule.GetType("GameplayEntities", "RobotPlayer");
				Logger.LogInfo((object)("RobotPlayer: " + ((MemberReference)type2).FullName));
				MethodDefinition val = ((IEnumerable<MethodDefinition>)type.Methods).First((MethodDefinition method) => ((MemberReference)method).Name == "CheckJumpAndFastFall");
				Logger.LogInfo((object)("baseMethod: " + ((MemberReference)val).FullName));
				MethodDefinition val2 = new MethodDefinition(((MemberReference)val).Name, val.Attributes, ((MethodReference)val).ReturnType);
				val2.Attributes = (MethodAttributes)(val2.Attributes & 0xFEFF);
				val2.Attributes = (MethodAttributes)(val2.Attributes | 0);
				val2.ImplAttributes = val.ImplAttributes;
				val2.SemanticsAttributes = val.SemanticsAttributes;
				type2.Methods.Add(val2);
				ILProcessor iLProcessor = val2.Body.GetILProcessor();
				iLProcessor.Append(iLProcessor.Create(OpCodes.Ldarg_0));
				iLProcessor.Append(iLProcessor.Create(OpCodes.Call, (MethodReference)(object)val));
				iLProcessor.Append(iLProcessor.Create(OpCodes.Ret));
				Logger.LogInfo((object)("newMethod: " + ((MemberReference)val2).FullName));
				Logger.LogInfo((object)$"newMethod: {val2.Body}");
				Logger.LogWarning((object)("<<<< End Patch: " + ((AssemblyNameReference)assembly.Name).Name));
			}
			if (!(((AssemblyNameReference)assembly.Name).Name == "Assembly-CSharp"))
			{
				return;
			}
			Enumerator<ModuleDefinition> enumerator = assembly.MainModule.Assembly.Modules.GetEnumerator();
			try
			{
				while (enumerator.MoveNext())
				{
					ModuleDefinition current = enumerator.Current;
					Enumerator<TypeDefinition> enumerator2 = current.Types.GetEnumerator();
					try
					{
						while (enumerator2.MoveNext())
						{
							TypeDefinition current2 = enumerator2.Current;
							if (((MemberReference)current2).Name == "BouncingData")
							{
								FieldDefinition val3 = new FieldDefinition("fromCounterParry", (FieldAttributes)6, assembly.MainModule.TypeSystem.Int32);
								current2.Fields.Add(val3);
								Logger.LogInfo((object)("BouncingData FOUND!: Added " + ((MemberReference)val3).Name));
							}
							if (((MemberReference)current2).Name == "MovableData")
							{
								TypeReference val4 = current.ImportReference(new TypeReference("", "HHBCPNCDNDH", current, (IMetadataScope)(object)assembly.MainModule));
								FieldDefinition val5 = new FieldDefinition("crouchTimer", (FieldAttributes)6, val4);
								current2.Fields.Add(val5);
								Logger.LogInfo((object)("MovableData FOUND!: Added " + ((MemberReference)val5).Name));
							}
							if (((MemberReference)current2).Name == "AbilityData")
							{
								TypeReference val6 = current.ImportReference(new TypeReference("", "HHBCPNCDNDH", current, (IMetadataScope)(object)assembly.MainModule));
								FieldDefinition val7 = new FieldDefinition("downAirHitRecoveryTimer", (FieldAttributes)6, val6);
								current2.Fields.Add(val7);
								Logger.LogInfo((object)("AbilityData FOUND!: Added " + ((MemberReference)val7).Name));
							}
							if (((MemberReference)current2).Name == "GetHitBallEntity")
							{
								FieldDefinition val8 = new FieldDefinition("ballTrailCounter", (FieldAttributes)6, assembly.MainModule.TypeSystem.SByte);
								current2.Fields.Add(val8);
								Logger.LogInfo((object)("GetHitBallEntity FOUND!: Added " + ((MemberReference)val8).Name));
							}
							if (((MemberReference)current2).Name == "AbilityState")
							{
								FieldDefinition val9 = new FieldDefinition("canCrouchCancel", (FieldAttributes)6, assembly.MainModule.TypeSystem.Boolean);
								current2.Fields.Add(val9);
								Logger.LogInfo((object)("AbilityState FOUND!: Added " + ((MemberReference)val9).Name));
							}
						}
					}
					finally
					{
						((IDisposable)enumerator2).Dispose();
					}
				}
			}
			finally
			{
				((IDisposable)enumerator).Dispose();
			}
		}

		public static void CheckPlayer()
		{
		}

		public static IEnumerable<string> GetDLLs()
		{
			yield return "UnityEngine.CoreModule.dll";
			yield return "Assembly-CSharp.dll";
		}
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "LLBPatcher";

		public const string PLUGIN_NAME = "LLBPatcher";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}

BepInEx/plugins/LLBCommunityPatch/com.github.daioutzu.llbcommunitypatch.dll

Decompiled 3 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Security;
using System.Security.Permissions;
using Abilities;
using BepInEx;
using BepInEx.Logging;
using GameplayEntities;
using HarmonyLib;
using LLBCommunityPatch.Characters;
using LLBCommunityPatch.ParryChanges;
using LLBT;
using LLBT.Tweaks;
using LLGUI;
using LLHandlers;
using LLScreen;
using Microsoft.CodeAnalysis;
using Multiplayer;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyCompany("com.github.daioutzu.llbcommunitypatch")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.5.1.0")]
[assembly: AssemblyInformationalVersion("1.5.1+a5db68acd4b3f8b8bff79d70b0fec9ac8bbe3ec3")]
[assembly: AssemblyProduct("LLBCommunityPatch")]
[assembly: AssemblyTitle("com.github.daioutzu.llbcommunitypatch")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.5.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace LLBCommunityPatch
{
	[HarmonyPatch]
	internal class BallPatch
	{
		[HarmonyPatch(typeof(CollidableEntity), "SweepCollision")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> AddMoreBallSteps(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand == typeof(CollidableEntity).GetMethod("GetSmallestCollisionSize")), (string)null),
				new CodeMatch((OpCode?)OpCodes.Stloc_S, (object)null, (string)null)
			}).Advance(1).SetInstruction(Transpilers.EmitDelegate<Func<CollidableEntity, HHBCPNCDNDH>>((Func<CollidableEntity, HHBCPNCDNDH>)((CollidableEntity entity) => ((object)((object)entity).GetType() != typeof(BallEntity)) ? entity.GetSmallestCollisionSize() : HHBCPNCDNDH.NKKIFJJEPOL(0.02m))))
				.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(GetHitBallEntity), "CheckSweep")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CheckSweep(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_006c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0072: Expected O, but got Unknown
			//IL_0080: Unknown result type (might be due to invalid IL or missing references)
			//IL_0086: Expected O, but got Unknown
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && i.operand == typeof(GetHitBallEntity).GetField("trailPosList1")), (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand == typeof(Entity).GetMethod("GetPosition")), (string)null),
				new CodeMatch((OpCode?)OpCodes.Callvirt, (object)null, (string)null)
			}).RemoveInstructions(4).Insert((CodeInstruction[])(object)new CodeInstruction[1] { Transpilers.EmitDelegate<Action<GetHitBallEntity>>((Action<GetHitBallEntity>)delegate(GetHitBallEntity ballEntity)
			{
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				FieldInfo fieldInfo = AccessTools.Field(typeof(GetHitBallEntity), "ballTrailCounter");
				sbyte b = (sbyte)fieldInfo.GetValue(ballEntity);
				if (b >= 10)
				{
					ballEntity.trailPosList1.Add(((Entity)ballEntity).GetPosition());
					b = 0;
				}
				else
				{
					b++;
				}
				fieldInfo.SetValue(ballEntity, b);
			}) })
				.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(BallEntity), "CleanUp")]
		[HarmonyPrefix]
		private static void Prefix(BallEntity __instance)
		{
			AccessTools.Field(typeof(BouncingData), "fromCounterParry").SetValue(((BouncableEntity)__instance).bouncingData, 0);
		}

		[HarmonyPatch(typeof(BouncableEntity), "WallBounce")]
		[HarmonyPrefix]
		private static void BounceReset(BouncableEntity __instance)
		{
			FieldInfo fieldInfo = AccessTools.Field(typeof(BouncingData), "fromCounterParry");
			fieldInfo.SetValue(__instance.bouncingData, Mathf.Max(0, (int)fieldInfo.GetValue(__instance.bouncingData) - 1));
		}

		[HarmonyPatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPostfix]
		private static void OnConstruciton(BouncingData __instance)
		{
			AccessTools.Field(typeof(BouncingData), "fromCounterParry").SetValue(__instance, 0);
		}

		[HarmonyPatch(typeof(BouncingData), "Load")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> OnLoad(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0026: Unknown result type (might be due to invalid IL or missing references)
			//IL_002c: Expected O, but got Unknown
			//IL_0034: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Expected O, but got Unknown
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Expected O, but got Unknown
			//IL_0076: Unknown result type (might be due to invalid IL or missing references)
			//IL_007c: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.End();
			val.Advance(-1);
			val.Insert((CodeInstruction[])(object)new CodeInstruction[4]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldloc_0, (object)null),
				new CodeInstruction(OpCodes.Ldfld, (object)AccessTools.Field(typeof(BouncingData), "fromCounterParry")),
				new CodeInstruction(OpCodes.Stfld, (object)AccessTools.Field(typeof(BouncingData), "fromCounterParry"))
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(GetHitPlayerEntity), "CounterParry")]
		[HarmonyPostfix]
		private static void AddToCounterParry(GetHitPlayerEntity __instance, BallEntity ball)
		{
			AccessTools.Field(typeof(BouncingData), "fromCounterParry").SetValue(((GetHitBallEntity)ball).ballData, 2);
		}

		[HarmonyPatch(typeof(HittingEntity), "Hit", new Type[]
		{
			typeof(HitableEntity),
			typeof(bool),
			typeof(HHBCPNCDNDH),
			typeof(HitstunState),
			typeof(bool),
			typeof(bool)
		})]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> OnHitReset(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			//IL_0096: Unknown result type (might be due to invalid IL or missing references)
			//IL_009c: Expected O, but got Unknown
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Expected O, but got Unknown
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			//IL_00fe: Unknown result type (might be due to invalid IL or missing references)
			//IL_0104: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Expected O, but got Unknown
			//IL_012d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0133: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[6]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "fromSpecial"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Brtrue, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldloc_2, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "ballData"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "fromCounter"), (string)null)
			}).Advance(1).Insert((CodeInstruction[])(object)new CodeInstruction[4]
			{
				new CodeInstruction(OpCodes.Ldloc_2, (object)null),
				new CodeInstruction(OpCodes.Ldfld, (object)AccessTools.Field(typeof(GetHitBallEntity), "ballData")),
				new CodeInstruction(OpCodes.Ldc_I4_0, (object)null),
				new CodeInstruction(OpCodes.Stfld, (object)AccessTools.Field(typeof(BouncingData), "fromCounterParry"))
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(GetHitBallEntity), "GetDamage")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> GetDoDamage(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "ballData"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "fromCounter"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Brfalse, (object)null, (string)null)
			}).Advance(2).RemoveInstruction()
				.Insert((CodeInstruction[])(object)new CodeInstruction[1] { Transpilers.EmitDelegate<Func<BouncingData, bool>>((Func<BouncingData, bool>)((BouncingData getHitBall) => (int)AccessTools.Field(typeof(BouncingData), "fromCounterParry").GetValue(getHitBall) > 0)) });
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(GetHitPlayerEntity), "CounterParry")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> ChangeCounterParriedPos(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			//IL_00aa: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b0: Expected O, but got Unknown
			//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d8: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[5]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Newobj), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "NKKIFJJEPOL"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "GAFCIOAEGKD"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "BBGBJJELCFJ"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Stfld && ((FieldInfo)i.operand).Name == "CGJJEHPPOAN"), (string)null)
			}).SearchBack((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "CGJJEHPPOAN")).Advance(1)
				.SetOpcodeAndAdvance(OpCodes.Ldc_I4_3);
			return val.InstructionEnumeration();
		}
	}
	[HarmonyPatch]
	internal class CursorSpeedPatch
	{
		[HarmonyTargetMethod]
		private static MethodInfo TargetMethod()
		{
			return AccessTools.Method(AccessTools.FirstInner(typeof(UIInput), (Func<Type, bool>)((Type t) => t.Name == "<HandleCursors>c__AnonStorey0")), "<>m__0", (Type[])null, (Type[])null);
		}

		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CursorSpeedRelativeToResolution(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Expected O, but got Unknown
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Expected O, but got Unknown
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			//IL_010c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0112: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			int num = -1;
			int num2 = -1;
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "get_deltaTime"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Stfld && ((FieldInfo)i.operand).Name == "move"), (string)null)
			}).Advance(-1);
			num2 = val.Pos;
			val.MatchBack(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "move"), (string)null)
			}).Advance(1);
			num = val.Pos;
			val.RemoveInstructionsInRange(num, num2).Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldloc_0, (object)null),
				Transpilers.EmitDelegate<Func<Vector2, LLCursor, Vector2>>((Func<Vector2, LLCursor, Vector2>)((Vector2 move, LLCursor cursor) => move * UIInput.cursorSpeed * cursor.GetHoverSlow() * Time.deltaTime * (float)Screen.width / 1280f))
			});
			return val.InstructionEnumeration();
		}
	}
	internal class DownAirHitRecoveryPatch
	{
		private static FieldInfo downAirHitRecoveryTimer => AccessTools.Field(typeof(AbilityData), "downAirHitRecoveryTimer");

		private static HHBCPNCDNDH Get_downAirHitRecoveryTimer(object instance)
		{
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			return (HHBCPNCDNDH)downAirHitRecoveryTimer.GetValue(instance);
		}

		private static void Set_downAirHitRecoveryTimer(object instance, object value)
		{
			downAirHitRecoveryTimer.SetValue(instance, value);
		}

		[HarmonyPatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPostfix]
		private static void Add_DownAirHitRecoveryTimerToConstructor_PostFix(AbilityData __instance)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			Set_downAirHitRecoveryTimer(__instance, HHBCPNCDNDH.DBOMOJGKIFI);
		}

		[HarmonyPatch(typeof(AbilityData), "Load")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> Load_DownAirHitRecoveryTimer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_0039: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Expected O, but got Unknown
			//IL_0061: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Expected O, but got Unknown
			//IL_007a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0080: Expected O, but got Unknown
			//IL_0088: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.End();
			val.MatchBack(false, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_1, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "Load"), (string)null)
			}).Insert((CodeInstruction[])(object)new CodeInstruction[4]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldloc_0, (object)null),
				CodeInstruction.LoadField(typeof(AbilityData), "downAirHitRecoveryTimer", false),
				CodeInstruction.StoreField(typeof(AbilityData), "downAirHitRecoveryTimer")
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(AbilityData), "Pack")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> Pack_DownAirHitRecoveryTimer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_003b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0041: Expected O, but got Unknown
			//IL_0049: Unknown result type (might be due to invalid IL or missing references)
			//IL_004f: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldarg_0 && i.labels.Count > 0)).Insert((CodeInstruction[])(object)new CodeInstruction[3]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldarg_1, (object)null),
				Transpilers.EmitDelegate<Action<AbilityData, SendableState>>((Action<AbilityData, SendableState>)delegate(AbilityData inst, SendableState p)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					p.AddFloatf(Get_downAirHitRecoveryTimer(inst), "Ability.downAirHitRecoveryTimer");
				})
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(Ability), "Start")]
		[HarmonyPostfix]
		private static void ResetHitTimer(Ability __instance)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			Set_downAirHitRecoveryTimer(__instance.data, HHBCPNCDNDH.DBOMOJGKIFI);
		}

		[HarmonyPatch(typeof(DownAirSwingAbility), "Update")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> DownAirUpdate_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_005f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0065: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			int num = -1;
			int num2 = -1;
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "SetAbilityState"));
			num2 = val.Pos;
			val.Start();
			num = val.Pos;
			val.RemoveInstructionsInRange(num, num2);
			val.Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				Transpilers.EmitDelegate<Action<DownAirSwingAbility>>((Action<DownAirSwingAbility>)delegate(DownAirSwingAbility inst)
				{
					//IL_005c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0061: Unknown result type (might be due to invalid IL or missing references)
					//IL_0066: Unknown result type (might be due to invalid IL or missing references)
					//IL_007b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0083: Unknown result type (might be due to invalid IL or missing references)
					if (((MovableData)((AbilityEntity)((Ability)inst).entity).abilityData).abilityState != "DOWN_AIR_LAND" && ((Entity)((Ability)inst).entity).OnGround() && !DebugSettings.instance.testAirAttacksOnGround)
					{
						((Ability)inst).SetAbilityState("DOWN_AIR_LAND");
					}
					if (((AttackingData)((Ability)inst).data).hitSomething)
					{
						Set_downAirHitRecoveryTimer(((Ability)inst).data, HHBCPNCDNDH.GAFCIOAEGKD(Get_downAirHitRecoveryTimer(((Ability)inst).data), World.FDELTA_TIME));
						if (HHBCPNCDNDH.OCDKNPDIPOB(Get_downAirHitRecoveryTimer(((Ability)inst).data), ((Ability)inst).framesDuration60fps(12)) && ((MovableData)((AbilityEntity)((Ability)inst).entity).abilityData).abilityState == "DOWN_AIR_LAND" && (((MovableEntity)((Ability)inst).entity).CheckActions() || ((ControllableEntity)((Ability)inst).entity).GetInput(InputAction.LEFT) || ((ControllableEntity)((Ability)inst).entity).GetInput(InputAction.RIGHT)))
						{
							((AbilityEntity)((Ability)inst).entity).EndAbilityStateToNormal();
						}
					}
				})
			});
			return val.InstructionEnumeration();
		}
	}
	internal class FPP_Patch
	{
		[HarmonyPatch(typeof(GetHitPlayerEntity), "DoParrySuccess")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> Transpiler_FPPFix(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Expected O, but got Unknown
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Expected O, but got Unknown
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_009a: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a0: Expected O, but got Unknown
			//IL_00c2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c8: Expected O, but got Unknown
			//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f1: Expected O, but got Unknown
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_0127: Unknown result type (might be due to invalid IL or missing references)
			//IL_012d: Expected O, but got Unknown
			//IL_0152: Unknown result type (might be due to invalid IL or missing references)
			//IL_0158: Expected O, but got Unknown
			//IL_0160: Unknown result type (might be due to invalid IL or missing references)
			//IL_0166: Expected O, but got Unknown
			//IL_016e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0174: Expected O, but got Unknown
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			int num = -1;
			int num2 = -1;
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[6]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "GetPosition"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_2, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "GetPosition"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "CreateParrySuccessEffect"), (string)null)
			});
			num2 = val.Pos;
			val.MatchBack(false, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_1, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "IsHittingBall"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Brfalse, (object)null, (string)null)
			});
			num = val.Pos;
			val.RemoveInstructionsInRange(num, num2);
			val.Insert((CodeInstruction[])(object)new CodeInstruction[5]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldarg_1, (object)null),
				new CodeInstruction(OpCodes.Ldarg_2, (object)null),
				new CodeInstruction(OpCodes.Ldloc_S, (object)6),
				Transpilers.EmitDelegate<Action<GetHitPlayerEntity, PlayerEntity, BallEntity, HHBCPNCDNDH>>((Action<GetHitPlayerEntity, PlayerEntity, BallEntity, HHBCPNCDNDH>)delegate(GetHitPlayerEntity inst, PlayerEntity succesfulPlayer, BallEntity ball, HHBCPNCDNDH hitstunDur)
				{
					//IL_0037: Unknown result type (might be due to invalid IL or missing references)
					//IL_003f: Unknown result type (might be due to invalid IL or missing references)
					//IL_0052: Unknown result type (might be due to invalid IL or missing references)
					//IL_0072: Unknown result type (might be due to invalid IL or missing references)
					//IL_0078: Unknown result type (might be due to invalid IL or missing references)
					//IL_007e: Unknown result type (might be due to invalid IL or missing references)
					//IL_0084: Unknown result type (might be due to invalid IL or missing references)
					//IL_0089: Unknown result type (might be due to invalid IL or missing references)
					//IL_0024: Unknown result type (might be due to invalid IL or missing references)
					if (!((HittingEntity)succesfulPlayer).IsHittingBall() && ((BouncableEntity)ball).hitbox.Intersects(((AttackingEntity)succesfulPlayer).parryBox, false, true))
					{
						((Entity)ball).SetPosition(((AttackingEntity)succesfulPlayer).parryBox.GetPosition());
						((MovableEntity)succesfulPlayer).PlaySfx((Sfx)87);
					}
					((HitableEntity)ball).StartHitstun(hitstunDur, ((HitableEntity)ball).hitableData.hitstunState);
					ScreenGameHud.StartHitStun((HitableEntity)(object)ball, true);
					((HitableEntity)ball).GetPixelFlySpeed(true);
					((EffectHandler)AccessTools.Field(typeof(GetHitPlayerEntity), "effectHandler").GetValue(inst)).CreateParrySuccessEffect(((Entity)ball).GetPosition(), IBGCBLLKIHA.FCKBPDNEAOG(((Entity)inst).GetPosition(), ((Entity)ball).GetPosition()));
				})
			});
			return val.InstructionEnumeration();
		}
	}
	[HarmonyPatch]
	internal class GeneralPatch
	{
		[HarmonyPatch(typeof(ScreenGameHud), "DoUpdate")]
		[HarmonyTranspiler]
		[HarmonyDebug]
		private static IEnumerable<CodeInstruction> FixSpeedOMeterSpillOver(IEnumerable<CodeInstruction> instructions, ILGenerator iLGenerator)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			//IL_0093: Unknown result type (might be due to invalid IL or missing references)
			//IL_0099: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldsfld && ((FieldInfo)i.operand).Name == "hitStunDuration"));
			val.SetAndAdvance(OpCodes.Ldsfld, (object)typeof(ScreenGameHud).GetField("hitStunEntity", BindingFlags.Static | BindingFlags.NonPublic));
			val.Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldfld, (object)typeof(HitableEntity).GetField("hitableData")),
				new CodeInstruction(OpCodes.Ldfld, (object)typeof(HitableData).GetField("hitstunDuration"))
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(/*Could not decode attribute arguments.*/)]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> PitchJumpBuffer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0009: Unknown result type (might be due to invalid IL or missing references)
			//IL_0023: Unknown result type (might be due to invalid IL or missing references)
			//IL_0029: Expected O, but got Unknown
			//IL_0037: Unknown result type (might be due to invalid IL or missing references)
			//IL_003d: Expected O, but got Unknown
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Expected O, but got Unknown
			new List<CodeInstruction>(instructions);
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldloc_0, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_2, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Stfld, (object)AccessTools.Field(typeof(AbilityState), "jumpCancel"), (string)null)
			}).Advance(1).SetOpcodeAndAdvance(OpCodes.Ldc_I4_0)
				.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(GetUpGrabAbility), "SetAbilityState")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> BlazeGetUpEffectMoved_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_005e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0064: Expected O, but got Unknown
			//IL_0086: Unknown result type (might be due to invalid IL or missing references)
			//IL_008c: Expected O, but got Unknown
			//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c9: Expected O, but got Unknown
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Expected O, but got Unknown
			//IL_0114: Unknown result type (might be due to invalid IL or missing references)
			//IL_011a: Expected O, but got Unknown
			//IL_0128: Unknown result type (might be due to invalid IL or missing references)
			//IL_012e: Expected O, but got Unknown
			//IL_013c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0142: Expected O, but got Unknown
			//IL_0164: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Expected O, but got Unknown
			//IL_0178: Unknown result type (might be due to invalid IL or missing references)
			//IL_017e: Expected O, but got Unknown
			//IL_01a0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a6: Expected O, but got Unknown
			//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01bf: Expected O, but got Unknown
			int num = -1;
			int num2 = -1;
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((OpCode?)OpCodes.Ldsfld, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "entity"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "GetPosition"), (string)null)
			});
			num = val.Pos;
			val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "CreateGetUpBlazeEffect"), (string)null)
			});
			num2 = val.Pos;
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[7]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand?.ToString() == "GET_UP_GRAB_DURING"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Brfalse, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "data"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_1, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Stfld && ((FieldInfo)i.operand).Name == "inGetUpBlaze"), (string)null)
			}).Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				Transpilers.EmitDelegate<Action<GetUpGrabAbility>>((Action<GetUpGrabAbility>)delegate(GetUpGrabAbility getUpGrab)
				{
					//IL_000b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0016: Unknown result type (might be due to invalid IL or missing references)
					EffectHandler.instance.CreateGetUpBlazeEffect(((Entity)((Ability)getUpGrab).entity).GetPosition(), ((HitableEntity)((Ability)getUpGrab).entity).GetTeam());
				})
			});
			val.RemoveInstructionsInRange(num, num2);
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(EffectHandler), "CreateGetUpBlazeEffect")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CreateGetUpBlazeEffect_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			List<CodeInstruction> list = new List<CodeInstruction>(instructions);
			int num = -1;
			bool flag = false;
			for (int i = 0; i < list.Count; i++)
			{
				if (list[i].opcode == OpCodes.Ldc_I4)
				{
					num = i;
				}
				if (list[i].opcode == OpCodes.Stfld && ((FieldInfo)list[i].operand).Name == "animSpeed")
				{
					flag = true;
					break;
				}
			}
			if (num > -1 && flag)
			{
				list[num].operand = 180;
			}
			else
			{
				Plugin.Logger.LogFatal((object)"Did not find animSpeed");
			}
			return list.AsEnumerable();
		}

		[HarmonyPatch(/*Could not decode attribute arguments.*/)]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> UnifyDownAirAbility(IEnumerable<CodeInstruction> instructions)
		{
			List<CodeInstruction> list = new List<CodeInstruction>(instructions);
			for (int i = 0; i < list.Count; i++)
			{
				if (list[i].opcode == OpCodes.Ldc_I4_S && (sbyte)list[i].operand == 14)
				{
					list[i].operand = (sbyte)11;
				}
				if (list[i].opcode == OpCodes.Ldc_I4_8)
				{
					list[i].opcode = OpCodes.Ldc_I4_S;
					list[i].operand = (sbyte)9;
					Plugin.Logger.LogInfo((object)"DownAirAbility Values Changed");
					break;
				}
			}
			return list.AsEnumerable();
		}

		[HarmonyPatch(typeof(World), "FrameUpdate")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> FrameUpdate_Trans(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Expected O, but got Unknown
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && i.operand == typeof(World).GetField("playerHandler")), (string)null),
				new CodeMatch((OpCode?)OpCodes.Callvirt, (object)null, (string)null)
			}).Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				Transpilers.EmitDelegate<Action<World>>((Action<World>)delegate
				{
					ALDOKEMAOMB.ICOCPAFKCCE((Action<PlayerEntity>)delegate(PlayerEntity player)
					{
						//IL_0006: Unknown result type (might be due to invalid IL or missing references)
						//IL_000c: Invalid comparison between Unknown and I4
						//IL_0014: Unknown result type (might be due to invalid IL or missing references)
						//IL_001a: Invalid comparison between Unknown and I4
						if ((int)((MovableData)player.playerData).playerState == 1 || (int)((MovableData)player.playerData).playerState == 2)
						{
							((AbilityEntity)player).CheckParry();
						}
					});
				})
			}).InstructionEnumeration();
		}

		[HarmonyPatch(typeof(PlayerEntity), "UpdateState")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> RemoveCheckParry_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_001c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0022: Expected O, but got Unknown
			//IL_0044: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[2]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && i.operand == typeof(AbilityEntity).GetMethod("CheckParry")), (string)null)
			}).Repeat((Action<CodeMatcher>)delegate(CodeMatcher matcher)
			{
				matcher.RemoveInstructions(2);
			}, (Action<string>)null).InstructionEnumeration();
		}

		[HarmonyPatch(typeof(GetHitBallEntity), "CheckHitboxesLogic")]
		[HarmonyTranspiler]
		[HarmonyDebug]
		private static IEnumerable<CodeInstruction> CheckSameFrameGrabs(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Expected O, but got Unknown
			//IL_0022: Unknown result type (might be due to invalid IL or missing references)
			//IL_0028: Expected O, but got Unknown
			//IL_003c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Expected O, but got Unknown
			//IL_0050: Unknown result type (might be due to invalid IL or missing references)
			//IL_0056: Expected O, but got Unknown
			//IL_0078: Unknown result type (might be due to invalid IL or missing references)
			//IL_007e: Expected O, but got Unknown
			//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
			//IL_00da: Expected O, but got Unknown
			//IL_011d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0123: Expected O, but got Unknown
			//IL_0131: Unknown result type (might be due to invalid IL or missing references)
			//IL_0137: Expected O, but got Unknown
			//IL_0159: Unknown result type (might be due to invalid IL or missing references)
			//IL_015f: Expected O, but got Unknown
			//IL_0180: Unknown result type (might be due to invalid IL or missing references)
			//IL_0186: Expected O, but got Unknown
			//IL_01a8: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ae: Expected O, but got Unknown
			//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
			//IL_01d6: Expected O, but got Unknown
			//IL_01e4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ea: Expected O, but got Unknown
			//IL_020d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0213: Expected O, but got Unknown
			//IL_021b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0221: Expected O, but got Unknown
			//IL_0229: Unknown result type (might be due to invalid IL or missing references)
			//IL_022f: Expected O, but got Unknown
			//IL_025e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0264: Expected O, but got Unknown
			int num = -1;
			int num2 = -1;
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_S, (object)(sbyte)19, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_S, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "SetBallState"), (string)null)
			});
			num2 = val.Pos;
			val.SearchBack((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldsfld && ((FieldInfo)i.operand).Name == "GIGAKBJGFDI"));
			num = val.Pos;
			val.RemoveInstructionsInRange(num, num2);
			num2 = -1;
			val.Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				Transpilers.EmitDelegate<Action<GetHitBallEntity>>((Action<GetHitBallEntity>)delegate(GetHitBallEntity hitBallEntity)
				{
					//IL_004f: Unknown result type (might be due to invalid IL or missing references)
					//IL_000d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0013: Invalid comparison between Unknown and I4
					//IL_002d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0032: Unknown result type (might be due to invalid IL or missing references)
					//IL_001b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0020: Unknown result type (might be due to invalid IL or missing references)
					if (!hitBallEntity.IsActiveCuffedBall())
					{
						if ((int)JOMBNFKIHIC.GIGAKBJGFDI.PNJOKAICMNN == 5)
						{
							((HitableData)hitBallEntity.ballData).flyDirection = IBGCBLLKIHA.DABJBJIFJNL();
						}
						else
						{
							((HitableData)hitBallEntity.ballData).flyDirection = IBGCBLLKIHA.GNBPBDKODEA();
						}
						((BouncableEntity)hitBallEntity).SetBallState((BallState)19, (HitstunState)51);
					}
					else
					{
						((BouncableEntity)hitBallEntity).SetBallState((BallState)12, (HitstunState)51);
						((HitableEntity)hitBallEntity).StartHitstun(((Entity)hitBallEntity).framesDuration60fps(5), (HitstunState)51);
					}
				})
			});
			num2 = val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_2, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "HandleHitboxGrab"), (string)null)
			}).Pos;
			num = val.MatchBack(false, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "ballData"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "cuffBallOwner"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_M1, (object)null, (string)null)
			}).Pos;
			val.RemoveInstructionsInRange(num, num2);
			val.Insert((CodeInstruction[])(object)new CodeInstruction[5]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldarg_1, (object)null),
				new CodeInstruction(OpCodes.Ldarg_2, (object)null),
				Transpilers.EmitDelegate<Func<GetHitBallEntity, PlayerEntity, string, bool>>((Func<GetHitBallEntity, PlayerEntity, string, bool>)delegate(GetHitBallEntity hitBallEntity, PlayerEntity player, string hitboxName)
				{
					//IL_0053: Unknown result type (might be due to invalid IL or missing references)
					//IL_0059: Invalid comparison between Unknown and I4
					//IL_0060: Unknown result type (might be due to invalid IL or missing references)
					//IL_0066: Invalid comparison between Unknown and I4
					//IL_010c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0113: Invalid comparison between Unknown and I4
					//IL_008b: Unknown result type (might be due to invalid IL or missing references)
					//IL_009a: Unknown result type (might be due to invalid IL or missing references)
					//IL_009f: Unknown result type (might be due to invalid IL or missing references)
					//IL_00a4: Unknown result type (might be due to invalid IL or missing references)
					//IL_0073: Unknown result type (might be due to invalid IL or missing references)
					//IL_0078: Unknown result type (might be due to invalid IL or missing references)
					//IL_0120: Unknown result type (might be due to invalid IL or missing references)
					//IL_0127: Invalid comparison between Unknown and I4
					bool isGrabvsSwing = false;
					bool isGrabvsGrab = false;
					ALDOKEMAOMB.ICOCPAFKCCE((Action<PlayerEntity>)delegate(PlayerEntity otherPlayer)
					{
						if (!((Object)(object)otherPlayer == (Object)(object)player))
						{
							bool flag = false;
							bool flag2 = false;
							string text = ((AttackingEntity)otherPlayer).CheckHitboxes(((BouncableEntity)hitBallEntity).hitbox, false, false);
							if (((HitableEntity)hitBallEntity).MatchPowerupIs((Powerup)3, (PowerupPhase)2))
							{
								flag = false;
							}
							else if (text != PlayerBox.NONE && !((AttackingEntity)otherPlayer).hitboxes[text].grabs)
							{
								flag = true;
							}
							else if (text != PlayerBox.NONE && ((AttackingEntity)otherPlayer).hitboxes[text].grabs)
							{
								flag2 = true;
							}
							if ((Object)(object)player != (Object)(object)otherPlayer && !((AttackingEntity)otherPlayer).EntityTracked(((Entity)hitBallEntity).entityID) && flag)
							{
								isGrabvsSwing = true;
							}
							else if ((Object)(object)player != (Object)(object)otherPlayer && !((AttackingEntity)otherPlayer).EntityTracked(((Entity)hitBallEntity).entityID) && flag2)
							{
								hitBallEntity.SameFrameClashPlayer(otherPlayer, text);
								isGrabvsGrab = true;
							}
						}
					});
					if (isGrabvsSwing)
					{
						return false;
					}
					if (isGrabvsGrab)
					{
						if ((int)((HitableData)hitBallEntity.ballData).team != 4)
						{
							if ((int)JOMBNFKIHIC.GIGAKBJGFDI.PNJOKAICMNN == 5)
							{
								((HitableData)hitBallEntity.ballData).flyDirection = IBGCBLLKIHA.DABJBJIFJNL();
							}
							else
							{
								((HitableData)hitBallEntity.ballData).flyDirection = new IBGCBLLKIHA(new HHBCPNCDNDH(0), HHBCPNCDNDH.NKKIFJJEPOL(0.3m));
							}
							((BouncableEntity)hitBallEntity).SetBallState((BallState)19, (HitstunState)51);
						}
						hitBallEntity.SameFrameClashPlayer(player, hitboxName);
						return false;
					}
					if (hitBallEntity.ballData.cuffBallOwner != -1 && hitBallEntity.ballData.cuffBallOwner != ((AbilityEntity)player).player.CJFLMDNNMIE && ((int)((BouncingData)hitBallEntity.ballData).ballState == 11 || (int)((BouncingData)hitBallEntity.ballData).ballState == 22))
					{
						return false;
					}
					((HittingEntity)player).HandleHitboxGrab(hitboxName, (HitableEntity)(object)hitBallEntity);
					return true;
				}),
				new CodeInstruction(OpCodes.Ret, (object)null)
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(GetHitPlayerEntity), "ParryAnimFromHitbox")]
		[HarmonyPrefix]
		private static bool ParryAnimFromHitbox_Prefix(GetHitPlayerEntity __instance, ref string boxName)
		{
			if (boxName == "GRAB_HITBOX")
			{
				((AnimatableEntity)__instance).PlayAnim("grab", "main");
				((AnimatableEntity)__instance).UpdateAnimatableEntity();
				((Entity)__instance).UpdateUnityTransform();
				return false;
			}
			return true;
		}

		[HarmonyPatch(typeof(MovableData), "Load")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> LoadCrouchTimer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			List<CodeInstruction> list = new List<CodeInstruction>(instructions);
			list.Insert(list.Count - 4, new CodeInstruction(OpCodes.Ldarg_0, (object)null));
			list.Insert(list.Count - 4, new CodeInstruction(OpCodes.Ldloc_0, (object)null));
			list.Insert(list.Count - 4, CodeInstruction.LoadField(typeof(MovableData), "crouchTimer", false));
			list.Insert(list.Count - 4, CodeInstruction.StoreField(typeof(MovableData), "crouchTimer"));
			return list.AsEnumerable();
		}

		[HarmonyPatch(typeof(MovableData), "Pack")]
		[HarmonyPrefix]
		private static void PackCrouchTimer_Prefix(SendableState p, bool extensive, MovableData __instance)
		{
			//IL_0017: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			FieldInfo fieldInfo = AccessTools.Field(typeof(MovableData), "crouchTimer");
			fieldInfo.SetValue(__instance, HHBCPNCDNDH.DBOMOJGKIFI);
			p.AddFloatf((HHBCPNCDNDH)fieldInfo.GetValue(__instance), "Movable.crouchTimer");
		}

		[HarmonyPatch(/*Could not decode attribute arguments.*/)]
		[HarmonyPostfix]
		private static void AddCrouchTimerToConstructor_PostFix(MovableData __instance)
		{
			//IL_0015: Unknown result type (might be due to invalid IL or missing references)
			AccessTools.Field(typeof(MovableData), "crouchTimer").SetValue(__instance, HHBCPNCDNDH.DBOMOJGKIFI);
		}

		[HarmonyPatch(typeof(CrouchAbility), "Update")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CrouchStickyFix(IEnumerable<CodeInstruction> instructions, ILGenerator iLGenerator)
		{
			//IL_0008: Unknown result type (might be due to invalid IL or missing references)
			//IL_000e: Expected O, but got Unknown
			//IL_0059: Unknown result type (might be due to invalid IL or missing references)
			//IL_005f: Expected O, but got Unknown
			//IL_0081: Unknown result type (might be due to invalid IL or missing references)
			//IL_0087: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c3: Expected O, but got Unknown
			//IL_00e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00eb: Expected O, but got Unknown
			//IL_00f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00ff: Expected O, but got Unknown
			//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01eb: Expected O, but got Unknown
			//IL_0282: Unknown result type (might be due to invalid IL or missing references)
			//IL_0288: Expected O, but got Unknown
			//IL_02d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_02d7: Expected O, but got Unknown
			//IL_02f9: Unknown result type (might be due to invalid IL or missing references)
			//IL_02ff: Expected O, but got Unknown
			//IL_0321: Unknown result type (might be due to invalid IL or missing references)
			//IL_0327: Expected O, but got Unknown
			//IL_034a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0350: Expected O, but got Unknown
			//IL_0372: Unknown result type (might be due to invalid IL or missing references)
			//IL_0378: Expected O, but got Unknown
			//IL_039a: Unknown result type (might be due to invalid IL or missing references)
			//IL_03a0: Expected O, but got Unknown
			//IL_03c7: Unknown result type (might be due to invalid IL or missing references)
			//IL_03cd: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			Label label = iLGenerator.DefineLabel();
			FieldInfo crouchTimerFieldInfo = AccessTools.Field(typeof(MovableData), "crouchTimer");
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[6]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "data"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "abilityStateTimer"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "entity"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "crouchOutDuration"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null)
			});
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Brfalse));
			val.Operand = label;
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "DoJump")).Advance(1);
			val.Operand = label;
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "StartAbility")).Advance(1);
			val.Operand = label;
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "EndAbilityStateToNormal")).Advance(1);
			val.Insert((CodeInstruction[])(object)new CodeInstruction[1]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null)
			});
			val.Labels.Add(label);
			val.Advance(1);
			val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[1] { Transpilers.EmitDelegate<Action<CrouchAbility>>((Action<CrouchAbility>)delegate(CrouchAbility inst)
			{
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				crouchTimerFieldInfo.SetValue(((Ability)inst).data, HHBCPNCDNDH.DBOMOJGKIFI);
			}) });
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand.ToString() == "IN_CROUCH"));
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldarg_0));
			val.Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				Transpilers.EmitDelegate<Action<CrouchAbility>>((Action<CrouchAbility>)delegate(CrouchAbility inst)
				{
					//IL_001a: Unknown result type (might be due to invalid IL or missing references)
					//IL_001f: Unknown result type (might be due to invalid IL or missing references)
					//IL_0024: Unknown result type (might be due to invalid IL or missing references)
					FieldInfo fieldInfo = crouchTimerFieldInfo;
					fieldInfo.SetValue(((Ability)inst).data, HHBCPNCDNDH.GAFCIOAEGKD((HHBCPNCDNDH)fieldInfo.GetValue(((Ability)inst).data), World.FDELTA_TIME));
				})
			});
			int num = -1;
			int num2 = -1;
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "entity"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldsfld && ((FieldInfo)i.operand).Name == "DOWN"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "GetInput"), (string)null)
			});
			num = val.Pos;
			val.MatchBack(false, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "data"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "abilityStateTimer"), (string)null)
			});
			num2 = val.Pos;
			val.RemoveInstructionsInRange(num2, num);
			val.Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				Transpilers.EmitDelegate<Func<CrouchAbility, bool>>((Func<CrouchAbility, bool>)((CrouchAbility inst) => !HHBCPNCDNDH.OAHDEOGKOIM((HHBCPNCDNDH)crouchTimerFieldInfo.GetValue(((Ability)inst).data), ((MovableEntity)((Ability)inst).entity).crouchMinDuration) || ((ControllableEntity)((Ability)inst).entity).GetInput(InputAction.DOWN)))
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(CrouchAbility), "Start")]
		[HarmonyPostfix]
		private static void GetCrouchTimer(CrouchAbility __instance)
		{
			//IL_001a: Unknown result type (might be due to invalid IL or missing references)
			AccessTools.Field(typeof(MovableData), "crouchTimer").SetValue(((Ability)__instance).data, HHBCPNCDNDH.DBOMOJGKIFI);
		}

		[HarmonyPatch(typeof(AbilityEntity), "UpdateAbilityState")]
		[HarmonyPostfix]
		private static void CheckCrouchCancel_Postfix(AbilityEntity __instance)
		{
			FieldInfo fieldInfo = AccessTools.Field(typeof(AbilityState), "canCrouchCancel");
			AbilityState obj = __instance.abilityStates[((MovableData)__instance.abilityData).abilityState];
			if ((bool)fieldInfo.GetValue(obj) && ((Ability)__instance.crouchAbility).CheckActivation(true) && !__instance.abilityData.isEatingStuff)
			{
				__instance.abilityData.bufferAbility = string.Empty;
				((MovableEntity)__instance).SetAbilityState("IN_CROUCH");
			}
		}

		[HarmonyPatch(typeof(AbilityEntity), "SetEntityAbilities")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> AddCanCrouchCancel_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			//IL_0038: Expected O, but got Unknown
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_005a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0060: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Expected O, but got Unknown
			//IL_0082: Unknown result type (might be due to invalid IL or missing references)
			//IL_0088: Expected O, but got Unknown
			//IL_009b: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a1: Expected O, but got Unknown
			//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00af: Expected O, but got Unknown
			//IL_00ca: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d0: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[5]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand.ToString().Contains("_HURTBOX")), (string)null),
				new CodeMatch((OpCode?)OpCodes.Callvirt, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldloc_1, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Stfld, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldloc_0, (object)null, (string)null)
			}).Insert((CodeInstruction[])(object)new CodeInstruction[3]
			{
				new CodeInstruction(OpCodes.Ldloc_0, (object)null),
				new CodeInstruction(OpCodes.Ldc_I4_1, (object)null),
				new CodeInstruction(OpCodes.Stfld, (object)AccessTools.Field(typeof(AbilityState), "canCrouchCancel"))
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(MovableEntity), "Movement")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator iLGenerator)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0025: Unknown result type (might be due to invalid IL or missing references)
			//IL_002b: Expected O, but got Unknown
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Expected O, but got Unknown
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			//IL_0099: Unknown result type (might be due to invalid IL or missing references)
			//IL_009f: Expected O, but got Unknown
			//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b2: Expected O, but got Unknown
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Expected O, but got Unknown
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e7: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			Label label = iLGenerator.DefineLabel();
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((OpCode?)OpCodes.Ldloc_S, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"startRun", (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "op_Equality"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Brfalse, (object)null, (string)null)
			});
			val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[4]
			{
				new CodeInstruction(OpCodes.Brtrue, (object)label),
				new CodeInstruction(OpCodes.Ldloc_S, (object)(byte)7),
				new CodeInstruction(OpCodes.Ldstr, (object)"land"),
				new CodeInstruction(OpCodes.Call, (object)AccessTools.Method(typeof(string), "op_Equality", (Type[])null, (Type[])null))
			}).Advance(1);
			val.Labels.Add(label);
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(InputAction), "ActionHeldRelevant")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> GrabTranspiler(IEnumerable<CodeInstruction> instructions, ILGenerator iLGenerator)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_002c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0032: Expected O, but got Unknown
			//IL_0054: Unknown result type (might be due to invalid IL or missing references)
			//IL_005a: Expected O, but got Unknown
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_006e: Expected O, but got Unknown
			//IL_007c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0082: Expected O, but got Unknown
			//IL_0095: Unknown result type (might be due to invalid IL or missing references)
			//IL_009b: Expected O, but got Unknown
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Expected O, but got Unknown
			//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
			//IL_00cf: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			Label label = iLGenerator.DefineLabel();
			val.End();
			val.MatchBack(false, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldsfld && ((FieldInfo)i.operand).Name == "BUNT"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Beq, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null)
			}).Insert((CodeInstruction[])(object)new CodeInstruction[3]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldsfld, (object)AccessTools.Field(typeof(InputAction), "GRAB")),
				new CodeInstruction(OpCodes.Beq, (object)label)
			}).SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldc_I4_1));
			val.Labels.Add(label);
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(MovableEntity), "Movement")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> AirPivotBuffer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_001e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0024: Expected O, but got Unknown
			//IL_0046: Unknown result type (might be due to invalid IL or missing references)
			//IL_004c: Expected O, but got Unknown
			//IL_006e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0074: Expected O, but got Unknown
			//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bc: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldsfld && ((FieldInfo)i.operand).Name == "UP"), (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "GetInputNew"), (string)null)
			});
			val.Advance(1).Insert((CodeInstruction[])(object)new CodeInstruction[2]
			{
				Transpilers.EmitDelegate<Action<MovableEntity>>((Action<MovableEntity>)delegate(MovableEntity moveEnt)
				{
					//IL_0006: Unknown result type (might be due to invalid IL or missing references)
					//IL_000b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0082: Unknown result type (might be due to invalid IL or missing references)
					//IL_0089: Unknown result type (might be due to invalid IL or missing references)
					//IL_0067: Unknown result type (might be due to invalid IL or missing references)
					//IL_006c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0071: Unknown result type (might be due to invalid IL or missing references)
					//IL_0076: Unknown result type (might be due to invalid IL or missing references)
					//IL_00da: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
					//IL_00eb: Unknown result type (might be due to invalid IL or missing references)
					//IL_0193: Unknown result type (might be due to invalid IL or missing references)
					//IL_019a: Unknown result type (might be due to invalid IL or missing references)
					//IL_019f: Unknown result type (might be due to invalid IL or missing references)
					//IL_01a4: Unknown result type (might be due to invalid IL or missing references)
					//IL_0100: Unknown result type (might be due to invalid IL or missing references)
					//IL_0105: Unknown result type (might be due to invalid IL or missing references)
					//IL_0111: Unknown result type (might be due to invalid IL or missing references)
					//IL_0116: Unknown result type (might be due to invalid IL or missing references)
					//IL_011b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0120: Unknown result type (might be due to invalid IL or missing references)
					//IL_0130: Unknown result type (might be due to invalid IL or missing references)
					//IL_0135: Unknown result type (might be due to invalid IL or missing references)
					//IL_013a: Unknown result type (might be due to invalid IL or missing references)
					//IL_0147: Unknown result type (might be due to invalid IL or missing references)
					//IL_0168: Unknown result type (might be due to invalid IL or missing references)
					//IL_016d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0172: Unknown result type (might be due to invalid IL or missing references)
					//IL_0177: Unknown result type (might be due to invalid IL or missing references)
					//IL_01b9: Unknown result type (might be due to invalid IL or missing references)
					//IL_01be: Unknown result type (might be due to invalid IL or missing references)
					//IL_01ca: Unknown result type (might be due to invalid IL or missing references)
					//IL_01cf: Unknown result type (might be due to invalid IL or missing references)
					//IL_01d4: Unknown result type (might be due to invalid IL or missing references)
					//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
					//IL_01e9: Unknown result type (might be due to invalid IL or missing references)
					//IL_01ee: Unknown result type (might be due to invalid IL or missing references)
					//IL_01f3: Unknown result type (might be due to invalid IL or missing references)
					//IL_0200: Unknown result type (might be due to invalid IL or missing references)
					//IL_0221: Unknown result type (might be due to invalid IL or missing references)
					//IL_0226: Unknown result type (might be due to invalid IL or missing references)
					//IL_022b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0230: Unknown result type (might be due to invalid IL or missing references)
					if (HHBCPNCDNDH.EAOICALCHJI(moveEnt.moveableData.pivotBuffer, HHBCPNCDNDH.DBOMOJGKIFI) && ((ControllableEntity)moveEnt).GetInput(InputAction.DOWN))
					{
						string currentAnim = ((AnimatableEntity)moveEnt).GetAnimDataOfVisual("main").currentAnim;
						if (((Entity)moveEnt).OnGround() && currentAnim == "land")
						{
							moveEnt.StartAbility("crouch");
							moveEnt.moveableData.pivotBuffer = HHBCPNCDNDH.GANELPBAOPN(HHBCPNCDNDH.NPDCPLFLLIG(moveEnt.moveableData.pivotBuffer));
						}
					}
					else if (HHBCPNCDNDH.OAHDEOGKOIM(moveEnt.moveableData.pivotBuffer, ((Entity)moveEnt).framesDuration60fps(6)))
					{
						string currentAnim2 = ((AnimatableEntity)moveEnt).GetAnimDataOfVisual("main").currentAnim;
						if (((Entity)moveEnt).OnGround() && currentAnim2 == "land")
						{
							if (((ControllableEntity)moveEnt).GetInput(InputAction.LEFT) && HHBCPNCDNDH.EAOICALCHJI(HHBCPNCDNDH.FCGOICMIBEA(moveEnt.moveableData.pivotBuffer, HHBCPNCDNDH.GEIMAIJIPKI(2L)), HHBCPNCDNDH.DBOMOJGKIFI))
							{
								EffectHandler.instance.CreateSlowDustEffect(new IBGCBLLKIHA(HHBCPNCDNDH.FCKBPDNEAOG(((Entity)moveEnt).GetPosition().GCPKPHMKLBN, HHBCPNCDNDH.AJOCFFLIIIH(HHBCPNCDNDH.NKKIFJJEPOL(14m), World.FPIXEL_SIZE)), ((JEPKNLONCHD)(ref moveEnt.moveBox.bounds)).DLIFPGENCIG().CGJJEHPPOAN), (Side)0);
								moveEnt.SetMoveDirection((Side)1, IBGCBLLKIHA.GCPFGINDGEM());
								moveEnt.SetAbilityState("START_RUN");
								moveEnt.moveableData.pivotBuffer = HHBCPNCDNDH.GANELPBAOPN(HHBCPNCDNDH.NPDCPLFLLIG(moveEnt.moveableData.pivotBuffer));
							}
							else if (((ControllableEntity)moveEnt).GetInput(InputAction.RIGHT) && HHBCPNCDNDH.EAOICALCHJI(HHBCPNCDNDH.FCGOICMIBEA(moveEnt.moveableData.pivotBuffer, HHBCPNCDNDH.GEIMAIJIPKI(2L)), HHBCPNCDNDH.DBOMOJGKIFI))
							{
								EffectHandler.instance.CreateSlowDustEffect(new IBGCBLLKIHA(HHBCPNCDNDH.GAFCIOAEGKD(((Entity)moveEnt).GetPosition().GCPKPHMKLBN, HHBCPNCDNDH.AJOCFFLIIIH(HHBCPNCDNDH.NKKIFJJEPOL(46m), World.FPIXEL_SIZE)), ((JEPKNLONCHD)(ref moveEnt.moveBox.bounds)).DLIFPGENCIG().CGJJEHPPOAN), (Side)1);
								moveEnt.SetMoveDirection((Side)0, IBGCBLLKIHA.GCPFGINDGEM());
								moveEnt.SetAbilityState("START_RUN");
								moveEnt.moveableData.pivotBuffer = HHBCPNCDNDH.GANELPBAOPN(HHBCPNCDNDH.NPDCPLFLLIG(moveEnt.moveableData.pivotBuffer));
							}
						}
					}
				}),
				new CodeInstruction(OpCodes.Ldarg_0, (object)null)
			});
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(UIInput), "HandleCursors")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CursorSpeedRelativeToResolution(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0036: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_004a: Unknown result type (might be due to invalid IL or missing references)
			//IL_0050: Expected O, but got Unknown
			//IL_0072: Unknown result type (might be due to invalid IL or missing references)
			//IL_0078: Expected O, but got Unknown
			//IL_00a1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a7: Expected O, but got Unknown
			//IL_00b5: Unknown result type (might be due to invalid IL or missing references)
			//IL_00bb: Expected O, but got Unknown
			//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e3: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			int num = -1;
			int num2 = -1;
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "get_deltaTime"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Stfld && ((FieldInfo)i.operand).Name == "move"), (string)null)
			}).Advance(-1);
			num2 = val.Pos;
			val.MatchBack(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Ldloc_0, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldloc_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldfld && ((FieldInfo)i.operand).Name == "move"), (string)null)
			}).Advance(1);
			num = val.Pos;
			val.RemoveInstructionsInRange(num, num2).Insert((CodeInstruction[])(object)new CodeInstruction[1] { Transpilers.EmitDelegate<Func<Vector2, Vector2>>((Func<Vector2, Vector2>)((Vector2 move) => move * UIInput.cursorSpeed * UIInput.mainCursor.GetHoverSlow() * Time.deltaTime * ((float)Screen.width / 1280f))) });
			return val.InstructionEnumeration();
		}
	}
	[HarmonyPatch]
	internal class LandingHurtboxPatch
	{
		[HarmonyPatch(typeof(AbilityEntity), "SetEntityAbilities")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> AddLandingHurtboxToState(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0064: Unknown result type (might be due to invalid IL or missing references)
			//IL_006a: Expected O, but got Unknown
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand?.ToString() == "LAND"), (string)null)
			}).MatchForward(false, (CodeMatch[])(object)new CodeMatch[1]
			{
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand?.ToString() == "CROUCH_HURTBOX"), (string)null)
			}).SetOperandAndAdvance((object)"LANDING_HURTBOX")
				.End()
				.InstructionEnumeration();
		}

		private static IEnumerable<CodeInstruction> GetLandingHurtboxInstructions(IEnumerable<CodeInstruction> instructions, int sizeX, int sizeY)
		{
			//IL_0016: Unknown result type (might be due to invalid IL or missing references)
			//IL_0030: Unknown result type (might be due to invalid IL or missing references)
			//IL_0036: Expected O, but got Unknown
			//IL_0058: Unknown result type (might be due to invalid IL or missing references)
			//IL_005e: Expected O, but got Unknown
			//IL_0071: Unknown result type (might be due to invalid IL or missing references)
			//IL_0077: Expected O, but got Unknown
			//IL_007f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0085: Expected O, but got Unknown
			return new CodeMatcher(instructions, (ILGenerator)null).MatchForward(false, (CodeMatch[])(object)new CodeMatch[2]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand?.ToString() == "CROUCH_HURTBOX"), (string)null)
			}).Insert((CodeInstruction[])(object)new CodeInstruction[3]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldloc_0, (object)null),
				Transpilers.EmitDelegate<Action<AttackingEntity, HHBCPNCDNDH>>((Action<AttackingEntity, HHBCPNCDNDH>)delegate(AttackingEntity attEntity, HHBCPNCDNDH fpixel_SIZE)
				{
					//IL_0003: Unknown result type (might be due to invalid IL or missing references)
					//IL_0012: Unknown result type (might be due to invalid IL or missing references)
					//IL_0017: Unknown result type (might be due to invalid IL or missing references)
					//IL_001d: Unknown result type (might be due to invalid IL or missing references)
					//IL_002c: Unknown result type (might be due to invalid IL or missing references)
					//IL_0031: Unknown result type (might be due to invalid IL or missing references)
					//IL_0050: Unknown result type (might be due to invalid IL or missing references)
					//IL_0055: Unknown result type (might be due to invalid IL or missing references)
					//IL_0056: Unknown result type (might be due to invalid IL or missing references)
					//IL_005b: Unknown result type (might be due to invalid IL or missing references)
					//IL_0077: Unknown result type (might be due to invalid IL or missing references)
					//IL_007c: Unknown result type (might be due to invalid IL or missing references)
					//IL_007d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0082: Unknown result type (might be due to invalid IL or missing references)
					IBGCBLLKIHA val = default(IBGCBLLKIHA);
					((IBGCBLLKIHA)(ref val))..ctor(((JEPKNLONCHD)(ref ((MovableEntity)(PlayerEntity)attEntity).moveBox.bounds)).FDMPHHEJPCH().GCPKPHMKLBN, HHBCPNCDNDH.GAFCIOAEGKD(((JEPKNLONCHD)(ref ((MovableEntity)(PlayerEntity)attEntity).moveBox.bounds)).DLIFPGENCIG().CGJJEHPPOAN, HHBCPNCDNDH.AJOCFFLIIIH(HHBCPNCDNDH.NKKIFJJEPOL((decimal)sizeY * 0.5m), fpixel_SIZE)));
					attEntity.CreateHurtbox("LANDING_HURTBOX", IBGCBLLKIHA.AJOCFFLIIIH(new IBGCBLLKIHA(sizeX, sizeY), fpixel_SIZE), val);
				})
			}).InstructionEnumeration();
		}

		[HarmonyPatch(typeof(PongPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> PongPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 74).AsEnumerable();
		}

		[HarmonyPatch(typeof(BagPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> BagPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 94).AsEnumerable();
		}

		[HarmonyPatch(typeof(BossPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> BossPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 100, 115).AsEnumerable();
		}

		[HarmonyPatch(typeof(CopPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CopPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 90).AsEnumerable();
		}

		[HarmonyPatch(typeof(CrocPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CrocPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 80).AsEnumerable();
		}

		[HarmonyPatch(typeof(KidPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> KidPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 74).AsEnumerable();
		}

		[HarmonyPatch(typeof(RobotPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> RobotPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 100).AsEnumerable();
		}

		[HarmonyPatch(typeof(SkatePlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> SkatePlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 100).AsEnumerable();
		}

		[HarmonyPatch(typeof(ElectroPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> ElectroPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 70, 119).AsEnumerable();
		}

		[HarmonyPatch(typeof(BoomPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> BoomPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 100).AsEnumerable();
		}

		[HarmonyPatch(typeof(CandyPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> CandyPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 74).AsEnumerable();
		}

		[HarmonyPatch(typeof(GrafPlayer), "SetEntityBoxes")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> GrafPlayer_Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			return GetLandingHurtboxInstructions(instructions, 80, 90).AsEnumerable();
		}
	}
	internal class LieHurtboxPatch
	{
		[HarmonyTargetMethods]
		private static IEnumerable<MethodBase> TargetMethods()
		{
			yield return AccessTools.Method(typeof(BossPlayer), "SetEntityBoxes", (Type[])null, (Type[])null);
		}

		private static IEnumerable<CodeInstruction> Transpiler(IEnumerable<CodeInstruction> instructions)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_004f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0055: Expected O, but got Unknown
			//IL_0077: Unknown result type (might be due to invalid IL or missing references)
			//IL_007d: Expected O, but got Unknown
			//IL_008b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0091: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, (ILGenerator)null);
			int num = -1;
			int num2 = -1;
			val.SearchForward((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand.ToString() == "LIE_HURTBOX"));
			num = val.Pos;
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[3]
			{
				new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "CreateHurtbox"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Pop, (object)null, (string)null)
			});
			num2 = val.Pos;
			val.SearchBack((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Ldstr && i.operand.ToString() == "LIE_HURTBOX"));
			val.RemoveInstructionsInRange(num, num2);
			val.Insert((CodeInstruction[])(object)new CodeInstruction[1] { Transpilers.EmitDelegate<Action<PlayerEntity>>((Action<PlayerEntity>)delegate(PlayerEntity character)
			{
				//IL_000c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0013: Unknown result type (might be due to invalid IL or missing references)
				//IL_0018: Unknown result type (might be due to invalid IL or missing references)
				//IL_001d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0022: Unknown result type (might be due to invalid IL or missing references)
				//IL_0027: Unknown result type (might be due to invalid IL or missing references)
				//IL_0037: Unknown result type (might be due to invalid IL or missing references)
				//IL_003c: Unknown result type (might be due to invalid IL or missing references)
				//IL_004c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0051: Unknown result type (might be due to invalid IL or missing references)
				//IL_0056: Unknown result type (might be due to invalid IL or missing references)
				((AttackingEntity)character).CreateHurtbox("LIE_HURTBOX", IBGCBLLKIHA.AJOCFFLIIIH(new IBGCBLLKIHA(new HHBCPNCDNDH(character.pxHeight), HHBCPNCDNDH.NKKIFJJEPOL(45)), World.FPIXEL_SIZE), new IBGCBLLKIHA(HHBCPNCDNDH.DBOMOJGKIFI, HHBCPNCDNDH.GAFCIOAEGKD(((JEPKNLONCHD)(ref ((MovableEntity)character).moveBox.bounds)).DLIFPGENCIG().CGJJEHPPOAN, HHBCPNCDNDH.NKKIFJJEPOL(0.23m))));
			}) });
			return val.InstructionEnumeration();
		}
	}
	public class LLBCommunityTweak : HarmonyTweak
	{
		public LLBCommunityTweak()
			: base("com.github.daioutzu.llbcommunitypatch-tweak", "LLBCommunityPatch", (Harmony)null)
		{
			((HarmonyTweak)this).AddPatchClass(typeof(BallPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(CheckParryPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(GeneralPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(LandingHurtboxPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(FPP_Patch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(VisualsPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(LieHurtboxPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(DownAirHitRecoveryPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(SimpleParryChanges), false);
			((HarmonyTweak)this).AddPatchClass(typeof(PushPlayersInRadius_Patch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(CursorSpeedPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(DicePatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(DustAshesPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(LatchPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(ToxicPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(NitroPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(SwitchPatch), false);
			((HarmonyTweak)this).AddPatchClass(typeof(GridPatch), false);
		}

		protected override void DoPatch()
		{
			((HarmonyTweak)this).DoPatch();
		}

		protected override void DoUnpatch()
		{
			((HarmonyTweak)this).DoUnpatch();
		}
	}
	[BepInPlugin("com.github.daioutzu.llbcommunitypatch", "LLBCommunityPatch", "1.5.1")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInProcess("LLBlaze.exe")]
	public class Plugin : BaseUnityPlugin
	{
		internal static ManualLogSource Logger;

		private Harmony harmony = new Harmony("com.github.daioutzu.llbcommunitypatch");

		private void Awake()
		{
			Logger = ((BaseUnityPlugin)this).Logger;
			Logger.LogInfo((object)"Plugin LLBCommunityPatch is loaded!");
			bool flag = false;
			string[] patcherDLLs = GetPatcherDLLs();
			for (int i = 0; i < patcherDLLs.Length; i++)
			{
				if (Path.GetFileName(patcherDLLs[i]).Contains("LLBPatcher.dll"))
				{
					LLBTweaker.AddTweak((TweakBase)(object)new LLBCommunityTweak());
					flag = true;
					break;
				}
			}
			if (!flag)
			{
				Logger.LogFatal((object)("Could not find patcher file \"LLBPatcher.dll\" in " + Paths.PatcherPluginPath));
			}
		}

		public static float Floatf2Float(HHBCPNCDNDH BKPKJLGNIMB)
		{
			//IL_0014: Unknown result type (might be due to invalid IL or missing references)
			return (float)(long)AccessTools.Field(typeof(HHBCPNCDNDH), "OHJPAPMBBKM").GetValue(BKPKJLGNIMB) / 4.2949673E+09f;
		}

		public static string[] GetPatcherDLLs()
		{
			return Directory.GetFiles(Paths.PatcherPluginPath, "*.dll", SearchOption.AllDirectories);
		}
	}
	internal class VisualsPatch
	{
		[HarmonyPatch(typeof(BagPlayerModel), "SetEntityVisuals")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> StaticAltBag_Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator iLGenerator)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			//IL_0051: Unknown result type (might be due to invalid IL or missing references)
			//IL_0057: Expected O, but got Unknown
			//IL_0065: Unknown result type (might be due to invalid IL or missing references)
			//IL_006b: Expected O, but got Unknown
			//IL_0079: Unknown result type (might be due to invalid IL or missing references)
			//IL_007f: Expected O, but got Unknown
			//IL_009d: Unknown result type (might be due to invalid IL or missing references)
			//IL_00a3: Expected O, but got Unknown
			//IL_00be: Unknown result type (might be due to invalid IL or missing references)
			//IL_00c4: Expected O, but got Unknown
			//IL_00df: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e5: Expected O, but got Unknown
			//IL_00ed: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f3: Expected O, but got Unknown
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Expected O, but got Unknown
			//IL_011b: Unknown result type (might be due to invalid IL or missing references)
			//IL_0121: Expected O, but got Unknown
			//IL_0129: Unknown result type (might be due to invalid IL or missing references)
			//IL_012f: Expected O, but got Unknown
			//IL_0163: Unknown result type (might be due to invalid IL or missing references)
			//IL_0169: Expected O, but got Unknown
			//IL_0185: Unknown result type (might be due to invalid IL or missing references)
			//IL_018b: Expected O, but got Unknown
			//IL_019d: Unknown result type (might be due to invalid IL or missing references)
			//IL_01a3: Expected O, but got Unknown
			//IL_01c5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01cb: Expected O, but got Unknown
			//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
			//IL_01df: Expected O, but got Unknown
			//IL_0201: Unknown result type (might be due to invalid IL or missing references)
			//IL_0207: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, iLGenerator);
			Label label = iLGenerator.DefineLabel();
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[4]
			{
				new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"root/s1/s2/s3/flap/neck", (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Callvirt && ((MethodInfo)i.operand).Name == "Find"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Stfld, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null)
			});
			Label label2 = default(Label);
			val.CreateLabel(ref label2);
			val.InsertAndAdvance((CodeInstruction[])(object)new CodeInstruction[5]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldfld, (object)AccessTools.Field(typeof(AbilityEntity), "player")),
				new CodeInstruction(OpCodes.Ldfld, (object)AccessTools.Field(typeof(ALDOKEMAOMB), "AIINAIDBHJI")),
				new CodeInstruction(OpCodes.Ldc_I4_8, (object)null),
				new CodeInstruction(OpCodes.Bne_Un_S, (object)label2)
			});
			val.Insert((CodeInstruction[])(object)new CodeInstruction[4]
			{
				new CodeInstruction(OpCodes.Ldarg_0, (object)null),
				new CodeInstruction(OpCodes.Ldloc_0, (object)null),
				Transpilers.EmitDelegate<Func<BagPlayerModel, AOOJOMIECLD, bool>>((Func<BagPlayerModel, AOOJOMIECLD, bool>)delegate(BagPlayerModel bagModel, AOOJOMIECLD characterModelValues)
				{
					//IL_0006: Unknown result type (might be due to invalid IL or missing references)
					//IL_000c: Invalid comparison between Unknown and I4
					//IL_0029: Unknown result type (might be due to invalid IL or missing references)
					if ((int)((AbilityEntity)bagModel).player.AIINAIDBHJI == 8)
					{
						((VisualEntity)bagModel).SetVisualModel("shadowVisual", AOOJOMIECLD.HCFBCKBLLAH((Character)11, "shadow", ((AOOJOMIECLD)(ref characterModelValues)).KGFMPDNFIEC(), 0.39f, 0, (FKBHNEMDBMK)3), false, false);
						return true;
					}
					return false;
				}),
				new CodeInstruction(OpCodes.Br, (object)label)
			});
			val.MatchForward(false, (CodeMatch[])(object)new CodeMatch[5]
			{
				new CodeMatch((OpCode?)OpCodes.Ldarg_0, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"shadowVisual", (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Call && ((MethodInfo)i.operand).Name == "GetVisual"), (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_0, (object)null, (string)null),
				new CodeMatch((Func<CodeInstruction, bool>)((CodeInstruction i) => i.opcode == OpCodes.Stfld && ((FieldInfo)i.operand).Name == "flipMode"), (string)null)
			});
			val.Labels.Add(label);
			return val.InstructionEnumeration();
		}

		[HarmonyPatch(typeof(BossPlayerModel), "SetEntityVisuals")]
		[HarmonyTranspiler]
		private static IEnumerable<CodeInstruction> StaticAltBox_Transpiler(IEnumerable<CodeInstruction> instructions, ILGenerator iLGenerator)
		{
			//IL_0002: Unknown result type (might be due to invalid IL or missing references)
			//IL_0008: Expected O, but got Unknown
			//IL_0029: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Expected O, but got Unknown
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0043: Expected O, but got Unknown
			//IL_0055: Unknown result type (might be due to invalid IL or missing references)
			//IL_005b: Expected O, but got Unknown
			//IL_0069: Unknown result type (might be due to invalid IL or missing references)
			//IL_006f: Expected O, but got Unknown
			//IL_007d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0083: Expected O, but got Unknown
			//IL_0091: Unknown result type (might be due to invalid IL or missing references)
			//IL_0097: Expected O, but got Unknown
			//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b6: Expected O, but got Unknown
			//IL_00d1: Unknown result type (might be due to invalid IL or missing references)
			//IL_00d7: Expected O, but got Unknown
			//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
			//IL_00f8: Expected O, but got Unknown
			//IL_0100: Unknown result type (might be due to invalid IL or missing references)
			//IL_0106: Expected O, but got Unknown
			//IL_0113: Unknown result type (might be due to invalid IL or missing references)
			//IL_0119: Expected O, but got Unknown
			//IL_0121: Unknown result type (might be due to invalid IL or missing references)
			//IL_0127: Expected O, but got Unknown
			//IL_016d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0173: Expected O, but got Unknown
			//IL_0181: Unknown result type (might be due to invalid IL or missing references)
			//IL_0187: Expected O, but got Unknown
			//IL_0199: Unknown result type (might be due to invalid IL or missing references)
			//IL_019f: Expected O, but got Unknown
			//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
			//IL_01b3: Expected O, but got Unknown
			//IL_01c1: Unknown result type (might be due to invalid IL or missing references)
			//IL_01c7: Expected O, but got Unknown
			//IL_01d5: Unknown result type (might be due to invalid IL or missing references)
			//IL_01db: Expected O, but got Unknown
			//IL_01f4: Unknown result type (might be due to invalid IL or missing references)
			//IL_01fa: Expected O, but got Unknown
			//IL_0215: Unknown result type (might be due to invalid IL or missing references)
			//IL_021b: Expected O, but got Unknown
			//IL_0236: Unknown result type (might be due to invalid IL or missing references)
			//IL_023c: Expected O, but got Unknown
			//IL_0244: Unknown result type (might be due to invalid IL or missing references)
			//IL_024a: Expected O, but got Unknown
			//IL_0257: Unknown result type (might be due to invalid IL or missing references)
			//IL_025d: Expected O, but got Unknown
			//IL_0265: Unknown result type (might be due to invalid IL or missing references)
			//IL_026b: Expected O, but got Unknown
			CodeMatcher val = new CodeMatcher(instructions, iLGenerator);
			Label label = iLGenerator.DefineLabel();
			val.MatchForward(true, (CodeMatch[])(object)new CodeMatch[6]
			{
				new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"boostFlameL", (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_I4_6, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldstr, (object)"boostFlame", (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldloca_S, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Call, (object)null, (string)null),
				new CodeMatch((OpCode?)OpCodes.Ldc_R4, (object)null, (string)null)
			}).Advance(2).InsertAndAdvance((Co