// File: /workspace/github_c_makefile_star2_O0/tvlabs[P]edge264/./edge264_bitstream.c
// Function: cabac_init
static void cabac_init(Edge264Context *ctx) {
	i8x16 mul = set16(max(ctx->t.QP[0], 0) + 4096);
	i8x16 c1 = set8(1), c64 = set8(64), c126 = set8(126);
	const i8x16 *src = (i8x16 *)cabac_context_init[ctx->t.cabac_init_idc];
	for (i8x16 *dst = ctx->cabac_v; dst < ctx->cabac_v + 64; dst++, src += 2) {
		#if defined(__SSE2__)
			i16x8 sum0 = maddubs(mul, src[0]) >> 4;
			i16x8 sum1 = maddubs(mul, src[1]) >> 4;
		#elif defined(__ARM_NEON)
			i16x8 l0 = vmull_s8(vget_low_s8(mul), vget_low_s8(src[0]));
			i16x8 h0 = vmull_high_s8(mul, src[0]);
			i16x8 l1 = vmull_s8(vget_low_s8(mul), vget_low_s8(src[1]));
			i16x8 h1 = vmull_high_s8(mul, src[1]);
			i16x8 sum0 = (i16x8)vpaddq_s16(l0, h0) >> 4;
			i16x8 sum1 = (i16x8)vpaddq_s16(l1, h1) >> 4;
		#endif
		i8x16 min = minu8(packus16(sum0, sum1), c126);
		i8x16 mask = c64 > min;
		i8x16 preCtxState = maxu8(min, c1);
		i8x16 pStateIdx = preCtxState ^ mask;
		i8x16 shift = pStateIdx + pStateIdx;
		*dst = shift + shift + mask + c1; // pStateIdx << 2 | valMPS (middle bit is for transIdxLPS/MPS)
	}
	ctx->cabac[276] = 252;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x190, %rsp            # imm = 0x190
movq %rdi, -0x138(%rbp)
movq -0x138(%rbp), %rax
movsbl 0x50(%rax), %eax
movl %eax, -0x12c(%rbp)
movl $0x0, -0x130(%rbp)
movl -0x12c(%rbp), %eax
cmpl -0x130(%rbp), %eax
jle 0xae29
movl -0x12c(%rbp), %eax
movl %eax, -0x204(%rbp)
jmp 0xae35
movl -0x130(%rbp), %eax
movl %eax, -0x204(%rbp)
movl -0x204(%rbp), %eax
addl $0x1000, %eax           # imm = 0x1000
movw %ax, -0x122(%rbp)
movw -0x122(%rbp), %ax
movw %ax, -0x20a(%rbp)
movw %ax, -0x102(%rbp)
movw %ax, -0x104(%rbp)
movw %ax, -0x106(%rbp)
movw %ax, -0x108(%rbp)
movw %ax, -0x10a(%rbp)
movw %ax, -0x10c(%rbp)
movw %ax, -0x10e(%rbp)
movw %ax, -0x110(%rbp)
movzwl -0x110(%rbp), %eax
vmovd %eax, %xmm0
movzwl -0x10e(%rbp), %eax
vpinsrw $0x1, %eax, %xmm0, %xmm0
movzwl -0x10c(%rbp), %eax
vpinsrw $0x2, %eax, %xmm0, %xmm0
movzwl -0x10a(%rbp), %eax
vpinsrw $0x3, %eax, %xmm0, %xmm0
movzwl -0x108(%rbp), %eax
vpinsrw $0x4, %eax, %xmm0, %xmm0
movzwl -0x106(%rbp), %eax
vpinsrw $0x5, %eax, %xmm0, %xmm0
movzwl -0x104(%rbp), %eax
vpinsrw $0x6, %eax, %xmm0, %xmm0
movzwl -0x102(%rbp), %eax
vpinsrw $0x7, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x120(%rbp)
vmovdqa -0x120(%rbp), %xmm0
vmovdqa %xmm0, -0x150(%rbp)
movb $0x1, -0x123(%rbp)
movb -0x123(%rbp), %al
movb %al, -0x207(%rbp)
movb %al, -0x41(%rbp)
movb %al, -0x42(%rbp)
movb %al, -0x43(%rbp)
movb %al, -0x44(%rbp)
movb %al, -0x45(%rbp)
movb %al, -0x46(%rbp)
movb %al, -0x47(%rbp)
movb %al, -0x48(%rbp)
movb %al, -0x49(%rbp)
movb %al, -0x4a(%rbp)
movb %al, -0x4b(%rbp)
movb %al, -0x4c(%rbp)
movb %al, -0x4d(%rbp)
movb %al, -0x4e(%rbp)
movb %al, -0x4f(%rbp)
movb %al, -0x50(%rbp)
movzbl -0x50(%rbp), %eax
vmovd %eax, %xmm0
movzbl -0x4f(%rbp), %eax
vpinsrb $0x1, %eax, %xmm0, %xmm0
movzbl -0x4e(%rbp), %eax
vpinsrb $0x2, %eax, %xmm0, %xmm0
movzbl -0x4d(%rbp), %eax
vpinsrb $0x3, %eax, %xmm0, %xmm0
movzbl -0x4c(%rbp), %eax
vpinsrb $0x4, %eax, %xmm0, %xmm0
movzbl -0x4b(%rbp), %eax
vpinsrb $0x5, %eax, %xmm0, %xmm0
movzbl -0x4a(%rbp), %eax
vpinsrb $0x6, %eax, %xmm0, %xmm0
movzbl -0x49(%rbp), %eax
vpinsrb $0x7, %eax, %xmm0, %xmm0
movzbl -0x48(%rbp), %eax
vpinsrb $0x8, %eax, %xmm0, %xmm0
movzbl -0x47(%rbp), %eax
vpinsrb $0x9, %eax, %xmm0, %xmm0
movzbl -0x46(%rbp), %eax
vpinsrb $0xa, %eax, %xmm0, %xmm0
movzbl -0x45(%rbp), %eax
vpinsrb $0xb, %eax, %xmm0, %xmm0
movzbl -0x44(%rbp), %eax
vpinsrb $0xc, %eax, %xmm0, %xmm0
movzbl -0x43(%rbp), %eax
vpinsrb $0xd, %eax, %xmm0, %xmm0
movzbl -0x42(%rbp), %eax
vpinsrb $0xe, %eax, %xmm0, %xmm0
movzbl -0x41(%rbp), %eax
vpinsrb $0xf, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x60(%rbp)
vmovdqa -0x60(%rbp), %xmm0
vmovdqa %xmm0, -0x160(%rbp)
movb $0x40, -0x124(%rbp)
movb -0x124(%rbp), %al
movb %al, -0x206(%rbp)
movb %al, -0x21(%rbp)
movb %al, -0x22(%rbp)
movb %al, -0x23(%rbp)
movb %al, -0x24(%rbp)
movb %al, -0x25(%rbp)
movb %al, -0x26(%rbp)
movb %al, -0x27(%rbp)
movb %al, -0x28(%rbp)
movb %al, -0x29(%rbp)
movb %al, -0x2a(%rbp)
movb %al, -0x2b(%rbp)
movb %al, -0x2c(%rbp)
movb %al, -0x2d(%rbp)
movb %al, -0x2e(%rbp)
movb %al, -0x2f(%rbp)
movb %al, -0x30(%rbp)
movzbl -0x30(%rbp), %eax
vmovd %eax, %xmm0
movzbl -0x2f(%rbp), %eax
vpinsrb $0x1, %eax, %xmm0, %xmm0
movzbl -0x2e(%rbp), %eax
vpinsrb $0x2, %eax, %xmm0, %xmm0
movzbl -0x2d(%rbp), %eax
vpinsrb $0x3, %eax, %xmm0, %xmm0
movzbl -0x2c(%rbp), %eax
vpinsrb $0x4, %eax, %xmm0, %xmm0
movzbl -0x2b(%rbp), %eax
vpinsrb $0x5, %eax, %xmm0, %xmm0
movzbl -0x2a(%rbp), %eax
vpinsrb $0x6, %eax, %xmm0, %xmm0
movzbl -0x29(%rbp), %eax
vpinsrb $0x7, %eax, %xmm0, %xmm0
movzbl -0x28(%rbp), %eax
vpinsrb $0x8, %eax, %xmm0, %xmm0
movzbl -0x27(%rbp), %eax
vpinsrb $0x9, %eax, %xmm0, %xmm0
movzbl -0x26(%rbp), %eax
vpinsrb $0xa, %eax, %xmm0, %xmm0
movzbl -0x25(%rbp), %eax
vpinsrb $0xb, %eax, %xmm0, %xmm0
movzbl -0x24(%rbp), %eax
vpinsrb $0xc, %eax, %xmm0, %xmm0
movzbl -0x23(%rbp), %eax
vpinsrb $0xd, %eax, %xmm0, %xmm0
movzbl -0x22(%rbp), %eax
vpinsrb $0xe, %eax, %xmm0, %xmm0
movzbl -0x21(%rbp), %eax
vpinsrb $0xf, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x40(%rbp)
vmovdqa -0x40(%rbp), %xmm0
vmovdqa %xmm0, -0x170(%rbp)
movb $0x7e, -0x125(%rbp)
movb -0x125(%rbp), %al
movb %al, -0x205(%rbp)
movb %al, -0x1(%rbp)
movb %al, -0x2(%rbp)
movb %al, -0x3(%rbp)
movb %al, -0x4(%rbp)
movb %al, -0x5(%rbp)
movb %al, -0x6(%rbp)
movb %al, -0x7(%rbp)
movb %al, -0x8(%rbp)
movb %al, -0x9(%rbp)
movb %al, -0xa(%rbp)
movb %al, -0xb(%rbp)
movb %al, -0xc(%rbp)
movb %al, -0xd(%rbp)
movb %al, -0xe(%rbp)
movb %al, -0xf(%rbp)
movb %al, -0x10(%rbp)
movzbl -0x10(%rbp), %eax
vmovd %eax, %xmm0
movzbl -0xf(%rbp), %eax
vpinsrb $0x1, %eax, %xmm0, %xmm0
movzbl -0xe(%rbp), %eax
vpinsrb $0x2, %eax, %xmm0, %xmm0
movzbl -0xd(%rbp), %eax
vpinsrb $0x3, %eax, %xmm0, %xmm0
movzbl -0xc(%rbp), %eax
vpinsrb $0x4, %eax, %xmm0, %xmm0
movzbl -0xb(%rbp), %eax
vpinsrb $0x5, %eax, %xmm0, %xmm0
movzbl -0xa(%rbp), %eax
vpinsrb $0x6, %eax, %xmm0, %xmm0
movzbl -0x9(%rbp), %eax
vpinsrb $0x7, %eax, %xmm0, %xmm0
movzbl -0x8(%rbp), %eax
vpinsrb $0x8, %eax, %xmm0, %xmm0
movzbl -0x7(%rbp), %eax
vpinsrb $0x9, %eax, %xmm0, %xmm0
movzbl -0x6(%rbp), %eax
vpinsrb $0xa, %eax, %xmm0, %xmm0
movzbl -0x5(%rbp), %eax
vpinsrb $0xb, %eax, %xmm0, %xmm0
movzbl -0x4(%rbp), %eax
vpinsrb $0xc, %eax, %xmm0, %xmm0
movzbl -0x3(%rbp), %eax
vpinsrb $0xd, %eax, %xmm0, %xmm0
movzbl -0x2(%rbp), %eax
vpinsrb $0xe, %eax, %xmm0, %xmm0
movzbl -0x1(%rbp), %eax
vpinsrb $0xf, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x20(%rbp)
vmovdqa -0x20(%rbp), %xmm0
vmovdqa %xmm0, -0x180(%rbp)
movq -0x138(%rbp), %rax
movsbq 0x2c(%rax), %rcx
movq 0xcbd88(%rip), %rax     # 0xd6f78
shlq $0xb, %rcx
addq %rcx, %rax
movq %rax, -0x188(%rbp)
movq -0x138(%rbp), %rax
addq $0x730, %rax            # imm = 0x730
movq %rax, -0x190(%rbp)
movq -0x190(%rbp), %rax
movq -0x138(%rbp), %rcx
addq $0x730, %rcx            # imm = 0x730
addq $0x400, %rcx            # imm = 0x400
cmpq %rcx, %rax
jae 0xb402
vmovdqa -0x150(%rbp), %xmm1
movq -0x188(%rbp), %rax
vmovdqa (%rax), %xmm0
vmovdqa %xmm1, -0xd0(%rbp)
vmovdqa %xmm0, -0xe0(%rbp)
vmovdqa -0xd0(%rbp), %xmm0
vmovdqa -0xe0(%rbp), %xmm1
vpmaddubsw %xmm1, %xmm0, %xmm0
vpsraw $0x4, %xmm0, %xmm0
vmovdqa %xmm0, -0x1a0(%rbp)
vmovdqa -0x150(%rbp), %xmm1
movq -0x188(%rbp), %rax
vmovdqa 0x10(%rax), %xmm0
vmovdqa %xmm1, -0xf0(%rbp)
vmovdqa %xmm0, -0x100(%rbp)
vmovdqa -0xf0(%rbp), %xmm0
vmovdqa -0x100(%rbp), %xmm1
vpmaddubsw %xmm1, %xmm0, %xmm0
vpsraw $0x4, %xmm0, %xmm0
vmovdqa %xmm0, -0x1b0(%rbp)
vmovdqa -0x1a0(%rbp), %xmm1
vmovdqa -0x1b0(%rbp), %xmm0
vmovdqa %xmm1, -0xb0(%rbp)
vmovdqa %xmm0, -0xc0(%rbp)
vmovdqa -0xb0(%rbp), %xmm0
vmovdqa -0xc0(%rbp), %xmm1
vpackuswb %xmm1, %xmm0, %xmm1
vmovdqa -0x180(%rbp), %xmm0
vmovdqa %xmm1, -0x90(%rbp)
vmovdqa %xmm0, -0xa0(%rbp)
vmovdqa -0x90(%rbp), %xmm0
vmovdqa -0xa0(%rbp), %xmm1
vpminub %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x1c0(%rbp)
vmovdqa -0x170(%rbp), %xmm0
vmovdqa -0x1c0(%rbp), %xmm1
vpcmpgtb %xmm1, %xmm0, %k0
vpmovm2b %k0, %xmm0
vmovdqa %xmm0, -0x1d0(%rbp)
vmovdqa -0x1c0(%rbp), %xmm1
vmovdqa -0x160(%rbp), %xmm0
vmovdqa %xmm1, -0x70(%rbp)
vmovdqa %xmm0, -0x80(%rbp)
vmovdqa -0x70(%rbp), %xmm0
vmovdqa -0x80(%rbp), %xmm1
vpmaxub %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x1e0(%rbp)
vmovdqa -0x1e0(%rbp), %xmm0
vpxor -0x1d0(%rbp), %xmm0, %xmm0
vmovdqa %xmm0, -0x1f0(%rbp)
vmovdqa -0x1f0(%rbp), %xmm0
vpaddb -0x1f0(%rbp), %xmm0, %xmm0
vmovdqa %xmm0, -0x200(%rbp)
vmovdqa -0x200(%rbp), %xmm0
vpaddb -0x200(%rbp), %xmm0, %xmm0
vpaddb -0x1d0(%rbp), %xmm0, %xmm0
vpaddb -0x160(%rbp), %xmm0, %xmm0
movq -0x190(%rbp), %rax
vmovdqa %xmm0, (%rax)
movq -0x190(%rbp), %rax
addq $0x10, %rax
movq %rax, -0x190(%rbp)
movq -0x188(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x188(%rbp)
jmp 0xb212
movq -0x138(%rbp), %rax
movb $-0x4, 0x844(%rax)
addq $0x190, %rsp            # imm = 0x190
popq %rbp
retq
nopl (%rax)