// File: /workspace/github_c_makefile_star2_O1/enzo1982[P]smooth/libraries/libwebp/src/dsp/lossless_sse2.c
// Function: ConvertBGRAToRGB_SSE2
static void ConvertBGRAToRGB_SSE2(const uint32_t* src, int num_pixels,
                                  uint8_t* dst) {
  const __m128i* in = (const __m128i*)src;
  __m128i* out = (__m128i*)dst;

  while (num_pixels >= 32) {
    // Load the BGRA buffers.
    __m128i in0 = _mm_loadu_si128(in + 0);
    __m128i in1 = _mm_loadu_si128(in + 1);
    __m128i in2 = _mm_loadu_si128(in + 2);
    __m128i in3 = _mm_loadu_si128(in + 3);
    __m128i in4 = _mm_loadu_si128(in + 4);
    __m128i in5 = _mm_loadu_si128(in + 5);
    __m128i in6 = _mm_loadu_si128(in + 6);
    __m128i in7 = _mm_loadu_si128(in + 7);
    VP8L32bToPlanar_SSE2(&in0, &in1, &in2, &in3);
    VP8L32bToPlanar_SSE2(&in4, &in5, &in6, &in7);
    // At this points, in1/in5 contains red only, in2/in6 green only ...
    // Pack the colors in 24b RGB.
    VP8PlanarTo24b_SSE2(&in1, &in5, &in2, &in6, &in3, &in7);
    _mm_storeu_si128(out + 0, in1);
    _mm_storeu_si128(out + 1, in5);
    _mm_storeu_si128(out + 2, in2);
    _mm_storeu_si128(out + 3, in6);
    _mm_storeu_si128(out + 4, in3);
    _mm_storeu_si128(out + 5, in7);
    in += 8;
    out += 6;
    num_pixels -= 32;
  }
  // left-overs
  if (num_pixels > 0) {
    VP8LConvertBGRAToRGB_C((const uint32_t*)in, num_pixels, (uint8_t*)out);
  }
}

// Assembly:
cmpl $0x20, %esi
jl 0xe80fb
movdqa 0x45ede(%rip), %xmm0    # 0x12dc80
movdqu (%rdi), %xmm1
movdqu 0x10(%rdi), %xmm4
movdqu 0x20(%rdi), %xmm5
movdqu 0x30(%rdi), %xmm8
movdqu 0x40(%rdi), %xmm3
movdqu 0x50(%rdi), %xmm7
movdqu 0x60(%rdi), %xmm2
movdqu 0x70(%rdi), %xmm6
movdqa %xmm1, %xmm9
punpcklbw %xmm4, %xmm9    # xmm9 = xmm9[0],xmm4[0],xmm9[1],xmm4[1],xmm9[2],xmm4[2],xmm9[3],xmm4[3],xmm9[4],xmm4[4],xmm9[5],xmm4[5],xmm9[6],xmm4[6],xmm9[7],xmm4[7]
punpckhbw %xmm4, %xmm1    # xmm1 = xmm1[8],xmm4[8],xmm1[9],xmm4[9],xmm1[10],xmm4[10],xmm1[11],xmm4[11],xmm1[12],xmm4[12],xmm1[13],xmm4[13],xmm1[14],xmm4[14],xmm1[15],xmm4[15]
movdqa %xmm5, %xmm10
punpcklbw %xmm8, %xmm10   # xmm10 = xmm10[0],xmm8[0],xmm10[1],xmm8[1],xmm10[2],xmm8[2],xmm10[3],xmm8[3],xmm10[4],xmm8[4],xmm10[5],xmm8[5],xmm10[6],xmm8[6],xmm10[7],xmm8[7]
punpckhbw %xmm8, %xmm5    # xmm5 = xmm5[8],xmm8[8],xmm5[9],xmm8[9],xmm5[10],xmm8[10],xmm5[11],xmm8[11],xmm5[12],xmm8[12],xmm5[13],xmm8[13],xmm5[14],xmm8[14],xmm5[15],xmm8[15]
movdqa %xmm9, %xmm4
punpcklbw %xmm1, %xmm4    # xmm4 = xmm4[0],xmm1[0],xmm4[1],xmm1[1],xmm4[2],xmm1[2],xmm4[3],xmm1[3],xmm4[4],xmm1[4],xmm4[5],xmm1[5],xmm4[6],xmm1[6],xmm4[7],xmm1[7]
punpckhbw %xmm1, %xmm9    # xmm9 = xmm9[8],xmm1[8],xmm9[9],xmm1[9],xmm9[10],xmm1[10],xmm9[11],xmm1[11],xmm9[12],xmm1[12],xmm9[13],xmm1[13],xmm9[14],xmm1[14],xmm9[15],xmm1[15]
movdqa %xmm10, %xmm1
punpcklbw %xmm5, %xmm1    # xmm1 = xmm1[0],xmm5[0],xmm1[1],xmm5[1],xmm1[2],xmm5[2],xmm1[3],xmm5[3],xmm1[4],xmm5[4],xmm1[5],xmm5[5],xmm1[6],xmm5[6],xmm1[7],xmm5[7]
punpckhbw %xmm5, %xmm10   # xmm10 = xmm10[8],xmm5[8],xmm10[9],xmm5[9],xmm10[10],xmm5[10],xmm10[11],xmm5[11],xmm10[12],xmm5[12],xmm10[13],xmm5[13],xmm10[14],xmm5[14],xmm10[15],xmm5[15]
movdqa %xmm4, %xmm5
punpcklbw %xmm9, %xmm5    # xmm5 = xmm5[0],xmm9[0],xmm5[1],xmm9[1],xmm5[2],xmm9[2],xmm5[3],xmm9[3],xmm5[4],xmm9[4],xmm5[5],xmm9[5],xmm5[6],xmm9[6],xmm5[7],xmm9[7]
punpckhbw %xmm9, %xmm4    # xmm4 = xmm4[8],xmm9[8],xmm4[9],xmm9[9],xmm4[10],xmm9[10],xmm4[11],xmm9[11],xmm4[12],xmm9[12],xmm4[13],xmm9[13],xmm4[14],xmm9[14],xmm4[15],xmm9[15]
movdqa %xmm1, %xmm8
punpcklbw %xmm10, %xmm8   # xmm8 = xmm8[0],xmm10[0],xmm8[1],xmm10[1],xmm8[2],xmm10[2],xmm8[3],xmm10[3],xmm8[4],xmm10[4],xmm8[5],xmm10[5],xmm8[6],xmm10[6],xmm8[7],xmm10[7]
punpckhbw %xmm10, %xmm1   # xmm1 = xmm1[8],xmm10[8],xmm1[9],xmm10[9],xmm1[10],xmm10[10],xmm1[11],xmm10[11],xmm1[12],xmm10[12],xmm1[13],xmm10[13],xmm1[14],xmm10[14],xmm1[15],xmm10[15]
punpcklqdq %xmm1, %xmm4    # xmm4 = xmm4[0],xmm1[0]
movdqa %xmm5, %xmm1
punpckhqdq %xmm8, %xmm1    # xmm1 = xmm1[1],xmm8[1]
punpcklqdq %xmm8, %xmm5    # xmm5 = xmm5[0],xmm8[0]
movdqa %xmm3, %xmm8
punpcklbw %xmm7, %xmm8    # xmm8 = xmm8[0],xmm7[0],xmm8[1],xmm7[1],xmm8[2],xmm7[2],xmm8[3],xmm7[3],xmm8[4],xmm7[4],xmm8[5],xmm7[5],xmm8[6],xmm7[6],xmm8[7],xmm7[7]
punpckhbw %xmm7, %xmm3    # xmm3 = xmm3[8],xmm7[8],xmm3[9],xmm7[9],xmm3[10],xmm7[10],xmm3[11],xmm7[11],xmm3[12],xmm7[12],xmm3[13],xmm7[13],xmm3[14],xmm7[14],xmm3[15],xmm7[15]
movdqa %xmm2, %xmm9
punpcklbw %xmm6, %xmm9    # xmm9 = xmm9[0],xmm6[0],xmm9[1],xmm6[1],xmm9[2],xmm6[2],xmm9[3],xmm6[3],xmm9[4],xmm6[4],xmm9[5],xmm6[5],xmm9[6],xmm6[6],xmm9[7],xmm6[7]
punpckhbw %xmm6, %xmm2    # xmm2 = xmm2[8],xmm6[8],xmm2[9],xmm6[9],xmm2[10],xmm6[10],xmm2[11],xmm6[11],xmm2[12],xmm6[12],xmm2[13],xmm6[13],xmm2[14],xmm6[14],xmm2[15],xmm6[15]
movdqa %xmm8, %xmm7
punpcklbw %xmm3, %xmm7    # xmm7 = xmm7[0],xmm3[0],xmm7[1],xmm3[1],xmm7[2],xmm3[2],xmm7[3],xmm3[3],xmm7[4],xmm3[4],xmm7[5],xmm3[5],xmm7[6],xmm3[6],xmm7[7],xmm3[7]
punpckhbw %xmm3, %xmm8    # xmm8 = xmm8[8],xmm3[8],xmm8[9],xmm3[9],xmm8[10],xmm3[10],xmm8[11],xmm3[11],xmm8[12],xmm3[12],xmm8[13],xmm3[13],xmm8[14],xmm3[14],xmm8[15],xmm3[15]
movdqa %xmm9, %xmm6
punpcklbw %xmm2, %xmm6    # xmm6 = xmm6[0],xmm2[0],xmm6[1],xmm2[1],xmm6[2],xmm2[2],xmm6[3],xmm2[3],xmm6[4],xmm2[4],xmm6[5],xmm2[5],xmm6[6],xmm2[6],xmm6[7],xmm2[7]
punpckhbw %xmm2, %xmm9    # xmm9 = xmm9[8],xmm2[8],xmm9[9],xmm2[9],xmm9[10],xmm2[10],xmm9[11],xmm2[11],xmm9[12],xmm2[12],xmm9[13],xmm2[13],xmm9[14],xmm2[14],xmm9[15],xmm2[15]
movdqa %xmm7, %xmm3
punpcklbw %xmm8, %xmm3    # xmm3 = xmm3[0],xmm8[0],xmm3[1],xmm8[1],xmm3[2],xmm8[2],xmm3[3],xmm8[3],xmm3[4],xmm8[4],xmm3[5],xmm8[5],xmm3[6],xmm8[6],xmm3[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 %xmm6, %xmm2
punpcklbw %xmm9, %xmm2    # xmm2 = xmm2[0],xmm9[0],xmm2[1],xmm9[1],xmm2[2],xmm9[2],xmm2[3],xmm9[3],xmm2[4],xmm9[4],xmm2[5],xmm9[5],xmm2[6],xmm9[6],xmm2[7],xmm9[7]
punpckhbw %xmm9, %xmm6    # xmm6 = xmm6[8],xmm9[8],xmm6[9],xmm9[9],xmm6[10],xmm9[10],xmm6[11],xmm9[11],xmm6[12],xmm9[12],xmm6[13],xmm9[13],xmm6[14],xmm9[14],xmm6[15],xmm9[15]
punpcklqdq %xmm6, %xmm7    # xmm7 = xmm7[0],xmm6[0]
movdqa %xmm3, %xmm9
punpckhqdq %xmm2, %xmm9    # xmm9 = xmm9[1],xmm2[1]
punpcklqdq %xmm2, %xmm3    # xmm3 = xmm3[0],xmm2[0]
movdqa %xmm4, %xmm6
pand %xmm0, %xmm6
movdqa %xmm7, %xmm2
pand %xmm0, %xmm2
packuswb %xmm2, %xmm6
movdqa %xmm1, %xmm8
pand %xmm0, %xmm8
movdqa %xmm9, %xmm2
pand %xmm0, %xmm2
packuswb %xmm2, %xmm8
movdqa %xmm5, %xmm2
pand %xmm0, %xmm2
movdqa %xmm3, %xmm10
pand %xmm0, %xmm10
packuswb %xmm10, %xmm2
psrlw $0x8, %xmm4
psrlw $0x8, %xmm7
packuswb %xmm7, %xmm4
psrlw $0x8, %xmm1
psrlw $0x8, %xmm9
packuswb %xmm9, %xmm1
psrlw $0x8, %xmm5
psrlw $0x8, %xmm3
packuswb %xmm3, %xmm5
movdqa %xmm6, %xmm7
pand %xmm0, %xmm7
movdqa %xmm8, %xmm3
pand %xmm0, %xmm3
packuswb %xmm3, %xmm7
movdqa %xmm2, %xmm9
pand %xmm0, %xmm9
movdqa %xmm4, %xmm3
pand %xmm0, %xmm3
packuswb %xmm3, %xmm9
movdqa %xmm1, %xmm3
pand %xmm0, %xmm3
movdqa %xmm5, %xmm10
pand %xmm0, %xmm10
packuswb %xmm10, %xmm3
psrlw $0x8, %xmm6
psrlw $0x8, %xmm8
packuswb %xmm8, %xmm6
psrlw $0x8, %xmm2
psrlw $0x8, %xmm4
packuswb %xmm4, %xmm2
psrlw $0x8, %xmm1
psrlw $0x8, %xmm5
packuswb %xmm5, %xmm1
movdqa %xmm7, %xmm4
pand %xmm0, %xmm4
movdqa %xmm9, %xmm5
pand %xmm0, %xmm5
packuswb %xmm5, %xmm4
movdqa %xmm3, %xmm8
pand %xmm0, %xmm8
movdqa %xmm6, %xmm5
pand %xmm0, %xmm5
packuswb %xmm5, %xmm8
movdqa %xmm2, %xmm5
pand %xmm0, %xmm5
movdqa %xmm1, %xmm10
pand %xmm0, %xmm10
packuswb %xmm10, %xmm5
psrlw $0x8, %xmm7
psrlw $0x8, %xmm9
packuswb %xmm9, %xmm7
psrlw $0x8, %xmm3
psrlw $0x8, %xmm6
packuswb %xmm6, %xmm3
psrlw $0x8, %xmm2
psrlw $0x8, %xmm1
packuswb %xmm1, %xmm2
movdqa %xmm4, %xmm1
pand %xmm0, %xmm1
movdqa %xmm8, %xmm6
pand %xmm0, %xmm6
packuswb %xmm6, %xmm1
movdqa %xmm5, %xmm9
pand %xmm0, %xmm9
movdqa %xmm7, %xmm6
pand %xmm0, %xmm6
packuswb %xmm6, %xmm9
movdqa %xmm3, %xmm6
pand %xmm0, %xmm6
movdqa %xmm2, %xmm10
pand %xmm0, %xmm10
packuswb %xmm10, %xmm6
psrlw $0x8, %xmm4
psrlw $0x8, %xmm8
packuswb %xmm8, %xmm4
psrlw $0x8, %xmm5
psrlw $0x8, %xmm7
packuswb %xmm7, %xmm5
psrlw $0x8, %xmm3
psrlw $0x8, %xmm2
packuswb %xmm2, %xmm3
movdqa %xmm1, %xmm2
pand %xmm0, %xmm2
movdqa %xmm9, %xmm7
pand %xmm0, %xmm7
packuswb %xmm7, %xmm2
movdqa %xmm6, %xmm7
pand %xmm0, %xmm7
movdqa %xmm4, %xmm8
pand %xmm0, %xmm8
packuswb %xmm8, %xmm7
movdqa %xmm5, %xmm8
pand %xmm0, %xmm8
movdqa %xmm3, %xmm10
pand %xmm0, %xmm10
packuswb %xmm10, %xmm8
psrlw $0x8, %xmm1
psrlw $0x8, %xmm9
packuswb %xmm9, %xmm1
psrlw $0x8, %xmm6
psrlw $0x8, %xmm4
packuswb %xmm4, %xmm6
psrlw $0x8, %xmm5
psrlw $0x8, %xmm3
packuswb %xmm3, %xmm5
movdqu %xmm2, (%rdx)
movdqu %xmm7, 0x10(%rdx)
movdqu %xmm8, 0x20(%rdx)
movdqu %xmm1, 0x30(%rdx)
movdqu %xmm6, 0x40(%rdx)
movdqu %xmm5, 0x50(%rdx)
subq $-0x80, %rdi
addq $0x60, %rdx
leal -0x20(%rsi), %eax
cmpl $0x3f, %esi
movl %eax, %esi
jg 0xe7da2
jmp 0xe80fd
movl %esi, %eax
testl %eax, %eax
jle 0xe8108
movl %eax, %esi
jmp 0xdb76c
retq