CmpStartKeyNodeStack

INT64 __fastcall CmpStartKeyNodeStack(INT64 a1, INT16 a2){
  unsigned int v2; 
  __int64 v6; 
  VOID *TransientPoolWithTag; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 

  v2 = 0;
  if( a2 >= 2 )
  {
    v6 = (unsigned __int16)(a2 - 1);
    TransientPoolWithTag = CmpAllocateTransientPoolWithTag(1ui64, 32i64 * (__int16)v6);
    *(_QWORD *)(a1 + 72) = TransientPoolWithTag;
    if( !TransientPoolWithTag )
      return(unsigned int)-1073741670;
    if( (__int16)v6 > 0 )
    {
      v8 = 0i64;
      v9 = (unsigned __int16)v6;
      do
      {
        v10 = *(_QWORD *)(a1 + 72);
        *(_QWORD *)(v8 + v10) = 0i64;
        *(_QWORD *)(v8 + v10 + 12) = 0i64;
        *(_DWORD *)(v8 + v10 + 20) = 0;
        *(_DWORD *)(v8 + v10 + 8) = -1;
        *(_QWORD *)(v8 + v10 + 24) = 0i64;
        *(_DWORD *)(v8 + v10 + 24) = -1;
        *(_WORD *)(v8 + v10 + 28) = 0;
        v8 += 32i64;
        --v9;
      }
      while( v9 );
    }
  }
  *(_WORD *)a1 = a2;
  return v2;
}

Referenced by:

CmSaveKey
CmpKeyEnumStackStart
CmpStartKeyNodeStackFromKcbStack
CmpSubtreeEnumeratorStart