// File: /workspace/github_c_makefile_star2_O0/tvlabs[P]edge264/./edge264_inter.c
// Function: decode_inter
static void noinline decode_inter(Edge264Context *ctx, int i, int w, int h) {
	static int8_t shift_Y_8bit[46] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15};
	static int8_t shift_C_8bit[22] = {0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 4, 5, 6, 7, 7, 7, 7, 7, 7, 7, 7};
	
	// load motion vector and reference picture
	int x = mb->mvs[i * 2];
	int y = mb->mvs[i * 2 + 1];
	int i8x8 = i >> 2;
	int i4x4 = i & 15;
	const uint8_t *ref = ctx->t.frame_buffers[mb->refPic[i8x8]];
	// print_header(ctx->d, "<k></k><v>CurrMbAddr=%d, i=%d, w=%d, h=%d, x=%d, y=%d, idx=%d, pic=%d</v>\n", ctx->CurrMbAddr, i, w, h, x, y, mb->refIdx[i8x8], mb->refPic[i8x8]);
	
	// prediction weights {wY, wCb, wCr, oY, oCb, oCr, logWD_Y, logWD_C}
	i16x8 wod = {pack_w(0, 1), pack_w(0, 1), pack_w(0, 1), 0, 0, 0, 0, 0}; // no_weight
	int refIdx = mb->refIdx[i8x8];
	int refIdxX = mb->refIdx[i8x8 ^ 4];
	if (ctx->t.pps.weighted_bipred_idc != 1) {
		if (((i8x8 - 4) | refIdxX) >= 0) {
			if (ctx->t.pps.weighted_bipred_idc == 0) { // default2
				wod = (i16x8){257, 257, 257, 1, 1, 1, 1, 1};
			} else { // implicit2
				int w1 = ctx->implicit_weights[refIdxX][refIdx] - 64;
				int p = pack_w(64 - w1, w1);
				wod = (u16x8){p, p, p, 32, 32, 32, 6, 6};
				// w0 or w1 will overflow if w1 is 128 or -64 (WARNING untested in conformance bitstreams)
				if (__builtin_expect((unsigned)(w1 + 63) >= 191, 0)) {
					p = pack_w(2 - (w1 >> 5), w1 >> 5);
					wod = (u16x8){p, p, p, 1, 1, 1, 1, 1};
				}
			}
		}
	} else if (refIdxX < 0) { // explicit1
		refIdx += (i8x8 & 4) * 8;
		if (__builtin_expect(ctx->t.explicit_weights[0][refIdx] < 128, 1)) {
			wod[0] = pack_w(0, ctx->t.explicit_weights[0][refIdx]);
			wod[3] = (ctx->t.explicit_offsets[0][refIdx] * 2 + 1) << ctx->t.luma_log2_weight_denom >> 1;
			wod[6] = ctx->t.luma_log2_weight_denom;
		}
		if (__builtin_expect(ctx->t.explicit_weights[1][refIdx] < 128, 1)) {
			wod[1] = pack_w(0, ctx->t.explicit_weights[1][refIdx]);
			wod[2] = pack_w(0, ctx->t.explicit_weights[2][refIdx]);
			wod[4] = (ctx->t.explicit_offsets[1][refIdx] * 2 + 1) << ctx->t.chroma_log2_weight_denom >> 1;
			wod[5] = (ctx->t.explicit_offsets[2][refIdx] * 2 + 1) << ctx->t.chroma_log2_weight_denom >> 1;
			wod[7] = ctx->t.chroma_log2_weight_denom;
		}
	} else if (i8x8 >= 4) { // explicit2
		refIdx += 32;
		if (__builtin_expect((ctx->t.explicit_weights[0][refIdxX] & ctx->t.explicit_weights[0][refIdx]) != 128, 1)) {
			wod[0] = pack_w(ctx->t.explicit_weights[0][refIdxX], ctx->t.explicit_weights[0][refIdx]);
			wod[3] = ((ctx->t.explicit_offsets[0][refIdxX] + ctx->t.explicit_offsets[0][refIdx] + 1) | 1) << ctx->t.luma_log2_weight_denom;
			wod[6] = ctx->t.luma_log2_weight_denom + 1;
		} else {
			wod[0] = pack_w(ctx->t.explicit_weights[0][refIdxX] >> 1, ctx->t.explicit_weights[0][refIdx] >> 1);
			wod[3] = ((ctx->t.explicit_offsets[0][refIdxX] + ctx->t.explicit_offsets[0][refIdx] + 1) | 1) << ctx->t.luma_log2_weight_denom >> 1;
			wod[6] = ctx->t.luma_log2_weight_denom;
		}
		if (__builtin_expect((ctx->t.explicit_weights[1][refIdxX] & ctx->t.explicit_weights[1][refIdx]) != 128, 1)) {
			wod[1] = pack_w(ctx->t.explicit_weights[1][refIdxX], ctx->t.explicit_weights[1][refIdx]);
			wod[2] = pack_w(ctx->t.explicit_weights[2][refIdxX], ctx->t.explicit_weights[2][refIdx]);
			wod[4] = ((ctx->t.explicit_offsets[1][refIdxX] + ctx->t.explicit_offsets[1][refIdx] + 1) | 1) << ctx->t.chroma_log2_weight_denom;
			wod[5] = ((ctx->t.explicit_offsets[2][refIdxX] + ctx->t.explicit_offsets[2][refIdx] + 1) | 1) << ctx->t.chroma_log2_weight_denom;
			wod[7] = ctx->t.chroma_log2_weight_denom + 1;
		} else {
			wod[1] = pack_w(ctx->t.explicit_weights[1][refIdxX] >> 1, ctx->t.explicit_weights[1][refIdx] >> 1);
			wod[2] = pack_w(ctx->t.explicit_weights[2][refIdxX] >> 1, ctx->t.explicit_weights[2][refIdx] >> 1);
			wod[4] = ((ctx->t.explicit_offsets[1][refIdxX] + ctx->t.explicit_offsets[1][refIdx] + 1) | 1) << ctx->t.chroma_log2_weight_denom >> 1;
			wod[5] = ((ctx->t.explicit_offsets[2][refIdxX] + ctx->t.explicit_offsets[2][refIdx] + 1) | 1) << ctx->t.chroma_log2_weight_denom >> 1;
			wod[7] = ctx->t.chroma_log2_weight_denom;
		}
	}
	
	// compute source pointers
	int xInt_Y = ctx->mbx * 16 + x444[i4x4] + (x >> 2);
	int xInt_C = ctx->mbx * 8 + (x444[i4x4] >> 1) + (x >> 3);
	int yInt_Y = ctx->mby * 16 + y444[i4x4] + (y >> 2);
	int yInt_C = ctx->mby * 8 + (y444[i4x4] >> 1) + (y >> 3);
	const uint8_t *src_Y = ref + xInt_Y + yInt_Y * ctx->t.stride[0];
	const uint8_t *src_C = ref + xInt_C + yInt_C * ctx->t.stride[1] + ctx->t.plane_size_Y;
	size_t sstride_Y = ctx->t.stride[0];
	size_t sstride_C = ctx->t.stride[1] >> 1;
	
	// edge propagation is an annoying but beautiful piece of code
	int xWide = (x & 7) != 0;
	int yWide = (y & 7) != 0;
	int width_Y = ctx->t.pic_width_in_mbs * 16;
	if (__builtin_expect((unsigned)xInt_Y - xWide * 2 >= width_Y - w + 1 - xWide * 5 ||
		(unsigned)yInt_Y - yWide * 2 >= ctx->t.pic_height_in_mbs * 16 - h + 1 - yWide * 5, 0))
	{
		i8x16 shuf0 = load128(shift_Y_8bit + 15 + clip3(-15, 0, xInt_Y - 2) + clip3(0, 15, xInt_Y + 14 - width_Y));
		i8x16 shuf1 = load128(shift_Y_8bit + 15 + clip3(-15, 0, xInt_Y + 14) + clip3(0, 15, xInt_Y + 30 - width_Y));
		const uint8_t *src0 = ref + clip3(0, width_Y - 16, xInt_Y - 2);
		const uint8_t *src1 = ref + clip3(0, width_Y - 16, xInt_Y + 14);
		yInt_Y -= 2;
		for (i8x16 *buf = ctx->edge_buf_v; buf < ctx->edge_buf_v + 10 + h * 2; buf += 2, yInt_Y++) {
			int c = clip3(0, ctx->t.plane_size_Y - sstride_Y, yInt_Y * sstride_Y);
			buf[0] = shuffle(load128(src0 + c), shuf0);
			buf[1] = shuffle(load128(src1 + c), shuf1);
		}
		src_Y = ctx->edge_buf + 66;
		sstride_Y = 32;
		
		// chroma may read (and ignore) 1 bottom row and 1 right col out of bounds
		int width_C = width_Y >> 1;
		i8x16 shuf = load64(shift_C_8bit + 7 + clip3(-7, 0, xInt_C) + clip3(0, 7, xInt_C + 8 - width_C));
		src0 = ref + clip3(0, width_C - 8, xInt_C);
		src1 = ref + clip3(0, width_C - 1, xInt_C + 8);
		for (int j = 0; j <= h >> 1; j++, yInt_C++) {
			int cb = ctx->t.plane_size_Y + clip3(0, ctx->t.plane_size_C - sstride_C * 2, yInt_C * sstride_C * 2);
			int cr = sstride_C + cb;
			// reads are split in 2 to support 8px-wide frames
			ctx->edge_buf_l[j * 4 + 84] = ((i64x2)shuffle(load64(src0 + cb), shuf))[0];
			ctx->edge_buf[j * 32 + 680] = *(src1 + cb);
			ctx->edge_buf_l[j * 4 + 86] = ((i64x2)shuffle(load64(src0 + cr), shuf))[0];
			ctx->edge_buf[j * 32 + 696] = *(src1 + cr);
		}
		sstride_C = 16;
		src_C = ctx->edge_buf + 672;
	}
	
	// chroma prediction comes first since it can be inlined
	uint8_t *dst_C = ctx->samples_mb[1] + (y444[i4x4] >> 1) * ctx->t.stride[1] + (x444[i4x4] >> 1);
	size_t dstride_C = ctx->t.stride[1] >> 1;
	int xFrac_C = x & 7;
	int yFrac_C = y & 7;
	i32x4 ABCD = {little_endian32(((8 - xFrac_C) | xFrac_C << 8) * ((8 - yFrac_C) | yFrac_C << 16))};
	decode_inter_chroma(w, h, dstride_C, dst_C, sstride_C, src_C, ABCD, wod);
	
	// tail jump to luma prediction
	int xFrac_Y = x & 3;
	int yFrac_Y = y & 3;
	size_t dstride_Y = ctx->t.stride[0];
	uint8_t *dst_Y = ctx->samples_mb[0] + y444[i4x4] * dstride_Y + x444[i4x4];
	decode_inter_luma((w << 1 & 48) + yFrac_Y * 4 + xFrac_Y, h, sstride_Y, src_Y, dstride_Y, dst_Y, wod);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x4f0, %rsp            # imm = 0x4F0
movq %rdi, -0x2d8(%rbp)
movl %esi, -0x2dc(%rbp)
movl %edx, -0x2e0(%rbp)
movl %ecx, -0x2e4(%rbp)
movq -0x2d8(%rbp), %rax
movq 0x680(%rax), %rax
movl -0x2dc(%rbp), %ecx
addl %ecx, %ecx
movslq %ecx, %rcx
movswl 0xb0(%rax,%rcx,2), %eax
movl %eax, -0x2e8(%rbp)
movq -0x2d8(%rbp), %rax
movq 0x680(%rax), %rax
movl -0x2dc(%rbp), %ecx
addl %ecx, %ecx
movslq %ecx, %rcx
movswl 0xb2(%rax,%rcx,2), %eax
movl %eax, -0x2ec(%rbp)
movl -0x2dc(%rbp), %eax
sarl $0x2, %eax
movl %eax, -0x2f0(%rbp)
movl -0x2dc(%rbp), %eax
andl $0xf, %eax
movl %eax, -0x2f4(%rbp)
movq -0x2d8(%rbp), %rax
movq 0x680(%rax), %rcx
movslq -0x2f0(%rbp), %rdx
movsbq 0x18(%rcx,%rdx), %rcx
movq 0x60(%rax,%rcx,8), %rax
movq %rax, -0x300(%rbp)
vmovdqa 0xa7f01(%rip), %xmm0    # 0xc9340
vmovdqa %xmm0, -0x310(%rbp)
movq -0x2d8(%rbp), %rax
movq 0x680(%rax), %rax
movslq -0x2f0(%rbp), %rcx
movsbl 0x10(%rax,%rcx), %eax
movl %eax, -0x314(%rbp)
movq -0x2d8(%rbp), %rax
movq 0x680(%rax), %rax
movl -0x2f0(%rbp), %ecx
xorl $0x4, %ecx
movslq %ecx, %rcx
movsbl 0x10(%rax,%rcx), %eax
movl %eax, -0x318(%rbp)
movq -0x2d8(%rbp), %rax
movsbl 0x225(%rax), %eax
cmpl $0x1, %eax
je 0x2161d
movl -0x2f0(%rbp), %eax
subl $0x4, %eax
orl -0x318(%rbp), %eax
cmpl $0x0, %eax
jl 0x21618
movq -0x2d8(%rbp), %rax
movsbl 0x225(%rax), %eax
cmpl $0x0, %eax
jne 0x214f3
vmovdqa 0xa7e7a(%rip), %xmm0    # 0xc9350
vmovdqa %xmm0, -0x330(%rbp)
vmovdqa -0x330(%rbp), %xmm0
vmovdqa %xmm0, -0x310(%rbp)
jmp 0x21616
movq -0x2d8(%rbp), %rcx
movslq -0x318(%rbp), %rax
shlq $0x5, %rax
addq %rax, %rcx
movslq -0x314(%rbp), %rax
movzbl 0xe30(%rax,%rcx), %eax
addl $-0x40, %eax
movl %eax, -0x334(%rbp)
movl -0x334(%rbp), %edx
movl %edx, %eax
shll $0x8, %eax
movl $0x40, %ecx
subl %edx, %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movl %eax, -0x338(%rbp)
movl -0x338(%rbp), %eax
vmovd %eax, %xmm0
vpinsrw $0x1, %eax, %xmm0, %xmm0
vpinsrw $0x2, %eax, %xmm0, %xmm0
movl $0x20, %eax
vpinsrw $0x3, %eax, %xmm0, %xmm0
vpinsrw $0x4, %eax, %xmm0, %xmm0
vpinsrw $0x5, %eax, %xmm0, %xmm0
movl $0x6, %eax
vpinsrw $0x6, %eax, %xmm0, %xmm0
vpinsrw $0x7, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x350(%rbp)
vmovdqa -0x350(%rbp), %xmm0
vmovdqa %xmm0, -0x310(%rbp)
movl -0x334(%rbp), %eax
addl $0x3f, %eax
cmpl $0xbf, %eax
setae %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x21614
movl -0x334(%rbp), %edx
sarl $0x5, %edx
movl %edx, %eax
shll $0x8, %eax
movl $0x2, %ecx
subl %edx, %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movl %eax, -0x338(%rbp)
movl -0x338(%rbp), %eax
vmovd %eax, %xmm0
vpinsrw $0x1, %eax, %xmm0, %xmm0
vpinsrw $0x2, %eax, %xmm0, %xmm0
movl $0x1, %eax
vpinsrw $0x3, %eax, %xmm0, %xmm0
vpinsrw $0x4, %eax, %xmm0, %xmm0
vpinsrw $0x5, %eax, %xmm0, %xmm0
vpinsrw $0x6, %eax, %xmm0, %xmm0
vpinsrw $0x7, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x360(%rbp)
vmovdqa -0x360(%rbp), %xmm0
vmovdqa %xmm0, -0x310(%rbp)
jmp 0x21616
jmp 0x21618
jmp 0x21bdc
cmpl $0x0, -0x318(%rbp)
jge 0x217ce
movl -0x2f0(%rbp), %eax
andl $0x4, %eax
shll $0x3, %eax
addl -0x314(%rbp), %eax
movl %eax, -0x314(%rbp)
movq -0x2d8(%rbp), %rax
movslq -0x314(%rbp), %rcx
movswl 0x410(%rax,%rcx,2), %eax
cmpl $0x80, %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x216dc
movq -0x2d8(%rbp), %rax
movslq -0x314(%rbp), %rcx
movzwl 0x410(%rax,%rcx,2), %eax
shll $0x8, %eax
movw %ax, -0x310(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movsbl 0x590(%rcx,%rax), %edx
movl %edx, %eax
leal 0x1(%rax,%rax), %eax
movb 0x25(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
shrl %eax
movw %ax, -0x30a(%rbp)
movq -0x2d8(%rbp), %rax
vmovdqa -0x310(%rbp), %xmm0
movsbl 0x25(%rax), %eax
vpinsrw $0x6, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x310(%rbp)
movq -0x2d8(%rbp), %rax
movslq -0x314(%rbp), %rcx
movswl 0x490(%rax,%rcx,2), %eax
cmpl $0x80, %eax
setl %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x217c9
movq -0x2d8(%rbp), %rax
movslq -0x314(%rbp), %rcx
movzwl 0x490(%rax,%rcx,2), %eax
shll $0x8, %eax
movw %ax, -0x30e(%rbp)
movq -0x2d8(%rbp), %rax
movslq -0x314(%rbp), %rcx
movzwl 0x510(%rax,%rcx,2), %eax
shll $0x8, %eax
movw %ax, -0x30c(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movsbl 0x5d0(%rcx,%rax), %edx
movl %edx, %eax
leal 0x1(%rax,%rax), %eax
movb 0x26(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
shrl %eax
movw %ax, -0x308(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movsbl 0x610(%rcx,%rax), %edx
movl %edx, %eax
leal 0x1(%rax,%rax), %eax
movb 0x26(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
shrl %eax
movw %ax, -0x306(%rbp)
movq -0x2d8(%rbp), %rax
vmovdqa -0x310(%rbp), %xmm0
movsbl 0x26(%rax), %eax
vpinsrw $0x7, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x310(%rbp)
jmp 0x21bda
cmpl $0x4, -0x2f0(%rbp)
jl 0x21bd8
movl -0x314(%rbp), %eax
addl $0x20, %eax
movl %eax, -0x314(%rbp)
movq -0x2d8(%rbp), %rax
movslq -0x318(%rbp), %rcx
movswl 0x410(%rax,%rcx,2), %eax
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rdx
movswl 0x410(%rcx,%rdx,2), %ecx
andl %ecx, %eax
cmpl $0x80, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x218ca
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movzwl 0x410(%rcx,%rax,2), %eax
shll $0x8, %eax
movslq -0x318(%rbp), %rdx
movzbl 0x410(%rcx,%rdx,2), %ecx
orl %ecx, %eax
movw %ax, -0x310(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x318(%rbp), %rax
movsbl 0x590(%rcx,%rax), %esi
movslq -0x314(%rbp), %rax
movsbl 0x590(%rcx,%rax), %eax
movl %eax, %edx
movl %esi, %eax
leal 0x1(%rax,%rdx), %eax
orl $0x1, %eax
movb 0x25(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
movw %ax, -0x30a(%rbp)
movq -0x2d8(%rbp), %rax
movsbl 0x25(%rax), %eax
incl %eax
vmovdqa -0x310(%rbp), %xmm0
vpinsrw $0x6, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x310(%rbp)
jmp 0x21968
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movzwl 0x410(%rcx,%rax,2), %eax
shll $0x7, %eax
andl $0xff00, %eax           # imm = 0xFF00
movslq -0x318(%rbp), %rdx
movzwl 0x410(%rcx,%rdx,2), %ecx
shrl %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movw %ax, -0x310(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x318(%rbp), %rax
movsbl 0x590(%rcx,%rax), %esi
movslq -0x314(%rbp), %rax
movsbl 0x590(%rcx,%rax), %eax
movl %eax, %edx
movl %esi, %eax
leal 0x1(%rax,%rdx), %eax
orl $0x1, %eax
movb 0x25(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
shrl %eax
movw %ax, -0x30a(%rbp)
movq -0x2d8(%rbp), %rax
vmovdqa -0x310(%rbp), %xmm0
movsbl 0x25(%rax), %eax
vpinsrw $0x6, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x310(%rbp)
movq -0x2d8(%rbp), %rax
movslq -0x318(%rbp), %rcx
movswl 0x490(%rax,%rcx,2), %eax
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rdx
movswl 0x490(%rcx,%rdx,2), %ecx
andl %ecx, %eax
cmpl $0x80, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x21aba
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movzwl 0x490(%rcx,%rax,2), %eax
shll $0x8, %eax
movslq -0x318(%rbp), %rdx
movzbl 0x490(%rcx,%rdx,2), %ecx
orl %ecx, %eax
movw %ax, -0x30e(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movzwl 0x510(%rcx,%rax,2), %eax
shll $0x8, %eax
movslq -0x318(%rbp), %rdx
movzbl 0x510(%rcx,%rdx,2), %ecx
orl %ecx, %eax
movw %ax, -0x30c(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x318(%rbp), %rax
movsbl 0x5d0(%rcx,%rax), %esi
movslq -0x314(%rbp), %rax
movsbl 0x5d0(%rcx,%rax), %eax
movl %eax, %edx
movl %esi, %eax
leal 0x1(%rax,%rdx), %eax
orl $0x1, %eax
movb 0x26(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
movw %ax, -0x308(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x318(%rbp), %rax
movsbl 0x610(%rcx,%rax), %esi
movslq -0x314(%rbp), %rax
movsbl 0x610(%rcx,%rax), %eax
movl %eax, %edx
movl %esi, %eax
leal 0x1(%rax,%rdx), %eax
orl $0x1, %eax
movb 0x26(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
movw %ax, -0x306(%rbp)
movq -0x2d8(%rbp), %rax
movsbl 0x26(%rax), %eax
incl %eax
vmovdqa -0x310(%rbp), %xmm0
vpinsrw $0x7, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x310(%rbp)
jmp 0x21bd6
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movzwl 0x490(%rcx,%rax,2), %eax
shll $0x7, %eax
andl $0xff00, %eax           # imm = 0xFF00
movslq -0x318(%rbp), %rdx
movzwl 0x490(%rcx,%rdx,2), %ecx
shrl %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movw %ax, -0x30e(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x314(%rbp), %rax
movzwl 0x510(%rcx,%rax,2), %eax
shll $0x7, %eax
andl $0xff00, %eax           # imm = 0xFF00
movslq -0x318(%rbp), %rdx
movzwl 0x510(%rcx,%rdx,2), %ecx
shrl %ecx
movzbl %cl, %ecx
orl %ecx, %eax
movw %ax, -0x30c(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x318(%rbp), %rax
movsbl 0x5d0(%rcx,%rax), %esi
movslq -0x314(%rbp), %rax
movsbl 0x5d0(%rcx,%rax), %eax
movl %eax, %edx
movl %esi, %eax
leal 0x1(%rax,%rdx), %eax
orl $0x1, %eax
movb 0x26(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
shrl %eax
movw %ax, -0x308(%rbp)
movq -0x2d8(%rbp), %rcx
movslq -0x318(%rbp), %rax
movsbl 0x610(%rcx,%rax), %esi
movslq -0x314(%rbp), %rax
movsbl 0x610(%rcx,%rax), %eax
movl %eax, %edx
movl %esi, %eax
leal 0x1(%rax,%rdx), %eax
orl $0x1, %eax
movb 0x26(%rcx), %dl
movb %dl, %cl
shlxl %ecx, %eax, %eax
shrl %eax
movw %ax, -0x306(%rbp)
movq -0x2d8(%rbp), %rax
vmovdqa -0x310(%rbp), %xmm0
movsbl 0x26(%rax), %eax
vpinsrw $0x7, %eax, %xmm0, %xmm0
vmovdqa %xmm0, -0x310(%rbp)
jmp 0x21bd8
jmp 0x21bda
jmp 0x21bdc
movq -0x2d8(%rbp), %rax
movswl 0x654(%rax), %eax
shll $0x4, %eax
movslq -0x2f4(%rbp), %rdx
leaq 0xaa415(%rip), %rcx     # 0xcc010
movsbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movl -0x2e8(%rbp), %ecx
sarl $0x2, %ecx
addl %ecx, %eax
movl %eax, -0x364(%rbp)
movq -0x2d8(%rbp), %rax
movswl 0x654(%rax), %eax
shll $0x3, %eax
movslq -0x2f4(%rbp), %rdx
leaq 0xaa3df(%rip), %rcx     # 0xcc010
movsbl (%rcx,%rdx), %ecx
sarl %ecx
addl %ecx, %eax
movl -0x2e8(%rbp), %ecx
sarl $0x3, %ecx
addl %ecx, %eax
movl %eax, -0x368(%rbp)
movq -0x2d8(%rbp), %rax
movswl 0x656(%rax), %eax
shll $0x4, %eax
movslq -0x2f4(%rbp), %rdx
leaq 0xaa3b7(%rip), %rcx     # 0xcc020
movsbl (%rcx,%rdx), %ecx
addl %ecx, %eax
movl -0x2ec(%rbp), %ecx
sarl $0x2, %ecx
addl %ecx, %eax
movl %eax, -0x36c(%rbp)
movq -0x2d8(%rbp), %rax
movswl 0x656(%rax), %eax
shll $0x3, %eax
movslq -0x2f4(%rbp), %rdx
leaq 0xaa381(%rip), %rcx     # 0xcc020
movsbl (%rcx,%rdx), %ecx
sarl %ecx
addl %ecx, %eax
movl -0x2ec(%rbp), %ecx
sarl $0x3, %ecx
addl %ecx, %eax
movl %eax, -0x370(%rbp)
movq -0x300(%rbp), %rax
movslq -0x364(%rbp), %rcx
addq %rcx, %rax
movl -0x36c(%rbp), %ecx
movq -0x2d8(%rbp), %rdx
movzwl 0x34(%rdx), %edx
imull %edx, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x378(%rbp)
movq -0x300(%rbp), %rax
movslq -0x368(%rbp), %rcx
addq %rcx, %rax
movl -0x370(%rbp), %ecx
movq -0x2d8(%rbp), %rdx
movzwl 0x36(%rdx), %edx
imull %edx, %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq -0x2d8(%rbp), %rcx
movslq 0x3c(%rcx), %rcx
addq %rcx, %rax
movq %rax, -0x380(%rbp)
movq -0x2d8(%rbp), %rax
movzwl 0x34(%rax), %eax
movq %rax, -0x388(%rbp)
movq -0x2d8(%rbp), %rax
movzwl 0x36(%rax), %eax
sarl %eax
cltq
movq %rax, -0x390(%rbp)
movl -0x2e8(%rbp), %eax
andl $0x7, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x394(%rbp)
movl -0x2ec(%rbp), %eax
andl $0x7, %eax
cmpl $0x0, %eax
setne %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x398(%rbp)
movq -0x2d8(%rbp), %rax
movswl 0x30(%rax), %eax
shll $0x4, %eax
movl %eax, -0x39c(%rbp)
movl -0x364(%rbp), %ecx
movl -0x394(%rbp), %eax
shll %eax
subl %eax, %ecx
movl -0x39c(%rbp), %edx
subl -0x2e0(%rbp), %edx
addl $0x1, %edx
imull $0x5, -0x394(%rbp), %eax
subl %eax, %edx
movb $0x1, %al
cmpl %edx, %ecx
movb %al, -0x449(%rbp)
jae 0x21e09
movl -0x36c(%rbp), %eax
movl -0x398(%rbp), %ecx
shll %ecx
subl %ecx, %eax
movq -0x2d8(%rbp), %rcx
movswl 0x32(%rcx), %ecx
shll $0x4, %ecx
subl -0x2e4(%rbp), %ecx
addl $0x1, %ecx
imull $0x5, -0x398(%rbp), %edx
subl %edx, %ecx
cmpl %ecx, %eax
setae %al
movb %al, -0x449(%rbp)
movb -0x449(%rbp), %al
andb $0x1, %al
movzbl %al, %eax
cltq
cmpq $0x0, %rax
je 0x22b68
movl -0x364(%rbp), %eax
subl $0x2, %eax
movl $0xfffffff1, -0xf4(%rbp) # imm = 0xFFFFFFF1
movl $0x0, -0xf8(%rbp)
movl %eax, -0xfc(%rbp)
movl -0xfc(%rbp), %ecx
movl -0xf4(%rbp), %eax
movl %ecx, -0xec(%rbp)
movl %eax, -0xf0(%rbp)
movl -0xec(%rbp), %eax
cmpl -0xf0(%rbp), %eax
jle 0x21e77
movl -0xec(%rbp), %eax
movl %eax, -0x450(%rbp)
jmp 0x21e83
movl -0xf0(%rbp), %eax
movl %eax, -0x450(%rbp)
movl -0x450(%rbp), %ecx
movl -0xf8(%rbp), %eax
movl %ecx, -0xe4(%rbp)
movl %eax, -0xe8(%rbp)
movl -0xe4(%rbp), %eax
cmpl -0xe8(%rbp), %eax
jge 0x21eb7
movl -0xe4(%rbp), %eax
movl %eax, -0x454(%rbp)
jmp 0x21ec3
movl -0xe8(%rbp), %eax
movl %eax, -0x454(%rbp)
movl -0x454(%rbp), %eax
movslq %eax, %rcx
leaq 0xb532d(%rip), %rax     # 0xd7200
addq $0xf, %rax
addq %rcx, %rax
movq %rax, -0x460(%rbp)
movl -0x364(%rbp), %eax
addl $0xe, %eax
subl -0x39c(%rbp), %eax
movl $0x0, -0x110(%rbp)
movl $0xf, -0x114(%rbp)
movl %eax, -0x118(%rbp)
movl -0x118(%rbp), %ecx
movl -0x110(%rbp), %eax
movl %ecx, -0x108(%rbp)
movl %eax, -0x10c(%rbp)
movl -0x108(%rbp), %eax
cmpl -0x10c(%rbp), %eax
jle 0x21f3e
movl -0x108(%rbp), %eax
movl %eax, -0x464(%rbp)
jmp 0x21f4a
movl -0x10c(%rbp), %eax
movl %eax, -0x464(%rbp)
movl -0x464(%rbp), %ecx
movl -0x114(%rbp), %eax
movl %ecx, -0x100(%rbp)
movl %eax, -0x104(%rbp)
movl -0x100(%rbp), %eax
cmpl -0x104(%rbp), %eax
jge 0x21f7e
movl -0x100(%rbp), %eax
movl %eax, -0x468(%rbp)
jmp 0x21f8a
movl -0x104(%rbp), %eax
movl %eax, -0x468(%rbp)
movq -0x460(%rbp), %rax
movl -0x468(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x238(%rbp)
movq -0x238(%rbp), %rax
vmovdqu (%rax), %xmm0
vmovdqa %xmm0, -0x3b0(%rbp)
movl -0x364(%rbp), %eax
addl $0xe, %eax
movl $0xfffffff1, -0x12c(%rbp) # imm = 0xFFFFFFF1
movl $0x0, -0x130(%rbp)
movl %eax, -0x134(%rbp)
movl -0x134(%rbp), %ecx
movl -0x12c(%rbp), %eax
movl %ecx, -0x124(%rbp)
movl %eax, -0x128(%rbp)
movl -0x124(%rbp), %eax
cmpl -0x128(%rbp), %eax
jle 0x2200e
movl -0x124(%rbp), %eax
movl %eax, -0x46c(%rbp)
jmp 0x2201a
movl -0x128(%rbp), %eax
movl %eax, -0x46c(%rbp)
movl -0x46c(%rbp), %ecx
movl -0x130(%rbp), %eax
movl %ecx, -0x11c(%rbp)
movl %eax, -0x120(%rbp)
movl -0x11c(%rbp), %eax
cmpl -0x120(%rbp), %eax
jge 0x2204e
movl -0x11c(%rbp), %eax
movl %eax, -0x470(%rbp)
jmp 0x2205a
movl -0x120(%rbp), %eax
movl %eax, -0x470(%rbp)
movl -0x470(%rbp), %eax
movslq %eax, %rcx
leaq 0xb5196(%rip), %rax     # 0xd7200
addq $0xf, %rax
addq %rcx, %rax
movq %rax, -0x478(%rbp)
movl -0x364(%rbp), %eax
addl $0x1e, %eax
subl -0x39c(%rbp), %eax
movl $0x0, -0x148(%rbp)
movl $0xf, -0x14c(%rbp)
movl %eax, -0x150(%rbp)
movl -0x150(%rbp), %ecx
movl -0x148(%rbp), %eax
movl %ecx, -0x140(%rbp)
movl %eax, -0x144(%rbp)
movl -0x140(%rbp), %eax
cmpl -0x144(%rbp), %eax
jle 0x220d5
movl -0x140(%rbp), %eax
movl %eax, -0x47c(%rbp)
jmp 0x220e1
movl -0x144(%rbp), %eax
movl %eax, -0x47c(%rbp)
movl -0x47c(%rbp), %ecx
movl -0x14c(%rbp), %eax
movl %ecx, -0x138(%rbp)
movl %eax, -0x13c(%rbp)
movl -0x138(%rbp), %eax
cmpl -0x13c(%rbp), %eax
jge 0x22115
movl -0x138(%rbp), %eax
movl %eax, -0x480(%rbp)
jmp 0x22121
movl -0x13c(%rbp), %eax
movl %eax, -0x480(%rbp)
movq -0x478(%rbp), %rax
movl -0x480(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x240(%rbp)
movq -0x240(%rbp), %rax
vmovdqu (%rax), %xmm0
vmovdqa %xmm0, -0x3c0(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0x488(%rbp)
movl -0x39c(%rbp), %ecx
subl $0x10, %ecx
movl -0x364(%rbp), %eax
subl $0x2, %eax
movl $0x0, -0x164(%rbp)
movl %ecx, -0x168(%rbp)
movl %eax, -0x16c(%rbp)
movl -0x16c(%rbp), %ecx
movl -0x164(%rbp), %eax
movl %ecx, -0x15c(%rbp)
movl %eax, -0x160(%rbp)
movl -0x15c(%rbp), %eax
cmpl -0x160(%rbp), %eax
jle 0x221b8
movl -0x15c(%rbp), %eax
movl %eax, -0x48c(%rbp)
jmp 0x221c4
movl -0x160(%rbp), %eax
movl %eax, -0x48c(%rbp)
movl -0x48c(%rbp), %ecx
movl -0x168(%rbp), %eax
movl %ecx, -0x154(%rbp)
movl %eax, -0x158(%rbp)
movl -0x154(%rbp), %eax
cmpl -0x158(%rbp), %eax
jge 0x221f8
movl -0x154(%rbp), %eax
movl %eax, -0x490(%rbp)
jmp 0x22204
movl -0x158(%rbp), %eax
movl %eax, -0x490(%rbp)
movq -0x488(%rbp), %rax
movl -0x490(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x3c8(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0x498(%rbp)
movl -0x39c(%rbp), %ecx
subl $0x10, %ecx
movl -0x364(%rbp), %eax
addl $0xe, %eax
movl $0x0, -0x180(%rbp)
movl %ecx, -0x184(%rbp)
movl %eax, -0x188(%rbp)
movl -0x188(%rbp), %ecx
movl -0x180(%rbp), %eax
movl %ecx, -0x178(%rbp)
movl %eax, -0x17c(%rbp)
movl -0x178(%rbp), %eax
cmpl -0x17c(%rbp), %eax
jle 0x22288
movl -0x178(%rbp), %eax
movl %eax, -0x49c(%rbp)
jmp 0x22294
movl -0x17c(%rbp), %eax
movl %eax, -0x49c(%rbp)
movl -0x49c(%rbp), %ecx
movl -0x184(%rbp), %eax
movl %ecx, -0x170(%rbp)
movl %eax, -0x174(%rbp)
movl -0x170(%rbp), %eax
cmpl -0x174(%rbp), %eax
jge 0x222c8
movl -0x170(%rbp), %eax
movl %eax, -0x4a0(%rbp)
jmp 0x222d4
movl -0x174(%rbp), %eax
movl %eax, -0x4a0(%rbp)
movq -0x498(%rbp), %rax
movl -0x4a0(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x3d0(%rbp)
movl -0x36c(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x36c(%rbp)
movq -0x2d8(%rbp), %rax
addq $0x1230, %rax           # imm = 0x1230
movq %rax, -0x3d8(%rbp)
movq -0x3d8(%rbp), %rax
movq -0x2d8(%rbp), %rcx
addq $0x1230, %rcx           # imm = 0x1230
addq $0xa0, %rcx
movl -0x2e4(%rbp), %edx
shll %edx
movslq %edx, %rdx
shlq $0x4, %rdx
addq %rdx, %rcx
cmpq %rcx, %rax
jae 0x22512
movq -0x2d8(%rbp), %rax
movslq 0x3c(%rax), %rax
subq -0x388(%rbp), %rax
movl %eax, %ecx
movslq -0x36c(%rbp), %rax
imulq -0x388(%rbp), %rax
movl $0x0, -0x19c(%rbp)
movl %ecx, -0x1a0(%rbp)
movl %eax, -0x1a4(%rbp)
movl -0x1a4(%rbp), %ecx
movl -0x19c(%rbp), %eax
movl %ecx, -0x194(%rbp)
movl %eax, -0x198(%rbp)
movl -0x194(%rbp), %eax
cmpl -0x198(%rbp), %eax
jle 0x223b5
movl -0x194(%rbp), %eax
movl %eax, -0x4a4(%rbp)
jmp 0x223c1
movl -0x198(%rbp), %eax
movl %eax, -0x4a4(%rbp)
movl -0x4a4(%rbp), %ecx
movl -0x1a0(%rbp), %eax
movl %ecx, -0x18c(%rbp)
movl %eax, -0x190(%rbp)
movl -0x18c(%rbp), %eax
cmpl -0x190(%rbp), %eax
jge 0x223f5
movl -0x18c(%rbp), %eax
movl %eax, -0x4a8(%rbp)
jmp 0x22401
movl -0x190(%rbp), %eax
movl %eax, -0x4a8(%rbp)
movl -0x4a8(%rbp), %eax
movl %eax, -0x3dc(%rbp)
movq -0x3c8(%rbp), %rax
movslq -0x3dc(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x248(%rbp)
movq -0x248(%rbp), %rax
vmovdqu (%rax), %xmm1
vmovdqa -0x3b0(%rbp), %xmm0
vmovdqa %xmm1, -0x260(%rbp)
vmovdqa %xmm0, -0x270(%rbp)
vmovdqa -0x260(%rbp), %xmm1
vmovdqa -0x270(%rbp), %xmm0
vmovdqa %xmm1, -0x70(%rbp)
vmovdqa %xmm0, -0x80(%rbp)
vmovdqa -0x70(%rbp), %xmm0
vmovdqa -0x80(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
movq -0x3d8(%rbp), %rax
vmovdqa %xmm0, (%rax)
movq -0x3d0(%rbp), %rax
movslq -0x3dc(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x250(%rbp)
movq -0x250(%rbp), %rax
vmovdqu (%rax), %xmm1
vmovdqa -0x3c0(%rbp), %xmm0
vmovdqa %xmm1, -0x280(%rbp)
vmovdqa %xmm0, -0x290(%rbp)
vmovdqa -0x280(%rbp), %xmm1
vmovdqa -0x290(%rbp), %xmm0
vmovdqa %xmm1, -0x50(%rbp)
vmovdqa %xmm0, -0x60(%rbp)
vmovdqa -0x50(%rbp), %xmm0
vmovdqa -0x60(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
movq -0x3d8(%rbp), %rax
vmovdqa %xmm0, 0x10(%rax)
movq -0x3d8(%rbp), %rax
addq $0x20, %rax
movq %rax, -0x3d8(%rbp)
movl -0x36c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x36c(%rbp)
jmp 0x22311
movq -0x2d8(%rbp), %rax
addq $0x1230, %rax           # imm = 0x1230
addq $0x42, %rax
movq %rax, -0x378(%rbp)
movq $0x20, -0x388(%rbp)
movl -0x39c(%rbp), %eax
sarl %eax
movl %eax, -0x3e0(%rbp)
movl -0x368(%rbp), %eax
movl $0xfffffff9, -0x1b8(%rbp) # imm = 0xFFFFFFF9
movl $0x0, -0x1bc(%rbp)
movl %eax, -0x1c0(%rbp)
movl -0x1c0(%rbp), %ecx
movl -0x1b8(%rbp), %eax
movl %ecx, -0x1b0(%rbp)
movl %eax, -0x1b4(%rbp)
movl -0x1b0(%rbp), %eax
cmpl -0x1b4(%rbp), %eax
jle 0x22597
movl -0x1b0(%rbp), %eax
movl %eax, -0x4ac(%rbp)
jmp 0x225a3
movl -0x1b4(%rbp), %eax
movl %eax, -0x4ac(%rbp)
movl -0x4ac(%rbp), %ecx
movl -0x1bc(%rbp), %eax
movl %ecx, -0x1a8(%rbp)
movl %eax, -0x1ac(%rbp)
movl -0x1a8(%rbp), %eax
cmpl -0x1ac(%rbp), %eax
jge 0x225d7
movl -0x1a8(%rbp), %eax
movl %eax, -0x4b0(%rbp)
jmp 0x225e3
movl -0x1ac(%rbp), %eax
movl %eax, -0x4b0(%rbp)
movl -0x4b0(%rbp), %eax
movslq %eax, %rcx
leaq 0xb4c3d(%rip), %rax     # 0xd7230
addq $0x7, %rax
addq %rcx, %rax
movq %rax, -0x4b8(%rbp)
movl -0x368(%rbp), %eax
addl $0x8, %eax
subl -0x3e0(%rbp), %eax
movl $0x0, -0x1d4(%rbp)
movl $0x7, -0x1d8(%rbp)
movl %eax, -0x1dc(%rbp)
movl -0x1dc(%rbp), %ecx
movl -0x1d4(%rbp), %eax
movl %ecx, -0x1cc(%rbp)
movl %eax, -0x1d0(%rbp)
movl -0x1cc(%rbp), %eax
cmpl -0x1d0(%rbp), %eax
jle 0x2265e
movl -0x1cc(%rbp), %eax
movl %eax, -0x4bc(%rbp)
jmp 0x2266a
movl -0x1d0(%rbp), %eax
movl %eax, -0x4bc(%rbp)
movl -0x4bc(%rbp), %ecx
movl -0x1d8(%rbp), %eax
movl %ecx, -0x1c4(%rbp)
movl %eax, -0x1c8(%rbp)
movl -0x1c4(%rbp), %eax
cmpl -0x1c8(%rbp), %eax
jge 0x2269e
movl -0x1c4(%rbp), %eax
movl %eax, -0x4c0(%rbp)
jmp 0x226aa
movl -0x1c8(%rbp), %eax
movl %eax, -0x4c0(%rbp)
movq -0x4b8(%rbp), %rax
movl -0x4c0(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x88(%rbp)
movq -0x88(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0xa0(%rbp)
vmovdqa -0xa0(%rbp), %xmm0
vmovdqa %xmm0, -0x3f0(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0x4c8(%rbp)
movl -0x3e0(%rbp), %ecx
subl $0x8, %ecx
movl -0x368(%rbp), %eax
movl $0x0, -0x1f0(%rbp)
movl %ecx, -0x1f4(%rbp)
movl %eax, -0x1f8(%rbp)
movl -0x1f8(%rbp), %ecx
movl -0x1f0(%rbp), %eax
movl %ecx, -0x1e8(%rbp)
movl %eax, -0x1ec(%rbp)
movl -0x1e8(%rbp), %eax
cmpl -0x1ec(%rbp), %eax
jle 0x2274e
movl -0x1e8(%rbp), %eax
movl %eax, -0x4cc(%rbp)
jmp 0x2275a
movl -0x1ec(%rbp), %eax
movl %eax, -0x4cc(%rbp)
movl -0x4cc(%rbp), %ecx
movl -0x1f4(%rbp), %eax
movl %ecx, -0x1e0(%rbp)
movl %eax, -0x1e4(%rbp)
movl -0x1e0(%rbp), %eax
cmpl -0x1e4(%rbp), %eax
jge 0x2278e
movl -0x1e0(%rbp), %eax
movl %eax, -0x4d0(%rbp)
jmp 0x2279a
movl -0x1e4(%rbp), %eax
movl %eax, -0x4d0(%rbp)
movq -0x4c8(%rbp), %rax
movl -0x4d0(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x3c8(%rbp)
movq -0x300(%rbp), %rax
movq %rax, -0x4d8(%rbp)
movl -0x3e0(%rbp), %ecx
subl $0x1, %ecx
movl -0x368(%rbp), %eax
addl $0x8, %eax
movl $0x0, -0x20c(%rbp)
movl %ecx, -0x210(%rbp)
movl %eax, -0x214(%rbp)
movl -0x214(%rbp), %ecx
movl -0x20c(%rbp), %eax
movl %ecx, -0x204(%rbp)
movl %eax, -0x208(%rbp)
movl -0x204(%rbp), %eax
cmpl -0x208(%rbp), %eax
jle 0x2281e
movl -0x204(%rbp), %eax
movl %eax, -0x4dc(%rbp)
jmp 0x2282a
movl -0x208(%rbp), %eax
movl %eax, -0x4dc(%rbp)
movl -0x4dc(%rbp), %ecx
movl -0x210(%rbp), %eax
movl %ecx, -0x1fc(%rbp)
movl %eax, -0x200(%rbp)
movl -0x1fc(%rbp), %eax
cmpl -0x200(%rbp), %eax
jge 0x2285e
movl -0x1fc(%rbp), %eax
movl %eax, -0x4e0(%rbp)
jmp 0x2286a
movl -0x200(%rbp), %eax
movl %eax, -0x4e0(%rbp)
movq -0x4d8(%rbp), %rax
movl -0x4e0(%rbp), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x3d0(%rbp)
movl $0x0, -0x3f4(%rbp)
movl -0x3f4(%rbp), %eax
movl -0x2e4(%rbp), %ecx
sarl %ecx
cmpl %ecx, %eax
jg 0x22b43
movq -0x2d8(%rbp), %rax
movl 0x3c(%rax), %eax
movl %eax, -0x4e4(%rbp)
movq -0x2d8(%rbp), %rax
movslq 0x40(%rax), %rax
movq -0x390(%rbp), %rcx
shlq %rcx
subq %rcx, %rax
movl %eax, %ecx
movslq -0x370(%rbp), %rax
imulq -0x390(%rbp), %rax
shlq %rax
movl $0x0, -0x228(%rbp)
movl %ecx, -0x22c(%rbp)
movl %eax, -0x230(%rbp)
movl -0x230(%rbp), %ecx
movl -0x228(%rbp), %eax
movl %ecx, -0x220(%rbp)
movl %eax, -0x224(%rbp)
movl -0x220(%rbp), %eax
cmpl -0x224(%rbp), %eax
jle 0x2292a
movl -0x220(%rbp), %eax
movl %eax, -0x4e8(%rbp)
jmp 0x22936
movl -0x224(%rbp), %eax
movl %eax, -0x4e8(%rbp)
movl -0x4e8(%rbp), %ecx
movl -0x22c(%rbp), %eax
movl %ecx, -0x218(%rbp)
movl %eax, -0x21c(%rbp)
movl -0x218(%rbp), %eax
cmpl -0x21c(%rbp), %eax
jge 0x2296a
movl -0x218(%rbp), %eax
movl %eax, -0x4ec(%rbp)
jmp 0x22976
movl -0x21c(%rbp), %eax
movl %eax, -0x4ec(%rbp)
movl -0x4e4(%rbp), %eax
movl -0x4ec(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x3f8(%rbp)
movl -0x390(%rbp), %eax
movl -0x3f8(%rbp), %ecx
addl %ecx, %eax
movl %eax, -0x3fc(%rbp)
movq -0x3c8(%rbp), %rax
movslq -0x3f8(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xa8(%rbp)
movq -0xa8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0xc0(%rbp)
vmovdqa -0xc0(%rbp), %xmm1
vmovdqa -0x3f0(%rbp), %xmm0
vmovdqa %xmm1, -0x2a0(%rbp)
vmovdqa %xmm0, -0x2b0(%rbp)
vmovdqa -0x2a0(%rbp), %xmm1
vmovdqa -0x2b0(%rbp), %xmm0
vmovdqa %xmm1, -0x30(%rbp)
vmovdqa %xmm0, -0x40(%rbp)
vmovdqa -0x30(%rbp), %xmm0
vmovdqa -0x40(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
movq -0x2d8(%rbp), %rax
movl -0x3f4(%rbp), %ecx
shll $0x2, %ecx
movslq %ecx, %rcx
vmovq %xmm0, 0x14d0(%rax,%rcx,8)
movq -0x3d0(%rbp), %rax
movslq -0x3f8(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x2d8(%rbp), %rcx
movl -0x3f4(%rbp), %eax
shll $0x5, %eax
cltq
movb %dl, 0x14d8(%rax,%rcx)
movq -0x3c8(%rbp), %rax
movslq -0x3fc(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq -0xc8(%rbp), %rax
vmovq (%rax), %xmm0
vmovdqa %xmm0, -0xe0(%rbp)
vmovdqa -0xe0(%rbp), %xmm1
vmovdqa -0x3f0(%rbp), %xmm0
vmovdqa %xmm1, -0x2c0(%rbp)
vmovdqa %xmm0, -0x2d0(%rbp)
vmovdqa -0x2c0(%rbp), %xmm1
vmovdqa -0x2d0(%rbp), %xmm0
vmovdqa %xmm1, -0x10(%rbp)
vmovdqa %xmm0, -0x20(%rbp)
vmovdqa -0x10(%rbp), %xmm0
vmovdqa -0x20(%rbp), %xmm1
vpshufb %xmm1, %xmm0, %xmm0
vmovq %xmm0, %rdx
movq -0x2d8(%rbp), %rax
movl -0x3f4(%rbp), %ecx
shll $0x2, %ecx
addl $0x56, %ecx
movslq %ecx, %rcx
movq %rdx, 0x1230(%rax,%rcx,8)
movq -0x3d0(%rbp), %rax
movslq -0x3fc(%rbp), %rcx
movb (%rax,%rcx), %dl
movq -0x2d8(%rbp), %rax
movl -0x3f4(%rbp), %ecx
shll $0x5, %ecx
addl $0x2b8, %ecx            # imm = 0x2B8
movslq %ecx, %rcx
movb %dl, 0x1230(%rax,%rcx)
movl -0x3f4(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x3f4(%rbp)
movl -0x370(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x370(%rbp)
jmp 0x2288e
movq $0x10, -0x390(%rbp)
movq -0x2d8(%rbp), %rax
addq $0x1230, %rax           # imm = 0x1230
addq $0x2a0, %rax            # imm = 0x2A0
movq %rax, -0x380(%rbp)
movq -0x2d8(%rbp), %rsi
movq 0x670(%rsi), %rax
movslq -0x2f4(%rbp), %rcx
leaq 0xa949c(%rip), %rdx     # 0xcc020
movsbl (%rcx,%rdx), %edx
sarl %edx
movzwl 0x36(%rsi), %esi
imull %esi, %edx
movslq %edx, %rdx
addq %rdx, %rax
leaq 0xa9472(%rip), %rdx     # 0xcc010
movsbl (%rcx,%rdx), %ecx
sarl %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x408(%rbp)
movq -0x2d8(%rbp), %rax
movzwl 0x36(%rax), %eax
shrl %eax
movq %rax, -0x410(%rbp)
movl -0x2e8(%rbp), %eax
andl $0x7, %eax
movl %eax, -0x414(%rbp)
movl -0x2ec(%rbp), %eax
andl $0x7, %eax
movl %eax, -0x418(%rbp)
movl -0x414(%rbp), %edx
movl $0x8, %ecx
movl %ecx, %eax
subl %edx, %eax
shll $0x8, %edx
orl %edx, %eax
movl -0x418(%rbp), %edx
subl %edx, %ecx
shll $0x10, %edx
orl %edx, %ecx
imull %ecx, %eax
vmovd %eax, %xmm0
vmovdqa %xmm0, -0x430(%rbp)
movl -0x2e0(%rbp), %edi
movl -0x2e4(%rbp), %esi
movq -0x410(%rbp), %rdx
movq -0x408(%rbp), %rcx
movq -0x390(%rbp), %r8
movq -0x380(%rbp), %r9
vmovdqa -0x430(%rbp), %xmm0
vmovdqa -0x310(%rbp), %xmm1
callq 0x22d20
movl -0x2e8(%rbp), %eax
andl $0x3, %eax
movl %eax, -0x434(%rbp)
movl -0x2ec(%rbp), %eax
andl $0x3, %eax
movl %eax, -0x438(%rbp)
movq -0x2d8(%rbp), %rax
movzwl 0x34(%rax), %eax
movq %rax, -0x440(%rbp)
movq -0x2d8(%rbp), %rax
movq 0x668(%rax), %rax
movslq -0x2f4(%rbp), %rdx
leaq 0xa9384(%rip), %rcx     # 0xcc020
movsbq (%rcx,%rdx), %rcx
imulq -0x440(%rbp), %rcx
addq %rcx, %rax
movslq -0x2f4(%rbp), %rdx
leaq 0xa9356(%rip), %rcx     # 0xcc010
movsbl (%rcx,%rdx), %ecx
movslq %ecx, %rcx
addq %rcx, %rax
movq %rax, -0x448(%rbp)
movl -0x2e0(%rbp), %edi
shll %edi
andl $0x30, %edi
movl -0x438(%rbp), %eax
shll $0x2, %eax
addl %eax, %edi
addl -0x434(%rbp), %edi
movl -0x2e4(%rbp), %esi
movq -0x388(%rbp), %rdx
movq -0x378(%rbp), %rcx
movq -0x440(%rbp), %r8
movq -0x448(%rbp), %r9
vmovdqa -0x310(%rbp), %xmm0
callq 0x23e80
addq $0x4f0, %rsp            # imm = 0x4F0
popq %rbp
retq
nop