// File: /workspace/github_c_makefile_star2_O0/phoboslab[P]pl_mpeg/./pl_mpeg.h
// Function: plm_video_idct
void plm_video_idct(int *block) {
	int
		b1, b3, b4, b6, b7, tmp1, tmp2, m0,
		x0, x1, x2, x3, x4, y3, y4, y5, y6, y7;

	// Transform columns
	for (int i = 0; i < 8; ++i) {
		b1 = block[4 * 8 + i];
		b3 = block[2 * 8 + i] + block[6 * 8 + i];
		b4 = block[5 * 8 + i] - block[3 * 8 + i];
		tmp1 = block[1 * 8 + i] + block[7 * 8 + i];
		tmp2 = block[3 * 8 + i] + block[5 * 8 + i];
		b6 = block[1 * 8 + i] - block[7 * 8 + i];
		b7 = tmp1 + tmp2;
		m0 = block[0 * 8 + i];
		x4 = ((b6 * 473 - b4 * 196 + 128) >> 8) - b7;
		x0 = x4 - (((tmp1 - tmp2) * 362 + 128) >> 8);
		x1 = m0 - b1;
		x2 = (((block[2 * 8 + i] - block[6 * 8 + i]) * 362 + 128) >> 8) - b3;
		x3 = m0 + b1;
		y3 = x1 + x2;
		y4 = x3 + b3;
		y5 = x1 - x2;
		y6 = x3 - b3;
		y7 = -x0 - ((b4 * 473 + b6 * 196 + 128) >> 8);
		block[0 * 8 + i] = b7 + y4;
		block[1 * 8 + i] = x4 + y3;
		block[2 * 8 + i] = y5 - x0;
		block[3 * 8 + i] = y6 - y7;
		block[4 * 8 + i] = y6 + y7;
		block[5 * 8 + i] = x0 + y5;
		block[6 * 8 + i] = y3 - x4;
		block[7 * 8 + i] = y4 - b7;
	}

	// Transform rows
	for (int i = 0; i < 64; i += 8) {
		b1 = block[4 + i];
		b3 = block[2 + i] + block[6 + i];
		b4 = block[5 + i] - block[3 + i];
		tmp1 = block[1 + i] + block[7 + i];
		tmp2 = block[3 + i] + block[5 + i];
		b6 = block[1 + i] - block[7 + i];
		b7 = tmp1 + tmp2;
		m0 = block[0 + i];
		x4 = ((b6 * 473 - b4 * 196 + 128) >> 8) - b7;
		x0 = x4 - (((tmp1 - tmp2) * 362 + 128) >> 8);
		x1 = m0 - b1;
		x2 = (((block[2 + i] - block[6 + i]) * 362 + 128) >> 8) - b3;
		x3 = m0 + b1;
		y3 = x1 + x2;
		y4 = x3 + b3;
		y5 = x1 - x2;
		y6 = x3 - b3;
		y7 = -x0 - ((b4 * 473 + b6 * 196 + 128) >> 8);
		block[0 + i] = (b7 + y4 + 128) >> 8;
		block[1 + i] = (x4 + y3 + 128) >> 8;
		block[2 + i] = (y5 - x0 + 128) >> 8;
		block[3 + i] = (y6 - y7 + 128) >> 8;
		block[4 + i] = (y6 + y7 + 128) >> 8;
		block[5 + i] = (x0 + y5 + 128) >> 8;
		block[6 + i] = (y3 - x4 + 128) >> 8;
		block[7 + i] = (y4 - b7 + 128) >> 8;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
movq %rdi, -0x8(%rbp)
movl $0x0, -0x54(%rbp)
cmpl $0x8, -0x54(%rbp)
jge 0x7dcd
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x20, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x10, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x54(%rbp), %edx
addl $0x30, %edx
movslq %edx, %rdx
addl (%rcx,%rdx,4), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x28, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x54(%rbp), %edx
addl $0x18, %edx
movslq %edx, %rdx
subl (%rcx,%rdx,4), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x8, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x54(%rbp), %edx
addl $0x38, %edx
movslq %edx, %rdx
addl (%rcx,%rdx,4), %eax
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x18, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x54(%rbp), %edx
addl $0x28, %edx
movslq %edx, %rdx
addl (%rcx,%rdx,4), %eax
movl %eax, -0x24(%rbp)
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x8, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x54(%rbp), %edx
addl $0x38, %edx
movslq %edx, %rdx
subl (%rcx,%rdx,4), %eax
movl %eax, -0x18(%rbp)
movl -0x20(%rbp), %eax
addl -0x24(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x28(%rbp)
imull $0x1d9, -0x18(%rbp), %eax # imm = 0x1D9
imull $0xc4, -0x14(%rbp), %ecx
subl %ecx, %eax
addl $0x80, %eax
sarl $0x8, %eax
subl -0x1c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movl -0x20(%rbp), %ecx
subl -0x24(%rbp), %ecx
imull $0x16a, %ecx, %ecx      # imm = 0x16A
addl $0x80, %ecx
sarl $0x8, %ecx
subl %ecx, %eax
movl %eax, -0x2c(%rbp)
movl -0x28(%rbp), %eax
subl -0xc(%rbp), %eax
movl %eax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x10, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x54(%rbp), %edx
addl $0x30, %edx
movslq %edx, %rdx
subl (%rcx,%rdx,4), %eax
imull $0x16a, %eax, %eax      # imm = 0x16A
addl $0x80, %eax
sarl $0x8, %eax
subl -0x10(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x28(%rbp), %eax
addl -0xc(%rbp), %eax
movl %eax, -0x38(%rbp)
movl -0x30(%rbp), %eax
addl -0x34(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x38(%rbp), %eax
addl -0x10(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x30(%rbp), %eax
subl -0x34(%rbp), %eax
movl %eax, -0x48(%rbp)
movl -0x38(%rbp), %eax
subl -0x10(%rbp), %eax
movl %eax, -0x4c(%rbp)
xorl %eax, %eax
subl -0x2c(%rbp), %eax
imull $0x1d9, -0x14(%rbp), %ecx # imm = 0x1D9
imull $0xc4, -0x18(%rbp), %edx
addl %edx, %ecx
addl $0x80, %ecx
sarl $0x8, %ecx
subl %ecx, %eax
movl %eax, -0x50(%rbp)
movl -0x1c(%rbp), %edx
addl -0x44(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x3c(%rbp), %edx
addl -0x40(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x8, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x48(%rbp), %edx
subl -0x2c(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x10, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x4c(%rbp), %edx
subl -0x50(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x18, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x4c(%rbp), %edx
addl -0x50(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x20, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x2c(%rbp), %edx
addl -0x48(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x28, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x40(%rbp), %edx
subl -0x3c(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x30, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x44(%rbp), %edx
subl -0x1c(%rbp), %edx
movq -0x8(%rbp), %rax
movl -0x54(%rbp), %ecx
addl $0x38, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x54(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x54(%rbp)
jmp 0x7b5f
movl $0x0, -0x58(%rbp)
cmpl $0x40, -0x58(%rbp)
jge 0x808a
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x4, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0xc(%rbp)
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x58(%rbp), %edx
addl $0x6, %edx
movslq %edx, %rdx
addl (%rcx,%rdx,4), %eax
movl %eax, -0x10(%rbp)
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x5, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x58(%rbp), %edx
addl $0x3, %edx
movslq %edx, %rdx
subl (%rcx,%rdx,4), %eax
movl %eax, -0x14(%rbp)
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x58(%rbp), %edx
addl $0x7, %edx
movslq %edx, %rdx
addl (%rcx,%rdx,4), %eax
movl %eax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x58(%rbp), %edx
addl $0x5, %edx
movslq %edx, %rdx
addl (%rcx,%rdx,4), %eax
movl %eax, -0x24(%rbp)
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x58(%rbp), %edx
addl $0x7, %edx
movslq %edx, %rdx
subl (%rcx,%rdx,4), %eax
movl %eax, -0x18(%rbp)
movl -0x20(%rbp), %eax
addl -0x24(%rbp), %eax
movl %eax, -0x1c(%rbp)
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movl %eax, -0x28(%rbp)
imull $0x1d9, -0x18(%rbp), %eax # imm = 0x1D9
imull $0xc4, -0x14(%rbp), %ecx
subl %ecx, %eax
addl $0x80, %eax
sarl $0x8, %eax
subl -0x1c(%rbp), %eax
movl %eax, -0x3c(%rbp)
movl -0x3c(%rbp), %eax
movl -0x20(%rbp), %ecx
subl -0x24(%rbp), %ecx
imull $0x16a, %ecx, %ecx      # imm = 0x16A
addl $0x80, %ecx
sarl $0x8, %ecx
subl %ecx, %eax
movl %eax, -0x2c(%rbp)
movl -0x28(%rbp), %eax
subl -0xc(%rbp), %eax
movl %eax, -0x30(%rbp)
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movl (%rax,%rcx,4), %eax
movq -0x8(%rbp), %rcx
movl -0x58(%rbp), %edx
addl $0x6, %edx
movslq %edx, %rdx
subl (%rcx,%rdx,4), %eax
imull $0x16a, %eax, %eax      # imm = 0x16A
addl $0x80, %eax
sarl $0x8, %eax
subl -0x10(%rbp), %eax
movl %eax, -0x34(%rbp)
movl -0x28(%rbp), %eax
addl -0xc(%rbp), %eax
movl %eax, -0x38(%rbp)
movl -0x30(%rbp), %eax
addl -0x34(%rbp), %eax
movl %eax, -0x40(%rbp)
movl -0x38(%rbp), %eax
addl -0x10(%rbp), %eax
movl %eax, -0x44(%rbp)
movl -0x30(%rbp), %eax
subl -0x34(%rbp), %eax
movl %eax, -0x48(%rbp)
movl -0x38(%rbp), %eax
subl -0x10(%rbp), %eax
movl %eax, -0x4c(%rbp)
xorl %eax, %eax
subl -0x2c(%rbp), %eax
imull $0x1d9, -0x14(%rbp), %ecx # imm = 0x1D9
imull $0xc4, -0x18(%rbp), %edx
addl %edx, %ecx
addl $0x80, %ecx
sarl $0x8, %ecx
subl %ecx, %eax
movl %eax, -0x50(%rbp)
movl -0x1c(%rbp), %edx
addl -0x44(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x0, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x3c(%rbp), %edx
addl -0x40(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x1, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x48(%rbp), %edx
subl -0x2c(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x2, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x4c(%rbp), %edx
subl -0x50(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x3, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x4c(%rbp), %edx
addl -0x50(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x4, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x2c(%rbp), %edx
addl -0x48(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x5, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x40(%rbp), %edx
subl -0x3c(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x6, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x44(%rbp), %edx
subl -0x1c(%rbp), %edx
addl $0x80, %edx
sarl $0x8, %edx
movq -0x8(%rbp), %rax
movl -0x58(%rbp), %ecx
addl $0x7, %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
movl -0x58(%rbp), %eax
addl $0x8, %eax
movl %eax, -0x58(%rbp)
jmp 0x7dd4
popq %rbp
retq
nopl (%rax)