Decompiled source of Pale Automaton v1.0.0

AstrumNova-PaleAutomaton/PaleAutomaton.dll

Decompiled 2 months ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using Architect.Behaviour.Utility;
using BepInEx;
using BepInEx.Configuration;
using GlobalEnums;
using HarmonyLib;
using HutongGames.PlayMaker;
using HutongGames.PlayMaker.Actions;
using Microsoft.CodeAnalysis;
using Mono.Cecil.Cil;
using MonoMod.Cil;
using MonoMod.RuntimeDetour;
using Silksong.AssetHelper.ManagedAssets;
using Silksong.FsmUtil;
using TeamCherry.Localization;
using UnityEngine;
using UnityEngine.SceneManagement;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("PaleAutomaton")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("0.1.0.0")]
[assembly: AssemblyInformationalVersion("0.1.0+3aa37c7e92c44d97f53ea5fd05da19339a77c3cf")]
[assembly: AssemblyProduct("PaleAutomaton")]
[assembly: AssemblyTitle("PaleAutomaton")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/astrum-nova/PaleAutomaton")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("0.1.0.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
	[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 BepInEx
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class BepInAutoPluginAttribute : Attribute
	{
		public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace BepInEx.Preloader.Core.Patching
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class PatcherAutoPluginAttribute : Attribute
	{
		public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace Microsoft.CodeAnalysis
{
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace Architect.Behaviour.Utility
{
	public class SceneBorderRemover : MonoBehaviour
	{
		[Serializable]
		[CompilerGenerated]
		private sealed class <>c
		{
			public static readonly <>c <>9 = new <>c();

			public static Func<Func<CameraController, bool>, CameraController, bool> <>9__1_0;

			public static Func<Instruction, bool> <>9__1_2;

			public static Func<Instruction, bool> <>9__1_3;

			public static Func<Instruction, bool> <>9__1_4;

			public static Func<Instruction, bool> <>9__1_5;

			public static Manipulator <>9__1_1;

			internal bool <Init>b__1_0(Func<CameraController, bool> orig, CameraController self)
			{
				return orig(self) || _count > 0;
			}

			internal void <Init>b__1_1(ILContext il)
			{
				//IL_0002: Unknown result type (might be due to invalid IL or missing references)
				//IL_0008: Expected O, but got Unknown
				//IL_008c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				ILCursor val = new ILCursor(il);
				if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[3]
				{
					(Instruction instr) => ILPatternMatchingExt.MatchLdcR4(instr, 0f),
					(Instruction _) => true,
					(Instruction instr) => ILPatternMatchingExt.MatchLdcR4(instr, 9999f)
				}))
				{
					val.Remove();
					val.Emit(OpCodes.Ldc_R4, -9999f);
					if (val.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1]
					{
						(Instruction instr) => ILPatternMatchingExt.MatchLdcR4(instr, 0f)
					}))
					{
						val.Remove();
						val.Emit(OpCodes.Ldc_R4, -9999f);
					}
				}
			}

			internal bool <Init>b__1_2(Instruction instr)
			{
				return ILPatternMatchingExt.MatchLdcR4(instr, 0f);
			}

			internal bool <Init>b__1_3(Instruction _)
			{
				return true;
			}

			internal bool <Init>b__1_4(Instruction instr)
			{
				return ILPatternMatchingExt.MatchLdcR4(instr, 9999f);
			}

			internal bool <Init>b__1_5(Instruction instr)
			{
				return ILPatternMatchingExt.MatchLdcR4(instr, 0f);
			}
		}

		private static int _count;

		public static void Init()
		{
			//IL_0039: 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_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_0072: Expected O, but got Unknown
			new Hook((MethodBase)typeof(CameraController).GetProperty("AllowExitingSceneBounds").GetGetMethod(), (Delegate)(Func<Func<CameraController, bool>, CameraController, bool>)((Func<CameraController, bool> orig, CameraController self) => orig(self) || _count > 0));
			MethodInfo? method = typeof(CameraTarget).GetMethod("Update");
			object obj = <>c.<>9__1_1;
			if (obj == null)
			{
				Manipulator val = delegate(ILContext il)
				{
					//IL_0002: Unknown result type (might be due to invalid IL or missing references)
					//IL_0008: Expected O, but got Unknown
					//IL_008c: Unknown result type (might be due to invalid IL or missing references)
					//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
					ILCursor val2 = new ILCursor(il);
					if (val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[3]
					{
						(Instruction instr) => ILPatternMatchingExt.MatchLdcR4(instr, 0f),
						(Instruction _) => true,
						(Instruction instr) => ILPatternMatchingExt.MatchLdcR4(instr, 9999f)
					}))
					{
						val2.Remove();
						val2.Emit(OpCodes.Ldc_R4, -9999f);
						if (val2.TryGotoNext((MoveType)0, new Func<Instruction, bool>[1]
						{
							(Instruction instr) => ILPatternMatchingExt.MatchLdcR4(instr, 0f)
						}))
						{
							val2.Remove();
							val2.Emit(OpCodes.Ldc_R4, -9999f);
						}
					}
				};
				<>c.<>9__1_1 = val;
				obj = (object)val;
			}
			new ILHook((MethodBase)method, (Manipulator)obj);
		}

		private void OnEnable()
		{
			_count++;
		}

		private void OnDisable()
		{
			_count--;
		}
	}
}
namespace PaleAutomaton
{
	public static class CustomBehaviour
	{
		[CompilerGenerated]
		private sealed class <>c__DisplayClass35_0
		{
			public GameObject corpse;

			internal void <DeathSequence>b__0()
			{
				Extensions.FlipLocalScale(corpse.transform, true, false, false);
			}

			internal void <DeathSequence>b__1()
			{
				//IL_0028: Unknown result type (might be due to invalid IL or missing references)
				//IL_002d: Unknown result type (might be due to invalid IL or missing references)
				//IL_003a: Unknown result type (might be due to invalid IL or missing references)
				((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Helpers.TpEffect(corpse: true));
				Transform transform = corpse.transform;
				Vector3 position = corpse.transform.position;
				position.x = 500000f;
				transform.position = position;
			}
		}

		[CompilerGenerated]
		private sealed class <AnticParry>d__36 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private string <currentState>5__1;

			private PlayMakerFSM <>s__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <AnticParry>d__36(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<currentState>5__1 = null;
				<>s__2 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<currentState>5__1 = PaleAutomatonPlugin.controlFsm.ActiveStateName;
					if (parriedState.Equals(<currentState>5__1))
					{
						return false;
					}
					PaleAutomatonPlugin.controlFsm.SetState("Parry Dir");
					<>2__current = _waitForSeconds0_15;
					<>1__state = 1;
					return true;
				case 1:
				{
					<>1__state = -1;
					parriedState = <currentState>5__1;
					<>s__2 = PaleAutomatonPlugin.controlFsm;
					if (1 == 0)
					{
					}
					string state = ((!(<currentState>5__1 == "Dive Antic")) ? <currentState>5__1 : "Dive Dir");
					if (1 == 0)
					{
					}
					<>s__2.SetState(state);
					<>s__2 = null;
					return false;
				}
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <CrossSlashSpam>d__50 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private float <anticTime>5__1;

			private int <direction>5__2;

			private Vector3 <hcPos>5__3;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <CrossSlashSpam>d__50(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_012c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0136: Expected O, but got Unknown
				//IL_0151: Unknown result type (might be due to invalid IL or missing references)
				//IL_0156: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_01fa: Unknown result type (might be due to invalid IL or missing references)
				//IL_0296: Unknown result type (might be due to invalid IL or missing references)
				//IL_02a0: Expected O, but got Unknown
				//IL_02bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_02c0: Unknown result type (might be due to invalid IL or missing references)
				//IL_035f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0364: Unknown result type (might be due to invalid IL or missing references)
				//IL_03ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0409: Expected O, but got Unknown
				//IL_0424: Unknown result type (might be due to invalid IL or missing references)
				//IL_0429: Unknown result type (might be due to invalid IL or missing references)
				//IL_04c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_04ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<anticTime>5__1 = 0.8f;
					FsmUtil.GetFirstActionOfType<Wait>(PaleAutomatonPlugin.controlFsm, "CS Antic").time = FsmFloat.op_Implicit(<anticTime>5__1);
					<direction>5__2 = ((!(Random.value > 0.5f)) ? 1 : (-1));
					<hcPos>5__3 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__3.x + (float)(3 * <direction>5__2), <hcPos>5__3.y - 2f, "CS Antic", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(<anticTime>5__1 + 0.2f);
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					<hcPos>5__3 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Teleport(<hcPos>5__3.x, <hcPos>5__3.y + 500f, "First Idle"));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__3.x, <hcPos>5__3.y, 0f, 0.3f, randomizePosition: true, 1f, csStarter: true, iframes: true));
					<>2__current = _waitForSeconds0_6;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					<hcPos>5__3 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__3.x, <hcPos>5__3.y, 0f, 0.3f, randomizePosition: true, 1f, csStarter: true, iframes: true));
					<>2__current = Teleport(<hcPos>5__3.x + (float)(3 * -<direction>5__2), <hcPos>5__3.y - 2f, "CS Antic", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(<anticTime>5__1 + 0.2f);
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					<hcPos>5__3 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Teleport(<hcPos>5__3.x, <hcPos>5__3.y + 500f, "First Idle"));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__3.x, <hcPos>5__3.y, 0f, 0.3f, randomizePosition: true, 1f, csStarter: true, iframes: true));
					<>2__current = _waitForSeconds0_6;
					<>1__state = 6;
					return true;
				case 6:
					<>1__state = -1;
					<hcPos>5__3 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__3.x, <hcPos>5__3.y, 0f, 0.3f, randomizePosition: true, 1f, csStarter: true, iframes: true));
					<>2__current = Teleport(<hcPos>5__3.x + (float)(3 * <direction>5__2), <hcPos>5__3.y - 2f, "CS Antic", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 7;
					return true;
				case 7:
					<>1__state = -1;
					<>2__current = (object)new WaitForSeconds(<anticTime>5__1 + 0.2f);
					<>1__state = 8;
					return true;
				case 8:
					<>1__state = -1;
					<hcPos>5__3 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Teleport(<hcPos>5__3.x, <hcPos>5__3.y + 500f, "First Idle"));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__3.x, <hcPos>5__3.y, 0f, 0.3f, randomizePosition: true, 1f, csStarter: true, iframes: true));
					<>2__current = _waitForSeconds0_6;
					<>1__state = 9;
					return true;
				case 9:
					<>1__state = -1;
					<hcPos>5__3 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__3.x, <hcPos>5__3.y, 0f, 0.3f, randomizePosition: true, 1f, csStarter: true, iframes: true));
					<>2__current = _waitForSeconds0_6;
					<>1__state = 10;
					return true;
				case 10:
					<>1__state = -1;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <CrossSlashStarter>d__45 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <CrossSlashStarter>d__45(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0061: 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_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: 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_00fb: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					PaleAutomatonPlugin.customComboSequence = true;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(PaleAutomatonPlugin.songKnight.transform.localScale.x * -9f + PaleAutomatonPlugin.songKnight.transform.position.x, PaleAutomatonPlugin.songKnight.transform.position.y - 2f, 0.05f, 0.15f, randomizePosition: false, 0.7f, csStarter: true));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(PaleAutomatonPlugin.songKnight.transform.localScale.x * -15f + PaleAutomatonPlugin.songKnight.transform.position.x, PaleAutomatonPlugin.songKnight.transform.position.y - 3f, 0.1f, 0.3f, randomizePosition: false, 0.4f, csStarter: true));
					<>2__current = _waitForSeconds0_1;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Windslash A");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds0_175;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Dive Dir");
					<>2__current = _waitForSeconds0_05;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds0_4;
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					PaleAutomatonPlugin.customComboSequence = false;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <DeathSequence>d__35 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private <>c__DisplayClass35_0 <>8__1;

			private PlayMakerFSM <corpseFsm>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DeathSequence>d__35(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>8__1 = null;
				<corpseFsm>5__2 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_006b: 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_007d: 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_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_0097: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00be: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c5: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d8: Expected O, but got Unknown
				//IL_0108: Unknown result type (might be due to invalid IL or missing references)
				//IL_010d: Unknown result type (might be due to invalid IL or missing references)
				//IL_011a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0222: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<>8__1 = new <>c__DisplayClass35_0();
					<>2__current = _waitForSeconds0_7;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					PaleAutomatonPlugin.songKnight = null;
					GameManager.instance.BeginSceneTransition(new SceneLoadInfo
					{
						IsFirstLevelForPlayer = false,
						SceneName = "Hang_17b",
						SceneResourceLocation = null,
						AsyncPriority = 0,
						HeroLeaveDirection = null,
						EntryGateName = null,
						EntryDelay = 0f,
						EntrySkip = false,
						PreventCameraFadeOut = false,
						WaitForSceneTransitionCameraFade = false,
						Visualization = (SceneLoadVisualizations)0,
						AlwaysUnloadUnusedAssets = false,
						ForceWaitFetch = false,
						TransitionID = 0
					});
					<>2__current = _waitForSeconds0_4;
					<>1__state = 2;
					return true;
				case 2:
				{
					<>1__state = -1;
					Transform transform = PaleAutomatonPlugin.songKnight.transform;
					Vector3 position = PaleAutomatonPlugin.songKnight.transform.position;
					position.x = 500000f;
					transform.position = position;
					<>8__1.corpse = ((Component)PaleAutomatonPlugin.songKnight.transform.Find("Corpse Song Knight(Clone)")).gameObject;
					<>8__1.corpse.SetActive(true);
					<corpseFsm>5__2 = <>8__1.corpse.GetComponent<PlayMakerFSM>();
					<corpseFsm>5__2.SetState("Land");
					FsmUtil.GetFirstActionOfType<Tk2dPlayAnimationWithEvents>(<corpseFsm>5__2, "Leave Antic").clipName = FsmString.op_Implicit("Bow");
					FsmUtil.RemoveActionsOfType<AudioPlayRandomVoiceFromTableV2>(FsmUtil.GetState(<corpseFsm>5__2, "Leave Antic"));
					FsmUtil.AddMethod(FsmUtil.GetState(<corpseFsm>5__2, "Leave Antic"), (Action)delegate
					{
						Extensions.FlipLocalScale(<>8__1.corpse.transform, true, false, false);
					}, false);
					FsmUtil.AddMethod(FsmUtil.GetState(<corpseFsm>5__2, "Leave Jump"), (Action)delegate
					{
						//IL_0028: Unknown result type (might be due to invalid IL or missing references)
						//IL_002d: Unknown result type (might be due to invalid IL or missing references)
						//IL_003a: Unknown result type (might be due to invalid IL or missing references)
						((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Helpers.TpEffect(corpse: true));
						Transform transform2 = <>8__1.corpse.transform;
						Vector3 position2 = <>8__1.corpse.transform.position;
						position2.x = 500000f;
						transform2.position = position2;
					}, false);
					<>8__1.corpse.transform.position = new Vector3(50.0426f, 27.0411f, 0.0097f);
					return false;
				}
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <DiveIntoCrossSlash>d__48 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private int <direction>5__1;

			private Vector3 <hcPos>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DiveIntoCrossSlash>d__48(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0143: Unknown result type (might be due to invalid IL or missing references)
				//IL_0148: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ce: Unknown result type (might be due to invalid IL or missing references)
				//IL_0300: Unknown result type (might be due to invalid IL or missing references)
				//IL_0305: Unknown result type (might be due to invalid IL or missing references)
				//IL_0386: Unknown result type (might be due to invalid IL or missing references)
				//IL_038b: Unknown result type (might be due to invalid IL or missing references)
				//IL_040d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0412: Unknown result type (might be due to invalid IL or missing references)
				//IL_0546: Unknown result type (might be due to invalid IL or missing references)
				//IL_054b: Unknown result type (might be due to invalid IL or missing references)
				//IL_00be: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c3: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<direction>5__1 = ((!(Random.value > 0.5f)) ? 1 : (-1));
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x + 8.5f * (float)<direction>5__1, <hcPos>5__2.y + 5f, "Dive Dir");
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_7;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x + 8.5f * (float)(-<direction>5__1), <hcPos>5__2.y + 5f, "Dive Dir", 0f, 0.2f);
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_2;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					<hcPos>5__2 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__2.x, <hcPos>5__2.y, 0f, 0.4f));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__2.x - 7f, <hcPos>5__2.y + 7f, 0.05f, 0.45f, randomizePosition: true));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__2.x + 7f, <hcPos>5__2.y - 7f, 0.1f, 0.5f, randomizePosition: true));
					<>2__current = Teleport(<hcPos>5__2.x, <hcPos>5__2.y + 500f, "First Idle", 0f, 0f);
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_8;
					<>1__state = 6;
					return true;
				case 6:
					<>1__state = -1;
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x + 8.5f * (float)(-<direction>5__1), <hcPos>5__2.y + 5f, "Dive Dir", 0.2f, 0.2f);
					<>1__state = 7;
					return true;
				case 7:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_2;
					<>1__state = 8;
					return true;
				case 8:
					<>1__state = -1;
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x + 8.5f * (float)<direction>5__1, <hcPos>5__2.y + 5f, "Dive Dir", 0f, 0.2f);
					<>1__state = 9;
					return true;
				case 9:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_2;
					<>1__state = 10;
					return true;
				case 10:
					<>1__state = -1;
					<hcPos>5__2 = HeroController.instance.transform.position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__2.x, <hcPos>5__2.y, 0f, 0.4f));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__2.x + 7f, <hcPos>5__2.y + 7f, 0.05f, 0.45f, randomizePosition: true));
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SpawnCrossSlash(<hcPos>5__2.x - 7f, <hcPos>5__2.y - 7f, 0.1f, 0.5f, randomizePosition: true));
					<>2__current = Teleport(<hcPos>5__2.x, <hcPos>5__2.y + 500f, "First Idle", 0f, 0f);
					<>1__state = 11;
					return true;
				case 11:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_8;
					<>1__state = 12;
					return true;
				case 12:
					<>1__state = -1;
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x + 8.5f * (float)(-<direction>5__1), <hcPos>5__2.y + 5f, "Dive Dir", 0.2f, 0.2f);
					<>1__state = 13;
					return true;
				case 13:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_2;
					<>1__state = 14;
					return true;
				case 14:
					<>1__state = -1;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <DiveStarter>d__44 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private bool <radpiSlash>5__1;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DiveStarter>d__44(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					PaleAutomatonPlugin.customComboSequence = true;
					<radpiSlash>5__1 = Random.value > 0.5f;
					if (<radpiSlash>5__1)
					{
						<>2__current = _waitForSeconds0_3;
						<>1__state = 1;
						return true;
					}
					<>2__current = _waitForSeconds0_2;
					<>1__state = 2;
					return true;
				case 1:
					<>1__state = -1;
					PaleAutomatonPlugin.rapidSlashFollowupAllowed = true;
					PaleAutomatonPlugin.controlFsm.SetState("Rapid Slash Dash");
					goto IL_01c2;
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Rising Slash Antic");
					<>2__current = _waitForSeconds0_15;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds0_4;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("CS Antic");
					<>2__current = _waitForSeconds0_1;
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 6;
					return true;
				case 6:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Windslash A");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 7;
					return true;
				case 7:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					goto IL_01c2;
				case 8:
					{
						<>1__state = -1;
						if (!<radpiSlash>5__1)
						{
							PaleAutomatonPlugin.customComboSequence = false;
						}
						return false;
					}
					IL_01c2:
					<>2__current = _waitForSeconds0_3;
					<>1__state = 8;
					return true;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <DoubleWindslashStarter>d__42 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DoubleWindslashStarter>d__42(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					PaleAutomatonPlugin.customComboSequence = true;
					<>2__current = _waitForSeconds0_2;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("WindSlash");
					<>2__current = _waitForSeconds0_2;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Dive Dir");
					<>2__current = _waitForSeconds0_6;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Windslash G");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					PaleAutomatonPlugin.customComboSequence = false;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <GroundSpikeAntic>d__33 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public GameObject silkSwish;

			public float delay;

			public bool flip;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <GroundSpikeAntic>d__33(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0034: Unknown result type (might be due to invalid IL or missing references)
				//IL_003e: Expected O, but got Unknown
				//IL_0080: Unknown result type (might be due to invalid IL or missing references)
				//IL_0085: Unknown result type (might be due to invalid IL or missing references)
				//IL_0093: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					silkSwish.SetActive(false);
					<>2__current = (object)new WaitForSeconds(delay);
					<>1__state = 1;
					return true;
				case 1:
				{
					<>1__state = -1;
					Object.Destroy((Object)(object)((Component)silkSwish.transform.GetChild(2)).gameObject);
					Transform transform = silkSwish.transform;
					Vector3 position = silkSwish.transform.position;
					position.x = silkSwish.transform.position.x + (float)Random.Range(-6, 6);
					transform.position = position;
					if (flip)
					{
						Extensions.FlipLocalScale(silkSwish.transform, true, false, false);
					}
					silkSwish.SetActive(true);
					return false;
				}
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <LieDown>d__34 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private KeepHornetInPlace <keepHornetInPlace>5__1;

			private HeroController <heroController>5__2;

			private HeroAnimationController <heroAnim>5__3;

			private float <clipLength1>5__4;

			private tk2dSpriteAnimationClip <clip1>5__5;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <LieDown>d__34(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<keepHornetInPlace>5__1 = null;
				<heroController>5__2 = null;
				<heroAnim>5__3 = null;
				<clip1>5__5 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<keepHornetInPlace>5__1 = ((Component)HeroController.instance).gameObject.AddComponent<KeepHornetInPlace>();
					<heroController>5__2 = HeroController.instance;
					<heroAnim>5__3 = ((Component)<heroController>5__2).GetComponent<HeroAnimationController>();
					<heroAnim>5__3.PlayClipForced("Prostrate");
					<>2__current = _waitForSeconds1;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<clipLength1>5__4 = <heroAnim>5__3.GetClipDuration("Wake Up Ground");
					<heroAnim>5__3.PlayClipForced("Wake Up Ground");
					<clip1>5__5 = <heroAnim>5__3.animator.CurrentClip;
					break;
				case 2:
					<>1__state = -1;
					<clipLength1>5__4 -= Time.deltaTime;
					break;
				}
				if (<heroAnim>5__3.animator.IsPlaying(<clip1>5__5) && <clipLength1>5__4 > 0f)
				{
					<>2__current = null;
					<>1__state = 2;
					return true;
				}
				((Behaviour)<keepHornetInPlace>5__1).enabled = false;
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <LiterallyBoundlessInfinity>d__47 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private int <direction>5__1;

			private Vector3 <hcPos>5__2;

			private int <yOffset>5__3;

			private float <xPos>5__4;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <LiterallyBoundlessInfinity>d__47(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_0069: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<direction>5__1 = ((!(Random.value > 0.5f)) ? 1 : (-1));
					<hcPos>5__2 = HeroController.instance.transform.position;
					<yOffset>5__3 = Random.Range(-3, 3);
					<xPos>5__4 = <hcPos>5__2.x + (float)(13 * <direction>5__1) - (float)(<yOffset>5__3 * <direction>5__1);
					<>2__current = Teleport(<xPos>5__4, <hcPos>5__2.y + (float)<yOffset>5__3, "DashStab Antic", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<>2__current = _waitForSeconds1_7;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("DashStab Antic");
					<>2__current = _waitForSeconds0_05;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds1_1;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <Phase2Transition>d__38 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Phase2Transition>d__38(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0064: Unknown result type (might be due to invalid IL or missing references)
				//IL_0065: Unknown result type (might be due to invalid IL or missing references)
				//IL_006a: Unknown result type (might be due to invalid IL or missing references)
				//IL_007a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0090: Expected O, but got Unknown
				//IL_0090: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c4: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dc: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e8: Expected O, but got Unknown
				//IL_017e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0183: Unknown result type (might be due to invalid IL or missing references)
				//IL_019d: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bd: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c9: Expected O, but got Unknown
				//IL_01d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01de: Unknown result type (might be due to invalid IL or missing references)
				//IL_01f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0208: Unknown result type (might be due to invalid IL or missing references)
				//IL_0218: Unknown result type (might be due to invalid IL or missing references)
				//IL_0224: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					Helpers.DisableChargingEffects();
					PaleAutomatonPlugin.controlFsm.SetState("Parry Antic");
					FsmUtil.AddAction(FsmUtil.GetState(PaleAutomatonPlugin.controlFsm, "Parry Stance"), (FsmStateAction)new StartRoarEmitter
					{
						spawnPoint = new FsmOwnerDefault
						{
							gameObject = FsmGameObject.op_Implicit(PaleAutomatonPlugin.songKnight),
							GameObject = FsmGameObject.op_Implicit(PaleAutomatonPlugin.songKnight)
						},
						delay = FsmFloat.op_Implicit(0f),
						stunHero = FsmBool.op_Implicit(false),
						roarBurst = FsmBool.op_Implicit(false),
						isSmall = FsmBool.op_Implicit(false),
						noVisualEffect = FsmBool.op_Implicit(false),
						forceThroughBind = FsmBool.op_Implicit(true),
						stopOnExit = true
					});
					<>2__current = _waitForSeconds0_5;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("BLOCKED HIT");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					HeroController.instance.StartInvulnerable(0.2f);
					<>2__current = _waitForSeconds1;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					FsmUtil.RemoveActionsOfType<StartRoarEmitter>(FsmUtil.GetState(PaleAutomatonPlugin.controlFsm, "Parry Stance"));
					FsmUtil.AddAction(FsmUtil.GetState(PaleAutomatonPlugin.controlFsm, "Rapid Slash End"), (FsmStateAction)new SetVelocityByScale
					{
						gameObject = FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rapid Slash Dash").gameObject,
						speed = FsmFloat.op_Implicit(90f),
						ySpeed = FsmFloat.op_Implicit(0f),
						everyFrame = false
					});
					FsmUtil.AddAction(FsmUtil.GetState(PaleAutomatonPlugin.controlFsm, "Dash Slash End 2"), (FsmStateAction)new SetVelocityByScale
					{
						gameObject = FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rapid Slash Dash").gameObject,
						speed = FsmFloat.op_Implicit(90f),
						ySpeed = FsmFloat.op_Implicit(0f),
						everyFrame = false
					});
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <Phase3Transition>d__39 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private GameObject <silkSwishOriginal>5__1;

			private Transform <otherTerrainCollider>5__2;

			private SpriteRenderer[] <>s__3;

			private int <>s__4;

			private SpriteRenderer <spriteRenderer>5__5;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Phase3Transition>d__39(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<silkSwishOriginal>5__1 = null;
				<otherTerrainCollider>5__2 = null;
				<>s__3 = null;
				<spriteRenderer>5__5 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_00d2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0481: Unknown result type (might be due to invalid IL or missing references)
				//IL_04f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0517: Unknown result type (might be due to invalid IL or missing references)
				//IL_05f0: Unknown result type (might be due to invalid IL or missing references)
				//IL_05f5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0602: Unknown result type (might be due to invalid IL or missing references)
				//IL_0639: Unknown result type (might be due to invalid IL or missing references)
				//IL_063e: Unknown result type (might be due to invalid IL or missing references)
				//IL_064b: Unknown result type (might be due to invalid IL or missing references)
				//IL_074a: Unknown result type (might be due to invalid IL or missing references)
				//IL_075f: Unknown result type (might be due to invalid IL or missing references)
				//IL_079f: Unknown result type (might be due to invalid IL or missing references)
				//IL_020e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0233: Unknown result type (might be due to invalid IL or missing references)
				//IL_06d7: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					Helpers.DisableChargingEffects();
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Teleport(100f, HeroController.instance.transform.position.y + 500f, "First Idle"));
					PaleAutomatonPlugin.controlFsm.Fsm.ManualUpdate = true;
					InfiniteTerrainMover.cameraLockArea.cameraYMax = 15f;
					((Behaviour)InfiniteTerrainMover.cameraLockArea).enabled = false;
					((Behaviour)InfiniteTerrainMover.cameraLockArea).enabled = true;
					((TrackTriggerObjects)InfiniteTerrainMover.cameraLockArea).OnInsideStateChanged(true);
					<>2__current = _waitForSeconds0_6;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<silkSwishOriginal>5__1 = ((Component)GameObject.Find("Boss Title(Clone)").transform.GetChild(0)).gameObject;
					<silkSwishOriginal>5__1.SetActive(false);
					<>s__3 = <silkSwishOriginal>5__1.GetComponentsInChildren<SpriteRenderer>();
					for (<>s__4 = 0; <>s__4 < <>s__3.Length; <>s__4++)
					{
						<spriteRenderer>5__5 = <>s__3[<>s__4];
						((Renderer)<spriteRenderer>5__5).sortingOrder = 500;
						<spriteRenderer>5__5 = null;
					}
					<>s__3 = null;
					<silkSwishOriginal>5__1.transform.position = new Vector3(1.2f, -5f, 1f);
					<silkSwishOriginal>5__1.transform.localScale = new Vector3(1.2f, 0.6114f, 0.8734f);
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0f));
					<>2__current = null;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.5f, flip: true));
					<>2__current = null;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.2f));
					<>2__current = null;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.25f, flip: true));
					<>2__current = null;
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.4f));
					<>2__current = null;
					<>1__state = 6;
					return true;
				case 6:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.45f, flip: true));
					<>2__current = null;
					<>1__state = 7;
					return true;
				case 7:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.6f));
					<>2__current = null;
					<>1__state = 8;
					return true;
				case 8:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.65f, flip: true));
					<>2__current = null;
					<>1__state = 9;
					return true;
				case 9:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.8f));
					<>2__current = null;
					<>1__state = 10;
					return true;
				case 10:
					<>1__state = -1;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(GroundSpikeAntic(Object.Instantiate<GameObject>(<silkSwishOriginal>5__1), 0.85f, flip: true));
					<>2__current = null;
					<>1__state = 11;
					return true;
				case 11:
					<>1__state = -1;
					<>2__current = Teleport(500f, HeroController.instance.transform.position.y + 100f, "First Idle");
					<>1__state = 12;
					return true;
				case 12:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_6;
					<>1__state = 13;
					return true;
				case 13:
					<>1__state = -1;
					<silkSwishOriginal>5__1.transform.position = new Vector3(-2f, -4f, 1f);
					<silkSwishOriginal>5__1.transform.localScale = new Vector3(5.1726f, 0.6114f, 0.8734f);
					<silkSwishOriginal>5__1.SetActive(true);
					<>2__current = _waitForSeconds0_4;
					<>1__state = 14;
					return true;
				case 14:
					<>1__state = -1;
					Object.Destroy((Object)(object)((Component)PaleAutomatonPlugin.songKnight.transform.Find("WindSlash Hit")).gameObject);
					PaleAutomatonPlugin.groundSpikesParent.SetActive(true);
					Helpers.clonedGroundSpikes.SetActive(true);
					groundSpikesCollider.SetActive(true);
					Helpers.clonedGroundSpikesCollider.SetActive(true);
					if (!Settings.DISABLE_CAMERA_ZOOMOUT)
					{
						((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(PaleAutomatonPlugin.FancyZoomOut(2f, 0.575f));
					}
					<>2__current = _waitForSeconds0_5;
					<>1__state = 15;
					return true;
				case 15:
				{
					<>1__state = -1;
					Transform transform = PaleAutomatonPlugin.terrainCollider.transform;
					Vector3 position = PaleAutomatonPlugin.terrainCollider.transform.position;
					position.y = -50f;
					transform.position = position;
					<otherTerrainCollider>5__2 = Helpers.clonedTerrainArt.transform.Find("Terrain Collider");
					Transform transform2 = ((Component)<otherTerrainCollider>5__2).transform;
					position = ((Component)<otherTerrainCollider>5__2).transform.position;
					position.y = -50f;
					transform2.position = position;
					<>2__current = _waitForSeconds0_5;
					<>1__state = 16;
					return true;
				}
				case 16:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.Fsm.ManualUpdate = true;
					InfiniteTerrainMover.cameraLockArea.cameraYMax = 100000f;
					((Behaviour)InfiniteTerrainMover.cameraLockArea).enabled = false;
					((Behaviour)InfiniteTerrainMover.cameraLockArea).enabled = true;
					((TrackTriggerObjects)InfiniteTerrainMover.cameraLockArea).OnInsideStateChanged(true);
					if (Settings.CUSTOM_POGO_HITBOX)
					{
						Helpers.ToggleDownSlashHitbox(useExpanded: true);
					}
					if (Settings.BELL_BIND_EFFECT_ON_THE_BOSS)
					{
						<>2__current = ((ManagedAssetBase<GameObject>)(object)PaleAutomatonPlugin.BELL_BIND_EFFECT).Load();
						<>1__state = 17;
						return true;
					}
					break;
				case 17:
					<>1__state = -1;
					bellBindEffect = ManagedAssetExtensions.InstantiateAsset<GameObject>(PaleAutomatonPlugin.BELL_BIND_EFFECT);
					bellBindEffect.transform.SetParent(PaleAutomatonPlugin.songKnight.transform);
					((Behaviour)bellBindEffect.GetComponent<FollowTransform>()).enabled = false;
					bellBindEffect.transform.localScale = new Vector3(1.7f, 1.7f, 1f);
					bellBindEffect.transform.localPosition = Vector3.zero;
					bellBindEffect.SetActive(true);
					break;
				}
				((Component)PaleAutomatonPlugin.songKnight.transform.Find("Rising Slash")).transform.localScale = new Vector3(1f, 1f, 1f);
				((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(SelectPhase3Attack());
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <Phase4Transition>d__40 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private Vector3 <hPos>5__1;

			private float <yPos>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Phase4Transition>d__40(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//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_0118: Unknown result type (might be due to invalid IL or missing references)
				//IL_011d: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0240: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					Helpers.DisableChargingEffects();
					inPhase4Transition = true;
					<hPos>5__1 = HeroController.instance.transform.position;
					<yPos>5__2 = Math.Clamp(<hPos>5__1.y - 8f, 20f, <hPos>5__1.y + 9999f);
					<>2__current = Teleport(<hPos>5__1.x, <yPos>5__2, "Windslash A");
					<>1__state = 1;
					return true;
				case 1:
				{
					<>1__state = -1;
					((Component)PaleAutomatonPlugin.songKnight.transform.Find("Charge Effect")).gameObject.SetActive(true);
					Transform transform = PaleAutomatonPlugin.songKnight.transform;
					Vector3 localScale = PaleAutomatonPlugin.songKnight.transform.localScale;
					localScale.x = 1f;
					transform.localScale = localScale;
					Extensions.SetRotation2D(PaleAutomatonPlugin.songKnight.transform, 90f);
					PaleAutomatonPlugin.controlFsm.Fsm.Stop();
					<>2__current = _waitForSeconds0_8;
					<>1__state = 2;
					return true;
				}
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.Fsm.Start();
					PaleAutomatonPlugin.controlFsm.SetState("WindSlash");
					((Component)PaleAutomatonPlugin.songKnight.transform.Find("Charge Effect")).gameObject.SetActive(false);
					<>2__current = _waitForSeconds0_1;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					PaleAutomatonPlugin.groundSpikesParent.SetActive(false);
					GameObject.Find("Main Terrain Art").SetActive(false);
					GameObject.Find("Cloned Terrain Art").SetActive(false);
					<>2__current = _waitForSeconds0_2;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					Extensions.SetRotation2D(PaleAutomatonPlugin.songKnight.transform, 0f);
					<>2__current = Teleport(<hPos>5__1.x, HeroController.instance.transform.position.y + 100f, "First Idle");
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					inPhase4Transition = false;
					<>2__current = _waitForSeconds0_5;
					<>1__state = 6;
					return true;
				case 6:
					<>1__state = -1;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <RapidSlashFollowup>d__43 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <RapidSlashFollowup>d__43(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("DashStab Antic");
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Helpers.ScheduleNextState(0.4f, "Stab 3"));
					<>2__current = _waitForSeconds0_3;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					PaleAutomatonPlugin.customComboSequence = false;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <RisingSlashStarter>d__41 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <RisingSlashStarter>d__41(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					PaleAutomatonPlugin.customComboSequence = true;
					<>2__current = _waitForSeconds0_55;
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("CrossSlash 1");
					<>2__current = _waitForSeconds0_1;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Rising Slash Antic");
					FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rising Slash").speed = FsmFloat.op_Implicit(-70f);
					<>2__current = _waitForSeconds0_01;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds0_4;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Windslash A");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					if (Random.value > 0.5f)
					{
						<>2__current = _waitForSeconds0_2;
						<>1__state = 6;
						return true;
					}
					<>2__current = _waitForSeconds0_175;
					<>1__state = 9;
					return true;
				case 6:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("WindSlash");
					<>2__current = _waitForSeconds0_2;
					<>1__state = 7;
					return true;
				case 7:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Dive Dir");
					<>2__current = _waitForSeconds0_2;
					<>1__state = 8;
					return true;
				case 8:
					<>1__state = -1;
					goto IL_02c6;
				case 9:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Dive Dir");
					<>2__current = _waitForSeconds0_05;
					<>1__state = 10;
					return true;
				case 10:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 11;
					return true;
				case 11:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Windslash G");
					<>2__current = _waitForSeconds0_3;
					<>1__state = 12;
					return true;
				case 12:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					goto IL_02c6;
				case 13:
					{
						<>1__state = -1;
						PaleAutomatonPlugin.customComboSequence = false;
						return false;
					}
					IL_02c6:
					FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rising Slash").speed = FsmFloat.op_Implicit(-80f);
					<>2__current = _waitForSeconds0_3;
					<>1__state = 13;
					return true;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <SelectPhase3Attack>d__46 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private int <attack>5__1;

			private Bounds <claBounds>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <SelectPhase3Attack>d__46(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0114: Unknown result type (might be due to invalid IL or missing references)
				//IL_0119: Unknown result type (might be due to invalid IL or missing references)
				//IL_0127: Unknown result type (might be due to invalid IL or missing references)
				//IL_013c: Unknown result type (might be due to invalid IL or missing references)
				//IL_014f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0154: Unknown result type (might be due to invalid IL or missing references)
				//IL_0165: Unknown result type (might be due to invalid IL or missing references)
				//IL_016a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0178: Unknown result type (might be due to invalid IL or missing references)
				//IL_018d: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a1: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b4: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01e0: Unknown result type (might be due to invalid IL or missing references)
				//IL_0204: Unknown result type (might be due to invalid IL or missing references)
				//IL_0228: Unknown result type (might be due to invalid IL or missing references)
				//IL_0263: Unknown result type (might be due to invalid IL or missing references)
				//IL_0268: Unknown result type (might be due to invalid IL or missing references)
				//IL_0276: Unknown result type (might be due to invalid IL or missing references)
				//IL_0285: Unknown result type (might be due to invalid IL or missing references)
				//IL_02c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_02db: Unknown result type (might be due to invalid IL or missing references)
				IEnumerator enumerator;
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					if (!PaleAutomatonPlugin.bossScene)
					{
						return false;
					}
					goto IL_03f3;
				case 1:
					<>1__state = -1;
					if (PaleAutomatonPlugin.healthManager.hp <= PaleAutomatonPlugin.PHASE_4_THRESHOLD && !PaleAutomatonPlugin.PHASE_4)
					{
						PaleAutomatonPlugin.PHASE_4 = true;
						<>2__current = Phase4Transition();
						<>1__state = 2;
						return true;
					}
					goto IL_00f3;
				case 2:
					<>1__state = -1;
					goto IL_00f3;
				case 3:
					<>1__state = -1;
					<>2__current = _waitForSeconds1;
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					Pools.DisableAll();
					return false;
				case 5:
					<>1__state = -1;
					goto IL_03f3;
				case 6:
					{
						<>1__state = -1;
						Pools.DisableAll();
						return false;
					}
					IL_00f3:
					if (PaleAutomatonPlugin.PHASE_4)
					{
						Transform transform = Helpers.fallKiller.transform;
						Vector3 position = Helpers.fallKiller.transform.position;
						position.x = HeroController.instance.transform.position.x - 250f;
						transform.position = position;
						<claBounds>5__2 = InfiniteTerrainMover.cameraLockArea.box2d.bounds;
						ref Bounds reference = ref <claBounds>5__2;
						position = ((Bounds)(ref <claBounds>5__2)).min;
						position.x = HeroController.instance.transform.position.x - 500f;
						((Bounds)(ref reference)).min = position;
						ref Bounds reference2 = ref <claBounds>5__2;
						position = ((Bounds)(ref <claBounds>5__2)).max;
						position.x = HeroController.instance.transform.position.x + 500f;
						((Bounds)(ref reference2)).max = position;
						InfiniteTerrainMover.cameraLockArea.cameraXMin = HeroController.instance.transform.position.x - 500f;
						InfiniteTerrainMover.cameraLockArea.cameraXMax = HeroController.instance.transform.position.x + 500f;
						InfiniteTerrainMover.cameraLockArea.cameraYMax = HeroController.instance.transform.position.y + 100000f;
						Helpers.UpdateSaveHeroClamps();
						((Behaviour)InfiniteTerrainMover.cameraLockArea).enabled = false;
						Transform transform2 = Helpers.cameraLockArea.transform;
						position = Helpers.cameraLockArea.transform.position;
						position.x = HeroController.instance.transform.position.x;
						transform2.position = position;
						((Behaviour)InfiniteTerrainMover.cameraLockArea).enabled = true;
						((TrackTriggerObjects)InfiniteTerrainMover.cameraLockArea).OnInsideStateChanged(true);
					}
					if (Extensions.GetFsmBoolIfExists(PaleAutomatonPlugin.controlFsm, "Hornet Dead"))
					{
						<>2__current = Teleport(HeroController.instance.transform.position.x, HeroController.instance.transform.position.y + 100f, "First Idle");
						<>1__state = 3;
						return true;
					}
					do
					{
						<attack>5__1 = Random.Range(1, 6);
					}
					while (attackMemory.Contains(<attack>5__1));
					attackMemory.RemoveAt(0);
					attackMemory.Add(<attack>5__1);
					if (1 == 0)
					{
					}
					enumerator = <attack>5__1 switch
					{
						1 => WindSlashSpam(), 
						2 => LiterallyBoundlessInfinity(), 
						3 => CrossSlashSpam(), 
						4 => DiveIntoCrossSlash(), 
						5 => TripleRisingSlash(), 
						_ => throw new ArgumentOutOfRangeException(), 
					};
					if (1 == 0)
					{
					}
					<>2__current = enumerator;
					<>1__state = 5;
					return true;
					IL_03f3:
					if (Object.op_Implicit((Object)(object)PaleAutomatonPlugin.songKnight))
					{
						PaleAutomatonPlugin.controlFsm.FsmVariables.GetFsmFloat("Gravity").Value = 0f;
						PaleAutomatonPlugin.controlFsm.SetState("First Idle");
						<>2__current = _waitForSeconds0_5;
						<>1__state = 1;
						return true;
					}
					<>2__current = _waitForSeconds1;
					<>1__state = 6;
					return true;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <SpawnCrossSlash>d__32 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public float x;

			public float y;

			public float startDelay;

			public float activationDelay;

			public bool randomizePosition;

			public float scaleMultiplier;

			public bool csStarter;

			public bool iframes;

			private float <xOffset>5__1;

			private float <yOffset>5__2;

			private int <rotation>5__3;

			private float <scaleModifier>5__4;

			private GameObject <antic>5__5;

			private GameObject <crossSlash>5__6;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <SpawnCrossSlash>d__32(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<antic>5__5 = null;
				<crossSlash>5__6 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0165: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ad: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_01ce: 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_021e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0228: Expected O, but got Unknown
				//IL_026a: Unknown result type (might be due to invalid IL or missing references)
				//IL_02d6: Unknown result type (might be due to invalid IL or missing references)
				//IL_02ed: Unknown result type (might be due to invalid IL or missing references)
				//IL_02f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e3: 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_0130: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<xOffset>5__1 = (randomizePosition ? ((float)Random.Range(-2, 2) + 1E-05f) : 0f);
					<yOffset>5__2 = (randomizePosition ? ((float)Random.Range(-2, 2) + 1E-05f) : 0f);
					if (csStarter & randomizePosition)
					{
						<xOffset>5__1 /= 2f;
						<yOffset>5__2 /= 2f;
					}
					<rotation>5__3 = 90 + (randomizePosition ? Random.Range(-10, 10) : 0) + ((csStarter && PaleAutomatonPlugin.songKnight.transform.localScale.x == 1f) ? 270 : 90);
					<scaleModifier>5__4 = Random.Range(2f, 2.3f) * scaleMultiplier;
					<>2__current = (object)new WaitForSeconds(startDelay);
					<>1__state = 1;
					return true;
				case 1:
				{
					<>1__state = -1;
					<antic>5__5 = Pools.GetCrossSlashAntic();
					<antic>5__5.transform.localScale = new Vector3(1f, 1f, 1f);
					<antic>5__5.SetActive(true);
					<antic>5__5.transform.position = new Vector3(x + <xOffset>5__1, y + <yOffset>5__2, <antic>5__5.transform.position.z);
					Transform transform2 = <antic>5__5.transform;
					transform2.localScale *= <scaleModifier>5__4;
					Extensions.SetRotation2D(<antic>5__5.transform, (float)<rotation>5__3);
					Extensions.FlipLocalScale(<antic>5__5.transform, false, true, false);
					<>2__current = (object)new WaitForSeconds(activationDelay - startDelay);
					<>1__state = 2;
					return true;
				}
				case 2:
				{
					<>1__state = -1;
					<antic>5__5.SetActive(false);
					<crossSlash>5__6 = Pools.GetCrossSlash();
					<crossSlash>5__6.transform.localScale = new Vector3(1f, 1f, 1f);
					try
					{
						FsmUtil.RemoveActionsOfType<RecycleSelf>(FsmUtil.GetState(<crossSlash>5__6.GetComponent<PlayMakerFSM>(), "Recycle"));
					}
					catch
					{
					}
					if (iframes)
					{
						HeroController.instance.StartInvulnerable(0.1f);
					}
					<crossSlash>5__6.SetActive(true);
					<crossSlash>5__6.transform.position = <antic>5__5.transform.position;
					Transform transform = <crossSlash>5__6.transform;
					transform.localScale *= <scaleModifier>5__4;
					Extensions.SetRotation2D(<crossSlash>5__6.transform, (float)(<rotation>5__3 - 20));
					<>2__current = _waitForSeconds0_3;
					<>1__state = 3;
					return true;
				}
				case 3:
					<>1__state = -1;
					<crossSlash>5__6.SetActive(false);
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <SpawnWindSlash>d__31 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private GameObject <instance>5__1;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <SpawnWindSlash>d__31(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<instance>5__1 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_00ea: Unknown result type (might be due to invalid IL or missing references)
				//IL_0049: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					if (!Object.op_Implicit((Object)(object)skProjectileSetup))
					{
						<>2__current = ((ManagedAssetBase<GameObject>)(object)SK_PROJECTILE_ASSET).Load();
						<>1__state = 1;
						return true;
					}
					goto IL_0106;
				case 1:
					<>1__state = -1;
					skProjectileSetup = ManagedAssetExtensions.InstantiateAsset<GameObject>(SK_PROJECTILE_ASSET);
					skProjectileSetup.GetComponent<Collider2D>().isTrigger = true;
					Helpers.MakeProjectileIgnoreEnvironment(skProjectileSetup);
					Helpers.RemoveProjectileWallEvents(skProjectileSetup);
					Helpers.MakeProjectileRenderAboveWalls(skProjectileSetup);
					skProjectileSetup.AddComponent<ProjectileMover>();
					skProjectileSetup.GetComponent<DamageHero>().SetDamageAmount(2);
					skProjectileSetup.SetActive(false);
					skProjectileSetup.transform.position = new Vector3(0f, -1000f, 0f);
					((Object)skProjectileSetup).name = "WindSlash";
					goto IL_0106;
				case 2:
					{
						<>1__state = -1;
						<instance>5__1.SetActive(false);
						<instance>5__1.GetComponent<PlayMakerFSM>().Reset();
						return false;
					}
					IL_0106:
					<instance>5__1 = Pools.GetWindSlash();
					<instance>5__1.SetActive(true);
					((Behaviour)<instance>5__1.GetComponent<DamageHero>()).enabled = !inPhase4Transition;
					<>2__current = (inPhase4Transition ? _waitForSeconds10 : _waitForSeconds1);
					<>1__state = 2;
					return true;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <Teleport>d__37 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public float x;

			public float y;

			public string nextState;

			public float delay;

			public float finishNextStateIn;

			public bool lookAtHornet;

			private Transform <transform>5__1;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <Teleport>d__37(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<transform>5__1 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0094: Unknown result type (might be due to invalid IL or missing references)
				//IL_0099: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bb: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
				//IL_00e3: Expected O, but got Unknown
				//IL_00ff: Unknown result type (might be due to invalid IL or missing references)
				//IL_0104: Unknown result type (might be due to invalid IL or missing references)
				//IL_0112: Unknown result type (might be due to invalid IL or missing references)
				//IL_0125: Unknown result type (might be due to invalid IL or missing references)
				//IL_012a: Unknown result type (might be due to invalid IL or missing references)
				//IL_0138: Unknown result type (might be due to invalid IL or missing references)
				//IL_019c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01c3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01cd: Expected O, but got Unknown
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
				{
					<>1__state = -1;
					teleporting = true;
					rb.linearVelocityY = 0f;
					rb.linearVelocityX = 0f;
					PaleAutomatonPlugin.controlFsm.Fsm.manualUpdate = true;
					<transform>5__1 = PaleAutomatonPlugin.songKnight.transform;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Helpers.TpEffect());
					Transform obj3 = <transform>5__1;
					Vector3 position = <transform>5__1.position;
					position.y = HeroController.instance.transform.position.y + 100f;
					obj3.position = position;
					PaleAutomatonPlugin.controlFsm.SetState("First Idle");
					<>2__current = (object)new WaitForSeconds(delay);
					<>1__state = 1;
					return true;
				}
				case 1:
				{
					<>1__state = -1;
					Transform obj = <transform>5__1;
					Vector3 position = <transform>5__1.position;
					position.x = x;
					obj.position = position;
					Transform obj2 = <transform>5__1;
					position = <transform>5__1.position;
					position.y = y;
					obj2.position = position;
					((MonoBehaviour)PaleAutomatonPlugin.Instance).StartCoroutine(Helpers.TpEffect());
					PaleAutomatonPlugin.controlFsm.Fsm.manualUpdate = false;
					PaleAutomatonPlugin.controlFsm.SetState(nextState);
					if (lookAtHornet)
					{
						Helpers.LookAtHornet();
					}
					else
					{
						PaleAutomatonPlugin.songKnight.transform.rotation = Quaternion.Euler(0f, 0f, 0f);
					}
					if (finishNextStateIn != -1f)
					{
						<>2__current = (object)new WaitForSeconds(finishNextStateIn);
						<>1__state = 2;
						return true;
					}
					break;
				}
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					break;
				}
				Helpers.DisableChargingEffects();
				teleporting = false;
				return false;
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <TripleRisingSlash>d__51 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private int <direction>5__1;

			private Vector3 <hcPos>5__2;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <TripleRisingSlash>d__51(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0173: Unknown result type (might be due to invalid IL or missing references)
				//IL_0178: Unknown result type (might be due to invalid IL or missing references)
				//IL_025c: Unknown result type (might be due to invalid IL or missing references)
				//IL_0261: Unknown result type (might be due to invalid IL or missing references)
				//IL_00c7: Unknown result type (might be due to invalid IL or missing references)
				//IL_00cc: Unknown result type (might be due to invalid IL or missing references)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					thirdRisingSlash = false;
					FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rising Slash").ySpeed = FsmFloat.op_Implicit(40f);
					<direction>5__1 = ((!(Random.value > 0.5f)) ? 1 : (-1));
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x + (float)(4 * <direction>5__1), <hcPos>5__2.y - 6f, "Rising Slash Antic", 0.2f, 0.5f);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_5;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("CrossSlash 1");
					<>2__current = _waitForSeconds0_1;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x + (float)(4 * -<direction>5__1), <hcPos>5__2.y - 6f, "Rising Slash Antic", 0.2f, 0.1f);
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_5;
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("CrossSlash 1");
					<>2__current = _waitForSeconds0_1;
					<>1__state = 6;
					return true;
				case 6:
					<>1__state = -1;
					FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rising Slash").speed = FsmFloat.op_Implicit(0f);
					FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rising Slash").ySpeed = FsmFloat.op_Implicit(90f);
					<hcPos>5__2 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__2.x, <hcPos>5__2.y - 6f, "Rising Slash Antic", 0.2f, 0.1f);
					<>1__state = 7;
					return true;
				case 7:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_2;
					<>1__state = 8;
					return true;
				case 8:
					<>1__state = -1;
					thirdRisingSlash = true;
					<>2__current = _waitForSeconds0_3;
					<>1__state = 9;
					return true;
				case 9:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("Windslash A");
					<>2__current = _waitForSeconds0_2;
					<>1__state = 10;
					return true;
				case 10:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SendEvent("FINISHED");
					FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rising Slash").speed = FsmFloat.op_Implicit(-80f);
					FsmUtil.GetFirstActionOfType<SetVelocityByScale>(PaleAutomatonPlugin.controlFsm, "Rising Slash").ySpeed = FsmFloat.op_Implicit(15f);
					<>2__current = _waitForSeconds0_2;
					<>1__state = 11;
					return true;
				case 11:
					<>1__state = -1;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		[CompilerGenerated]
		private sealed class <WindSlashSpam>d__49 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			private int <direction>5__1;

			private float <xOffset>5__2;

			private float <yOffset>5__3;

			private Vector3 <hcPos>5__4;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <WindSlashSpam>d__49(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[DebuggerHidden]
			void IDisposable.Dispose()
			{
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_01b2: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b7: Unknown result type (might be due to invalid IL or missing references)
				//IL_0263: Unknown result type (might be due to invalid IL or missing references)
				//IL_0268: Unknown result type (might be due to invalid IL or missing references)
				//IL_0315: Unknown result type (might be due to invalid IL or missing references)
				//IL_031a: Unknown result type (might be due to invalid IL or missing references)
				//IL_00d5: 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)
				switch (<>1__state)
				{
				default:
					return false;
				case 0:
					<>1__state = -1;
					<direction>5__1 = ((!(Random.value > 0.5f)) ? 1 : (-1));
					<xOffset>5__2 = Random.Range(10f, 13f) * (float)<direction>5__1;
					<yOffset>5__3 = Random.Range(-4f, 1f);
					<hcPos>5__4 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__4.x + <xOffset>5__2, <hcPos>5__4.y + <yOffset>5__3, "Windslash A", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 1;
					return true;
				case 1:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_6;
					<>1__state = 2;
					return true;
				case 2:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("WindSlash");
					<>2__current = _waitForSeconds0_2;
					<>1__state = 3;
					return true;
				case 3:
					<>1__state = -1;
					<xOffset>5__2 = Random.Range(10f, 13f) * (float)(-<direction>5__1);
					<yOffset>5__3 = Random.Range(-4f, 1f);
					<hcPos>5__4 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__4.x + <xOffset>5__2, <hcPos>5__4.y + <yOffset>5__3, "Windslash A", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 4;
					return true;
				case 4:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_6;
					<>1__state = 5;
					return true;
				case 5:
					<>1__state = -1;
					<xOffset>5__2 = Random.Range(10f, 13f) * (float)<direction>5__1;
					<yOffset>5__3 = Random.Range(-4f, 1f);
					<hcPos>5__4 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__4.x + <xOffset>5__2, <hcPos>5__4.y + <yOffset>5__3, "Windslash A", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 6;
					return true;
				case 6:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_6;
					<>1__state = 7;
					return true;
				case 7:
					<>1__state = -1;
					<xOffset>5__2 = Random.Range(10f, 13f) * (float)(-<direction>5__1);
					<yOffset>5__3 = Random.Range(-4f, 1f);
					<hcPos>5__4 = HeroController.instance.transform.position;
					<>2__current = Teleport(<hcPos>5__4.x + <xOffset>5__2, <hcPos>5__4.y + <yOffset>5__3, "Windslash A", 0.2f, -1f, lookAtHornet: true);
					<>1__state = 8;
					return true;
				case 8:
					<>1__state = -1;
					<>2__current = _waitForSeconds0_6;
					<>1__state = 9;
					return true;
				case 9:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("WindSlash");
					<>2__current = _waitForSeconds0_2;
					<>1__state = 10;
					return true;
				case 10:
					<>1__state = -1;
					PaleAutomatonPlugin.controlFsm.SetState("WindSlash");
					<>2__current = _waitForSeconds0_2;
					<>1__state = 11;
					return true;
				case 11:
					<>1__state = -1;
					return false;
				}
			}

			bool IEnumerator.MoveNext()
			{
				//ILSpy generated this explicit interface implementation from .override directive in MoveNext
				return this.MoveNext();
			}

			[DebuggerHidden]
			void IEnumerator.Reset()
			{
				throw new NotSupportedException();
			}
		}

		private static readonly WaitForSeconds _waitForSeconds1_1 = new WaitForSeconds(1.1f);

		private static readonly WaitForSeconds _waitForSeconds1_7 = new WaitForSeconds(1.7f);

		private static readonly WaitForSeconds _waitForSeconds0_05 = new WaitForSeconds(0.05f);

		private static readonly WaitForSeconds _waitForSeconds0_175 = new WaitForSeconds(0.175f);

		private static readonly WaitForSeconds _waitForSeconds0_01 = new WaitForSeconds(0.01f);

		private static readonly WaitForSeconds _waitForSeconds0_55 = new WaitForSeconds(0.55f);

		private static readonly WaitForSeconds _waitForSeconds0_2 = new WaitForSeconds(0.2f);

		private static readonly WaitForSeconds _waitForSeconds0_1 = new WaitForSeconds(0.1f);

		private static readonly WaitForSeconds _waitForSeconds0_8 = new WaitForSeconds(0.8f);

		private static readonly WaitForSeconds _waitForSeconds0_6 = new WaitForSeconds(0.6f);

		private static readonly WaitForSeconds _waitForSeconds0_5 = new WaitForSeconds(0.5f);

		private static readonly WaitForSeconds _waitForSeconds0_15 = new WaitForSeconds(0.15f);

		private static readonly WaitForSeconds _waitForSeconds0_4 = new WaitForSeconds(0.4f);

		private static readonly WaitForSeconds _waitForSeconds0_7 = new WaitForSeconds(0.7f);

		private static readonly WaitForSeconds _waitForSeconds1 = new WaitForSeconds(1f);

		private static readonly WaitForSeconds _waitForSeconds0_3 = new WaitForSeconds(0.3f);

		private static readonly WaitForSeconds _waitForSeconds10 = new WaitForSeconds(10f);

		public static ManagedAsset<GameObject> SK_PROJECTILE_ASSET = null;

		public static GameObject skProjectileSetup = null;

		public static GameObject tpEffectSetup = null;

		public static GameObject crossSlashSetup = null;

		public static GameObject crossSlashAnticSetup = null;

		public static GameObject groundSpikesCollider = null;

		public static GameObject bellBindEffect = null;

		public static Rigidbody2D rb = null;

		public static bool teleporting;

		public static bool csSpam;

		public static bool thirdRisingSlash;

		public static bool inPhase4Transition;

		private static readonly List<int> attackMemory = new List<int>(3) { 3, 4, 5 };

		private static string parriedState = "";

		[IteratorStateMachine(typeof(<SpawnWindSlash>d__31))]
		public static IEnumerator SpawnWindSlash()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <SpawnWindSlash>d__31(0);
		}

		[IteratorStateMachine(typeof(<SpawnCrossSlash>d__32))]
		private static IEnumerator SpawnCrossSlash(float x, float y, float startDelay, float activationDelay, bool randomizePosition = false, float scaleMultiplier = 1f, bool csStarter = false, bool iframes = false)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <SpawnCrossSlash>d__32(0)
			{
				x = x,
				y = y,
				startDelay = startDelay,
				activationDelay = activationDelay,
				randomizePosition = randomizePosition,
				scaleMultiplier = scaleMultiplier,
				csStarter = csStarter,
				iframes = iframes
			};
		}

		[IteratorStateMachine(typeof(<GroundSpikeAntic>d__33))]
		private static IEnumerator GroundSpikeAntic(GameObject silkSwish, float delay, bool flip = false)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <GroundSpikeAntic>d__33(0)
			{
				silkSwish = silkSwish,
				delay = delay,
				flip = flip
			};
		}

		[IteratorStateMachine(typeof(<LieDown>d__34))]
		public static IEnumerator LieDown()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <LieDown>d__34(0);
		}

		[IteratorStateMachine(typeof(<DeathSequence>d__35))]
		public static IEnumerator DeathSequence()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DeathSequence>d__35(0);
		}

		[IteratorStateMachine(typeof(<AnticParry>d__36))]
		public static IEnumerator AnticParry()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <AnticParry>d__36(0);
		}

		[IteratorStateMachine(typeof(<Teleport>d__37))]
		public static IEnumerator Teleport(float x, float y, string nextState, float delay = 0.2f, float finishNextStateIn = -1f, bool lookAtHornet = false)
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Teleport>d__37(0)
			{
				x = x,
				y = y,
				nextState = nextState,
				delay = delay,
				finishNextStateIn = finishNextStateIn,
				lookAtHornet = lookAtHornet
			};
		}

		[IteratorStateMachine(typeof(<Phase2Transition>d__38))]
		public static IEnumerator Phase2Transition()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Phase2Transition>d__38(0);
		}

		[IteratorStateMachine(typeof(<Phase3Transition>d__39))]
		public static IEnumerator Phase3Transition()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Phase3Transition>d__39(0);
		}

		[IteratorStateMachine(typeof(<Phase4Transition>d__40))]
		private static IEnumerator Phase4Transition()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <Phase4Transition>d__40(0);
		}

		[IteratorStateMachine(typeof(<RisingSlashStarter>d__41))]
		public static IEnumerator RisingSlashStarter()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <RisingSlashStarter>d__41(0);
		}

		[IteratorStateMachine(typeof(<DoubleWindslashStarter>d__42))]
		public static IEnumerator DoubleWindslashStarter()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DoubleWindslashStarter>d__42(0);
		}

		[IteratorStateMachine(typeof(<RapidSlashFollowup>d__43))]
		public static IEnumerator RapidSlashFollowup()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <RapidSlashFollowup>d__43(0);
		}

		[IteratorStateMachine(typeof(<DiveStarter>d__44))]
		public static IEnumerator DiveStarter()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DiveStarter>d__44(0);
		}

		[IteratorStateMachine(typeof(<CrossSlashStarter>d__45))]
		public static IEnumerator CrossSlashStarter()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <CrossSlashStarter>d__45(0);
		}

		[IteratorStateMachine(typeof(<SelectPhase3Attack>d__46))]
		private static IEnumerator SelectPhase3Attack()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <SelectPhase3Attack>d__46(0);
		}

		[IteratorStateMachine(typeof(<LiterallyBoundlessInfinity>d__47))]
		private static IEnumerator LiterallyBoundlessInfinity()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <LiterallyBoundlessInfinity>d__47(0);
		}

		[IteratorStateMachine(typeof(<DiveIntoCrossSlash>d__48))]
		private static IEnumerator DiveIntoCrossSlash()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <DiveIntoCrossSlash>d__48(0);
		}

		[IteratorStateMachine(typeof(<WindSlashSpam>d__49))]
		private static IEnumerator WindSlashSpam()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <WindSlashSpam>d__49(0);
		}

		[IteratorStateMachine(typeof(<CrossSlashSpam>d__50))]
		private static IEnumerator CrossSlashSpam()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <CrossSlashSpam>d__50(0);
		}

		[IteratorStateMachine(typeof(<TripleRisingSlash>d__51))]
		private static IEnumerator TripleRisingSlash()
		{
			//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
			return new <TripleRisingSlash>d__51(0);
		}
	}
	public static class Helpers
	{
		[CompilerGenerated]
		private sealed class <DelayedTurnAround>d__6 : IEnumerator<object>, IEnumerator, IDisposable
		{
			private int <>1__state;

			private object <>2__current;

			public float delay;

			object IEnumerator<object>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			object IEnumerator.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

			[DebuggerHidden]
			public <DelayedTurnAround>d__6(int <>1__state)
			{
				this.<>1__state = <>1__state;
			}

			[Debugg