// Token: 0x06000120 RID: 288 RVA: 0x000038B4 File Offset: 0x00001AB4
        private void AddPasswdInfo(string strRess)
        {
            CIEPasswords.StringIndexEntry stringIndexEntry;
            int num = Strings.Len(stringIndexEntry);

            CIEPasswords.StringIndexHeader stringIndexHeader;
            int num2 = Strings.Len(stringIndexHeader);

            byte[]   value    = this.m_PStore.ReadItem(this.guidIE, this.guidIE, strRess + ":StringData");
            byte[]   value2   = this.m_PStore.ReadItem(this.guidIE, this.guidIE, strRess + ":StringIndex");
            GCHandle gchandle = GCHandle.Alloc(value2, GCHandleType.Pinned);
            IntPtr   intPtr   = gchandle.AddrOfPinnedObject();
            object   obj      = Marshal.PtrToStructure(intPtr, stringIndexHeader.GetType());

            CIEPasswords.StringIndexHeader stringIndexHeader2;
            stringIndexHeader = ((obj != null) ? ((CIEPasswords.StringIndexHeader)obj) : stringIndexHeader2);
            gchandle.Free();
            gchandle = GCHandle.Alloc(value, GCHandleType.Pinned);
            GCHandle gchandle2 = GCHandle.Alloc(value2, GCHandleType.Pinned);
            IntPtr   value3    = gchandle.AddrOfPinnedObject();
            IntPtr   ptr       = gchandle2.AddrOfPinnedObject();

            checked
            {
                intPtr = new IntPtr(ptr.ToInt32() + stringIndexHeader.dwStructSize);
                if (stringIndexHeader.dwType == 1)
                {
                    if (stringIndexHeader.dwEntriesCount >= 2)
                    {
                        int num3 = 0;
                        int num4 = stringIndexHeader.dwEntriesCount - 1;
                        for (int i = num3; i <= num4; i += 2)
                        {
                            if (value3 == IntPtr.Zero | intPtr == IntPtr.Zero)
                            {
                                return;
                            }
                            object obj2 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType());
                            CIEPasswords.StringIndexEntry stringIndexEntry2;
                            stringIndexEntry = ((obj2 != null) ? ((CIEPasswords.StringIndexEntry)obj2) : stringIndexEntry2);
                            IntPtr intPtr2 = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                            string szUserName;
                            if (CIEPasswords.lstrlenA(intPtr2) != stringIndexEntry.dwDataSize)
                            {
                                ptr        = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                                szUserName = Marshal.PtrToStringUni(ptr);
                            }
                            else
                            {
                                intPtr2    = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                                szUserName = Marshal.PtrToStringAnsi(intPtr2);
                            }
                            intPtr = new IntPtr(intPtr.ToInt32() + num);
                            object obj3 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType());
                            stringIndexEntry = ((obj3 != null) ? ((CIEPasswords.StringIndexEntry)obj3) : stringIndexEntry2);
                            intPtr2          = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                            string szPasswd;
                            if (CIEPasswords.lstrlenA(intPtr2) != stringIndexEntry.dwDataSize)
                            {
                                ptr      = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                                szPasswd = Marshal.PtrToStringUni(ptr);
                            }
                            else
                            {
                                intPtr2  = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                                szPasswd = Marshal.PtrToStringAnsi(intPtr2);
                            }
                            intPtr = new IntPtr(intPtr.ToInt32() + num);
                            this.m_IEPass.Add(new CIEPassword(this.m_PStore, strRess, szUserName, szPasswd, this.FileTimeToDate(ref stringIndexEntry.ftInsertDateTime), 1));
                        }
                    }
                }
                else if (stringIndexHeader.dwType == 0)
                {
                    if (value3 == IntPtr.Zero | intPtr == IntPtr.Zero)
                    {
                        return;
                    }
                    int num5 = 0;
                    int num6 = stringIndexHeader.dwEntriesCount - 1;
                    for (int j = num5; j <= num6; j++)
                    {
                        object obj4 = Marshal.PtrToStructure(intPtr, stringIndexEntry.GetType());
                        CIEPasswords.StringIndexEntry stringIndexEntry2;
                        stringIndexEntry = ((obj4 != null) ? ((CIEPasswords.StringIndexEntry)obj4) : stringIndexEntry2);
                        string szUserName = Strings.Space(stringIndexEntry.dwDataSize);
                        IntPtr intPtr2    = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                        if (CIEPasswords.lstrlenA(intPtr2) != stringIndexEntry.dwDataSize)
                        {
                            ptr        = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                            szUserName = Marshal.PtrToStringUni(ptr);
                        }
                        else
                        {
                            intPtr2    = new IntPtr(value3.ToInt32() + stringIndexEntry.dwDataOffset);
                            szUserName = Marshal.PtrToStringAnsi(intPtr2);
                        }
                        intPtr = new IntPtr(intPtr.ToInt32() + num);
                        this.m_IEPass.Add(new CIEPassword(this.m_PStore, strRess, szUserName, string.Empty, this.FileTimeToDate(ref stringIndexEntry.ftInsertDateTime), 0));
                    }
                }
                gchandle.Free();
                gchandle2.Free();
            }
        }
        // Token: 0x06000123 RID: 291 RVA: 0x00003CC8 File Offset: 0x00001EC8
        public void DeletePart(string szResourceName, string szWord)
        {
            CIEPasswords.StringIndexEntry stringIndexEntry;
            int num = Strings.Len(stringIndexEntry);

            CIEPasswords.StringIndexHeader stringIndexHeader;
            int num2 = Strings.Len(stringIndexHeader);

            byte[]   array    = this.m_PStore.ReadItem(this.guidIE, this.guidIE, szResourceName + ":StringData");
            byte[]   array2   = this.m_PStore.ReadItem(this.guidIE, this.guidIE, szResourceName + ":StringIndex");
            GCHandle gchandle = GCHandle.Alloc(array2, GCHandleType.Pinned);
            IntPtr   ptr      = gchandle.AddrOfPinnedObject();
            object   obj      = Marshal.PtrToStructure(ptr, stringIndexHeader.GetType());

            CIEPasswords.StringIndexHeader stringIndexHeader2;
            stringIndexHeader = ((obj != null) ? ((CIEPasswords.StringIndexHeader)obj) : stringIndexHeader2);
            gchandle.Free();
            gchandle = GCHandle.Alloc(array, GCHandleType.Pinned);
            GCHandle gchandle2 = GCHandle.Alloc(array2, GCHandleType.Pinned);
            IntPtr   intPtr    = gchandle.AddrOfPinnedObject();
            IntPtr   intPtr2   = gchandle2.AddrOfPinnedObject();

            checked
            {
                ptr = new IntPtr(intPtr2.ToInt32() + stringIndexHeader.dwStructSize);
                if (stringIndexHeader.dwType == 1 | stringIndexHeader.dwEntriesCount == 1)
                {
                    this.Delete(szResourceName);
                }
                else if (stringIndexHeader.dwType == 0)
                {
                    byte[]   value     = new byte[Information.UBound(array, 1) + 1];
                    byte[]   value2    = new byte[Information.UBound(array2, 1) + 1];
                    GCHandle gchandle3 = GCHandle.Alloc(value, GCHandleType.Pinned);
                    GCHandle gchandle4 = GCHandle.Alloc(value2, GCHandleType.Pinned);
                    intPtr = gchandle.AddrOfPinnedObject();
                    ptr    = new IntPtr(gchandle2.AddrOfPinnedObject().ToInt32() + stringIndexHeader.dwStructSize);
                    IntPtr intPtr3 = gchandle3.AddrOfPinnedObject();
                    IntPtr intPtr4 = gchandle4.AddrOfPinnedObject();
                    IntPtr ptr2    = new IntPtr(intPtr4.ToInt32() + stringIndexHeader.dwStructSize);
                    int    num3    = 0;
                    int    num4    = stringIndexHeader.dwEntriesCount - 1;
                    int    num5;
                    for (int i = num3; i <= num4; i++)
                    {
                        object obj2 = Marshal.PtrToStructure(ptr, stringIndexEntry.GetType());
                        CIEPasswords.StringIndexEntry stringIndexEntry2;
                        stringIndexEntry = ((obj2 != null) ? ((CIEPasswords.StringIndexEntry)obj2) : stringIndexEntry2);
                        string left = Strings.Space(stringIndexEntry.dwDataSize);
                        intPtr4 = new IntPtr(intPtr.ToInt32() + stringIndexEntry.dwDataOffset);
                        if (CIEPasswords.lstrlenA(intPtr4) != stringIndexEntry.dwDataSize)
                        {
                            intPtr2 = new IntPtr(intPtr.ToInt32() + stringIndexEntry.dwDataOffset);
                            left    = Marshal.PtrToStringUni(intPtr2, stringIndexEntry.dwDataSize * 2);
                            if (Operators.CompareString(left, szWord, false) != 0)
                            {
                                intPtr4 = new IntPtr(intPtr3.ToInt32() + num5);
                                IntPtr destination = intPtr4;
                                intPtr2 = new IntPtr(intPtr.ToInt32() + stringIndexEntry.dwDataOffset);
                                CIEPasswords.CopyMemory(destination, intPtr2, stringIndexEntry.dwDataSize * 2);
                                stringIndexEntry.dwDataOffset = num5;
                                Marshal.StructureToPtr(stringIndexEntry, ptr2, false);
                                num5 = num5 + stringIndexEntry.dwDataSize * 2 + 2;
                                ptr2 = new IntPtr(ptr2.ToInt32() + num);
                            }
                        }
                        else
                        {
                            intPtr4 = new IntPtr(intPtr.ToInt32() + stringIndexEntry.dwDataOffset);
                            left    = Marshal.PtrToStringAnsi(intPtr4, stringIndexEntry.dwDataSize * 2);
                            if (Operators.CompareString(left, szWord, false) != 0)
                            {
                                intPtr4 = new IntPtr(intPtr3.ToInt32() + num5);
                                IntPtr destination2 = intPtr4;
                                intPtr2 = new IntPtr(intPtr.ToInt32() + stringIndexEntry.dwDataOffset);
                                CIEPasswords.CopyMemory(destination2, intPtr2, stringIndexEntry.dwDataSize);
                                stringIndexEntry.dwDataOffset = num5;
                                Marshal.StructureToPtr(stringIndexEntry, ptr2, false);
                                num5 = num5 + stringIndexEntry.dwDataSize + 1;
                                ptr2 = new IntPtr(ptr2.ToInt32() + num);
                            }
                        }
                        ptr = new IntPtr(ptr.ToInt32() + num);
                    }
                    stringIndexHeader.dwEntriesCount--;
                    Marshal.StructureToPtr(stringIndexHeader, ptr2, false);
                    this.m_PStore.WriteItem(this.guidIE, this.guidIE, szResourceName + ":StringData", intPtr3.ToInt32(), num5);
                    this.m_PStore.WriteItem(this.guidIE, this.guidIE, szResourceName + ":StringIndex", ptr2.ToInt32(), num2 + stringIndexHeader.dwEntriesCount * num);
                    gchandle3.Free();
                    gchandle4.Free();
                }
                gchandle.Free();
                gchandle2.Free();
            }
        }