WheapAddRecoveryPacketToErrorRecord

NTSTATUS __stdcall WheapAddRecoveryPacketToErrorRecord(
        _EX_RUNDOWN_REF **a1,
        INT64 *a2,
        INT64 a3,
        INT64 a4,
        INT64 a5,
        INT64 a6){
  __int64 v6; 
  int v7; 
  unsigned int v8; 
  NTSTATUS v11; 
  INT64 *v12; 
  __int64 v13; 
  __int128 v14; 
  __int128 v15; 
  __int128 v16; 
  __int128 v17; 
  __int128 v19[5]; 

  v6 = *((unsigned __int16 *)a2 + 5);
  v7 = a3;
  v8 = *((_DWORD *)a1 + 6);
  if( (unsigned int)v6 >= v8 )
    return -1073741789;
  memset(v19, 0i64, sizeof(v19));
  v12 = a2 + 16;
  v11 = 0;
  DWORD2(v19[1]) = *((_DWORD *)a1 + 7);
  HIDWORD(v19[1]) = *((_DWORD *)a1 + 2);
  *(_QWORD *)&v19[0] = 0x341454857i64;
  DWORD2(v19[0]) = 80;
  *(_QWORD *)&v19[3] = a2;
  if( (_WORD)v6 )
  {
    v12 += 9 * v6;
    v13 = (unsigned int)(*((_DWORD *)v12 - 18) + *((_DWORD *)v12 - 17));
  }
  else
  {
    v13 = 72 * v8 + 128;
  }
  if( (unsigned int)(v7 - v13) < 0x50 )
    return -1073741789;
  v14 = v19[1];
  *((_WORD *)v12 + 4) = 768;
  *(_DWORD *)v12 = v13;
  *((_DWORD *)v12 + 1) = 80;
  *((_DWORD *)v12 + 12) = 0;
  *((GUID *)v12 + 1) = WHEA_ERROR_PACKET_SECTION_GUID;
  *(_OWORD *)((char *)a2 + v13) = v19[0];
  v15 = v19[2];
  *(_OWORD *)((char *)a2 + v13 + 16) = v14;
  v16 = v19[3];
  *(_OWORD *)((char *)a2 + v13 + 32) = v15;
  v17 = v19[4];
  *(_OWORD *)((char *)a2 + v13 + 48) = v16;
  *(_OWORD *)((char *)a2 + v13 + 64) = v17;
  ++*((_WORD *)a2 + 5);
  return v11;
}

Referenced by:

WheapCreateRecordFromGenericErrorData