From 981cdbfc8e517b914310d2b2694c726acfb5f31e Mon Sep 17 00:00:00 2001 From: Sandro Mani Date: Feb 07 2024 08:40:26 +0000 Subject: Update to 3.0.2 --- diff --git a/.gitignore b/.gitignore index b65b9c6..515c71a 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ /libjpeg-turbo-2.1.2.tar.gz /libjpeg-turbo-2.1.3.tar.gz /libjpeg-turbo-2.1.4.tar.gz +/libjpeg-turbo-3.0.2.tar.gz diff --git a/libjpeg-turbo-CET.patch b/libjpeg-turbo-CET.patch new file mode 100644 index 0000000..aca1c92 --- /dev/null +++ b/libjpeg-turbo-CET.patch @@ -0,0 +1,1089 @@ +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jccolext-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jccolext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jccolext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jccolext-avx2.asm 2024-02-07 09:20:50.851275262 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_avx2) + + EXTN(jsimd_rgb_ycc_convert_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jccolext-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jccolext-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jccolext-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jccolext-mmx.asm 2024-02-07 09:20:50.851275262 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_mmx) + + EXTN(jsimd_rgb_ycc_convert_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jccolext-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jccolext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jccolext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jccolext-sse2.asm 2024-02-07 09:20:50.852275261 +0100 +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_sse2) + + EXTN(jsimd_rgb_ycc_convert_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jcgryext-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jcgryext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jcgryext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jcgryext-avx2.asm 2024-02-07 09:20:50.852275261 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_avx2) + + EXTN(jsimd_rgb_gray_convert_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jcgryext-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jcgryext-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jcgryext-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jcgryext-mmx.asm 2024-02-07 09:20:50.852275261 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_mmx) + + EXTN(jsimd_rgb_gray_convert_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jcgryext-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jcgryext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jcgryext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jcgryext-sse2.asm 2024-02-07 09:20:50.852275261 +0100 +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_sse2) + + EXTN(jsimd_rgb_gray_convert_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jchuff-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jchuff-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jchuff-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jchuff-sse2.asm 2024-02-07 09:20:50.853275259 +0100 +@@ -350,6 +350,7 @@ times 1 << 14 db 15 + GLOBAL_FUNCTION(jsimd_huff_encode_one_block_sse2) + + EXTN(jsimd_huff_encode_one_block_sse2): ++ _endbr32 + + %assign stack_offset 0 + %define arg_state 4 + stack_offset +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jcphuff-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jcphuff-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jcphuff-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jcphuff-sse2.asm 2024-02-07 09:20:50.853275259 +0100 +@@ -281,6 +281,7 @@ + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_first_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_first_prepare_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -460,6 +461,7 @@ EXTN(jsimd_encode_mcu_AC_first_prepare_s + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_refine_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_refine_prepare_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jcsample-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jcsample-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jcsample-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jcsample-avx2.asm 2024-02-07 09:20:50.853275259 +0100 +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_avx2) + + EXTN(jsimd_h2v1_downsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -216,6 +217,7 @@ EXTN(jsimd_h2v1_downsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_avx2) + + EXTN(jsimd_h2v2_downsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jcsample-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jcsample-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jcsample-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jcsample-mmx.asm 2024-02-07 09:20:50.853275259 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_mmx) + + EXTN(jsimd_h2v1_downsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -185,6 +186,7 @@ EXTN(jsimd_h2v1_downsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_mmx) + + EXTN(jsimd_h2v2_downsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jcsample-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jcsample-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jcsample-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jcsample-sse2.asm 2024-02-07 09:20:50.853275259 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_sse2) + + EXTN(jsimd_h2v1_downsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -198,6 +199,7 @@ EXTN(jsimd_h2v1_downsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_sse2) + + EXTN(jsimd_h2v2_downsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdcolext-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jdcolext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdcolext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdcolext-avx2.asm 2024-02-07 09:20:50.853275259 +0100 +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_avx2) + + EXTN(jsimd_ycc_rgb_convert_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdcolext-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jdcolext-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdcolext-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdcolext-mmx.asm 2024-02-07 09:20:50.854275258 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_mmx) + + EXTN(jsimd_ycc_rgb_convert_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdcolext-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jdcolext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdcolext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdcolext-sse2.asm 2024-02-07 09:20:50.854275258 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_sse2) + + EXTN(jsimd_ycc_rgb_convert_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdmrgext-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jdmrgext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdmrgext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdmrgext-avx2.asm 2024-02-07 09:20:50.854275258 +0100 +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_avx2) + + EXTN(jsimd_h2v1_merged_upsample_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -523,6 +524,7 @@ EXTN(jsimd_h2v1_merged_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_avx2) + + EXTN(jsimd_h2v2_merged_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdmrgext-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jdmrgext-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdmrgext-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdmrgext-mmx.asm 2024-02-07 09:20:50.854275258 +0100 +@@ -40,6 +40,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_mmx) + + EXTN(jsimd_h2v1_merged_upsample_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -408,6 +409,7 @@ EXTN(jsimd_h2v1_merged_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_mmx) + + EXTN(jsimd_h2v2_merged_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdmrgext-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jdmrgext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdmrgext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdmrgext-sse2.asm 2024-02-07 09:20:50.855275256 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_sse2) + + EXTN(jsimd_h2v1_merged_upsample_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -465,6 +466,7 @@ EXTN(jsimd_h2v1_merged_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_sse2) + + EXTN(jsimd_h2v2_merged_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdsample-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jdsample-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdsample-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdsample-avx2.asm 2024-02-07 09:20:50.855275256 +0100 +@@ -60,6 +60,7 @@ PW_EIGHT times 16 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_avx2) + + EXTN(jsimd_h2v1_fancy_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +@@ -227,6 +228,7 @@ EXTN(jsimd_h2v1_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_avx2) + + EXTN(jsimd_h2v2_fancy_upsample_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -570,6 +572,7 @@ EXTN(jsimd_h2v2_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_avx2) + + EXTN(jsimd_h2v1_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -669,6 +672,7 @@ EXTN(jsimd_h2v1_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_avx2) + + EXTN(jsimd_h2v2_upsample_avx2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdsample-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jdsample-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdsample-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdsample-mmx.asm 2024-02-07 09:20:50.855275256 +0100 +@@ -59,6 +59,7 @@ PW_EIGHT times 4 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_mmx) + + EXTN(jsimd_h2v1_fancy_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +@@ -217,6 +218,7 @@ EXTN(jsimd_h2v1_fancy_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_mmx) + + EXTN(jsimd_h2v2_fancy_upsample_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -541,6 +543,7 @@ EXTN(jsimd_h2v2_fancy_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_mmx) + + EXTN(jsimd_h2v1_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -640,6 +643,7 @@ EXTN(jsimd_h2v1_upsample_mmx): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_mmx) + + EXTN(jsimd_h2v2_upsample_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jdsample-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jdsample-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jdsample-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jdsample-sse2.asm 2024-02-07 09:20:50.877275221 +0100 +@@ -59,6 +59,7 @@ PW_EIGHT times 8 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_sse2) + + EXTN(jsimd_h2v1_fancy_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +@@ -216,6 +217,7 @@ EXTN(jsimd_h2v1_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_sse2) + + EXTN(jsimd_h2v2_fancy_upsample_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -538,6 +540,7 @@ EXTN(jsimd_h2v2_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_sse2) + + EXTN(jsimd_h2v1_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +@@ -635,6 +638,7 @@ EXTN(jsimd_h2v1_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_sse2) + + EXTN(jsimd_h2v2_upsample_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jfdctflt-3dn.asm libjpeg-turbo-3.0.2-new/simd/i386/jfdctflt-3dn.asm +--- libjpeg-turbo-3.0.2/simd/i386/jfdctflt-3dn.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jfdctflt-3dn.asm 2024-02-07 09:20:50.877275221 +0100 +@@ -56,6 +56,7 @@ PD_1_306 times 2 dd 1.306562964876376527 + GLOBAL_FUNCTION(jsimd_fdct_float_3dnow) + + EXTN(jsimd_fdct_float_3dnow): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jfdctflt-sse.asm libjpeg-turbo-3.0.2-new/simd/i386/jfdctflt-sse.asm +--- libjpeg-turbo-3.0.2/simd/i386/jfdctflt-sse.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jfdctflt-sse.asm 2024-02-07 09:20:50.877275221 +0100 +@@ -67,6 +67,7 @@ PD_1_306 times 4 dd 1.306562964876376527 + GLOBAL_FUNCTION(jsimd_fdct_float_sse) + + EXTN(jsimd_fdct_float_sse): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jfdctfst-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jfdctfst-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jfdctfst-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jfdctfst-mmx.asm 2024-02-07 09:20:50.878275219 +0100 +@@ -81,6 +81,7 @@ PW_F1306 times 4 dw F_1_306 << CONST_SHI + GLOBAL_FUNCTION(jsimd_fdct_ifast_mmx) + + EXTN(jsimd_fdct_ifast_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jfdctfst-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jfdctfst-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jfdctfst-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jfdctfst-sse2.asm 2024-02-07 09:20:50.878275219 +0100 +@@ -82,6 +82,7 @@ PW_F1306 times 8 dw F_1_306 << CONST_SHI + GLOBAL_FUNCTION(jsimd_fdct_ifast_sse2) + + EXTN(jsimd_fdct_ifast_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jfdctint-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jfdctint-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jfdctint-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jfdctint-avx2.asm 2024-02-07 09:20:50.878275219 +0100 +@@ -260,6 +260,7 @@ PW_1_NEG1 times 8 dw + GLOBAL_FUNCTION(jsimd_fdct_islow_avx2) + + EXTN(jsimd_fdct_islow_avx2): ++ _endbr32 + push ebp + mov ebp, esp + pushpic ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jfdctint-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jfdctint-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jfdctint-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jfdctint-mmx.asm 2024-02-07 09:20:50.878275219 +0100 +@@ -102,6 +102,7 @@ PW_DESCALE_P2X times 4 dw 1 << (PASS1_B + GLOBAL_FUNCTION(jsimd_fdct_islow_mmx) + + EXTN(jsimd_fdct_islow_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jfdctint-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jfdctint-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jfdctint-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jfdctint-sse2.asm 2024-02-07 09:20:50.878275219 +0100 +@@ -103,6 +103,7 @@ PW_DESCALE_P2X times 8 dw 1 << (PASS1_B + GLOBAL_FUNCTION(jsimd_fdct_islow_sse2) + + EXTN(jsimd_fdct_islow_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctflt-3dn.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctflt-3dn.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctflt-3dn.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctflt-3dn.asm 2024-02-07 09:20:50.879275218 +0100 +@@ -65,6 +65,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_float_3dnow) + + EXTN(jsimd_idct_float_3dnow): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctflt-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctflt-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctflt-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctflt-sse2.asm 2024-02-07 09:20:50.879275218 +0100 +@@ -75,6 +75,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMP + GLOBAL_FUNCTION(jsimd_idct_float_sse2) + + EXTN(jsimd_idct_float_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctflt-sse.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctflt-sse.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctflt-sse.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctflt-sse.asm 2024-02-07 09:20:50.879275218 +0100 +@@ -75,6 +75,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_float_sse) + + EXTN(jsimd_idct_float_sse): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctfst-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctfst-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctfst-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctfst-mmx.asm 2024-02-07 09:20:50.879275218 +0100 +@@ -96,6 +96,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_ifast_mmx) + + EXTN(jsimd_idct_ifast_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctfst-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctfst-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctfst-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctfst-sse2.asm 2024-02-07 09:20:50.880275217 +0100 +@@ -94,6 +94,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPL + GLOBAL_FUNCTION(jsimd_idct_ifast_sse2) + + EXTN(jsimd_idct_ifast_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctint-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctint-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctint-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctint-avx2.asm 2024-02-07 09:20:50.880275217 +0100 +@@ -296,6 +296,7 @@ PW_1_NEG1 times 8 dw + GLOBAL_FUNCTION(jsimd_idct_islow_avx2) + + EXTN(jsimd_idct_islow_avx2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctint-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctint-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctint-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctint-mmx.asm 2024-02-07 09:20:50.880275217 +0100 +@@ -109,6 +109,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPLE + GLOBAL_FUNCTION(jsimd_idct_islow_mmx) + + EXTN(jsimd_idct_islow_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctint-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctint-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctint-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctint-sse2.asm 2024-02-07 09:20:50.880275217 +0100 +@@ -107,6 +107,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPL + GLOBAL_FUNCTION(jsimd_idct_islow_sse2) + + EXTN(jsimd_idct_islow_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctred-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctred-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctred-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctred-mmx.asm 2024-02-07 09:20:50.880275217 +0100 +@@ -117,6 +117,7 @@ PB_CENTERJSAMP times 8 db CENTERJSAMPL + GLOBAL_FUNCTION(jsimd_idct_4x4_mmx) + + EXTN(jsimd_idct_4x4_mmx): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -504,6 +505,7 @@ EXTN(jsimd_idct_4x4_mmx): + GLOBAL_FUNCTION(jsimd_idct_2x2_mmx) + + EXTN(jsimd_idct_2x2_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jidctred-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jidctred-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jidctred-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jidctred-sse2.asm 2024-02-07 09:20:50.881275215 +0100 +@@ -115,6 +115,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMP + GLOBAL_FUNCTION(jsimd_idct_4x4_sse2) + + EXTN(jsimd_idct_4x4_sse2): ++ _endbr32 + push ebp + mov eax, esp ; eax = original ebp + sub esp, byte 4 +@@ -425,6 +426,7 @@ EXTN(jsimd_idct_4x4_sse2): + GLOBAL_FUNCTION(jsimd_idct_2x2_sse2) + + EXTN(jsimd_idct_2x2_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jquant-3dn.asm libjpeg-turbo-3.0.2-new/simd/i386/jquant-3dn.asm +--- libjpeg-turbo-3.0.2/simd/i386/jquant-3dn.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jquant-3dn.asm 2024-02-07 09:20:50.881275215 +0100 +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_3dnow) + + EXTN(jsimd_convsamp_float_3dnow): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -138,6 +139,7 @@ EXTN(jsimd_convsamp_float_3dnow): + GLOBAL_FUNCTION(jsimd_quantize_float_3dnow) + + EXTN(jsimd_quantize_float_3dnow): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jquantf-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jquantf-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jquantf-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jquantf-sse2.asm 2024-02-07 09:20:50.881275215 +0100 +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_sse2) + + EXTN(jsimd_convsamp_float_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -115,6 +116,7 @@ EXTN(jsimd_convsamp_float_sse2): + GLOBAL_FUNCTION(jsimd_quantize_float_sse2) + + EXTN(jsimd_quantize_float_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jquanti-avx2.asm libjpeg-turbo-3.0.2-new/simd/i386/jquanti-avx2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jquanti-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jquanti-avx2.asm 2024-02-07 09:20:50.882275213 +0100 +@@ -37,6 +37,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_avx2) + + EXTN(jsimd_convsamp_avx2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -130,6 +131,7 @@ EXTN(jsimd_convsamp_avx2): + GLOBAL_FUNCTION(jsimd_quantize_avx2) + + EXTN(jsimd_quantize_avx2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jquanti-sse2.asm libjpeg-turbo-3.0.2-new/simd/i386/jquanti-sse2.asm +--- libjpeg-turbo-3.0.2/simd/i386/jquanti-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jquanti-sse2.asm 2024-02-07 09:20:50.882275213 +0100 +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_sse2) + + EXTN(jsimd_convsamp_sse2): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -121,6 +122,7 @@ EXTN(jsimd_convsamp_sse2): + GLOBAL_FUNCTION(jsimd_quantize_sse2) + + EXTN(jsimd_quantize_sse2): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jquant-mmx.asm libjpeg-turbo-3.0.2-new/simd/i386/jquant-mmx.asm +--- libjpeg-turbo-3.0.2/simd/i386/jquant-mmx.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jquant-mmx.asm 2024-02-07 09:20:50.881275215 +0100 +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_mmx) + + EXTN(jsimd_convsamp_mmx): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -145,6 +146,7 @@ EXTN(jsimd_convsamp_mmx): + GLOBAL_FUNCTION(jsimd_quantize_mmx) + + EXTN(jsimd_quantize_mmx): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/i386/jquant-sse.asm libjpeg-turbo-3.0.2-new/simd/i386/jquant-sse.asm +--- libjpeg-turbo-3.0.2/simd/i386/jquant-sse.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/i386/jquant-sse.asm 2024-02-07 09:20:50.881275215 +0100 +@@ -36,6 +36,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_sse) + + EXTN(jsimd_convsamp_float_sse): ++ _endbr32 + push ebp + mov ebp, esp + push ebx +@@ -138,6 +139,7 @@ EXTN(jsimd_convsamp_float_sse): + GLOBAL_FUNCTION(jsimd_quantize_float_sse) + + EXTN(jsimd_quantize_float_sse): ++ _endbr32 + push ebp + mov ebp, esp + ; push ebx ; unused +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/nasm/jsimdext.inc libjpeg-turbo-3.0.2-new/simd/nasm/jsimdext.inc +--- libjpeg-turbo-3.0.2/simd/nasm/jsimdext.inc 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/nasm/jsimdext.inc 2024-02-07 09:20:50.882275213 +0100 +@@ -513,6 +513,14 @@ const_base: + + %endif + ++%imacro _endbr32 0 ++ dd 0xfb1e0ff3 ++%endmacro ++ ++%imacro _endbr64 0 ++ dd 0xfa1e0ff3 ++%endmacro ++ + ; -------------------------------------------------------------------------- + ; Defines picked up from the C headers + ; +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jccolext-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jccolext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jccolext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jccolext-avx2.asm 2024-02-07 09:20:50.882275213 +0100 +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_avx2) + + EXTN(jsimd_rgb_ycc_convert_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jccolext-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jccolext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jccolext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jccolext-sse2.asm 2024-02-07 09:20:50.882275213 +0100 +@@ -40,6 +40,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_ycc_convert_sse2) + + EXTN(jsimd_rgb_ycc_convert_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jcgryext-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jcgryext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jcgryext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jcgryext-avx2.asm 2024-02-07 09:20:50.882275213 +0100 +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_avx2) + + EXTN(jsimd_rgb_gray_convert_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jcgryext-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jcgryext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jcgryext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jcgryext-sse2.asm 2024-02-07 09:20:50.883275212 +0100 +@@ -40,6 +40,7 @@ + GLOBAL_FUNCTION(jsimd_rgb_gray_convert_sse2) + + EXTN(jsimd_rgb_gray_convert_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jchuff-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jchuff-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jchuff-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jchuff-sse2.asm 2024-02-07 09:20:50.883275212 +0100 +@@ -261,6 +261,7 @@ times 1 << 15 db 16 + GLOBAL_FUNCTION(jsimd_huff_encode_one_block_sse2) + + EXTN(jsimd_huff_encode_one_block_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jcphuff-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jcphuff-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jcphuff-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jcphuff-sse2.asm 2024-02-07 09:20:50.883275212 +0100 +@@ -282,6 +282,7 @@ + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_first_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_first_prepare_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + and rsp, byte (-SIZEOF_XMMWORD) ; align to 128 bits +@@ -445,6 +446,7 @@ EXTN(jsimd_encode_mcu_AC_first_prepare_s + GLOBAL_FUNCTION(jsimd_encode_mcu_AC_refine_prepare_sse2) + + EXTN(jsimd_encode_mcu_AC_refine_prepare_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + and rsp, byte (-SIZEOF_XMMWORD) ; align to 128 bits +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jcsample-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jcsample-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jcsample-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jcsample-avx2.asm 2024-02-07 09:20:50.883275212 +0100 +@@ -44,6 +44,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_avx2) + + EXTN(jsimd_h2v1_downsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +@@ -205,6 +206,7 @@ EXTN(jsimd_h2v1_downsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_avx2) + + EXTN(jsimd_h2v2_downsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jcsample-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jcsample-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jcsample-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jcsample-sse2.asm 2024-02-07 09:20:50.883275212 +0100 +@@ -43,6 +43,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_downsample_sse2) + + EXTN(jsimd_h2v1_downsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +@@ -187,6 +188,7 @@ EXTN(jsimd_h2v1_downsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_downsample_sse2) + + EXTN(jsimd_h2v2_downsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 6 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jdcolext-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jdcolext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jdcolext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jdcolext-avx2.asm 2024-02-07 09:20:50.884275210 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_avx2) + + EXTN(jsimd_ycc_rgb_convert_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jdcolext-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jdcolext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jdcolext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jdcolext-sse2.asm 2024-02-07 09:20:50.884275210 +0100 +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_ycc_rgb_convert_sse2) + + EXTN(jsimd_ycc_rgb_convert_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jdmrgext-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jdmrgext-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jdmrgext-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jdmrgext-avx2.asm 2024-02-07 09:20:50.884275210 +0100 +@@ -42,6 +42,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_avx2) + + EXTN(jsimd_h2v1_merged_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -506,6 +507,7 @@ EXTN(jsimd_h2v1_merged_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_avx2) + + EXTN(jsimd_h2v2_merged_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jdmrgext-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jdmrgext-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jdmrgext-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jdmrgext-sse2.asm 2024-02-07 09:20:50.884275210 +0100 +@@ -41,6 +41,7 @@ + GLOBAL_FUNCTION(jsimd_h2v1_merged_upsample_sse2) + + EXTN(jsimd_h2v1_merged_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -448,6 +449,7 @@ EXTN(jsimd_h2v1_merged_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_merged_upsample_sse2) + + EXTN(jsimd_h2v2_merged_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jdsample-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jdsample-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jdsample-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jdsample-avx2.asm 2024-02-07 09:20:50.884275210 +0100 +@@ -62,6 +62,7 @@ PW_EIGHT times 16 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_avx2) + + EXTN(jsimd_h2v1_fancy_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push_xmm 3 +@@ -215,6 +216,7 @@ EXTN(jsimd_h2v1_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_avx2) + + EXTN(jsimd_h2v2_fancy_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -524,6 +526,7 @@ EXTN(jsimd_h2v2_fancy_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_avx2) + + EXTN(jsimd_h2v1_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +@@ -612,6 +615,7 @@ EXTN(jsimd_h2v1_upsample_avx2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_avx2) + + EXTN(jsimd_h2v2_upsample_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jdsample-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jdsample-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jdsample-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jdsample-sse2.asm 2024-02-07 09:20:50.885275209 +0100 +@@ -61,6 +61,7 @@ PW_EIGHT times 8 dw 8 + GLOBAL_FUNCTION(jsimd_h2v1_fancy_upsample_sse2) + + EXTN(jsimd_h2v1_fancy_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +@@ -202,6 +203,7 @@ EXTN(jsimd_h2v1_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_fancy_upsample_sse2) + + EXTN(jsimd_h2v2_fancy_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -497,6 +499,7 @@ EXTN(jsimd_h2v2_fancy_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v1_upsample_sse2) + + EXTN(jsimd_h2v1_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +@@ -583,6 +586,7 @@ EXTN(jsimd_h2v1_upsample_sse2): + GLOBAL_FUNCTION(jsimd_h2v2_upsample_sse2) + + EXTN(jsimd_h2v2_upsample_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jfdctflt-sse.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctflt-sse.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jfdctflt-sse.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctflt-sse.asm 2024-02-07 09:20:50.885275209 +0100 +@@ -66,6 +66,7 @@ PD_1_306 times 4 dd 1.306562964876376527 + GLOBAL_FUNCTION(jsimd_fdct_float_sse) + + EXTN(jsimd_fdct_float_sse): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jfdctfst-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctfst-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jfdctfst-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctfst-sse2.asm 2024-02-07 09:20:50.885275209 +0100 +@@ -81,6 +81,7 @@ PW_F1306 times 8 dw F_1_306 << CONST_SHI + GLOBAL_FUNCTION(jsimd_fdct_ifast_sse2) + + EXTN(jsimd_fdct_ifast_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jfdctint-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctint-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jfdctint-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctint-avx2.asm 2024-02-07 09:20:50.885275209 +0100 +@@ -260,6 +260,7 @@ PW_1_NEG1 times 8 dw + GLOBAL_FUNCTION(jsimd_fdct_islow_avx2) + + EXTN(jsimd_fdct_islow_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 1 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jfdctint-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctint-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jfdctint-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jfdctint-sse2.asm 2024-02-07 09:20:50.886275207 +0100 +@@ -102,6 +102,7 @@ PW_DESCALE_P2X times 8 dw 1 << (PASS1_B + GLOBAL_FUNCTION(jsimd_fdct_islow_sse2) + + EXTN(jsimd_fdct_islow_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jidctflt-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jidctflt-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jidctflt-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jidctflt-sse2.asm 2024-02-07 09:20:50.886275207 +0100 +@@ -76,6 +76,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMP + GLOBAL_FUNCTION(jsimd_idct_float_sse2) + + EXTN(jsimd_idct_float_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jidctfst-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jidctfst-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jidctfst-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jidctfst-sse2.asm 2024-02-07 09:20:50.886275207 +0100 +@@ -95,6 +95,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPL + GLOBAL_FUNCTION(jsimd_idct_ifast_sse2) + + EXTN(jsimd_idct_ifast_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jidctint-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jidctint-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jidctint-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jidctint-avx2.asm 2024-02-07 09:20:50.886275207 +0100 +@@ -282,6 +282,7 @@ PW_1_NEG1 times 8 dw + GLOBAL_FUNCTION(jsimd_idct_islow_avx2) + + EXTN(jsimd_idct_islow_avx2): ++ _endbr64 + push rbp + mov rbp, rsp ; rbp = aligned rbp + push_xmm 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jidctint-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jidctint-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jidctint-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jidctint-sse2.asm 2024-02-07 09:20:50.886275207 +0100 +@@ -108,6 +108,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMPL + GLOBAL_FUNCTION(jsimd_idct_islow_sse2) + + EXTN(jsimd_idct_islow_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jidctred-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jidctred-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jidctred-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jidctred-sse2.asm 2024-02-07 09:20:50.887275206 +0100 +@@ -116,6 +116,7 @@ PB_CENTERJSAMP times 16 db CENTERJSAMP + GLOBAL_FUNCTION(jsimd_idct_4x4_sse2) + + EXTN(jsimd_idct_4x4_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + push r15 +@@ -413,6 +414,7 @@ EXTN(jsimd_idct_4x4_sse2): + GLOBAL_FUNCTION(jsimd_idct_2x2_sse2) + + EXTN(jsimd_idct_2x2_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 4 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jquantf-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jquantf-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jquantf-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jquantf-sse2.asm 2024-02-07 09:20:50.887275206 +0100 +@@ -37,6 +37,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_float_sse2) + + EXTN(jsimd_convsamp_float_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +@@ -109,6 +110,7 @@ EXTN(jsimd_convsamp_float_sse2): + GLOBAL_FUNCTION(jsimd_quantize_float_sse2) + + EXTN(jsimd_quantize_float_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jquanti-avx2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jquanti-avx2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jquanti-avx2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jquanti-avx2.asm 2024-02-07 09:20:50.887275206 +0100 +@@ -38,6 +38,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_avx2) + + EXTN(jsimd_convsamp_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +@@ -115,6 +116,7 @@ EXTN(jsimd_convsamp_avx2): + GLOBAL_FUNCTION(jsimd_quantize_avx2) + + EXTN(jsimd_quantize_avx2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +diff -rupN --no-dereference libjpeg-turbo-3.0.2/simd/x86_64/jquanti-sse2.asm libjpeg-turbo-3.0.2-new/simd/x86_64/jquanti-sse2.asm +--- libjpeg-turbo-3.0.2/simd/x86_64/jquanti-sse2.asm 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/simd/x86_64/jquanti-sse2.asm 2024-02-07 09:20:50.887275206 +0100 +@@ -37,6 +37,7 @@ + GLOBAL_FUNCTION(jsimd_convsamp_sse2) + + EXTN(jsimd_convsamp_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 +@@ -115,6 +116,7 @@ EXTN(jsimd_convsamp_sse2): + GLOBAL_FUNCTION(jsimd_quantize_sse2) + + EXTN(jsimd_quantize_sse2): ++ _endbr64 + push rbp + mov rbp, rsp + collect_args 3 diff --git a/libjpeg-turbo-cmake.patch b/libjpeg-turbo-cmake.patch new file mode 100644 index 0000000..ef15839 --- /dev/null +++ b/libjpeg-turbo-cmake.patch @@ -0,0 +1,31 @@ +diff -rupN --no-dereference libjpeg-turbo-3.0.2/CMakeLists.txt libjpeg-turbo-3.0.2-new/CMakeLists.txt +--- libjpeg-turbo-3.0.2/CMakeLists.txt 2024-01-23 23:35:53.000000000 +0100 ++++ libjpeg-turbo-3.0.2-new/CMakeLists.txt 2024-02-07 09:20:50.784275368 +0100 +@@ -1768,18 +1768,6 @@ endif() + + install(TARGETS rdjpgcom wrjpgcom RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +-install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/README.ijg +- ${CMAKE_CURRENT_SOURCE_DIR}/README.md ${CMAKE_CURRENT_SOURCE_DIR}/example.c +- ${CMAKE_CURRENT_SOURCE_DIR}/tjexample.c +- ${CMAKE_CURRENT_SOURCE_DIR}/libjpeg.txt +- ${CMAKE_CURRENT_SOURCE_DIR}/structure.txt +- ${CMAKE_CURRENT_SOURCE_DIR}/usage.txt ${CMAKE_CURRENT_SOURCE_DIR}/wizard.txt +- ${CMAKE_CURRENT_SOURCE_DIR}/LICENSE.md DESTINATION ${CMAKE_INSTALL_DOCDIR}) +-if(WITH_JAVA) +- install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/java/TJExample.java +- DESTINATION ${CMAKE_INSTALL_DOCDIR}) +-endif() +- + if(UNIX OR MINGW) + install(FILES ${CMAKE_CURRENT_SOURCE_DIR}/cjpeg.1 + ${CMAKE_CURRENT_SOURCE_DIR}/djpeg.1 ${CMAKE_CURRENT_SOURCE_DIR}/jpegtran.1 +@@ -1803,7 +1791,7 @@ install(EXPORT ${CMAKE_PROJECT_NAME}Targ + + install(FILES ${CMAKE_CURRENT_BINARY_DIR}/jconfig.h + ${CMAKE_CURRENT_SOURCE_DIR}/jerror.h ${CMAKE_CURRENT_SOURCE_DIR}/jmorecfg.h +- ${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h ++ ${CMAKE_CURRENT_SOURCE_DIR}/jpeglib.h ${CMAKE_CURRENT_SOURCE_DIR}/jpegint.h + DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}) + + include(cmakescripts/BuildPackages.cmake) diff --git a/mingw-libjpeg-turbo.spec b/mingw-libjpeg-turbo.spec index b8d8e8b..721b8c0 100644 --- a/mingw-libjpeg-turbo.spec +++ b/mingw-libjpeg-turbo.spec @@ -5,13 +5,15 @@ %global build_programs 0 Name: mingw-libjpeg-turbo -Version: 2.1.4 -Release: 5%{?dist} +Version: 3.0.2 +Release: 1%{?dist} Summary: MinGW Windows Libjpeg-turbo library -License: wxWidgets -URL: http://libjpeg-turbo.virtualgl.org/ -Source0: http://downloads.sourceforge.net/libjpeg-turbo/libjpeg-turbo-%{version}.tar.gz +License: Zlib AND BSD-3-Clause AND MIT AND IJG +URL: https://github.com/libjpeg-turbo/libjpeg-turbo +Source0: %{url}/releases/download/%{version}/libjpeg-turbo-%{version}.tar.gz +Patch0: libjpeg-turbo-cmake.patch +Patch1: libjpeg-turbo-CET.patch BuildArch: noarch @@ -151,6 +153,7 @@ chmod -x README.md %{mingw32_includedir}/jerror.h %{mingw32_includedir}/jmorecfg.h %{mingw32_includedir}/jpeglib.h +%{mingw32_includedir}/jpegint.h %{mingw32_libdir}/cmake/libjpeg-turbo/ %{mingw32_libdir}/libjpeg.dll.a %{mingw32_libdir}/pkgconfig/libjpeg.pc @@ -179,6 +182,7 @@ chmod -x README.md %{mingw64_includedir}/jerror.h %{mingw64_includedir}/jmorecfg.h %{mingw64_includedir}/jpeglib.h +%{mingw64_includedir}/jpegint.h %{mingw64_libdir}/cmake/libjpeg-turbo/ %{mingw64_libdir}/libjpeg.dll.a %{mingw64_libdir}/pkgconfig/libjpeg.pc @@ -197,6 +201,9 @@ chmod -x README.md %changelog +* Wed Feb 07 2024 Sandro Mani - 3.0.2-1 +- Update to 3.0.2 + * Thu Jan 25 2024 Fedora Release Engineering - 2.1.4-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild diff --git a/sources b/sources index 55ec2e1..2573f54 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (libjpeg-turbo-2.1.4.tar.gz) = 511f065767c022da06b6c36299686fa44f83441646f7e33b766c6cfab03f91b0e6bfa456962184071dadaed4057ba9a29cba685383f3eb86a4370a1a53731a70 +SHA512 (libjpeg-turbo-3.0.2.tar.gz) = f5eadda0712feb810a8c3bb2621fda24a4c30574998ce30f423b3ffa25225c7a87cb14b696232bc0270485f422a2853a5c32eafb65bc5eeab1b41d8aeb32ad29