internal unsafe static Assembly PrepareIterator(object def, ResolveEventArgs cfg)
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            //IL_02e0: Incompatible stack heights: 0 vs 2
            //IL_02ea: Incompatible stack heights: 0 vs 1
            //IL_02fe: Incompatible stack heights: 0 vs 1
            //IL_030e: Incompatible stack heights: 0 vs 1
            //IL_0314: Incompatible stack heights: 0 vs 1
            //IL_031e: Incompatible stack heights: 0 vs 1
            void *      ptr         = stackalloc byte[16];
            ClassReader classReader = default(ClassReader);

            _ = ref classReader;
            _ = ((ResolveEventArgs) /*Error near IL_02ea: Stack underflow*/).Name;
            *(ClassReader *)/*Error near IL_02f4: Stack underflow*/ = new ClassReader((string) /*Error near IL_02f4: Stack underflow*/);
            string text2;
            bool   flag;
            bool   flag2;

            while (true)
            {
                classReader.ReadIterator(isparam: false);
                string text = (string) /*Error near IL_0304: Stack underflow*/;
                _ = Encoding.UTF8;
                ((Encoding) /*Error near IL_031e: Stack underflow*/).GetBytes((string) /*Error near IL_031e: Stack underflow*/);
                string   b     = Convert.ToBase64String((byte[]) /*Error near IL_0040: Stack underflow*/);
                string[] array = "e2RiYTA4ZDg4LTkyM2YtNGQ1NS1iY2U4LTNmYWIyNzQwZThjN30sIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49M2U1NjM1MDY5M2Y3MzU1ZQ==,[z]{f0ac8481-2a23-4c93-9d4b-c36e2fae6ec0},e2RiYTA4ZDg4LTkyM2YtNGQ1NS1iY2U4LTNmYWIyNzQwZThjN30=,[z]{f0ac8481-2a23-4c93-9d4b-c36e2fae6ec0}".Split(',');
                text2       = string.Empty;
                flag        = false;
                flag2       = false;
                *(int *)ptr = 0;
                while (*(int *)ptr < array.Length - 1)
                {
                    if (array[*(int *)ptr] == b)
                    {
                        text2 = array[*(int *)ptr + 1];
                        break;
                    }
                    *(int *)ptr += 2;
                }
                if (text2.Length != 0 || classReader._MethodReader.Length != 0)
                {
                    break;
                }
                b = Convert.ToBase64String(Encoding.UTF8.GetBytes(classReader.m_RequestReader));
                *(int *)((byte *)ptr + 4) = 0;
                while (*(int *)((byte *)ptr + 4) < array.Length - 1)
                {
                    if (!(array[*(int *)((byte *)ptr + 4)] == b))
                    {
                        *(int *)((byte *)ptr + 4) += 2;
                        continue;
                    }
                    goto IL_00ed;
                }
                break;
IL_00ed:
                if (0 == 0)
                {
                    text2 = array[*(int *)((byte *)ptr + 4) + 1];
                    break;
                }
            }
            if (text2.Length > 0)
            {
                if (text2[0] == '[')
                {
                    *(int *)((byte *)ptr + 8) = text2.IndexOf(']');
                    string text3 = text2.Substring(1, *(int *)((byte *)ptr + 8) - 1);
                    flag  = (text3.IndexOf('z') >= 0);
                    flag2 = (text3.IndexOf('t') >= 0);
                    text2 = text2.Substring(*(int *)((byte *)ptr + 8) + 1);
                }
                lock (m_BroadcasterReader)
                {
                    if (m_BroadcasterReader.ContainsKey(text2))
                    {
                        return(m_BroadcasterReader[text2]);
                    }
                    Stream manifestResourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(text2);
                    if (manifestResourceStream != null)
                    {
                        *(int *)((byte *)ptr + 12) = (int)manifestResourceStream.Length;
                        byte[] array2 = new byte[*(int *)((byte *)ptr + 12)];
                        manifestResourceStream.Read(array2, 0, *(int *)((byte *)ptr + 12));
                        if (flag)
                        {
                            array2 = PolicyReader.ComputeIterator(array2);
                        }
                        Assembly assembly = null;
                        if (!flag2)
                        {
                            try
                            {
                                assembly = Assembly.Load(array2);
                            }
                            catch (FileLoadException)
                            {
                                flag2 = true;
                            }
                            catch (BadImageFormatException)
                            {
                                flag2 = true;
                            }
                        }
                        if (flag2)
                        {
                            try
                            {
                                string text4 = $"{Path.GetTempPath()}{text2}\\";
                                Directory.CreateDirectory(text4);
                                string text5 = text4 + classReader.m_RequestReader + ".dll";
                                if (!File.Exists(text5))
                                {
                                    FileStream fileStream = File.OpenWrite(text5);
                                    fileStream.Write(array2, 0, array2.Length);
                                    fileStream.Close();
                                    IncludeIterator(text5, null, 4);
                                    IncludeIterator(text4, null, 4);
                                }
                                assembly = Assembly.LoadFile(text5);
                            }
                            catch
                            {
                            }
                        }
                        m_BroadcasterReader[text2] = assembly;
                        return(assembly);
                    }
                }
            }
            return(null);
        }