public unsafe static void Execute(ref T jobData, IntPtr jobData2, IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex)
            {
                IJobParallelForTransformExtensions.TransformParallelForLoopStruct <T> .TransformJobData transformJobData;
                UnsafeUtility.CopyPtrToStructure <IJobParallelForTransformExtensions.TransformParallelForLoopStruct <T> .TransformJobData>((void *)jobData2, out transformJobData);
                int *            ptr  = (int *)((void *)TransformAccessArray.GetSortedToUserIndex(transformJobData.TransformAccessArray));
                TransformAccess *ptr2 = (TransformAccess *)((void *)TransformAccessArray.GetSortedTransformAccess(transformJobData.TransformAccessArray));
                bool             flag = transformJobData.IsReadOnly == 1;

                if (flag)
                {
                    while (true)
                    {
                        int  num;
                        int  num2;
                        bool flag2 = !JobsUtility.GetWorkStealingRange(ref ranges, jobIndex, out num, out num2);
                        if (flag2)
                        {
                            break;
                        }
                        int num3 = num2;
                        for (int i = num; i < num3; i++)
                        {
                            int num4 = i;
                            int num5 = ptr[num4];
                            JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf <T>(ref jobData), num5, 1);
                            TransformAccess transform = ptr2[num4];
                            transform.MarkReadOnly();
                            jobData.Execute(num5, transform);
                        }
                    }
                }
                else
                {
                    int num6;
                    int num7;
                    JobsUtility.GetJobRange(ref ranges, jobIndex, out num6, out num7);
                    for (int j = num6; j < num7; j++)
                    {
                        int num8 = j;
                        int num9 = ptr[num8];
                        JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf <T>(ref jobData), num9, 1);
                        TransformAccess transform2 = ptr2[num8];
                        transform2.MarkReadWrite();
                        jobData.Execute(num9, transform2);
                    }
                }
            }
            public unsafe static void Execute(ref T jobData, IntPtr jobData2, IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex)
            {
                IntPtr transformArrayIntPtr;

                UnsafeUtility.CopyPtrToStructure <IntPtr>(jobData2, out transformArrayIntPtr);
                int *            ptr  = (int *)((void *)TransformAccessArray.GetSortedToUserIndex(transformArrayIntPtr));
                TransformAccess *ptr2 = (TransformAccess *)((void *)TransformAccessArray.GetSortedTransformAccess(transformArrayIntPtr));
                int num;
                int num2;

                JobsUtility.GetJobRange(ref ranges, jobIndex, out num, out num2);
                for (int i = num; i < num2; i++)
                {
                    int num3 = i;
                    int num4 = ptr[num3];
                    JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf <T>(ref jobData), num4, 1);
                    jobData.Execute(num4, ptr2[num3]);
                }
            }
            public static unsafe void Execute(ref T jobData, System.IntPtr jobData2, System.IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex)
            {
                UnsafeUtility.CopyPtrToStructure((void *)jobData2, out TransformJobData transformJobData);

                int *            sortedToUserIndex     = (int *)TransformAccessArray.GetSortedToUserIndex(transformJobData.TransformAccessArray);
                TransformAccess *sortedTransformAccess = (TransformAccess *)TransformAccessArray.GetSortedTransformAccess(transformJobData.TransformAccessArray);

                if (transformJobData.IsReadOnly == 1)
                {
                    while (true)
                    {
                        if (!JobsUtility.GetWorkStealingRange(ref ranges, jobIndex, out var begin, out var end))
                        {
                            break;
                        }

                        var endThatCompilerCanSeeWillNeverChange = end;
                        for (var i = begin; i < endThatCompilerCanSeeWillNeverChange; ++i)
                        {
                            int sortedIndex = i;
                            int userIndex   = sortedToUserIndex[sortedIndex];
                            JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf(ref jobData), userIndex, 1);
                            var transformAccess = sortedTransformAccess[sortedIndex];
                            transformAccess.MarkReadOnly();
                            jobData.Execute(userIndex, transformAccess);
                        }
                    }
                }
                else
                {
                    JobsUtility.GetJobRange(ref ranges, jobIndex, out var begin, out var end);
                    for (int i = begin; i < end; i++)
                    {
                        int sortedIndex = i;
                        int userIndex   = sortedToUserIndex[sortedIndex];
                        JobsUtility.PatchBufferMinMaxRanges(bufferRangePatchData, UnsafeUtility.AddressOf(ref jobData), userIndex, 1);
                        var transformAccess = sortedTransformAccess[sortedIndex];
                        transformAccess.MarkReadWrite();
                        jobData.Execute(userIndex, transformAccess);
                    }
                }
            }
            public static unsafe void Execute(ref T jobData, System.IntPtr jobData2, System.IntPtr bufferRangePatchData, ref JobRanges ranges, int jobIndex)
            {
                IntPtr transformAccessArray;

                UnsafeUtility.CopyPtrToStructure((void *)jobData2, out transformAccessArray);

                int *            sortedToUserIndex     = (int *)TransformAccessArray.GetSortedToUserIndex(transformAccessArray);
                TransformAccess *sortedTransformAccess = (TransformAccess *)TransformAccessArray.GetSortedTransformAccess(transformAccessArray);

                int begin;
                int end;

                JobsUtility.GetJobRange(ref ranges, jobIndex, out begin, out end);
                for (int i = begin; i < end; i++)
                {
                    int sortedIndex = i;
                    int userIndex   = sortedToUserIndex[sortedIndex];

                    jobData.Execute(userIndex, sortedTransformAccess[sortedIndex]);
                }
            }