Parsed: 112159

  public static function GUIDtoBytestring($GUIDstring) {
    // Microsoft defines these 16-byte (128-bit) GUIDs in the strangest way:
    // first 4 bytes are in little-endian order
    // next 2 bytes are appended in little-endian order
    // next 2 bytes are appended in little-endian order
    // next 2 bytes are appended in big-endian order
    // next 6 bytes are appended in big-endian order

    // AaBbCcDd-EeFf-GgHh-IiJj-KkLlMmNnOoPp is stored as this 16-byte string:
    // $Dd $Cc $Bb $Aa $Ff $Ee $Hh $Gg $Ii $Jj $Kk $Ll $Mm $Nn $Oo $Pp

    $hexbytecharstring  = chr(hexdec(substr($GUIDstring,  6, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring,  4, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring,  2, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring,  0, 2)));

    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 11, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring,  9, 2)));

    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 16, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 14, 2)));

    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 19, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 21, 2)));

    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 24, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 26, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 28, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 30, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 32, 2)));
    $hexbytecharstring .= chr(hexdec(substr($GUIDstring, 34, 2)));

    return $hexbytecharstring;
  }