Well, even using TransFormBlock it still has the size problem.
Apparently the size problem lies within the System.Security.Cryptography.MD5CryptoServiceProvider.
 Code:
Function MD5($strFileName)
  Dim $adTypeBinary, $objStream, $objXML, $objXEL, $objMD5, $i, $intFinalBlock, $BinaryFile
  $adTypeBinary = 1
  $objStream = CreateObject("ADODB.Stream")
  $objStream.Type = $adTypeBinary
  $objStream.Open
  $objStream.LoadFromFile($strFileName)
  $objMD5 = CreateObject("System.Security.Cryptography.MD5CryptoServiceProvider")
  $objMD5.Initialize
  $BinaryFile = $objStream.Read
  For $i=0 to $objStream.Size Step 31744
    $=$objMD5.TransformBlock($BinaryFile, $i, 31744, $BinaryFile, $i)
    If ($objStream.Size -$i) < 31744
      $intFinalBlock = ($objStream.Size -$i)
      $=$objMD5.TransformFinalBlock($BinaryFile, $i, $intFinalBlock)
    EndIf
  Next
  $objXML = CreateObject("MSXML2.DOMDocument")
  $objXEL = $objXML.CreateElement("tmp")
  $objXEL.DataType = "bin.hex"
  $objXEL.NodeTypedValue = $objMD5.Hash
  $MD5 = $objXEL.Text
  $objStream.Close
  $objStream = ""
EndFunction


The last option is to read the Stream in chunks and feed the chunks to TransformBlock.