// File: /workspace/github_cpp_makefile_star2_O2/OtherCrashOverride[P]xu4enc/./M2M.h
// Function: M2M::CreateOutputBuffers()
void CreateOutputBuffers()
	{
		// Request buffers
		v4l2_requestbuffers requestBuffers = { 0 };
		requestBuffers.count = BUFFER_COUNT;
		requestBuffers.type = V4L2_BUF_TYPE_VIDEO_CAPTURE_MPLANE;
		requestBuffers.memory = V4L2_MEMORY_MMAP;

		int io = ioctl(mfc_fd, VIDIOC_REQBUFS, &requestBuffers);
		if (io < 0)
		{
			throw Exception("VIDIOC_REQBUFS failed.");
		}

		if (requestBuffers.count > BUFFER_COUNT)
		{
			throw Exception("too many buffers.");
		}
		else
		{
			fprintf(stderr, "CreateOutputBuffers: requestBuffers.count=%d\n", requestBuffers.count);
		}


		// Map buffers
		//BufferMapping bufferMappings[requestBuffers.count] = { 0 };
		for (int i = 0; i < requestBuffers.count; ++i)
		{
			v4l2_plane planes[VIDEO_MAX_PLANES];

			v4l2_buffer buffer = { 0 };
			buffer.type = requestBuffers.type;
			buffer.memory = V4L2_MEMORY_MMAP;
			buffer.index = i;
			buffer.m.planes = planes;
			buffer.length = 1;

			io = ioctl(mfc_fd, VIDIOC_QUERYBUF, &buffer);
			if (io < 0)
			{
				throw Exception("VIDIOC_QUERYBUF failed.");
			}

			BufferMapping mapping = { 0 };

			mapping.Length0 = buffer.m.planes[0].length;
			mapping.Start0 = mmap(NULL, mapping.Length0,
				PROT_READ | PROT_WRITE, /* recommended */
				MAP_SHARED,             /* recommended */
				mfc_fd,
				buffer.m.planes[0].m.mem_offset);
			if (mapping.Start0 == MAP_FAILED)
			{
				throw Exception("mmap 0 failed.");
			}

			//mapping.Length1 = buffer.m.planes[1].length;
			//mapping.Start1 = mmap(NULL, mapping.Length1,
			//	PROT_READ | PROT_WRITE, /* recommended */
			//	MAP_SHARED,             /* recommended */
			//	mfc_fd,
			//	buffer.m.planes[1].m.mem_offset);
			//if (mapping.Start1 == MAP_FAILED)
			//{
			//	throw Exception("mmap 1 failed.");
			//}

			outputBuffers.push_back(mapping);

			// Queue buffers
			int ret = ioctl(mfc_fd, VIDIOC_QBUF, &buffer);
			if (ret != 0)
			{
				throw Exception("VIDIOC_QBUF failed.");
			}
		}
	}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x2a8, %rsp            # imm = 0x2A8
movq %rdi, %rbx
leaq -0x4c(%rbp), %rdx
andq $0x0, 0xc(%rdx)
movabsq $0x900000004, %rax      # imm = 0x900000004
movq %rax, (%rdx)
movl $0x1, 0x8(%rdx)
movl 0x8(%rdi), %edi
movl $0xc0145608, %esi       # imm = 0xC0145608
xorl %eax, %eax
callq 0x2110
testl %eax, %eax
js 0x34c2
movl -0x4c(%rbp), %edx
cmpl $0x5, %edx
jae 0x34d6
movq 0x3c76(%rip), %rax      # 0x6fd8
movq (%rax), %rdi
leaq 0x10f0(%rip), %rsi      # 0x445c
xorl %eax, %eax
callq 0x2120
leaq 0x38(%rbx), %rax
movq %rax, -0x30(%rbp)
leaq -0xc0(%rbp), %r15
xorps %xmm0, %xmm0
pushq $0x1
popq %r12
movl $0xc0145608, %r13d      # imm = 0xC0145608
leaq 0x440001(%r13), %rax
movq %rax, -0x38(%rbp)
addq $0x440007, %r13         # imm = 0x440007
xorl %r14d, %r14d
cmpl -0x4c(%rbp), %r14d
jae 0x3474
movups %xmm0, 0x40(%r15)
movups %xmm0, 0x30(%r15)
movups %xmm0, 0x20(%r15)
movups %xmm0, 0x10(%r15)
movups %xmm0, (%r15)
movl -0x48(%rbp), %eax
movl %eax, -0xc4(%rbp)
movl %r12d, -0x8c(%rbp)
movl %r14d, -0xc8(%rbp)
leaq -0x2d0(%rbp), %rax
movq %rax, -0x88(%rbp)
movl %r12d, -0x80(%rbp)
movl 0x8(%rbx), %edi
movq -0x38(%rbp), %rsi
leaq -0xc8(%rbp), %rdx
xorl %eax, %eax
callq 0x2110
testl %eax, %eax
js 0x349a
xorps %xmm0, %xmm0
movaps %xmm0, -0x60(%rbp)
movaps %xmm0, -0x70(%rbp)
movq -0x88(%rbp), %rax
movl 0x4(%rax), %esi
movq %rsi, -0x68(%rbp)
movl 0x8(%rbx), %r8d
movl 0x8(%rax), %r9d
xorl %edi, %edi
pushq $0x3
popq %rdx
movl %r12d, %ecx
callq 0x21d0
movq %rax, -0x70(%rbp)
cmpq $-0x1, %rax
je 0x34ae
movq -0x30(%rbp), %rdi
leaq -0x70(%rbp), %rsi
callq 0x38e2
movl 0x8(%rbx), %edi
movq %r13, %rsi
leaq -0xc8(%rbp), %rdx
xorl %eax, %eax
callq 0x2110
testl %eax, %eax
jne 0x3486
incl %r14d
xorps %xmm0, %xmm0
jmp 0x33a4
addq $0x2a8, %rsp            # imm = 0x2A8
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
pushq $0x8
popq %rdi
callq 0x2090
movq %rax, %rbx
leaq 0xff2(%rip), %rsi       # 0x448a
jmp 0x34e8
pushq $0x8
popq %rdi
callq 0x2090
movq %rax, %rbx
leaq 0xf30(%rip), %rsi       # 0x43dc
jmp 0x34e8
pushq $0x8
popq %rdi
callq 0x2090
movq %rax, %rbx
leaq 0xf34(%rip), %rsi       # 0x43f4
jmp 0x34e8
pushq $0x8
popq %rdi
callq 0x2090
movq %rax, %rbx
leaq 0xeb2(%rip), %rsi       # 0x4386
jmp 0x34e8
pushq $0x8
popq %rdi
callq 0x2090
movq %rax, %rbx
leaq 0xeb5(%rip), %rsi       # 0x439d
movq %rax, %rdi
callq 0x264e
leaq 0x3879(%rip), %rsi      # 0x6d70
movq 0x3aea(%rip), %rdx      # 0x6fe8
movq %rbx, %rdi
callq 0x21b0