diff --git a/Il2CppInspector.CLI/Program.cs b/Il2CppInspector.CLI/Program.cs
index 6c07de0..4e6a368 100644
--- a/Il2CppInspector.CLI/Program.cs
+++ b/Il2CppInspector.CLI/Program.cs
@@ -6,10 +6,10 @@ using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
-using System.Text.RegularExpressions;
using CommandLine;
using Il2CppInspector.Reflection;
using Il2CppInspector.Outputs;
+using Il2CppInspector.Outputs.UnityHeaders;
namespace Il2CppInspector.CLI
{
@@ -71,6 +71,9 @@ namespace Il2CppInspector.CLI
[Option("unity-assemblies", Required = false, HelpText = "Path to Unity script assemblies (when using --project). Wildcards select last matching folder in alphanumeric order", Default = @"C:\Program Files\Unity\Hub\Editor\*\Editor\Data\Resources\PackageManager\ProjectTemplates\libcache\com.unity.template.3d-*\ScriptAssemblies")]
public string UnityAssembliesPath { get; set; }
+
+ [Option("unity-version", Required = false, HelpText = "Version of Unity used to create the input files, if known. Used to enhance IDA Python script output. If not specified, a close match will be inferred automatically.", Default = null)]
+ public UnityVersion UnityVersion { get; set; }
}
// Adapted from: https://stackoverflow.com/questions/16376191/measuring-code-execution-time
@@ -233,7 +236,9 @@ namespace Il2CppInspector.CLI
// IDA Python script output
using (var scriptDumperTimer = new Benchmark("IDA Python Script Dumper")) {
- var idaWriter = new IDAPythonScript(model);
+ var idaWriter = new IDAPythonScript(model) {
+ UnityVersion = options.UnityVersion,
+ };
idaWriter.WriteScriptToFile(options.PythonOutFile);
}
}
diff --git a/Il2CppInspector.Common/Il2CppInspector.csproj b/Il2CppInspector.Common/Il2CppInspector.csproj
index 94d6f28..22ac2e7 100644
--- a/Il2CppInspector.Common/Il2CppInspector.csproj
+++ b/Il2CppInspector.Common/Il2CppInspector.csproj
@@ -9,6 +9,14 @@
Il2CppInspector Shared Library
+
+
+
+
+
+
+
+
diff --git a/Il2CppInspector.Common/Outputs/IDAPythonScript.cs b/Il2CppInspector.Common/Outputs/IDAPythonScript.cs
index 64817b9..25ab9ca 100644
--- a/Il2CppInspector.Common/Outputs/IDAPythonScript.cs
+++ b/Il2CppInspector.Common/Outputs/IDAPythonScript.cs
@@ -8,6 +8,7 @@ using System.Linq;
using System.IO;
using System.Text;
using Il2CppInspector.Reflection;
+using Il2CppInspector.Outputs.UnityHeaders;
namespace Il2CppInspector.Outputs
{
@@ -15,16 +16,29 @@ namespace Il2CppInspector.Outputs
{
private readonly Il2CppModel model;
private StreamWriter writer;
+ public UnityVersion UnityVersion;
+ private UnityHeader header;
public IDAPythonScript(Il2CppModel model) => this.model = model;
public void WriteScriptToFile(string outputFile) {
+ if (UnityVersion == null) {
+ header = UnityHeader.GuessHeadersForModel(model)[0];
+ UnityVersion = header.MinVersion;
+ } else {
+ header = UnityHeader.GetHeaderForVersion(UnityVersion);
+ if (header.MetadataVersion != model.Package.BinaryImage.Version) {
+ /* this can only happen in the CLI frontend with a manually-supplied version number */
+ Console.WriteLine($"Warning: selected version {UnityVersion} (metadata version {header.MetadataVersion}) does not match metadata version {model.Package.BinaryImage.Version}.");
+ }
+ }
+
using var fs = new FileStream(outputFile, FileMode.Create);
writer = new StreamWriter(fs, Encoding.UTF8);
writeLine("# Generated script file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty");
+ writeLine("# Target Unity version: " + header);
writeLine("print('Generated script file by Il2CppInspector - http://www.djkaty.com - https://github.com/djkaty')");
-
writeSectionHeader("Preamble");
writePreamble();
@@ -67,6 +81,21 @@ def MakeFunction(start, end):
ida_funcs.del_func(start)
ida_funcs.add_func(start, end)"
);
+
+ // Compatibility (in a separate decl block in case these are already defined)
+ writeDecls(@"
+typedef unsigned __int8 uint8_t;
+typedef unsigned __int16 uint16_t;
+typedef unsigned __int32 uint32_t;
+typedef unsigned __int64 uint64_t;
+typedef __int8 int8_t;
+typedef __int16 int16_t;
+typedef __int32 int32_t;
+typedef __int64 int64_t;
+");
+
+ var prefix = (model.Package.BinaryImage.Bits == 32) ? "#define IS_32BIT\n" : "";
+ writeDecls(prefix + header.GetHeaderText());
}
private void writeMethods() {
@@ -158,12 +187,20 @@ def MakeFunction(start, end):
private void writeSectionHeader(string sectionName) {
writeLine("");
- writeLine($"# SECTION: {sectionName}");
+ writeLine($"# SECTION: {sectionName}");
writeLine($"# -----------------------------");
writeLine($"print('Processing {sectionName}')");
writeLine("");
}
+ private void writeDecls(string decls) {
+ var lines = decls.Replace("\r", "").Split('\n');
+ var cleanLines = lines.Select((s) => s.ToEscapedString());
+ var declString = string.Join('\n', cleanLines);
+ if (declString != "")
+ writeLine("idc.parse_decls('''" + declString + "''')");
+ }
+
private void writeName(ulong address, string name) {
writeLine($"SetName({address.ToAddressString()}, r'{name.ToEscapedString()}')");
}
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/16-5.3.0-5.3.1.h b/Il2CppInspector.Common/Outputs/UnityHeaders/16-5.3.0-5.3.1.h
new file mode 100644
index 0000000..01454a5
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/16-5.3.0-5.3.1.h
@@ -0,0 +1,818 @@
+typedef void (*methodPointerType)();
+typedef int32_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+static inline bool IsGenericMethodIndex (EncodedMethodIndex index)
+{
+ return (index & 0x80000000U) != 0;
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x7FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex delegateWrapperFromManagedToNativeIndex;
+ int32_t marshalingFunctionsIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex delegateWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct PInvokeArguments
+{
+ const char* moduleName;
+ const char* entryPoint;
+ Il2CppCallConvention callingConvention;
+ Il2CppCharSet charSet;
+ int parameterSize;
+ bool isNoMangle;
+} PInvokeArguments;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ methodPointerType method;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ methodPointerType marshal_to_native_func;
+ methodPointerType marshal_from_native_func;
+ methodPointerType marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const methodPointerType* methodPointers;
+ uint32_t delegateWrappersFromNativeToManagedCount;
+ const methodPointerType** delegateWrappersFromNativeToManaged;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const methodPointerType* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const methodPointerType* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ int32_t methodReferencesCount;
+ const EncodedMethodIndex* methodReferences;
+ FieldIndex fieldOffsetsCount;
+ const int32_t* fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes* typeDefinitionsSizes;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/19-5.3.2.h b/Il2CppInspector.Common/Outputs/UnityHeaders/19-5.3.2.h
new file mode 100644
index 0000000..8a240bd
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/19-5.3.2.h
@@ -0,0 +1,866 @@
+typedef void (*methodPointerType)();
+typedef int32_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex delegateWrapperFromManagedToNativeIndex;
+ int32_t marshalingFunctionsIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex delegateWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct PInvokeArguments
+{
+ const char* moduleName;
+ const char* entryPoint;
+ Il2CppCallConvention callingConvention;
+ Il2CppCharSet charSet;
+ int parameterSize;
+ bool isNoMangle;
+} PInvokeArguments;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*, CustomAttributeTypeCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ methodPointerType method;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ methodPointerType marshal_to_native_func;
+ methodPointerType marshal_from_native_func;
+ methodPointerType marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const methodPointerType* methodPointers;
+ uint32_t delegateWrappersFromNativeToManagedCount;
+ const methodPointerType** delegateWrappersFromNativeToManaged;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const methodPointerType* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const methodPointerType* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t* fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes* typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/20-5.3.3-5.3.4.h b/Il2CppInspector.Common/Outputs/UnityHeaders/20-5.3.3-5.3.4.h
new file mode 100644
index 0000000..e241fbc
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/20-5.3.3-5.3.4.h
@@ -0,0 +1,873 @@
+typedef void (*methodPointerType)();
+typedef int32_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex delegateWrapperFromManagedToNativeIndex;
+ int32_t marshalingFunctionsIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex delegateWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct PInvokeArguments
+{
+ const char* moduleName;
+ const char* entryPoint;
+ Il2CppCallConvention callingConvention;
+ Il2CppCharSet charSet;
+ int parameterSize;
+ bool isNoMangle;
+} PInvokeArguments;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*, CustomAttributeTypeCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ methodPointerType method;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ methodPointerType marshal_to_native_func;
+ methodPointerType marshal_from_native_func;
+ methodPointerType marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const methodPointerType* methodPointers;
+ uint32_t delegateWrappersFromNativeToManagedCount;
+ const methodPointerType** delegateWrappersFromNativeToManaged;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const methodPointerType* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const methodPointerType* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t* fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes* typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.5.h b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.5.h
new file mode 100644
index 0000000..a8732fe
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.5.h
@@ -0,0 +1,1002 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const char* (*Il2CppSetFindPlugInCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex delegateWrapperFromManagedToNativeIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex delegateWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct PInvokeArguments
+{
+ const char* moduleName;
+ const char* entryPoint;
+ Il2CppCallConvention callingConvention;
+ Il2CppCharSet charSet;
+ int parameterSize;
+ bool isNoMangle;
+} PInvokeArguments;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer method;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ const MethodInfo** vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t delegateWrappersFromNativeToManagedCount;
+ const Il2CppMethodPointer** delegateWrappersFromNativeToManaged;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t* fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes* typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.6.h b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.6.h
new file mode 100644
index 0000000..4854162
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.6.h
@@ -0,0 +1,1063 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t* fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes* typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.7-5.3.8.h b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.7-5.3.8.h
new file mode 100644
index 0000000..dc1c20c
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.3.7-5.3.8.h
@@ -0,0 +1,1063 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.0.h b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.0.h
new file mode 100644
index 0000000..4854162
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.0.h
@@ -0,0 +1,1063 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t* fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes* typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.1-5.4.3.h b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.1-5.4.3.h
new file mode 100644
index 0000000..dc1c20c
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.1-5.4.3.h
@@ -0,0 +1,1063 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.4-5.4.6.h b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.4-5.4.6.h
new file mode 100644
index 0000000..a0a8e03
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/21-5.4.4-5.4.6.h
@@ -0,0 +1,1065 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ VirtualInvokeData* vtable;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppObject* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.0.h b/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.0.h
new file mode 100644
index 0000000..6ac1c01
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.0.h
@@ -0,0 +1,1080 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.1-5.5.2.h b/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.1-5.5.2.h
new file mode 100644
index 0000000..d2697be
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.1-5.5.2.h
@@ -0,0 +1,1082 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.3-5.5.6.h b/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.3-5.5.6.h
new file mode 100644
index 0000000..451b430
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/22-5.5.3-5.5.6.h
@@ -0,0 +1,1086 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t GuidIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const GuidIndex kGuidIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType(EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex(EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ int32_t marshalingFunctionsIndex;
+ int32_t ccwFunctionIndex;
+ GuidIndex guidIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppMarshalingFunctions
+{
+ Il2CppMethodPointer marshal_to_native_func;
+ Il2CppMethodPointer marshal_from_native_func;
+ Il2CppMethodPointer marshal_cleanup_func;
+} Il2CppMarshalingFunctions;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t delegateWrappersFromManagedToNativeCount;
+ const Il2CppMethodPointer* delegateWrappersFromManagedToNative;
+ uint32_t marshalingFunctionsCount;
+ const Il2CppMarshalingFunctions* marshalingFunctions;
+ uint32_t ccwMarshalingFunctionsCount;
+ const Il2CppMethodPointer* ccwMarshalingFunctions;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ GuidIndex guidCount;
+ const Il2CppGuid** guids;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/23-5.6.0-5.6.7.h b/Il2CppInspector.Common/Outputs/UnityHeaders/23-5.6.0-5.6.7.h
new file mode 100644
index 0000000..7be4e55
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/23-5.6.0-5.6.7.h
@@ -0,0 +1,1094 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct {
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST= 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType (EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex (EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum {
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct {
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIManagedObjectHolder* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.1.0-2017.1.2.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.1.0-2017.1.2.h
new file mode 100644
index 0000000..d59a49a
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.1.0-2017.1.2.h
@@ -0,0 +1,1108 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType(EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex(EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.1.3-2017.1.5.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.1.3-2017.1.5.h
new file mode 100644
index 0000000..5978dfd
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.1.3-2017.1.5.h
@@ -0,0 +1,1109 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef int32_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType(EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex(EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char* nameNoExt;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.2.0.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.2.0.h
new file mode 100644
index 0000000..71646a8
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.2.0.h
@@ -0,0 +1,1108 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef uintptr_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType(EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex(EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.2.1-2017.4.38.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.2.1-2017.4.38.h
new file mode 100644
index 0000000..2d20946
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2017.2.1-2017.4.38.h
@@ -0,0 +1,1109 @@
+typedef uint32_t Il2CppMethodSlot;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef enum Il2CppProfileFlags
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19
+} Il2CppProfileFlags;
+typedef enum Il2CppGCEvent
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum Il2CppStat
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum StackFrameType
+{
+ FRAME_TYPE_MANAGED = 0,
+ FRAME_TYPE_DEBUGGER_INVOKE = 1,
+ FRAME_TYPE_MANAGED_TO_NATIVE = 2,
+ FRAME_TYPE_SENTINEL = 3
+} StackFrameType;
+typedef enum Il2CppRuntimeUnhandledExceptionPolicy
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef uintptr_t il2cpp_array_size_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+static inline Il2CppMetadataUsage GetEncodedIndexType(EncodedMethodIndex index)
+{
+ return (Il2CppMetadataUsage)((index & 0xE0000000) >> 29);
+}
+static inline uint32_t GetDecodedMethodIndex(EncodedMethodIndex index)
+{
+ return index & 0x1FFFFFFFU;
+}
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct Il2CppGenericMethodIndices
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyName
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t publicKeyToken[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssembly
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+extern bool g_il2cpp_is_fully_initialized;
+typedef struct
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *declaring_type;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ const Il2CppType* byval_arg;
+ const Il2CppType* this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+} Il2CppDomain;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable* nameToClassHashTable;
+ uint32_t token;
+} Il2CppImage;
+typedef struct Il2CppCodeGenOptions
+{
+ bool enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ bool enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24-2018.1.0-2018.1.9.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2018.1.0-2018.1.9.h
new file mode 100644
index 0000000..e299014
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2018.1.0-2018.1.9.h
@@ -0,0 +1,1180 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef enum
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19,
+ IL2CPP_PROFILE_FILEIO = 1 << 20
+} Il2CppProfileFlags;
+typedef enum
+{
+ IL2CPP_PROFILE_FILEIO_WRITE = 0,
+ IL2CPP_PROFILE_FILEIO_READ
+} Il2CppProfileFileIOKind;
+typedef enum
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef uintptr_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const uint32_t kInvalidIl2CppMethodSlot = 65535;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyNameDefinition
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyNameDefinition;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssemblyDefinition
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyNameDefinition aname;
+} Il2CppAssemblyDefinition;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum Il2CppCallConvention
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+typedef struct Il2CppDefaults
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef enum MethodVariableKind
+{
+ kMethodVariableKind_This,
+ kMethodVariableKind_Parameter,
+ kMethodVariableKind_LocalVariable
+} MethodVariableKind;
+typedef enum SequencePointKind
+{
+ kSequencePointKind_Normal,
+ kSequencePointKind_StepOut
+} SequencePointKind;
+typedef struct Il2CppMethodExecutionContextInfo
+{
+ const Il2CppType** m_type;
+ const char* m_name;
+ MethodVariableKind m_variableKind;
+ int m_start;
+ int m_end;
+} Il2CppMethodExecutionContextInfo;
+typedef struct Il2CppMethodScope
+{
+ int startOffset;
+ int endOffset;
+} Il2CppMethodScope;
+typedef struct Il2CppMethodHeaderInfo
+{
+ int m_codeSize;
+ int m_numScopes;
+ Il2CppMethodScope *m_scopes;
+} Il2CppMethodHeaderInfo;
+typedef struct Hash16
+{
+ uint8_t m_hash[16];
+} Hash16;
+typedef struct Il2CppSequencePoint
+{
+ const Il2CppMethodExecutionContextInfo* executionContextInfos;
+ uint32_t executionContextInfoCount;
+ const Il2CppMethodHeaderInfo* header;
+ const MethodInfo* method;
+ const Il2CppClass* catchType;
+ const char* sourceFile;
+ Hash16 sourceFileHash;
+ int32_t lineStart, lineEnd;
+ int32_t columnStart, columnEnd;
+ int32_t ilOffset;
+ SequencePointKind kind;
+ uint8_t isActive;
+ int id;
+ uint8_t tryDepth;
+} Il2CppSequencePoint;
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *klass;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+ uint8_t wrapper_type : 1;
+ uint8_t is_marshaled_from_native : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+ void* agent_info;
+} Il2CppDomain;
+typedef struct Il2CppAssemblyName
+{
+ const char* name;
+ const char* culture;
+ const char* hash_value;
+ const char* public_key;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ Il2CppAssembly* assembly;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable;
+ uint32_t token;
+ uint8_t dynamic;
+} Il2CppImage;
+typedef struct Il2CppAssembly
+{
+ Il2CppImage* image;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppCodeGenOptions
+{
+ uint8_t enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ uint8_t enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24-2018.2.0-2018.2.21.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2018.2.0-2018.2.21.h
new file mode 100644
index 0000000..8f8f9dd
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24-2018.2.0-2018.2.21.h
@@ -0,0 +1,1215 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef enum
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19,
+ IL2CPP_PROFILE_FILEIO = 1 << 20
+} Il2CppProfileFlags;
+typedef enum
+{
+ IL2CPP_PROFILE_FILEIO_WRITE = 0,
+ IL2CPP_PROFILE_FILEIO_READ
+} Il2CppProfileFileIOKind;
+typedef enum
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef uintptr_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const uint32_t kInvalidIl2CppMethodSlot = 65535;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ CustomAttributeIndex customAttributeIndex;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyNameDefinition
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyNameDefinition;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssemblyDefinition
+{
+ ImageIndex imageIndex;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyNameDefinition aname;
+} Il2CppAssemblyDefinition;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum Il2CppCallConvention
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+typedef struct Il2CppDefaults
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+ Il2CppClass* system_guid_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef struct CustomAttributeTypeCache
+{
+ int count;
+ Il2CppClass** attributeTypes;
+} CustomAttributeTypeCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ CustomAttributeIndex customAttributeIndex;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef enum MethodVariableKind
+{
+ kMethodVariableKind_This,
+ kMethodVariableKind_Parameter,
+ kMethodVariableKind_LocalVariable
+} MethodVariableKind;
+typedef enum SequencePointKind
+{
+ kSequencePointKind_Normal,
+ kSequencePointKind_StepOut
+} SequencePointKind;
+typedef struct Il2CppMethodExecutionContextInfo
+{
+ TypeIndex typeIndex;
+ int32_t nameIndex;
+ MethodVariableKind variableKind;
+ int32_t startOffset;
+ int32_t endOffset;
+} Il2CppMethodExecutionContextInfo;
+typedef struct Il2CppMethodExecutionContextInfoIndex
+{
+ int8_t tableIndex;
+ int32_t startIndex;
+ int32_t count;
+} Il2CppMethodExecutionContextInfoIndex;
+typedef struct Il2CppMethodScope
+{
+ int32_t startOffset;
+ int32_t endOffset;
+} Il2CppMethodScope;
+typedef struct Il2CppMethodHeaderInfo
+{
+ int32_t codeSize;
+ int32_t startScope;
+ int32_t numScopes;
+} Il2CppMethodHeaderInfo;
+typedef struct Il2CppSequencePointIndex
+{
+ uint8_t tableIndex;
+ int32_t index;
+} Il2CppSequencePointIndex;
+typedef struct Il2CppSequencePointSourceFile
+{
+ const char *file;
+ uint8_t hash[16];
+} Il2CppSequencePointSourceFile;
+typedef struct Il2CppTypeSourceFilePair
+{
+ TypeIndex klassIndex;
+ int32_t sourceFileIndex;
+} Il2CppTypeSourceFilePair;
+typedef struct Il2CppSequencePoint
+{
+ MethodIndex methodIndex;
+ EncodedMethodIndex methodMetadataIndex;
+ const MethodInfo *method_;
+ TypeIndex catchTypeIndex;
+ int32_t sourceFileIndex;
+ int32_t lineStart, lineEnd;
+ int32_t columnStart, columnEnd;
+ int32_t ilOffset;
+ SequencePointKind kind;
+ uint8_t isActive;
+ int32_t id;
+ uint8_t tryDepth;
+} Il2CppSequencePoint;
+typedef struct Il2CppDebuggerMetadataRegistration
+{
+ Il2CppMethodExecutionContextInfo** methodExecutionContextInfos;
+ Il2CppMethodExecutionContextInfoIndex* methodExecutionContextInfoIndexes;
+ Il2CppMethodScope* methodScopes;
+ Il2CppMethodHeaderInfo* methodHeaderInfos;
+ Il2CppSequencePointSourceFile* sequencePointSourceFiles;
+ int32_t numSequencePoints;
+ Il2CppSequencePointIndex* sequencePointIndexes;
+ Il2CppSequencePoint** sequencePoints;
+ int32_t numTypeSourceFileEntries;
+ Il2CppTypeSourceFilePair* typeSourceFiles;
+ const char** methodExecutionContextInfoStrings;
+} Il2CppDebuggerMetadataRegistration;
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *klass;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+ uint8_t wrapper_type : 1;
+ uint8_t is_marshaled_from_native : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ CustomAttributeIndex customAttributeIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+ void* agent_info;
+} Il2CppDomain;
+typedef struct Il2CppAssemblyName
+{
+ const char* name;
+ const char* culture;
+ const char* hash_value;
+ const char* public_key;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ Il2CppAssembly* assembly;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable;
+ uint32_t token;
+ uint8_t dynamic;
+} Il2CppImage;
+typedef struct Il2CppAssembly
+{
+ Il2CppImage* image;
+ CustomAttributeIndex customAttributeIndex;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppCodeGenOptions
+{
+ uint8_t enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ uint8_t enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24.1-2018.3.0-2018.3.7.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24.1-2018.3.0-2018.3.7.h
new file mode 100644
index 0000000..8660174
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24.1-2018.3.0-2018.3.7.h
@@ -0,0 +1,1206 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef struct Il2CppCustomAttrInfo Il2CppCustomAttrInfo;
+typedef enum
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19,
+ IL2CPP_PROFILE_FILEIO = 1 << 20
+} Il2CppProfileFlags;
+typedef enum
+{
+ IL2CPP_PROFILE_FILEIO_WRITE = 0,
+ IL2CPP_PROFILE_FILEIO_READ
+} Il2CppProfileFileIOKind;
+typedef enum
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count);
+typedef void (*Il2CppProfileThreadFunc) (Il2CppProfiler *prof, unsigned long tid);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef uintptr_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const uint32_t kInvalidIl2CppMethodSlot = 65535;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const CustomAttributeIndex kCustomAttributeIndexInvalid = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyNameDefinition
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyNameDefinition;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssemblyDefinition
+{
+ ImageIndex imageIndex;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyNameDefinition aname;
+} Il2CppAssemblyDefinition;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ uint32_t token;
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum Il2CppCallConvention
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE,
+ CHARSET_NOT_SPECIFIED
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+typedef struct Il2CppDefaults
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *attribute_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ireferencearray_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+ Il2CppClass* system_guid_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef enum MethodVariableKind
+{
+ kMethodVariableKind_This,
+ kMethodVariableKind_Parameter,
+ kMethodVariableKind_LocalVariable
+} MethodVariableKind;
+typedef enum SequencePointKind
+{
+ kSequencePointKind_Normal,
+ kSequencePointKind_StepOut
+} SequencePointKind;
+typedef struct Il2CppMethodExecutionContextInfo
+{
+ TypeIndex typeIndex;
+ int32_t nameIndex;
+ int32_t scopeIndex;
+} Il2CppMethodExecutionContextInfo;
+typedef struct Il2CppMethodExecutionContextInfoIndex
+{
+ int8_t tableIndex;
+ int32_t startIndex;
+ int32_t count;
+} Il2CppMethodExecutionContextInfoIndex;
+typedef struct Il2CppMethodScope
+{
+ int32_t startOffset;
+ int32_t endOffset;
+} Il2CppMethodScope;
+typedef struct Il2CppMethodHeaderInfo
+{
+ int32_t codeSize;
+ int32_t startScope;
+ int32_t numScopes;
+} Il2CppMethodHeaderInfo;
+typedef struct Il2CppSequencePointIndex
+{
+ uint8_t tableIndex;
+ int32_t index;
+} Il2CppSequencePointIndex;
+typedef struct Il2CppSequencePointSourceFile
+{
+ const char *file;
+ uint8_t hash[16];
+} Il2CppSequencePointSourceFile;
+typedef struct Il2CppTypeSourceFilePair
+{
+ TypeIndex klassIndex;
+ int32_t sourceFileIndex;
+} Il2CppTypeSourceFilePair;
+typedef struct Il2CppSequencePoint
+{
+ MethodIndex methodDefinitionIndex;
+ TypeIndex catchTypeIndex;
+ int32_t sourceFileIndex;
+ int32_t lineStart, lineEnd;
+ int32_t columnStart, columnEnd;
+ int32_t ilOffset;
+ SequencePointKind kind;
+ uint8_t isActive;
+ int32_t id;
+ uint8_t tryDepth;
+} Il2CppSequencePoint;
+typedef struct Il2CppDebuggerMetadataRegistration
+{
+ Il2CppMethodExecutionContextInfo** methodExecutionContextInfos;
+ Il2CppMethodExecutionContextInfoIndex* methodExecutionContextInfoIndexes;
+ Il2CppMethodScope* methodScopes;
+ Il2CppMethodHeaderInfo* methodHeaderInfos;
+ Il2CppSequencePointSourceFile* sequencePointSourceFiles;
+ int32_t numSequencePoints;
+ Il2CppSequencePointIndex* sequencePointIndexes;
+ Il2CppSequencePoint** sequencePoints;
+ int32_t numTypeSourceFileEntries;
+ Il2CppTypeSourceFilePair* typeSourceFiles;
+ const char** methodExecutionContextInfoStrings;
+} Il2CppDebuggerMetadataRegistration;
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *klass;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+ uint8_t wrapper_type : 1;
+ uint8_t is_marshaled_from_native : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+ void* agent_info;
+} Il2CppDomain;
+typedef struct Il2CppAssemblyName
+{
+ const char* name;
+ const char* culture;
+ const char* hash_value;
+ const char* public_key;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ Il2CppAssembly* assembly;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable;
+ uint32_t token;
+ uint8_t dynamic;
+} Il2CppImage;
+typedef struct Il2CppAssembly
+{
+ Il2CppImage* image;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppCodeGenOptions
+{
+ uint8_t enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ uint8_t enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24.1-2018.3.8-2018.4.20.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24.1-2018.3.8-2018.4.20.h
new file mode 100644
index 0000000..8073b31
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24.1-2018.3.8-2018.4.20.h
@@ -0,0 +1,1208 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef struct Il2CppCustomAttrInfo Il2CppCustomAttrInfo;
+typedef enum
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19,
+ IL2CPP_PROFILE_FILEIO = 1 << 20
+} Il2CppProfileFlags;
+typedef enum
+{
+ IL2CPP_PROFILE_FILEIO_WRITE = 0,
+ IL2CPP_PROFILE_FILEIO_READ
+} Il2CppProfileFileIOKind;
+typedef enum
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count);
+typedef void (*Il2CppProfileThreadFunc) (Il2CppProfiler *prof, unsigned long tid);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef uintptr_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+const uint32_t kInvalidIl2CppMethodSlot = 65535;
+const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+const TypeIndex kTypeIndexInvalid = -1;
+const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+const CustomAttributeIndex kCustomAttributeIndexInvalid = -1;
+const EventIndex kEventIndexInvalid = -1;
+const FieldIndex kFieldIndexInvalid = -1;
+const MethodIndex kMethodIndexInvalid = -1;
+const PropertyIndex kPropertyIndexInvalid = -1;
+const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+const RGCTXIndex kRGCTXIndexInvalid = -1;
+const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ GenericContainerIndex genericContainerIndex;
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+ MethodIndex reversePInvokeWrapperIndex;
+ RGCTXIndex rgctxStartIndex;
+ int32_t rgctxCount;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyNameDefinition
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyNameDefinition;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssemblyDefinition
+{
+ ImageIndex imageIndex;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyNameDefinition aname;
+} Il2CppAssemblyDefinition;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ uint32_t token;
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t rgctxEntriesOffset;
+ int32_t rgctxEntriesCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum Il2CppCallConvention
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE,
+ CHARSET_NOT_SPECIFIED
+} Il2CppCharSet;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+typedef struct Il2CppDefaults
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *attribute_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ireferencearray_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+ Il2CppClass* system_guid_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+const int THREAD_STATIC_FIELD_OFFSET = -1;
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef enum MethodVariableKind
+{
+ kMethodVariableKind_This,
+ kMethodVariableKind_Parameter,
+ kMethodVariableKind_LocalVariable
+} MethodVariableKind;
+typedef enum SequencePointKind
+{
+ kSequencePointKind_Normal,
+ kSequencePointKind_StepOut
+} SequencePointKind;
+typedef struct Il2CppMethodExecutionContextInfo
+{
+ TypeIndex typeIndex;
+ int32_t nameIndex;
+ int32_t scopeIndex;
+} Il2CppMethodExecutionContextInfo;
+typedef struct Il2CppMethodExecutionContextInfoIndex
+{
+ int8_t tableIndex;
+ int32_t startIndex;
+ int32_t count;
+} Il2CppMethodExecutionContextInfoIndex;
+typedef struct Il2CppMethodScope
+{
+ int32_t startOffset;
+ int32_t endOffset;
+} Il2CppMethodScope;
+typedef struct Il2CppMethodHeaderInfo
+{
+ int32_t codeSize;
+ int32_t startScope;
+ int32_t numScopes;
+} Il2CppMethodHeaderInfo;
+typedef struct Il2CppSequencePointIndex
+{
+ uint8_t tableIndex;
+ int32_t index;
+} Il2CppSequencePointIndex;
+typedef struct Il2CppSequencePointSourceFile
+{
+ const char *file;
+ uint8_t hash[16];
+} Il2CppSequencePointSourceFile;
+typedef struct Il2CppTypeSourceFilePair
+{
+ TypeIndex klassIndex;
+ int32_t sourceFileIndex;
+} Il2CppTypeSourceFilePair;
+typedef struct Il2CppSequencePoint
+{
+ MethodIndex methodDefinitionIndex;
+ TypeIndex catchTypeIndex;
+ int32_t sourceFileIndex;
+ int32_t lineStart, lineEnd;
+ int32_t columnStart, columnEnd;
+ int32_t ilOffset;
+ SequencePointKind kind;
+ uint8_t isActive;
+ int32_t id;
+ uint8_t tryDepth;
+} Il2CppSequencePoint;
+typedef struct Il2CppDebuggerMetadataRegistration
+{
+ Il2CppMethodExecutionContextInfo** methodExecutionContextInfos;
+ Il2CppMethodExecutionContextInfoIndex* methodExecutionContextInfoIndexes;
+ Il2CppMethodScope* methodScopes;
+ Il2CppMethodHeaderInfo* methodHeaderInfos;
+ Il2CppSequencePointSourceFile* sequencePointSourceFiles;
+ int32_t numSequencePoints;
+ Il2CppSequencePointIndex* sequencePointIndexes;
+ Il2CppSequencePoint** sequencePoints;
+ int32_t numTypeSourceFileEntries;
+ Il2CppTypeSourceFilePair* typeSourceFiles;
+ const char** methodExecutionContextInfoStrings;
+} Il2CppDebuggerMetadataRegistration;
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *klass;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+ uint8_t wrapper_type : 1;
+ uint8_t is_marshaled_from_native : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread__padding;
+ uint32_t cctor_thread;
+ uint32_t cctor_thread__hi;
+#else
+ __attribute__((aligned(8))) uint64_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+ void* agent_info;
+} Il2CppDomain;
+typedef struct Il2CppAssemblyName
+{
+ const char* name;
+ const char* culture;
+ const char* hash_value;
+ const char* public_key;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ Il2CppAssembly* assembly;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable;
+ uint32_t token;
+ uint8_t dynamic;
+} Il2CppImage;
+typedef struct Il2CppAssembly
+{
+ Il2CppImage* image;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppCodeGenOptions
+{
+ uint8_t enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t methodPointersCount;
+ const Il2CppMethodPointer* methodPointers;
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ uint8_t enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24.2-2019.1.0-2019.2.21.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24.2-2019.1.0-2019.2.21.h
new file mode 100644
index 0000000..35628dc
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24.2-2019.1.0-2019.2.21.h
@@ -0,0 +1,1452 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef struct Il2CppCustomAttrInfo Il2CppCustomAttrInfo;
+typedef enum
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19,
+ IL2CPP_PROFILE_FILEIO = 1 << 20
+} Il2CppProfileFlags;
+typedef enum
+{
+ IL2CPP_PROFILE_FILEIO_WRITE = 0,
+ IL2CPP_PROFILE_FILEIO_READ
+} Il2CppProfileFileIOKind;
+typedef enum
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count);
+typedef void (*Il2CppProfileThreadFunc) (Il2CppProfiler *prof, unsigned long tid);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef void (*Il2CppMethodPointer)();
+typedef uintptr_t il2cpp_array_size_t;
+typedef uint32_t Il2CppMethodSlot;
+static const uint32_t kInvalidIl2CppMethodSlot = 65535;
+static const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef enum
+{
+ IL2CPP_TOKEN_MODULE = 0x00000000,
+ IL2CPP_TOKEN_TYPE_REF = 0x01000000,
+ IL2CPP_TOKEN_TYPE_DEF = 0x02000000,
+ IL2CPP_TOKEN_FIELD_DEF = 0x04000000,
+ IL2CPP_TOKEN_METHOD_DEF = 0x06000000,
+ IL2CPP_TOKEN_PARAM_DEF = 0x08000000,
+ IL2CPP_TOKEN_INTERFACE_IMPL = 0x09000000,
+ IL2CPP_TOKEN_MEMBER_REF = 0x0a000000,
+ IL2CPP_TOKEN_CUSTOM_ATTRIBUTE = 0x0c000000,
+ IL2CPP_TOKEN_PERMISSION = 0x0e000000,
+ IL2CPP_TOKEN_SIGNATURE = 0x11000000,
+ IL2CPP_TOKEN_EVENT = 0x14000000,
+ IL2CPP_TOKEN_PROPERTY = 0x17000000,
+ IL2CPP_TOKEN_MODULE_REF = 0x1a000000,
+ IL2CPP_TOKEN_TYPE_SPEC = 0x1b000000,
+ IL2CPP_TOKEN_ASSEMBLY = 0x20000000,
+ IL2CPP_TOKEN_ASSEMBLY_REF = 0x23000000,
+ IL2CPP_TOKEN_FILE = 0x26000000,
+ IL2CPP_TOKEN_EXPORTED_TYPE = 0x27000000,
+ IL2CPP_TOKEN_MANIFEST_RESOURCE = 0x28000000,
+ IL2CPP_TOKEN_GENERIC_PARAM = 0x2a000000,
+ IL2CPP_TOKEN_METHOD_SPEC = 0x2b000000,
+} Il2CppTokenType;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+static const TypeIndex kTypeIndexInvalid = -1;
+static const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+static const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+static const CustomAttributeIndex kCustomAttributeIndexInvalid = -1;
+static const EventIndex kEventIndexInvalid = -1;
+static const FieldIndex kFieldIndexInvalid = -1;
+static const MethodIndex kMethodIndexInvalid = -1;
+static const PropertyIndex kPropertyIndexInvalid = -1;
+static const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+static const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+static const RGCTXIndex kRGCTXIndexInvalid = -1;
+static const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+static const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+static const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyNameDefinition
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyNameDefinition;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssemblyDefinition
+{
+ ImageIndex imageIndex;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyNameDefinition aname;
+} Il2CppAssemblyDefinition;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ uint32_t token;
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum Il2CppCallConvention
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE,
+ CHARSET_NOT_SPECIFIED
+} Il2CppCharSet;
+typedef struct Il2CppHString__
+{
+ int unused;
+} Il2CppHString__;
+typedef Il2CppHString__* Il2CppHString;
+typedef struct Il2CppHStringHeader
+{
+ union
+ {
+ void* Reserved1;
+ char Reserved2[24];
+ } Reserved;
+} Il2CppHStringHeader;
+typedef struct Il2CppGuid
+{
+ uint32_t data1;
+ uint16_t data2;
+ uint16_t data3;
+ uint8_t data4[8];
+} Il2CppGuid;
+typedef struct Il2CppSafeArrayBound
+{
+ uint32_t element_count;
+ int32_t lower_bound;
+} Il2CppSafeArrayBound;
+typedef struct Il2CppSafeArray
+{
+ uint16_t dimension_count;
+ uint16_t features;
+ uint32_t element_size;
+ uint32_t lock_count;
+ void* data;
+ Il2CppSafeArrayBound bounds[1];
+} Il2CppSafeArray;
+typedef struct Il2CppWin32Decimal
+{
+ uint16_t reserved;
+ union
+ {
+ struct
+ {
+ uint8_t scale;
+ uint8_t sign;
+ } s;
+ uint16_t signscale;
+ } u;
+ uint32_t hi32;
+ union
+ {
+ struct
+ {
+ uint32_t lo32;
+ uint32_t mid32;
+ } s2;
+ uint64_t lo64;
+ } u2;
+} Il2CppWin32Decimal;
+typedef int16_t IL2CPP_VARIANT_BOOL;
+typedef enum Il2CppVarType
+{
+ IL2CPP_VT_EMPTY = 0,
+ IL2CPP_VT_NULL = 1,
+ IL2CPP_VT_I2 = 2,
+ IL2CPP_VT_I4 = 3,
+ IL2CPP_VT_R4 = 4,
+ IL2CPP_VT_R8 = 5,
+ IL2CPP_VT_CY = 6,
+ IL2CPP_VT_DATE = 7,
+ IL2CPP_VT_BSTR = 8,
+ IL2CPP_VT_DISPATCH = 9,
+ IL2CPP_VT_ERROR = 10,
+ IL2CPP_VT_BOOL = 11,
+ IL2CPP_VT_VARIANT = 12,
+ IL2CPP_VT_UNKNOWN = 13,
+ IL2CPP_VT_DECIMAL = 14,
+ IL2CPP_VT_I1 = 16,
+ IL2CPP_VT_UI1 = 17,
+ IL2CPP_VT_UI2 = 18,
+ IL2CPP_VT_UI4 = 19,
+ IL2CPP_VT_I8 = 20,
+ IL2CPP_VT_UI8 = 21,
+ IL2CPP_VT_INT = 22,
+ IL2CPP_VT_UINT = 23,
+ IL2CPP_VT_VOID = 24,
+ IL2CPP_VT_HRESULT = 25,
+ IL2CPP_VT_PTR = 26,
+ IL2CPP_VT_SAFEARRAY = 27,
+ IL2CPP_VT_CARRAY = 28,
+ IL2CPP_VT_USERDEFINED = 29,
+ IL2CPP_VT_LPSTR = 30,
+ IL2CPP_VT_LPWSTR = 31,
+ IL2CPP_VT_RECORD = 36,
+ IL2CPP_VT_INT_PTR = 37,
+ IL2CPP_VT_UINT_PTR = 38,
+ IL2CPP_VT_FILETIME = 64,
+ IL2CPP_VT_BLOB = 65,
+ IL2CPP_VT_STREAM = 66,
+ IL2CPP_VT_STORAGE = 67,
+ IL2CPP_VT_STREAMED_OBJECT = 68,
+ IL2CPP_VT_STORED_OBJECT = 69,
+ IL2CPP_VT_BLOB_OBJECT = 70,
+ IL2CPP_VT_CF = 71,
+ IL2CPP_VT_CLSID = 72,
+ IL2CPP_VT_VERSIONED_STREAM = 73,
+ IL2CPP_VT_BSTR_BLOB = 0xfff,
+ IL2CPP_VT_VECTOR = 0x1000,
+ IL2CPP_VT_ARRAY = 0x2000,
+ IL2CPP_VT_BYREF = 0x4000,
+ IL2CPP_VT_RESERVED = 0x8000,
+ IL2CPP_VT_ILLEGAL = 0xffff,
+ IL2CPP_VT_ILLEGALMASKED = 0xfff,
+ IL2CPP_VT_TYPEMASK = 0xfff,
+} Il2CppVarType;
+typedef struct Il2CppVariant Il2CppVariant;
+typedef struct Il2CppIUnknown Il2CppIUnknown;
+typedef struct Il2CppVariant
+{
+ union
+ {
+ struct __tagVARIANT
+ {
+ uint16_t type;
+ uint16_t reserved1;
+ uint16_t reserved2;
+ uint16_t reserved3;
+ union
+ {
+ int64_t llVal;
+ int32_t lVal;
+ uint8_t bVal;
+ int16_t iVal;
+ float fltVal;
+ double dblVal;
+ IL2CPP_VARIANT_BOOL boolVal;
+ int32_t scode;
+ int64_t cyVal;
+ double date;
+ Il2CppChar* bstrVal;
+ Il2CppIUnknown* punkVal;
+ void* pdispVal;
+ Il2CppSafeArray* parray;
+ uint8_t* pbVal;
+ int16_t* piVal;
+ int32_t* plVal;
+ int64_t* pllVal;
+ float* pfltVal;
+ double* pdblVal;
+ IL2CPP_VARIANT_BOOL* pboolVal;
+ int32_t* pscode;
+ int64_t* pcyVal;
+ double* pdate;
+ Il2CppChar* pbstrVal;
+ Il2CppIUnknown** ppunkVal;
+ void** ppdispVal;
+ Il2CppSafeArray** pparray;
+ Il2CppVariant* pvarVal;
+ void* byref;
+ char cVal;
+ uint16_t uiVal;
+ uint32_t ulVal;
+ uint64_t ullVal;
+ int intVal;
+ unsigned int uintVal;
+ Il2CppWin32Decimal* pdecVal;
+ char* pcVal;
+ uint16_t* puiVal;
+ uint32_t* pulVal;
+ uint64_t* pullVal;
+ int* pintVal;
+ unsigned int* puintVal;
+ struct __tagBRECORD
+ {
+ void* pvRecord;
+ void* pRecInfo;
+ } n4;
+ } n3;
+ } n2;
+ Il2CppWin32Decimal decVal;
+ } n1;
+} Il2CppVariant;
+typedef struct Il2CppFileTime
+{
+ uint32_t low;
+ uint32_t high;
+} Il2CppFileTime;
+typedef struct Il2CppStatStg
+{
+ Il2CppChar* name;
+ uint32_t type;
+ uint64_t size;
+ Il2CppFileTime mtime;
+ Il2CppFileTime ctime;
+ Il2CppFileTime atime;
+ uint32_t mode;
+ uint32_t locks;
+ Il2CppGuid clsid;
+ uint32_t state;
+ uint32_t reserved;
+} Il2CppStatStg;
+typedef enum Il2CppWindowsRuntimeTypeKind
+{
+ kTypeKindPrimitive = 0,
+ kTypeKindMetadata,
+ kTypeKindCustom
+} Il2CppWindowsRuntimeTypeKind;
+typedef struct Il2CppWindowsRuntimeTypeName
+{
+ Il2CppHString typeName;
+ enum Il2CppWindowsRuntimeTypeKind typeKind;
+} Il2CppWindowsRuntimeTypeName;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct Il2CppCodeGenModule Il2CppCodeGenModule;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+typedef struct Il2CppDefaults
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *attribute_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *enum_info_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ireferencearray_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+ Il2CppClass* system_guid_class;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef enum MethodVariableKind
+{
+ kMethodVariableKind_This,
+ kMethodVariableKind_Parameter,
+ kMethodVariableKind_LocalVariable
+} MethodVariableKind;
+typedef enum SequencePointKind
+{
+ kSequencePointKind_Normal,
+ kSequencePointKind_StepOut
+} SequencePointKind;
+typedef struct Il2CppMethodExecutionContextInfo
+{
+ TypeIndex typeIndex;
+ int32_t nameIndex;
+ int32_t scopeIndex;
+} Il2CppMethodExecutionContextInfo;
+typedef struct Il2CppMethodExecutionContextInfoIndex
+{
+ int32_t startIndex;
+ int32_t count;
+} Il2CppMethodExecutionContextInfoIndex;
+typedef struct Il2CppMethodScope
+{
+ int32_t startOffset;
+ int32_t endOffset;
+} Il2CppMethodScope;
+typedef struct Il2CppMethodHeaderInfo
+{
+ int32_t codeSize;
+ int32_t startScope;
+ int32_t numScopes;
+} Il2CppMethodHeaderInfo;
+typedef struct Il2CppSequencePointSourceFile
+{
+ const char *file;
+ uint8_t hash[16];
+} Il2CppSequencePointSourceFile;
+typedef struct Il2CppTypeSourceFilePair
+{
+ TypeDefinitionIndex klassIndex;
+ int32_t sourceFileIndex;
+} Il2CppTypeSourceFilePair;
+typedef struct Il2CppSequencePoint
+{
+ MethodIndex methodDefinitionIndex;
+ TypeIndex catchTypeIndex;
+ int32_t sourceFileIndex;
+ int32_t lineStart, lineEnd;
+ int32_t columnStart, columnEnd;
+ int32_t ilOffset;
+ SequencePointKind kind;
+ uint8_t isActive;
+ int32_t id;
+ uint8_t tryDepth;
+} Il2CppSequencePoint;
+typedef struct Il2CppDebuggerMetadataRegistration
+{
+ Il2CppMethodExecutionContextInfo* methodExecutionContextInfos;
+ Il2CppMethodExecutionContextInfoIndex* methodExecutionContextInfoIndexes;
+ Il2CppMethodScope* methodScopes;
+ Il2CppMethodHeaderInfo* methodHeaderInfos;
+ Il2CppSequencePointSourceFile* sequencePointSourceFiles;
+ int32_t numSequencePoints;
+ Il2CppSequencePoint* sequencePoints;
+ int32_t numTypeSourceFileEntries;
+ Il2CppTypeSourceFilePair* typeSourceFiles;
+ const char** methodExecutionContextInfoStrings;
+} Il2CppDebuggerMetadataRegistration;
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *klass;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+ uint8_t wrapper_type : 1;
+ uint8_t is_marshaled_from_native : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ void *unity_user_data;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) size_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ void * unity_user_data;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread;
+#else
+ __attribute__((aligned(8))) size_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+ void* agent_info;
+} Il2CppDomain;
+typedef struct Il2CppAssemblyName
+{
+ const char* name;
+ const char* culture;
+ const char* hash_value;
+ const char* public_key;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ Il2CppAssembly* assembly;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable;
+ const Il2CppCodeGenModule* codeGenModule;
+ uint32_t token;
+ uint8_t dynamic;
+} Il2CppImage;
+typedef struct Il2CppAssembly
+{
+ Il2CppImage* image;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppCodeGenOptions
+{
+ uint8_t enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppTokenIndexPair
+{
+ uint32_t token;
+ int32_t index;
+} Il2CppTokenIndexPair;
+typedef struct Il2CppTokenRangePair
+{
+ uint32_t token;
+ Il2CppRange range;
+} Il2CppTokenRangePair;
+typedef struct Il2CppCodeGenModule
+{
+ const char* moduleName;
+ const uint32_t methodPointerCount;
+ const Il2CppMethodPointer* methodPointers;
+ const int32_t* invokerIndices;
+ const uint32_t reversePInvokeWrapperCount;
+ const Il2CppTokenIndexPair* reversePInvokeWrapperIndices;
+ const uint32_t rgctxRangesCount;
+ const Il2CppTokenRangePair* rgctxRanges;
+ const uint32_t rgctxsCount;
+ const Il2CppRGCTXDefinition* rgctxs;
+ const Il2CppDebuggerMetadataRegistration *debuggerMetadata;
+} Il2CppCodeGenModule;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+ uint32_t codeGenModulesCount;
+ const Il2CppCodeGenModule** codeGenModules;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppRuntimeStats
+{
+ uint64_t new_object_count;
+ uint64_t initialized_class_count;
+ uint64_t method_count;
+ uint64_t class_static_data_size;
+ uint64_t generic_instance_count;
+ uint64_t generic_class_count;
+ uint64_t inflated_method_count;
+ uint64_t inflated_type_count;
+ uint8_t enabled;
+} Il2CppRuntimeStats;
+extern Il2CppRuntimeStats il2cpp_runtime_stats;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24.2-2019.3.0-2019.3.6.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24.2-2019.3.0-2019.3.6.h
new file mode 100644
index 0000000..357cc80
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24.2-2019.3.0-2019.3.6.h
@@ -0,0 +1,1489 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef struct Il2CppCustomAttrInfo Il2CppCustomAttrInfo;
+typedef enum
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19,
+ IL2CPP_PROFILE_FILEIO = 1 << 20
+} Il2CppProfileFlags;
+typedef enum
+{
+ IL2CPP_PROFILE_FILEIO_WRITE = 0,
+ IL2CPP_PROFILE_FILEIO_READ
+} Il2CppProfileFileIOKind;
+typedef enum
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef void(*Il2CppMethodPointer)();
+typedef struct Il2CppMethodDebugInfo
+{
+ Il2CppMethodPointer methodPointer;
+ int32_t code_size;
+ const char *file;
+} Il2CppMethodDebugInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef struct
+{
+ const char *name;
+ void(*connect)(const char *address);
+ int(*wait_for_attach)(void);
+ void(*close1)(void);
+ void(*close2)(void);
+ int(*send)(void *buf, int len);
+ int(*recv)(void *buf, int len);
+} Il2CppDebuggerTransport;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count);
+typedef void (*Il2CppProfileThreadFunc) (Il2CppProfiler *prof, unsigned long tid);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef size_t(*Il2CppBacktraceFunc) (Il2CppMethodPointer* buffer, size_t maxSize);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef uintptr_t il2cpp_array_size_t;
+typedef void ( *SynchronizationContextCallback)(intptr_t arg);
+typedef uint32_t Il2CppMethodSlot;
+static const uint32_t kInvalidIl2CppMethodSlot = 65535;
+static const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef enum
+{
+ IL2CPP_TOKEN_MODULE = 0x00000000,
+ IL2CPP_TOKEN_TYPE_REF = 0x01000000,
+ IL2CPP_TOKEN_TYPE_DEF = 0x02000000,
+ IL2CPP_TOKEN_FIELD_DEF = 0x04000000,
+ IL2CPP_TOKEN_METHOD_DEF = 0x06000000,
+ IL2CPP_TOKEN_PARAM_DEF = 0x08000000,
+ IL2CPP_TOKEN_INTERFACE_IMPL = 0x09000000,
+ IL2CPP_TOKEN_MEMBER_REF = 0x0a000000,
+ IL2CPP_TOKEN_CUSTOM_ATTRIBUTE = 0x0c000000,
+ IL2CPP_TOKEN_PERMISSION = 0x0e000000,
+ IL2CPP_TOKEN_SIGNATURE = 0x11000000,
+ IL2CPP_TOKEN_EVENT = 0x14000000,
+ IL2CPP_TOKEN_PROPERTY = 0x17000000,
+ IL2CPP_TOKEN_MODULE_REF = 0x1a000000,
+ IL2CPP_TOKEN_TYPE_SPEC = 0x1b000000,
+ IL2CPP_TOKEN_ASSEMBLY = 0x20000000,
+ IL2CPP_TOKEN_ASSEMBLY_REF = 0x23000000,
+ IL2CPP_TOKEN_FILE = 0x26000000,
+ IL2CPP_TOKEN_EXPORTED_TYPE = 0x27000000,
+ IL2CPP_TOKEN_MANIFEST_RESOURCE = 0x28000000,
+ IL2CPP_TOKEN_GENERIC_PARAM = 0x2a000000,
+ IL2CPP_TOKEN_METHOD_SPEC = 0x2b000000,
+} Il2CppTokenType;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+static const TypeIndex kTypeIndexInvalid = -1;
+static const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+static const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+static const CustomAttributeIndex kCustomAttributeIndexInvalid = -1;
+static const EventIndex kEventIndexInvalid = -1;
+static const FieldIndex kFieldIndexInvalid = -1;
+static const MethodIndex kMethodIndexInvalid = -1;
+static const PropertyIndex kPropertyIndexInvalid = -1;
+static const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+static const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+static const RGCTXIndex kRGCTXIndexInvalid = -1;
+static const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+static const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+static const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyNameDefinition
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyNameDefinition;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssemblyDefinition
+{
+ ImageIndex imageIndex;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyNameDefinition aname;
+} Il2CppAssemblyDefinition;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ uint32_t token;
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum Il2CppCallConvention
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE,
+ CHARSET_NOT_SPECIFIED
+} Il2CppCharSet;
+typedef struct Il2CppHString__
+{
+ int unused;
+} Il2CppHString__;
+typedef Il2CppHString__* Il2CppHString;
+typedef struct Il2CppHStringHeader
+{
+ union
+ {
+ void* Reserved1;
+ char Reserved2[24];
+ } Reserved;
+} Il2CppHStringHeader;
+typedef struct Il2CppGuid
+{
+ uint32_t data1;
+ uint16_t data2;
+ uint16_t data3;
+ uint8_t data4[8];
+} Il2CppGuid;
+typedef struct Il2CppSafeArrayBound
+{
+ uint32_t element_count;
+ int32_t lower_bound;
+} Il2CppSafeArrayBound;
+typedef struct Il2CppSafeArray
+{
+ uint16_t dimension_count;
+ uint16_t features;
+ uint32_t element_size;
+ uint32_t lock_count;
+ void* data;
+ Il2CppSafeArrayBound bounds[1];
+} Il2CppSafeArray;
+typedef struct Il2CppWin32Decimal
+{
+ uint16_t reserved;
+ union
+ {
+ struct
+ {
+ uint8_t scale;
+ uint8_t sign;
+ } s;
+ uint16_t signscale;
+ } u;
+ uint32_t hi32;
+ union
+ {
+ struct
+ {
+ uint32_t lo32;
+ uint32_t mid32;
+ } s2;
+ uint64_t lo64;
+ } u2;
+} Il2CppWin32Decimal;
+typedef int16_t IL2CPP_VARIANT_BOOL;
+typedef enum Il2CppVarType
+{
+ IL2CPP_VT_EMPTY = 0,
+ IL2CPP_VT_NULL = 1,
+ IL2CPP_VT_I2 = 2,
+ IL2CPP_VT_I4 = 3,
+ IL2CPP_VT_R4 = 4,
+ IL2CPP_VT_R8 = 5,
+ IL2CPP_VT_CY = 6,
+ IL2CPP_VT_DATE = 7,
+ IL2CPP_VT_BSTR = 8,
+ IL2CPP_VT_DISPATCH = 9,
+ IL2CPP_VT_ERROR = 10,
+ IL2CPP_VT_BOOL = 11,
+ IL2CPP_VT_VARIANT = 12,
+ IL2CPP_VT_UNKNOWN = 13,
+ IL2CPP_VT_DECIMAL = 14,
+ IL2CPP_VT_I1 = 16,
+ IL2CPP_VT_UI1 = 17,
+ IL2CPP_VT_UI2 = 18,
+ IL2CPP_VT_UI4 = 19,
+ IL2CPP_VT_I8 = 20,
+ IL2CPP_VT_UI8 = 21,
+ IL2CPP_VT_INT = 22,
+ IL2CPP_VT_UINT = 23,
+ IL2CPP_VT_VOID = 24,
+ IL2CPP_VT_HRESULT = 25,
+ IL2CPP_VT_PTR = 26,
+ IL2CPP_VT_SAFEARRAY = 27,
+ IL2CPP_VT_CARRAY = 28,
+ IL2CPP_VT_USERDEFINED = 29,
+ IL2CPP_VT_LPSTR = 30,
+ IL2CPP_VT_LPWSTR = 31,
+ IL2CPP_VT_RECORD = 36,
+ IL2CPP_VT_INT_PTR = 37,
+ IL2CPP_VT_UINT_PTR = 38,
+ IL2CPP_VT_FILETIME = 64,
+ IL2CPP_VT_BLOB = 65,
+ IL2CPP_VT_STREAM = 66,
+ IL2CPP_VT_STORAGE = 67,
+ IL2CPP_VT_STREAMED_OBJECT = 68,
+ IL2CPP_VT_STORED_OBJECT = 69,
+ IL2CPP_VT_BLOB_OBJECT = 70,
+ IL2CPP_VT_CF = 71,
+ IL2CPP_VT_CLSID = 72,
+ IL2CPP_VT_VERSIONED_STREAM = 73,
+ IL2CPP_VT_BSTR_BLOB = 0xfff,
+ IL2CPP_VT_VECTOR = 0x1000,
+ IL2CPP_VT_ARRAY = 0x2000,
+ IL2CPP_VT_BYREF = 0x4000,
+ IL2CPP_VT_RESERVED = 0x8000,
+ IL2CPP_VT_ILLEGAL = 0xffff,
+ IL2CPP_VT_ILLEGALMASKED = 0xfff,
+ IL2CPP_VT_TYPEMASK = 0xfff,
+} Il2CppVarType;
+typedef struct Il2CppVariant Il2CppVariant;
+typedef struct Il2CppIUnknown Il2CppIUnknown;
+typedef struct Il2CppVariant
+{
+ union
+ {
+ struct __tagVARIANT
+ {
+ uint16_t type;
+ uint16_t reserved1;
+ uint16_t reserved2;
+ uint16_t reserved3;
+ union
+ {
+ int64_t llVal;
+ int32_t lVal;
+ uint8_t bVal;
+ int16_t iVal;
+ float fltVal;
+ double dblVal;
+ IL2CPP_VARIANT_BOOL boolVal;
+ int32_t scode;
+ int64_t cyVal;
+ double date;
+ Il2CppChar* bstrVal;
+ Il2CppIUnknown* punkVal;
+ void* pdispVal;
+ Il2CppSafeArray* parray;
+ uint8_t* pbVal;
+ int16_t* piVal;
+ int32_t* plVal;
+ int64_t* pllVal;
+ float* pfltVal;
+ double* pdblVal;
+ IL2CPP_VARIANT_BOOL* pboolVal;
+ int32_t* pscode;
+ int64_t* pcyVal;
+ double* pdate;
+ Il2CppChar* pbstrVal;
+ Il2CppIUnknown** ppunkVal;
+ void** ppdispVal;
+ Il2CppSafeArray** pparray;
+ Il2CppVariant* pvarVal;
+ void* byref;
+ char cVal;
+ uint16_t uiVal;
+ uint32_t ulVal;
+ uint64_t ullVal;
+ int intVal;
+ unsigned int uintVal;
+ Il2CppWin32Decimal* pdecVal;
+ char* pcVal;
+ uint16_t* puiVal;
+ uint32_t* pulVal;
+ uint64_t* pullVal;
+ int* pintVal;
+ unsigned int* puintVal;
+ struct __tagBRECORD
+ {
+ void* pvRecord;
+ void* pRecInfo;
+ } n4;
+ } n3;
+ } n2;
+ Il2CppWin32Decimal decVal;
+ } n1;
+} Il2CppVariant;
+typedef struct Il2CppFileTime
+{
+ uint32_t low;
+ uint32_t high;
+} Il2CppFileTime;
+typedef struct Il2CppStatStg
+{
+ Il2CppChar* name;
+ uint32_t type;
+ uint64_t size;
+ Il2CppFileTime mtime;
+ Il2CppFileTime ctime;
+ Il2CppFileTime atime;
+ uint32_t mode;
+ uint32_t locks;
+ Il2CppGuid clsid;
+ uint32_t state;
+ uint32_t reserved;
+} Il2CppStatStg;
+typedef enum Il2CppWindowsRuntimeTypeKind
+{
+ kTypeKindPrimitive = 0,
+ kTypeKindMetadata,
+ kTypeKindCustom
+} Il2CppWindowsRuntimeTypeKind;
+typedef struct Il2CppWindowsRuntimeTypeName
+{
+ Il2CppHString typeName;
+ enum Il2CppWindowsRuntimeTypeKind typeKind;
+} Il2CppWindowsRuntimeTypeName;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct Il2CppCodeGenModule Il2CppCodeGenModule;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+typedef struct Il2CppDefaults
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *internal_thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_ireadonlylist_class;
+ Il2CppClass *generic_ireadonlycollection_class;
+ Il2CppClass *runtimetype_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *attribute_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *mono_assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *mono_parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass *threadpool_wait_callback_class;
+ MethodInfo *threadpool_perform_wait_callback_method;
+ Il2CppClass *mono_method_message_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ireferencearray_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+ Il2CppClass* system_guid_class;
+ Il2CppClass* sbyte_shared_enum;
+ Il2CppClass* int16_shared_enum;
+ Il2CppClass* int32_shared_enum;
+ Il2CppClass* int64_shared_enum;
+ Il2CppClass* byte_shared_enum;
+ Il2CppClass* uint16_shared_enum;
+ Il2CppClass* uint32_shared_enum;
+ Il2CppClass* uint64_shared_enum;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef enum MethodVariableKind
+{
+ kMethodVariableKind_This,
+ kMethodVariableKind_Parameter,
+ kMethodVariableKind_LocalVariable
+} MethodVariableKind;
+typedef enum SequencePointKind
+{
+ kSequencePointKind_Normal,
+ kSequencePointKind_StepOut
+} SequencePointKind;
+typedef struct Il2CppMethodExecutionContextInfo
+{
+ TypeIndex typeIndex;
+ int32_t nameIndex;
+ int32_t scopeIndex;
+} Il2CppMethodExecutionContextInfo;
+typedef struct Il2CppMethodExecutionContextInfoIndex
+{
+ int32_t startIndex;
+ int32_t count;
+} Il2CppMethodExecutionContextInfoIndex;
+typedef struct Il2CppMethodScope
+{
+ int32_t startOffset;
+ int32_t endOffset;
+} Il2CppMethodScope;
+typedef struct Il2CppMethodHeaderInfo
+{
+ int32_t code_size;
+ int32_t startScope;
+ int32_t numScopes;
+} Il2CppMethodHeaderInfo;
+typedef struct Il2CppSequencePointSourceFile
+{
+ const char *file;
+ uint8_t hash[16];
+} Il2CppSequencePointSourceFile;
+typedef struct Il2CppTypeSourceFilePair
+{
+ TypeDefinitionIndex klassIndex;
+ int32_t sourceFileIndex;
+} Il2CppTypeSourceFilePair;
+typedef struct Il2CppSequencePoint
+{
+ MethodIndex methodDefinitionIndex;
+ int32_t sourceFileIndex;
+ int32_t lineStart, lineEnd;
+ int32_t columnStart, columnEnd;
+ int32_t ilOffset;
+ SequencePointKind kind;
+ int32_t isActive;
+ int32_t id;
+} Il2CppSequencePoint;
+typedef struct Il2CppCatchPoint
+{
+ MethodIndex methodDefinitionIndex;
+ TypeIndex catchTypeIndex;
+ int32_t ilOffset;
+ int8_t tryId;
+ int8_t parentTryId;
+} Il2CppCatchPoint;
+typedef struct Il2CppDebuggerMetadataRegistration
+{
+ Il2CppMethodExecutionContextInfo* methodExecutionContextInfos;
+ Il2CppMethodExecutionContextInfoIndex* methodExecutionContextInfoIndexes;
+ Il2CppMethodScope* methodScopes;
+ Il2CppMethodHeaderInfo* methodHeaderInfos;
+ Il2CppSequencePointSourceFile* sequencePointSourceFiles;
+ int32_t numSequencePoints;
+ Il2CppSequencePoint* sequencePoints;
+ int32_t numCatchPoints;
+ Il2CppCatchPoint* catchPoints;
+ int32_t numTypeSourceFileEntries;
+ Il2CppTypeSourceFilePair* typeSourceFiles;
+ const char** methodExecutionContextInfoStrings;
+} Il2CppDebuggerMetadataRegistration;
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *klass;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+ uint8_t wrapper_type : 1;
+ uint8_t is_marshaled_from_native : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ void *unity_user_data;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) size_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ void * unity_user_data;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread;
+#else
+ __attribute__((aligned(8))) size_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+ volatile int threadpool_jobs;
+ void* agent_info;
+} Il2CppDomain;
+typedef struct Il2CppAssemblyName
+{
+ const char* name;
+ const char* culture;
+ const char* hash_value;
+ const char* public_key;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ Il2CppAssembly* assembly;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable;
+ const Il2CppCodeGenModule* codeGenModule;
+ uint32_t token;
+ uint8_t dynamic;
+} Il2CppImage;
+typedef struct Il2CppAssembly
+{
+ Il2CppImage* image;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppCodeGenOptions
+{
+ uint8_t enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppTokenIndexPair
+{
+ uint32_t token;
+ int32_t index;
+} Il2CppTokenIndexPair;
+typedef struct Il2CppTokenRangePair
+{
+ uint32_t token;
+ Il2CppRange range;
+} Il2CppTokenRangePair;
+typedef struct Il2CppTokenIndexMethodTuple
+{
+ uint32_t token;
+ int32_t index;
+ void** method;
+ uint32_t genericMethodIndex;
+} Il2CppTokenIndexMethodTuple;
+typedef struct Il2CppCodeGenModule
+{
+ const char* moduleName;
+ const uint32_t methodPointerCount;
+ const Il2CppMethodPointer* methodPointers;
+ const int32_t* invokerIndices;
+ const uint32_t reversePInvokeWrapperCount;
+ const Il2CppTokenIndexMethodTuple* reversePInvokeWrapperIndices;
+ const uint32_t rgctxRangesCount;
+ const Il2CppTokenRangePair* rgctxRanges;
+ const uint32_t rgctxsCount;
+ const Il2CppRGCTXDefinition* rgctxs;
+ const Il2CppDebuggerMetadataRegistration *debuggerMetadata;
+} Il2CppCodeGenModule;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+ uint32_t codeGenModulesCount;
+ const Il2CppCodeGenModule** codeGenModules;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/24.3-2019.3.7-.h b/Il2CppInspector.Common/Outputs/UnityHeaders/24.3-2019.3.7-.h
new file mode 100644
index 0000000..7a903d3
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/24.3-2019.3.7-.h
@@ -0,0 +1,1496 @@
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppType Il2CppType;
+typedef struct EventInfo EventInfo;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct PropertyInfo PropertyInfo;
+typedef struct Il2CppAssembly Il2CppAssembly;
+typedef struct Il2CppArray Il2CppArray;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppDomain Il2CppDomain;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppException Il2CppException;
+typedef struct Il2CppProfiler Il2CppProfiler;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct Il2CppReflectionMethod Il2CppReflectionMethod;
+typedef struct Il2CppReflectionType Il2CppReflectionType;
+typedef struct Il2CppString Il2CppString;
+typedef struct Il2CppThread Il2CppThread;
+typedef struct Il2CppAsyncResult Il2CppAsyncResult;
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef struct Il2CppCustomAttrInfo Il2CppCustomAttrInfo;
+typedef enum
+{
+ IL2CPP_PROFILE_NONE = 0,
+ IL2CPP_PROFILE_APPDOMAIN_EVENTS = 1 << 0,
+ IL2CPP_PROFILE_ASSEMBLY_EVENTS = 1 << 1,
+ IL2CPP_PROFILE_MODULE_EVENTS = 1 << 2,
+ IL2CPP_PROFILE_CLASS_EVENTS = 1 << 3,
+ IL2CPP_PROFILE_JIT_COMPILATION = 1 << 4,
+ IL2CPP_PROFILE_INLINING = 1 << 5,
+ IL2CPP_PROFILE_EXCEPTIONS = 1 << 6,
+ IL2CPP_PROFILE_ALLOCATIONS = 1 << 7,
+ IL2CPP_PROFILE_GC = 1 << 8,
+ IL2CPP_PROFILE_THREADS = 1 << 9,
+ IL2CPP_PROFILE_REMOTING = 1 << 10,
+ IL2CPP_PROFILE_TRANSITIONS = 1 << 11,
+ IL2CPP_PROFILE_ENTER_LEAVE = 1 << 12,
+ IL2CPP_PROFILE_COVERAGE = 1 << 13,
+ IL2CPP_PROFILE_INS_COVERAGE = 1 << 14,
+ IL2CPP_PROFILE_STATISTICAL = 1 << 15,
+ IL2CPP_PROFILE_METHOD_EVENTS = 1 << 16,
+ IL2CPP_PROFILE_MONITOR_EVENTS = 1 << 17,
+ IL2CPP_PROFILE_IOMAP_EVENTS = 1 << 18,
+ IL2CPP_PROFILE_GC_MOVES = 1 << 19,
+ IL2CPP_PROFILE_FILEIO = 1 << 20
+} Il2CppProfileFlags;
+typedef enum
+{
+ IL2CPP_PROFILE_FILEIO_WRITE = 0,
+ IL2CPP_PROFILE_FILEIO_READ
+} Il2CppProfileFileIOKind;
+typedef enum
+{
+ IL2CPP_GC_EVENT_START,
+ IL2CPP_GC_EVENT_MARK_START,
+ IL2CPP_GC_EVENT_MARK_END,
+ IL2CPP_GC_EVENT_RECLAIM_START,
+ IL2CPP_GC_EVENT_RECLAIM_END,
+ IL2CPP_GC_EVENT_END,
+ IL2CPP_GC_EVENT_PRE_STOP_WORLD,
+ IL2CPP_GC_EVENT_POST_STOP_WORLD,
+ IL2CPP_GC_EVENT_PRE_START_WORLD,
+ IL2CPP_GC_EVENT_POST_START_WORLD
+} Il2CppGCEvent;
+typedef enum
+{
+ IL2CPP_STAT_NEW_OBJECT_COUNT,
+ IL2CPP_STAT_INITIALIZED_CLASS_COUNT,
+ IL2CPP_STAT_METHOD_COUNT,
+ IL2CPP_STAT_CLASS_STATIC_DATA_SIZE,
+ IL2CPP_STAT_GENERIC_INSTANCE_COUNT,
+ IL2CPP_STAT_GENERIC_CLASS_COUNT,
+ IL2CPP_STAT_INFLATED_METHOD_COUNT,
+ IL2CPP_STAT_INFLATED_TYPE_COUNT,
+} Il2CppStat;
+typedef enum
+{
+ IL2CPP_UNHANDLED_POLICY_LEGACY,
+ IL2CPP_UNHANDLED_POLICY_CURRENT
+} Il2CppRuntimeUnhandledExceptionPolicy;
+typedef struct Il2CppStackFrameInfo
+{
+ const MethodInfo *method;
+} Il2CppStackFrameInfo;
+typedef void(*Il2CppMethodPointer)();
+typedef struct Il2CppMethodDebugInfo
+{
+ Il2CppMethodPointer methodPointer;
+ int32_t code_size;
+ const char *file;
+} Il2CppMethodDebugInfo;
+typedef struct
+{
+ void* (*malloc_func)(size_t size);
+ void* (*aligned_malloc_func)(size_t size, size_t alignment);
+ void (*free_func)(void *ptr);
+ void (*aligned_free_func)(void *ptr);
+ void* (*calloc_func)(size_t nmemb, size_t size);
+ void* (*realloc_func)(void *ptr, size_t size);
+ void* (*aligned_realloc_func)(void *ptr, size_t size, size_t alignment);
+} Il2CppMemoryCallbacks;
+typedef struct
+{
+ const char *name;
+ void(*connect)(const char *address);
+ int(*wait_for_attach)(void);
+ void(*close1)(void);
+ void(*close2)(void);
+ int(*send)(void *buf, int len);
+ int(*recv)(void *buf, int len);
+} Il2CppDebuggerTransport;
+typedef uint16_t Il2CppChar;
+typedef char Il2CppNativeChar;
+typedef void (*il2cpp_register_object_callback)(Il2CppObject** arr, int size, void* userdata);
+typedef void (*il2cpp_WorldChangedCallback)();
+typedef void (*Il2CppFrameWalkFunc) (const Il2CppStackFrameInfo *info, void *user_data);
+typedef void (*Il2CppProfileFunc) (Il2CppProfiler* prof);
+typedef void (*Il2CppProfileMethodFunc) (Il2CppProfiler* prof, const MethodInfo *method);
+typedef void (*Il2CppProfileAllocFunc) (Il2CppProfiler* prof, Il2CppObject *obj, Il2CppClass *klass);
+typedef void (*Il2CppProfileGCFunc) (Il2CppProfiler* prof, Il2CppGCEvent event, int generation);
+typedef void (*Il2CppProfileGCResizeFunc) (Il2CppProfiler* prof, int64_t new_size);
+typedef void (*Il2CppProfileFileIOFunc) (Il2CppProfiler* prof, Il2CppProfileFileIOKind kind, int count);
+typedef void (*Il2CppProfileThreadFunc) (Il2CppProfiler *prof, unsigned long tid);
+typedef const Il2CppNativeChar* (*Il2CppSetFindPlugInCallback)(const Il2CppNativeChar*);
+typedef void (*Il2CppLogCallback)(const char*);
+typedef size_t(*Il2CppBacktraceFunc) (Il2CppMethodPointer* buffer, size_t maxSize);
+typedef struct Il2CppManagedMemorySnapshot Il2CppManagedMemorySnapshot;
+typedef uintptr_t il2cpp_array_size_t;
+typedef void ( *SynchronizationContextCallback)(intptr_t arg);
+typedef uint32_t Il2CppMethodSlot;
+static const uint32_t kInvalidIl2CppMethodSlot = 65535;
+static const int ipv6AddressSize = 16;
+typedef int32_t il2cpp_hresult_t;
+typedef enum Il2CppTypeEnum
+{
+ IL2CPP_TYPE_END = 0x00,
+ IL2CPP_TYPE_VOID = 0x01,
+ IL2CPP_TYPE_BOOLEAN = 0x02,
+ IL2CPP_TYPE_CHAR = 0x03,
+ IL2CPP_TYPE_I1 = 0x04,
+ IL2CPP_TYPE_U1 = 0x05,
+ IL2CPP_TYPE_I2 = 0x06,
+ IL2CPP_TYPE_U2 = 0x07,
+ IL2CPP_TYPE_I4 = 0x08,
+ IL2CPP_TYPE_U4 = 0x09,
+ IL2CPP_TYPE_I8 = 0x0a,
+ IL2CPP_TYPE_U8 = 0x0b,
+ IL2CPP_TYPE_R4 = 0x0c,
+ IL2CPP_TYPE_R8 = 0x0d,
+ IL2CPP_TYPE_STRING = 0x0e,
+ IL2CPP_TYPE_PTR = 0x0f,
+ IL2CPP_TYPE_BYREF = 0x10,
+ IL2CPP_TYPE_VALUETYPE = 0x11,
+ IL2CPP_TYPE_CLASS = 0x12,
+ IL2CPP_TYPE_VAR = 0x13,
+ IL2CPP_TYPE_ARRAY = 0x14,
+ IL2CPP_TYPE_GENERICINST = 0x15,
+ IL2CPP_TYPE_TYPEDBYREF = 0x16,
+ IL2CPP_TYPE_I = 0x18,
+ IL2CPP_TYPE_U = 0x19,
+ IL2CPP_TYPE_FNPTR = 0x1b,
+ IL2CPP_TYPE_OBJECT = 0x1c,
+ IL2CPP_TYPE_SZARRAY = 0x1d,
+ IL2CPP_TYPE_MVAR = 0x1e,
+ IL2CPP_TYPE_CMOD_REQD = 0x1f,
+ IL2CPP_TYPE_CMOD_OPT = 0x20,
+ IL2CPP_TYPE_INTERNAL = 0x21,
+ IL2CPP_TYPE_MODIFIER = 0x40,
+ IL2CPP_TYPE_SENTINEL = 0x41,
+ IL2CPP_TYPE_PINNED = 0x45,
+ IL2CPP_TYPE_ENUM = 0x55
+} Il2CppTypeEnum;
+typedef enum
+{
+ IL2CPP_TOKEN_MODULE = 0x00000000,
+ IL2CPP_TOKEN_TYPE_REF = 0x01000000,
+ IL2CPP_TOKEN_TYPE_DEF = 0x02000000,
+ IL2CPP_TOKEN_FIELD_DEF = 0x04000000,
+ IL2CPP_TOKEN_METHOD_DEF = 0x06000000,
+ IL2CPP_TOKEN_PARAM_DEF = 0x08000000,
+ IL2CPP_TOKEN_INTERFACE_IMPL = 0x09000000,
+ IL2CPP_TOKEN_MEMBER_REF = 0x0a000000,
+ IL2CPP_TOKEN_CUSTOM_ATTRIBUTE = 0x0c000000,
+ IL2CPP_TOKEN_PERMISSION = 0x0e000000,
+ IL2CPP_TOKEN_SIGNATURE = 0x11000000,
+ IL2CPP_TOKEN_EVENT = 0x14000000,
+ IL2CPP_TOKEN_PROPERTY = 0x17000000,
+ IL2CPP_TOKEN_MODULE_REF = 0x1a000000,
+ IL2CPP_TOKEN_TYPE_SPEC = 0x1b000000,
+ IL2CPP_TOKEN_ASSEMBLY = 0x20000000,
+ IL2CPP_TOKEN_ASSEMBLY_REF = 0x23000000,
+ IL2CPP_TOKEN_FILE = 0x26000000,
+ IL2CPP_TOKEN_EXPORTED_TYPE = 0x27000000,
+ IL2CPP_TOKEN_MANIFEST_RESOURCE = 0x28000000,
+ IL2CPP_TOKEN_GENERIC_PARAM = 0x2a000000,
+ IL2CPP_TOKEN_METHOD_SPEC = 0x2b000000,
+} Il2CppTokenType;
+typedef int32_t TypeIndex;
+typedef int32_t TypeDefinitionIndex;
+typedef int32_t FieldIndex;
+typedef int32_t DefaultValueIndex;
+typedef int32_t DefaultValueDataIndex;
+typedef int32_t CustomAttributeIndex;
+typedef int32_t ParameterIndex;
+typedef int32_t MethodIndex;
+typedef int32_t GenericMethodIndex;
+typedef int32_t PropertyIndex;
+typedef int32_t EventIndex;
+typedef int32_t GenericContainerIndex;
+typedef int32_t GenericParameterIndex;
+typedef int16_t GenericParameterConstraintIndex;
+typedef int32_t NestedTypeIndex;
+typedef int32_t InterfacesIndex;
+typedef int32_t VTableIndex;
+typedef int32_t InterfaceOffsetIndex;
+typedef int32_t RGCTXIndex;
+typedef int32_t StringIndex;
+typedef int32_t StringLiteralIndex;
+typedef int32_t GenericInstIndex;
+typedef int32_t ImageIndex;
+typedef int32_t AssemblyIndex;
+typedef int32_t InteropDataIndex;
+static const TypeIndex kTypeIndexInvalid = -1;
+static const TypeDefinitionIndex kTypeDefinitionIndexInvalid = -1;
+static const DefaultValueDataIndex kDefaultValueIndexNull = -1;
+static const CustomAttributeIndex kCustomAttributeIndexInvalid = -1;
+static const EventIndex kEventIndexInvalid = -1;
+static const FieldIndex kFieldIndexInvalid = -1;
+static const MethodIndex kMethodIndexInvalid = -1;
+static const PropertyIndex kPropertyIndexInvalid = -1;
+static const GenericContainerIndex kGenericContainerIndexInvalid = -1;
+static const GenericParameterIndex kGenericParameterIndexInvalid = -1;
+static const RGCTXIndex kRGCTXIndexInvalid = -1;
+static const StringLiteralIndex kStringLiteralIndexInvalid = -1;
+static const InteropDataIndex kInteropDataIndexInvalid = -1;
+typedef uint32_t EncodedMethodIndex;
+typedef enum Il2CppMetadataUsage
+{
+ kIl2CppMetadataUsageInvalid,
+ kIl2CppMetadataUsageTypeInfo,
+ kIl2CppMetadataUsageIl2CppType,
+ kIl2CppMetadataUsageMethodDef,
+ kIl2CppMetadataUsageFieldInfo,
+ kIl2CppMetadataUsageStringLiteral,
+ kIl2CppMetadataUsageMethodRef,
+} Il2CppMetadataUsage;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppTypeDefinitionMetadata Il2CppTypeDefinitionMetadata;
+typedef union Il2CppRGCTXDefinitionData
+{
+ int32_t rgctxDataDummy;
+ MethodIndex methodIndex;
+ TypeIndex typeIndex;
+} Il2CppRGCTXDefinitionData;
+typedef enum Il2CppRGCTXDataType
+{
+ IL2CPP_RGCTX_DATA_INVALID,
+ IL2CPP_RGCTX_DATA_TYPE,
+ IL2CPP_RGCTX_DATA_CLASS,
+ IL2CPP_RGCTX_DATA_METHOD,
+ IL2CPP_RGCTX_DATA_ARRAY,
+} Il2CppRGCTXDataType;
+typedef struct Il2CppRGCTXDefinition
+{
+ Il2CppRGCTXDataType type;
+ Il2CppRGCTXDefinitionData data;
+} Il2CppRGCTXDefinition;
+typedef struct Il2CppInterfaceOffsetPair
+{
+ TypeIndex interfaceTypeIndex;
+ int32_t offset;
+} Il2CppInterfaceOffsetPair;
+typedef struct Il2CppTypeDefinition
+{
+ StringIndex nameIndex;
+ StringIndex namespaceIndex;
+ TypeIndex byvalTypeIndex;
+ TypeIndex byrefTypeIndex;
+ TypeIndex declaringTypeIndex;
+ TypeIndex parentIndex;
+ TypeIndex elementTypeIndex;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t flags;
+ FieldIndex fieldStart;
+ MethodIndex methodStart;
+ EventIndex eventStart;
+ PropertyIndex propertyStart;
+ NestedTypeIndex nestedTypesStart;
+ InterfacesIndex interfacesStart;
+ VTableIndex vtableStart;
+ InterfacesIndex interfaceOffsetsStart;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint32_t bitfield;
+ uint32_t token;
+} Il2CppTypeDefinition;
+typedef struct Il2CppFieldDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ uint32_t token;
+} Il2CppFieldDefinition;
+typedef struct Il2CppFieldDefaultValue
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppFieldDefaultValue;
+typedef struct Il2CppFieldMarshaledSize
+{
+ FieldIndex fieldIndex;
+ TypeIndex typeIndex;
+ int32_t size;
+} Il2CppFieldMarshaledSize;
+typedef struct Il2CppFieldRef
+{
+ TypeIndex typeIndex;
+ FieldIndex fieldIndex;
+} Il2CppFieldRef;
+typedef struct Il2CppParameterDefinition
+{
+ StringIndex nameIndex;
+ uint32_t token;
+ TypeIndex typeIndex;
+} Il2CppParameterDefinition;
+typedef struct Il2CppParameterDefaultValue
+{
+ ParameterIndex parameterIndex;
+ TypeIndex typeIndex;
+ DefaultValueDataIndex dataIndex;
+} Il2CppParameterDefaultValue;
+typedef struct Il2CppMethodDefinition
+{
+ StringIndex nameIndex;
+ TypeDefinitionIndex declaringType;
+ TypeIndex returnType;
+ ParameterIndex parameterStart;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint16_t parameterCount;
+} Il2CppMethodDefinition;
+typedef struct Il2CppEventDefinition
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+ MethodIndex add;
+ MethodIndex remove;
+ MethodIndex raise;
+ uint32_t token;
+} Il2CppEventDefinition;
+typedef struct Il2CppPropertyDefinition
+{
+ StringIndex nameIndex;
+ MethodIndex get;
+ MethodIndex set;
+ uint32_t attrs;
+ uint32_t token;
+} Il2CppPropertyDefinition;
+typedef struct Il2CppMethodSpec
+{
+ MethodIndex methodDefinitionIndex;
+ GenericInstIndex classIndexIndex;
+ GenericInstIndex methodIndexIndex;
+} Il2CppMethodSpec;
+typedef struct Il2CppStringLiteral
+{
+ uint32_t length;
+ StringLiteralIndex dataIndex;
+} Il2CppStringLiteral;
+typedef struct
+{
+ MethodIndex methodIndex;
+ MethodIndex invokerIndex;
+} Il2CppGenericMethodIndices;
+typedef struct Il2CppGenericMethodFunctionsDefinitions
+{
+ GenericMethodIndex genericMethodIndex;
+ Il2CppGenericMethodIndices indices;
+} Il2CppGenericMethodFunctionsDefinitions;
+static const int kPublicKeyByteLength = 8;
+typedef struct Il2CppAssemblyNameDefinition
+{
+ StringIndex nameIndex;
+ StringIndex cultureIndex;
+ StringIndex hashValueIndex;
+ StringIndex publicKeyIndex;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyNameDefinition;
+typedef struct Il2CppImageDefinition
+{
+ StringIndex nameIndex;
+ AssemblyIndex assemblyIndex;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ MethodIndex entryPointIndex;
+ uint32_t token;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+} Il2CppImageDefinition;
+typedef struct Il2CppAssemblyDefinition
+{
+ ImageIndex imageIndex;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyNameDefinition aname;
+} Il2CppAssemblyDefinition;
+typedef struct Il2CppMetadataUsageList
+{
+ uint32_t start;
+ uint32_t count;
+} Il2CppMetadataUsageList;
+typedef struct Il2CppMetadataUsagePair
+{
+ uint32_t destinationIndex;
+ uint32_t encodedSourceIndex;
+} Il2CppMetadataUsagePair;
+typedef struct Il2CppCustomAttributeTypeRange
+{
+ uint32_t token;
+ int32_t start;
+ int32_t count;
+} Il2CppCustomAttributeTypeRange;
+typedef struct Il2CppRange
+{
+ int32_t start;
+ int32_t length;
+} Il2CppRange;
+typedef struct Il2CppWindowsRuntimeTypeNamePair
+{
+ StringIndex nameIndex;
+ TypeIndex typeIndex;
+} Il2CppWindowsRuntimeTypeNamePair;
+#pragma pack(push, p1,4)
+typedef struct Il2CppGlobalMetadataHeader
+{
+ int32_t sanity;
+ int32_t version;
+ int32_t stringLiteralOffset;
+ int32_t stringLiteralCount;
+ int32_t stringLiteralDataOffset;
+ int32_t stringLiteralDataCount;
+ int32_t stringOffset;
+ int32_t stringCount;
+ int32_t eventsOffset;
+ int32_t eventsCount;
+ int32_t propertiesOffset;
+ int32_t propertiesCount;
+ int32_t methodsOffset;
+ int32_t methodsCount;
+ int32_t parameterDefaultValuesOffset;
+ int32_t parameterDefaultValuesCount;
+ int32_t fieldDefaultValuesOffset;
+ int32_t fieldDefaultValuesCount;
+ int32_t fieldAndParameterDefaultValueDataOffset;
+ int32_t fieldAndParameterDefaultValueDataCount;
+ int32_t fieldMarshaledSizesOffset;
+ int32_t fieldMarshaledSizesCount;
+ int32_t parametersOffset;
+ int32_t parametersCount;
+ int32_t fieldsOffset;
+ int32_t fieldsCount;
+ int32_t genericParametersOffset;
+ int32_t genericParametersCount;
+ int32_t genericParameterConstraintsOffset;
+ int32_t genericParameterConstraintsCount;
+ int32_t genericContainersOffset;
+ int32_t genericContainersCount;
+ int32_t nestedTypesOffset;
+ int32_t nestedTypesCount;
+ int32_t interfacesOffset;
+ int32_t interfacesCount;
+ int32_t vtableMethodsOffset;
+ int32_t vtableMethodsCount;
+ int32_t interfaceOffsetsOffset;
+ int32_t interfaceOffsetsCount;
+ int32_t typeDefinitionsOffset;
+ int32_t typeDefinitionsCount;
+ int32_t imagesOffset;
+ int32_t imagesCount;
+ int32_t assembliesOffset;
+ int32_t assembliesCount;
+ int32_t metadataUsageListsOffset;
+ int32_t metadataUsageListsCount;
+ int32_t metadataUsagePairsOffset;
+ int32_t metadataUsagePairsCount;
+ int32_t fieldRefsOffset;
+ int32_t fieldRefsCount;
+ int32_t referencedAssembliesOffset;
+ int32_t referencedAssembliesCount;
+ int32_t attributesInfoOffset;
+ int32_t attributesInfoCount;
+ int32_t attributeTypesOffset;
+ int32_t attributeTypesCount;
+ int32_t unresolvedVirtualCallParameterTypesOffset;
+ int32_t unresolvedVirtualCallParameterTypesCount;
+ int32_t unresolvedVirtualCallParameterRangesOffset;
+ int32_t unresolvedVirtualCallParameterRangesCount;
+ int32_t windowsRuntimeTypeNamesOffset;
+ int32_t windowsRuntimeTypeNamesSize;
+ int32_t exportedTypeDefinitionsOffset;
+ int32_t exportedTypeDefinitionsCount;
+} Il2CppGlobalMetadataHeader;
+#pragma pack(pop, p1)
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct Il2CppType Il2CppType;
+typedef struct Il2CppArrayType
+{
+ const Il2CppType* etype;
+ uint8_t rank;
+ uint8_t numsizes;
+ uint8_t numlobounds;
+ int *sizes;
+ int *lobounds;
+} Il2CppArrayType;
+typedef struct Il2CppGenericInst
+{
+ uint32_t type_argc;
+ const Il2CppType **type_argv;
+} Il2CppGenericInst;
+typedef struct Il2CppGenericContext
+{
+ const Il2CppGenericInst *class_inst;
+ const Il2CppGenericInst *method_inst;
+} Il2CppGenericContext;
+typedef struct Il2CppGenericParameter
+{
+ GenericContainerIndex ownerIndex;
+ StringIndex nameIndex;
+ GenericParameterConstraintIndex constraintsStart;
+ int16_t constraintsCount;
+ uint16_t num;
+ uint16_t flags;
+} Il2CppGenericParameter;
+typedef struct Il2CppGenericContainer
+{
+ int32_t ownerIndex;
+ int32_t type_argc;
+ int32_t is_method;
+ GenericParameterIndex genericParameterStart;
+} Il2CppGenericContainer;
+typedef struct Il2CppGenericClass
+{
+ TypeDefinitionIndex typeDefinitionIndex;
+ Il2CppGenericContext context;
+ Il2CppClass *cached_class;
+} Il2CppGenericClass;
+typedef struct Il2CppGenericMethod
+{
+ const MethodInfo* methodDefinition;
+ Il2CppGenericContext context;
+} Il2CppGenericMethod;
+typedef struct Il2CppType
+{
+ union
+ {
+ void* dummy;
+ TypeDefinitionIndex klassIndex;
+ const Il2CppType *type;
+ Il2CppArrayType *array;
+ GenericParameterIndex genericParameterIndex;
+ Il2CppGenericClass *generic_class;
+ } data;
+ unsigned int attrs : 16;
+ Il2CppTypeEnum type : 8;
+ unsigned int num_mods : 6;
+ unsigned int byref : 1;
+ unsigned int pinned : 1;
+} Il2CppType;
+typedef enum Il2CppCallConvention
+{
+ IL2CPP_CALL_DEFAULT,
+ IL2CPP_CALL_C,
+ IL2CPP_CALL_STDCALL,
+ IL2CPP_CALL_THISCALL,
+ IL2CPP_CALL_FASTCALL,
+ IL2CPP_CALL_VARARG
+} Il2CppCallConvention;
+typedef enum Il2CppCharSet
+{
+ CHARSET_ANSI,
+ CHARSET_UNICODE,
+ CHARSET_NOT_SPECIFIED
+} Il2CppCharSet;
+typedef struct Il2CppHString__
+{
+ int unused;
+} Il2CppHString__;
+typedef Il2CppHString__* Il2CppHString;
+typedef struct Il2CppHStringHeader
+{
+ union
+ {
+ void* Reserved1;
+ char Reserved2[24];
+ } Reserved;
+} Il2CppHStringHeader;
+typedef struct Il2CppGuid
+{
+ uint32_t data1;
+ uint16_t data2;
+ uint16_t data3;
+ uint8_t data4[8];
+} Il2CppGuid;
+typedef struct Il2CppSafeArrayBound
+{
+ uint32_t element_count;
+ int32_t lower_bound;
+} Il2CppSafeArrayBound;
+typedef struct Il2CppSafeArray
+{
+ uint16_t dimension_count;
+ uint16_t features;
+ uint32_t element_size;
+ uint32_t lock_count;
+ void* data;
+ Il2CppSafeArrayBound bounds[1];
+} Il2CppSafeArray;
+typedef struct Il2CppWin32Decimal
+{
+ uint16_t reserved;
+ union
+ {
+ struct
+ {
+ uint8_t scale;
+ uint8_t sign;
+ } s;
+ uint16_t signscale;
+ } u;
+ uint32_t hi32;
+ union
+ {
+ struct
+ {
+ uint32_t lo32;
+ uint32_t mid32;
+ } s2;
+ uint64_t lo64;
+ } u2;
+} Il2CppWin32Decimal;
+typedef int16_t IL2CPP_VARIANT_BOOL;
+typedef enum Il2CppVarType
+{
+ IL2CPP_VT_EMPTY = 0,
+ IL2CPP_VT_NULL = 1,
+ IL2CPP_VT_I2 = 2,
+ IL2CPP_VT_I4 = 3,
+ IL2CPP_VT_R4 = 4,
+ IL2CPP_VT_R8 = 5,
+ IL2CPP_VT_CY = 6,
+ IL2CPP_VT_DATE = 7,
+ IL2CPP_VT_BSTR = 8,
+ IL2CPP_VT_DISPATCH = 9,
+ IL2CPP_VT_ERROR = 10,
+ IL2CPP_VT_BOOL = 11,
+ IL2CPP_VT_VARIANT = 12,
+ IL2CPP_VT_UNKNOWN = 13,
+ IL2CPP_VT_DECIMAL = 14,
+ IL2CPP_VT_I1 = 16,
+ IL2CPP_VT_UI1 = 17,
+ IL2CPP_VT_UI2 = 18,
+ IL2CPP_VT_UI4 = 19,
+ IL2CPP_VT_I8 = 20,
+ IL2CPP_VT_UI8 = 21,
+ IL2CPP_VT_INT = 22,
+ IL2CPP_VT_UINT = 23,
+ IL2CPP_VT_VOID = 24,
+ IL2CPP_VT_HRESULT = 25,
+ IL2CPP_VT_PTR = 26,
+ IL2CPP_VT_SAFEARRAY = 27,
+ IL2CPP_VT_CARRAY = 28,
+ IL2CPP_VT_USERDEFINED = 29,
+ IL2CPP_VT_LPSTR = 30,
+ IL2CPP_VT_LPWSTR = 31,
+ IL2CPP_VT_RECORD = 36,
+ IL2CPP_VT_INT_PTR = 37,
+ IL2CPP_VT_UINT_PTR = 38,
+ IL2CPP_VT_FILETIME = 64,
+ IL2CPP_VT_BLOB = 65,
+ IL2CPP_VT_STREAM = 66,
+ IL2CPP_VT_STORAGE = 67,
+ IL2CPP_VT_STREAMED_OBJECT = 68,
+ IL2CPP_VT_STORED_OBJECT = 69,
+ IL2CPP_VT_BLOB_OBJECT = 70,
+ IL2CPP_VT_CF = 71,
+ IL2CPP_VT_CLSID = 72,
+ IL2CPP_VT_VERSIONED_STREAM = 73,
+ IL2CPP_VT_BSTR_BLOB = 0xfff,
+ IL2CPP_VT_VECTOR = 0x1000,
+ IL2CPP_VT_ARRAY = 0x2000,
+ IL2CPP_VT_BYREF = 0x4000,
+ IL2CPP_VT_RESERVED = 0x8000,
+ IL2CPP_VT_ILLEGAL = 0xffff,
+ IL2CPP_VT_ILLEGALMASKED = 0xfff,
+ IL2CPP_VT_TYPEMASK = 0xfff,
+} Il2CppVarType;
+typedef struct Il2CppVariant Il2CppVariant;
+typedef struct Il2CppIUnknown Il2CppIUnknown;
+typedef struct Il2CppVariant
+{
+ union
+ {
+ struct __tagVARIANT
+ {
+ uint16_t type;
+ uint16_t reserved1;
+ uint16_t reserved2;
+ uint16_t reserved3;
+ union
+ {
+ int64_t llVal;
+ int32_t lVal;
+ uint8_t bVal;
+ int16_t iVal;
+ float fltVal;
+ double dblVal;
+ IL2CPP_VARIANT_BOOL boolVal;
+ int32_t scode;
+ int64_t cyVal;
+ double date;
+ Il2CppChar* bstrVal;
+ Il2CppIUnknown* punkVal;
+ void* pdispVal;
+ Il2CppSafeArray* parray;
+ uint8_t* pbVal;
+ int16_t* piVal;
+ int32_t* plVal;
+ int64_t* pllVal;
+ float* pfltVal;
+ double* pdblVal;
+ IL2CPP_VARIANT_BOOL* pboolVal;
+ int32_t* pscode;
+ int64_t* pcyVal;
+ double* pdate;
+ Il2CppChar* pbstrVal;
+ Il2CppIUnknown** ppunkVal;
+ void** ppdispVal;
+ Il2CppSafeArray** pparray;
+ Il2CppVariant* pvarVal;
+ void* byref;
+ char cVal;
+ uint16_t uiVal;
+ uint32_t ulVal;
+ uint64_t ullVal;
+ int intVal;
+ unsigned int uintVal;
+ Il2CppWin32Decimal* pdecVal;
+ char* pcVal;
+ uint16_t* puiVal;
+ uint32_t* pulVal;
+ uint64_t* pullVal;
+ int* pintVal;
+ unsigned int* puintVal;
+ struct __tagBRECORD
+ {
+ void* pvRecord;
+ void* pRecInfo;
+ } n4;
+ } n3;
+ } n2;
+ Il2CppWin32Decimal decVal;
+ } n1;
+} Il2CppVariant;
+typedef struct Il2CppFileTime
+{
+ uint32_t low;
+ uint32_t high;
+} Il2CppFileTime;
+typedef struct Il2CppStatStg
+{
+ Il2CppChar* name;
+ uint32_t type;
+ uint64_t size;
+ Il2CppFileTime mtime;
+ Il2CppFileTime ctime;
+ Il2CppFileTime atime;
+ uint32_t mode;
+ uint32_t locks;
+ Il2CppGuid clsid;
+ uint32_t state;
+ uint32_t reserved;
+} Il2CppStatStg;
+typedef enum Il2CppWindowsRuntimeTypeKind
+{
+ kTypeKindPrimitive = 0,
+ kTypeKindMetadata,
+ kTypeKindCustom
+} Il2CppWindowsRuntimeTypeKind;
+typedef struct Il2CppWindowsRuntimeTypeName
+{
+ Il2CppHString typeName;
+ enum Il2CppWindowsRuntimeTypeKind typeKind;
+} Il2CppWindowsRuntimeTypeName;
+typedef void (*PInvokeMarshalToNativeFunc)(void* managedStructure, void* marshaledStructure);
+typedef void (*PInvokeMarshalFromNativeFunc)(void* marshaledStructure, void* managedStructure);
+typedef void (*PInvokeMarshalCleanupFunc)(void* marshaledStructure);
+typedef struct Il2CppIUnknown* (*CreateCCWFunc)(Il2CppObject* obj);
+typedef struct Il2CppInteropData
+{
+ Il2CppMethodPointer delegatePInvokeWrapperFunction;
+ PInvokeMarshalToNativeFunc pinvokeMarshalToNativeFunction;
+ PInvokeMarshalFromNativeFunc pinvokeMarshalFromNativeFunction;
+ PInvokeMarshalCleanupFunc pinvokeMarshalCleanupFunction;
+ CreateCCWFunc createCCWFunction;
+ const Il2CppGuid* guid;
+ const Il2CppType* type;
+} Il2CppInteropData;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct Il2CppGuid Il2CppGuid;
+typedef struct Il2CppImage Il2CppImage;
+typedef struct Il2CppAppDomain Il2CppAppDomain;
+typedef struct Il2CppAppDomainSetup Il2CppAppDomainSetup;
+typedef struct Il2CppDelegate Il2CppDelegate;
+typedef struct Il2CppAppContext Il2CppAppContext;
+typedef struct Il2CppNameToTypeDefinitionIndexHashTable Il2CppNameToTypeDefinitionIndexHashTable;
+typedef struct Il2CppCodeGenModule Il2CppCodeGenModule;
+typedef struct VirtualInvokeData
+{
+ Il2CppMethodPointer methodPtr;
+ const MethodInfo* method;
+} VirtualInvokeData;
+typedef enum Il2CppTypeNameFormat
+{
+ IL2CPP_TYPE_NAME_FORMAT_IL,
+ IL2CPP_TYPE_NAME_FORMAT_REFLECTION,
+ IL2CPP_TYPE_NAME_FORMAT_FULL_NAME,
+ IL2CPP_TYPE_NAME_FORMAT_ASSEMBLY_QUALIFIED
+} Il2CppTypeNameFormat;
+typedef struct Il2CppDefaults
+{
+ Il2CppImage *corlib;
+ Il2CppClass *object_class;
+ Il2CppClass *byte_class;
+ Il2CppClass *void_class;
+ Il2CppClass *boolean_class;
+ Il2CppClass *sbyte_class;
+ Il2CppClass *int16_class;
+ Il2CppClass *uint16_class;
+ Il2CppClass *int32_class;
+ Il2CppClass *uint32_class;
+ Il2CppClass *int_class;
+ Il2CppClass *uint_class;
+ Il2CppClass *int64_class;
+ Il2CppClass *uint64_class;
+ Il2CppClass *single_class;
+ Il2CppClass *double_class;
+ Il2CppClass *char_class;
+ Il2CppClass *string_class;
+ Il2CppClass *enum_class;
+ Il2CppClass *array_class;
+ Il2CppClass *delegate_class;
+ Il2CppClass *multicastdelegate_class;
+ Il2CppClass *asyncresult_class;
+ Il2CppClass *manualresetevent_class;
+ Il2CppClass *typehandle_class;
+ Il2CppClass *fieldhandle_class;
+ Il2CppClass *methodhandle_class;
+ Il2CppClass *systemtype_class;
+ Il2CppClass *monotype_class;
+ Il2CppClass *exception_class;
+ Il2CppClass *threadabortexception_class;
+ Il2CppClass *thread_class;
+ Il2CppClass *internal_thread_class;
+ Il2CppClass *appdomain_class;
+ Il2CppClass *appdomain_setup_class;
+ Il2CppClass *field_info_class;
+ Il2CppClass *method_info_class;
+ Il2CppClass *property_info_class;
+ Il2CppClass *event_info_class;
+ Il2CppClass *mono_event_info_class;
+ Il2CppClass *stringbuilder_class;
+ Il2CppClass *stack_frame_class;
+ Il2CppClass *stack_trace_class;
+ Il2CppClass *marshal_class;
+ Il2CppClass *typed_reference_class;
+ Il2CppClass *marshalbyrefobject_class;
+ Il2CppClass *generic_ilist_class;
+ Il2CppClass *generic_icollection_class;
+ Il2CppClass *generic_ienumerable_class;
+ Il2CppClass *generic_ireadonlylist_class;
+ Il2CppClass *generic_ireadonlycollection_class;
+ Il2CppClass *runtimetype_class;
+ Il2CppClass *generic_nullable_class;
+ Il2CppClass *il2cpp_com_object_class;
+ Il2CppClass *attribute_class;
+ Il2CppClass *customattribute_data_class;
+ Il2CppClass *version;
+ Il2CppClass *culture_info;
+ Il2CppClass *async_call_class;
+ Il2CppClass *assembly_class;
+ Il2CppClass *mono_assembly_class;
+ Il2CppClass *assembly_name_class;
+ Il2CppClass *mono_field_class;
+ Il2CppClass *mono_method_class;
+ Il2CppClass *mono_method_info_class;
+ Il2CppClass *mono_property_info_class;
+ Il2CppClass *parameter_info_class;
+ Il2CppClass *mono_parameter_info_class;
+ Il2CppClass *module_class;
+ Il2CppClass *pointer_class;
+ Il2CppClass *system_exception_class;
+ Il2CppClass *argument_exception_class;
+ Il2CppClass *wait_handle_class;
+ Il2CppClass *safe_handle_class;
+ Il2CppClass *sort_key_class;
+ Il2CppClass *dbnull_class;
+ Il2CppClass *error_wrapper_class;
+ Il2CppClass *missing_class;
+ Il2CppClass *value_type_class;
+ Il2CppClass *threadpool_wait_callback_class;
+ MethodInfo *threadpool_perform_wait_callback_method;
+ Il2CppClass *mono_method_message_class;
+ Il2CppClass* ireference_class;
+ Il2CppClass* ireferencearray_class;
+ Il2CppClass* ikey_value_pair_class;
+ Il2CppClass* key_value_pair_class;
+ Il2CppClass* windows_foundation_uri_class;
+ Il2CppClass* windows_foundation_iuri_runtime_class_class;
+ Il2CppClass* system_uri_class;
+ Il2CppClass* system_guid_class;
+ Il2CppClass* sbyte_shared_enum;
+ Il2CppClass* int16_shared_enum;
+ Il2CppClass* int32_shared_enum;
+ Il2CppClass* int64_shared_enum;
+ Il2CppClass* byte_shared_enum;
+ Il2CppClass* uint16_shared_enum;
+ Il2CppClass* uint32_shared_enum;
+ Il2CppClass* uint64_shared_enum;
+} Il2CppDefaults;
+extern Il2CppDefaults il2cpp_defaults;
+typedef struct Il2CppClass Il2CppClass;
+typedef struct MethodInfo MethodInfo;
+typedef struct FieldInfo FieldInfo;
+typedef struct Il2CppObject Il2CppObject;
+typedef struct MemberInfo MemberInfo;
+typedef struct CustomAttributesCache
+{
+ int count;
+ Il2CppObject** attributes;
+} CustomAttributesCache;
+typedef void (*CustomAttributesCacheGenerator)(CustomAttributesCache*);
+typedef struct FieldInfo
+{
+ const char* name;
+ const Il2CppType* type;
+ Il2CppClass *parent;
+ int32_t offset;
+ uint32_t token;
+} FieldInfo;
+typedef struct PropertyInfo
+{
+ Il2CppClass *parent;
+ const char *name;
+ const MethodInfo *get;
+ const MethodInfo *set;
+ uint32_t attrs;
+ uint32_t token;
+} PropertyInfo;
+typedef struct EventInfo
+{
+ const char* name;
+ const Il2CppType* eventType;
+ Il2CppClass* parent;
+ const MethodInfo* add;
+ const MethodInfo* remove;
+ const MethodInfo* raise;
+ uint32_t token;
+} EventInfo;
+typedef struct ParameterInfo
+{
+ const char* name;
+ int32_t position;
+ uint32_t token;
+ const Il2CppType* parameter_type;
+} ParameterInfo;
+typedef void* (*InvokerMethod)(Il2CppMethodPointer, const MethodInfo*, void*, void**);
+typedef enum MethodVariableKind
+{
+ kMethodVariableKind_This,
+ kMethodVariableKind_Parameter,
+ kMethodVariableKind_LocalVariable
+} MethodVariableKind;
+typedef enum SequencePointKind
+{
+ kSequencePointKind_Normal,
+ kSequencePointKind_StepOut
+} SequencePointKind;
+typedef struct Il2CppMethodExecutionContextInfo
+{
+ TypeIndex typeIndex;
+ int32_t nameIndex;
+ int32_t scopeIndex;
+} Il2CppMethodExecutionContextInfo;
+typedef struct Il2CppMethodExecutionContextInfoIndex
+{
+ int32_t startIndex;
+ int32_t count;
+} Il2CppMethodExecutionContextInfoIndex;
+typedef struct Il2CppMethodScope
+{
+ int32_t startOffset;
+ int32_t endOffset;
+} Il2CppMethodScope;
+typedef struct Il2CppMethodHeaderInfo
+{
+ int32_t code_size;
+ int32_t startScope;
+ int32_t numScopes;
+} Il2CppMethodHeaderInfo;
+typedef struct Il2CppSequencePointSourceFile
+{
+ const char *file;
+ uint8_t hash[16];
+} Il2CppSequencePointSourceFile;
+typedef struct Il2CppTypeSourceFilePair
+{
+ TypeDefinitionIndex klassIndex;
+ int32_t sourceFileIndex;
+} Il2CppTypeSourceFilePair;
+typedef struct Il2CppSequencePoint
+{
+ MethodIndex methodDefinitionIndex;
+ int32_t sourceFileIndex;
+ int32_t lineStart, lineEnd;
+ int32_t columnStart, columnEnd;
+ int32_t ilOffset;
+ SequencePointKind kind;
+ int32_t isActive;
+ int32_t id;
+} Il2CppSequencePoint;
+typedef struct Il2CppCatchPoint
+{
+ MethodIndex methodDefinitionIndex;
+ TypeIndex catchTypeIndex;
+ int32_t ilOffset;
+ int8_t tryId;
+ int8_t parentTryId;
+} Il2CppCatchPoint;
+typedef struct Il2CppDebuggerMetadataRegistration
+{
+ Il2CppMethodExecutionContextInfo* methodExecutionContextInfos;
+ Il2CppMethodExecutionContextInfoIndex* methodExecutionContextInfoIndexes;
+ Il2CppMethodScope* methodScopes;
+ Il2CppMethodHeaderInfo* methodHeaderInfos;
+ Il2CppSequencePointSourceFile* sequencePointSourceFiles;
+ int32_t numSequencePoints;
+ Il2CppSequencePoint* sequencePoints;
+ int32_t numCatchPoints;
+ Il2CppCatchPoint* catchPoints;
+ int32_t numTypeSourceFileEntries;
+ Il2CppTypeSourceFilePair* typeSourceFiles;
+ const char** methodExecutionContextInfoStrings;
+} Il2CppDebuggerMetadataRegistration;
+typedef union Il2CppRGCTXData
+{
+ void* rgctxDataDummy;
+ const MethodInfo* method;
+ const Il2CppType* type;
+ Il2CppClass* klass;
+} Il2CppRGCTXData;
+typedef struct MethodInfo
+{
+ Il2CppMethodPointer methodPointer;
+ InvokerMethod invoker_method;
+ const char* name;
+ Il2CppClass *klass;
+ const Il2CppType *return_type;
+ const ParameterInfo* parameters;
+ union
+ {
+ const Il2CppRGCTXData* rgctx_data;
+ const Il2CppMethodDefinition* methodDefinition;
+ };
+ union
+ {
+ const Il2CppGenericMethod* genericMethod;
+ const Il2CppGenericContainer* genericContainer;
+ };
+ uint32_t token;
+ uint16_t flags;
+ uint16_t iflags;
+ uint16_t slot;
+ uint8_t parameters_count;
+ uint8_t is_generic : 1;
+ uint8_t is_inflated : 1;
+ uint8_t wrapper_type : 1;
+ uint8_t is_marshaled_from_native : 1;
+} MethodInfo;
+typedef struct Il2CppRuntimeInterfaceOffsetPair
+{
+ Il2CppClass* interfaceType;
+ int32_t offset;
+} Il2CppRuntimeInterfaceOffsetPair;
+typedef struct Il2CppClass
+{
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass *generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ Il2CppClass** typeHierarchy;
+ void *unity_user_data;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+ __attribute__((aligned(8))) size_t cctor_thread;
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass;
+
+typedef struct Il2CppClass_0 {
+ const Il2CppImage* image;
+ void* gc_desc;
+ const char* name;
+ const char* namespaze;
+ Il2CppType byval_arg;
+ Il2CppType this_arg;
+ Il2CppClass* element_class;
+ Il2CppClass* castClass;
+ Il2CppClass* declaringType;
+ Il2CppClass* parent;
+ Il2CppGenericClass * generic_class;
+ const Il2CppTypeDefinition* typeDefinition;
+ const Il2CppInteropData* interopData;
+ Il2CppClass* klass;
+ FieldInfo* fields;
+ const EventInfo* events;
+ const PropertyInfo* properties;
+ const MethodInfo** methods;
+ Il2CppClass** nestedTypes;
+ Il2CppClass** implementedInterfaces;
+} Il2CppClass_0;
+
+typedef struct Il2CppClass_1 {
+ Il2CppClass** typeHierarchy;
+ void * unity_user_data;
+ uint32_t initializationExceptionGCHandle;
+ uint32_t cctor_started;
+ uint32_t cctor_finished;
+#ifdef IS_32BIT
+ uint32_t cctor_thread;
+#else
+ __attribute__((aligned(8))) size_t cctor_thread;
+#endif
+ GenericContainerIndex genericContainerIndex;
+ uint32_t instance_size;
+ uint32_t actualSize;
+ uint32_t element_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+ int32_t thread_static_fields_offset;
+ uint32_t flags;
+ uint32_t token;
+ uint16_t method_count;
+ uint16_t property_count;
+ uint16_t field_count;
+ uint16_t event_count;
+ uint16_t nested_type_count;
+ uint16_t vtable_count;
+ uint16_t interfaces_count;
+ uint16_t interface_offsets_count;
+ uint8_t typeHierarchyDepth;
+ uint8_t genericRecursionDepth;
+ uint8_t rank;
+ uint8_t minimumAlignment;
+ uint8_t naturalAligment;
+ uint8_t packingSize;
+ uint8_t initialized_and_no_error : 1;
+ uint8_t valuetype : 1;
+ uint8_t initialized : 1;
+ uint8_t enumtype : 1;
+ uint8_t is_generic : 1;
+ uint8_t has_references : 1;
+ uint8_t init_pending : 1;
+ uint8_t size_inited : 1;
+ uint8_t has_finalize : 1;
+ uint8_t has_cctor : 1;
+ uint8_t is_blittable : 1;
+ uint8_t is_import_or_windows_runtime : 1;
+ uint8_t is_vtable_initialized : 1;
+ uint8_t has_initialization_error : 1;
+} Il2CppClass_1;
+
+typedef struct __attribute__((aligned(8))) Il2CppClass_Merged {
+ struct Il2CppClass_0 _0;
+ Il2CppRuntimeInterfaceOffsetPair* interfaceOffsets;
+ void* static_fields;
+ const Il2CppRGCTXData* rgctx_data;
+ struct Il2CppClass_1 _1;
+ VirtualInvokeData vtable[32];
+} Il2CppClass_Merged;
+
+typedef struct Il2CppTypeDefinitionSizes
+{
+ uint32_t instance_size;
+ int32_t native_size;
+ uint32_t static_fields_size;
+ uint32_t thread_static_fields_size;
+} Il2CppTypeDefinitionSizes;
+typedef struct Il2CppDomain
+{
+ Il2CppAppDomain* domain;
+ Il2CppAppDomainSetup* setup;
+ Il2CppAppContext* default_context;
+ const char* friendly_name;
+ uint32_t domain_id;
+ volatile int threadpool_jobs;
+ void* agent_info;
+} Il2CppDomain;
+typedef struct Il2CppAssemblyName
+{
+ const char* name;
+ const char* culture;
+ const char* hash_value;
+ const char* public_key;
+ uint32_t hash_alg;
+ int32_t hash_len;
+ uint32_t flags;
+ int32_t major;
+ int32_t minor;
+ int32_t build;
+ int32_t revision;
+ uint8_t public_key_token[8];
+} Il2CppAssemblyName;
+typedef struct Il2CppImage
+{
+ const char* name;
+ const char *nameNoExt;
+ Il2CppAssembly* assembly;
+ TypeDefinitionIndex typeStart;
+ uint32_t typeCount;
+ TypeDefinitionIndex exportedTypeStart;
+ uint32_t exportedTypeCount;
+ CustomAttributeIndex customAttributeStart;
+ uint32_t customAttributeCount;
+ MethodIndex entryPointIndex;
+ Il2CppNameToTypeDefinitionIndexHashTable * nameToClassHashTable;
+ const Il2CppCodeGenModule* codeGenModule;
+ uint32_t token;
+ uint8_t dynamic;
+} Il2CppImage;
+typedef struct Il2CppAssembly
+{
+ Il2CppImage* image;
+ uint32_t token;
+ int32_t referencedAssemblyStart;
+ int32_t referencedAssemblyCount;
+ Il2CppAssemblyName aname;
+} Il2CppAssembly;
+typedef struct Il2CppCodeGenOptions
+{
+ uint8_t enablePrimitiveValueTypeGenericSharing;
+} Il2CppCodeGenOptions;
+typedef struct Il2CppTokenIndexPair
+{
+ uint32_t token;
+ int32_t index;
+} Il2CppTokenIndexPair;
+typedef struct Il2CppTokenRangePair
+{
+ uint32_t token;
+ Il2CppRange range;
+} Il2CppTokenRangePair;
+typedef struct Il2CppTokenIndexMethodTuple
+{
+ uint32_t token;
+ int32_t index;
+ void** method;
+ uint32_t genericMethodIndex;
+} Il2CppTokenIndexMethodTuple;
+typedef struct Il2CppWindowsRuntimeFactoryTableEntry
+{
+ const Il2CppType* type;
+ Il2CppMethodPointer createFactoryFunction;
+} Il2CppWindowsRuntimeFactoryTableEntry;
+typedef struct Il2CppCodeGenModule
+{
+ const char* moduleName;
+ const uint32_t methodPointerCount;
+ const Il2CppMethodPointer* methodPointers;
+ const int32_t* invokerIndices;
+ const uint32_t reversePInvokeWrapperCount;
+ const Il2CppTokenIndexMethodTuple* reversePInvokeWrapperIndices;
+ const uint32_t rgctxRangesCount;
+ const Il2CppTokenRangePair* rgctxRanges;
+ const uint32_t rgctxsCount;
+ const Il2CppRGCTXDefinition* rgctxs;
+ const Il2CppDebuggerMetadataRegistration *debuggerMetadata;
+} Il2CppCodeGenModule;
+typedef struct Il2CppCodeRegistration
+{
+ uint32_t reversePInvokeWrapperCount;
+ const Il2CppMethodPointer* reversePInvokeWrappers;
+ uint32_t genericMethodPointersCount;
+ const Il2CppMethodPointer* genericMethodPointers;
+ uint32_t invokerPointersCount;
+ const InvokerMethod* invokerPointers;
+ CustomAttributeIndex customAttributeCount;
+ const CustomAttributesCacheGenerator* customAttributeGenerators;
+ uint32_t unresolvedVirtualCallCount;
+ const Il2CppMethodPointer* unresolvedVirtualCallPointers;
+ uint32_t interopDataCount;
+ Il2CppInteropData* interopData;
+ uint32_t windowsRuntimeFactoryCount;
+ Il2CppWindowsRuntimeFactoryTableEntry* windowsRuntimeFactoryTable;
+ uint32_t codeGenModulesCount;
+ const Il2CppCodeGenModule** codeGenModules;
+} Il2CppCodeRegistration;
+typedef struct Il2CppMetadataRegistration
+{
+ int32_t genericClassesCount;
+ Il2CppGenericClass* const * genericClasses;
+ int32_t genericInstsCount;
+ const Il2CppGenericInst* const * genericInsts;
+ int32_t genericMethodTableCount;
+ const Il2CppGenericMethodFunctionsDefinitions* genericMethodTable;
+ int32_t typesCount;
+ const Il2CppType* const * types;
+ int32_t methodSpecsCount;
+ const Il2CppMethodSpec* methodSpecs;
+ FieldIndex fieldOffsetsCount;
+ const int32_t** fieldOffsets;
+ TypeDefinitionIndex typeDefinitionsSizesCount;
+ const Il2CppTypeDefinitionSizes** typeDefinitionsSizes;
+ const size_t metadataUsagesCount;
+ void** const* metadataUsages;
+} Il2CppMetadataRegistration;
+typedef struct Il2CppPerfCounters
+{
+ uint32_t jit_methods;
+ uint32_t jit_bytes;
+ uint32_t jit_time;
+ uint32_t jit_failures;
+ uint32_t exceptions_thrown;
+ uint32_t exceptions_filters;
+ uint32_t exceptions_finallys;
+ uint32_t exceptions_depth;
+ uint32_t aspnet_requests_queued;
+ uint32_t aspnet_requests;
+ uint32_t gc_collections0;
+ uint32_t gc_collections1;
+ uint32_t gc_collections2;
+ uint32_t gc_promotions0;
+ uint32_t gc_promotions1;
+ uint32_t gc_promotion_finalizers;
+ uint32_t gc_gen0size;
+ uint32_t gc_gen1size;
+ uint32_t gc_gen2size;
+ uint32_t gc_lossize;
+ uint32_t gc_fin_survivors;
+ uint32_t gc_num_handles;
+ uint32_t gc_allocated;
+ uint32_t gc_induced;
+ uint32_t gc_time;
+ uint32_t gc_total_bytes;
+ uint32_t gc_committed_bytes;
+ uint32_t gc_reserved_bytes;
+ uint32_t gc_num_pinned;
+ uint32_t gc_sync_blocks;
+ uint32_t remoting_calls;
+ uint32_t remoting_channels;
+ uint32_t remoting_proxies;
+ uint32_t remoting_classes;
+ uint32_t remoting_objects;
+ uint32_t remoting_contexts;
+ uint32_t loader_classes;
+ uint32_t loader_total_classes;
+ uint32_t loader_appdomains;
+ uint32_t loader_total_appdomains;
+ uint32_t loader_assemblies;
+ uint32_t loader_total_assemblies;
+ uint32_t loader_failures;
+ uint32_t loader_bytes;
+ uint32_t loader_appdomains_uloaded;
+ uint32_t thread_contentions;
+ uint32_t thread_queue_len;
+ uint32_t thread_queue_max;
+ uint32_t thread_num_logical;
+ uint32_t thread_num_physical;
+ uint32_t thread_cur_recognized;
+ uint32_t thread_num_recognized;
+ uint32_t interop_num_ccw;
+ uint32_t interop_num_stubs;
+ uint32_t interop_num_marshals;
+ uint32_t security_num_checks;
+ uint32_t security_num_link_checks;
+ uint32_t security_time;
+ uint32_t security_depth;
+ uint32_t unused;
+ uint64_t threadpool_workitems;
+ uint64_t threadpool_ioworkitems;
+ unsigned int threadpool_threads;
+ unsigned int threadpool_iothreads;
+} Il2CppPerfCounters;
+
+struct MonitorData;
+struct Il2CppObject {
+ struct Il2CppClass *klass;
+ struct MonitorData *monitor;
+};
+typedef int32_t il2cpp_array_lower_bound_t;
+struct Il2CppArrayBounds {
+ il2cpp_array_size_t length;
+ il2cpp_array_lower_bound_t lower_bound;
+};
+struct Il2CppArray {
+ struct Il2CppObject obj;
+ struct Il2CppArrayBounds *bounds;
+ il2cpp_array_size_t max_length;
+ /* vector must be 8-byte aligned.
+ On 64-bit platforms, this happens naturally.
+ On 32-bit platforms, sizeof(obj)=8, sizeof(bounds)=4 and sizeof(max_length)=4 so it's also already aligned. */
+ void *vector[32];
+};
+struct Il2CppString {
+ struct Il2CppObject object;
+ int32_t length;
+ uint16_t chars[32];
+};
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/UnityHeader.cs b/Il2CppInspector.Common/Outputs/UnityHeaders/UnityHeader.cs
new file mode 100644
index 0000000..a8e2252
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/UnityHeader.cs
@@ -0,0 +1,81 @@
+using System.Reflection;
+using System.IO;
+using System.Linq;
+using System.Collections.Generic;
+using System;
+
+namespace Il2CppInspector.Outputs.UnityHeaders
+{
+ public class UnityHeader
+ {
+ public double MetadataVersion { get; }
+ public UnityVersion MinVersion { get; }
+ public UnityVersion MaxVersion { get; }
+ public string HeaderFilename { get; }
+ private UnityHeader(string headerFilename) {
+ HeaderFilename = headerFilename;
+ var bits = headerFilename.Replace(".h", "").Split("-");
+ MetadataVersion = double.Parse(bits[0]);
+ MinVersion = new UnityVersion(bits[1]);
+ if (bits.Length == 2)
+ MaxVersion = MinVersion;
+ else if (bits[2] != "")
+ MaxVersion = new UnityVersion(bits[2]);
+ }
+
+ public override string ToString() {
+ var res = $"{MinVersion}";
+ if (MaxVersion == null)
+ res += "+";
+ else if (MaxVersion != MinVersion)
+ res += $" - {MaxVersion}";
+ return res;
+ }
+
+ public bool Contains(UnityVersion version) {
+ return version.CompareTo(MinVersion) >= 0 && (MaxVersion == null || version.CompareTo(MaxVersion) <= 0);
+ }
+
+ public string GetHeaderText() {
+ string resourceName = typeof(UnityHeader).Namespace + "." + HeaderFilename;
+ Assembly assembly = Assembly.GetCallingAssembly();
+ using Stream stream = assembly.GetManifestResourceStream(resourceName);
+ if (stream == null) {
+ throw new FileNotFoundException(resourceName);
+ }
+ using StreamReader reader = new StreamReader(stream);
+ string result = reader.ReadToEnd();
+ return result;
+ }
+
+ public static IEnumerable GetAllHeaders() {
+ string prefix = typeof(UnityHeader).Namespace + ".";
+ Assembly assembly = Assembly.GetCallingAssembly();
+ return assembly.GetManifestResourceNames()
+ .Where(s => s.StartsWith(prefix) && s.EndsWith(".h"))
+ .Select(s => new UnityHeader(s.Substring(prefix.Length)));
+ }
+
+ public static UnityHeader GetHeaderForVersion(string version) => GetHeaderForVersion(new UnityVersion(version));
+ public static UnityHeader GetHeaderForVersion(UnityVersion version) {
+ return GetAllHeaders().Where(v => v.Contains(version)).First();
+ }
+
+ public static List GuessHeadersForModel(Reflection.Il2CppModel model) {
+ List result = new List();
+ foreach (var v in GetAllHeaders()) {
+ if (v.MetadataVersion != model.Package.BinaryImage.Version)
+ continue;
+ if (v.MetadataVersion == 21) {
+ /* Special version logic for metadata version 21 based on the Il2CppMetadataRegistration.fieldOffsets field */
+ var headerFieldOffsetsArePointers = (v.MinVersion.CompareTo("5.3.7") >= 0 && v.MinVersion.CompareTo("5.4.0") != 0);
+ var binaryFieldOffsetsArePointers = (model.Package.Binary.FieldOffsets == null);
+ if (headerFieldOffsetsArePointers != binaryFieldOffsetsArePointers)
+ continue;
+ }
+ result.Add(v);
+ }
+ return result;
+ }
+ }
+}
diff --git a/Il2CppInspector.Common/Outputs/UnityHeaders/UnityVersion.cs b/Il2CppInspector.Common/Outputs/UnityHeaders/UnityVersion.cs
new file mode 100644
index 0000000..5f540f1
--- /dev/null
+++ b/Il2CppInspector.Common/Outputs/UnityHeaders/UnityVersion.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Text.RegularExpressions;
+
+namespace Il2CppInspector.Outputs.UnityHeaders
+{
+ public class UnityVersion : IComparable, IEquatable
+ {
+ public enum BuildTypeEnum
+ {
+ Unspecified,
+ Alpha,
+ Beta,
+ ReleaseCandidate,
+ Final,
+ Patch,
+ }
+
+ public static string BuildTypeToString(BuildTypeEnum buildType) => buildType switch
+ {
+ BuildTypeEnum.Unspecified => "",
+ BuildTypeEnum.Alpha => "a",
+ BuildTypeEnum.Beta => "b",
+ BuildTypeEnum.ReleaseCandidate => "rc",
+ BuildTypeEnum.Final => "f",
+ BuildTypeEnum.Patch => "p",
+ _ => throw new ArgumentException(),
+ };
+
+ public static BuildTypeEnum StringToBuildType(string s) => s switch
+ {
+ "" => BuildTypeEnum.Unspecified,
+ "a" => BuildTypeEnum.Alpha,
+ "b" => BuildTypeEnum.Beta,
+ "rc" => BuildTypeEnum.ReleaseCandidate,
+ "f" => BuildTypeEnum.Final,
+ "p" => BuildTypeEnum.Patch,
+ _ => throw new ArgumentException("Unknown build type " + s),
+ };
+
+ public int Major { get; }
+ public int Minor { get; }
+ public int Update { get; }
+ public BuildTypeEnum BuildType { get; }
+ public int BuildNumber { get; }
+
+ public UnityVersion(string versionString) {
+ var match = Regex.Match(versionString, @"^(\d+)\.(\d+)(?:\.(\d+))?(?:([a-zA-Z]+)(\d+))?$");
+ if (!match.Success)
+ throw new ArgumentException($"'${versionString}' is not a valid Unity version number.");
+ Major = int.Parse(match.Groups[1].Value);
+ Minor = int.Parse(match.Groups[2].Value);
+ Update = match.Groups[3].Success ? int.Parse(match.Groups[3].Value) : 0;
+ BuildType = match.Groups[4].Success ? StringToBuildType(match.Groups[4].Value) : BuildTypeEnum.Unspecified;
+ BuildNumber = match.Groups[5].Success ? int.Parse(match.Groups[5].Value) : 0;
+ }
+
+ public static implicit operator UnityVersion(string versionString) => new UnityVersion(versionString);
+
+ public override string ToString() {
+ var res = $"{Major}.{Minor}.{Update}";
+ if (BuildType != BuildTypeEnum.Unspecified)
+ res += $"{BuildTypeToString(BuildType)}{BuildNumber}";
+ return res;
+ }
+
+ public int CompareTo(UnityVersion other) {
+ int res;
+ if (0 != (res = Major.CompareTo(other.Major)))
+ return res;
+ if (0 != (res = Minor.CompareTo(other.Minor)))
+ return res;
+ if (0 != (res = Update.CompareTo(other.Update)))
+ return res;
+ // same major.minor.update - if one of these is suffix-less, they compare equal
+ // yes, this makes the compare function non-transitive; don't use it to sort things
+ if (BuildType == BuildTypeEnum.Unspecified || other.BuildType == BuildTypeEnum.Unspecified)
+ return 0;
+ if (0 != (res = BuildType.CompareTo(other.BuildType)))
+ return res;
+ if (0 != (res = BuildNumber.CompareTo(other.BuildNumber)))
+ return res;
+ return 0;
+ }
+
+ public override bool Equals(object obj) {
+ return Equals(obj as UnityVersion);
+ }
+
+ public bool Equals(UnityVersion other) {
+ return other != null &&
+ Major == other.Major &&
+ Minor == other.Minor &&
+ Update == other.Update &&
+ BuildType == other.BuildType &&
+ BuildNumber == other.BuildNumber;
+ }
+
+ public override int GetHashCode() {
+ return HashCode.Combine(Major, Minor, Update, BuildType, BuildNumber);
+ }
+ }
+}
diff --git a/Il2CppInspector.GUI/MainWindow.xaml b/Il2CppInspector.GUI/MainWindow.xaml
index 9cd126e..a0b64fd 100644
--- a/Il2CppInspector.GUI/MainWindow.xaml
+++ b/Il2CppInspector.GUI/MainWindow.xaml
@@ -348,7 +348,10 @@
IDAPython script
- No configuration required for IDA script output
+
+
+
+
diff --git a/Il2CppInspector.GUI/MainWindow.xaml.cs b/Il2CppInspector.GUI/MainWindow.xaml.cs
index 167d123..e90a463 100644
--- a/Il2CppInspector.GUI/MainWindow.xaml.cs
+++ b/Il2CppInspector.GUI/MainWindow.xaml.cs
@@ -28,6 +28,7 @@ using Il2CppInspector.Outputs;
using Il2CppInspector.Reflection;
using Ookii.Dialogs.Wpf;
using Path = System.IO.Path;
+using Il2CppInspector.Outputs.UnityHeaders;
namespace Il2CppInspectorGUI
{
@@ -167,13 +168,13 @@ namespace Il2CppInspectorGUI
///
private void LstImages_OnSelectionChanged(object sender, SelectionChangedEventArgs e) {
// Selection has been removed?
- if (((ListBox) sender).SelectedItem == null) {
+ if (((ListBox)sender).SelectedItem == null) {
trvNamespaces.ItemsSource = null;
return;
}
// Get selected image
- var model = (Il2CppModel) ((ListBox) sender).SelectedItem;
+ var model = (Il2CppModel)((ListBox)sender).SelectedItem;
// Get namespaces
var namespaces = model.Assemblies.SelectMany(x => x.DefinedTypes).GroupBy(t => t.Namespace).Select(n => n.Key);
@@ -196,6 +197,14 @@ namespace Il2CppInspectorGUI
// Populate TreeView with namespace hierarchy
trvNamespaces.ItemsSource = namespaceTree;
+
+ var prevSelection = cboUnityVersion.SelectedItem;
+ cboUnityVersion.Items.Clear();
+ foreach (var version in UnityHeader.GuessHeadersForModel(model))
+ cboUnityVersion.Items.Add(version);
+ cboUnityVersion.SelectedIndex = 0;
+ if (prevSelection != null)
+ cboUnityVersion.SelectedItem = prevSelection;
}
private IEnumerable deconstructNamespaces(IEnumerable input) {
@@ -388,9 +397,11 @@ namespace Il2CppInspectorGUI
txtBusyStatus.Text = "Generating IDAPython script...";
areaBusyIndicator.Visibility = Visibility.Visible;
-
+ var selectedVersion = ((UnityHeader)cboUnityVersion.SelectedItem)?.MinVersion;
await Task.Run(() => {
- var idaWriter = new IDAPythonScript(model);
+ var idaWriter = new IDAPythonScript(model) {
+ UnityVersion = selectedVersion,
+ };
idaWriter.WriteScriptToFile(outFile);
});
break;
diff --git a/Il2CppTests/TestIDAOutput.cs b/Il2CppTests/TestIDAOutput.cs
new file mode 100644
index 0000000..3f79e7e
--- /dev/null
+++ b/Il2CppTests/TestIDAOutput.cs
@@ -0,0 +1,22 @@
+using System.IO;
+using Il2CppInspector.Outputs.UnityHeaders;
+using Il2CppInspector.Reflection;
+using NUnit.Framework;
+
+namespace Il2CppInspector
+{
+ [TestFixture]
+ public partial class FixedTests
+ {
+ [Test]
+ public void TestVersions() {
+ Assert.That(UnityHeader.GetHeaderForVersion("5.3.1p4").ToString(), Is.EqualTo("5.3.0 - 5.3.1"));
+ Assert.That(UnityHeader.GetHeaderForVersion("5.6.4").ToString(), Is.EqualTo("5.6.0 - 5.6.7"));
+ Assert.That(new UnityVersion("2020.1.0b5").ToString(), Is.EqualTo("2020.1.0b5"));
+ Assert.That(new UnityVersion("2020.1").ToString(), Is.EqualTo("2020.1.0"));
+ Assert.That(new UnityVersion("5.3.1").CompareTo("5.3.1p4") == 0);
+ Assert.That(new UnityVersion("5.3.1rc0").CompareTo("5.3.1p2") < 0);
+ Assert.That(new UnityVersion("5.3.1f1").CompareTo("5.3.1p0") < 0);
+ }
+ }
+}