PopDirectedDripsDiagInsertErrorRecord

CHAR *__fastcall PopDirectedDripsDiagInsertErrorRecord(INT64 a1, INT64 a2, INT64 a3){
  CHAR **v3; 
  int v4; 
  CHAR *i; 
  CHAR *result; 
  v3 = (CHAR **)(a1 + 24);
  v4 = a3;
  for( i = *(CHAR **)(a1 + 24); i; i = *(CHAR **)i )
  {
    if( *((_QWORD *)i + 1) == a2 && *((_DWORD *)i + 4) == (_DWORD)a3 )
      break;
    v3 = (CHAR **)i;
  }
  result = *v3;
  if( !*v3 )
  {
    result = (CHAR *)ExAllocatePoolWithTag(PagedPool, 0x18ui64, 0x67696450ui64);
    *v3 = result;
    if( !result )
      return result;
    *(_OWORD *)result = 0i64;
    *((_QWORD *)result + 2) = 0i64;
    *((_QWORD *)*v3 + 1) = a2;
    *((_DWORD *)*v3 + 4) = v4;
    result = *v3;
  }
  ++*((_DWORD *)result + 5);
  return result;
}

Referenced by:

PopDirectedDripsDiagTraceBroadcastFailureDevice
PopDirectedDripsDiagTraceProblemDevice