771 {
772 IDirect3DTexture9* ptr =
pComPtr;
773 if (ptr == null)
774 {
775 return 0;
776 }
778 int num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, _D3DSURFACE_DESC*,
int>)(
int)(*(uint*)(*(
int*)ptr + 68)))((nint)ptr, 0u, &d3DSURFACE_DESC);
779 if (num >= 0)
780 {
781 if (isStoring)
782 {
784 }
787 bool flag =
Texture.CheckCompressedTexture(*(_D3DFORMAT*)(&d3DSURFACE_DESC));
788 byte b = ((!flag) ?
Texture.GetExpectedByteSizeFromFormat(*(_D3DFORMAT*)(&d3DSURFACE_DESC)) : ((byte)((*(
int*)(&d3DSURFACE_DESC) == 827611204) ? 8u : 16u)));
789 int num4 = 0;
790 int num5 = 0;
792 {
794 do
795 {
796 byte* ptr2 = null;
797 int num6;
798 if (!isStoring)
799 {
801 num4++;
802 ptr2 = (byte*)reference.ToPointer();
803 num6 = 0;
804 }
805 else
806 {
807 num6 = 16;
808 }
810 num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint, _D3DLOCKED_RECT*, tagRECT*, uint,
int>)(
int)(*(uint*)(*(
int*)ptr + 76)))((nint)ptr, (uint)num5, &d3DLOCKED_RECT,
null, (uint)num6);
811 if (num < 0)
812 {
813 break;
814 }
815 uint num7 = num2;
816 uint num8 = num3;
817 if (flag)
818 {
819 num7 = num2 + 3 >> 2;
820 num8 = num3 + 3 >> 2;
821 }
822 uint num9 = b * num7;
824 if (isStoring)
825 {
826 ptr2 = (byte*)_003CModule_003E.new_005B_005D(num9 * num8);
827 }
828 byte* ptr4 = ptr2;
829 if (0 < num8)
830 {
831 uint num10 = num8;
832 do
833 {
834 if (isStoring)
835 {
836 _003CModule_003E.memcpy_s(ptr4, num9 * num8, ptr3, num9);
837 }
838 else
839 {
840 _003CModule_003E.memcpy_s(ptr3, *(uint*)(&d3DLOCKED_RECT), ptr4, num9);
841 }
842 ptr3 = *(int*)(&d3DLOCKED_RECT) + ptr3;
843 ptr4 = (int)num9 + ptr4;
844 num10--;
845 }
846 while (num10 != 0);
847 }
849 num = ((delegate* unmanaged[Stdcall, Stdcall]<
IntPtr, uint,
int>)(
int)(*(uint*)(*(
int*)ptr + 80)))((nint)ptr, (uint)num5);
850 if (num < 0)
851 {
852 break;
853 }
854 if (isStoring)
855 {
858 num4++;
859 reference2 = intPtr;
860 }
861 num2 = ((num2 <= 1) ? 1u : (num2 >> 1));
862 num3 = ((num3 <= 1) ? 1u : (num3 >> 1));
863 num5++;
864 }
866 }
867 }
868 return num;
869 }
unsafe IDirect3DTexture9 * pComPtr