// Token: 0x06000221 RID: 545 RVA: 0x00009EA4 File Offset: 0x000080A4
        internal static T Get <T>(string valueName, AmClusterRegkeyHandle hKey, out bool doesValueExist)
        {
            object raw = AmClusterRegProperty.GetRaw(valueName, hKey, out doesValueExist);

            if (!doesValueExist)
            {
                return(default(T));
            }
            return((T)((object)raw));
        }
        // Token: 0x06000220 RID: 544 RVA: 0x00009E4C File Offset: 0x0000804C
        internal static T GetBestEffort <T>(string key, AmClusterRegkeyHandle handle, out bool doesKeyExist, out Exception ex)
        {
            T    result          = default(T);
            bool doesKeyExistTmp = false;

            ex = SharedHelper.RunClusterOperation(delegate
            {
                result = AmClusterRegProperty.Get <T>(key, handle, out doesKeyExistTmp);
            });
            doesKeyExist = doesKeyExistTmp;
            return(result);
        }
        // Token: 0x06000222 RID: 546 RVA: 0x00009ED0 File Offset: 0x000080D0
        internal static object GetRaw(string valueName, AmClusterRegkeyHandle hKey, out bool doesValueExist)
        {
            IntPtr intPtr = IntPtr.Zero;
            int    num    = 1024;
            object result;

            try
            {
                intPtr = Marshal.AllocHGlobal(num);
                RegistryValueKind valueType;
                int num2 = ClusapiMethods.ClusterRegQueryValue(hKey, valueName, out valueType, intPtr, ref num);
                if (num2 == 234)
                {
                    int num3 = 0;
                    do
                    {
                        Marshal.FreeHGlobal(intPtr);
                        intPtr = Marshal.AllocHGlobal(num);
                        num2   = ClusapiMethods.ClusterRegQueryValue(hKey, valueName, out valueType, intPtr, ref num);
                    }while (num2 == 234 && num3++ < 3);
                }
                if (num2 == 2 || num2 == 1018)
                {
                    doesValueExist = false;
                    result         = null;
                }
                else
                {
                    if (num2 != 0)
                    {
                        throw AmExceptionHelper.ConstructClusterApiException(num2, "ClusterRegQueryValue()", new object[0]);
                    }
                    doesValueExist = true;
                    result         = AmClusterRegProperty.ParseRegistryValue(valueType, intPtr, num);
                }
            }
            finally
            {
                if (intPtr != IntPtr.Zero)
                {
                    Marshal.FreeHGlobal(intPtr);
                }
            }
            return(result);
        }