VrpPreQueryKeyName

INT64 __stdcall VrpPreQueryKeyName(REG_QUERY_KEY_NAME *QueryNameInfo){
  char *ObjectContext; 
  __int64 *v3; 
  __int64 *v4; 
  int v5; 
  __int64 v6; 
  unsigned __int16 *v7; 
  __int64 v8; 
  ULONG v9; 
  unsigned int v10; 
  UINT8 *v11; 
  __int64 v13[3]; 
  GUID ActivityId; 
  struct _EVENT_DATA_DESCRIPTOR v15[2]; 
  int *v16; 
  __int64 v17; 
  __int64 v18; 
  int v19; 
  int v20; 
  __int64 *v21; 
  __int64 v22; 
  ActivityId = 0i64;
  EtwActivityIdControl(3u, &ActivityId);
  ObjectContext = (char *)QueryNameInfo->ObjectContext;
  v13[1] = (__int64)ObjectContext;
  if( (unsigned int)CallbackContext <= 2 )
  {
    v3 = &EmptyUnicodeString;
  }
  else
  {
    v3 = &EmptyUnicodeString;
    v4 = (__int64 *)(ObjectContext + 16);
    if( !*((_QWORD *)ObjectContext + 3) )
      v4 = &EmptyUnicodeString;
    v5 = *(unsigned __int16 *)v4;
    v6 = v4[1];
    v16 = &v19;
    v17 = 2i64;
    v18 = v6;
    v19 = v5;
    v20 = 0;
    tlgWriteTransfer_EtwWriteTransfer(
      (__int64)&CallbackContext,
      (unsigned __int8 *)byte_140023579,
      &ActivityId,
      0i64,
      4u,
      v15);
  }
  v7 = (unsigned __int16 *)(ObjectContext + 16);
  v13[2] = (__int64)(ObjectContext + 16);
  v8 = (__int64)(ObjectContext + 16);
  v13[0] = (__int64)(ObjectContext + 16);
  v9 = *((unsigned __int16 *)ObjectContext + 8) + 18;
  *QueryNameInfo->ReturnLength = v9;
  if( QueryNameInfo->Length >= v9 )
  {
    v11 = (UINT8 *)&QueryNameInfo->ObjectNameInfo[1];
    memmove(v11, *((UINT8 **)ObjectContext + 3), *v7);
    *(_WORD *)&v11[2 * ((unsigned __int64)*v7 >> 1)] = 0;
    QueryNameInfo->ObjectNameInfo->Name.Length = *v7;
    QueryNameInfo->ObjectNameInfo->Name.MaximumLength = *v7;
    QueryNameInfo->ObjectNameInfo->Name.Buffer = (wchar_t *)v11;
    v10 = -1073740541;
    v8 = v13[0];
  }
  else
  {
    v10 = -1073741820;
  }
  if( (unsigned int)CallbackContext > 5 )
  {
    if( *((_QWORD *)ObjectContext + 3) )
      v3 = (__int64 *)v8;
    v16 = &v19;
    v18 = v3[1];
    v19 = *(unsigned __int16 *)v3;
    v21 = v13;
    v17 = 2i64;
    v20 = 0;
    LODWORD(v13[0]) = v10;
    v22 = 4i64;
    tlgWriteTransfer_EtwWriteTransfer(
      (__int64)&CallbackContext,
      (unsigned __int8 *)byte_1400233F5,
      &ActivityId,
      0i64,
      5u,
      v15);
  }
  return v10;
}

Referenced by:

VrpRegistryCallback