// File: rpavlik[P]edid-decode/parse-cta-block.cpp
// Function: audio_ext_format[abi:cxx11](unsigned char)
static std::string audio_ext_format(unsigned char x)
{
	if (x >= 1 && x <= 3)
		fail("Obsolete Audio Ext Format 0x%02x.\n", x);
	switch (x) {
	case 1: return "HE AAC (Obsolete)";
	case 2: return "HE AAC v2 (Obsolete)";
	case 3: return "MPEG Surround (Obsolete)";
	case 4: return "MPEG-4 HE AAC";
	case 5: return "MPEG-4 HE AAC v2";
	case 6: return "MPEG-4 AAC LC";
	case 7: return "DRA";
	case 8: return "MPEG-4 HE AAC + MPEG Surround";
	case 10: return "MPEG-4 AAC LC + MPEG Surround";
	case 11: return "MPEG-H 3D Audio";
	case 12: return "AC-4";
	case 13: return "L-PCM 3D Audio";
	default: break;
	}
	fail("Unknown Audio Ext Format 0x%02x.\n", x);
	return std::string("Unknown Audio Ext Format (") + utohex(x) + ")";
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rdi, -0xa0(%rbp)
movb %sil, %al
movq %rdi, %rcx
movq %rcx, -0x98(%rbp)
movq %rdi, -0x8(%rbp)
movb %al, -0x9(%rbp)
movzbl -0x9(%rbp), %eax
cmpl $0x1, %eax
jl 0x1f07c
movzbl -0x9(%rbp), %eax
cmpl $0x3, %eax
jg 0x1f07c
movzbl -0x9(%rbp), %edx
xorl %edi, %edi
leaq 0x1e58d(%rip), %rsi     # 0x3d602
movb $0x0, %al
callq 0x47d0
movzbl -0x9(%rbp), %eax
decl %eax
movl %eax, %ecx
movq %rcx, -0xa8(%rbp)
subl $0xc, %eax
ja 0x1f49b
movq -0xa8(%rbp), %rax
leaq 0x16f56(%rip), %rcx     # 0x35ff8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq -0xa(%rbp), %rdi
movq %rdi, -0xb0(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xb0(%rbp), %rdx
leaq 0x1e555(%rip), %rsi     # 0x3d625
callq 0xb510
jmp 0x1f0d7
leaq -0xa(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0xa(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x1d(%rbp), %rdi
movq %rdi, -0xb8(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xb8(%rbp), %rdx
leaq 0x1e513(%rip), %rsi     # 0x3d637
callq 0xb510
jmp 0x1f12b
leaq -0x1d(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1d(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x1e(%rbp), %rdi
movq %rdi, -0xc0(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xc0(%rbp), %rdx
leaq 0x1e4d4(%rip), %rsi     # 0x3d64c
callq 0xb510
jmp 0x1f17f
leaq -0x1e(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1e(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x1f(%rbp), %rdi
movq %rdi, -0xc8(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xc8(%rbp), %rdx
leaq 0x1e499(%rip), %rsi     # 0x3d665
callq 0xb510
jmp 0x1f1d3
leaq -0x1f(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x1f(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x20(%rbp), %rdi
movq %rdi, -0xd0(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xd0(%rbp), %rdx
leaq 0x1e453(%rip), %rsi     # 0x3d673
callq 0xb510
jmp 0x1f227
leaq -0x20(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x20(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x21(%rbp), %rdi
movq %rdi, -0xd8(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xd8(%rbp), %rdx
leaq 0x1e410(%rip), %rsi     # 0x3d684
callq 0xb510
jmp 0x1f27b
leaq -0x21(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x21(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x22(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xe0(%rbp), %rdx
leaq 0x1e3ca(%rip), %rsi     # 0x3d692
callq 0xb510
jmp 0x1f2cf
leaq -0x22(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x22(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x23(%rbp), %rdi
movq %rdi, -0xe8(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xe8(%rbp), %rdx
leaq 0x1e37a(%rip), %rsi     # 0x3d696
callq 0xb510
jmp 0x1f323
leaq -0x23(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x23(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x24(%rbp), %rdi
movq %rdi, -0xf0(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xf0(%rbp), %rdx
leaq 0x1e344(%rip), %rsi     # 0x3d6b4
callq 0xb510
jmp 0x1f377
leaq -0x24(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x24(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x25(%rbp), %rdi
movq %rdi, -0xf8(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0xf8(%rbp), %rdx
leaq 0x1e30e(%rip), %rsi     # 0x3d6d2
callq 0xb510
jmp 0x1f3cb
leaq -0x25(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x25(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x26(%rbp), %rdi
movq %rdi, -0x100(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0x100(%rbp), %rdx
leaq 0x1e2ca(%rip), %rsi     # 0x3d6e2
callq 0xb510
jmp 0x1f41f
leaq -0x26(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x26(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
leaq -0x27(%rbp), %rdi
movq %rdi, -0x108(%rbp)
callq 0x4560
movq -0xa0(%rbp), %rdi
movq -0x108(%rbp), %rdx
leaq 0x1e27b(%rip), %rsi     # 0x3d6e7
callq 0xb510
jmp 0x1f473
leaq -0x27(%rbp), %rdi
callq 0x4370
jmp 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
leaq -0x27(%rbp), %rdi
callq 0x4370
jmp 0x1f5b4
jmp 0x1f49d
movzbl -0x9(%rbp), %edx
leaq 0x1e24e(%rip), %rsi     # 0x3d6f6
xorl %edi, %edi
movb %dil, %al
callq 0x47d0
leaq -0x69(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x4560
movq -0x110(%rbp), %rdx
leaq 0x1e248(%rip), %rsi     # 0x3d718
leaq -0x68(%rbp), %rdi
callq 0xb510
jmp 0x1f4db
movzbl -0x9(%rbp), %esi
leaq -0x90(%rbp), %rdi
callq 0x7530
jmp 0x1f4ed
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
leaq -0x90(%rbp), %rdx
callq 0xb7b0
jmp 0x1f503
movq -0xa0(%rbp), %rdi
leaq 0x1d404(%rip), %rdx     # 0x3c915
leaq -0x48(%rbp), %rsi
callq 0xb4c0
jmp 0x1f51c
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 0x1f5a4
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1f599
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1f590
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x18(%rbp)
movl %eax, -0x1c(%rbp)
jmp 0x1f584
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 0x1f5b4
movq -0x98(%rbp), %rax
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x18(%rbp), %rdi
callq 0x4550
nopl (%rax)