Example #1
0
        public void _0001(byte[] config)
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            _ThreadFilter[0]    = new uint[16][];
            _ThreadFilter[1]    = new uint[16][];
            _ThreadFilter[0][0] = new uint[4];
            _ThreadFilter[1][0] = new uint[4];
            _ThreadFilter[1][8] = MappingIteratorMapping.DisableDic(config);
            int num = default(int);

            if (0 == 0)
            {
                num = 4;
            }
            uint[] array = default(uint[]);
            while (true)
            {
                if (num >= 1)
                {
                    uint[] obj = (uint[])_ThreadFilter[1][num + num].Clone();
                    if (0 == 0)
                    {
                        array = obj;
                    }
                    uint[] first = array;
                    if (0 == 0)
                    {
                        MappingIteratorMapping.VerifyDic(first);
                    }
                    _ThreadFilter[1][num] = array;
                    int num2 = num >> 1;
                    if (4u != 0)
                    {
                        num = num2;
                    }
                    continue;
                }
                uint[] obj2 = (uint[])_ThreadFilter[1][1].Clone();
                uint[] array2;
                if (5u != 0)
                {
                    array2 = obj2;
                }
                if (0 == 0)
                {
                    MappingIteratorMapping.VerifyDic(array2);
                }
                _ThreadFilter[0][8] = array2;
                for (int num3 = 4; num3 >= 1; num3 >>= 1)
                {
                    uint[] array3 = (uint[])_ThreadFilter[0][num3 + num3].Clone();
                    MappingIteratorMapping.VerifyDic(array3);
                    _ThreadFilter[0][num3] = array3;
                }
                int num4 = 0;
                while (true)
                {
                    for (int i = 2; i < 16; i += i)
                    {
                        for (int j = 1; j < i; j++)
                        {
                            uint[] array4 = (uint[])_ThreadFilter[num4][i].Clone();
                            MappingIteratorMapping.OrderDic(array4, _ThreadFilter[num4][j]);
                            _ThreadFilter[num4][i + j] = array4;
                        }
                    }
                    if (++num4 == 32)
                    {
                        return;
                    }
                    if (false)
                    {
                        break;
                    }
                    if (num4 > 1)
                    {
                        _ThreadFilter[num4]    = new uint[16][];
                        _ThreadFilter[num4][0] = new uint[4];
                        for (int num5 = 8; num5 > 0; num5 >>= 1)
                        {
                            uint[] array5 = (uint[])_ThreadFilter[num4 - 2][num5].Clone();
                            MappingIteratorMapping.PatchDic(array5);
                            _ThreadFilter[num4][num5] = array5;
                        }
                    }
                }
            }
        }
        public virtual void _0001(bool isinit, AccountFilter cfg)
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            recordList   = isinit;
            m_ReaderList = null;
            DescriptorListAnnotation descriptorListAnnotation = default(DescriptorListAnnotation);

            if (cfg is DescriptorListAnnotation)
            {
                DescriptorListAnnotation obj = (DescriptorListAnnotation)cfg;
                if (3u != 0)
                {
                    descriptorListAnnotation = obj;
                }
            }
            else
            {
                if (!(cfg is TemplateIssuerImporter))
                {
                    throw new ArgumentException("invalid parameters passed to GCM");
                }
                TemplateIssuerImporter obj2 = (TemplateIssuerImporter)cfg;
                TemplateIssuerImporter templateIssuerImporter;
                if (uint.MaxValue != 0)
                {
                    templateIssuerImporter = obj2;
                }
                m_FilterList   = templateIssuerImporter.EnableDic();
                m_InstanceList = null;
                if (0 == 0)
                {
                    m_EventList = 16;
                    _DicList    = (MapperList)templateIssuerImporter._0001();
                    goto IL_00f6;
                }
            }
            m_FilterList   = descriptorListAnnotation._0002();
            m_InstanceList = descriptorListAnnotation._0001();
            int num = descriptorListAnnotation._0001();

            goto IL_0048;
IL_00f6:
            num = (isinit ? 16 : (16 + m_EventList));
            while (5u != 0)
            {
                int num2;
                if (2u != 0)
                {
                    num2 = num;
                }
                m_IssuerList = new byte[num2];
                if (m_FilterList != null)
                {
                    int num3 = m_FilterList.Length;
                    int num4 = 1;
                    while (num3 >= num4)
                    {
                        if (m_InstanceList == null)
                        {
                            m_InstanceList = new byte[0];
                        }
                        ParamsIssuerImporter comparatorFilter = _ComparatorFilter;
                        MapperList           dicList          = _DicList;
                        if (8u != 0)
                        {
                            comparatorFilter._0001(isv: true, dicList);
                        }
                        _ErrorList = new byte[16];
                        num        = _ComparatorFilter._0001(_ErrorList, 0, _ErrorList, 0);
                        if (4 == 0)
                        {
                            goto IL_010c;
                        }
                        SchemaFilter schemaFilter = procFilter;
                        byte[]       errorList    = _ErrorList;
                        if (0 == 0)
                        {
                            schemaFilter._0001(errorList);
                        }
                        _ComposerList = RunDic(m_InstanceList);
                        if (0 == 0)
                        {
                            num3 = m_FilterList.Length;
                            num4 = 12;
                            if (num4 == 0)
                            {
                                continue;
                            }
                            if (num3 != num4)
                            {
                                _PropertyList = RunDic(m_FilterList);
                                byte[] array = new byte[16];
                                CompareDic((ulong)((long)m_FilterList.Length * 8L), array, 8);
                                MappingIteratorMapping.ValidateDic(_PropertyList, array);
                                procFilter._0002(_PropertyList);
                                goto IL_0269;
                            }
                            _PropertyList = new byte[16];
                        }
                        Array.Copy(m_FilterList, 0, _PropertyList, 0, m_FilterList.Length);
                        _PropertyList[15] = 1;
                        goto IL_0269;
IL_0269:
                        m_ClientList    = RegistryList.CloneDic(_ComposerList);
                        broadcasterList = RegistryList.CloneDic(_PropertyList);
                        m_ClassList     = 0;
                        requestList     = 0uL;
                        return;
                    }
                }
                throw new ArgumentException("IV must be at least 1 byte");
                IL_010c :;
            }
            goto IL_0048;
IL_0048:
            int num5 = default(int);

            if (0 == 0)
            {
                num5 = num;
            }
            if (num5 < 96 || num5 > 128 || num5 % 8 != 0)
            {
                throw new ArgumentException("Invalid value for MAC size: " + num5);
            }
            m_EventList = num5 / 8;
            _DicList    = descriptorListAnnotation._0001();
            goto IL_00f6;
        }
        private void FillDic(byte[] config, int num_cust, byte[] role, int var12_amount)
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            int num = default(int);

            if (0 == 0)
            {
                num = 15;
            }
            while (true)
            {
                int num2 = num;
                if (false)
                {
                    goto IL_00e2;
                }
                byte[] array;
                IntPtr intPtr;
                if (num2 >= 12)
                {
                    byte[] array2 = array = broadcasterList;
                    int    num3   = num;
                    intPtr = (IntPtr)num3;
                    byte b;
                    array2[num3] = (b = (byte)(array[(long)intPtr] + 1));
                    if (b == 0)
                    {
                        int num4 = num - 1;
                        if (uint.MaxValue != 0)
                        {
                            num = num4;
                        }
                        continue;
                    }
                }
                byte[] array3 = new byte[16];
                byte[] array4;
                if (8u != 0)
                {
                    array4 = array3;
                }
                byte[] cust;
                int    num5;
                if (0 == 0)
                {
                    _ComparatorFilter._0001(broadcasterList, 0, array4, 0);
                    if (recordList)
                    {
                        byte[] consumerFilter = _ConsumerFilter;
                        int    length         = 16 - num_cust;
                        if (0 == 0)
                        {
                            Array.Copy(consumerFilter, num_cust, array4, num_cust, length);
                        }
                        if (5 == 0)
                        {
                            continue;
                        }
                        if (3u != 0)
                        {
                            cust = array4;
                        }
                    }
                    else
                    {
                        if (8 == 0)
                        {
                            continue;
                        }
                        if (8u != 0)
                        {
                            cust = config;
                        }
                    }
                    num5 = num_cust - 1;
                }
                goto IL_00e5;
IL_00e5:
                if (num5 < 0)
                {
                    MappingIteratorMapping.ValidateDic(m_ClientList, cust);
                    break;
                }
                byte[] array5 = array = array4;
                int    num6   = num5;
                intPtr       = (IntPtr)num6;
                array5[num6] = (byte)(array[(long)intPtr] ^ config[num5]);
                role[var12_amount + num5] = array4[num5];
                if (5 == 0)
                {
                    break;
                }
                num2 = num5;
                goto IL_00e2;
IL_00e2:
                num5 = num2 - 1;
                goto IL_00e5;
            }
            procFilter._0002(m_ClientList);
            requestList += (ulong)num_cust;
        }
        private byte[] RunDic(byte[] value)
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            byte[] array2;
            if (0 == 0)
            {
                byte[] array = new byte[16];
                if (3u != 0)
                {
                    array2 = array;
                }
            }
            int num = default(int);

            if (0 == 0)
            {
                num = 0;
            }
            if (0 == 0)
            {
            }
            int num5 = default(int);

            while (num < value.Length)
            {
                byte[] array3 = new byte[16];
                byte[] array4;
                if (8u != 0)
                {
                    array4 = array3;
                }
                int num2 = value.Length - num;
                int num3 = 16;
                if (num3 != 0)
                {
                    int num4 = Math.Min(num2, num3);
                    if (0 == 0)
                    {
                        num5 = num4;
                    }
                    int sourceIndex = num;
                    int length      = num5;
                    if (0 == 0)
                    {
                        Array.Copy(value, sourceIndex, array4, 0, length);
                    }
                    if (uint.MaxValue != 0)
                    {
                        MappingIteratorMapping.ValidateDic(array2, array4);
                    }
                    procFilter._0002(array2);
                    num2 = num;
                    goto IL_0079;
                }
                goto IL_007b;
IL_007b:
                num2 += num3;
                if (5u != 0)
                {
                    num = num2;
                    continue;
                }
                goto IL_0079;
IL_0079:
                num3 = 16;
                goto IL_007b;
            }
            return(array2);
        }
        public unsafe int _0001(byte[] v, int visZ)
        {
            //Discarded unreachable code: IL_0002
            //IL_0003: Incompatible stack heights: 0 vs 1
            int classList = m_ClassList;
            int num;

            if (5u != 0)
            {
                num = classList;
            }
            if (!recordList)
            {
                if (num < m_EventList)
                {
                    throw new ProxyList("data too short");
                }
                int num2 = num - m_EventList;
                if (0 == 0)
                {
                    num = num2;
                }
            }
            if (num > 0)
            {
                byte[] array  = new byte[16];
                byte[] array2 = default(byte[]);
                if (0 == 0)
                {
                    array2 = array;
                }
                byte[] issuerList       = m_IssuerList;
                byte[] destinationArray = array2;
                int    length           = num;
                if (true)
                {
                    Array.Copy(issuerList, destinationArray, length);
                }
                byte[] config   = array2;
                int    num_cust = num;
                if (0 == 0)
                {
                    FillDic(config, num_cust, v, visZ);
                }
            }
            byte[] array3 = new byte[16];
            byte[] array4;
            if (5u != 0)
            {
                array4 = array3;
            }
            IntPtr intPtr = (IntPtr)(void *)m_InstanceList.LongLength;
            int    num3;
            int    num4;

            if (0 == 0)
            {
                num3 = (int)(long)intPtr;
                if (false)
                {
                    goto IL_01a7;
                }
                CompareDic((ulong)((long)num3 * 8L), array4, 0);
                CompareDic(requestList * 8, array4, 8);
                do
                {
                    MappingIteratorMapping.ValidateDic(m_ClientList, array4);
                }while (5 == 0);
                procFilter._0002(m_ClientList);
                byte[] array5 = new byte[16];
                _ComparatorFilter._0001(_PropertyList, 0, array5, 0);
                MappingIteratorMapping.ValidateDic(array5, m_ClientList);
                num4         = num;
                m_ReaderList = new byte[m_EventList];
                Array.Copy(array5, m_ReaderList, m_EventList);
                if (recordList)
                {
                    Array.Copy(m_ReaderList, 0, v, visZ + m_ClassList, m_EventList);
                    num4 += m_EventList;
                    goto IL_019e;
                }
                byte[] array6 = new byte[m_EventList];
                Array.Copy(m_IssuerList, num, array6, 0, m_EventList);
                intPtr = (IntPtr)(RegistryList.StopDic(m_ReaderList, array6) ? 1 : 0);
            }
            if (intPtr == (IntPtr)0)
            {
                throw new ProxyList("mac check in GCM failed");
            }
            goto IL_019e;
IL_01a7:
            return(num3);

IL_019e:
            ResolveDic(useident: false);
            num3 = num4;
            goto IL_01a7;
        }