// File: rpavlik[P]edid-decode/parse-cta-block.cpp
// Function: display_use_case[abi:cxx11](unsigned char)
static std::string display_use_case(unsigned char x)
{
	switch (x) {
	case 1: return "Test equipment";
	case 2: return "Generic display";
	case 3: return "Television display";
	case 4: return "Desktop productivity display";
	case 5: return "Desktop gaming display";
	case 6: return "Presentation display";
	case 7: return "Virtual reality headset";
	case 8: return "Augmented reality";
	case 16: return "Video wall display";
	case 17: return "Medical imaging display";
	case 18: return "Dedicated gaming display";
	case 19: return "Dedicated video monitor display";
	case 20: return "Accessory display";
	default: break;
	}
	fail("Unknown Display product primary use case 0x%02x.\n", x);
	return std::string("Unknown display use case (") + utohex(x) + ")";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0xa8(%rbp)
movb %sil, %al
movq %rdi, %rcx
movq %rcx, -0xa0(%rbp)
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0x98(%rbp)
subl $0x13, %eax
ja 0x1fdc9
movq -0x98(%rbp), %rax
leaq 0x166c8(%rip), %rcx     # 0x36044
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xa(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x1dff9(%rip), %rsi     # 0x3d9a3
callq 0xb510
jmp 0x1f9b1
leaq -0xa(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xa(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x1d(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x1dfb4(%rip), %rsi     # 0x3d9b2
callq 0xb510
jmp 0x1fa05
leaq -0x1d(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1d(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x1e(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xc0(%rbp), %rdx
leaq 0x1df70(%rip), %rsi     # 0x3d9c2
callq 0xb510
jmp 0x1fa59
leaq -0x1e(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1e(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x1f(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xc8(%rbp), %rdx
leaq 0x1df2f(%rip), %rsi     # 0x3d9d5
callq 0xb510
jmp 0x1faad
leaq -0x1f(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1f(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x20(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xd0(%rbp), %rdx
leaq 0x1def8(%rip), %rsi     # 0x3d9f2
callq 0xb510
jmp 0x1fb01
leaq -0x20(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x21(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xd8(%rbp), %rdx
leaq 0x1debb(%rip), %rsi     # 0x3da09
callq 0xb510
jmp 0x1fb55
leaq -0x21(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x21(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x22(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xe0(%rbp), %rdx
leaq 0x1de7c(%rip), %rsi     # 0x3da1e
callq 0xb510
jmp 0x1fba9
leaq -0x22(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x22(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x23(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xe8(%rbp), %rdx
leaq 0x1de40(%rip), %rsi     # 0x3da36
callq 0xb510
jmp 0x1fbfd
leaq -0x23(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x23(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x24(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xf0(%rbp), %rdx
leaq 0x1ddfe(%rip), %rsi     # 0x3da48
callq 0xb510
jmp 0x1fc51
leaq -0x24(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x24(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x25(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0xf8(%rbp), %rdx
leaq 0x1ddbd(%rip), %rsi     # 0x3da5b
callq 0xb510
jmp 0x1fca5
leaq -0x25(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x25(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x26(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0x100(%rbp), %rdx
leaq 0x1dd81(%rip), %rsi     # 0x3da73
callq 0xb510
jmp 0x1fcf9
leaq -0x26(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x26(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x27(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0x108(%rbp), %rdx
leaq 0x1dd46(%rip), %rsi     # 0x3da8c
callq 0xb510
jmp 0x1fd4d
leaq -0x27(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x27(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
leaq -0x28(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x4560
movq -0xa8(%rbp), %rdi
movq -0x110(%rbp), %rdx
leaq 0x1dd12(%rip), %rsi     # 0x3daac
callq 0xb510
jmp 0x1fda1
leaq -0x28(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
jmp 0x1fdcb
movzbl -0x9(%rbp), %edx
leaq 0x1dce8(%rip), %rsi     # 0x3dabe
xorl %edi, %edi
movb %dil, %al
callq 0x47d0
leaq -0x69(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x4560
movq -0x118(%rbp), %rdx
leaq 0x1dcf2(%rip), %rsi     # 0x3daf0
leaq -0x68(%rbp), %rdi
callq 0xb510
jmp 0x1fe09
movzbl -0x9(%rbp), %esi
leaq -0x90(%rbp), %rdi
callq 0x7530
jmp 0x1fe1b
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0xb7b0
jmp 0x1fe31
movq -0xa8(%rbp), %rdi
leaq 0x1cad6(%rip), %rdx     # 0x3c915
leaq -0x48(%rbp), %rsi
callq 0xb4c0
jmp 0x1fe4a
leaq -0x48(%rbp), %rdi
callq 0x41f0
leaq -0x90(%rbp), %rdi
callq 0x41f0
leaq -0x68(%rbp), %rdi
callq 0x41f0
leaq -0x69(%rbp), %rdi
callq 0x4370
jmp 0x1fed2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1fec7
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1febe
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1feb2
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x41f0
leaq -0x90(%rbp), %rdi
callq 0x41f0
leaq -0x68(%rbp), %rdi
callq 0x41f0
leaq -0x69(%rbp), %rdi
callq 0x4370
jmp 0x1fee2
movq -0xa0(%rbp), %rax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x4550
nopl (%rax,%rax)