EtwpCoverageEnsureStringBuffer

NTSTATUS __stdcall EtwpCoverageEnsureStringBuffer(INT64 a1){
  INT64 v1; 
  _QWORD *i; 
  VOID **PoolWithTag; 
  NTSTATUS v5; 
  _QWORD *v6; 
  _QWORD *v7; 

  v1 = a1 + 48;
  for( i = *(_QWORD **)(a1 + 48); i != (_QWORD *)v1; i = (_QWORD *)*i )
  {
    if( i[2] - i[3] >= 0x200ui64 )
    {
      *(_QWORD *)(a1 + 40) = i;
      return 0;
    }
  }
  PoolWithTag = ExAllocatePoolWithTag(1ui64, 0x2000ui64, 1450669125i64);
  v5 = 0;
  v6 = PoolWithTag;
  if( !PoolWithTag )
    return -1073741670;
  EtwpCoverageInitializeStringBuffer(PoolWithTag, 0x2000u);
  *(_QWORD *)(a1 + 40) = v6;
  v7 = *(_QWORD **)(v1 + 8);
  if( *v7 != v1 )
    __fastfail(3u);
  *v6 = v1;
  v6[1] = v7;
  *v7 = v6;
  *(_QWORD *)(v1 + 8) = v6;
  return v5;
}

Referenced by:

EtwpCoverageEnsureContext
EtwpCoverageRecord