AdtpBuildHexInt64String

INT64 __fastcall AdtpBuildHexInt64String(
        UINT64 *Value,
        _UNICODE_STRING *pResultantString,
        _EVENT_DATA_DESCRIPTOR *pEtwDataDescriptor,
        WCHAR *pszStringBuffer,
        UINT64 *pdwCurBufferIndex,
        UINT8 *pFreeWhenDone){
  WCHAR *PoolWithTag; 
  wchar_t *v8; 
  INT64 result; 
  __int64 v10; 
  PoolWithTag = (WCHAR *)ExAllocatePoolWithTag(PagedPool, 0x26ui64, 0x6B416553ui64);
  v8 = PoolWithTag;
  if( !PoolWithTag )
    return 3221225495i64;
  *pFreeWhenDone = 1;
  if( StringCchPrintfW(PoolWithTag, 0x13ui64, (WCHAR *)L"0x%I64X") >= 0 )
  {
    v10 = -1i64;
    do
      ++v10;
    while( v8[v10] );
    pResultantString->MaximumLength = 38;
    pResultantString->Length = 2 * v10;
    result = 0i64;
    pResultantString->Buffer = v8;
  }
  else
  {
    if( *pFreeWhenDone == 1 )
    {
      ExFreePoolWithTag(v8, 0);
      *pFreeWhenDone = 0;
    }
    return 3221225485i64;
  }
  return result;
}

Referenced by:

AdtpBuildRegistryValueString