12 Commits
Author SHA1 Message Date
ds5678 ee81b0cff8 Bump version to 1.0.3
Updated the `<VersionPrefix>` property in `Directory.Build.props`
from `1.0.2` to `1.0.3` to reflect a new release or update.
2025-09-21 21:29:29 -07:00
ds5678 293571cd58 Improve handling of mip levels 2025-09-21 21:29:10 -07:00
ds5678 c6a5667654 Bump version to 1.0.2
Updated the `<VersionPrefix>` property in the `Directory.Build.props` file from `1.0.1` to `1.0.2`. This version increment likely signifies a new release or update, potentially including new features, bug fixes, or other improvements.
2025-09-21 20:40:02 -07:00
ds5678 e8309e17ce Improve handling of multiple faces 2025-09-21 20:39:36 -07:00
ds5678 0c71bfbced Bump version to 1.0.1
Updated the `<VersionPrefix>` property in `Directory.Build.props`
from `1.0.0` to `1.0.1` to reflect a minor update or patch release.
This version increment likely includes bug fixes, minor improvements,
or other updates.
2025-09-20 22:22:30 -07:00
ds5678 84a355b02f Fix bug in TryDecompress 2025-09-20 22:20:25 -07:00
ds5678 60c57584f7 Changes from optimizations in the generation 2025-09-20 21:48:38 -07:00
ds5678 17efaf6262 Remove dead stores 2025-09-20 21:28:45 -07:00
ds5678 eb7618f780 Code changes from new optimizations 2025-09-20 21:03:07 -07:00
ds5678 9114a85bf9 Code changes from updated generator 2025-09-20 12:05:32 -07:00
ds5678 05057384a5 Initialize field_0 in textureInfo to ensure validity
A new line was added to set the `field_0` property of the
`textureInfo` structure to `36`. This ensures proper
initialization of the `crnd_crn_texture_info` structure
before it is passed to the `crnd_get_texture_info` function,
preventing potential undefined behavior or errors.
2025-09-20 12:00:04 -07:00
ds5678 39735d50ae Add a console app 2025-09-20 11:59:04 -07:00
335 changed files with 4968 additions and 7200 deletions

No files matched your search

+2
View File
@@ -3,3 +3,5 @@
bin/
obj/
source.ll
launchSettings.json
*.user
@@ -0,0 +1,12 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<ImplicitUsings>enable</ImplicitUsings>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\AssetRipper.Conversions.UnityCrunch\AssetRipper.Conversions.UnityCrunch.csproj" />
</ItemGroup>
</Project>
@@ -0,0 +1,19 @@
namespace AssetRipper.Conversions.UnityCrunch.ConsoleApp;
internal static class Program
{
private static void Main(string[] args)
{
byte[] data = File.ReadAllBytes(args[0]);
string outputPath = args.Length > 1 ? args[1] : args[0] + ".dxt";
if (UnityCrunch.TryDecompress(data, out byte[]? output))
{
File.WriteAllBytes(outputPath, output);
Console.WriteLine($"Decompressed to {outputPath}");
}
else
{
Console.WriteLine("Decompression failed");
}
}
}
+7 -1
View File
@@ -1,7 +1,7 @@
Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 18
VisualStudioVersion = 18.0.11012.119 d18.0
VisualStudioVersion = 18.0.11012.119
MinimumVisualStudioVersion = 10.0.40219.1
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssetRipper.Conversions.UnityCrunch", "AssetRipper.Conversions.UnityCrunch\AssetRipper.Conversions.UnityCrunch.csproj", "{48DE0AAE-5E53-F6EF-0EDD-88BB51F56DCB}"
EndProject
@@ -15,6 +15,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution
source.cpp = source.cpp
EndProjectSection
EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "AssetRipper.Conversions.UnityCrunch.ConsoleApp", "AssetRipper.Conversions.UnityCrunch.ConsoleApp\AssetRipper.Conversions.UnityCrunch.ConsoleApp.csproj", "{469E74A1-200A-4F10-B9FB-121E9319FE70}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
@@ -25,6 +27,10 @@ Global
{48DE0AAE-5E53-F6EF-0EDD-88BB51F56DCB}.Debug|Any CPU.Build.0 = Debug|Any CPU
{48DE0AAE-5E53-F6EF-0EDD-88BB51F56DCB}.Release|Any CPU.ActiveCfg = Release|Any CPU
{48DE0AAE-5E53-F6EF-0EDD-88BB51F56DCB}.Release|Any CPU.Build.0 = Release|Any CPU
{469E74A1-200A-4F10-B9FB-121E9319FE70}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{469E74A1-200A-4F10-B9FB-121E9319FE70}.Debug|Any CPU.Build.0 = Debug|Any CPU
{469E74A1-200A-4F10-B9FB-121E9319FE70}.Release|Any CPU.ActiveCfg = Release|Any CPU
{469E74A1-200A-4F10-B9FB-121E9319FE70}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@@ -7,8 +7,9 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: bool __cdecl crnd::vector<unsigned char>::get_alloc_failed(void) const")]
internal static partial class Get_alloc_failed
{
[return: NativeType("bool")]
public unsafe static bool Invoke(void* @this)
{
return (unchecked((crnd_vector*)@this)->field_3 & 1) == 1;
return (unchecked((crnd_vector_f3cmzmc*)@this)->field_3 & 1) == 1;
}
}
@@ -8,38 +8,27 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: unsigned int __cdecl crnd::dxt3_block::get_alpha(unsigned int, unsigned int, bool) const")]
internal static partial class Get_alpha
{
public unsafe static int Invoke(void* @this, int x, int y, bool scaled)
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this, [NativeType("unsigned int")] int x, [NativeType("unsigned int")] int y, [NativeType("bool")] bool scaled)
{
sbyte b = 0;
int num = 0;
int num2 = 0;
int num3 = 0;
b = (scaled ? ((sbyte)1) : ((sbyte)0));
num = y;
num2 = x;
sbyte b = (scaled ? ((sbyte)1) : ((sbyte)0));
unchecked
{
int num4;
if ((uint)num2 < 4u && (uint)num < 4u)
{
num4 = -1;
}
else
if ((uint)x >= 4u || (uint)y >= 4u)
{
crnd_assert.Invoke(String_cahur4b.__pointer, String_yguirrd.__pointer, 2850);
num4 = 0;
}
num3 = (byte)((sbyte*)(&((crnd_dxt3_block*)@this)->field_0))[(uint)((num << 1) + (num2 >>> 1))];
if ((num2 & 1) != 0)
int num = (byte)((sbyte*)(&((crnd_dxt3_block*)@this)->field_0))[(uint)((y << 1) + (x >>> 1))];
if ((x & 1) != 0)
{
num3 >>>= 4;
num >>>= 4;
}
num3 &= 0xF;
num &= 0xF;
if ((b & 1) == 1)
{
num3 = (num3 << 4) | num3;
num = (num << 4) | num;
}
return num3;
return num;
}
}
}
@@ -8,56 +8,41 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("private: unsigned int __cdecl crnd::symbol_codec::get_bits(unsigned int)")]
internal static partial class Get_bits
{
public unsafe static int Invoke(void* @this, int num_bits)
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this, [NativeType("unsigned int")] int num_bits)
{
int num = 0;
int num2 = 0;
int num3 = 0;
num = num_bits;
unchecked
{
int num4;
if ((uint)num <= 32u)
{
num4 = -1;
}
else
if ((uint)num_bits > 32u)
{
crnd_assert.Invoke(String_bhrpdhd.__pointer, String_yguirrd.__pointer, 2642);
num4 = 0;
}
while (((crnd_symbol_codec*)@this)->field_5 < num)
while (((crnd_symbol_codec*)@this)->field_5 < num_bits)
{
num2 = 0;
int num = 0;
if (((crnd_symbol_codec*)@this)->field_1 != ((crnd_symbol_codec*)@this)->field_2)
{
void** field_ = &((crnd_symbol_codec*)@this)->field_1;
void* ptr = *field_;
*field_ = (byte*)ptr + 1;
num2 = (byte)(*(sbyte*)ptr);
num = (byte)(*(sbyte*)ptr);
}
int num6;
int num2;
checked
{
unchecked((crnd_symbol_codec*)@this)->field_5 += 8;
int num5;
if (unchecked((crnd_symbol_codec*)@this)->field_5 <= 32)
{
num5 = -1;
}
else
if (unchecked((crnd_symbol_codec*)@this)->field_5 > 32)
{
crnd_assert.Invoke(String_kf9n5db.__pointer, String_yguirrd.__pointer, 2650);
num5 = 0;
}
num6 = num2 << 32 - unchecked((crnd_symbol_codec*)@this)->field_5;
num2 = num << 32 - unchecked((crnd_symbol_codec*)@this)->field_5;
}
((crnd_symbol_codec*)@this)->field_4 |= num6;
((crnd_symbol_codec*)@this)->field_4 |= num2;
}
num3 = ((crnd_symbol_codec*)@this)->field_4 >>> 32 - num;
((crnd_symbol_codec*)@this)->field_4 <<= num;
((crnd_symbol_codec*)@this)->field_5 -= num;
return num3;
int result = ((crnd_symbol_codec*)@this)->field_4 >>> 32 - num_bits;
((crnd_symbol_codec*)@this)->field_4 <<= num_bits;
((crnd_symbol_codec*)@this)->field_5 -= num_bits;
return result;
}
}
}
@@ -7,6 +7,7 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("private: void __cdecl crnd::symbol_codec::get_bits_init(void)")]
internal static partial class Get_bits_init
{
[return: NativeType("void")]
public unsafe static void Invoke(void* @this)
{
unchecked
@@ -6,19 +6,15 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: static unsigned int __cdecl crnd::dxt1_block::get_block_colors(class crnd::color_quad<unsigned char, int> *, unsigned short, unsigned short)")]
internal static partial class Get_block_colors
{
public unsafe static int Invoke(void* pDst, short color0, short color1)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("class crnd::color_quad<unsigned char, int> *")] void* pDst, [NativeType("unsigned short")] short color0, [NativeType("unsigned short")] short color1)
{
int num = 0;
short num2 = 0;
short num3 = 0;
void* ptr = null;
num2 = color1;
num3 = color0;
ptr = pDst;
if (unchecked((ushort)num3 > (ushort)num2))
short num = color1;
short num2 = color0;
if (unchecked((ushort)num2 > (ushort)num))
{
return Get_block_colors4.Invoke(ptr, num3, num2);
return Get_block_colors4.Invoke(pDst, num2, num);
}
return Get_block_colors3.Invoke(ptr, num3, num2);
return Get_block_colors3.Invoke(pDst, num2, num);
}
}
@@ -7,14 +7,15 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: static unsigned int __cdecl crnd::dxt1_block::get_block_colors3(class crnd::color_quad<unsigned char, int> *, unsigned short, unsigned short)")]
internal static partial class Get_block_colors3
{
public unsafe static int Invoke(void* pDst, short color0, short color1)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("class crnd::color_quad<unsigned char, int> *")] void* pDst, [NativeType("unsigned short")] short color0, [NativeType("unsigned short")] short color1)
{
crnd_color_quad crnd_color_quad = default(crnd_color_quad);
crnd_color_quad crnd_color_quad2 = default(crnd_color_quad);
unpack_color_ifs9dpd.Invoke(&crnd_color_quad, color0, scaled: true, 255);
unpack_color_ifs9dpd.Invoke(&crnd_color_quad2, color1, scaled: true, 255);
_4_color_quad.Invoke(pDst, &crnd_color_quad);
_4_color_quad.Invoke(unchecked((byte*)pDst) + sizeof(crnd_color_quad), &crnd_color_quad2);
color_quad_unsigned_char_int_Assignment.Invoke(pDst, &crnd_color_quad);
color_quad_unsigned_char_int_Assignment.Invoke(unchecked((byte*)pDst) + sizeof(crnd_color_quad), &crnd_color_quad2);
set.Invoke(unchecked((byte*)pDst + (nint)2 * sizeof(crnd_color_quad)), blue: unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_2) + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_2) >> 1, green: unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_1) + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_1) >> 1, red: unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_0) + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_0) >> 1, alpha: 255);
set.Invoke(unchecked((byte*)pDst + (nint)3 * sizeof(crnd_color_quad)), 0, 0, 0, 0);
return 3;
@@ -7,16 +7,17 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: static unsigned int __cdecl crnd::dxt1_block::get_block_colors4(class crnd::color_quad<unsigned char, int> *, unsigned short, unsigned short)")]
internal static partial class Get_block_colors4
{
public unsafe static int Invoke(void* pDst, short color0, short color1)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("class crnd::color_quad<unsigned char, int> *")] void* pDst, [NativeType("unsigned short")] short color0, [NativeType("unsigned short")] short color1)
{
crnd_color_quad crnd_color_quad = default(crnd_color_quad);
crnd_color_quad crnd_color_quad2 = default(crnd_color_quad);
unpack_color_ifs9dpd.Invoke(&crnd_color_quad, color0, scaled: true, 255);
unpack_color_ifs9dpd.Invoke(&crnd_color_quad2, color1, scaled: true, 255);
_4_color_quad.Invoke(pDst, &crnd_color_quad);
color_quad_unsigned_char_int_Assignment.Invoke(pDst, &crnd_color_quad);
unchecked
{
_4_color_quad.Invoke((byte*)pDst + sizeof(crnd_color_quad), &crnd_color_quad2);
color_quad_unsigned_char_int_Assignment.Invoke((byte*)pDst + sizeof(crnd_color_quad), &crnd_color_quad2);
set.Invoke((byte*)pDst + (nint)2 * sizeof(crnd_color_quad), blue: checked(unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_2) * 2 + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_2)) / 3, green: checked(unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_1) * 2 + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_1)) / 3, red: checked(unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_0) * 2 + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_0)) / 3, alpha: 255);
set.Invoke((byte*)pDst + (nint)3 * sizeof(crnd_color_quad), blue: checked(unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_2) * 2 + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_2)) / 3, green: checked(unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_1) * 2 + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_1)) / 3, red: checked(unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad2.field_0))->field_0) * 2 + unchecked((byte)((anon_b9ijpuc*)(&crnd_color_quad.field_0))->field_0)) / 3, alpha: 255);
return 4;
@@ -7,7 +7,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("Get_block_values6")]
internal static partial class Get_block_values6_5klbycb
{
public unsafe static int Invoke(void* pDst, int l, int h)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("unsigned int *")] void* pDst, [NativeType("unsigned int")] int l, [NativeType("unsigned int")] int h)
{
unchecked
{
@@ -8,7 +8,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("Get_block_values6")]
internal static partial class Get_block_values6_7gyjbyc
{
public unsafe static int Invoke(void* pDst, int l, int h)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("class crnd::color_quad<unsigned char, int> *")] void* pDst, [NativeType("unsigned int")] int l, [NativeType("unsigned int")] int h)
{
unchecked
{
@@ -7,7 +7,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("Get_block_values8")]
internal static partial class Get_block_values8_ml7jl2d
{
public unsafe static int Invoke(void* pDst, int l, int h)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("unsigned int *")] void* pDst, [NativeType("unsigned int")] int l, [NativeType("unsigned int")] int h)
{
unchecked
{
@@ -8,7 +8,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("Get_block_values8")]
internal static partial class Get_block_values8_xv25ufa
{
public unsafe static int Invoke(void* pDst, int l, int h)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("class crnd::color_quad<unsigned char, int> *")] void* pDst, [NativeType("unsigned int")] int l, [NativeType("unsigned int")] int h)
{
unchecked
{
@@ -7,19 +7,13 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("Get_block_values")]
internal static partial class Get_block_values_2npk7qa
{
public unsafe static int Invoke(void* pDst, int l, int h)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("unsigned int *")] void* pDst, [NativeType("unsigned int")] int l, [NativeType("unsigned int")] int h)
{
int num = 0;
int num2 = 0;
int num3 = 0;
void* ptr = null;
num2 = h;
num3 = l;
ptr = pDst;
if (unchecked((uint)num3 > (uint)num2))
if (unchecked((uint)l > (uint)h))
{
return Get_block_values8_ml7jl2d.Invoke(ptr, num3, num2);
return Get_block_values8_ml7jl2d.Invoke(pDst, l, h);
}
return Get_block_values6_5klbycb.Invoke(ptr, num3, num2);
return Get_block_values6_5klbycb.Invoke(pDst, l, h);
}
}
@@ -7,19 +7,13 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("Get_block_values")]
internal static partial class Get_block_values_pxz3b9a
{
public unsafe static int Invoke(void* pDst, int l, int h)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("class crnd::color_quad<unsigned char, int> *")] void* pDst, [NativeType("unsigned int")] int l, [NativeType("unsigned int")] int h)
{
int num = 0;
int num2 = 0;
int num3 = 0;
void* ptr = null;
num2 = h;
num3 = l;
ptr = pDst;
if (unchecked((uint)num3 > (uint)num2))
if (unchecked((uint)l > (uint)h))
{
return Get_block_values8_xv25ufa.Invoke(ptr, num3, num2);
return Get_block_values8_xv25ufa.Invoke(pDst, l, h);
}
return Get_block_values6_7gyjbyc.Invoke(ptr, num3, num2);
return Get_block_values6_7gyjbyc.Invoke(pDst, l, h);
}
}
@@ -7,6 +7,7 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: void const * __cdecl crnd::crn_unpacker::get_data(void) const")]
internal static partial class Get_data
{
[return: NativeType("void const *")]
public unsafe static void* Invoke(void* @this)
{
return unchecked((crnd_crn_unpacker*)@this)->field_1;
@@ -7,6 +7,7 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: unsigned int __cdecl crnd::crn_unpacker::get_data_size(void) const")]
internal static partial class Get_data_size
{
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this)
{
return unchecked((crnd_crn_unpacker*)@this)->field_2;
@@ -8,30 +8,21 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: unsigned int __cdecl crnd::prefix_coding::decoder_tables::get_unshifted_max_code(unsigned int) const")]
internal static partial class Get_unshifted_max_code
{
public unsafe static int Invoke(void* @this, int len)
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this, [NativeType("unsigned int")] int len)
{
int num = 0;
int num2 = 0;
int num3 = 0;
num2 = len;
unchecked
{
int num4;
if ((uint)num2 >= 1u && (uint)num2 <= 16u)
{
num4 = -1;
}
else
if ((uint)len < 1u || (uint)len > 16u)
{
crnd_assert.Invoke(String_ajzw4md.__pointer, String_yguirrd.__pointer, 1514);
num4 = 0;
}
num3 = ((int*)(&((crnd_prefix_coding_decoder_tables*)@this)->field_8))[(uint)(num2 - 1)];
if (num3 == 0)
int num = ((int*)(&((crnd_prefix_coding_decoder_tables*)@this)->field_8))[(uint)(len - 1)];
if (num == 0)
{
return -1;
}
return num3 - 1 >>> 16 - num2;
return num - 1 >>> 16 - len;
}
}
}
@@ -8,57 +8,32 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: void __cdecl crnd::dxt3_block::set_alpha(unsigned int, unsigned int, unsigned int, bool)")]
internal static partial class Set_alpha
{
public unsafe static void Invoke(void* @this, int x, int y, int value, bool scaled)
[return: NativeType("void")]
public unsafe static void Invoke(void* @this, [NativeType("unsigned int")] int x, [NativeType("unsigned int")] int y, [NativeType("unsigned int")] int value, [NativeType("bool")] bool scaled)
{
sbyte b = 0;
int num = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
int num5 = 0;
b = (scaled ? ((sbyte)1) : ((sbyte)0));
num = value;
num2 = y;
num3 = x;
sbyte b = (scaled ? ((sbyte)1) : ((sbyte)0));
int num = value;
unchecked
{
int num6;
if ((uint)num3 < 4u && (uint)num2 < 4u)
{
num6 = -1;
}
else
if ((uint)x >= 4u || (uint)y >= 4u)
{
crnd_assert.Invoke(String_cahur4b.__pointer, String_yguirrd.__pointer, 2831);
num6 = 0;
}
int num8;
if ((b & 1) == 1)
{
int num7;
if ((uint)num <= 255u)
{
num7 = -1;
}
else
if ((uint)num > 255u)
{
crnd_assert.Invoke(String_932ftxa.__pointer, String_yguirrd.__pointer, 2834);
num7 = 0;
}
num = (int)((uint)(num * 15 + 128) / 255u);
}
else if ((uint)num <= 15u)
{
num8 = -1;
}
else
else if ((uint)num > 15u)
{
crnd_assert.Invoke(String_azii4xc.__pointer, String_yguirrd.__pointer, 2837);
num8 = 0;
}
num4 = (num2 << 1) + (num3 >>> 1);
num5 = (byte)((sbyte*)(&((crnd_dxt3_block*)@this)->field_0))[(uint)num4];
((sbyte*)(&((crnd_dxt3_block*)@this)->field_0))[(uint)num4] = (sbyte)((num5 & ((15 << ((num3 & 1) << 2)) ^ -1)) | (num << ((num3 & 1) << 2)));
int num2 = (y << 1) + (x >>> 1);
int num3 = (byte)((sbyte*)(&((crnd_dxt3_block*)@this)->field_0))[(uint)num2];
((sbyte*)(&((crnd_dxt3_block*)@this)->field_0))[(uint)num2] = (sbyte)((num3 & ((15 << ((x & 1) << 2)) ^ -1)) | (num << ((x & 1) << 2)));
}
}
}
@@ -1,71 +0,0 @@
using AssetRipper.Conversions.UnityCrunch.Helpers;
using AssetRipper.Conversions.UnityCrunch.Intrinsics.Implemented;
using AssetRipper.Conversions.UnityCrunch.Structures;
namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??4decoder_tables@prefix_coding@crnd@@QEAAAEAV012@AEBV012@@Z")]
[DemangledName("public: class crnd::prefix_coding::decoder_tables & __cdecl crnd::prefix_coding::decoder_tables::operator=(class crnd::prefix_coding::decoder_tables const &)")]
internal static partial class _4decoder_tables
{
private partial struct LocalVariables
{
public unsafe void* field_0;
public unsafe void* field_1;
}
public unsafe static void* Invoke(void* @this, void* other)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = other;
unchecked
{
if (@this == startFrame.GetLocalsPointer<LocalVariables>()->field_1)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = @this;
}
else
{
clear_ie5thac.Invoke(@this);
if (ExceptionInfo.Current != null)
{
return null;
}
llvm_memcpy_p0_p0_i64.Invoke(@this, startFrame.GetLocalsPointer<LocalVariables>()->field_1, 192L, isVolatile: false);
if (((crnd_prefix_coding_decoder_tables*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_11 != null)
{
void* field_ = crnd_new_array_linsntd.Invoke(((crnd_prefix_coding_decoder_tables*)@this)->field_10);
if (ExceptionInfo.Current != null)
{
return null;
}
((crnd_prefix_coding_decoder_tables*)@this)->field_11 = field_;
if (((crnd_prefix_coding_decoder_tables*)@this)->field_11 != null)
{
llvm_memcpy_p0_p0_i64.Invoke(((crnd_prefix_coding_decoder_tables*)@this)->field_11, ((crnd_prefix_coding_decoder_tables*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_11, 4L * (long)(uint)((crnd_prefix_coding_decoder_tables*)@this)->field_10, isVolatile: false);
}
}
if (((crnd_prefix_coding_decoder_tables*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_13 != null)
{
void* field_2 = crnd_new_array_ovofsdb.Invoke(((crnd_prefix_coding_decoder_tables*)@this)->field_12);
if (ExceptionInfo.Current != null)
{
return null;
}
((crnd_prefix_coding_decoder_tables*)@this)->field_13 = field_2;
if (((crnd_prefix_coding_decoder_tables*)@this)->field_13 != null)
{
llvm_memcpy_p0_p0_i64.Invoke(((crnd_prefix_coding_decoder_tables*)@this)->field_13, ((crnd_prefix_coding_decoder_tables*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_13, 2L * (long)(uint)((crnd_prefix_coding_decoder_tables*)@this)->field_12, isVolatile: false);
}
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = @this;
}
void* field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_3;
}
}
}
@@ -1,85 +0,0 @@
using AssetRipper.Conversions.UnityCrunch.Helpers;
using AssetRipper.Conversions.UnityCrunch.Structures;
namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??4static_huffman_data_model@crnd@@QEAAAEAV01@AEBV01@@Z")]
[DemangledName("public: class crnd::static_huffman_data_model & __cdecl crnd::static_huffman_data_model::operator=(class crnd::static_huffman_data_model const &)")]
internal static partial class _4static_huffman_data_model
{
private partial struct LocalVariables
{
public unsafe void* field_0;
public unsafe void* field_1;
}
public unsafe static void* Invoke(void* @this, void* rhs)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = rhs;
unchecked
{
if (@this == startFrame.GetLocalsPointer<LocalVariables>()->field_1)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = @this;
}
else
{
((crnd_static_huffman_data_model*)@this)->field_0 = ((crnd_static_huffman_data_model*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_0;
_4_vector.Invoke(other: &((crnd_static_huffman_data_model*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_1, @this: &((crnd_static_huffman_data_model*)@this)->field_1);
if (ExceptionInfo.Current != null)
{
return null;
}
if (Get_alloc_failed.Invoke(&((crnd_static_huffman_data_model*)@this)->field_1))
{
clear_egw7ktb.Invoke(@this);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = @this;
}
else
{
if (((crnd_static_huffman_data_model*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_2 != null)
{
if (((crnd_static_huffman_data_model*)@this)->field_2 != null)
{
_4decoder_tables.Invoke(other: ((crnd_static_huffman_data_model*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_2, @this: ((crnd_static_huffman_data_model*)@this)->field_2);
if (ExceptionInfo.Current != null)
{
return null;
}
}
else
{
void* field_ = crnd_new_vzd3zqa.Invoke(((crnd_static_huffman_data_model*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_2);
if (ExceptionInfo.Current != null)
{
return null;
}
((crnd_static_huffman_data_model*)@this)->field_2 = field_;
}
}
else
{
crnd_delete_rldcmnc.Invoke(((crnd_static_huffman_data_model*)@this)->field_2);
if (ExceptionInfo.Current != null)
{
return null;
}
((crnd_static_huffman_data_model*)@this)->field_2 = null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = @this;
}
}
void* field_2 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_2;
}
}
}
@@ -8,62 +8,43 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: bool __cdecl crnd::vector<unsigned char>::assign(class crnd::vector<unsigned char> const &)")]
internal static partial class assign
{
private partial struct LocalVariables
[return: NativeType("bool")]
public unsafe static bool Invoke(void* @this, [NativeType("class crnd::vector<unsigned char> const &")] void* other)
{
public bool field_0;
public unsafe void* field_1;
}
public unsafe static bool Invoke(void* @this, void* other)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = other;
if (@this == other)
{
return true;
}
unchecked
{
if (@this == startFrame.GetLocalsPointer<LocalVariables>()->field_1)
if (((crnd_vector_f3cmzmc*)@this)->field_2 == ((crnd_vector_f3cmzmc*)other)->field_1)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = true;
resize_rzzl5xd.Invoke(@this, 0);
if (ExceptionInfo.Current != null)
{
return false;
}
}
else
{
if (((crnd_vector*)@this)->field_2 == ((crnd_vector*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_1)
clear_q4odfmb.Invoke(@this);
if (ExceptionInfo.Current != null)
{
resize_rzzl5xd.Invoke(@this, 0);
if (ExceptionInfo.Current != null)
{
return false;
}
return false;
}
else
bool flag = increase_capacity_a7boycc.Invoke(@this, ((crnd_vector_f3cmzmc*)other)->field_1, grow_hint: false);
if (ExceptionInfo.Current != null)
{
clear_q4odfmb.Invoke(@this);
if (ExceptionInfo.Current != null)
{
return false;
}
bool flag = increase_capacity_a7boycc.Invoke(@this, ((crnd_vector*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_1, grow_hint: false);
if (ExceptionInfo.Current != null)
{
return false;
}
if (!flag)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
goto IL_014e;
}
return false;
}
if (!flag)
{
return false;
}
llvm_memcpy_p0_p0_i64.Invoke(((crnd_vector*)@this)->field_0, ((crnd_vector*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_0, (long)(uint)((crnd_vector*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_1 * 1L, isVolatile: false);
((crnd_vector*)@this)->field_1 = ((crnd_vector*)startFrame.GetLocalsPointer<LocalVariables>()->field_1)->field_1;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = true;
}
goto IL_014e;
llvm_memcpy_p0_p0_i64.Invoke(((crnd_vector_f3cmzmc*)@this)->field_0, ((crnd_vector_f3cmzmc*)other)->field_0, (long)(uint)((crnd_vector_f3cmzmc*)other)->field_1 * 1L, isVolatile: false);
((crnd_vector_f3cmzmc*)@this)->field_1 = ((crnd_vector_f3cmzmc*)other)->field_1;
return true;
}
IL_014e:
bool field_ = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_;
}
}
@@ -7,8 +7,9 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: unsigned short * __cdecl crnd::vector<unsigned short>::begin(void)")]
internal static partial class begin
{
[return: NativeType("unsigned short *")]
public unsafe static void* Invoke(void* @this)
{
return unchecked((crnd_vector_8*)@this)->field_0;
return unchecked((crnd_vector_rf9iywd*)@this)->field_0;
}
}
@@ -6,19 +6,17 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned int __cdecl crnd::math::ceil_log2i(unsigned int)")]
internal static partial class ceil_log2i
{
public static int Invoke(int v)
[return: NativeType("unsigned int")]
public static int Invoke([NativeType("unsigned int")] int v)
{
int num = 0;
int num2 = 0;
num = v;
num2 = floor_log2i.Invoke(num);
int num = floor_log2i.Invoke(v);
unchecked
{
if (num2 != 32 && (uint)num > (uint)(1 << num2))
if (num != 32 && (uint)v > (uint)(1 << num))
{
num2++;
num++;
}
return num2;
return num;
}
}
}
@@ -6,19 +6,17 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("private: static int __cdecl crnd::color_quad<unsigned char, int>::clamp(int)")]
internal static partial class clamp
{
public static int Invoke(int v)
[return: NativeType("int")]
public static int Invoke([NativeType("int")] int v)
{
int num = 0;
int num2 = 0;
num2 = v;
if (num2 < 0)
if (v < 0)
{
return 0;
}
if (num2 > 255)
if (v > 255)
{
return 255;
}
return num2;
return v;
}
}
@@ -8,29 +8,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("clear")]
internal static partial class clear_bqconyd
{
private partial struct LocalVariables
{
}
[return: NativeType("void")]
public unsafe static void Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
unchecked
{
if (((crnd_vector_8*)@this)->field_0 != null)
if (((crnd_vector_rf9iywd*)@this)->field_0 != null)
{
destruct_array_l9jmj2b.Invoke(parameter_1: ((crnd_vector_8*)@this)->field_1, parameter_0: ((crnd_vector_8*)@this)->field_0);
crnd_free.Invoke(((crnd_vector_8*)@this)->field_0);
destruct_array_l9jmj2b.Invoke(parameter_1: ((crnd_vector_rf9iywd*)@this)->field_1, parameter_0: ((crnd_vector_rf9iywd*)@this)->field_0);
crnd_free.Invoke(((crnd_vector_rf9iywd*)@this)->field_0);
if (ExceptionInfo.Current != null)
{
return;
}
((crnd_vector_8*)@this)->field_0 = null;
((crnd_vector_8*)@this)->field_1 = 0;
((crnd_vector_8*)@this)->field_2 = 0;
((crnd_vector_rf9iywd*)@this)->field_0 = null;
((crnd_vector_rf9iywd*)@this)->field_1 = 0;
((crnd_vector_rf9iywd*)@this)->field_2 = 0;
}
((crnd_vector_8*)@this)->field_3 = 0;
StackFrameList.Current.Clear(startFrame);
((crnd_vector_rf9iywd*)@this)->field_3 = 0;
}
}
}
@@ -8,31 +8,21 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("clear")]
internal static partial class clear_egw7ktb
{
private partial struct LocalVariables
{
}
[return: NativeType("void")]
public unsafe static void Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
unchecked
{
((crnd_static_huffman_data_model*)@this)->field_0 = 0;
clear_q4odfmb.Invoke(&((crnd_static_huffman_data_model*)@this)->field_1);
if (ExceptionInfo.Current != null)
{
return;
}
if (((crnd_static_huffman_data_model*)@this)->field_2 != null)
if (ExceptionInfo.Current == null && ((crnd_static_huffman_data_model*)@this)->field_2 != null)
{
crnd_delete_rldcmnc.Invoke(((crnd_static_huffman_data_model*)@this)->field_2);
if (ExceptionInfo.Current != null)
if (ExceptionInfo.Current == null)
{
return;
((crnd_static_huffman_data_model*)@this)->field_2 = null;
}
((crnd_static_huffman_data_model*)@this)->field_2 = null;
}
StackFrameList.Current.Clear(startFrame);
}
}
}
@@ -8,13 +8,9 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("clear")]
internal static partial class clear_ie5thac
{
private partial struct LocalVariables
{
}
[return: NativeType("void")]
public unsafe static void Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
unchecked
{
if (((crnd_prefix_coding_decoder_tables*)@this)->field_11 != null)
@@ -30,14 +26,12 @@ internal static partial class clear_ie5thac
if (((crnd_prefix_coding_decoder_tables*)@this)->field_13 != null)
{
crnd_delete_array_rytswyc.Invoke(((crnd_prefix_coding_decoder_tables*)@this)->field_13);
if (ExceptionInfo.Current != null)
if (ExceptionInfo.Current == null)
{
return;
((crnd_prefix_coding_decoder_tables*)@this)->field_13 = null;
((crnd_prefix_coding_decoder_tables*)@this)->field_12 = 0;
}
((crnd_prefix_coding_decoder_tables*)@this)->field_13 = null;
((crnd_prefix_coding_decoder_tables*)@this)->field_12 = 0;
}
StackFrameList.Current.Clear(startFrame);
}
}
}
@@ -8,29 +8,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("clear")]
internal static partial class clear_jenxxsd
{
private partial struct LocalVariables
{
}
[return: NativeType("void")]
public unsafe static void Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
unchecked
{
if (((crnd_vector_11*)@this)->field_0 != null)
if (((crnd_vector_y4ukjxd*)@this)->field_0 != null)
{
destruct_array_h3fegud.Invoke(n: ((crnd_vector_11*)@this)->field_1, p: ((crnd_vector_11*)@this)->field_0);
crnd_free.Invoke(((crnd_vector_11*)@this)->field_0);
destruct_array_h3fegud.Invoke(n: ((crnd_vector_y4ukjxd*)@this)->field_1, p: ((crnd_vector_y4ukjxd*)@this)->field_0);
crnd_free.Invoke(((crnd_vector_y4ukjxd*)@this)->field_0);
if (ExceptionInfo.Current != null)
{
return;
}
((crnd_vector_11*)@this)->field_0 = null;
((crnd_vector_11*)@this)->field_1 = 0;
((crnd_vector_11*)@this)->field_2 = 0;
((crnd_vector_y4ukjxd*)@this)->field_0 = null;
((crnd_vector_y4ukjxd*)@this)->field_1 = 0;
((crnd_vector_y4ukjxd*)@this)->field_2 = 0;
}
((crnd_vector_11*)@this)->field_3 = 0;
StackFrameList.Current.Clear(startFrame);
((crnd_vector_y4ukjxd*)@this)->field_3 = 0;
}
}
}
@@ -8,29 +8,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("clear")]
internal static partial class clear_q4odfmb
{
private partial struct LocalVariables
{
}
[return: NativeType("void")]
public unsafe static void Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
unchecked
{
if (((crnd_vector*)@this)->field_0 != null)
if (((crnd_vector_f3cmzmc*)@this)->field_0 != null)
{
destruct_array_dhbxund.Invoke(parameter_1: ((crnd_vector*)@this)->field_1, parameter_0: ((crnd_vector*)@this)->field_0);
crnd_free.Invoke(((crnd_vector*)@this)->field_0);
destruct_array_dhbxund.Invoke(parameter_1: ((crnd_vector_f3cmzmc*)@this)->field_1, parameter_0: ((crnd_vector_f3cmzmc*)@this)->field_0);
crnd_free.Invoke(((crnd_vector_f3cmzmc*)@this)->field_0);
if (ExceptionInfo.Current != null)
{
return;
}
((crnd_vector*)@this)->field_0 = null;
((crnd_vector*)@this)->field_1 = 0;
((crnd_vector*)@this)->field_2 = 0;
((crnd_vector_f3cmzmc*)@this)->field_0 = null;
((crnd_vector_f3cmzmc*)@this)->field_1 = 0;
((crnd_vector_f3cmzmc*)@this)->field_2 = 0;
}
((crnd_vector*)@this)->field_3 = 0;
StackFrameList.Current.Clear(startFrame);
((crnd_vector_f3cmzmc*)@this)->field_3 = 0;
}
}
}
@@ -8,29 +8,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("clear")]
internal static partial class clear_utei2oa
{
private partial struct LocalVariables
{
}
[return: NativeType("void")]
public unsafe static void Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
unchecked
{
if (((crnd_vector_5*)@this)->field_0 != null)
if (((crnd_vector_maaktjc*)@this)->field_0 != null)
{
destruct_array_rsqiwgc.Invoke(parameter_1: ((crnd_vector_5*)@this)->field_1, parameter_0: ((crnd_vector_5*)@this)->field_0);
crnd_free.Invoke(((crnd_vector_5*)@this)->field_0);
destruct_array_rsqiwgc.Invoke(parameter_1: ((crnd_vector_maaktjc*)@this)->field_1, parameter_0: ((crnd_vector_maaktjc*)@this)->field_0);
crnd_free.Invoke(((crnd_vector_maaktjc*)@this)->field_0);
if (ExceptionInfo.Current != null)
{
return;
}
((crnd_vector_5*)@this)->field_0 = null;
((crnd_vector_5*)@this)->field_1 = 0;
((crnd_vector_5*)@this)->field_2 = 0;
((crnd_vector_maaktjc*)@this)->field_0 = null;
((crnd_vector_maaktjc*)@this)->field_1 = 0;
((crnd_vector_maaktjc*)@this)->field_2 = 0;
}
((crnd_vector_5*)@this)->field_3 = 0;
StackFrameList.Current.Clear(startFrame);
((crnd_vector_maaktjc*)@this)->field_3 = 0;
}
}
}
@@ -5,9 +5,10 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??4?$color_quad@EH@crnd@@QEAAAEAV01@AEBV01@@Z")]
[DemangledName("public: class crnd::color_quad<unsigned char, int> & __cdecl crnd::color_quad<unsigned char, int>::operator=(class crnd::color_quad<unsigned char, int> const &)")]
internal static partial class _4_color_quad
internal static partial class color_quad_unsigned_char_int_Assignment
{
public unsafe static void* Invoke(void* @this, void* other)
[return: NativeType("class crnd::color_quad<unsigned char, int> &")]
public unsafe static void* Invoke(void* @this, [NativeType("class crnd::color_quad<unsigned char, int> const &")] void* other)
{
unchecked
{
@@ -6,7 +6,7 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: __cdecl crnd::color_quad<unsigned char, int>::color_quad<unsigned char, int>(int, int, int, int)")]
internal static partial class color_quad_unsigned_char_int_Constructor
{
public unsafe static void* Invoke(void* @this, int red, int green, int blue, int alpha)
public unsafe static void* Invoke(void* @this, [NativeType("int")] int red, [NativeType("int")] int green, [NativeType("int")] int blue, [NativeType("int")] int alpha)
{
set.Invoke(@this, red, green, blue, alpha);
return @this;
@@ -7,17 +7,17 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("private: unsigned int __cdecl crnd::static_huffman_data_model::compute_decoder_table_bits(void) const")]
internal static partial class compute_decoder_table_bits
{
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this)
{
int num = 0;
num = 0;
int result = 0;
unchecked
{
if ((uint)((crnd_static_huffman_data_model*)@this)->field_0 > 16u)
{
num = (byte)(sbyte)minimum.Invoke(1 + ceil_log2i.Invoke(((crnd_static_huffman_data_model*)@this)->field_0), 11);
result = (byte)(sbyte)minimum.Invoke(1 + ceil_log2i.Invoke(((crnd_static_huffman_data_model*)@this)->field_0), 11);
}
return num;
return result;
}
}
}
@@ -6,28 +6,25 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned int __cdecl crnd::utils::compute_max_mips(unsigned int, unsigned int)")]
internal static partial class compute_max_mips
{
public static int Invoke(int width, int height)
[return: NativeType("unsigned int")]
public static int Invoke([NativeType("unsigned int")] int width, [NativeType("unsigned int")] int height)
{
int num = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
num2 = height;
num3 = width;
if ((num3 | num2) == 0)
int num = height;
int num2 = width;
if ((num2 | num) == 0)
{
return 0;
}
num4 = 1;
int num3 = 1;
unchecked
{
while (((uint)num3 <= 1u) ? ((uint)num2 > 1u) : true)
while (((uint)num2 <= 1u) ? ((uint)num > 1u) : true)
{
num3 >>>= 1;
num2 >>>= 1;
num4++;
num >>>= 1;
num3++;
}
return num4;
return num3;
}
}
}
@@ -8,7 +8,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct_array")]
internal static partial class construct_array_45u5mpd
{
public unsafe static void Invoke(void* p, int n)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("unsigned int *")] void* p, [NativeType("unsigned int")] int n)
{
llvm_memset_p0_i64.Invoke(p, 0, unchecked(4L * (long)(uint)n), isVolatile: false);
}
@@ -7,7 +7,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct_array")]
internal static partial class construct_array_5afuwda
{
public unsafe static void Invoke(void* p, int n)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("struct crnd::crn_unpacker::block_buffer_element *")] void* p, [NativeType("unsigned int")] int n)
{
construct_array_f9hrzwd.Invoke(p, n);
}
@@ -8,14 +8,13 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct_array")]
internal static partial class construct_array_f9hrzwd
{
public unsafe static void Invoke(void* p, int n)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("struct crnd::crn_unpacker::block_buffer_element *")] void* p, [NativeType("unsigned int")] int n)
{
void* ptr = null;
void* ptr2 = null;
ptr = p;
void* ptr = p;
unchecked
{
for (ptr2 = (byte*)ptr + (nint)(uint)n * (nint)sizeof(crnd_crn_unpacker_block_buffer_element); ptr != ptr2; ptr = (byte*)ptr + sizeof(crnd_crn_unpacker_block_buffer_element))
for (void* ptr2 = (byte*)ptr + (nint)(uint)n * (nint)sizeof(crnd_crn_unpacker_block_buffer_element); ptr != ptr2; ptr = (byte*)ptr + sizeof(crnd_crn_unpacker_block_buffer_element))
{
}
}
@@ -8,7 +8,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct_array")]
internal static partial class construct_array_gqnztta
{
public unsafe static void Invoke(void* p, int n)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("unsigned short *")] void* p, [NativeType("unsigned int")] int n)
{
llvm_memset_p0_i64.Invoke(p, 0, unchecked(2L * (long)(uint)n), isVolatile: false);
}
@@ -8,7 +8,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct_array")]
internal static partial class construct_array_oifcoec
{
public unsafe static void Invoke(void* p, int n)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("unsigned char *")] void* p, [NativeType("unsigned int")] int n)
{
llvm_memset_p0_i64.Invoke(p, 0, unchecked(1L * (long)(uint)n), isVolatile: false);
}
@@ -7,14 +7,13 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct_array")]
internal static partial class construct_array_pri7s5c
{
public unsafe static void Invoke(void* p, int n)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("unsigned short *")] void* p, [NativeType("unsigned int")] int n)
{
void* ptr = null;
void* ptr2 = null;
ptr = p;
void* ptr = p;
unchecked
{
for (ptr2 = (byte*)ptr + (nint)(uint)n * (nint)2; ptr != ptr2; ptr = (byte*)ptr + 2)
for (void* ptr2 = (byte*)ptr + (nint)(uint)n * (nint)2; ptr != ptr2; ptr = (byte*)ptr + 2)
{
}
}
@@ -7,14 +7,13 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct_array")]
internal static partial class construct_array_rijpqya
{
public unsafe static void Invoke(void* p, int n)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("unsigned int *")] void* p, [NativeType("unsigned int")] int n)
{
void* ptr = null;
void* ptr2 = null;
ptr = p;
void* ptr = p;
unchecked
{
for (ptr2 = (byte*)ptr + (nint)(uint)n * (nint)4; ptr != ptr2; ptr = (byte*)ptr + 4)
for (void* ptr2 = (byte*)ptr + (nint)(uint)n * (nint)4; ptr != ptr2; ptr = (byte*)ptr + 4)
{
}
}
@@ -7,19 +7,14 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct")]
internal static partial class construct_bzfae7a
{
private partial struct LocalVariables
[return: NativeType("class crnd::crn_unpacker *")]
public unsafe static void* Invoke([NativeType("class crnd::crn_unpacker *")] void* p)
{
}
public unsafe static void* Invoke(void* p)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
crn_unpacker_Constructor.Invoke(p);
if (ExceptionInfo.Current != null)
{
return null;
}
StackFrameList.Current.Clear(startFrame);
return p;
}
}
@@ -7,7 +7,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct")]
internal static partial class construct_e5fhx3a
{
public unsafe static void* Invoke(void* p)
[return: NativeType("class crnd::prefix_coding::decoder_tables *")]
public unsafe static void* Invoke([NativeType("class crnd::prefix_coding::decoder_tables *")] void* p)
{
decoder_tables_Constructor_2o5uqyd.Invoke(p);
return p;
@@ -7,19 +7,14 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("construct")]
internal static partial class construct_zybj4yc
{
private partial struct LocalVariables
[return: NativeType("class crnd::prefix_coding::decoder_tables *")]
public unsafe static void* Invoke([NativeType("class crnd::prefix_coding::decoder_tables *")] void* p, [NativeType("class crnd::prefix_coding::decoder_tables const &")] void* init)
{
}
public unsafe static void* Invoke(void* p, void* init)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
decoder_tables_Constructor_3v4xfjd.Invoke(p, init);
if (ExceptionInfo.Current != null)
{
return null;
}
StackFrameList.Current.Clear(startFrame);
return p;
}
}
@@ -6,29 +6,25 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned short __cdecl crnd::crc16(void const *, unsigned int, unsigned short)")]
internal static partial class crc16
{
public unsafe static short Invoke(void* pBuf, int len, short crc)
[return: NativeType("unsigned short")]
public unsafe static short Invoke([NativeType("void const *")] void* pBuf, [NativeType("unsigned int")] int len, [NativeType("unsigned short")] short crc)
{
short num = 0;
int num2 = 0;
void* ptr = null;
short num3 = 0;
short num4 = 0;
num = crc;
num2 = len;
short num = crc;
int i = len;
unchecked
{
num = (short)((ushort)num ^ -1);
ptr = pBuf;
for (; num2 != 0; num2 += -1)
void* ptr = pBuf;
for (; i != 0; i += -1)
{
void* ptr2 = ptr;
ptr = (byte*)ptr2 + 1;
num3 = (short)((byte)(*(sbyte*)ptr2) ^ ((ushort)num >> 8));
short num2 = (short)((byte)(*(sbyte*)ptr2) ^ ((ushort)num >> 8));
num = (short)((ushort)num << 8);
num4 = (short)(((ushort)num3 >> 4) ^ (ushort)num3);
num = (short)((ushort)num ^ (ushort)num4);
num4 = (short)((ushort)num4 << 5);
num = (short)((ushort)(short)((ushort)num ^ (ushort)num4) ^ (ushort)(short)((ushort)num4 << 7));
short num3 = (short)(((ushort)num2 >> 4) ^ (ushort)num2);
num = (short)((ushort)num ^ (ushort)num3);
num3 = (short)((ushort)num3 << 5);
num = (short)((ushort)(short)((ushort)num ^ (ushort)num3) ^ (ushort)(short)((ushort)num3 << 7));
}
return (short)((ushort)num ^ -1);
}
@@ -5,11 +5,11 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??B?$crn_packed_uint@$00@crnd@@QEBAIXZ")]
[DemangledName("public: unsigned int __cdecl crnd::crn_packed_uint<1>::operator unsigned int(void) const")]
[CleanName("operator_unsigned_int")]
internal static partial class operator_unsigned_int_neugqod
internal static partial class crn_packed_uint_1_ToUInt32
{
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this)
{
return unchecked((byte)(*(sbyte*)(&((crnd_crn_packed_uint_1*)@this)->field_0)));
return unchecked((byte)(*(sbyte*)(&((crnd_crn_packed_uint_94amu2d*)@this)->field_0)));
}
}
@@ -5,20 +5,18 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??4?$crn_packed_uint@$01@crnd@@QEAAAEAU01@I@Z")]
[DemangledName("public: struct crnd::crn_packed_uint<2> & __cdecl crnd::crn_packed_uint<2>::operator=(unsigned int)")]
[CleanName("_4_crn_packed_uint")]
internal static partial class _4_crn_packed_uint_5xksx5a
internal static partial class crn_packed_uint_2_Assignment
{
public unsafe static void* Invoke(void* @this, int val)
[return: NativeType("struct crnd::crn_packed_uint<2> &")]
public unsafe static void* Invoke(void* @this, [NativeType("unsigned int")] int val)
{
int num = 0;
int num2 = 0;
num = val;
int num = val;
num <<= 16;
unchecked
{
for (num2 = 0; (uint)num2 < 2u; num2++)
for (int i = 0; (uint)i < 2u; i++)
{
((sbyte*)(&((crnd_crn_packed_uint*)@this)->field_0))[(uint)num2] = (sbyte)(num >>> 24);
((sbyte*)(&((crnd_crn_packed_uint_hnsywfd*)@this)->field_0))[(uint)i] = (sbyte)(num >>> 24);
num <<= 8;
}
return @this;
@@ -5,11 +5,11 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??B?$crn_packed_uint@$01@crnd@@QEBAIXZ")]
[DemangledName("public: unsigned int __cdecl crnd::crn_packed_uint<2>::operator unsigned int(void) const")]
[CleanName("operator_unsigned_int")]
internal static partial class operator_unsigned_int_f3crpsb
internal static partial class crn_packed_uint_2_ToUInt32
{
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this)
{
return unchecked(((byte)(*(sbyte*)(&((crnd_crn_packed_uint*)@this)->field_0)) << 8) | (byte)((sbyte*)(&((crnd_crn_packed_uint*)@this)->field_0))[1]);
return unchecked(((byte)(*(sbyte*)(&((crnd_crn_packed_uint_hnsywfd*)@this)->field_0)) << 8) | (byte)((sbyte*)(&((crnd_crn_packed_uint_hnsywfd*)@this)->field_0))[1]);
}
}
@@ -5,11 +5,11 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??B?$crn_packed_uint@$02@crnd@@QEBAIXZ")]
[DemangledName("public: unsigned int __cdecl crnd::crn_packed_uint<3>::operator unsigned int(void) const")]
[CleanName("operator_unsigned_int")]
internal static partial class operator_unsigned_int_4iyly2b
internal static partial class crn_packed_uint_3_ToUInt32
{
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this)
{
return unchecked(((byte)(*(sbyte*)(&((crnd_crn_packed_uint_2*)@this)->field_0)) << 16) | ((byte)((sbyte*)(&((crnd_crn_packed_uint_2*)@this)->field_0))[1] << 8) | (byte)((sbyte*)(&((crnd_crn_packed_uint_2*)@this)->field_0))[2]);
return unchecked(((byte)(*(sbyte*)(&((crnd_crn_packed_uint_fru7ewb*)@this)->field_0)) << 16) | ((byte)((sbyte*)(&((crnd_crn_packed_uint_fru7ewb*)@this)->field_0))[1] << 8) | (byte)((sbyte*)(&((crnd_crn_packed_uint_fru7ewb*)@this)->field_0))[2]);
}
}
@@ -5,20 +5,18 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??4?$crn_packed_uint@$03@crnd@@QEAAAEAU01@I@Z")]
[DemangledName("public: struct crnd::crn_packed_uint<4> & __cdecl crnd::crn_packed_uint<4>::operator=(unsigned int)")]
[CleanName("_4_crn_packed_uint")]
internal static partial class _4_crn_packed_uint_53ytska
internal static partial class crn_packed_uint_4_Assignment
{
public unsafe static void* Invoke(void* @this, int val)
[return: NativeType("struct crnd::crn_packed_uint<4> &")]
public unsafe static void* Invoke(void* @this, [NativeType("unsigned int")] int val)
{
int num = 0;
int num2 = 0;
num = val;
int num = val;
num <<= 0;
unchecked
{
for (num2 = 0; (uint)num2 < 4u; num2++)
for (int i = 0; (uint)i < 4u; i++)
{
((sbyte*)(&((crnd_crn_packed_uint_0*)@this)->field_0))[(uint)num2] = (sbyte)(num >>> 24);
((sbyte*)(&((crnd_crn_packed_uint_jymcebc*)@this)->field_0))[(uint)i] = (sbyte)(num >>> 24);
num <<= 8;
}
return @this;
@@ -0,0 +1,15 @@
using AssetRipper.Conversions.UnityCrunch.Helpers;
using AssetRipper.Conversions.UnityCrunch.Structures;
namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[MangledName("??B?$crn_packed_uint@$03@crnd@@QEBAIXZ")]
[DemangledName("public: unsigned int __cdecl crnd::crn_packed_uint<4>::operator unsigned int(void) const")]
internal static partial class crn_packed_uint_4_ToUInt32
{
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this)
{
return unchecked(((byte)(*(sbyte*)(&((crnd_crn_packed_uint_jymcebc*)@this)->field_0)) << 24) | ((byte)((sbyte*)(&((crnd_crn_packed_uint_jymcebc*)@this)->field_0))[1] << 16) | ((byte)((sbyte*)(&((crnd_crn_packed_uint_jymcebc*)@this)->field_0))[2] << 8) | (byte)((sbyte*)(&((crnd_crn_packed_uint_jymcebc*)@this)->field_0))[3]);
}
}
@@ -8,16 +8,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: __cdecl crnd::crn_unpacker::crn_unpacker(void)")]
internal static partial class crn_unpacker_Constructor
{
private partial struct LocalVariables
{
public unsafe void* field_0;
}
public unsafe static void* Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = @this;
unchecked
{
((crnd_crn_unpacker*)@this)->field_0 = 519686845;
@@ -27,7 +19,7 @@ internal static partial class crn_unpacker_Constructor
symbol_codec_Constructor.Invoke(&((crnd_crn_unpacker*)@this)->field_4);
crnd_static_huffman_data_model* field_ = &((crnd_crn_unpacker*)@this)->field_5;
static_huffman_data_model_Constructor_tl33idc.Invoke(field_);
InlineArray_2_tahu2ya* field_2 = &((crnd_crn_unpacker*)@this)->field_6;
InlineArray2_crnd_static_huffman_data_model* field_2 = &((crnd_crn_unpacker*)@this)->field_6;
crnd_static_huffman_data_model* ptr = (crnd_static_huffman_data_model*)field_2;
crnd_static_huffman_data_model* ptr2 = ptr + 2L;
crnd_static_huffman_data_model* intPtr = ptr;
@@ -43,7 +35,7 @@ internal static partial class crn_unpacker_Constructor
intPtr = ptr4;
continue;
}
InlineArray_2_tahu2ya* field_3 = &((crnd_crn_unpacker*)@this)->field_7;
InlineArray2_crnd_static_huffman_data_model* field_3 = &((crnd_crn_unpacker*)@this)->field_7;
crnd_static_huffman_data_model* ptr5 = (crnd_static_huffman_data_model*)field_3;
crnd_static_huffman_data_model* ptr6 = ptr5 + 2L;
crnd_static_huffman_data_model* intPtr2 = ptr5;
@@ -59,28 +51,26 @@ internal static partial class crn_unpacker_Constructor
intPtr2 = ptr8;
continue;
}
crnd_vector_5* field_4 = &((crnd_crn_unpacker*)@this)->field_8;
crnd_vector_maaktjc* field_4 = &((crnd_crn_unpacker*)@this)->field_8;
vector_unsigned_int_Constructor.Invoke(field_4);
if (ExceptionInfo.Current == null)
{
crnd_vector_5* field_5 = &((crnd_crn_unpacker*)@this)->field_9;
crnd_vector_maaktjc* field_5 = &((crnd_crn_unpacker*)@this)->field_9;
vector_unsigned_int_Constructor.Invoke(field_5);
if (ExceptionInfo.Current == null)
{
crnd_vector_8* field_6 = &((crnd_crn_unpacker*)@this)->field_10;
crnd_vector_rf9iywd* field_6 = &((crnd_crn_unpacker*)@this)->field_10;
vector_unsigned_short_Constructor.Invoke(field_6);
if (ExceptionInfo.Current == null)
{
crnd_vector_8* field_7 = &((crnd_crn_unpacker*)@this)->field_11;
crnd_vector_rf9iywd* field_7 = &((crnd_crn_unpacker*)@this)->field_11;
vector_unsigned_short_Constructor.Invoke(field_7);
if (ExceptionInfo.Current == null)
{
vector_struct_crnd_crn_unpacker_block_buffer_element_Constructor.Invoke(&((crnd_crn_unpacker*)@this)->field_12);
if (ExceptionInfo.Current == null)
{
void* field_8 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_8;
return @this;
}
ExceptionInfo current = ExceptionInfo.Current;
ExceptionInfo.Current = null;
@@ -7,13 +7,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: __cdecl crnd::crn_unpacker::~crn_unpacker(void)")]
internal static partial class crn_unpacker_Destructor
{
private partial struct LocalVariables
{
}
public unsafe static void Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
unchecked
{
((crnd_crn_unpacker*)@this)->field_0 = 0;
@@ -75,10 +70,6 @@ internal static partial class crn_unpacker_Destructor
num2 = (nint)ptr2;
}
static_huffman_data_model_Destructor.Invoke(&((crnd_crn_unpacker*)@this)->field_5);
if (ExceptionInfo.Current == null)
{
StackFrameList.Current.Clear(startFrame);
}
}
}
}
@@ -10,12 +10,13 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void __cdecl crnd::crnd_assert(char const *, char const *, unsigned int)")]
internal static partial class crnd_assert
{
public unsafe static void Invoke(void* pExp, void* pFile, int line)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("char const *")] void* pExp, [NativeType("char const *")] void* pFile, [NativeType("unsigned int")] int line)
{
InlineArray_512_w3otm9c inlineArray_512_w3otm9c = default(InlineArray_512_w3otm9c);
sprintf.Invoke(&inlineArray_512_w3otm9c, String_tghxvvc.__pointer, default(ReadOnlySpan<nint>));
crnd_output_debug_string.Invoke(&inlineArray_512_w3otm9c);
puts.Invoke(&inlineArray_512_w3otm9c);
InlineArray512_SByte inlineArray512_SByte = default(InlineArray512_SByte);
sprintf.Invoke(&inlineArray512_SByte, String_tghxvvc.__pointer, default(ReadOnlySpan<nint>));
crnd_output_debug_string.Invoke(&inlineArray512_SByte);
puts.Invoke(&inlineArray512_SByte);
if (crnd_is_debugger_present.Invoke())
{
crnd_debug_break.Invoke();
@@ -9,55 +9,37 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_create_segmented_file(void const *, unsigned int, void *, unsigned int)")]
internal static partial class crnd_create_segmented_file
{
public unsafe static bool Invoke(void* pData, int data_size, void* pBase_data, int base_data_size)
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size, [NativeType("void *")] void* pBase_data, [NativeType("unsigned int")] int base_data_size)
{
bool flag = false;
int num = 0;
void* ptr = null;
int num2 = 0;
void* ptr2 = null;
void* ptr3 = null;
int num3 = 0;
void* ptr4 = null;
num = base_data_size;
ptr = pBase_data;
num2 = data_size;
ptr2 = pData;
unchecked
{
if (ptr2 == null || (uint)num2 < 62u)
if (pData == null || (uint)data_size < 62u)
{
return false;
}
ptr3 = crnd_get_header.Invoke(ptr2, num2);
if (ptr3 == null)
void* ptr = crnd_get_header.Invoke(pData, data_size);
if (ptr == null)
{
return false;
}
if ((operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_10) & 1) != 0)
if ((crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_10) & 1) != 0)
{
return false;
}
num3 = crnd_get_segmented_file_size.Invoke(ptr2, num2);
if ((uint)num < (uint)num3)
int num = crnd_get_segmented_file_size.Invoke(pData, data_size);
if ((uint)base_data_size < (uint)num)
{
return false;
}
llvm_memcpy_p0_p0_i64.Invoke(ptr, ptr2, (uint)num3, isVolatile: false);
ptr4 = ptr;
_4_crn_packed_uint_5xksx5a.Invoke(val: operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr4)->field_10) | 1, @this: &((crnd_crn_header*)ptr4)->field_10);
_4_crn_packed_uint_53ytska.Invoke(&((crnd_crn_header*)ptr4)->field_3, num3);
_4_crn_packed_uint_5xksx5a.Invoke(val: (ushort)crc16.Invoke(len: operator_unsigned_int_uxo4hgd.Invoke(&((crnd_crn_header*)ptr4)->field_3) - operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr4)->field_1), pBuf: (byte*)ptr + (uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr4)->field_1), crc: 0), @this: &((crnd_crn_header*)ptr4)->field_4);
_4_crn_packed_uint_5xksx5a.Invoke(val: (ushort)crc16.Invoke(len: operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr4)->field_1) - (int)((long)(&((crnd_crn_header*)ptr4)->field_3) - (long)ptr4), pBuf: &((crnd_crn_header*)ptr4)->field_3, crc: 0), @this: &((crnd_crn_header*)ptr4)->field_2);
int num4;
if (crnd_validate_file.Invoke(ptr4, num3, null))
{
num4 = -1;
}
else
llvm_memcpy_p0_p0_i64.Invoke(pBase_data, pData, (uint)num, isVolatile: false);
crn_packed_uint_2_Assignment.Invoke(val: crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)pBase_data)->field_10) | 1, @this: &((crnd_crn_header*)pBase_data)->field_10);
crn_packed_uint_4_Assignment.Invoke(&((crnd_crn_header*)pBase_data)->field_3, num);
crn_packed_uint_2_Assignment.Invoke(val: (ushort)crc16.Invoke(len: crn_packed_uint_4_ToUInt32.Invoke(&((crnd_crn_header*)pBase_data)->field_3) - crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)pBase_data)->field_1), pBuf: (byte*)pBase_data + (uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)pBase_data)->field_1), crc: 0), @this: &((crnd_crn_header*)pBase_data)->field_4);
crn_packed_uint_2_Assignment.Invoke(val: (ushort)crc16.Invoke(len: crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)pBase_data)->field_1) - (int)((long)(&((crnd_crn_header*)pBase_data)->field_3) - (long)pBase_data), pBuf: &((crnd_crn_header*)pBase_data)->field_3, crc: 0), @this: &((crnd_crn_header*)pBase_data)->field_2);
if (!crnd_validate_file.Invoke(pBase_data, num, null))
{
crnd_assert.Invoke(String_2bpyz2d.__pointer, String_yguirrd.__pointer, 2374);
num4 = 0;
}
return true;
}
@@ -7,9 +7,9 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned int __cdecl crnd::crnd_crn_format_to_fourcc(enum crn_format)")]
internal static partial class crnd_crn_format_to_fourcc
{
public unsafe static int Invoke(int fmt)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("enum crn_format")] int fmt)
{
int num = 0;
switch (fmt)
{
case 0:
@@ -6,6 +6,7 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void __cdecl crnd::crnd_debug_break(void)")]
internal static partial class crnd_debug_break
{
[return: NativeType("void")]
public static void Invoke()
{
}
@@ -9,10 +9,9 @@ internal static partial class crnd_default_msize
{
public unsafe static readonly void* __pointer = PointerIndices.Register((delegate*<void*, void*, long>)(&Invoke));
public unsafe static long Invoke(void* p, void* pUser_data)
[return: NativeType("unsigned __int64")]
public unsafe static long Invoke([NativeType("void *")] void* p, [NativeType("void *")] void* pUser_data)
{
void* ptr = null;
ptr = p;
return (ptr == null) ? 0L : msize.Invoke(ptr);
return (p == null) ? 0L : msize.Invoke(p);
}
}
@@ -9,59 +9,52 @@ internal static partial class crnd_default_realloc
{
public unsafe static readonly void* __pointer = PointerIndices.Register((delegate*<void*, long, void*, bool, void*, void*>)(&Invoke));
public unsafe static void* Invoke(void* p, long size, void* pActual_size, bool movable, void* parameter_4)
[return: NativeType("void *")]
public unsafe static void* Invoke([NativeType("void *")] void* p, [NativeType("unsigned __int64")] long size, [NativeType("unsigned __int64 *")] void* pActual_size, [NativeType("bool")] bool movable, [NativeType("void *")] void* parameter_4)
{
sbyte b = 0;
void* ptr = null;
long num = 0L;
void* ptr2 = null;
void* ptr3 = null;
void* ptr4 = null;
b = (movable ? ((sbyte)1) : ((sbyte)0));
ptr = pActual_size;
num = size;
ptr2 = p;
sbyte b = (movable ? ((sbyte)1) : ((sbyte)0));
unchecked
{
if (ptr2 == null)
void* ptr;
if (p == null)
{
ptr3 = malloc.Invoke(num);
if (ptr != null)
ptr = malloc.Invoke(size);
if (pActual_size != null)
{
*(long*)ptr = ((ptr3 == null) ? 0L : msize.Invoke(ptr3));
*(long*)pActual_size = ((ptr == null) ? 0L : msize.Invoke(ptr));
}
}
else if (num == 0L)
else if (size == 0L)
{
free.Invoke(ptr2);
ptr3 = null;
if (ptr != null)
free.Invoke(p);
ptr = null;
if (pActual_size != null)
{
*(long*)ptr = 0L;
*(long*)pActual_size = 0L;
}
}
else
{
ptr4 = ptr2;
ptr3 = null;
if (ptr3 != null)
void* ptr2 = p;
ptr = null;
if (ptr != null)
{
ptr4 = ptr3;
ptr2 = ptr;
}
else if ((b & 1) == 1)
{
ptr3 = realloc.Invoke(ptr2, num);
if (ptr3 != null)
ptr = realloc.Invoke(p, size);
if (ptr != null)
{
ptr4 = ptr3;
ptr2 = ptr;
}
}
if (ptr != null)
if (pActual_size != null)
{
*(long*)ptr = msize.Invoke(ptr4);
*(long*)pActual_size = msize.Invoke(ptr2);
}
}
return ptr3;
return ptr;
}
}
}
@@ -8,43 +8,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_delete_array")]
internal static partial class crnd_delete_array_nughn5d
{
private partial struct LocalVariables
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("unsigned int *")] void* p)
{
public unsafe void* field_0;
public int field_1;
}
public unsafe static void Invoke(void* p)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = p;
unchecked
{
if (startFrame.GetLocalsPointer<LocalVariables>()->field_0 != null)
if (p != null)
{
int field_ = *(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_0 + -4);
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = field_;
int num;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 != 0 && startFrame.GetLocalsPointer<LocalVariables>()->field_1 == (*(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_0 + -8) ^ -1))
{
num = -1;
}
else
int num = *(int*)((byte*)p + -4);
if (num == 0 || num != (*(int*)((byte*)p + -8) ^ -1))
{
crnd_assert.Invoke(String_zzvckkc.__pointer, String_yguirrd.__pointer, 347);
num = 0;
}
destruct_array_lrbdoxa.Invoke(n: startFrame.GetLocalsPointer<LocalVariables>()->field_1, p: startFrame.GetLocalsPointer<LocalVariables>()->field_0);
crnd_free.Invoke((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_0 + -8);
if (ExceptionInfo.Current != null)
destruct_array_lrbdoxa.Invoke(p, num);
crnd_free.Invoke((byte*)p + -8);
if (ExceptionInfo.Current == null)
{
return;
}
}
StackFrameList.Current.Clear(startFrame);
}
}
}
@@ -8,43 +8,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_delete_array")]
internal static partial class crnd_delete_array_rytswyc
{
private partial struct LocalVariables
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("unsigned short *")] void* p)
{
public unsafe void* field_0;
public int field_1;
}
public unsafe static void Invoke(void* p)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = p;
unchecked
{
if (startFrame.GetLocalsPointer<LocalVariables>()->field_0 != null)
if (p != null)
{
int field_ = *(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_0 + -4);
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = field_;
int num;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 != 0 && startFrame.GetLocalsPointer<LocalVariables>()->field_1 == (*(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_0 + -8) ^ -1))
{
num = -1;
}
else
int num = *(int*)((byte*)p + -4);
if (num == 0 || num != (*(int*)((byte*)p + -8) ^ -1))
{
crnd_assert.Invoke(String_zzvckkc.__pointer, String_yguirrd.__pointer, 347);
num = 0;
}
destruct_array_viasmsc.Invoke(n: startFrame.GetLocalsPointer<LocalVariables>()->field_1, p: startFrame.GetLocalsPointer<LocalVariables>()->field_0);
crnd_free.Invoke((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_0 + -8);
if (ExceptionInfo.Current != null)
destruct_array_viasmsc.Invoke(p, num);
crnd_free.Invoke((byte*)p + -8);
if (ExceptionInfo.Current == null)
{
return;
}
}
StackFrameList.Current.Clear(startFrame);
}
}
}
@@ -7,29 +7,20 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_delete")]
internal static partial class crnd_delete_e7rwdhb
{
private partial struct LocalVariables
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("class crnd::crn_unpacker *")] void* p)
{
public unsafe void* field_0;
}
public unsafe static void Invoke(void* p)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = p;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_0 != null)
if (p == null)
{
destruct_f77lq2b.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_0);
if (ExceptionInfo.Current != null)
return;
}
destruct_f77lq2b.Invoke(p);
if (ExceptionInfo.Current == null)
{
crnd_free.Invoke(p);
if (ExceptionInfo.Current == null)
{
return;
}
crnd_free.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_0);
if (ExceptionInfo.Current != null)
{
return;
}
}
StackFrameList.Current.Clear(startFrame);
}
}
@@ -7,29 +7,20 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_delete")]
internal static partial class crnd_delete_rldcmnc
{
private partial struct LocalVariables
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("class crnd::prefix_coding::decoder_tables *")] void* p)
{
public unsafe void* field_0;
}
public unsafe static void Invoke(void* p)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = p;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_0 != null)
if (p == null)
{
destruct_py7r2pc.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_0);
if (ExceptionInfo.Current != null)
return;
}
destruct_py7r2pc.Invoke(p);
if (ExceptionInfo.Current == null)
{
crnd_free.Invoke(p);
if (ExceptionInfo.Current == null)
{
return;
}
crnd_free.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_0);
if (ExceptionInfo.Current != null)
{
return;
}
}
StackFrameList.Current.Clear(startFrame);
}
}
@@ -7,36 +7,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void __cdecl crnd::crnd_free(void *)")]
internal static partial class crnd_free
{
private partial struct LocalVariables
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("void *")] void* p)
{
public unsafe void* field_0;
}
public unsafe static void Invoke(void* p)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = p;
if (p == null)
{
return;
}
unchecked
{
if (startFrame.GetLocalsPointer<LocalVariables>()->field_0 != null)
if (((int)p & 7) != 0)
{
crnd_mem_error.Invoke(String_gcwah5d.__pointer);
return;
}
((delegate*<void*, long, void*, bool, void*, void*>)g_pRealloc.Value)(p, 0L, null, true, g_pUser_data.Value);
if (ExceptionInfo.Current == null)
{
if (((int)startFrame.GetLocalsPointer<LocalVariables>()->field_0 & 7) != 0)
{
crnd_mem_error.Invoke(String_gcwah5d.__pointer);
}
else
{
void* value = g_pRealloc.Value;
void* value2 = g_pUser_data.Value;
((delegate*<void*, long, void*, bool, void*, void*>)value)(startFrame.GetLocalsPointer<LocalVariables>()->field_0, 0L, null, true, value2);
if (ExceptionInfo.Current != null)
{
return;
}
}
}
StackFrameList.Current.Clear(startFrame);
}
}
}
@@ -6,7 +6,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned int __cdecl crnd::crnd_get_bytes_per_dxt_block(enum crn_format)")]
internal static partial class crnd_get_bytes_per_dxt_block
{
public static int Invoke(int fmt)
[return: NativeType("unsigned int")]
public static int Invoke([NativeType("enum crn_format")] int fmt)
{
return crnd_get_crn_format_bits_per_texel.Invoke(fmt) << 4 >>> 3;
}
@@ -7,9 +7,9 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned int __cdecl crnd::crnd_get_crn_format_bits_per_texel(enum crn_format)")]
internal static partial class crnd_get_crn_format_bits_per_texel
{
public unsafe static int Invoke(int fmt)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("enum crn_format")] int fmt)
{
int num = 0;
switch (fmt)
{
case 0:
@@ -6,34 +6,26 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_get_data(void *, void const **, unsigned int *)")]
internal static partial class crnd_get_data
{
public unsafe static bool Invoke(void* pContext, void* ppData, void* pData_size)
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void *")] void* pContext, [NativeType("void const **")] void* ppData, [NativeType("unsigned int *")] void* pData_size)
{
bool flag = false;
void* ptr = null;
void* ptr2 = null;
void* ptr3 = null;
void* ptr4 = null;
ptr = pData_size;
ptr2 = ppData;
ptr3 = pContext;
if (ptr3 == null)
if (pContext == null)
{
return false;
}
ptr4 = ptr3;
if (!is_valid.Invoke(ptr4))
if (!is_valid.Invoke(pContext))
{
return false;
}
unchecked
{
if (ptr2 != null)
if (ppData != null)
{
*(void**)ptr2 = Get_data.Invoke(ptr4);
*(void**)ppData = Get_data.Invoke(pContext);
}
if (ptr != null)
if (pData_size != null)
{
*(int*)ptr = Get_data_size.Invoke(ptr4);
*(int*)pData_size = Get_data_size.Invoke(pContext);
}
return true;
}
@@ -6,16 +6,13 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("enum crn_format __cdecl crnd::crnd_get_fundamental_dxt_format(enum crn_format)")]
internal static partial class crnd_get_fundamental_dxt_format
{
public static int Invoke(int fmt)
[return: NativeType("enum crn_format")]
public static int Invoke([NativeType("enum crn_format")] int fmt)
{
int num = 0;
int num2 = 0;
num2 = fmt;
int num3 = num2;
if (num3 == 3 || num3 == 4 || num3 == 5 || num3 == 6)
if (fmt == 3 || fmt == 4 || fmt == 5 || fmt == 6)
{
return 2;
}
return num2;
return fmt;
}
}
@@ -7,30 +7,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("struct crnd::crn_header const * __cdecl crnd::crnd_get_header(void const *, unsigned int)")]
internal static partial class crnd_get_header
{
public unsafe static void* Invoke(void* pData, int data_size)
[return: NativeType("struct crnd::crn_header const *")]
public unsafe static void* Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size)
{
void* ptr = null;
int num = 0;
void* ptr2 = null;
void* ptr3 = null;
num = data_size;
ptr2 = pData;
unchecked
{
if (ptr2 == null || (ulong)(uint)num < 74uL)
if (pData == null || (ulong)(uint)data_size < 74uL)
{
return null;
}
ptr3 = ptr2;
if (operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_0) != 18552)
if (crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)pData)->field_0) != 18552)
{
return null;
}
if ((ulong)(uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_1) < 74uL || (uint)num < (uint)operator_unsigned_int_uxo4hgd.Invoke(&((crnd_crn_header*)ptr3)->field_3))
if ((ulong)(uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)pData)->field_1) < 74uL || (uint)data_size < (uint)crn_packed_uint_4_ToUInt32.Invoke(&((crnd_crn_header*)pData)->field_3))
{
return null;
}
return ptr3;
return pData;
}
}
}
@@ -7,50 +7,39 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void const * __cdecl crnd::crnd_get_level_data(void const *, unsigned int, unsigned int, unsigned int *)")]
internal static partial class crnd_get_level_data
{
public unsafe static void* Invoke(void* pData, int data_size, int level_index, void* pSize)
[return: NativeType("void const *")]
public unsafe static void* Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size, [NativeType("unsigned int")] int level_index, [NativeType("unsigned int *")] void* pSize)
{
void* ptr = null;
void* ptr2 = null;
int num = 0;
int num2 = 0;
void* ptr3 = null;
void* ptr4 = null;
int num3 = 0;
int num4 = 0;
ptr2 = pSize;
num = level_index;
num2 = data_size;
ptr3 = pData;
unchecked
{
if (ptr2 != null)
if (pSize != null)
{
*(int*)ptr2 = 0;
*(int*)pSize = 0;
}
if (ptr3 == null || (uint)num2 < 62u)
if (pData == null || (uint)data_size < 62u)
{
return null;
}
ptr4 = crnd_get_header.Invoke(ptr3, num2);
if (ptr4 == null)
void* ptr = crnd_get_header.Invoke(pData, data_size);
if (ptr == null)
{
return null;
}
if ((uint)num >= (uint)operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr4)->field_7))
if ((uint)level_index >= (uint)crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7))
{
return null;
}
num3 = operator_unsigned_int_uxo4hgd.Invoke((byte*)(&((crnd_crn_header*)ptr4)->field_20) + (nint)(uint)num * (nint)sizeof(crnd_crn_packed_uint_0));
if (ptr2 != null)
int num = crn_packed_uint_4_ToUInt32.Invoke((byte*)(&((crnd_crn_header*)ptr)->field_20) + (nint)(uint)level_index * (nint)sizeof(crnd_crn_packed_uint_jymcebc));
if (pSize != null)
{
num4 = num2;
if ((uint)(num + 1) < (uint)operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr4)->field_7))
int num2 = data_size;
if ((uint)(level_index + 1) < (uint)crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7))
{
num4 = operator_unsigned_int_uxo4hgd.Invoke((byte*)(&((crnd_crn_header*)ptr4)->field_20) + (nint)(uint)(num + 1) * (nint)sizeof(crnd_crn_packed_uint_0));
num2 = crn_packed_uint_4_ToUInt32.Invoke((byte*)(&((crnd_crn_header*)ptr)->field_20) + (nint)(uint)(level_index + 1) * (nint)sizeof(crnd_crn_packed_uint_jymcebc));
}
*(int*)ptr2 = num4 - num3;
*(int*)pSize = num2 - num;
}
return (byte*)ptr3 + (uint)num3;
return (byte*)pData + (uint)num;
}
}
}
@@ -7,50 +7,37 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_get_level_info(void const *, unsigned int, unsigned int, struct crnd::crn_level_info *)")]
internal static partial class crnd_get_level_info
{
public unsafe static bool Invoke(void* pData, int data_size, int level_index, void* pLevel_info)
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size, [NativeType("unsigned int")] int level_index, [NativeType("struct crnd::crn_level_info *")] void* pLevel_info)
{
bool flag = false;
void* ptr = null;
int num = 0;
int num2 = 0;
void* ptr2 = null;
void* ptr3 = null;
int num3 = 0;
int num4 = 0;
ptr = pLevel_info;
num = level_index;
num2 = data_size;
ptr2 = pData;
unchecked
{
if (ptr2 == null || (uint)num2 < 62u || ptr == null)
if (pData == null || (uint)data_size < 62u || pLevel_info == null)
{
return false;
}
if ((long)(uint)((crnd_crn_level_info*)ptr)->field_0 != 32L)
if ((long)(uint)((crnd_crn_level_info*)pLevel_info)->field_0 != 32L)
{
return false;
}
ptr3 = crnd_get_header.Invoke(ptr2, num2);
if (ptr3 == null)
void* ptr = crnd_get_header.Invoke(pData, data_size);
if (ptr == null)
{
return false;
}
if ((uint)num >= (uint)operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_7))
if ((uint)level_index >= (uint)crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7))
{
return false;
}
num3 = maximum.Invoke(1, operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_5) >>> num);
num4 = maximum.Invoke(1, operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_6) >>> num);
((crnd_crn_level_info*)ptr)->field_1 = num3;
((crnd_crn_level_info*)ptr)->field_2 = num4;
((crnd_crn_level_info*)ptr)->field_3 = operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_8);
((crnd_crn_level_info*)ptr)->field_4 = num3 + 3 >>> 2;
((crnd_crn_level_info*)ptr)->field_5 = num4 + 3 >>> 2;
bool flag2 = ((operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) != 0) ? (operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) == 9) : true);
_ = flag2;
((crnd_crn_level_info*)ptr)->field_6 = InstructionHelper.Select(flag2, 8, 16);
((crnd_crn_level_info*)ptr)->field_7 = operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9);
int num = maximum.Invoke(1, crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_5) >>> level_index);
int num2 = maximum.Invoke(1, crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_6) >>> level_index);
((crnd_crn_level_info*)pLevel_info)->field_1 = num;
((crnd_crn_level_info*)pLevel_info)->field_2 = num2;
((crnd_crn_level_info*)pLevel_info)->field_3 = crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_8);
((crnd_crn_level_info*)pLevel_info)->field_4 = num + 3 >>> 2;
((crnd_crn_level_info*)pLevel_info)->field_5 = num2 + 3 >>> 2;
((crnd_crn_level_info*)pLevel_info)->field_6 = InstructionHelper.Select((crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) != 0) ? (crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) == 9) : true, 8, 16);
((crnd_crn_level_info*)pLevel_info)->field_7 = crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9);
return true;
}
}
@@ -7,27 +7,21 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned int __cdecl crnd::crnd_get_segmented_file_size(void const *, unsigned int)")]
internal static partial class crnd_get_segmented_file_size
{
public unsafe static int Invoke(void* pData, int data_size)
[return: NativeType("unsigned int")]
public unsafe static int Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size)
{
int num = 0;
int num2 = 0;
void* ptr = null;
void* ptr2 = null;
int num3 = 0;
num2 = data_size;
ptr = pData;
unchecked
{
if (ptr == null || (uint)num2 < 62u)
if (pData == null || (uint)data_size < 62u)
{
return 0;
}
ptr2 = crnd_get_header.Invoke(ptr, num2);
if (ptr2 == null)
void* ptr = crnd_get_header.Invoke(pData, data_size);
if (ptr == null)
{
return 0;
}
return maximum.Invoke(maximum.Invoke(maximum.Invoke(maximum.Invoke(maximum.Invoke(operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr2)->field_1), operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_14.field_0) + operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_14.field_1)), operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_15.field_0) + operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_15.field_1)), operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_16.field_0) + operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_16.field_1)), operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_17.field_0) + operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_17.field_1)), operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr2)->field_19) + operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr2)->field_18));
return maximum.Invoke(maximum.Invoke(maximum.Invoke(maximum.Invoke(maximum.Invoke(crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_1), crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_14.field_0) + crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_14.field_1)), crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_15.field_0) + crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_15.field_1)), crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_16.field_0) + crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_16.field_1)), crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_17.field_0) + crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_17.field_1)), crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_19) + crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_18));
}
}
}
@@ -7,41 +7,32 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_get_texture_info(void const *, unsigned int, struct crnd::crn_texture_info *)")]
internal static partial class crnd_get_texture_info
{
public unsafe static bool Invoke(void* pData, int data_size, void* pInfo)
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size, [NativeType("struct crnd::crn_texture_info *")] void* pInfo)
{
bool flag = false;
void* ptr = null;
int num = 0;
void* ptr2 = null;
void* ptr3 = null;
ptr = pInfo;
num = data_size;
ptr2 = pData;
unchecked
{
if (ptr2 == null || (ulong)(uint)num < 74uL || ptr == null)
if (pData == null || (ulong)(uint)data_size < 74uL || pInfo == null)
{
return false;
}
if ((long)(uint)((crnd_crn_texture_info*)ptr)->field_0 != 36L)
if ((long)(uint)((crnd_crn_texture_info*)pInfo)->field_0 != 36L)
{
return false;
}
ptr3 = crnd_get_header.Invoke(ptr2, num);
if (ptr3 == null)
void* ptr = crnd_get_header.Invoke(pData, data_size);
if (ptr == null)
{
return false;
}
((crnd_crn_texture_info*)ptr)->field_1 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_5);
((crnd_crn_texture_info*)ptr)->field_2 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_6);
((crnd_crn_texture_info*)ptr)->field_3 = operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_7);
((crnd_crn_texture_info*)ptr)->field_4 = operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_8);
((crnd_crn_texture_info*)ptr)->field_8 = operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9);
bool flag2 = ((operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) == 0) ? true : ((operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) == 9) ? true : ((operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) == 10) ? true : ((operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) != 11) ? (operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) == 13) : true))));
_ = flag2;
((crnd_crn_texture_info*)ptr)->field_5 = InstructionHelper.Select(flag2, 8, 16);
((crnd_crn_texture_info*)ptr)->field_6 = operator_unsigned_int_uxo4hgd.Invoke(&((crnd_crn_header*)ptr3)->field_12);
((crnd_crn_texture_info*)ptr)->field_7 = operator_unsigned_int_uxo4hgd.Invoke(&((crnd_crn_header*)ptr3)->field_13);
((crnd_crn_texture_info*)pInfo)->field_1 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_5);
((crnd_crn_texture_info*)pInfo)->field_2 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_6);
((crnd_crn_texture_info*)pInfo)->field_3 = crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7);
((crnd_crn_texture_info*)pInfo)->field_4 = crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_8);
((crnd_crn_texture_info*)pInfo)->field_8 = crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9);
((crnd_crn_texture_info*)pInfo)->field_5 = InstructionHelper.Select((crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) == 0) ? true : ((crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) == 9) ? true : ((crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) == 10) ? true : ((crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) != 11) ? (crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) == 13) : true))), 8, 16);
((crnd_crn_texture_info*)pInfo)->field_6 = crn_packed_uint_4_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_12);
((crnd_crn_texture_info*)pInfo)->field_7 = crn_packed_uint_4_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_13);
return true;
}
}
@@ -6,6 +6,7 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_is_debugger_present(void)")]
internal static partial class crnd_is_debugger_present
{
[return: NativeType("bool")]
public static bool Invoke()
{
return false;
@@ -9,81 +9,60 @@ internal static partial class crnd_malloc
{
private partial struct LocalVariables
{
public unsafe void* field_0;
public unsafe void* field_1;
public long field_2;
public long field_3;
public unsafe void* field_4;
public long field_0;
}
public unsafe static void* Invoke(long size, void* pActual_size)
[return: NativeType("void *")]
public unsafe static void* Invoke([NativeType("unsigned __int64")] long size, [NativeType("unsigned __int64 *")] void* pActual_size)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = 0L;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0L;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = pActual_size;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = size;
LocalVariables* localsPointer = startFrame.GetLocalsPointer<LocalVariables>();
localsPointer->field_0 = 0L;
unchecked
{
long field_ = (startFrame.GetLocalsPointer<LocalVariables>()->field_2 + 4L - 1L) & -4L;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_2 == 0L)
long num = (size + 4L - 1L) & -4L;
if (num == 0L)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = 4L;
num = 4L;
}
if ((ulong)startFrame.GetLocalsPointer<LocalVariables>()->field_2 > 2147418112uL)
void* ptr;
if ((ulong)num > 2147418112uL)
{
crnd_mem_error.Invoke(String_ypy7scc.__pointer);
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
ptr = null;
}
else
{
long field_2 = startFrame.GetLocalsPointer<LocalVariables>()->field_2;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = field_2;
localsPointer->field_0 = num;
void* value = g_pRealloc.Value;
void* value2 = g_pUser_data.Value;
void* field_3 = ((delegate*<void*, long, long*, bool, void*, void*>)value)(null, startFrame.GetLocalsPointer<LocalVariables>()->field_2, &startFrame.GetLocalsPointer<LocalVariables>()->field_3, true, value2);
void* ptr2 = ((delegate*<void*, long, long*, bool, void*, void*>)value)(null, num, &localsPointer->field_0, true, value2);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = field_3;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 != null)
void* ptr3 = ptr2;
if (pActual_size != null)
{
long field_4 = startFrame.GetLocalsPointer<LocalVariables>()->field_3;
*(long*)startFrame.GetLocalsPointer<LocalVariables>()->field_1 = field_4;
*(long*)pActual_size = localsPointer->field_0;
}
if (startFrame.GetLocalsPointer<LocalVariables>()->field_4 == null || (ulong)startFrame.GetLocalsPointer<LocalVariables>()->field_3 < (ulong)startFrame.GetLocalsPointer<LocalVariables>()->field_2)
if (ptr3 == null || (ulong)localsPointer->field_0 < (ulong)num)
{
crnd_mem_error.Invoke(String_xewaojb.__pointer);
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
ptr = null;
}
else
{
int num;
if (((int)startFrame.GetLocalsPointer<LocalVariables>()->field_4 & 7) == 0)
{
num = -1;
}
else
if (((int)ptr3 & 7) != 0)
{
crnd_assert.Invoke(String_42humaa.__pointer, String_yguirrd.__pointer, 2017);
num = 0;
}
void* field_5 = startFrame.GetLocalsPointer<LocalVariables>()->field_4;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_5;
ptr = ptr3;
}
}
void* field_6 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
void* result = ptr;
StackFrameList.Current.Clear(startFrame);
return field_6;
return result;
}
}
}
@@ -7,7 +7,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void __cdecl crnd::crnd_mem_error(char const *)")]
internal static partial class crnd_mem_error
{
public unsafe static void Invoke(void* p_msg)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("char const *")] void* p_msg)
{
crnd_assert.Invoke(p_msg, String_yguirrd.__pointer, 1993);
}
@@ -7,44 +7,26 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("unsigned __int64 __cdecl crnd::crnd_msize(void *)")]
internal static partial class crnd_msize
{
private partial struct LocalVariables
[return: NativeType("unsigned __int64")]
public unsafe static long Invoke([NativeType("void *")] void* p)
{
public long field_0;
public unsafe void* field_1;
}
public unsafe static long Invoke(void* p)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = 0L;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = p;
if (p == null)
{
return 0L;
}
unchecked
{
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = 0L;
}
else if (((int)startFrame.GetLocalsPointer<LocalVariables>()->field_1 & 7) != 0)
if (((int)p & 7) != 0)
{
crnd_mem_error.Invoke(String_zijibvd.__pointer);
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = 0L;
return 0L;
}
else
long result = ((delegate*<void*, void*, long>)g_pMSize.Value)(p, g_pUser_data.Value);
if (ExceptionInfo.Current != null)
{
void* value = g_pMSize.Value;
void* value2 = g_pUser_data.Value;
long field_ = ((delegate*<void*, void*, long>)value)(startFrame.GetLocalsPointer<LocalVariables>()->field_1, value2);
if (ExceptionInfo.Current != null)
{
return 0L;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_;
return 0L;
}
long field_2 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_2;
return result;
}
}
}
@@ -7,35 +7,19 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_new")]
internal static partial class crnd_new_9bg4xgd
{
private partial struct LocalVariables
{
public unsafe void* field_0;
public unsafe void* field_1;
}
[return: NativeType("class crnd::prefix_coding::decoder_tables *")]
public unsafe static void* Invoke()
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
void* field_ = crnd_malloc.Invoke(192L, null);
void* ptr = crnd_malloc.Invoke(192L, null);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = field_;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 == null)
void* ptr2 = ptr;
if (ptr2 == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
return null;
}
else
{
void* field_2 = construct_e5fhx3a.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_1);
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_2;
}
void* field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_3;
return construct_e5fhx3a.Invoke(ptr2);
}
}
@@ -7,56 +7,31 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_new_array")]
internal static partial class crnd_new_array_linsntd
{
private partial struct LocalVariables
[return: NativeType("unsigned int *")]
public unsafe static void* Invoke([NativeType("unsigned int")] int num)
{
public unsafe void* field_0;
public int field_1;
public unsafe void* field_2;
public unsafe void* field_3;
}
public unsafe static void* Invoke(int num)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = num;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 == 0)
int num2 = num;
if (num2 == 0)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 1;
num2 = 1;
}
unchecked
{
void* field_ = crnd_malloc.Invoke(8L + 4L * (long)(uint)startFrame.GetLocalsPointer<LocalVariables>()->field_1, null);
void* ptr = crnd_malloc.Invoke(8L + 4L * (long)(uint)num2, null);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_2 == null)
void* ptr2 = ptr;
if (ptr2 == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
return null;
}
else
{
void* field_2 = (byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + 8;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = field_2;
int field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_1;
*(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_3 + -4) = field_3;
int num2 = startFrame.GetLocalsPointer<LocalVariables>()->field_1 ^ -1;
*(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_3 + -8) = num2;
construct_array_rijpqya.Invoke(n: startFrame.GetLocalsPointer<LocalVariables>()->field_1, p: startFrame.GetLocalsPointer<LocalVariables>()->field_3);
void* field_4 = startFrame.GetLocalsPointer<LocalVariables>()->field_3;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_4;
}
void* field_5 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_5;
void* ptr3 = (byte*)ptr2 + 8;
*(int*)((byte*)ptr3 + -4) = num2;
*(int*)((byte*)ptr3 + -8) = num2 ^ -1;
construct_array_rijpqya.Invoke(ptr3, num2);
return ptr3;
}
}
}
@@ -7,56 +7,31 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_new_array")]
internal static partial class crnd_new_array_ovofsdb
{
private partial struct LocalVariables
[return: NativeType("unsigned short *")]
public unsafe static void* Invoke([NativeType("unsigned int")] int num)
{
public unsafe void* field_0;
public int field_1;
public unsafe void* field_2;
public unsafe void* field_3;
}
public unsafe static void* Invoke(int num)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = num;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 == 0)
int num2 = num;
if (num2 == 0)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 1;
num2 = 1;
}
unchecked
{
void* field_ = crnd_malloc.Invoke(8L + 2L * (long)(uint)startFrame.GetLocalsPointer<LocalVariables>()->field_1, null);
void* ptr = crnd_malloc.Invoke(8L + 2L * (long)(uint)num2, null);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_2 == null)
void* ptr2 = ptr;
if (ptr2 == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
return null;
}
else
{
void* field_2 = (byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + 8;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = field_2;
int field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_1;
*(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_3 + -4) = field_3;
int num2 = startFrame.GetLocalsPointer<LocalVariables>()->field_1 ^ -1;
*(int*)((byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_3 + -8) = num2;
construct_array_pri7s5c.Invoke(n: startFrame.GetLocalsPointer<LocalVariables>()->field_1, p: startFrame.GetLocalsPointer<LocalVariables>()->field_3);
void* field_4 = startFrame.GetLocalsPointer<LocalVariables>()->field_3;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_4;
}
void* field_5 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_5;
void* ptr3 = (byte*)ptr2 + 8;
*(int*)((byte*)ptr3 + -4) = num2;
*(int*)((byte*)ptr3 + -8) = num2 ^ -1;
construct_array_pri7s5c.Invoke(ptr3, num2);
return ptr3;
}
}
}
@@ -7,43 +7,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_new")]
internal static partial class crnd_new_vzd3zqa
{
private partial struct LocalVariables
[return: NativeType("class crnd::prefix_coding::decoder_tables *")]
public unsafe static void* Invoke([NativeType("class crnd::prefix_coding::decoder_tables const &")] void* init)
{
public unsafe void* field_0;
public unsafe void* field_1;
public unsafe void* field_2;
}
public unsafe static void* Invoke(void* init)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = init;
void* field_ = crnd_malloc.Invoke(192L, null);
void* ptr = crnd_malloc.Invoke(192L, null);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_2 == null)
void* ptr2 = ptr;
if (ptr2 == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
return null;
}
else
void* result = construct_zybj4yc.Invoke(ptr2, init);
if (ExceptionInfo.Current != null)
{
void* field_2 = construct_zybj4yc.Invoke(init: startFrame.GetLocalsPointer<LocalVariables>()->field_1, p: startFrame.GetLocalsPointer<LocalVariables>()->field_2);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_2;
return null;
}
void* field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_3;
return result;
}
}
@@ -7,39 +7,24 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_new")]
internal static partial class crnd_new_xzix9sb
{
private partial struct LocalVariables
{
public unsafe void* field_0;
public unsafe void* field_1;
}
[return: NativeType("class crnd::crn_unpacker *")]
public unsafe static void* Invoke()
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
void* field_ = crnd_malloc.Invoke(392L, null);
void* ptr = crnd_malloc.Invoke(392L, null);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = field_;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 == null)
void* ptr2 = ptr;
if (ptr2 == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
return null;
}
else
void* result = construct_bzfae7a.Invoke(ptr2);
if (ExceptionInfo.Current != null)
{
void* field_2 = construct_bzfae7a.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_1);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_2;
return null;
}
void* field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_3;
return result;
}
}
@@ -6,7 +6,8 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void __cdecl crnd::crnd_output_debug_string(char const *)")]
internal static partial class crnd_output_debug_string
{
public unsafe static void Invoke(void* p)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("char const *")] void* p)
{
}
}
@@ -9,82 +9,53 @@ internal static partial class crnd_realloc
{
private partial struct LocalVariables
{
public unsafe void* field_0;
public sbyte field_1;
public unsafe void* field_2;
public long field_3;
public unsafe void* field_4;
public long field_5;
public unsafe void* field_6;
public long field_0;
}
public unsafe static void* Invoke(void* p, long size, void* pActual_size, bool movable)
[return: NativeType("void *")]
public unsafe static void* Invoke([NativeType("void *")] void* p, [NativeType("unsigned __int64")] long size, [NativeType("unsigned __int64 *")] void* pActual_size, [NativeType("bool")] bool movable)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0L;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0L;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = (movable ? ((sbyte)1) : ((sbyte)0));
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = pActual_size;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = size;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = p;
LocalVariables* localsPointer = startFrame.GetLocalsPointer<LocalVariables>();
localsPointer->field_0 = 0L;
sbyte b = (movable ? ((sbyte)1) : ((sbyte)0));
unchecked
{
if (((int)startFrame.GetLocalsPointer<LocalVariables>()->field_4 & 7) != 0)
void* ptr;
if (((int)p & 7) != 0)
{
crnd_mem_error.Invoke(String_ifury7b.__pointer);
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
ptr = null;
}
else if ((ulong)startFrame.GetLocalsPointer<LocalVariables>()->field_3 > 2147418112uL)
else if ((ulong)size > 2147418112uL)
{
crnd_mem_error.Invoke(String_ypy7scc.__pointer);
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
ptr = null;
}
else
{
long field_ = startFrame.GetLocalsPointer<LocalVariables>()->field_3;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = field_;
localsPointer->field_0 = size;
void* value = g_pRealloc.Value;
void* value2 = g_pUser_data.Value;
bool flag = (startFrame.GetLocalsPointer<LocalVariables>()->field_1 & 1) == 1;
long field_2 = startFrame.GetLocalsPointer<LocalVariables>()->field_3;
void* field_3 = ((delegate*<void*, long, long*, bool, void*, void*>)value)(startFrame.GetLocalsPointer<LocalVariables>()->field_4, field_2, &startFrame.GetLocalsPointer<LocalVariables>()->field_5, flag, value2);
void* ptr2 = ((delegate*<void*, long, long*, bool, void*, void*>)value)(p, size, &localsPointer->field_0, (b & 1) == 1, value2);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = field_3;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_2 != null)
void* ptr3 = ptr2;
if (pActual_size != null)
{
long field_4 = startFrame.GetLocalsPointer<LocalVariables>()->field_5;
*(long*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_4;
*(long*)pActual_size = localsPointer->field_0;
}
int num;
if (((int)startFrame.GetLocalsPointer<LocalVariables>()->field_6 & 7) == 0)
{
num = -1;
}
else
if (((int)ptr3 & 7) != 0)
{
crnd_assert.Invoke(String_42humaa.__pointer, String_yguirrd.__pointer, 2039);
num = 0;
}
void* field_5 = startFrame.GetLocalsPointer<LocalVariables>()->field_6;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_5;
ptr = ptr3;
}
void* field_6 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
void* result = ptr;
StackFrameList.Current.Clear(startFrame);
return field_6;
return result;
}
}
}
@@ -7,15 +7,10 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void __cdecl crnd::crnd_set_memory_callbacks(void * (__cdecl *)(void *, unsigned __int64, unsigned __int64 *, bool, void *), unsigned __int64 (__cdecl *)(void *, void *), void *)")]
internal static partial class crnd_set_memory_callbacks
{
public unsafe static void Invoke(void* pRealloc, void* pMSize, void* pUser_data)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("void * (__cdecl *)(void *, unsigned __int64, unsigned __int64 *, bool, void *)")] void* pRealloc, [NativeType("unsigned __int64 (__cdecl *)(void *, void *)")] void* pMSize, [NativeType("void *")] void* pUser_data)
{
void* ptr = null;
void* ptr2 = null;
void* ptr3 = null;
ptr = pUser_data;
ptr2 = pMSize;
ptr3 = pRealloc;
if (ptr3 == null || ptr2 == null)
if (pRealloc == null || pMSize == null)
{
g_pRealloc.Value = crnd_default_realloc.__pointer;
g_pMSize.Value = crnd_default_msize.__pointer;
@@ -23,9 +18,9 @@ internal static partial class crnd_set_memory_callbacks
}
else
{
g_pRealloc.Value = ptr3;
g_pMSize.Value = ptr2;
g_pUser_data.Value = ptr;
g_pRealloc.Value = pRealloc;
g_pMSize.Value = pMSize;
g_pUser_data.Value = pUser_data;
}
}
}
@@ -8,17 +8,14 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[CleanName("crnd_trace")]
internal static partial class crnd_trace_5g37v2a
{
public unsafe static void Invoke(void* pFmt, void* args)
[return: NativeType("void")]
public unsafe static void Invoke([NativeType("char const *")] void* pFmt, [NativeType("char *")] void* args)
{
void* ptr = null;
void* ptr2 = null;
InlineArray_512_w3otm9c inlineArray_512_w3otm9c = default(InlineArray_512_w3otm9c);
ptr = args;
ptr2 = pFmt;
InlineArray512_SByte inlineArray512_SByte = default(InlineArray512_SByte);
if (crnd_is_debugger_present.Invoke())
{
vsprintf.Invoke(&inlineArray_512_w3otm9c, ptr2, ptr);
crnd_output_debug_string.Invoke(&inlineArray_512_w3otm9c);
vsprintf.Invoke(&inlineArray512_SByte, pFmt, args);
crnd_output_debug_string.Invoke(&inlineArray512_SByte);
}
}
}
@@ -6,67 +6,37 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("void * __cdecl crnd::crnd_unpack_begin(void const *, unsigned int)")]
internal static partial class crnd_unpack_begin
{
private partial struct LocalVariables
[return: NativeType("void *")]
public unsafe static void* Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size)
{
public unsafe void* field_0;
public int field_1;
public unsafe void* field_2;
public unsafe void* field_3;
}
public unsafe static void* Invoke(void* pData, int data_size)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = data_size;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = pData;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_2 == null || unchecked((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_1) < 62u)
if (pData == null || unchecked((uint)data_size) < 62u)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
return null;
}
else
void* ptr = crnd_new_xzix9sb.Invoke();
if (ExceptionInfo.Current != null)
{
void* field_ = crnd_new_xzix9sb.Invoke();
return null;
}
void* ptr2 = ptr;
if (ptr2 == null)
{
return null;
}
bool flag = init_lqqdgrc.Invoke(ptr2, pData, data_size);
if (ExceptionInfo.Current != null)
{
return null;
}
if (!flag)
{
crnd_delete_e7rwdhb.Invoke(ptr2);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = field_;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_3 == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
}
else
{
bool flag = init_lqqdgrc.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_3, data_size: startFrame.GetLocalsPointer<LocalVariables>()->field_1, pData: startFrame.GetLocalsPointer<LocalVariables>()->field_2);
if (ExceptionInfo.Current != null)
{
return null;
}
if (!flag)
{
crnd_delete_e7rwdhb.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_3);
if (ExceptionInfo.Current != null)
{
return null;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = null;
}
else
{
void* field_2 = startFrame.GetLocalsPointer<LocalVariables>()->field_3;
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_2;
}
}
return null;
}
void* field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_3;
return ptr2;
}
}
@@ -6,46 +6,22 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_unpack_end(void *)")]
internal static partial class crnd_unpack_end
{
private partial struct LocalVariables
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void *")] void* pContext)
{
public bool field_0;
public unsafe void* field_1;
public unsafe void* field_2;
}
public unsafe static bool Invoke(void* pContext)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = pContext;
if (startFrame.GetLocalsPointer<LocalVariables>()->field_1 == null)
if (pContext == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
return false;
}
else
if (!is_valid.Invoke(pContext))
{
void* field_ = startFrame.GetLocalsPointer<LocalVariables>()->field_1;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_;
if (!is_valid.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_2))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
}
else
{
crnd_delete_e7rwdhb.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_2);
if (ExceptionInfo.Current != null)
{
return false;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = true;
}
return false;
}
bool field_2 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_2;
crnd_delete_e7rwdhb.Invoke(pContext);
if (ExceptionInfo.Current != null)
{
return false;
}
return true;
}
}
@@ -6,62 +6,22 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_unpack_level(void *, void **, unsigned int, unsigned int, unsigned int)")]
internal static partial class crnd_unpack_level
{
private partial struct LocalVariables
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void *")] void* pContext, [NativeType("void **")] void* pDst, [NativeType("unsigned int")] int dst_size_in_bytes, [NativeType("unsigned int")] int row_pitch_in_bytes, [NativeType("unsigned int")] int level_index)
{
public bool field_0;
public int field_1;
public int field_2;
public int field_3;
public unsafe void* field_4;
public unsafe void* field_5;
public unsafe void* field_6;
}
public unsafe static bool Invoke(void* pContext, void* pDst, int dst_size_in_bytes, int row_pitch_in_bytes, int level_index)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = level_index;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = row_pitch_in_bytes;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = dst_size_in_bytes;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = pDst;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = pContext;
if (unchecked(startFrame.GetLocalsPointer<LocalVariables>()->field_5 == null || startFrame.GetLocalsPointer<LocalVariables>()->field_4 == null || (uint)startFrame.GetLocalsPointer<LocalVariables>()->field_3 < 8u || (uint)startFrame.GetLocalsPointer<LocalVariables>()->field_1 >= 16u))
if (unchecked(pContext == null || pDst == null || (uint)dst_size_in_bytes < 8u || (uint)level_index >= 16u))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
return false;
}
else
if (!is_valid.Invoke(pContext))
{
void* field_ = startFrame.GetLocalsPointer<LocalVariables>()->field_5;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = field_;
if (!is_valid.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_6))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
}
else
{
bool field_2 = unpack_level_cvfjdga.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_6, level_index: startFrame.GetLocalsPointer<LocalVariables>()->field_1, row_pitch_in_bytes: startFrame.GetLocalsPointer<LocalVariables>()->field_2, dst_size_in_bytes: startFrame.GetLocalsPointer<LocalVariables>()->field_3, pDst: startFrame.GetLocalsPointer<LocalVariables>()->field_4);
if (ExceptionInfo.Current != null)
{
return false;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_2;
}
return false;
}
bool field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_3;
bool result = unpack_level_cvfjdga.Invoke(pContext, pDst, dst_size_in_bytes, row_pitch_in_bytes, level_index);
if (ExceptionInfo.Current != null)
{
return false;
}
return result;
}
}
@@ -6,70 +6,22 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_unpack_level_segmented(void *, void const *, unsigned int, void **, unsigned int, unsigned int, unsigned int)")]
internal static partial class crnd_unpack_level_segmented
{
private partial struct LocalVariables
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void *")] void* pContext, [NativeType("void const *")] void* pSrc, [NativeType("unsigned int")] int src_size_in_bytes, [NativeType("void **")] void* pDst, [NativeType("unsigned int")] int dst_size_in_bytes, [NativeType("unsigned int")] int row_pitch_in_bytes, [NativeType("unsigned int")] int level_index)
{
public bool field_0;
public int field_1;
public int field_2;
public int field_3;
public unsafe void* field_4;
public int field_5;
public unsafe void* field_6;
public unsafe void* field_7;
public unsafe void* field_8;
}
public unsafe static bool Invoke(void* pContext, void* pSrc, int src_size_in_bytes, void* pDst, int dst_size_in_bytes, int row_pitch_in_bytes, int level_index)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = level_index;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = row_pitch_in_bytes;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = dst_size_in_bytes;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = pDst;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = src_size_in_bytes;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = pSrc;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = pContext;
if (unchecked(startFrame.GetLocalsPointer<LocalVariables>()->field_7 == null || startFrame.GetLocalsPointer<LocalVariables>()->field_6 == null || startFrame.GetLocalsPointer<LocalVariables>()->field_4 == null || (uint)startFrame.GetLocalsPointer<LocalVariables>()->field_3 < 8u || (uint)startFrame.GetLocalsPointer<LocalVariables>()->field_1 >= 16u))
if (unchecked(pContext == null || pSrc == null || pDst == null || (uint)dst_size_in_bytes < 8u || (uint)level_index >= 16u))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
return false;
}
else
if (!is_valid.Invoke(pContext))
{
void* field_ = startFrame.GetLocalsPointer<LocalVariables>()->field_7;
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = field_;
if (!is_valid.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_8))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
}
else
{
bool field_2 = unpack_level_zjb72ec.Invoke(startFrame.GetLocalsPointer<LocalVariables>()->field_8, level_index: startFrame.GetLocalsPointer<LocalVariables>()->field_1, row_pitch_in_bytes: startFrame.GetLocalsPointer<LocalVariables>()->field_2, dst_size_in_bytes: startFrame.GetLocalsPointer<LocalVariables>()->field_3, pDst: startFrame.GetLocalsPointer<LocalVariables>()->field_4, src_size_in_bytes: startFrame.GetLocalsPointer<LocalVariables>()->field_5, pSrc: startFrame.GetLocalsPointer<LocalVariables>()->field_6);
if (ExceptionInfo.Current != null)
{
return false;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = field_2;
}
return false;
}
bool field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
StackFrameList.Current.Clear(startFrame);
return field_3;
bool result = unpack_level_zjb72ec.Invoke(pContext, pSrc, src_size_in_bytes, pDst, dst_size_in_bytes, row_pitch_in_bytes, level_index);
if (ExceptionInfo.Current != null)
{
return false;
}
return result;
}
}
@@ -8,88 +8,77 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("bool __cdecl crnd::crnd_validate_file(void const *, unsigned int, struct crnd::crn_file_info *)")]
internal static partial class crnd_validate_file
{
public unsafe static bool Invoke(void* pData, int data_size, void* pFile_info)
[return: NativeType("bool")]
public unsafe static bool Invoke([NativeType("void const *")] void* pData, [NativeType("unsigned int")] int data_size, [NativeType("struct crnd::crn_file_info *")] void* pFile_info)
{
bool flag = false;
void* ptr = null;
int num = 0;
void* ptr2 = null;
void* ptr3 = null;
int num2 = 0;
int num3 = 0;
int num4 = 0;
int num5 = 0;
ptr = pFile_info;
num = data_size;
ptr2 = pData;
unchecked
{
if (ptr != null)
if (pFile_info != null)
{
if ((long)(uint)((crnd_crn_file_info*)ptr)->field_0 != 104L)
if ((long)(uint)((crnd_crn_file_info*)pFile_info)->field_0 != 104L)
{
return false;
}
llvm_memset_p0_i64.Invoke(&((crnd_crn_file_info*)ptr)->field_0 + 1, 0, 100L, isVolatile: false);
llvm_memset_p0_i64.Invoke(&((crnd_crn_file_info*)pFile_info)->field_0 + 1, 0, 100L, isVolatile: false);
}
if (ptr2 == null || (uint)num < 62u)
if (pData == null || (uint)data_size < 62u)
{
return false;
}
ptr3 = crnd_get_header.Invoke(ptr2, num);
if (ptr3 == null)
void* ptr = crnd_get_header.Invoke(pData, data_size);
if (ptr == null)
{
return false;
}
if ((ushort)crc16.Invoke(len: (int)checked(unchecked((uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_1)) - unchecked((long)(&((crnd_crn_header*)ptr3)->field_3) - (long)ptr3)), pBuf: &((crnd_crn_header*)ptr3)->field_3, crc: 0) != operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_2))
if ((ushort)crc16.Invoke(len: (int)checked(unchecked((uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_1)) - unchecked((long)(&((crnd_crn_header*)ptr)->field_3) - (long)ptr)), pBuf: &((crnd_crn_header*)ptr)->field_3, crc: 0) != crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_2))
{
return false;
}
if ((ushort)crc16.Invoke(len: operator_unsigned_int_uxo4hgd.Invoke(&((crnd_crn_header*)ptr3)->field_3) - operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_1), pBuf: (byte*)ptr2 + (uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_1), crc: 0) != operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_4))
if ((ushort)crc16.Invoke(len: crn_packed_uint_4_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_3) - crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_1), pBuf: (byte*)pData + (uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_1), crc: 0) != crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_4))
{
return false;
}
if (operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_8) != 1 && operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_8) != 6)
if (crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_8) != 1 && crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_8) != 6)
{
return false;
}
if ((uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_5) < 1u || (uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_5) > 4096u)
if ((uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_5) < 1u || (uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_5) > 4096u)
{
return false;
}
if ((uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_6) < 1u || (uint)operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_6) > 4096u)
if ((uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_6) < 1u || (uint)crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_6) > 4096u)
{
return false;
}
if ((uint)operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_7) < 1u || (uint)operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_7) > (uint)compute_max_mips.Invoke(height: operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_6), width: operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_5)))
if ((uint)crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7) < 1u || (uint)crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7) > (uint)compute_max_mips.Invoke(height: crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_6), width: crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_5)))
{
return false;
}
if (operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) < 0 || operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_9) >= 15)
if (crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) < 0 || crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_9) >= 15)
{
return false;
}
if (ptr != null)
if (pFile_info != null)
{
((crnd_crn_file_info*)ptr)->field_1 = operator_unsigned_int_uxo4hgd.Invoke(&((crnd_crn_header*)ptr3)->field_3);
((crnd_crn_file_info*)ptr)->field_2 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_1);
((crnd_crn_file_info*)ptr)->field_3 = operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr3)->field_14.field_1) + operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr3)->field_15.field_1) + operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr3)->field_16.field_1) + operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)ptr3)->field_17.field_1);
((crnd_crn_file_info*)ptr)->field_4 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_18);
((crnd_crn_file_info*)ptr)->field_5 = operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_7);
for (num4 = 0; (uint)num4 < (uint)operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_7); num4++)
((crnd_crn_file_info*)pFile_info)->field_1 = crn_packed_uint_4_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_3);
((crnd_crn_file_info*)pFile_info)->field_2 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_1);
((crnd_crn_file_info*)pFile_info)->field_3 = crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_14.field_1) + crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_15.field_1) + crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_16.field_1) + crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_17.field_1);
((crnd_crn_file_info*)pFile_info)->field_4 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_18);
((crnd_crn_file_info*)pFile_info)->field_5 = crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7);
for (int i = 0; (uint)i < (uint)crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7); i++)
{
num5 = operator_unsigned_int_uxo4hgd.Invoke(&((crnd_crn_header*)ptr3)->field_3);
if ((uint)(num4 + 1) < (uint)operator_unsigned_int_neugqod.Invoke(&((crnd_crn_header*)ptr3)->field_7))
int num = crn_packed_uint_4_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_3);
if ((uint)(i + 1) < (uint)crn_packed_uint_1_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_7))
{
num5 = operator_unsigned_int_uxo4hgd.Invoke((byte*)(&((crnd_crn_header*)ptr3)->field_20) + (nint)(uint)(num4 + 1) * (nint)sizeof(crnd_crn_packed_uint_0));
num = crn_packed_uint_4_ToUInt32.Invoke((byte*)(&((crnd_crn_header*)ptr)->field_20) + (nint)(uint)(i + 1) * (nint)sizeof(crnd_crn_packed_uint_jymcebc));
}
int num6 = num5 - operator_unsigned_int_uxo4hgd.Invoke((byte*)(&((crnd_crn_header*)ptr3)->field_20) + (nint)(uint)num4 * (nint)sizeof(crnd_crn_packed_uint_0));
((int*)(&((crnd_crn_file_info*)ptr)->field_6))[(uint)num4] = num6;
int num2 = num - crn_packed_uint_4_ToUInt32.Invoke((byte*)(&((crnd_crn_header*)ptr)->field_20) + (nint)(uint)i * (nint)sizeof(crnd_crn_packed_uint_jymcebc));
((int*)(&((crnd_crn_file_info*)pFile_info)->field_6))[(uint)i] = num2;
}
((crnd_crn_file_info*)ptr)->field_7 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_14.field_2);
((crnd_crn_file_info*)ptr)->field_8 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_15.field_2);
((crnd_crn_file_info*)ptr)->field_9 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_16.field_2);
((crnd_crn_file_info*)ptr)->field_10 = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)ptr3)->field_17.field_2);
((crnd_crn_file_info*)pFile_info)->field_7 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_14.field_2);
((crnd_crn_file_info*)pFile_info)->field_8 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_15.field_2);
((crnd_crn_file_info*)pFile_info)->field_9 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_16.field_2);
((crnd_crn_file_info*)pFile_info)->field_10 = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)ptr)->field_17.field_2);
}
return true;
}
@@ -8,120 +8,97 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: unsigned int __cdecl crnd::symbol_codec::decode(class crnd::static_huffman_data_model const &)")]
internal static partial class decode
{
public unsafe static int Invoke(void* @this, void* model)
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this, [NativeType("class crnd::static_huffman_data_model const &")] void* model)
{
int num = 0;
void* ptr = null;
void* ptr2 = null;
int num2 = 0;
int num3 = 0;
void* ptr3 = null;
int num4 = 0;
int num5 = 0;
int num6 = 0;
int num7 = 0;
int num8 = 0;
int num9 = 0;
int num10 = 0;
ptr = model;
unchecked
{
ptr2 = ((crnd_static_huffman_data_model*)ptr)->field_2;
void* field_ = ((crnd_static_huffman_data_model*)model)->field_2;
if (((crnd_symbol_codec*)@this)->field_5 < 24)
{
if (((crnd_symbol_codec*)@this)->field_5 < 16)
{
num2 = 0;
num3 = 0;
ptr3 = ((crnd_symbol_codec*)@this)->field_1;
if (ptr3 < ((crnd_symbol_codec*)@this)->field_2)
int num = 0;
int num2 = 0;
void* ptr = ((crnd_symbol_codec*)@this)->field_1;
if (ptr < ((crnd_symbol_codec*)@this)->field_2)
{
void* ptr4 = ptr3;
ptr3 = (byte*)ptr4 + 1;
num2 = (byte)(*(sbyte*)ptr4);
void* ptr2 = ptr;
ptr = (byte*)ptr2 + 1;
num = (byte)(*(sbyte*)ptr2);
}
if (ptr3 < ((crnd_symbol_codec*)@this)->field_2)
if (ptr < ((crnd_symbol_codec*)@this)->field_2)
{
void* ptr5 = ptr3;
ptr3 = (byte*)ptr5 + 1;
num3 = (byte)(*(sbyte*)ptr5);
void* ptr3 = ptr;
ptr = (byte*)ptr3 + 1;
num2 = (byte)(*(sbyte*)ptr3);
}
((crnd_symbol_codec*)@this)->field_1 = ptr3;
int num11;
((crnd_symbol_codec*)@this)->field_1 = ptr;
int num3;
checked
{
unchecked((crnd_symbol_codec*)@this)->field_5 += 16;
num11 = ((num2 << 8) | num3) << 32 - unchecked((crnd_symbol_codec*)@this)->field_5;
num3 = ((num << 8) | num2) << 32 - unchecked((crnd_symbol_codec*)@this)->field_5;
}
((crnd_symbol_codec*)@this)->field_4 |= num11;
((crnd_symbol_codec*)@this)->field_4 |= num3;
}
else
{
int num12;
int num4;
if (((crnd_symbol_codec*)@this)->field_1 < ((crnd_symbol_codec*)@this)->field_2)
{
void** field_ = &((crnd_symbol_codec*)@this)->field_1;
void* ptr6 = *field_;
*field_ = (byte*)ptr6 + 1;
num12 = (byte)(*(sbyte*)ptr6);
void** field_2 = &((crnd_symbol_codec*)@this)->field_1;
void* ptr4 = *field_2;
*field_2 = (byte*)ptr4 + 1;
num4 = (byte)(*(sbyte*)ptr4);
}
else
{
num12 = 0;
num4 = 0;
}
num5 = num12;
int num13;
int num5 = num4;
int num6;
checked
{
unchecked((crnd_symbol_codec*)@this)->field_5 += 8;
num13 = num5 << 32 - unchecked((crnd_symbol_codec*)@this)->field_5;
num6 = num5 << 32 - unchecked((crnd_symbol_codec*)@this)->field_5;
}
((crnd_symbol_codec*)@this)->field_4 |= num13;
((crnd_symbol_codec*)@this)->field_4 |= num6;
}
}
num6 = (((crnd_symbol_codec*)@this)->field_4 >>> 16) + 1;
if ((uint)num6 <= (uint)((crnd_prefix_coding_decoder_tables*)ptr2)->field_4)
int num7 = (((crnd_symbol_codec*)@this)->field_4 >>> 16) + 1;
int num9;
int i;
if ((uint)num7 <= (uint)((crnd_prefix_coding_decoder_tables*)field_)->field_4)
{
num9 = ((int*)((crnd_prefix_coding_decoder_tables*)ptr2)->field_11)[(uint)(((crnd_symbol_codec*)@this)->field_4 >>> 32 - ((crnd_prefix_coding_decoder_tables*)ptr2)->field_2)];
int num14;
if (num9 != -1)
{
num14 = -1;
}
else
int num8 = ((int*)((crnd_prefix_coding_decoder_tables*)field_)->field_11)[(uint)(((crnd_symbol_codec*)@this)->field_4 >>> 32 - ((crnd_prefix_coding_decoder_tables*)field_)->field_2)];
if (num8 == -1)
{
crnd_assert.Invoke(String_fwybtzb.__pointer, String_yguirrd.__pointer, 2691);
num14 = 0;
}
num7 = num9 & 0xFFFF;
num8 = num9 >>> 16;
int num15;
if ((byte)(*(sbyte*)Index_3lowkad.Invoke(&((crnd_static_huffman_data_model*)ptr)->field_1, num7)) == num8)
{
num15 = -1;
}
else
num9 = num8 & 0xFFFF;
i = num8 >>> 16;
if ((byte)(*(sbyte*)vector_unsigned_char_Index_3lowkad.Invoke(&((crnd_static_huffman_data_model*)model)->field_1, num9)) != i)
{
crnd_assert.Invoke(String_e4i4x9a.__pointer, String_yguirrd.__pointer, 2695);
num15 = 0;
}
}
else
{
for (num8 = ((crnd_prefix_coding_decoder_tables*)ptr2)->field_5; (uint)num6 > (uint)((int*)(&((crnd_prefix_coding_decoder_tables*)ptr2)->field_8))[(uint)(num8 - 1)]; num8++)
for (i = ((crnd_prefix_coding_decoder_tables*)field_)->field_5; (uint)num7 > (uint)((int*)(&((crnd_prefix_coding_decoder_tables*)field_)->field_8))[(uint)(i - 1)]; i++)
{
}
num10 = ((int*)(&((crnd_prefix_coding_decoder_tables*)ptr2)->field_9))[(uint)(num8 - 1)] + (((crnd_symbol_codec*)@this)->field_4 >>> 32 - num8);
if ((uint)num10 >= (uint)((crnd_static_huffman_data_model*)ptr)->field_0)
int num10 = ((int*)(&((crnd_prefix_coding_decoder_tables*)field_)->field_9))[(uint)(i - 1)] + (((crnd_symbol_codec*)@this)->field_4 >>> 32 - i);
if ((uint)num10 >= (uint)((crnd_static_huffman_data_model*)model)->field_0)
{
crnd_assert.Invoke(String_xzkwrkb.__pointer, String_yguirrd.__pointer, 2709);
return 0;
}
num7 = (ushort)((short*)((crnd_prefix_coding_decoder_tables*)ptr2)->field_13)[num10];
num9 = (ushort)((short*)((crnd_prefix_coding_decoder_tables*)field_)->field_13)[num10];
}
((crnd_symbol_codec*)@this)->field_4 <<= num8;
((crnd_symbol_codec*)@this)->field_5 -= num8;
return num7;
((crnd_symbol_codec*)@this)->field_4 <<= i;
((crnd_symbol_codec*)@this)->field_5 -= i;
return num9;
}
}
}
@@ -9,120 +9,97 @@ internal static partial class decode_alpha_endpoints
{
private partial struct LocalVariables
{
public bool field_0;
public int field_1;
public crnd_static_huffman_data_model field_2;
public int field_3;
public unsafe void* field_4;
public int field_5;
public int field_6;
public int field_7;
public crnd_static_huffman_data_model field_0;
}
[return: NativeType("bool")]
public unsafe static bool Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = default(crnd_static_huffman_data_model);
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = 0;
LocalVariables* localsPointer = startFrame.GetLocalsPointer<LocalVariables>();
localsPointer->field_0 = default(crnd_static_huffman_data_model);
unchecked
{
int field_ = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_16.field_2);
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = field_;
if (!start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_16.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_16.field_0)))
int num = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_16.field_2);
bool flag;
if (!start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_16.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_16.field_0)))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
flag = false;
}
else
{
static_huffman_data_model_Constructor_tl33idc.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_2);
bool flag = decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_2);
static_huffman_data_model_Constructor_tl33idc.Invoke(&localsPointer->field_0);
bool flag2 = decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
goto IL_038a;
goto IL_01e3;
}
if (!flag)
if (!flag2)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 1;
flag = false;
}
else
{
bool flag2 = resize_w95s75a.Invoke(&((crnd_crn_unpacker*)@this)->field_10, startFrame.GetLocalsPointer<LocalVariables>()->field_1);
bool flag3 = resize_w95s75a.Invoke(&((crnd_crn_unpacker*)@this)->field_10, num);
if (ExceptionInfo.Current != null)
{
goto IL_038a;
goto IL_01e3;
}
if (!flag2)
if (!flag3)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = false;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 1;
flag = false;
}
else
{
void* field_2 = Index_uimxdqb.Invoke(&((crnd_crn_unpacker*)@this)->field_10, 0);
void* ptr = vector_unsigned_short_Index.Invoke(&((crnd_crn_unpacker*)@this)->field_10, 0);
if (ExceptionInfo.Current != null)
{
goto IL_038a;
goto IL_01e3;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = field_2;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = 0;
while ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_7 < (uint)startFrame.GetLocalsPointer<LocalVariables>()->field_1)
void* ptr2 = ptr;
int num2 = 0;
int num3 = 0;
int num4 = 0;
while ((uint)num4 < (uint)num)
{
int field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_5;
int num = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_2);
int num5 = num2;
int num6 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = (field_3 + num) & 0xFF;
int field_4 = startFrame.GetLocalsPointer<LocalVariables>()->field_6;
int num2 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_2);
num2 = (num5 + num6) & 0xFF;
int num7 = num3;
int num8 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = (field_4 + num2) & 0xFF;
short num3 = (short)(startFrame.GetLocalsPointer<LocalVariables>()->field_5 | (startFrame.GetLocalsPointer<LocalVariables>()->field_6 << 8));
void* field_5 = startFrame.GetLocalsPointer<LocalVariables>()->field_4;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = (byte*)field_5 + 2;
*(short*)field_5 = num3;
int field_6 = startFrame.GetLocalsPointer<LocalVariables>()->field_7 + 1;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = field_6;
num3 = (num7 + num8) & 0xFF;
short num9 = (short)(num2 | (num3 << 8));
void* ptr3 = ptr2;
ptr2 = (byte*)ptr3 + 2;
*(short*)ptr3 = num9;
num4++;
continue;
}
}
goto IL_038a;
goto IL_01e3;
}
stop_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4);
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = true;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 1;
flag = true;
}
}
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_2);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
}
}
bool field_7 = startFrame.GetLocalsPointer<LocalVariables>()->field_0;
bool result = flag;
StackFrameList.Current.Clear(startFrame);
return field_7;
return result;
}
IL_038a:
IL_01e3:
ExceptionInfo current = ExceptionInfo.Current;
ExceptionInfo.Current = null;
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_2);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
@@ -13,143 +13,89 @@ internal static partial class decode_alpha_selectors
{
public crnd_static_huffman_data_model field_0;
public InlineArray_64_w3otm9c field_1;
public int field_2;
public int field_3;
public int field_4;
public int field_5;
public int field_6;
public int field_7;
public int field_8;
public int field_9;
public InlineArray64_SByte field_1;
}
[return: NativeType("bool")]
public unsafe static bool Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = default(crnd_static_huffman_data_model);
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = default(InlineArray_64_w3otm9c);
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = 0;
LocalVariables* localsPointer = startFrame.GetLocalsPointer<LocalVariables>();
localsPointer->field_0 = default(crnd_static_huffman_data_model);
localsPointer->field_1 = default(InlineArray64_SByte);
unchecked
{
start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_0));
static_huffman_data_model_Constructor_tl33idc.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_0);
start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_0));
static_huffman_data_model_Constructor_tl33idc.Invoke(&localsPointer->field_0);
decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current == null)
{
crnd_vector_8* field_ = &((crnd_crn_unpacker*)@this)->field_11;
int num = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_2);
crnd_vector_rf9iywd* field_ = &((crnd_crn_unpacker*)@this)->field_11;
int num = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_2);
if (ExceptionInfo.Current == null)
{
resize_w95s75a.Invoke(field_, num * 3);
if (ExceptionInfo.Current == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = 0;
while ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_2 < 64u)
for (int i = 0; (uint)i < 64u; i++)
{
long num2 = (uint)(startFrame.GetLocalsPointer<LocalVariables>()->field_2 & 7);
byte num3 = (byte)((sbyte*)g_dxt5_from_linear.__pointer)[num2];
long num4 = (uint)(startFrame.GetLocalsPointer<LocalVariables>()->field_2 >>> 3);
sbyte b = (sbyte)(num3 | ((byte)((sbyte*)g_dxt5_from_linear.__pointer)[num4] << 3));
long num5 = (uint)startFrame.GetLocalsPointer<LocalVariables>()->field_2;
((sbyte*)(&startFrame.GetLocalsPointer<LocalVariables>()->field_1))[num5] = b;
int field_2 = startFrame.GetLocalsPointer<LocalVariables>()->field_2 + 1;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_2;
sbyte b = (sbyte)((byte)((sbyte*)g_dxt5_from_linear.__pointer)[(uint)(i & 7)] | ((byte)((sbyte*)g_dxt5_from_linear.__pointer)[(uint)(i >>> 3)] << 3));
((sbyte*)(&localsPointer->field_1))[(uint)i] = b;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
while (true)
{
if ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_5 < (uint)size_lxodu4b.Invoke(&((crnd_crn_unpacker*)@this)->field_11))
if ((uint)num4 < (uint)size_lxodu4b.Invoke(&((crnd_crn_unpacker*)@this)->field_11))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = 0;
while ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_8 < 24u)
int num5 = 0;
int num6 = 0;
for (int j = 0; (uint)j < 24u; j += 6)
{
int num6 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_0);
int num7 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
goto end_IL_0242;
goto end_IL_0160;
}
int field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_8;
int field_4 = startFrame.GetLocalsPointer<LocalVariables>()->field_3 ^ (num6 << field_3);
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = field_4;
long num7 = (uint)((startFrame.GetLocalsPointer<LocalVariables>()->field_3 >>> startFrame.GetLocalsPointer<LocalVariables>()->field_8) & 0x3F);
int num8 = (byte)((sbyte*)(&startFrame.GetLocalsPointer<LocalVariables>()->field_1))[num7] << startFrame.GetLocalsPointer<LocalVariables>()->field_8;
int field_5 = startFrame.GetLocalsPointer<LocalVariables>()->field_6 | num8;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = field_5;
int field_6 = startFrame.GetLocalsPointer<LocalVariables>()->field_8 + 6;
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = field_6;
num2 ^= num7 << j;
num5 |= (byte)((sbyte*)(&localsPointer->field_1))[(uint)((num2 >>> j) & 0x3F)] << j;
}
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = 0;
while ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_9 < 24u)
for (int k = 0; (uint)k < 24u; k += 6)
{
int num9 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_0);
int num8 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
goto end_IL_0242;
goto end_IL_0160;
}
int field_7 = startFrame.GetLocalsPointer<LocalVariables>()->field_9;
int field_8 = startFrame.GetLocalsPointer<LocalVariables>()->field_4 ^ (num9 << field_7);
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = field_8;
long num10 = (uint)((startFrame.GetLocalsPointer<LocalVariables>()->field_4 >>> startFrame.GetLocalsPointer<LocalVariables>()->field_9) & 0x3F);
int num11 = (byte)((sbyte*)(&startFrame.GetLocalsPointer<LocalVariables>()->field_1))[num10] << startFrame.GetLocalsPointer<LocalVariables>()->field_9;
int field_9 = startFrame.GetLocalsPointer<LocalVariables>()->field_7 | num11;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = field_9;
int field_10 = startFrame.GetLocalsPointer<LocalVariables>()->field_9 + 6;
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = field_10;
num3 ^= num8 << k;
num6 |= (byte)((sbyte*)(&localsPointer->field_1))[(uint)((num3 >>> k) & 0x3F)] << k;
}
short num12 = (short)startFrame.GetLocalsPointer<LocalVariables>()->field_6;
crnd_vector_8* field_11 = &((crnd_crn_unpacker*)@this)->field_11;
int field_12 = startFrame.GetLocalsPointer<LocalVariables>()->field_5;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = field_12 + 1;
void* ptr = Index_uimxdqb.Invoke(field_11, field_12);
short num9 = (short)num5;
void* ptr = vector_unsigned_short_Index.Invoke(&((crnd_crn_unpacker*)@this)->field_11, num4++);
if (ExceptionInfo.Current != null)
{
break;
}
*(short*)ptr = num12;
short num13 = (short)((startFrame.GetLocalsPointer<LocalVariables>()->field_6 >>> 16) | (startFrame.GetLocalsPointer<LocalVariables>()->field_7 << 8));
crnd_vector_8* field_13 = &((crnd_crn_unpacker*)@this)->field_11;
int field_14 = startFrame.GetLocalsPointer<LocalVariables>()->field_5;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = field_14 + 1;
void* ptr2 = Index_uimxdqb.Invoke(field_13, field_14);
*(short*)ptr = num9;
short num10 = (short)((num5 >>> 16) | (num6 << 8));
void* ptr2 = vector_unsigned_short_Index.Invoke(&((crnd_crn_unpacker*)@this)->field_11, num4++);
if (ExceptionInfo.Current != null)
{
break;
}
*(short*)ptr2 = num13;
short num14 = (short)(startFrame.GetLocalsPointer<LocalVariables>()->field_7 >>> 8);
crnd_vector_8* field_15 = &((crnd_crn_unpacker*)@this)->field_11;
int field_16 = startFrame.GetLocalsPointer<LocalVariables>()->field_5;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = field_16 + 1;
void* ptr3 = Index_uimxdqb.Invoke(field_15, field_16);
*(short*)ptr2 = num10;
short num11 = (short)(num6 >>> 8);
void* ptr3 = vector_unsigned_short_Index.Invoke(&((crnd_crn_unpacker*)@this)->field_11, num4++);
if (ExceptionInfo.Current != null)
{
break;
}
*(short*)ptr3 = num14;
*(short*)ptr3 = num11;
continue;
}
stop_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4);
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
@@ -157,7 +103,7 @@ internal static partial class decode_alpha_selectors
StackFrameList.Current.Clear(startFrame);
return true;
continue;
end_IL_0242:
end_IL_0160:
break;
}
}
@@ -165,7 +111,7 @@ internal static partial class decode_alpha_selectors
}
ExceptionInfo current = ExceptionInfo.Current;
ExceptionInfo.Current = null;
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
@@ -13,135 +13,97 @@ internal static partial class decode_alpha_selectors_etc
{
public crnd_static_huffman_data_model field_0;
public InlineArray_8_w3otm9c field_1;
public unsafe void* field_2;
public int field_3;
public int field_4;
public int field_5;
public sbyte field_6;
public sbyte field_7;
public sbyte field_8;
public sbyte field_9;
public InlineArray8_SByte field_1;
}
[return: NativeType("bool")]
public unsafe static bool Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = default(crnd_static_huffman_data_model);
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = default(InlineArray_8_w3otm9c);
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = 0;
LocalVariables* localsPointer = startFrame.GetLocalsPointer<LocalVariables>();
localsPointer->field_0 = default(crnd_static_huffman_data_model);
localsPointer->field_1 = default(InlineArray8_SByte);
unchecked
{
start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_0));
static_huffman_data_model_Constructor_tl33idc.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_0);
start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_0));
static_huffman_data_model_Constructor_tl33idc.Invoke(&localsPointer->field_0);
decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current == null)
{
crnd_vector_8* field_ = &((crnd_crn_unpacker*)@this)->field_11;
int num = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_2);
crnd_vector_rf9iywd* field_ = &((crnd_crn_unpacker*)@this)->field_11;
int num = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_2);
if (ExceptionInfo.Current == null)
{
resize_w95s75a.Invoke(field_, num * 6);
if (ExceptionInfo.Current == null)
{
llvm_memset_p0_i64.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_1, 0, 8L, isVolatile: false);
void* field_2 = begin.Invoke(&((crnd_crn_unpacker*)@this)->field_11);
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_2;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
llvm_memset_p0_i64.Invoke(&localsPointer->field_1, 0, 8L, isVolatile: false);
void* ptr = begin.Invoke(&((crnd_crn_unpacker*)@this)->field_11);
int num2 = 0;
while (true)
{
if ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_3 < (uint)size_lxodu4b.Invoke(&((crnd_crn_unpacker*)@this)->field_11))
if ((uint)num2 < (uint)size_lxodu4b.Invoke(&((crnd_crn_unpacker*)@this)->field_11))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
while ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_5 < 16u)
int num3 = 0;
for (int i = 0; (uint)i < 16u; i++)
{
int field_3;
if ((startFrame.GetLocalsPointer<LocalVariables>()->field_5 & 1) != 0)
int num4;
if ((i & 1) != 0)
{
field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_4 >>> 3;
num4 = num3 >>> 3;
}
else
{
int num2 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_0);
int num5 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
goto end_IL_01a4;
goto end_IL_012b;
}
long num3 = (uint)(startFrame.GetLocalsPointer<LocalVariables>()->field_5 >>> 1);
sbyte* ptr = (sbyte*)(&startFrame.GetLocalsPointer<LocalVariables>()->field_1) + num3;
field_3 = (byte)(*ptr = (sbyte)((byte)(*ptr) ^ num2));
sbyte* ptr2 = (sbyte*)(&localsPointer->field_1) + (uint)(i >>> 1);
num4 = (byte)(*ptr2 = (sbyte)((byte)(*ptr2) ^ num5));
}
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = field_3;
sbyte field_4 = (sbyte)(startFrame.GetLocalsPointer<LocalVariables>()->field_4 & 7);
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = field_4;
if ((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6 <= 3)
num3 = num4;
sbyte b = (sbyte)(num3 & 7);
if ((byte)b <= 3)
{
sbyte field_5 = (sbyte)checked(3 - unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6));
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = field_5;
b = (sbyte)checked(3 - unchecked((byte)b));
}
int num4 = startFrame.GetLocalsPointer<LocalVariables>()->field_5 + 1;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = (sbyte)(3 * num4);
sbyte field_6 = (sbyte)((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_7 >> 3);
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = field_6;
sbyte field_7 = (sbyte)((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_7 & 7);
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = field_7;
int num5 = (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6 << checked(8 - unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9));
sbyte* ptr2 = (sbyte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_8;
*ptr2 = (sbyte)((byte)(*ptr2) | num5);
if ((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9 < 3)
sbyte b2 = (sbyte)(3 * (i + 1));
sbyte b3 = (sbyte)((byte)b2 >> 3);
sbyte b4 = (sbyte)((byte)b2 & 7);
int num6 = (byte)b << checked(8 - unchecked((byte)b4));
sbyte* ptr3 = (sbyte*)ptr + (byte)b3;
*ptr3 = (sbyte)((byte)(*ptr3) | num6);
if ((byte)b4 < 3)
{
int num6 = (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6 >> (int)(byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9;
sbyte* ptr3 = (sbyte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + checked(unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_8) - 1);
*ptr3 = (sbyte)((byte)(*ptr3) | num6);
int num7 = (byte)b >> (int)(byte)b4;
sbyte* ptr4 = (sbyte*)ptr + checked(unchecked((byte)b3) - 1);
*ptr4 = (sbyte)((byte)(*ptr4) | num7);
}
int num7 = (startFrame.GetLocalsPointer<LocalVariables>()->field_5 & 3) - (startFrame.GetLocalsPointer<LocalVariables>()->field_5 >>> 2);
sbyte field_8 = (sbyte)((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_7 + 9 * num7);
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = field_8;
sbyte field_9 = (sbyte)((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_7 >> 3);
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = field_9;
sbyte field_10 = (sbyte)((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_7 & 7);
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = field_10;
b2 = (sbyte)((byte)b2 + 9 * ((i & 3) - (i >>> 2)));
b3 = (sbyte)((byte)b2 >> 3);
b4 = (sbyte)((byte)b2 & 7);
int num8;
sbyte* ptr4;
sbyte* ptr5;
checked
{
num8 = unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6) << 8 - unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9);
ptr4 = unchecked((sbyte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2) + (unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_8) + 6);
num8 = unchecked((byte)b) << 8 - unchecked((byte)b4);
ptr5 = unchecked((sbyte*)ptr) + (unchecked((byte)b3) + 6);
}
*ptr4 = (sbyte)((byte)(*ptr4) | num8);
if ((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9 < 3)
*ptr5 = (sbyte)((byte)(*ptr5) | num8);
if ((byte)b4 < 3)
{
int num9 = (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6 >> (int)(byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9;
sbyte* ptr5 = (sbyte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + checked(unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_8) + 5);
*ptr5 = (sbyte)((byte)(*ptr5) | num9);
int num9 = (byte)b >> (int)(byte)b4;
sbyte* ptr6 = (sbyte*)ptr + checked(unchecked((byte)b3) + 5);
*ptr6 = (sbyte)((byte)(*ptr6) | num9);
}
int field_11 = startFrame.GetLocalsPointer<LocalVariables>()->field_5 + 1;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = field_11;
}
int field_12 = startFrame.GetLocalsPointer<LocalVariables>()->field_3 + 6;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = field_12;
void* field_13 = (byte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + 12;
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_13;
num2 += 6;
ptr = (byte*)ptr + 12;
continue;
}
stop_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4);
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
@@ -149,7 +111,7 @@ internal static partial class decode_alpha_selectors_etc
StackFrameList.Current.Clear(startFrame);
return true;
continue;
end_IL_01a4:
end_IL_012b:
break;
}
}
@@ -157,7 +119,7 @@ internal static partial class decode_alpha_selectors_etc
}
ExceptionInfo current = ExceptionInfo.Current;
ExceptionInfo.Current = null;
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
@@ -13,121 +13,88 @@ internal static partial class decode_alpha_selectors_etcs
{
public crnd_static_huffman_data_model field_0;
public InlineArray_8_w3otm9c field_1;
public unsafe void* field_2;
public int field_3;
public int field_4;
public int field_5;
public sbyte field_6;
public sbyte field_7;
public sbyte field_8;
public sbyte field_9;
public InlineArray8_SByte field_1;
}
[return: NativeType("bool")]
public unsafe static bool Invoke(void* @this)
{
StackFrame startFrame = StackFrameList.Current.New<LocalVariables>();
startFrame.GetLocalsPointer<LocalVariables>()->field_0 = default(crnd_static_huffman_data_model);
startFrame.GetLocalsPointer<LocalVariables>()->field_1 = default(InlineArray_8_w3otm9c);
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = null;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = 0;
LocalVariables* localsPointer = startFrame.GetLocalsPointer<LocalVariables>();
localsPointer->field_0 = default(crnd_static_huffman_data_model);
localsPointer->field_1 = default(InlineArray8_SByte);
unchecked
{
start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)operator_unsigned_int_4iyly2b.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_0));
static_huffman_data_model_Constructor_tl33idc.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_0);
start_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4, buf_size: crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_1), pBuf: (byte*)((crnd_crn_unpacker*)@this)->field_1 + (uint)crn_packed_uint_3_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_0));
static_huffman_data_model_Constructor_tl33idc.Invoke(&localsPointer->field_0);
decode_receive_static_data_model.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current == null)
{
crnd_vector_8* field_ = &((crnd_crn_unpacker*)@this)->field_11;
int num = operator_unsigned_int_f3crpsb.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_2);
crnd_vector_rf9iywd* field_ = &((crnd_crn_unpacker*)@this)->field_11;
int num = crn_packed_uint_2_ToUInt32.Invoke(&((crnd_crn_header*)((crnd_crn_unpacker*)@this)->field_3)->field_17.field_2);
if (ExceptionInfo.Current == null)
{
resize_w95s75a.Invoke(field_, num * 3);
if (ExceptionInfo.Current == null)
{
llvm_memset_p0_i64.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_1, 0, 8L, isVolatile: false);
void* field_2 = begin.Invoke(&((crnd_crn_unpacker*)@this)->field_11);
llvm_memset_p0_i64.Invoke(&localsPointer->field_1, 0, 8L, isVolatile: false);
void* ptr = begin.Invoke(&((crnd_crn_unpacker*)@this)->field_11);
if (ExceptionInfo.Current == null)
{
startFrame.GetLocalsPointer<LocalVariables>()->field_2 = field_2;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = 0;
void* ptr2 = ptr;
int num2 = 0;
while (true)
{
int field_3 = startFrame.GetLocalsPointer<LocalVariables>()->field_3;
int num2 = size_lxodu4b.Invoke(&((crnd_crn_unpacker*)@this)->field_11);
int num3 = num2;
int num4 = size_lxodu4b.Invoke(&((crnd_crn_unpacker*)@this)->field_11);
if (ExceptionInfo.Current != null)
{
break;
}
if ((uint)field_3 < (uint)(num2 << 1))
if ((uint)num3 < (uint)(num4 << 1))
{
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = 0;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = 0;
while ((uint)startFrame.GetLocalsPointer<LocalVariables>()->field_5 < 16u)
int num5 = 0;
for (int i = 0; (uint)i < 16u; i++)
{
int field_4;
if ((startFrame.GetLocalsPointer<LocalVariables>()->field_5 & 1) != 0)
int num6;
if ((i & 1) != 0)
{
field_4 = startFrame.GetLocalsPointer<LocalVariables>()->field_4 >>> 3;
num6 = num5 >>> 3;
}
else
{
int num3 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &startFrame.GetLocalsPointer<LocalVariables>()->field_0);
int num7 = decode.Invoke(&((crnd_crn_unpacker*)@this)->field_4, &localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
goto end_IL_01b4;
goto end_IL_013b;
}
long num4 = (uint)(startFrame.GetLocalsPointer<LocalVariables>()->field_5 >>> 1);
sbyte* ptr = (sbyte*)(&startFrame.GetLocalsPointer<LocalVariables>()->field_1) + num4;
field_4 = (byte)(*ptr = (sbyte)((byte)(*ptr) ^ num3));
sbyte* ptr3 = (sbyte*)(&localsPointer->field_1) + (uint)(i >>> 1);
num6 = (byte)(*ptr3 = (sbyte)((byte)(*ptr3) ^ num7));
}
startFrame.GetLocalsPointer<LocalVariables>()->field_4 = field_4;
sbyte field_5 = (sbyte)(startFrame.GetLocalsPointer<LocalVariables>()->field_4 & 7);
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = field_5;
if ((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6 <= 3)
num5 = num6;
sbyte b = (sbyte)(num5 & 7);
if ((byte)b <= 3)
{
sbyte field_6 = (sbyte)checked(3 - unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6));
startFrame.GetLocalsPointer<LocalVariables>()->field_6 = field_6;
b = (sbyte)checked(3 - unchecked((byte)b));
}
int num5 = 3 * (startFrame.GetLocalsPointer<LocalVariables>()->field_5 + 1);
int num6 = (startFrame.GetLocalsPointer<LocalVariables>()->field_5 & 3) - (startFrame.GetLocalsPointer<LocalVariables>()->field_5 >>> 2);
startFrame.GetLocalsPointer<LocalVariables>()->field_7 = (sbyte)(num5 + 9 * num6);
sbyte field_7 = (sbyte)((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_7 >> 3);
startFrame.GetLocalsPointer<LocalVariables>()->field_8 = field_7;
sbyte field_8 = (sbyte)((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_7 & 7);
startFrame.GetLocalsPointer<LocalVariables>()->field_9 = field_8;
int num7 = (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6 << checked(8 - unchecked((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9));
sbyte* ptr2 = (sbyte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + (uint)(startFrame.GetLocalsPointer<LocalVariables>()->field_3 + (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_8);
*ptr2 = (sbyte)((byte)(*ptr2) | num7);
if ((byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9 < 3)
sbyte b2 = (sbyte)(3 * (i + 1) + 9 * ((i & 3) - (i >>> 2)));
sbyte b3 = (sbyte)((byte)b2 >> 3);
sbyte b4 = (sbyte)((byte)b2 & 7);
int num8 = (byte)b << checked(8 - unchecked((byte)b4));
sbyte* ptr4 = (sbyte*)ptr2 + (uint)(num2 + (byte)b3);
*ptr4 = (sbyte)((byte)(*ptr4) | num8);
if ((byte)b4 < 3)
{
int num8 = (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_6 >> (int)(byte)startFrame.GetLocalsPointer<LocalVariables>()->field_9;
sbyte* ptr3 = (sbyte*)startFrame.GetLocalsPointer<LocalVariables>()->field_2 + (uint)(startFrame.GetLocalsPointer<LocalVariables>()->field_3 + (byte)startFrame.GetLocalsPointer<LocalVariables>()->field_8 - 1);
*ptr3 = (sbyte)((byte)(*ptr3) | num8);
int num9 = (byte)b >> (int)(byte)b4;
sbyte* ptr5 = (sbyte*)ptr2 + (uint)(num2 + (byte)b3 - 1);
*ptr5 = (sbyte)((byte)(*ptr5) | num9);
}
int field_9 = startFrame.GetLocalsPointer<LocalVariables>()->field_5 + 1;
startFrame.GetLocalsPointer<LocalVariables>()->field_5 = field_9;
}
int field_10 = startFrame.GetLocalsPointer<LocalVariables>()->field_3 + 6;
startFrame.GetLocalsPointer<LocalVariables>()->field_3 = field_10;
num2 += 6;
continue;
}
stop_decoding.Invoke(&((crnd_crn_unpacker*)@this)->field_4);
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
@@ -135,7 +102,7 @@ internal static partial class decode_alpha_selectors_etcs
StackFrameList.Current.Clear(startFrame);
return true;
continue;
end_IL_01b4:
end_IL_013b:
break;
}
}
@@ -144,7 +111,7 @@ internal static partial class decode_alpha_selectors_etcs
}
ExceptionInfo current = ExceptionInfo.Current;
ExceptionInfo.Current = null;
static_huffman_data_model_Destructor.Invoke(&startFrame.GetLocalsPointer<LocalVariables>()->field_0);
static_huffman_data_model_Destructor.Invoke(&localsPointer->field_0);
if (ExceptionInfo.Current != null)
{
return false;
@@ -6,19 +6,15 @@ namespace AssetRipper.Conversions.UnityCrunch.GlobalFunctions;
[DemangledName("public: unsigned int __cdecl crnd::symbol_codec::decode_bits(unsigned int)")]
internal static partial class decode_bits
{
public unsafe static int Invoke(void* @this, int num_bits)
[return: NativeType("unsigned int")]
public unsafe static int Invoke(void* @this, [NativeType("unsigned int")] int num_bits)
{
int num = 0;
int num2 = 0;
int num3 = 0;
int num4 = 0;
num2 = num_bits;
switch (num2)
switch (num_bits)
{
case 0:
return 0;
default:
return (Get_bits.Invoke(@this, unchecked(num2 - 16)) << 16) | Get_bits.Invoke(@this, 16);
return (Get_bits.Invoke(@this, unchecked(num_bits - 16)) << 16) | Get_bits.Invoke(@this, 16);
case 1:
case 2:
case 3:
@@ -35,7 +31,7 @@ internal static partial class decode_bits
case 14:
case 15:
case 16:
return Get_bits.Invoke(@this, num2);
return Get_bits.Invoke(@this, num_bits);
}
}
}
Loaded 100 of 335 files, more files were not shown because too many files have changed in this diff. Show more