WheapAddRecoveryPacketToErrorRecord
INT64 __fastcall WheapAddRecoveryPacketToErrorRecord(
struct EX_RUNDOWN_REF **a1,
INT64 *a2,
INT64 a3,
INT64 a4,
INT64 a5,
INT64 a6){
__int64 v6;
int v7;
unsigned int v8;
unsigned int v11;
INT64 *v12;
__int64 v13;
__int128 v14;
__int128 v15;
__int128 v16;
__int128 v17;
INT64 result[2];
__int128 v20;
__int128 v21;
__int128 v22;
__int128 v23;
v6 = *((unsigned __int16 *)a2 + 5);
v7 = a3;
v8 = *((_DWORD *)a1 + 6);
if( (unsigned int)v6 >= v8 )
return(unsigned int)-1073741789;
memset((INT64)result, 0i64);
v12 = a2 + 16;
v11 = 0;
DWORD2(v20) = *((_DWORD *)a1 + 7);
HIDWORD(v20) = *((_DWORD *)a1 + 2);
result[0] = 0x341454857i64;
LODWORD(result[1]) = 80;
*(_QWORD *)&v22 = 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(unsigned int)-1073741789;
}
else
{
v14 = v20;
*((_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) = *(_OWORD *)result;
v15 = v21;
*(_OWORD *)((char *)a2 + v13 + 16) = v14;
v16 = v22;
*(_OWORD *)((char *)a2 + v13 + 32) = v15;
v17 = v23;
*(_OWORD *)((char *)a2 + v13 + 48) = v16;
*(_OWORD *)((char *)a2 + v13 + 64) = v17;
++*((_WORD *)a2 + 5);
}
return v11;
}Referenced by:
WheapCreateRecordFromGenericErrorData