// File: /workspace/github_c_makefile_star2_O0/tvlabs[P]edge264/./edge264_slice.c
// Function: parse_B_sub_mb_cabac
static void CAFUNC(parse_B_sub_mb) {
	
	// initializations for sub_mb_type
	log_mb(ctx, "    sub_mb_types: [");
	unsigned mvd_flags = 0;
	mb->f.inter_eqs_s = 0;
	for (int i8x8 = 0; i8x8 < 4; i8x8++) {
		int i4x4 = i8x8 * 4;
		#if !CABAC
			int sub_mb_type = get_ue16(&ctx->t._gb, 12);
			log_mb(ctx, (i8x8 < 3) ? "%u," : "%u]\n", sub_mb_type);
		#endif
		if (CACOND(sub_mb_type == 0, !get_ae(ctx, 36))) { // B_Direct_8x8
			mb->f.inter_eqs[i8x8] = 0x1b;
			if (!ctx->t.direct_8x8_inference_flag)
				ctx->transform_8x8_mode_flag = 0;
			#if CABAC
				log_mb(ctx, (i8x8 < 3) ? "0," : "0]\n");
			#endif
		} else {
			#if !CABAC
				static const uint32_t sub_mb_type2flags[13] = {0, 0x00001, 0x10000,
					0x10001, 0x00005, 0x00003, 0x50000, 0x30000, 0x50005, 0x30003,
					0x0000f, 0xf0000, 0xf000f};
				static const uint8_t sub_mb_type2eqs[13] = {0, 0x1b, 0x1b, 0x1b,
					0x11, 0x0a, 0x11, 0x0a, 0x11, 0x0a, 0, 0, 0};
				mvd_flags |= sub_mb_type2flags[sub_mb_type] << i4x4;
				mb->f.inter_eqs[i8x8] = sub_mb_type2eqs[sub_mb_type];
			#else
				int sub = 2;
				if (!get_ae(ctx, 37) || (sub = get_ae(ctx, 38),
					sub += sub + get_ae(ctx, 39),
					sub += sub + get_ae(ctx, 39), sub - 4 < 2u))
				{
					sub += sub + get_ae(ctx, 39);
				}
				static const uint32_t sub2flags[12] = {0x10001, 0x00005, 0x00003, 0x50000,
					0x00001, 0x10000, 0xf0000, 0xf000f, 0x30000, 0x50005, 0x30003, 0x0000f};
				static const uint8_t sub2eqs[12] = {0x1b, 0x11, 0x0a, 0x11, 0x1b,
					0x1b, 0, 0, 0x0a, 0x11, 0x0a, 0};
				mvd_flags |= sub2flags[sub] << i4x4;
				mb->f.inter_eqs[i8x8] = sub2eqs[sub];
				static const uint8_t sub2mb_type[13] = {3, 4, 5, 6, 1, 2, 11, 12, 7, 8, 9, 10, 0};
				log_mb(ctx, (i8x8 < 3) ? "%u," : "%u]\n", sub2mb_type[sub]);
			#endif
			if (CACOND(0x015f & 1 << sub_mb_type, 0x23b & 1 << sub)) { // 8xN
				ctx->unavail4x4[i4x4] = (ctx->unavail4x4[i4x4] & 11) | (ctx->unavail4x4[i4x4 + 1] & 4);
				ctx->unavail4x4[i4x4 + 2] |= 4;
				ctx->refIdx4x4_C[i4x4] = 0x0d63 >> i4x4 & 15;
				ctx->mvs_C[i4x4] = ctx->mvs_C[i4x4 + 1];
				if (CACOND(0x1ff0 & 1 << sub_mb_type, 0xfce & 1 << sub))
					ctx->transform_8x8_mode_flag = 0;
			} else { // 4xN
				ctx->refIdx4x4_C[i4x4] = 0xdc32 >> i4x4 & 15;
				ctx->mvs_C[i4x4] = ctx->mvs_B[i4x4 + 1];
				ctx->transform_8x8_mode_flag = 0;
			}
		}
	}
	
	// initialize direct prediction then parse all ref_idx values
	unsigned direct_flags = (~((mvd_flags & 0xffff) | mvd_flags >> 16) & 0x1111) * 0xf000f;
	if (direct_flags != 0)
		decode_direct_mv_pred(ctx, direct_flags);
	if (mvd_flags == 0) // yes there are streams that use 4 Direct8x8 instead of one Direct16x16
		CAJUMP(parse_inter_residual);
	CACALL(parse_ref_idx, 0x100 | mvd_flags2ref_idx(mvd_flags));
	
	// load neighbouring refIdx values and shuffle them into A/B/C/D
	i8x16 BC = (i64x2){(int64_t)mbB->refIdx_l, (int64_t)mbC->refIdx_l};
	i8x16 Ar = (i64x2){(int64_t)mbA->refIdx_l, (int64_t)mb->refIdx_l};
	i8x16 BCAr0 = unziplo32(BC, Ar);
	i8x16 BCAr1 = unziphi32(BC, Ar);
	i8x16 r0 = shuffle(BCAr0, ((i8x16){12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15}));
	i8x16 r1 = shuffle(BCAr1, ((i8x16){12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15}));
	i8x16 A0 = shuffle(BCAr0, ((i8x16){9, 12, 9, 12, 12, 13, 12, 13, 11, 14, 11, 14, 14, 15, 14, 15}));
	i8x16 A1 = shuffle(BCAr1, ((i8x16){9, 12, 9, 12, 12, 13, 12, 13, 11, 14, 11, 14, 14, 15, 14, 15}));
	i8x16 B0 = shuffle(BCAr0, ((i8x16){2, 2, 12, 12, 3, 3, 13, 13, 12, 12, 14, 14, 13, 13, 15, 15}));
	i8x16 B1 = shuffle(BCAr1, ((i8x16){2, 2, 12, 12, 3, 3, 13, 13, 12, 12, 14, 14, 13, 13, 15, 15}));
	i8x16 C0 = shuffle(BCAr0, ctx->refIdx4x4_C_v);
	i8x16 C1 = shuffle(BCAr1, ctx->refIdx4x4_C_v);
	i8x16 D0 = shuffle(BCAr0, ((i8x16){-1, 2, 9, 12, 2, 3, 12, 13, 9, 12, 11, 14, 12, 13, 14, 15}));
	i8x16 D1 = shuffle(BCAr1, ((i8x16){-1, 2, 9, 12, 2, 3, 12, 13, 9, 12, 11, 14, 12, 13, 14, 15}));
	D0[0] = mbD->refIdx[3];
	D1[0] = mbD->refIdx[7];
	
	// combine them into a vector of 4-bit equality masks
	union { int8_t q[32]; i8x16 v[2]; } refIdx4x4_eq;
	i8x16 u = ctx->unavail4x4_v[0];
	i8x16 uC = u & 4;
	refIdx4x4_eq.v[0] = (uC - ifelse_mask(uC==4, r0==D0, r0==C0) * 2 - (r0==B0)) * 2 - (r0==A0 | u==14);
	refIdx4x4_eq.v[1] = (uC - ifelse_mask(uC==4, r1==D1, r1==C1) * 2 - (r1==B1)) * 2 - (r1==A1 | u==14);
	
	// loop on mvs
	log_mb(ctx, "    mvds: [");
	do {
		int i = __builtin_ctz(mvd_flags);
		int i4x4 = i & 15;
		mb->mvs_s[i] = 0; // value pointed to when A/B/C/D are unavailable
		uint8_t *absMvd_p = mb->absMvd + (i & 16) * 2;
		i16x8 mvd = CACALL(parse_mvd_pair, absMvd_p, i4x4);
		
		// branch on equality mask
		int32_t *mvs_p = mb->mvs_s + (i & 16);
		i16x8 mvp;
		int eq = refIdx4x4_eq.q[i];
		int mvs_DC = eq & 8 ? ctx->mvs_D[i4x4] : ctx->mvs_C[i4x4];
		if (__builtin_expect(0xe9e9 >> eq & 1, 1)) {
			i16x8 mvA = (i32x4){mvs_p[ctx->mvs_A[i4x4]]};
			i16x8 mvB = (i32x4){mvs_p[ctx->mvs_B[i4x4]]};
			i16x8 mvDC = (i32x4){mvs_p[mvs_DC]};
			mvp = median16(mvA, mvB, mvDC);
		} else {
			int mvs_AB = eq & 1 ? ctx->mvs_A[i4x4] : ctx->mvs_B[i4x4];
			mvp = (i32x4){mvs_p[eq & 4 ? mvs_DC : mvs_AB]};
		}
		
		// broadcast absMvd and mvs to memory then call decoding
		static const int8_t masks[16] = {0, 15, 10, 5, 12, 3, 0, 0, 8, 0, 0, 0, 4, 0, 2, 1};
		static const int8_t widths[16] = {0, 8, 4, 4, 8, 8, 0, 0, 4, 0, 0, 0, 4, 0, 4, 4};
		static const int8_t heights[16] = {0, 8, 8, 8, 4, 4, 0, 0, 4, 0, 0, 0, 4, 0, 4, 4};
		int type = mvd_flags >> (i & -4) & 15;
		int m = masks[type];
		int i8x8 = i >> 2;
		i16x8 bits = {1, 2, 4, 8};
		i16x8 absMvd_mask = ((i16x8){m, m, m, m, m, m, m, m} & bits) == bits;
		i16x8 absMvd_old = (i64x2){mb->absMvd_l[i8x8]};
		i16x8 mvs_mask = ziplo16(absMvd_mask, absMvd_mask);
		i32x4 mv = mvp + mvd;
		i16x8 mvs = broadcast32(mv, 0);
		mb->absMvd_l[i8x8] = ((i64x2)ifelse_mask(absMvd_mask, pack_absMvd(mvd), absMvd_old))[0];
		mb->mvs_v[i8x8] = ifelse_mask(mvs_mask, mvs, mb->mvs_v[i8x8]);
		decode_inter(ctx, i, widths[type], heights[type]);
	} while (mvd_flags &= mvd_flags - 1);
	log_mb(ctx, "]\n");
	CAJUMP(parse_inter_residual);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x7e0, %rsp            # imm = 0x7E0
movq %rdi, -0x478(%rbp)
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
cmpq $0x1000, %rax           # imm = 0x1000
jae 0xb1418
movq -0x478(%rbp), %rdi
addq $0x1cd2, %rdi           # imm = 0x1CD2
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %eax
cltq
addq %rax, %rdi
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
movl $0x1000, %esi           # imm = 0x1000
subq %rax, %rsi
leaq 0x1f550(%rip), %rdx     # 0xd0948
movb $0x0, %al
callq 0x7070
movl %eax, %edx
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x1cd0(%rax)
movl $0x0, -0x47c(%rbp)
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
movl $0x0, 0x2c(%rax)
movl $0x0, -0x480(%rbp)
cmpl $0x4, -0x480(%rbp)
jge 0xb1895
movl -0x480(%rbp), %eax
shll $0x2, %eax
movl %eax, -0x484(%rbp)
movq -0x478(%rbp), %rdi
movl $0x24, %esi
callq 0xae5c0
cmpl $0x0, %eax
jne 0xb153b
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
movslq -0x480(%rbp), %rcx
movb $0x1b, 0x2c(%rax,%rcx)
movq -0x478(%rbp), %rax
cmpb $0x0, 0x2b(%rax)
jne 0xb14ac
movq -0x478(%rbp), %rax
movb $0x0, 0xdc0(%rax)
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
cmpq $0x1000, %rax           # imm = 0x1000
jae 0xb1536
movq -0x478(%rbp), %rdi
addq $0x1cd2, %rdi           # imm = 0x1CD2
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %eax
cltq
addq %rax, %rdi
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
movl $0x1000, %esi           # imm = 0x1000
subq %rax, %rsi
movl -0x480(%rbp), %ecx
leaq 0x1f6af(%rip), %rdx     # 0xd0bb7
leaq 0x1f6a5(%rip), %rax     # 0xd0bb4
cmpl $0x3, %ecx
cmovlq %rax, %rdx
movb $0x0, %al
callq 0x7070
movl %eax, %edx
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x1cd0(%rax)
jmp 0xb187f
movl $0x2, -0x488(%rbp)
movq -0x478(%rbp), %rdi
movl $0x25, %esi
callq 0xae5c0
cmpl $0x0, %eax
je 0xb15ea
movq -0x478(%rbp), %rdi
movl $0x26, %esi
callq 0xae5c0
movl %eax, -0x488(%rbp)
movl -0x488(%rbp), %eax
movl %eax, -0x7b8(%rbp)
movq -0x478(%rbp), %rdi
movl $0x27, %esi
callq 0xae5c0
movl %eax, %ecx
movl -0x7b8(%rbp), %eax
addl %ecx, %eax
addl -0x488(%rbp), %eax
movl %eax, -0x488(%rbp)
movl -0x488(%rbp), %eax
movl %eax, -0x7b4(%rbp)
movq -0x478(%rbp), %rdi
movl $0x27, %esi
callq 0xae5c0
movl %eax, %ecx
movl -0x7b4(%rbp), %eax
addl %ecx, %eax
addl -0x488(%rbp), %eax
movl %eax, -0x488(%rbp)
movl -0x488(%rbp), %eax
subl $0x4, %eax
cmpl $0x2, %eax
jae 0xb161d
movl -0x488(%rbp), %eax
movl %eax, -0x7bc(%rbp)
movq -0x478(%rbp), %rdi
movl $0x27, %esi
callq 0xae5c0
movl %eax, %ecx
movl -0x7bc(%rbp), %eax
addl %ecx, %eax
addl -0x488(%rbp), %eax
movl %eax, -0x488(%rbp)
movslq -0x488(%rbp), %rcx
leaq 0x1e295(%rip), %rax     # 0xcf8c0
movl (%rax,%rcx,4), %eax
movl -0x484(%rbp), %ecx
shll %cl, %eax
orl -0x47c(%rbp), %eax
movl %eax, -0x47c(%rbp)
movslq -0x488(%rbp), %rcx
leaq 0x1e2a0(%rip), %rax     # 0xcf8f0
movb (%rax,%rcx), %dl
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
movslq -0x480(%rbp), %rcx
movb %dl, 0x2c(%rax,%rcx)
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
cmpq $0x1000, %rax           # imm = 0x1000
jae 0xb170c
movq -0x478(%rbp), %rdi
addq $0x1cd2, %rdi           # imm = 0x1CD2
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %eax
cltq
addq %rax, %rdi
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
movl $0x1000, %esi           # imm = 0x1000
subq %rax, %rsi
movl -0x480(%rbp), %ecx
leaq 0x1f421(%rip), %rdx     # 0xd0aed
leaq 0x1f474(%rip), %rax     # 0xd0b47
cmpl $0x3, %ecx
cmovlq %rax, %rdx
movslq -0x488(%rbp), %rcx
leaq 0x1e214(%rip), %rax     # 0xcf8fc
movzbl (%rax,%rcx), %ecx
movb $0x0, %al
callq 0x7070
movl %eax, %edx
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x1cd0(%rax)
movl -0x488(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
andl $0x23b, %eax            # imm = 0x23B
cmpl $0x0, %eax
je 0xb1819
movq -0x478(%rbp), %rax
movslq -0x484(%rbp), %rcx
movsbl 0x6d0(%rax,%rcx), %eax
andl $0xb, %eax
movq -0x478(%rbp), %rcx
movl -0x484(%rbp), %edx
addl $0x1, %edx
movslq %edx, %rdx
movsbl 0x6d0(%rcx,%rdx), %ecx
andl $0x4, %ecx
orl %ecx, %eax
movb %al, %dl
movq -0x478(%rbp), %rax
movslq -0x484(%rbp), %rcx
movb %dl, 0x6d0(%rax,%rcx)
movq -0x478(%rbp), %rax
movl -0x484(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movsbl 0x6d0(%rax,%rcx), %edx
orl $0x4, %edx
movb %dl, 0x6d0(%rax,%rcx)
movl -0x484(%rbp), %ecx
movl $0xd63, %eax            # imm = 0xD63
sarl %cl, %eax
andl $0xf, %eax
movb %al, %dl
movq -0x478(%rbp), %rax
movslq -0x484(%rbp), %rcx
movb %dl, 0xc20(%rax,%rcx)
movq -0x478(%rbp), %rax
movl -0x484(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl 0xd40(%rax,%rcx,4), %edx
movq -0x478(%rbp), %rax
movslq -0x484(%rbp), %rcx
movl %edx, 0xd40(%rax,%rcx,4)
movl -0x488(%rbp), %ecx
movl $0x1, %eax
shll %cl, %eax
andl $0xfce, %eax            # imm = 0xFCE
cmpl $0x0, %eax
je 0xb1817
movq -0x478(%rbp), %rax
movb $0x0, 0xdc0(%rax)
jmp 0xb187d
movl -0x484(%rbp), %ecx
movl $0xdc32, %eax           # imm = 0xDC32
sarl %cl, %eax
andl $0xf, %eax
movb %al, %dl
movq -0x478(%rbp), %rax
movslq -0x484(%rbp), %rcx
movb %dl, 0xc20(%rax,%rcx)
movq -0x478(%rbp), %rax
movl -0x484(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl 0xd00(%rax,%rcx,4), %edx
movq -0x478(%rbp), %rax
movslq -0x484(%rbp), %rcx
movl %edx, 0xd40(%rax,%rcx,4)
movq -0x478(%rbp), %rax
movb $0x0, 0xdc0(%rax)
jmp 0xb187f
jmp 0xb1881
movl -0x480(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x480(%rbp)
jmp 0xb1441
movl -0x47c(%rbp), %eax
andl $0xffff, %eax           # imm = 0xFFFF
movl -0x47c(%rbp), %ecx
shrl $0x10, %ecx
orl %ecx, %eax
xorl $-0x1, %eax
andl $0x1111, %eax           # imm = 0x1111
imull $0xf000f, %eax, %eax    # imm = 0xF000F
movl %eax, -0x48c(%rbp)
cmpl $0x0, -0x48c(%rbp)
je 0xb18da
movq -0x478(%rbp), %rdi
movl -0x48c(%rbp), %esi
callq 0xa1080
cmpl $0x0, -0x47c(%rbp)
jne 0xb18f4
movq -0x478(%rbp), %rdi
callq 0xb0080
jmp 0xb26d8
movq -0x478(%rbp), %rdi
movl -0x47c(%rbp), %eax
movl %eax, -0xc(%rbp)
movl -0xc(%rbp), %eax
movl %eax, -0x4(%rbp)
movl $0x11111111, -0x8(%rbp) # imm = 0x11111111
movl -0x4(%rbp), %eax
movl -0x8(%rbp), %ecx
pextl %ecx, %eax, %esi
orl $0x100, %esi            # imm = 0x100
callq 0xaf5c0
movq -0x478(%rbp), %rcx
movq 0x690(%rcx), %rax
movq 0x698(%rcx), %rcx
vmovq 0x10(%rcx), %xmm1
vmovq 0x10(%rax), %xmm0
vpunpcklqdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovdqa %xmm0, -0x4b0(%rbp)
vmovdqa -0x4b0(%rbp), %xmm0
vmovdqa %xmm0, -0x4a0(%rbp)
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rcx
movq 0x688(%rax), %rax
vmovq 0x10(%rcx), %xmm1
vmovq 0x10(%rax), %xmm0
vpunpcklqdq %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0]
vmovdqa %xmm0, -0x4d0(%rbp)
vmovdqa -0x4d0(%rbp), %xmm0
vmovdqa %xmm0, -0x4c0(%rbp)
vmovaps -0x4a0(%rbp), %xmm0
vmovaps -0x4c0(%rbp), %xmm1
vshufps $0x88, %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0,2],xmm1[0,2]
vmovaps %xmm0, -0x4e0(%rbp)
vmovaps -0x4a0(%rbp), %xmm0
vmovaps -0x4c0(%rbp), %xmm1
vshufps $0xdd, %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[1,3],xmm1[1,3]
vmovaps %xmm0, -0x4f0(%rbp)
vmovdqa -0x4e0(%rbp), %xmm2
vmovdqa 0x178b9(%rip), %xmm0    # 0xc92a0
vmovdqa %xmm0, -0x510(%rbp)
vmovdqa -0x510(%rbp), %xmm1
vmovdqa %xmm2, -0x340(%rbp)
vmovdqa %xmm1, -0x350(%rbp)
vmovdqa -0x340(%rbp), %xmm2
vmovdqa -0x350(%rbp), %xmm1
vmovdqa %xmm2, -0x320(%rbp)
vmovdqa %xmm1, -0x330(%rbp)
vmovdqa -0x320(%rbp), %xmm1
vmovdqa -0x330(%rbp), %xmm2
vpshufb %xmm2, %xmm1, %xmm1
vmovdqa %xmm1, -0x500(%rbp)
vmovdqa -0x4f0(%rbp), %xmm1
vmovdqa %xmm0, -0x530(%rbp)
vmovdqa -0x530(%rbp), %xmm0
vmovdqa %xmm1, -0x360(%rbp)
vmovdqa %xmm0, -0x370(%rbp)
vmovdqa -0x360(%rbp), %xmm1
vmovdqa -0x370(%rbp), %xmm0
vmovdqa %xmm1, -0x300(%rbp)
vmovdqa %xmm0, -0x310(%rbp)
vmovdqa -0x300(%rbp), %xmm0
vmovdqa -0x310(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x520(%rbp)
vmovdqa -0x4e0(%rbp), %xmm2
vmovdqa 0x177f7(%rip), %xmm0    # 0xc92b0
vmovdqa %xmm0, -0x550(%rbp)
vmovdqa -0x550(%rbp), %xmm1
vmovdqa %xmm2, -0x380(%rbp)
vmovdqa %xmm1, -0x390(%rbp)
vmovdqa -0x380(%rbp), %xmm2
vmovdqa -0x390(%rbp), %xmm1
vmovdqa %xmm2, -0x2e0(%rbp)
vmovdqa %xmm1, -0x2f0(%rbp)
vmovdqa -0x2e0(%rbp), %xmm1
vmovdqa -0x2f0(%rbp), %xmm2
vpshufb %xmm2, %xmm1, %xmm1
vmovdqa %xmm1, -0x540(%rbp)
vmovdqa -0x4f0(%rbp), %xmm1
vmovdqa %xmm0, -0x570(%rbp)
vmovdqa -0x570(%rbp), %xmm0
vmovdqa %xmm1, -0x3a0(%rbp)
vmovdqa %xmm0, -0x3b0(%rbp)
vmovdqa -0x3a0(%rbp), %xmm1
vmovdqa -0x3b0(%rbp), %xmm0
vmovdqa %xmm1, -0x2c0(%rbp)
vmovdqa %xmm0, -0x2d0(%rbp)
vmovdqa -0x2c0(%rbp), %xmm0
vmovdqa -0x2d0(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x560(%rbp)
vmovdqa -0x4e0(%rbp), %xmm2
vmovdqa 0x17735(%rip), %xmm0    # 0xc92c0
vmovdqa %xmm0, -0x590(%rbp)
vmovdqa -0x590(%rbp), %xmm1
vmovdqa %xmm2, -0x3c0(%rbp)
vmovdqa %xmm1, -0x3d0(%rbp)
vmovdqa -0x3c0(%rbp), %xmm2
vmovdqa -0x3d0(%rbp), %xmm1
vmovdqa %xmm2, -0x2a0(%rbp)
vmovdqa %xmm1, -0x2b0(%rbp)
vmovdqa -0x2a0(%rbp), %xmm1
vmovdqa -0x2b0(%rbp), %xmm2
vpshufb %xmm2, %xmm1, %xmm1
vmovdqa %xmm1, -0x580(%rbp)
vmovdqa -0x4f0(%rbp), %xmm1
vmovdqa %xmm0, -0x5b0(%rbp)
vmovdqa -0x5b0(%rbp), %xmm0
vmovdqa %xmm1, -0x3e0(%rbp)
vmovdqa %xmm0, -0x3f0(%rbp)
vmovdqa -0x3e0(%rbp), %xmm1
vmovdqa -0x3f0(%rbp), %xmm0
vmovdqa %xmm1, -0x280(%rbp)
vmovdqa %xmm0, -0x290(%rbp)
vmovdqa -0x280(%rbp), %xmm0
vmovdqa -0x290(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x5a0(%rbp)
vmovdqa -0x4e0(%rbp), %xmm1
movq -0x478(%rbp), %rax
vmovdqa 0xc20(%rax), %xmm0
vmovdqa %xmm1, -0x400(%rbp)
vmovdqa %xmm0, -0x410(%rbp)
vmovdqa -0x400(%rbp), %xmm1
vmovdqa -0x410(%rbp), %xmm0
vmovdqa %xmm1, -0x260(%rbp)
vmovdqa %xmm0, -0x270(%rbp)
vmovdqa -0x260(%rbp), %xmm0
vmovdqa -0x270(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x5c0(%rbp)
vmovdqa -0x4f0(%rbp), %xmm1
movq -0x478(%rbp), %rax
vmovdqa 0xc20(%rax), %xmm0
vmovdqa %xmm1, -0x420(%rbp)
vmovdqa %xmm0, -0x430(%rbp)
vmovdqa -0x420(%rbp), %xmm1
vmovdqa -0x430(%rbp), %xmm0
vmovdqa %xmm1, -0x240(%rbp)
vmovdqa %xmm0, -0x250(%rbp)
vmovdqa -0x240(%rbp), %xmm0
vmovdqa -0x250(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x5d0(%rbp)
vmovdqa -0x4e0(%rbp), %xmm2
vmovdqa 0x175ab(%rip), %xmm0    # 0xc92d0
vmovdqa %xmm0, -0x5f0(%rbp)
vmovdqa -0x5f0(%rbp), %xmm1
vmovdqa %xmm2, -0x440(%rbp)
vmovdqa %xmm1, -0x450(%rbp)
vmovdqa -0x440(%rbp), %xmm2
vmovdqa -0x450(%rbp), %xmm1
vmovdqa %xmm2, -0x220(%rbp)
vmovdqa %xmm1, -0x230(%rbp)
vmovdqa -0x220(%rbp), %xmm1
vmovdqa -0x230(%rbp), %xmm2
vpshufb %xmm2, %xmm1, %xmm1
vmovdqa %xmm1, -0x5e0(%rbp)
vmovdqa -0x4f0(%rbp), %xmm1
vmovdqa %xmm0, -0x610(%rbp)
vmovdqa -0x610(%rbp), %xmm0
vmovdqa %xmm1, -0x460(%rbp)
vmovdqa %xmm0, -0x470(%rbp)
vmovdqa -0x460(%rbp), %xmm1
vmovdqa -0x470(%rbp), %xmm0
vmovdqa %xmm1, -0x200(%rbp)
vmovdqa %xmm0, -0x210(%rbp)
vmovdqa -0x200(%rbp), %xmm0
vmovdqa -0x210(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x600(%rbp)
movq -0x478(%rbp), %rax
movq 0x6a0(%rax), %rax
movb 0x13(%rax), %al
movb %al, -0x5e0(%rbp)
movq -0x478(%rbp), %rax
movq 0x6a0(%rax), %rax
movb 0x17(%rax), %al
movb %al, -0x600(%rbp)
movq -0x478(%rbp), %rax
vmovdqa 0x6d0(%rax), %xmm0
vmovdqa %xmm0, -0x640(%rbp)
vmovdqa -0x640(%rbp), %xmm0
vmovdqa 0x174a4(%rip), %xmm1    # 0xc92e0
vpand %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x650(%rbp)
vmovdqa -0x650(%rbp), %xmm0
vmovdqa -0x500(%rbp), %xmm2
vmovdqa -0x5c0(%rbp), %xmm3
vpcmpeqb %xmm3, %xmm2, %xmm4
vmovdqa -0x5e0(%rbp), %xmm3
vpcmpeqb %xmm3, %xmm2, %xmm3
vpcmpeqb %xmm1, %xmm0, %xmm2
vmovdqa %xmm4, -0x90(%rbp)
vmovdqa %xmm3, -0xa0(%rbp)
vmovdqa %xmm2, -0xb0(%rbp)
vmovdqa -0x90(%rbp), %xmm2
vmovdqa -0xa0(%rbp), %xmm3
vmovdqa -0xb0(%rbp), %xmm4
vpblendvb %xmm4, %xmm3, %xmm2, %xmm2
vpaddb %xmm2, %xmm2, %xmm2
vpsubb %xmm2, %xmm0, %xmm0
vmovdqa -0x500(%rbp), %xmm2
vmovdqa -0x580(%rbp), %xmm3
vpcmpeqb %xmm3, %xmm2, %xmm3
vpsubb %xmm3, %xmm0, %xmm0
vpaddb %xmm0, %xmm0, %xmm0
vmovdqa -0x540(%rbp), %xmm3
vpcmpeqb %xmm3, %xmm2, %k0
vmovdqa -0x640(%rbp), %xmm2
vmovdqa 0x17404(%rip), %xmm3    # 0xc92f0
vpcmpeqb %xmm3, %xmm2, %k1
korw %k1, %k0, %k0
vpmovm2b %k0, %xmm2
vpsubb %xmm2, %xmm0, %xmm0
vmovdqa %xmm0, -0x630(%rbp)
vmovdqa -0x650(%rbp), %xmm0
vmovdqa -0x520(%rbp), %xmm2
vmovdqa -0x5d0(%rbp), %xmm4
vpcmpeqb %xmm4, %xmm2, %xmm4
vmovdqa -0x600(%rbp), %xmm5
vpcmpeqb %xmm5, %xmm2, %xmm2
vpcmpeqb %xmm1, %xmm0, %xmm1
vmovdqa %xmm4, -0xc0(%rbp)
vmovdqa %xmm2, -0xd0(%rbp)
vmovdqa %xmm1, -0xe0(%rbp)
vmovdqa -0xc0(%rbp), %xmm1
vmovdqa -0xd0(%rbp), %xmm2
vmovdqa -0xe0(%rbp), %xmm4
vpblendvb %xmm4, %xmm2, %xmm1, %xmm1
vpaddb %xmm1, %xmm1, %xmm1
vpsubb %xmm1, %xmm0, %xmm0
vmovdqa -0x520(%rbp), %xmm1
vmovdqa -0x5a0(%rbp), %xmm2
vpcmpeqb %xmm2, %xmm1, %xmm2
vpsubb %xmm2, %xmm0, %xmm0
vpaddb %xmm0, %xmm0, %xmm0
vmovdqa -0x560(%rbp), %xmm2
vpcmpeqb %xmm2, %xmm1, %xmm1
vmovdqa -0x640(%rbp), %xmm2
vpcmpeqb %xmm3, %xmm2, %k0
vpmovm2b %k0, %xmm2
vpor %xmm2, %xmm1, %xmm1
vpsubb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x620(%rbp)
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
cmpq $0x1000, %rax           # imm = 0x1000
jae 0xb2034
movq -0x478(%rbp), %rdi
addq $0x1cd2, %rdi           # imm = 0x1CD2
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %eax
cltq
addq %rax, %rdi
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
movl $0x1000, %esi           # imm = 0x1000
subq %rax, %rsi
leaq 0x1e928(%rip), %rdx     # 0xd093c
movb $0x0, %al
callq 0x7070
movl %eax, %edx
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x1cd0(%rax)
jmp 0xb2036
movl -0x47c(%rbp), %eax
tzcntl %eax, %eax
movl %eax, -0x654(%rbp)
movl -0x654(%rbp), %eax
andl $0xf, %eax
movl %eax, -0x658(%rbp)
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
movslq -0x654(%rbp), %rcx
movl $0x0, 0xb0(%rax,%rcx,4)
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
addq $0x70, %rax
movl -0x654(%rbp), %ecx
andl $0x10, %ecx
shll %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x660(%rbp)
movq -0x478(%rbp), %rdi
movq -0x660(%rbp), %rsi
movl -0x658(%rbp), %edx
callq 0xafc70
vmovdqa %xmm0, -0x670(%rbp)
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
addq $0xb0, %rax
movl -0x654(%rbp), %ecx
andl $0x10, %ecx
movslq %ecx, %rcx
shlq $0x2, %rcx
addq %rcx, %rax
movq %rax, -0x678(%rbp)
movslq -0x654(%rbp), %rax
movsbl -0x630(%rbp,%rax), %eax
movl %eax, -0x694(%rbp)
movl -0x694(%rbp), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0xb212e
movq -0x478(%rbp), %rax
movslq -0x658(%rbp), %rcx
movl 0xd80(%rax,%rcx,4), %eax
movl %eax, -0x7c0(%rbp)
jmp 0xb2149
movq -0x478(%rbp), %rax
movslq -0x658(%rbp), %rcx
movl 0xd40(%rax,%rcx,4), %eax
movl %eax, -0x7c0(%rbp)
movl -0x7c0(%rbp), %eax
movl %eax, -0x698(%rbp)
movl -0x694(%rbp), %ecx
movl $0xe9e9, %eax           # imm = 0xE9E9
sarl %cl, %eax
andl $0x1, %eax
cltq
cmpq $0x0, %rax
je 0xb2306
movq -0x678(%rbp), %rax
movq -0x478(%rbp), %rcx
movslq -0x658(%rbp), %rdx
movswq 0xcc0(%rcx,%rdx,2), %rcx
vmovd (%rax,%rcx,4), %xmm0
vmovdqa %xmm0, -0x6c0(%rbp)
vmovdqa -0x6c0(%rbp), %xmm0
vmovdqa %xmm0, -0x6b0(%rbp)
movq -0x678(%rbp), %rax
movq -0x478(%rbp), %rcx
movslq -0x658(%rbp), %rdx
movslq 0xd00(%rcx,%rdx,4), %rcx
vmovd (%rax,%rcx,4), %xmm0
vmovdqa %xmm0, -0x6e0(%rbp)
vmovdqa -0x6e0(%rbp), %xmm0
vmovdqa %xmm0, -0x6d0(%rbp)
movq -0x678(%rbp), %rax
movslq -0x698(%rbp), %rcx
vmovd (%rax,%rcx,4), %xmm0
vmovdqa %xmm0, -0x700(%rbp)
vmovdqa -0x700(%rbp), %xmm0
vmovdqa %xmm0, -0x6f0(%rbp)
vmovdqa -0x6b0(%rbp), %xmm2
vmovdqa -0x6d0(%rbp), %xmm1
vmovdqa -0x6f0(%rbp), %xmm0
vmovdqa %xmm2, -0x1d0(%rbp)
vmovdqa %xmm1, -0x1e0(%rbp)
vmovdqa %xmm0, -0x1f0(%rbp)
vmovdqa -0x1d0(%rbp), %xmm1
vmovdqa -0x1e0(%rbp), %xmm0
vmovdqa %xmm1, -0x190(%rbp)
vmovdqa %xmm0, -0x1a0(%rbp)
vmovdqa -0x190(%rbp), %xmm0
vmovdqa -0x1a0(%rbp), %xmm1
vpmaxsw %xmm1, %xmm0, %xmm1
vmovdqa -0x1f0(%rbp), %xmm0
vmovdqa %xmm1, -0x150(%rbp)
vmovdqa %xmm0, -0x160(%rbp)
vmovdqa -0x150(%rbp), %xmm0
vmovdqa -0x160(%rbp), %xmm1
vpminsw %xmm1, %xmm0, %xmm1
vmovdqa -0x1d0(%rbp), %xmm2
vmovdqa -0x1e0(%rbp), %xmm0
vmovdqa %xmm2, -0x170(%rbp)
vmovdqa %xmm0, -0x180(%rbp)
vmovdqa -0x170(%rbp), %xmm0
vmovdqa -0x180(%rbp), %xmm2
vpminsw %xmm2, %xmm0, %xmm0
vmovdqa %xmm1, -0x1b0(%rbp)
vmovdqa %xmm0, -0x1c0(%rbp)
vmovdqa -0x1b0(%rbp), %xmm0
vmovdqa -0x1c0(%rbp), %xmm1
vpmaxsw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x690(%rbp)
jmp 0xb23bc
movl -0x694(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0xb2332
movq -0x478(%rbp), %rax
movslq -0x658(%rbp), %rcx
movswl 0xcc0(%rax,%rcx,2), %eax
movl %eax, -0x7c4(%rbp)
jmp 0xb234d
movq -0x478(%rbp), %rax
movslq -0x658(%rbp), %rcx
movl 0xd00(%rax,%rcx,4), %eax
movl %eax, -0x7c4(%rbp)
movl -0x7c4(%rbp), %eax
movl %eax, -0x704(%rbp)
movq -0x678(%rbp), %rax
movq %rax, -0x7d0(%rbp)
movl -0x694(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0xb2383
movl -0x698(%rbp), %eax
movl %eax, -0x7d4(%rbp)
jmp 0xb238f
movl -0x704(%rbp), %eax
movl %eax, -0x7d4(%rbp)
movq -0x7d0(%rbp), %rax
movl -0x7d4(%rbp), %ecx
movslq %ecx, %rcx
vmovd (%rax,%rcx,4), %xmm0
vmovdqa %xmm0, -0x720(%rbp)
vmovdqa -0x720(%rbp), %xmm0
vmovdqa %xmm0, -0x690(%rbp)
movl -0x47c(%rbp), %eax
movb -0x654(%rbp), %dl
andb $-0x4, %dl
movb %dl, %cl
shrxl %ecx, %eax, %eax
andl $0xf, %eax
movl %eax, -0x724(%rbp)
movslq -0x724(%rbp), %rax
leaq 0x1d527(%rip), %rcx     # 0xcf910
movsbl (%rax,%rcx), %eax
movl %eax, -0x728(%rbp)
movl -0x654(%rbp), %eax
sarl $0x2, %eax
movl %eax, -0x72c(%rbp)
vmovdqa 0x16ef6(%rip), %xmm0    # 0xc9300
vmovdqa %xmm0, -0x740(%rbp)
vpbroadcastw -0x728(%rbp), %xmm0
vmovdqa %xmm0, -0x760(%rbp)
vmovdqa -0x760(%rbp), %xmm0
vmovdqa -0x740(%rbp), %xmm1
vpand %xmm1, %xmm0, %xmm0
vpcmpeqw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x750(%rbp)
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
movslq -0x72c(%rbp), %rcx
vmovq 0x70(%rax,%rcx,8), %xmm0
vmovdqa %xmm0, -0x780(%rbp)
vmovdqa -0x780(%rbp), %xmm0
vmovdqa %xmm0, -0x770(%rbp)
vmovdqa -0x750(%rbp), %xmm0
vmovdqa %xmm0, -0x70(%rbp)
vmovdqa %xmm0, -0x80(%rbp)
vmovdqa -0x70(%rbp), %xmm0
vmovdqa -0x80(%rbp), %xmm1
vpunpcklwd %xmm1, %xmm0, %xmm0 # xmm0 = xmm0[0],xmm1[0],xmm0[1],xmm1[1],xmm0[2],xmm1[2],xmm0[3],xmm1[3]
vmovdqa %xmm0, -0x790(%rbp)
vmovdqa -0x690(%rbp), %xmm0
vmovdqa -0x670(%rbp), %xmm1
vpaddw %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x7a0(%rbp)
vpbroadcastd -0x7a0(%rbp), %xmm0
vmovdqa %xmm0, -0x7b0(%rbp)
vmovdqa -0x770(%rbp), %xmm2
vmovdqa -0x670(%rbp), %xmm0
vmovdqa %xmm0, -0x50(%rbp)
vpbroadcastd -0x50(%rbp), %xmm0
vmovdqa %xmm0, -0x60(%rbp)
vmovdqa -0x60(%rbp), %xmm0
vmovdqa %xmm0, -0x30(%rbp)
vmovdqa %xmm0, -0x40(%rbp)
vmovdqa -0x30(%rbp), %xmm0
vmovdqa -0x40(%rbp), %xmm1
vpacksswb %xmm1, %xmm0, %xmm0
vmovdqa %xmm0, -0x20(%rbp)
vpabsb -0x20(%rbp), %xmm1
vmovdqa -0x750(%rbp), %xmm0
vmovdqa %xmm2, -0xf0(%rbp)
vmovdqa %xmm1, -0x100(%rbp)
vmovdqa %xmm0, -0x110(%rbp)
vmovdqa -0xf0(%rbp), %xmm0
vmovdqa -0x100(%rbp), %xmm1
vmovdqa -0x110(%rbp), %xmm2
vpblendvb %xmm2, %xmm1, %xmm0, %xmm0
vmovq %xmm0, %rdx
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
movslq -0x72c(%rbp), %rcx
movq %rdx, 0x70(%rax,%rcx,8)
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
addq $0xb0, %rax
movslq -0x72c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
vmovdqa (%rax), %xmm2
vmovdqa -0x7b0(%rbp), %xmm1
vmovdqa -0x790(%rbp), %xmm0
vmovdqa %xmm2, -0x120(%rbp)
vmovdqa %xmm1, -0x130(%rbp)
vmovdqa %xmm0, -0x140(%rbp)
vmovdqa -0x120(%rbp), %xmm0
vmovdqa -0x130(%rbp), %xmm1
vmovdqa -0x140(%rbp), %xmm2
vpblendvb %xmm2, %xmm1, %xmm0, %xmm0
movq -0x478(%rbp), %rax
movq 0x680(%rax), %rax
addq $0xb0, %rax
movslq -0x72c(%rbp), %rcx
shlq $0x4, %rcx
addq %rcx, %rax
vmovdqa %xmm0, (%rax)
movq -0x478(%rbp), %rdi
movl -0x654(%rbp), %esi
movslq -0x724(%rbp), %rcx
leaq 0x1d303(%rip), %rax     # 0xcf920
movsbl (%rax,%rcx), %edx
movslq -0x724(%rbp), %rcx
leaq 0x1d301(%rip), %rax     # 0xcf930
movsbl (%rax,%rcx), %ecx
callq 0x83230
movl -0x47c(%rbp), %eax
subl $0x1, %eax
andl -0x47c(%rbp), %eax
movl %eax, -0x47c(%rbp)
cmpl $0x0, %eax
jne 0xb2036
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
cmpq $0x1000, %rax           # imm = 0x1000
jae 0xb26cc
movq -0x478(%rbp), %rdi
addq $0x1cd2, %rdi           # imm = 0x1CD2
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %eax
cltq
addq %rax, %rdi
movq -0x478(%rbp), %rax
movswq 0x1cd0(%rax), %rax
movl $0x1000, %esi           # imm = 0x1000
subq %rax, %rsi
leaq 0x1e50c(%rip), %rdx     # 0xd0bb8
movb $0x0, %al
callq 0x7070
movl %eax, %edx
movq -0x478(%rbp), %rax
movswl 0x1cd0(%rax), %ecx
addl %edx, %ecx
movw %cx, 0x1cd0(%rax)
movq -0x478(%rbp), %rdi
callq 0xb0080
addq $0x7e0, %rsp            # imm = 0x7E0
popq %rbp
retq
nopw %cs:(%rax,%rax)