// File: /workspace/github_c_makefile_star2_O3/tvlabs[P]edge264/./edge264_intra.c
// Function: decode_intra16x16
static void decode_intra16x16(int mode, uint8_t * restrict p, size_t stride, i16x8 clip) {
	INIT_P();
	i8x16 pred, top;
	switch (mode) {
	default: __builtin_unreachable();
	
	case I16x16_V_8:
		pred = load128(P(0, -1));
		break;
	
	case I16x16_H_8:
		*(i8x16 *)P(0, 0) = set8(*P(-1, 0));
		*(i8x16 *)P(0, 1) = set8(*P(-1, 1));
		*(i8x16 *)P(0, 2) = set8(*P(-1, 2));
		*(i8x16 *)P(0, 3) = set8(*P(-1, 3));
		*(i8x16 *)P(0, 4) = set8(*P(-1, 4));
		*(i8x16 *)P(0, 5) = set8(*P(-1, 5));
		*(i8x16 *)P(0, 6) = set8(*P(-1, 6));
		*(i8x16 *)P(0, 7) = set8(*P(-1, 7));
		*(i8x16 *)P(0, 8) = set8(*P(-1, 8));
		*(i8x16 *)P(0, 9) = set8(*P(-1, 9));
		*(i8x16 *)P(0, 10) = set8(*P(-1, 10));
		*(i8x16 *)P(0, 11) = set8(*P(-1, 11));
		*(i8x16 *)P(0, 12) = set8(*P(-1, 12));
		*(i8x16 *)P(0, 13) = set8(*P(-1, 13));
		*(i8x16 *)P(0, 14) = set8(*P(-1, 14));
		*(i8x16 *)P(0, 15) = set8(*P(-1, 15));
		return;
	
	case I16x16_DC_8: {
		i8x16 t = load128(P(0, -1));
		i8x16 l = ldleft16(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
		pred = broadcast8(shrru16(sumd8(t, l), 5), __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__);
		} break;
	case I16x16_DCA_8:
		top = load128(P(0, -1));
	dca_16x16_sum:
		pred = broadcast8(shrru16(sum8(top), 4), __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__);
		break;
	case I16x16_DCB_8:
		top = ldleft16(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
		goto dca_16x16_sum;
	case I16x16_DCAB_8:
		pred = set8(-128);
		break;
	
	case I16x16_P_8: {
		i8x16 tl = load64(P(-1, -1));
		i8x16 tr = load64(P(8, -1));
		i8x16 lt = ldleft7(tl, 0, 1, 2, 3, 4, 5, 6);
		i8x16 lb = ldleft8(8, 9, 10, 11, 12, 13, 14, 15);
		#if defined(__SSE2__)
			i8x16 m = {-8, -7, -6, -5, -4, -3, -2, -1, 1, 2, 3, 4, 5, 6, 7, 8};
			i16x8 mul = ziphi8(m, (i8x16){});
			i16x8 v0 = maddubs(ziplo64(tl, tr), m);
			i16x8 v1 = maddubs(ziplo64(lt, lb), m);
			i16x8 v2 = (i16x8)ziplo32(v0, v1) + (i16x8)ziphi32(v0, v1);
			i16x8 v3 = v2 + (i16x8)shr128(v2, 8);
			i16x8 HV = v3 + shufflelo(v3, 1, 0, 3, 2); // H, H, V, V
			i16x8 a = (broadcast16((i16x8)shr128(tr, 7) + (i16x8)shr128(lb, 7), 0) - -1) << 4;
		#elif defined(__ARM_NEON)
			i16x8 mul = {1, 2, 3, 4, 5, 6, 7, 8};
			i16x8 v0 = sublou8(tr, vrev64q_s8(tl)) * mul;
			i16x8 v1 = sublou8(lb, vrev64q_s8(lt)) * mul;
			i16x8 v2 = vpaddq_s16(v0, v1);
			i16x8 v3 = vpaddq_s16(v2, v2);
			i16x8 HV = (i16x8)vtrn1q_s16(v3, v3) + (i16x8)vtrn2q_s16(v3, v3); // {H, H, V, V, 0, 0, 0, 0}, -9180..9180
			i16x8 a = (broadcast16((i16x8)addlou8(tr, lb) - -1, 7)) << 4;
		#endif
		i16x8 v4 = shrrs16(HV + (HV >> 2), 4); // (5 * HV + 32) >> 6, -717..717
		i16x8 b = broadcast32(v4, 0);
		i16x8 c = broadcast32(v4, 1);
		i16x8 p1 = (a + c) - (c << 3) + (b * mul);
		i16x8 p0 = p1 - (b << 3);
		for (int i = 16; i--; p0 += c, p1 += c, p += stride)
			*(i8x16 *)p = shrpus16(p0, p1, 5);
		} return;
	}
	*(i8x16 *)P(0, 0) = pred;
	*(i8x16 *)P(0, 1) = pred;
	*(i8x16 *)P(0, 2) = pred;
	*(i8x16 *)P(0, 3) = pred;
	*(i8x16 *)P(0, 4) = pred;
	*(i8x16 *)P(0, 5) = pred;
	*(i8x16 *)P(0, 6) = pred;
	*(i8x16 *)P(0, 7) = pred;
	*(i8x16 *)P(0, 8) = pred;
	*(i8x16 *)P(0, 9) = pred;
	*(i8x16 *)P(0, 10) = pred;
	*(i8x16 *)P(0, 11) = pred;
	*(i8x16 *)P(0, 12) = pred;
	*(i8x16 *)P(0, 13) = pred;
	*(i8x16 *)P(0, 14) = pred;
	*(i8x16 *)P(0, 15) = pred;
}

// Assembly:
movq %rdx, %rax
negq %rax
leaq (%rsi,%rdx,8), %r10
movq %r10, %r8
subq %rdx, %r8
leaq (%r8,%rdx,8), %r9
movq %r9, %rcx
subq %rdx, %rcx
movl %edi, %edi
leaq 0x1e6bc(%rip), %r11     # 0x33c90
movslq (%r11,%rdi,4), %rdi
addq %r11, %rdi
jmpq *%rdi
vmovdqu (%rsi,%rax), %xmm0
jmp 0x1583e
vmovd -0x4(%rsi), %xmm0
vmovd -0x4(%rsi,%rdx), %xmm1
vpunpcklbw %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
vmovd -0x4(%rsi,%rdx,2), %xmm1
vmovd -0x4(%r8,%rax,4), %xmm2
vpunpcklbw %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
vpunpcklwd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
vmovd -0x4(%rsi,%rdx,4), %xmm1
vmovd -0x4(%r8,%rax,2), %xmm2
vmovd -0x4(%r8,%rax), %xmm3
vpunpcklbw %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
vmovd -0x4(%r8), %xmm2
vpunpcklbw %xmm2, %xmm3, %xmm2 # xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
vpunpcklwd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
vpunpckhdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
vmovd -0x4(%r8,%rdx), %xmm1
vmovd -0x4(%r8,%rdx,2), %xmm2
vmovd -0x4(%rcx,%rax,4), %xmm3
vpunpcklbw %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
vmovd -0x4(%r8,%rdx,4), %xmm2
vpunpcklbw %xmm2, %xmm3, %xmm2 # xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
vmovd -0x4(%rcx,%rax,2), %xmm3
vpunpcklwd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
vmovd -0x4(%rcx,%rax), %xmm2
vpunpcklbw %xmm2, %xmm3, %xmm2 # xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
vmovd -0x4(%rcx), %xmm3
vmovd -0x4(%rcx,%rdx), %xmm4
vpunpcklbw %xmm4, %xmm3, %xmm3 # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
vpunpcklwd %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
vpunpckhdq %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
vpunpckhqdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[1],xmm1[1]
jmp 0x15752
vmovd -0x4(%rsi), %xmm0
vmovd -0x4(%rsi,%rdx), %xmm1
vpunpcklbw %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3],xmm0[4],xmm1[4],xmm0[5],xmm1[5],xmm0[6],xmm1[6],xmm0[7],xmm1[7]
vmovd -0x4(%rsi,%rdx,2), %xmm1
vmovd -0x4(%r8,%rax,4), %xmm2
vpunpcklbw %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
vpunpcklwd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
vmovd -0x4(%rsi,%rdx,4), %xmm1
vmovd -0x4(%r8,%rax,2), %xmm2
vpunpcklbw %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
vmovd -0x4(%r8,%rax), %xmm2
vmovd -0x4(%r8), %xmm3
vpunpcklbw %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
vpunpcklwd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
vpunpckhdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[2],xmm1[2],xmm0[3],xmm1[3]
vmovd -0x4(%r8,%rdx), %xmm1
vmovd -0x4(%r8,%rdx,2), %xmm2
vpunpcklbw %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3],xmm1[4],xmm2[4],xmm1[5],xmm2[5],xmm1[6],xmm2[6],xmm1[7],xmm2[7]
vmovd -0x4(%rcx,%rax,4), %xmm2
vmovd -0x4(%r8,%rdx,4), %xmm3
vpunpcklbw %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
vpunpcklwd %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[0],xmm2[0],xmm1[1],xmm2[1],xmm1[2],xmm2[2],xmm1[3],xmm2[3]
vmovd -0x4(%rcx,%rax,2), %xmm2
vmovd -0x4(%rcx,%rax), %xmm3
vpunpcklbw %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
vmovd -0x4(%rcx), %xmm3
vmovd -0x4(%rcx,%rdx), %xmm4
vpunpcklbw %xmm4, %xmm3, %xmm3 # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
vpunpcklwd %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
vpunpckhdq %xmm2, %xmm1, %xmm1 # xmm1 = xmm1[2],xmm2[2],xmm1[3],xmm2[3]
vpunpckhqdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[1],xmm1[1]
vpxor %xmm1, %xmm1, %xmm1
vpsadbw (%rsi,%rax), %xmm1, %xmm2
vpsadbw %xmm1, %xmm0, %xmm0
vpaddw %xmm2, %xmm0, %xmm0
vpsrldq $0x8, %xmm0, %xmm2      # xmm2 = xmm0[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero
vpaddw %xmm2, %xmm0, %xmm0
vpsrlw $0x4, %xmm0, %xmm0
jmp 0x15768
vmovdqu (%rsi,%rax), %xmm0
vpxor %xmm1, %xmm1, %xmm1
vpsadbw %xmm1, %xmm0, %xmm0
vpsrldq $0x8, %xmm0, %xmm2      # xmm2 = xmm0[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero
vpaddw %xmm0, %xmm2, %xmm0
vpsrlw $0x3, %xmm0, %xmm0
vpavgw %xmm1, %xmm0, %xmm0
vpbroadcastb %xmm0, %xmm0
jmp 0x1583e
vpbroadcastb -0x1(%rsi), %xmm0
vmovdqa %xmm0, (%rsi)
vpbroadcastb -0x1(%rsi,%rdx), %xmm0
vmovdqa %xmm0, (%rsi,%rdx)
vpbroadcastb -0x1(%rsi,%rdx,2), %xmm0
vmovdqa %xmm0, (%rsi,%rdx,2)
vpbroadcastb -0x1(%r8,%rax,4), %xmm0
vmovdqa %xmm0, (%r8,%rax,4)
vpbroadcastb -0x1(%rsi,%rdx,4), %xmm0
vmovdqa %xmm0, (%rsi,%rdx,4)
vpbroadcastb -0x1(%r8,%rax,2), %xmm0
vmovdqa %xmm0, (%r8,%rax,2)
vpbroadcastb -0x1(%r8,%rax), %xmm0
vmovdqa %xmm0, (%r8,%rax)
vpbroadcastb -0x1(%r10,%rax), %xmm0
vmovdqa %xmm0, (%r10,%rax)
vpbroadcastb -0x1(%r8,%rdx), %xmm0
vmovdqa %xmm0, (%rsi,%rdx,8)
vpbroadcastb -0x1(%r8,%rdx,2), %xmm0
vmovdqa %xmm0, (%r8,%rdx,2)
vpbroadcastb -0x1(%rcx,%rax,4), %xmm0
vmovdqa %xmm0, (%rcx,%rax,4)
vpbroadcastb -0x1(%r8,%rdx,4), %xmm0
vmovdqa %xmm0, (%r8,%rdx,4)
vpbroadcastb -0x1(%rcx,%rax,2), %xmm0
vmovdqa %xmm0, (%rcx,%rax,2)
vpbroadcastb -0x1(%rcx,%rax), %xmm0
vmovdqa %xmm0, (%rcx,%rax)
vpbroadcastb -0x1(%rcx), %xmm0
vmovdqa %xmm0, (%rcx)
vpbroadcastb -0x1(%rcx,%rdx), %xmm0
jmp 0x1588d
vpbroadcastb 0x1e44a(%rip), %xmm0 # 0x33c88
vmovdqa %xmm0, (%rsi)
vmovdqa %xmm0, (%rsi,%rdx)
vmovdqa %xmm0, (%rsi,%rdx,2)
vmovdqa %xmm0, (%r8,%rax,4)
vmovdqa %xmm0, (%rsi,%rdx,4)
vmovdqa %xmm0, (%r8,%rax,2)
vmovdqa %xmm0, (%r8,%rax)
vmovdqa %xmm0, (%r10,%rax)
vmovdqa %xmm0, (%rsi,%rdx,8)
vmovdqa %xmm0, (%r8,%rdx,2)
vmovdqa %xmm0, (%rcx,%rax,4)
vmovdqa %xmm0, (%r8,%rdx,4)
vmovdqa %xmm0, (%rcx,%rax,2)
vmovdqa %xmm0, (%rcx,%rax)
vmovdqa %xmm0, (%rcx)
vmovdqa %xmm0, (%r9)
retq
vmovq -0x1(%rsi,%rax), %xmm0
vmovq 0x8(%rsi,%rax), %xmm1
vmovd -0x4(%rsi), %xmm2
vpslld $0x18, %xmm0, %xmm3
vpunpcklbw %xmm2, %xmm3, %xmm2 # xmm2 = xmm3[0],xmm2[0],xmm3[1],xmm2[1],xmm3[2],xmm2[2],xmm3[3],xmm2[3],xmm3[4],xmm2[4],xmm3[5],xmm2[5],xmm3[6],xmm2[6],xmm3[7],xmm2[7]
vmovd -0x4(%rsi,%rdx), %xmm3
vmovd -0x4(%rsi,%rdx,2), %xmm4
vpunpcklbw %xmm4, %xmm3, %xmm3 # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
vpunpcklwd %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
vmovd -0x4(%r8,%rax,4), %xmm3
vmovd -0x4(%rsi,%rdx,4), %xmm4
vpunpcklbw %xmm4, %xmm3, %xmm3 # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3],xmm3[4],xmm4[4],xmm3[5],xmm4[5],xmm3[6],xmm4[6],xmm3[7],xmm4[7]
vmovd -0x4(%r8,%rax,2), %xmm4
vmovd -0x4(%r8,%rax), %xmm5
vpunpcklbw %xmm5, %xmm4, %xmm4 # xmm4 = xmm4[0],xmm5[0],xmm4[1],xmm5[1],xmm4[2],xmm5[2],xmm4[3],xmm5[3],xmm4[4],xmm5[4],xmm4[5],xmm5[5],xmm4[6],xmm5[6],xmm4[7],xmm5[7]
vpunpcklwd %xmm4, %xmm3, %xmm3 # xmm3 = xmm3[0],xmm4[0],xmm3[1],xmm4[1],xmm3[2],xmm4[2],xmm3[3],xmm4[3]
vpbroadcastq 0x21abf(%rip), %xmm4 # 0x373b0
vpermi2d %xmm3, %xmm2, %xmm4
vmovd -0x4(%r8,%rdx), %xmm2
vmovd -0x4(%r8,%rdx,2), %xmm3
vmovd -0x4(%rcx,%rax,4), %xmm5
vmovd -0x4(%r8,%rdx,4), %xmm6
vpunpcklbw %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3],xmm2[4],xmm3[4],xmm2[5],xmm3[5],xmm2[6],xmm3[6],xmm2[7],xmm3[7]
vpunpcklbw %xmm6, %xmm5, %xmm3 # xmm3 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3],xmm5[4],xmm6[4],xmm5[5],xmm6[5],xmm5[6],xmm6[6],xmm5[7],xmm6[7]
vmovd -0x4(%rcx,%rax,2), %xmm5
vmovd -0x4(%rcx,%rax), %xmm6
vpunpcklwd %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[0],xmm3[0],xmm2[1],xmm3[1],xmm2[2],xmm3[2],xmm2[3],xmm3[3]
vpunpcklbw %xmm6, %xmm5, %xmm3 # xmm3 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3],xmm5[4],xmm6[4],xmm5[5],xmm6[5],xmm5[6],xmm6[6],xmm5[7],xmm6[7]
vmovd -0x4(%rcx), %xmm5
vmovd -0x4(%rcx,%rdx), %xmm6
vpunpcklbw %xmm6, %xmm5, %xmm5 # xmm5 = xmm5[0],xmm6[0],xmm5[1],xmm6[1],xmm5[2],xmm6[2],xmm5[3],xmm6[3],xmm5[4],xmm6[4],xmm5[5],xmm6[5],xmm5[6],xmm6[6],xmm5[7],xmm6[7]
vpunpcklwd %xmm5, %xmm3, %xmm3 # xmm3 = xmm3[0],xmm5[0],xmm3[1],xmm5[1],xmm3[2],xmm5[2],xmm3[3],xmm5[3]
vpunpckhdq %xmm3, %xmm2, %xmm2 # xmm2 = xmm2[2],xmm3[2],xmm2[3],xmm3[3]
vpblendd $0xc, %xmm2, %xmm4, %xmm2 # xmm2 = xmm4[0,1],xmm2[2,3]
vpinsrq $0x1, 0x8(%rsi,%rax), %xmm0, %xmm0
vmovdqa 0x1dfd5(%rip), %xmm4    # 0x33930
vpmaddubsw %xmm4, %xmm0, %xmm0
vpmaddubsw %xmm4, %xmm2, %xmm2
vpunpckldq %xmm2, %xmm0, %xmm4 # xmm4 = xmm0[0],xmm2[0],xmm0[1],xmm2[1]
vpunpckhdq %xmm2, %xmm0, %xmm0 # xmm0 = xmm0[2],xmm2[2],xmm0[3],xmm2[3]
vpaddw %xmm0, %xmm4, %xmm0
vpsrldq $0x8, %xmm0, %xmm2      # xmm2 = xmm0[8,9,10,11,12,13,14,15],zero,zero,zero,zero,zero,zero,zero,zero
vpaddw %xmm2, %xmm0, %xmm0
vpshuflw $0xb1, %xmm0, %xmm2     # xmm2 = xmm0[1,0,3,2,4,5,6,7]
vpaddw %xmm0, %xmm2, %xmm0
vpsrlq $0x38, %xmm1, %xmm1
vpsrldq $0xf, %xmm3, %xmm2      # xmm2 = xmm3[15],zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero,zero
vpaddw %xmm1, %xmm2, %xmm1
vpsllw $0x4, %xmm1, %xmm1
vpbroadcastw %xmm1, %xmm1
vpbroadcastw 0x1e2e6(%rip), %xmm2 # 0x33c8a
vpaddw %xmm2, %xmm1, %xmm1
vpsraw $0x2, %xmm0, %xmm2
vpbroadcastw 0x1e2d6(%rip), %xmm3 # 0x33c8c
vpaddw %xmm3, %xmm0, %xmm0
vpaddw %xmm2, %xmm0, %xmm0
vpsraw $0x4, %xmm0, %xmm0
vpbroadcastd %xmm0, %xmm2
vpshufd $0x55, %xmm0, %xmm0     # xmm0 = xmm0[1,1,1,1]
vpaddw %xmm0, %xmm1, %xmm1
vpsllw $0x3, %xmm0, %xmm3
vpsubw %xmm3, %xmm1, %xmm1
vpmullw 0x1df5e(%rip), %xmm2, %xmm3 # 0x33940
vpaddw %xmm3, %xmm1, %xmm1
vpsllw $0x3, %xmm2, %xmm2
vpsubw %xmm2, %xmm1, %xmm2
movl $0xfffffff0, %eax       # imm = 0xFFFFFFF0
vpsraw $0x5, %xmm2, %xmm3
vpsraw $0x5, %xmm1, %xmm4
vpackuswb %xmm4, %xmm3, %xmm3
vmovdqa %xmm3, (%rsi)
vpaddw %xmm0, %xmm2, %xmm2
vpaddw %xmm0, %xmm1, %xmm1
addq %rdx, %rsi
incl %eax
jne 0x159f4
jmp 0x15892