// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/libraries/libwebp/src/dsp/yuv_sse2.c
// Function: ConvertARGBToUV_SSE2
static void ConvertARGBToUV_SSE2(const uint32_t* argb,
                                 uint8_t* u, uint8_t* v,
                                 int src_width, int do_store) {
  const int max_width = src_width & ~31;
  int i;
  for (i = 0; i < max_width; i += 32, u += 16, v += 16) {
    __m128i rgb[6], U0, V0, U1, V1;
    RGB32PackedToPlanar_SSE2(&argb[i], rgb);
    HorizontalAddPack_SSE2(&rgb[0], &rgb[1], &rgb[0]);
    HorizontalAddPack_SSE2(&rgb[2], &rgb[3], &rgb[2]);
    HorizontalAddPack_SSE2(&rgb[4], &rgb[5], &rgb[4]);
    ConvertRGBToUV_SSE2(&rgb[0], &rgb[2], &rgb[4], &U0, &V0);

    RGB32PackedToPlanar_SSE2(&argb[i + 16], rgb);
    HorizontalAddPack_SSE2(&rgb[0], &rgb[1], &rgb[0]);
    HorizontalAddPack_SSE2(&rgb[2], &rgb[3], &rgb[2]);
    HorizontalAddPack_SSE2(&rgb[4], &rgb[5], &rgb[4]);
    ConvertRGBToUV_SSE2(&rgb[0], &rgb[2], &rgb[4], &U1, &V1);

    U0 = _mm_packus_epi16(U0, U1);
    V0 = _mm_packus_epi16(V0, V1);
    if (!do_store) {
      const __m128i prev_u = LOAD_16(u);
      const __m128i prev_v = LOAD_16(v);
      U0 = _mm_avg_epu8(U0, prev_u);
      V0 = _mm_avg_epu8(V0, prev_v);
    }
    STORE_16(U0, u);
    STORE_16(V0, v);
  }
  if (i < src_width) {  // left-over
    WebPConvertARGBToUV_C(argb + i, u, v, src_width - i, do_store);
  }
}

// Assembly:
movl %ecx, %eax
andl $-0x20, %eax
jle 0xf0083
movl %eax, %r9d
xorl %eax, %eax
pxor %xmm0, %xmm0
movdqa 0x3e81f(%rip), %xmm1    # 0x12e560
movdqa 0x3e827(%rip), %xmm2    # 0x12e570
movdqa 0x3e82f(%rip), %xmm3    # 0x12e580
movdqa 0x3e837(%rip), %xmm4    # 0x12e590
movdqa 0x3e83f(%rip), %xmm5    # 0x12e5a0
movdqa 0x3e847(%rip), %xmm6    # 0x12e5b0
movdqu (%rdi,%rax,4), %xmm7
movdqu 0x10(%rdi,%rax,4), %xmm8
movdqu 0x20(%rdi,%rax,4), %xmm10
movdqu 0x30(%rdi,%rax,4), %xmm9
movdqa %xmm7, %xmm11
punpcklbw %xmm8, %xmm11   # xmm11 = xmm11[0],xmm8[0],xmm11[1],xmm8[1],xmm11[2],xmm8[2],xmm11[3],xmm8[3],xmm11[4],xmm8[4],xmm11[5],xmm8[5],xmm11[6],xmm8[6],xmm11[7],xmm8[7]
punpckhbw %xmm8, %xmm7    # xmm7 = xmm7[8],xmm8[8],xmm7[9],xmm8[9],xmm7[10],xmm8[10],xmm7[11],xmm8[11],xmm7[12],xmm8[12],xmm7[13],xmm8[13],xmm7[14],xmm8[14],xmm7[15],xmm8[15]
movdqa %xmm10, %xmm12
punpcklbw %xmm9, %xmm12   # xmm12 = xmm12[0],xmm9[0],xmm12[1],xmm9[1],xmm12[2],xmm9[2],xmm12[3],xmm9[3],xmm12[4],xmm9[4],xmm12[5],xmm9[5],xmm12[6],xmm9[6],xmm12[7],xmm9[7]
punpckhbw %xmm9, %xmm10   # xmm10 = xmm10[8],xmm9[8],xmm10[9],xmm9[9],xmm10[10],xmm9[10],xmm10[11],xmm9[11],xmm10[12],xmm9[12],xmm10[13],xmm9[13],xmm10[14],xmm9[14],xmm10[15],xmm9[15]
movdqa %xmm11, %xmm9
punpcklbw %xmm7, %xmm9    # xmm9 = xmm9[0],xmm7[0],xmm9[1],xmm7[1],xmm9[2],xmm7[2],xmm9[3],xmm7[3],xmm9[4],xmm7[4],xmm9[5],xmm7[5],xmm9[6],xmm7[6],xmm9[7],xmm7[7]
punpckhbw %xmm7, %xmm11   # xmm11 = xmm11[8],xmm7[8],xmm11[9],xmm7[9],xmm11[10],xmm7[10],xmm11[11],xmm7[11],xmm11[12],xmm7[12],xmm11[13],xmm7[13],xmm11[14],xmm7[14],xmm11[15],xmm7[15]
movdqa %xmm12, %xmm13
punpcklbw %xmm10, %xmm13  # xmm13 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3],xmm13[4],xmm10[4],xmm13[5],xmm10[5],xmm13[6],xmm10[6],xmm13[7],xmm10[7]
punpckhbw %xmm10, %xmm12  # xmm12 = xmm12[8],xmm10[8],xmm12[9],xmm10[9],xmm12[10],xmm10[10],xmm12[11],xmm10[11],xmm12[12],xmm10[12],xmm12[13],xmm10[13],xmm12[14],xmm10[14],xmm12[15],xmm10[15]
movdqa %xmm9, %xmm8
punpcklbw %xmm11, %xmm8   # xmm8 = xmm8[0],xmm11[0],xmm8[1],xmm11[1],xmm8[2],xmm11[2],xmm8[3],xmm11[3],xmm8[4],xmm11[4],xmm8[5],xmm11[5],xmm8[6],xmm11[6],xmm8[7],xmm11[7]
punpckhbw %xmm11, %xmm9   # xmm9 = xmm9[8],xmm11[8],xmm9[9],xmm11[9],xmm9[10],xmm11[10],xmm9[11],xmm11[11],xmm9[12],xmm11[12],xmm9[13],xmm11[13],xmm9[14],xmm11[14],xmm9[15],xmm11[15]
movdqa %xmm13, %xmm7
punpcklbw %xmm12, %xmm7   # xmm7 = xmm7[0],xmm12[0],xmm7[1],xmm12[1],xmm7[2],xmm12[2],xmm7[3],xmm12[3],xmm7[4],xmm12[4],xmm7[5],xmm12[5],xmm7[6],xmm12[6],xmm7[7],xmm12[7]
punpckhbw %xmm12, %xmm13  # xmm13 = xmm13[8],xmm12[8],xmm13[9],xmm12[9],xmm13[10],xmm12[10],xmm13[11],xmm12[11],xmm13[12],xmm12[12],xmm13[13],xmm12[13],xmm13[14],xmm12[14],xmm13[15],xmm12[15]
punpcklbw %xmm0, %xmm9    # xmm9 = xmm9[0],xmm0[0],xmm9[1],xmm0[1],xmm9[2],xmm0[2],xmm9[3],xmm0[3],xmm9[4],xmm0[4],xmm9[5],xmm0[5],xmm9[6],xmm0[6],xmm9[7],xmm0[7]
punpcklbw %xmm0, %xmm13   # xmm13 = xmm13[0],xmm0[0],xmm13[1],xmm0[1],xmm13[2],xmm0[2],xmm13[3],xmm0[3],xmm13[4],xmm0[4],xmm13[5],xmm0[5],xmm13[6],xmm0[6],xmm13[7],xmm0[7]
movdqa %xmm8, %xmm10
punpckhbw %xmm0, %xmm10   # xmm10 = xmm10[8],xmm0[8],xmm10[9],xmm0[9],xmm10[10],xmm0[10],xmm10[11],xmm0[11],xmm10[12],xmm0[12],xmm10[13],xmm0[13],xmm10[14],xmm0[14],xmm10[15],xmm0[15]
movdqa %xmm7, %xmm11
punpckhbw %xmm0, %xmm11   # xmm11 = xmm11[8],xmm0[8],xmm11[9],xmm0[9],xmm11[10],xmm0[10],xmm11[11],xmm0[11],xmm11[12],xmm0[12],xmm11[13],xmm0[13],xmm11[14],xmm0[14],xmm11[15],xmm0[15]
punpcklbw %xmm0, %xmm8    # xmm8 = xmm8[0],xmm0[0],xmm8[1],xmm0[1],xmm8[2],xmm0[2],xmm8[3],xmm0[3],xmm8[4],xmm0[4],xmm8[5],xmm0[5],xmm8[6],xmm0[6],xmm8[7],xmm0[7]
punpcklbw %xmm0, %xmm7    # xmm7 = xmm7[0],xmm0[0],xmm7[1],xmm0[1],xmm7[2],xmm0[2],xmm7[3],xmm0[3],xmm7[4],xmm0[4],xmm7[5],xmm0[5],xmm7[6],xmm0[6],xmm7[7],xmm0[7]
pmaddwd %xmm1, %xmm9
pmaddwd %xmm1, %xmm13
packssdw %xmm13, %xmm9
pmaddwd %xmm1, %xmm10
pmaddwd %xmm1, %xmm11
packssdw %xmm11, %xmm10
pmaddwd %xmm1, %xmm8
pmaddwd %xmm1, %xmm7
packssdw %xmm7, %xmm8
movdqa %xmm9, %xmm11
punpcklwd %xmm10, %xmm11  # xmm11 = xmm11[0],xmm10[0],xmm11[1],xmm10[1],xmm11[2],xmm10[2],xmm11[3],xmm10[3]
punpckhwd %xmm10, %xmm9   # xmm9 = xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]
movdqa %xmm10, %xmm7
punpcklwd %xmm8, %xmm7    # xmm7 = xmm7[0],xmm8[0],xmm7[1],xmm8[1],xmm7[2],xmm8[2],xmm7[3],xmm8[3]
punpckhwd %xmm8, %xmm10   # xmm10 = xmm10[4],xmm8[4],xmm10[5],xmm8[5],xmm10[6],xmm8[6],xmm10[7],xmm8[7]
movdqa %xmm11, %xmm12
pmaddwd %xmm2, %xmm12
movdqa %xmm9, %xmm13
pmaddwd %xmm2, %xmm13
movdqa %xmm7, %xmm8
pmaddwd %xmm3, %xmm8
paddd %xmm12, %xmm8
movdqa %xmm10, %xmm12
pmaddwd %xmm3, %xmm12
paddd %xmm13, %xmm12
paddd %xmm4, %xmm8
paddd %xmm4, %xmm12
psrad $0x12, %xmm8
psrad $0x12, %xmm12
packssdw %xmm12, %xmm8
pmaddwd %xmm5, %xmm11
pmaddwd %xmm5, %xmm9
pmaddwd %xmm6, %xmm7
paddd %xmm11, %xmm7
pmaddwd %xmm6, %xmm10
paddd %xmm9, %xmm10
paddd %xmm4, %xmm7
paddd %xmm4, %xmm10
psrad $0x12, %xmm7
psrad $0x12, %xmm10
packssdw %xmm10, %xmm7
movdqu 0x40(%rdi,%rax,4), %xmm10
movdqu 0x50(%rdi,%rax,4), %xmm9
movdqu 0x60(%rdi,%rax,4), %xmm11
movdqu 0x70(%rdi,%rax,4), %xmm12
movdqa %xmm10, %xmm13
punpcklbw %xmm9, %xmm13   # xmm13 = xmm13[0],xmm9[0],xmm13[1],xmm9[1],xmm13[2],xmm9[2],xmm13[3],xmm9[3],xmm13[4],xmm9[4],xmm13[5],xmm9[5],xmm13[6],xmm9[6],xmm13[7],xmm9[7]
punpckhbw %xmm9, %xmm10   # xmm10 = xmm10[8],xmm9[8],xmm10[9],xmm9[9],xmm10[10],xmm9[10],xmm10[11],xmm9[11],xmm10[12],xmm9[12],xmm10[13],xmm9[13],xmm10[14],xmm9[14],xmm10[15],xmm9[15]
movdqa %xmm11, %xmm14
punpcklbw %xmm12, %xmm14  # xmm14 = xmm14[0],xmm12[0],xmm14[1],xmm12[1],xmm14[2],xmm12[2],xmm14[3],xmm12[3],xmm14[4],xmm12[4],xmm14[5],xmm12[5],xmm14[6],xmm12[6],xmm14[7],xmm12[7]
punpckhbw %xmm12, %xmm11  # xmm11 = xmm11[8],xmm12[8],xmm11[9],xmm12[9],xmm11[10],xmm12[10],xmm11[11],xmm12[11],xmm11[12],xmm12[12],xmm11[13],xmm12[13],xmm11[14],xmm12[14],xmm11[15],xmm12[15]
movdqa %xmm13, %xmm9
punpcklbw %xmm10, %xmm9   # xmm9 = xmm9[0],xmm10[0],xmm9[1],xmm10[1],xmm9[2],xmm10[2],xmm9[3],xmm10[3],xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]
punpckhbw %xmm10, %xmm13  # xmm13 = xmm13[8],xmm10[8],xmm13[9],xmm10[9],xmm13[10],xmm10[10],xmm13[11],xmm10[11],xmm13[12],xmm10[12],xmm13[13],xmm10[13],xmm13[14],xmm10[14],xmm13[15],xmm10[15]
movdqa %xmm14, %xmm15
punpcklbw %xmm11, %xmm15  # xmm15 = xmm15[0],xmm11[0],xmm15[1],xmm11[1],xmm15[2],xmm11[2],xmm15[3],xmm11[3],xmm15[4],xmm11[4],xmm15[5],xmm11[5],xmm15[6],xmm11[6],xmm15[7],xmm11[7]
punpckhbw %xmm11, %xmm14  # xmm14 = xmm14[8],xmm11[8],xmm14[9],xmm11[9],xmm14[10],xmm11[10],xmm14[11],xmm11[11],xmm14[12],xmm11[12],xmm14[13],xmm11[13],xmm14[14],xmm11[14],xmm14[15],xmm11[15]
movdqa %xmm9, %xmm12
punpcklbw %xmm13, %xmm12  # xmm12 = xmm12[0],xmm13[0],xmm12[1],xmm13[1],xmm12[2],xmm13[2],xmm12[3],xmm13[3],xmm12[4],xmm13[4],xmm12[5],xmm13[5],xmm12[6],xmm13[6],xmm12[7],xmm13[7]
punpckhbw %xmm13, %xmm9   # xmm9 = xmm9[8],xmm13[8],xmm9[9],xmm13[9],xmm9[10],xmm13[10],xmm9[11],xmm13[11],xmm9[12],xmm13[12],xmm9[13],xmm13[13],xmm9[14],xmm13[14],xmm9[15],xmm13[15]
movdqa %xmm15, %xmm11
punpcklbw %xmm14, %xmm11  # xmm11 = xmm11[0],xmm14[0],xmm11[1],xmm14[1],xmm11[2],xmm14[2],xmm11[3],xmm14[3],xmm11[4],xmm14[4],xmm11[5],xmm14[5],xmm11[6],xmm14[6],xmm11[7],xmm14[7]
punpckhbw %xmm14, %xmm15  # xmm15 = xmm15[8],xmm14[8],xmm15[9],xmm14[9],xmm15[10],xmm14[10],xmm15[11],xmm14[11],xmm15[12],xmm14[12],xmm15[13],xmm14[13],xmm15[14],xmm14[14],xmm15[15],xmm14[15]
punpcklbw %xmm0, %xmm9    # xmm9 = xmm9[0],xmm0[0],xmm9[1],xmm0[1],xmm9[2],xmm0[2],xmm9[3],xmm0[3],xmm9[4],xmm0[4],xmm9[5],xmm0[5],xmm9[6],xmm0[6],xmm9[7],xmm0[7]
punpcklbw %xmm0, %xmm15   # xmm15 = xmm15[0],xmm0[0],xmm15[1],xmm0[1],xmm15[2],xmm0[2],xmm15[3],xmm0[3],xmm15[4],xmm0[4],xmm15[5],xmm0[5],xmm15[6],xmm0[6],xmm15[7],xmm0[7]
movdqa %xmm12, %xmm10
punpckhbw %xmm0, %xmm10   # xmm10 = xmm10[8],xmm0[8],xmm10[9],xmm0[9],xmm10[10],xmm0[10],xmm10[11],xmm0[11],xmm10[12],xmm0[12],xmm10[13],xmm0[13],xmm10[14],xmm0[14],xmm10[15],xmm0[15]
movdqa %xmm11, %xmm13
punpckhbw %xmm0, %xmm13   # xmm13 = xmm13[8],xmm0[8],xmm13[9],xmm0[9],xmm13[10],xmm0[10],xmm13[11],xmm0[11],xmm13[12],xmm0[12],xmm13[13],xmm0[13],xmm13[14],xmm0[14],xmm13[15],xmm0[15]
punpcklbw %xmm0, %xmm12   # xmm12 = xmm12[0],xmm0[0],xmm12[1],xmm0[1],xmm12[2],xmm0[2],xmm12[3],xmm0[3],xmm12[4],xmm0[4],xmm12[5],xmm0[5],xmm12[6],xmm0[6],xmm12[7],xmm0[7]
punpcklbw %xmm0, %xmm11   # xmm11 = xmm11[0],xmm0[0],xmm11[1],xmm0[1],xmm11[2],xmm0[2],xmm11[3],xmm0[3],xmm11[4],xmm0[4],xmm11[5],xmm0[5],xmm11[6],xmm0[6],xmm11[7],xmm0[7]
pmaddwd %xmm1, %xmm9
pmaddwd %xmm1, %xmm15
packssdw %xmm15, %xmm9
pmaddwd %xmm1, %xmm10
pmaddwd %xmm1, %xmm13
packssdw %xmm13, %xmm10
pmaddwd %xmm1, %xmm12
pmaddwd %xmm1, %xmm11
packssdw %xmm11, %xmm12
movdqa %xmm9, %xmm13
punpcklwd %xmm10, %xmm13  # xmm13 = xmm13[0],xmm10[0],xmm13[1],xmm10[1],xmm13[2],xmm10[2],xmm13[3],xmm10[3]
punpckhwd %xmm10, %xmm9   # xmm9 = xmm9[4],xmm10[4],xmm9[5],xmm10[5],xmm9[6],xmm10[6],xmm9[7],xmm10[7]
movdqa %xmm10, %xmm11
punpcklwd %xmm12, %xmm11  # xmm11 = xmm11[0],xmm12[0],xmm11[1],xmm12[1],xmm11[2],xmm12[2],xmm11[3],xmm12[3]
punpckhwd %xmm12, %xmm10  # xmm10 = xmm10[4],xmm12[4],xmm10[5],xmm12[5],xmm10[6],xmm12[6],xmm10[7],xmm12[7]
movdqa %xmm13, %xmm12
pmaddwd %xmm2, %xmm12
movdqa %xmm9, %xmm14
pmaddwd %xmm2, %xmm14
movdqa %xmm11, %xmm15
pmaddwd %xmm3, %xmm15
paddd %xmm12, %xmm15
movdqa %xmm10, %xmm12
pmaddwd %xmm3, %xmm12
paddd %xmm14, %xmm12
paddd %xmm4, %xmm15
paddd %xmm4, %xmm12
psrad $0x12, %xmm15
psrad $0x12, %xmm12
packssdw %xmm12, %xmm15
packuswb %xmm15, %xmm8
pmaddwd %xmm5, %xmm13
pmaddwd %xmm5, %xmm9
pmaddwd %xmm6, %xmm11
paddd %xmm13, %xmm11
pmaddwd %xmm6, %xmm10
paddd %xmm9, %xmm10
paddd %xmm4, %xmm11
paddd %xmm4, %xmm10
psrad $0x12, %xmm11
psrad $0x12, %xmm10
packssdw %xmm10, %xmm11
packuswb %xmm11, %xmm7
testl %r8d, %r8d
jne 0xf0063
movdqu (%rsi), %xmm9
movdqu (%rdx), %xmm10
pavgb %xmm9, %xmm8
pavgb %xmm10, %xmm7
movdqu %xmm8, (%rsi)
movdqu %xmm7, (%rdx)
addq $0x20, %rax
addq $0x10, %rsi
addq $0x10, %rdx
cmpq %r9, %rax
jb 0xefd69
jmp 0xf0085
xorl %eax, %eax
subl %eax, %ecx
jle 0xf0094
movl %eax, %eax
leaq (%rdi,%rax,4), %rdi
jmp 0xe1592
retq