هل يمكنك شرح الدالة التالية بالعربي وبالتفصيل     internal static byte[] smethod_0(object object_2)
  {
    uint[] object_2_1 = new uint[16];
    uint num1 = (uint) ((448 - object_2.Length * 8 % 512 + 512) % 512);
    if (num1 == 0U)
      num1 = 512U;
    uint length = (uint) ((long) object_2.Length + (long) (num1 / 8U) + 8L);
    ulong num2 = (ulong) object_2.Length * 8UL;
    byte[] numArray = new byte[(IntPtr) length];
    for (int index = 0; index < object_2.Length; ++index)
      numArray[index] = (byte) object_2[index];
    numArray[object_2.Length] |= (byte) 128;
    for (int index = 8; index > 0; --index)
      numArray[(long) length - (long) index] = (byte) (num2 >> (8 - index) * 8 & (ulong) byte.MaxValue);
    uint num3 = (uint) (numArray.Length * 8) / 32U;
    uint uint_1_1 = 1732584193;
    uint uint_1_2 = 4023233417;
    uint uint_1_3 = 2562383102;
    uint uint_1_4 = 271733878;
    for (uint index1 = 0; index1 < num3 / 16U; ++index1)
    {
      uint num4 = index1 << 6;
      for (uint index2 = 0; index2 < 61U; index2 += 4U)
        object_2_1[(IntPtr) (index2 >> 2)] = (uint) ((int) numArray[(IntPtr) (num4 + (index2 + 3U))] << 24 | (int) numArray[(IntPtr) (num4 + (index2 + 2U))] << 16 | (int) numArray[(IntPtr) (num4 + (index2 + 1U))] << 8) | (uint) numArray[(IntPtr) (num4 + index2)];
      uint num5 = uint_1_1;
      uint num6 = uint_1_2;
      uint num7 = uint_1_3;
      uint num8 = uint_1_4;
      Class118.smethod_1(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 0U, (ushort) 7, 1U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 1U, (ushort) 12, 2U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 2U, (ushort) 17, 3U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 3U, (ushort) 22, 4U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 4U, (ushort) 7, 5U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 5U, (ushort) 12, 6U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 6U, (ushort) 17, 7U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 7U, (ushort) 22, 8U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 8U, (ushort) 7, 9U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 9U, (ushort) 12, 10U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 10U, (ushort) 17, 11U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 11U, (ushort) 22, 12U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 12U, (ushort) 7, 13U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 13U, (ushort) 12, 14U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 14U, (ushort) 17, 15U, (object) object_2_1);
      Class118.smethod_1(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 15U, (ushort) 22, 16U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 1U, (ushort) 5, 17U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 6U, (ushort) 9, 18U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 11U, (ushort) 14, 19U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 0U, (ushort) 20, 20U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 5U, (ushort) 5, 21U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 10U, (ushort) 9, 22U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 15U, (ushort) 14, 23U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 4U, (ushort) 20, 24U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 9U, (ushort) 5, 25U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 14U, (ushort) 9, 26U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 3U, (ushort) 14, 27U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 8U, (ushort) 20, 28U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 13U, (ushort) 5, 29U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 2U, (ushort) 9, 30U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 7U, (ushort) 14, 31U, (object) object_2_1);
      Class118.smethod_2(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 12U, (ushort) 20, 32U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 5U, (ushort) 4, 33U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 8U, (ushort) 11, 34U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 11U, (ushort) 16, 35U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 14U, (ushort) 23, 36U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 1U, (ushort) 4, 37U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 4U, (ushort) 11, 38U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 7U, (ushort) 16, 39U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 10U, (ushort) 23, 40U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 13U, (ushort) 4, 41U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 0U, (ushort) 11, 42U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 3U, (ushort) 16, 43U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 6U, (ushort) 23, 44U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 9U, (ushort) 4, 45U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 12U, (ushort) 11, 46U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 15U, (ushort) 16, 47U, (object) object_2_1);
      Class118.smethod_3(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 2U, (ushort) 23, 48U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 0U, (ushort) 6, 49U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 7U, (ushort) 10, 50U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 14U, (ushort) 15, 51U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 5U, (ushort) 21, 52U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 12U, (ushort) 6, 53U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 3U, (ushort) 10, 54U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 10U, (ushort) 15, 55U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 1U, (ushort) 21, 56U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 8U, (ushort) 6, 57U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 15U, (ushort) 10, 58U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 6U, (ushort) 15, 59U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 13U, (ushort) 21, 60U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_1, uint_1_2, uint_1_3, uint_1_4, 4U, (ushort) 6, 61U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_4, uint_1_1, uint_1_2, uint_1_3, 11U, (ushort) 10, 62U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_3, uint_1_4, uint_1_1, uint_1_2, 2U, (ushort) 15, 63U, (object) object_2_1);
      Class118.smethod_4(ref uint_1_2, uint_1_3, uint_1_4, uint_1_1, 9U, (ushort) 21, 64U, (object) object_2_1);
      uint_1_1 += num5;
      uint_1_2 += num6;
      uint_1_3 += num7;
      uint_1_4 += num8;
    }
    byte[] destinationArray = new byte[16];
    Array.Copy((Array) BitConverter.GetBytes(uint_1_1), 0, (Array) destinationArray, 0, 4);
    Array.Copy((Array) BitConverter.GetBytes(uint_1_2), 0, (Array) destinationArray, 4, 4);
    Array.Copy((Array) BitConverter.GetBytes(uint_1_3), 0, (Array) destinationArray, 8, 4);
    Array.Copy((Array) BitConverter.GetBytes(uint_1_4), 0, (Array) destinationArray, 12, 4);
    return destinationArray;
  }