// File: /workspace/github_c_makefile_star2_O0/tvlabs[P]edge264/./edge264_residual.c
// Function: transform_dc2x2
static void transform_dc2x2(Edge264Context *ctx)
{
	// load both matrices interlaced+transposed and multiply right
	i32x4 d0 = ctx->c_v[0] + ctx->c_v[1];
	i32x4 d1 = ctx->c_v[0] - ctx->c_v[1];
	ctx->c_v[0] = ctx->c_v[1] = (i8x16){};
	
	// transpose and multiply left
	i32x4 e0 = ziplo64(d0, d1);
	i32x4 e1 = ziphi64(d0, d1);
	i32x4 f0 = e0 + e1;
	i32x4 f1 = e0 - e1;
	
	// deinterlace and scale
	unsigned qPb = ctx->t.QP[1];
	unsigned qPr = ctx->t.QP[2];
	i32x4 LSb = set32((ctx->t.pps.weightScale4x4[1 + mb->mbIsInterFlag * 3][0] * normAdjust4x4[qPb % 6][0]) << (qPb / 6));
	i32x4 LSr = set32((ctx->t.pps.weightScale4x4[2 + mb->mbIsInterFlag * 3][0] * normAdjust4x4[qPr % 6][0]) << (qPr / 6));
	i32x4 dcCb = ((i32x4)unziplo32(f0, f1) * LSb) >> 5;
	i32x4 dcCr = ((i32x4)unziphi32(f0, f1) * LSr) >> 5;
	
	// store if needed later ...
	if (mb->f.CodedBlockPatternChromaAC) {
		ctx->c_v[4] = dcCb;
		ctx->c_v[5] = dcCr;
		
	// ... or prepare for storage in place
	} else {
		i32x4 s32 = set32(32); // for SSE
		i32x4 rb = shrrs32(dcCb, 6, s32);
		i32x4 rr = shrrs32(dcCr, 6, s32);
		#if defined(__SSE2__)
			i16x8 lob = shuffle32(shufflelo(rb, 0, 0, 2, 2), 0, 0, 1, 1);
			i16x8 lor = shuffle32(shufflelo(rr, 0, 0, 2, 2), 0, 0, 1, 1);
			i16x8 hib = shuffle32(shufflehi(rb, 0, 0, 2, 2), 2, 2, 3, 3);
			i16x8 hir = shuffle32(shufflehi(rr, 0, 0, 2, 2), 2, 2, 3, 3);
		#elif defined(__ARM_NEON)
			i16x8 vb = vtrn1q_s16(rb, rb);
			i16x8 vr = vtrn1q_s16(rr, rr);
			i16x8 lob = ziplo32(vb, vb);
			i16x8 lor = ziplo32(vr, vr);
			i16x8 hib = ziphi32(vb, vb);
			i16x8 hir = ziphi32(vr, vr);
		#endif
		
		// add to predicted samples
		uint8_t *p = ctx->samples_mb[1];
		size_t stride = ctx->t.stride[1] >> 1;
		if (ctx->t.samples_clip[1][0] == 255) {
			i16x8 b0 = addlou8s16(load64(p             ), lob);
			i16x8 r0 = addlou8s16(load64(p + stride    ), lor);
			i16x8 b1 = addlou8s16(load64(p + stride * 2), lob);
			i16x8 r1 = addlou8s16(load64(p + stride * 3), lor);
			i64x2 b8 = packus16(b0, b1);
			i64x2 r8 = packus16(r0, r1);
			*(int64_t *)(p             ) = b8[0];
			*(int64_t *)(p + stride    ) = r8[0];
			*(int64_t *)(p + stride * 2) = b8[1];
			*(int64_t *)(p + stride * 3) = r8[1];
			i16x8 b2 = addlou8s16(load64(p += stride * 4), lob);
			i16x8 r2 = addlou8s16(load64(p + stride    ), lor);
			i16x8 b3 = addlou8s16(load64(p + stride * 2), lob);
			i16x8 r3 = addlou8s16(load64(p + stride * 3), lor);
			i64x2 b9 = packus16(b2, b3);
			i64x2 r9 = packus16(r2, r3);
			*(int64_t *)(p             ) = b9[0];
			*(int64_t *)(p + stride    ) = r9[0];
			*(int64_t *)(p + stride * 2) = b9[1];
			*(int64_t *)(p + stride * 3) = r9[1];
			i16x8 b4 = addlou8s16(load64(p += stride * 4), hib);
			i16x8 r4 = addlou8s16(load64(p + stride    ), hir);
			i16x8 b5 = addlou8s16(load64(p + stride * 2), hib);
			i16x8 r5 = addlou8s16(load64(p + stride * 3), hir);
			i64x2 bA = packus16(b4, b5);
			i64x2 rA = packus16(r4, r5);
			*(int64_t *)(p             ) = bA[0];
			*(int64_t *)(p + stride    ) = rA[0];
			*(int64_t *)(p + stride * 2) = bA[1];
			*(int64_t *)(p + stride * 3) = rA[1];
			i16x8 b6 = addlou8s16(load64(p += stride * 4), hib);
			i16x8 r6 = addlou8s16(load64(p + stride    ), hir);
			i16x8 b7 = addlou8s16(load64(p + stride * 2), hib);
			i16x8 r7 = addlou8s16(load64(p + stride * 3), hir);
			i64x2 bB = packus16(b6, b7);
			i64x2 rB = packus16(r6, r7);
			*(int64_t *)(p             ) = bB[0];
			*(int64_t *)(p + stride    ) = rB[0];
			*(int64_t *)(p + stride * 2) = bB[1];
			*(int64_t *)(p + stride * 3) = rB[1];
		}
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x700, %rsp            # imm = 0x700
movq %rdi, -0x4b8(%rbp)
movq -0x4b8(%rbp), %rax
vmovdqa 0x1b60(%rax), %xmm0
vmovdqa 0x1b70(%rax), %xmm1
vpaddd %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x4d0(%rbp)
movq -0x4b8(%rbp), %rax
vmovdqa 0x1b60(%rax), %xmm0
vmovdqa 0x1b70(%rax), %xmm1
vpsubd %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x4e0(%rbp)
vpxor %xmm0, %xmm0, %xmm0
vmovdqa %xmm0, -0x4f0(%rbp)
vmovdqa -0x4f0(%rbp), %xmm0
movq -0x4b8(%rbp), %rax
vmovdqa %xmm0, 0x1b70(%rax)
movq -0x4b8(%rbp), %rax
vmovdqa %xmm0, 0x1b60(%rax)
vmovdqa -0x4d0(%rbp), %xmm1
vmovdqa -0x4e0(%rbp), %xmm0
vmovdqa %xmm1, -0x1a0(%rbp)
vmovdqa %xmm0, -0x1b0(%rbp)
vmovdqa -0x1a0(%rbp), %xmm0
vmovdqa -0x1b0(%rbp), %xmm1
vpunpcklqdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovdqa %xmm0, -0x500(%rbp)
vmovdqa -0x4d0(%rbp), %xmm1
vmovdqa -0x4e0(%rbp), %xmm0
vmovdqa %xmm1, -0x180(%rbp)
vmovdqa %xmm0, -0x190(%rbp)
vmovdqa -0x180(%rbp), %xmm0
vmovdqa -0x190(%rbp), %xmm1
vpunpckhqdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[1],xmm1[1]
vmovdqa %xmm0, -0x510(%rbp)
vmovdqa -0x500(%rbp), %xmm0
vmovdqa -0x510(%rbp), %xmm1
vpaddd %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x520(%rbp)
vmovdqa -0x500(%rbp), %xmm0
vmovdqa -0x510(%rbp), %xmm1
vpsubd %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x530(%rbp)
movq -0x4b8(%rbp), %rax
movsbl 0x51(%rax), %eax
movl %eax, -0x534(%rbp)
movq -0x4b8(%rbp), %rax
movsbl 0x52(%rax), %eax
movl %eax, -0x538(%rbp)
movq -0x4b8(%rbp), %rcx
movq 0x680(%rcx), %rax
movsbl 0x2(%rax), %edx
movl %edx, %eax
leal (%rax,%rax,2), %eax
cltq
shlq $0x4, %rax
movzbl 0x240(%rax,%rcx), %eax
movl -0x534(%rbp), %ecx
movl %ecx, %edx
movl $0xaaaaaaab, %edi       # imm = 0xAAAAAAAB
imulq %rdi, %rcx
shrq $0x22, %rcx
movl %ecx, %r8d
addl %r8d, %r8d
movl %r8d, %esi
leal (%rsi,%rsi,2), %esi
subl %esi, %edx
movl %edx, %esi
leaq 0x8e943(%rip), %rdx     # 0xcc8d0
movsbl (%rdx,%rsi,4), %esi
imull %esi, %eax
movb %cl, %sil
movb %sil, %cl
shlxl %ecx, %eax, %eax
movl %eax, -0x164(%rbp)
movl -0x164(%rbp), %eax
movl %eax, -0x144(%rbp)
movl %eax, -0x148(%rbp)
movl %eax, -0x14c(%rbp)
movl %eax, -0x150(%rbp)
movl -0x14c(%rbp), %esi
movl -0x148(%rbp), %ecx
movl -0x144(%rbp), %eax
vmovd -0x150(%rbp), %xmm0
vpinsrd $0x1, %esi, %xmm0, %xmm0
vpinsrd $0x2, %ecx, %xmm0, %xmm0
vpinsrd $0x3, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x160(%rbp)
vmovdqa -0x160(%rbp), %xmm0
vmovdqa %xmm0, -0x550(%rbp)
movq -0x4b8(%rbp), %rcx
movq 0x680(%rcx), %rax
movsbl 0x2(%rax), %esi
movl %esi, %eax
leal (%rax,%rax,2), %eax
cltq
shlq $0x4, %rax
movzbl 0x250(%rax,%rcx), %eax
movl -0x538(%rbp), %ecx
movl %ecx, %esi
imulq %rdi, %rcx
shrq $0x22, %rcx
movl %ecx, %r8d
addl %r8d, %r8d
movl %r8d, %edi
leal (%rdi,%rdi,2), %edi
subl %edi, %esi
movsbl (%rdx,%rsi,4), %edx
imull %edx, %eax
movb %cl, %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
movl %eax, -0x168(%rbp)
movl -0x168(%rbp), %eax
movl %eax, -0x124(%rbp)
movl %eax, -0x128(%rbp)
movl %eax, -0x12c(%rbp)
movl %eax, -0x130(%rbp)
movl -0x12c(%rbp), %edx
movl -0x128(%rbp), %ecx
movl -0x124(%rbp), %eax
vmovd -0x130(%rbp), %xmm0
vpinsrd $0x1, %edx, %xmm0, %xmm0
vpinsrd $0x2, %ecx, %xmm0, %xmm0
vpinsrd $0x3, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x140(%rbp)
vmovdqa -0x140(%rbp), %xmm0
vmovdqa %xmm0, -0x560(%rbp)
vmovdqa -0x520(%rbp), %xmm2
vmovdqa -0x530(%rbp), %xmm1
vmovaps %xmm2, %xmm0
vinserti128 $0x1, %xmm1, %ymm0, %ymm0
vpmovqd %ymm0, %xmm0
vmovdqa -0x550(%rbp), %xmm1
vpmulld %xmm1, %xmm0, %xmm0
vpsrad $0x5, %xmm0, %xmm0
vmovdqa %xmm0, -0x570(%rbp)
vmovaps -0x520(%rbp), %xmm0
vmovaps -0x530(%rbp), %xmm1
vshufps $0xdd, %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[1,3],xmm1[1,3]
vmovdqa -0x560(%rbp), %xmm1
vpmulld %xmm1, %xmm0, %xmm0
vpsrad $0x5, %xmm0, %xmm0
vmovdqa %xmm0, -0x580(%rbp)
movq -0x4b8(%rbp), %rax
movq 0x680(%rax), %rax
cmpb $0x0, 0x27(%rax)
je 0x3e172
vmovdqa -0x570(%rbp), %xmm0
movq -0x4b8(%rbp), %rax
vmovdqa %xmm0, 0x1ba0(%rax)
vmovdqa -0x580(%rbp), %xmm0
movq -0x4b8(%rbp), %rax
vmovdqa %xmm0, 0x1bb0(%rax)
jmp 0x3eb99
movl $0x20, -0x16c(%rbp)
movl -0x16c(%rbp), %eax
movl %eax, -0x104(%rbp)
movl %eax, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
movl %eax, -0x110(%rbp)
movl -0x10c(%rbp), %edx
movl -0x108(%rbp), %ecx
movl -0x104(%rbp), %eax
vmovd -0x110(%rbp), %xmm0
vpinsrd $0x1, %edx, %xmm0, %xmm0
vpinsrd $0x2, %ecx, %xmm0, %xmm0
vpinsrd $0x3, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x120(%rbp)
vmovdqa -0x120(%rbp), %xmm0
vmovdqa %xmm0, -0x590(%rbp)
vmovdqa -0x570(%rbp), %xmm0
vmovdqa -0x590(%rbp), %xmm1
vpaddd %xmm1, %xmm0, %xmm0
vpsrad $0x6, %xmm0, %xmm0
vmovdqa %xmm0, -0x5a0(%rbp)
vmovdqa -0x580(%rbp), %xmm0
vmovdqa -0x590(%rbp), %xmm1
vpaddd %xmm1, %xmm0, %xmm0
vpsrad $0x6, %xmm0, %xmm0
vmovdqa %xmm0, -0x5b0(%rbp)
vmovdqa -0x5a0(%rbp), %xmm0
vmovdqa 0x8b270(%rip), %xmm1    # 0xc94a0
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x5c0(%rbp)
vmovdqa -0x5b0(%rbp), %xmm0
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x5d0(%rbp)
vmovdqa -0x5a0(%rbp), %xmm0
vmovdqa 0x8b24e(%rip), %xmm1    # 0xc94b0
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x5e0(%rbp)
vmovdqa -0x5b0(%rbp), %xmm0
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x5f0(%rbp)
movq -0x4b8(%rbp), %rax
movq 0x670(%rax), %rax
movq %rax, -0x5f8(%rbp)
movq -0x4b8(%rbp), %rax
movzwl 0x36(%rax), %eax
sarl %eax
cltq
movq %rax, -0x600(%rbp)
movq -0x4b8(%rbp), %rax
movzwl 0x180(%rax), %eax
cmpl $0xff, %eax
jne 0x3eb97
movq -0x5f8(%rbp), %rax
movq %rax, -0x2b8(%rbp)
movq -0x2b8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x2d0(%rbp)
vmovdqa -0x2d0(%rbp), %xmm0
vmovdqa %xmm0, -0x10(%rbp)
vpmovzxbw -0x10(%rbp), %xmm0
vmovdqa -0x5c0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x610(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x2d8(%rbp)
movq -0x2d8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x2f0(%rbp)
vmovdqa -0x2f0(%rbp), %xmm0
vmovdqa %xmm0, -0x20(%rbp)
vpmovzxbw -0x20(%rbp), %xmm0
vmovdqa -0x5d0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x620(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rax,%rcx,2), %rax
movq %rax, -0x2f8(%rbp)
movq -0x2f8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x310(%rbp)
vmovdqa -0x310(%rbp), %xmm0
vmovdqa %xmm0, -0x30(%rbp)
vpmovzxbw -0x30(%rbp), %xmm0
vmovdqa -0x5c0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x630(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
addq %rcx, %rax
movq %rax, -0x318(%rbp)
movq -0x318(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x330(%rbp)
vmovdqa -0x330(%rbp), %xmm0
vmovdqa %xmm0, -0x40(%rbp)
vpmovzxbw -0x40(%rbp), %xmm0
vmovdqa -0x5d0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x640(%rbp)
vmovdqa -0x610(%rbp), %xmm1
vmovdqa -0x630(%rbp), %xmm0
vmovdqa %xmm1, -0x1c0(%rbp)
vmovdqa %xmm0, -0x1d0(%rbp)
vmovdqa -0x1c0(%rbp), %xmm0
vmovdqa -0x1d0(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x650(%rbp)
vmovdqa -0x620(%rbp), %xmm1
vmovdqa -0x640(%rbp), %xmm0
vmovdqa %xmm1, -0x1e0(%rbp)
vmovdqa %xmm0, -0x1f0(%rbp)
vmovdqa -0x1e0(%rbp), %xmm0
vmovdqa -0x1f0(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x660(%rbp)
movq -0x650(%rbp), %rcx
movq -0x5f8(%rbp), %rax
movq %rcx, (%rax)
movq -0x660(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx)
movq -0x648(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx,2)
movq -0x658(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq %rdx, (%rax,%rcx)
movq -0x600(%rbp), %rcx
movq -0x5f8(%rbp), %rax
leaq (%rax,%rcx,4), %rax
movq %rax, -0x5f8(%rbp)
movq %rax, -0x338(%rbp)
movq -0x338(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x350(%rbp)
vmovdqa -0x350(%rbp), %xmm0
vmovdqa %xmm0, -0x50(%rbp)
vpmovzxbw -0x50(%rbp), %xmm0
vmovdqa -0x5c0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x670(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x358(%rbp)
movq -0x358(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x370(%rbp)
vmovdqa -0x370(%rbp), %xmm0
vmovdqa %xmm0, -0x60(%rbp)
vpmovzxbw -0x60(%rbp), %xmm0
vmovdqa -0x5d0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x680(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rax,%rcx,2), %rax
movq %rax, -0x378(%rbp)
movq -0x378(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x390(%rbp)
vmovdqa -0x390(%rbp), %xmm0
vmovdqa %xmm0, -0x70(%rbp)
vpmovzxbw -0x70(%rbp), %xmm0
vmovdqa -0x5c0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x690(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
addq %rcx, %rax
movq %rax, -0x398(%rbp)
movq -0x398(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x3b0(%rbp)
vmovdqa -0x3b0(%rbp), %xmm0
vmovdqa %xmm0, -0x80(%rbp)
vpmovzxbw -0x80(%rbp), %xmm0
vmovdqa -0x5d0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x6a0(%rbp)
vmovdqa -0x670(%rbp), %xmm1
vmovdqa -0x690(%rbp), %xmm0
vmovdqa %xmm1, -0x200(%rbp)
vmovdqa %xmm0, -0x210(%rbp)
vmovdqa -0x200(%rbp), %xmm0
vmovdqa -0x210(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x6b0(%rbp)
vmovdqa -0x680(%rbp), %xmm1
vmovdqa -0x6a0(%rbp), %xmm0
vmovdqa %xmm1, -0x220(%rbp)
vmovdqa %xmm0, -0x230(%rbp)
vmovdqa -0x220(%rbp), %xmm0
vmovdqa -0x230(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x6c0(%rbp)
movq -0x6b0(%rbp), %rcx
movq -0x5f8(%rbp), %rax
movq %rcx, (%rax)
movq -0x6c0(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx)
movq -0x6a8(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx,2)
movq -0x6b8(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq %rdx, (%rax,%rcx)
movq -0x600(%rbp), %rcx
movq -0x5f8(%rbp), %rax
leaq (%rax,%rcx,4), %rax
movq %rax, -0x5f8(%rbp)
movq %rax, -0x3b8(%rbp)
movq -0x3b8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x3d0(%rbp)
vmovdqa -0x3d0(%rbp), %xmm0
vmovdqa %xmm0, -0x90(%rbp)
vpmovzxbw -0x90(%rbp), %xmm0
vmovdqa -0x5e0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x6d0(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x3d8(%rbp)
movq -0x3d8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x3f0(%rbp)
vmovdqa -0x3f0(%rbp), %xmm0
vmovdqa %xmm0, -0xa0(%rbp)
vpmovzxbw -0xa0(%rbp), %xmm0
vmovdqa -0x5f0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x6e0(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rax,%rcx,2), %rax
movq %rax, -0x3f8(%rbp)
movq -0x3f8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x410(%rbp)
vmovdqa -0x410(%rbp), %xmm0
vmovdqa %xmm0, -0xb0(%rbp)
vpmovzxbw -0xb0(%rbp), %xmm0
vmovdqa -0x5e0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x6f0(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
addq %rcx, %rax
movq %rax, -0x418(%rbp)
movq -0x418(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x430(%rbp)
vmovdqa -0x430(%rbp), %xmm0
vmovdqa %xmm0, -0xc0(%rbp)
vpmovzxbw -0xc0(%rbp), %xmm0
vmovdqa -0x5f0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x700(%rbp)
vmovdqa -0x6d0(%rbp), %xmm1
vmovdqa -0x6f0(%rbp), %xmm0
vmovdqa %xmm1, -0x240(%rbp)
vmovdqa %xmm0, -0x250(%rbp)
vmovdqa -0x240(%rbp), %xmm0
vmovdqa -0x250(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x710(%rbp)
vmovdqa -0x6e0(%rbp), %xmm1
vmovdqa -0x700(%rbp), %xmm0
vmovdqa %xmm1, -0x260(%rbp)
vmovdqa %xmm0, -0x270(%rbp)
vmovdqa -0x260(%rbp), %xmm0
vmovdqa -0x270(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x720(%rbp)
movq -0x710(%rbp), %rcx
movq -0x5f8(%rbp), %rax
movq %rcx, (%rax)
movq -0x720(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx)
movq -0x708(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx,2)
movq -0x718(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq %rdx, (%rax,%rcx)
movq -0x600(%rbp), %rcx
movq -0x5f8(%rbp), %rax
leaq (%rax,%rcx,4), %rax
movq %rax, -0x5f8(%rbp)
movq %rax, -0x438(%rbp)
movq -0x438(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x450(%rbp)
vmovdqa -0x450(%rbp), %xmm0
vmovdqa %xmm0, -0xd0(%rbp)
vpmovzxbw -0xd0(%rbp), %xmm0
vmovdqa -0x5e0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x730(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x458(%rbp)
movq -0x458(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x470(%rbp)
vmovdqa -0x470(%rbp), %xmm0
vmovdqa %xmm0, -0xe0(%rbp)
vpmovzxbw -0xe0(%rbp), %xmm0
vmovdqa -0x5f0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x740(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rax,%rcx,2), %rax
movq %rax, -0x478(%rbp)
movq -0x478(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x490(%rbp)
vmovdqa -0x490(%rbp), %xmm0
vmovdqa %xmm0, -0xf0(%rbp)
vpmovzxbw -0xf0(%rbp), %xmm0
vmovdqa -0x5e0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x750(%rbp)
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
addq %rcx, %rax
movq %rax, -0x498(%rbp)
movq -0x498(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0x4b0(%rbp)
vmovdqa -0x4b0(%rbp), %xmm0
vmovdqa %xmm0, -0x100(%rbp)
vpmovzxbw -0x100(%rbp), %xmm0
vmovdqa -0x5f0(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x760(%rbp)
vmovdqa -0x730(%rbp), %xmm1
vmovdqa -0x750(%rbp), %xmm0
vmovdqa %xmm1, -0x280(%rbp)
vmovdqa %xmm0, -0x290(%rbp)
vmovdqa -0x280(%rbp), %xmm0
vmovdqa -0x290(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x770(%rbp)
vmovdqa -0x740(%rbp), %xmm1
vmovdqa -0x760(%rbp), %xmm0
vmovdqa %xmm1, -0x2a0(%rbp)
vmovdqa %xmm0, -0x2b0(%rbp)
vmovdqa -0x2a0(%rbp), %xmm0
vmovdqa -0x2b0(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x780(%rbp)
movq -0x770(%rbp), %rcx
movq -0x5f8(%rbp), %rax
movq %rcx, (%rax)
movq -0x780(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx)
movq -0x768(%rbp), %rdx
movq -0x5f8(%rbp), %rax
movq -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx,2)
movq -0x778(%rbp), %rdx
movq -0x5f8(%rbp), %rax
imulq $0x3, -0x600(%rbp), %rcx
movq %rdx, (%rax,%rcx)
jmp 0x3eb99
addq $0x700, %rsp            # imm = 0x700
popq %rbp
vzeroupper
retq
nopw %cs:(%rax,%rax)