CmpSortedValueEnumStackAdvanceInternal

__int64 __fastcall CmpSortedValueEnumStackAdvanceInternal(void *a1){
  __int16 i; 
  __int64 EntryAtLayerHeight; 
  __int64 v5; 
  __int64 v6; 
  __int16 v7; 
  __int64 v8; 
  __int64 v9; 
  __int64 v10; 
  __int64 v11; 
  __int64 v12; 
  __int64 j; 

  if( *((_BYTE *)a1 + 10) )
  {
    if( !*(_QWORD *)a1 )
      return 2147483674i64;
    for( i = 0; i <= *((__int16 *)a1 + 4); ++i )
    {
      EntryAtLayerHeight = CmpSortedValueEnumStackGetEntryAtLayerHeight((__int64)a1, i);
      v5 = EntryAtLayerHeight;
      v6 = *(unsigned int *)(EntryAtLayerHeight + 28);
      if( (unsigned int)v6 < *(_DWORD *)(EntryAtLayerHeight + 24) )
      {
        v12 = *(_QWORD *)(*(_QWORD *)(EntryAtLayerHeight + 8) + 8 * v6);
        if( v12 == *(_QWORD *)a1 || !CmpSortedValueEnumStackValueCompareFunction(&v12, a1) )
          *(_DWORD *)(v5 + 28) = v6 + 1;
      }
    }
  }
  v7 = *((_WORD *)a1 + 4);
  v8 = 0i64;
  for( j = 0i64; v7 >= 0; --v7 )
  {
    v9 = CmpSortedValueEnumStackGetEntryAtLayerHeight((__int64)a1, v7);
    v10 = *(unsigned int *)(v9 + 28);
    if( (unsigned int)v10 < *(_DWORD *)(v9 + 24) )
    {
      v11 = *(_QWORD *)(*(_QWORD *)(v9 + 8) + 8 * v10);
      v12 = v11;
      if( !v8 || CmpSortedValueEnumStackValueCompareFunction(&j, &v12) > 0 )
      {
        v8 = v11;
        j = v11;
      }
    }
  }
  *(_QWORD *)a1 = v8;
  *((_BYTE *)a1 + 10) = 1;
  return v8 == 0 ? 0x8000001A : 0;
}

Referenced by:

CmpSortedValueEnumStackAdvance