At 0x01CDD7C4 you have a pointer to an array (size 61) of SnoGroup pointers. From that you can get the addresses of all type descriptors that are required for full SNO reading. Gives me 400 types.
Code:
private HashSet<int> GetTypeAddresses()
{
var set = new HashSet<int>();
foreach (var snoGroup in Engine.Current.SnoGroups.Where(a => a != null))
{
set.Add(snoGroup.x74_Ptr_DataType.Address);
AddNestedTypes(ref set, snoGroup.x74_Ptr_DataType);
}
return set;
}
private void AddNestedTypes(ref HashSet<int> set, ValueTypeDescriptor descriptor)
{
foreach (var field in descriptor.x0C_FieldDescriptors)
{
if (set.Add(field.x04_Type.Address))
AddNestedTypes(ref set, field.x04_Type);
if (set.Add(field.x1C_BaseType.Address))
AddNestedTypes(ref set, field.x1C_BaseType);
}
}