public static unsafe bool RevertOverride(OverrideUtilities.OffsetBackup backup)
    {
        bool result;

        try
        {
            byte *ptr = (byte *)backup.Method.ToPointer();
            *     ptr = backup.A;
            ptr[1]  = backup.B;
            ptr[10] = backup.C;
            ptr[11] = backup.D;
            ptr[12] = backup.E;
            bool flag = IntPtr.Size == 4;
            if (flag)
            {
                *(int *)(ptr + 1) = (int)backup.F32;
                ptr[5]            = backup.G;
            }
            else
            {
                *(long *)(ptr + 2) = (long)backup.F64;
            }
            result = true;
        }
        catch (Exception)
        {
            result = false;
        }
        return(result);
    }
 public OverrideWrapper(MethodInfo original, MethodInfo modified, OverrideAttribute attribute, object instance = null)
 {
     Original  = original;
     Modified  = modified;
     Instance  = instance;
     Attribute = attribute;
     Local     = (Modified.DeclaringType.Assembly == Assembly.GetExecutingAssembly());
     RuntimeHelpers.PrepareMethod(original.MethodHandle);
     RuntimeHelpers.PrepareMethod(modified.MethodHandle);
     PtrOriginal  = Original.MethodHandle.GetFunctionPointer();
     PtrModified  = Modified.MethodHandle.GetFunctionPointer();
     OffsetBackup = new OverrideUtilities.OffsetBackup(PtrOriginal);
     Detoured     = false;
 }