// File: /workspace/github_cpp_makefile_star2_O2/rpavlik[P]edid-decode/parse-cta-block.cpp
// Function: edid_state::cta_block(unsigned char const*, bool)
void edid_state::cta_block(const unsigned char *x, bool duplicate)
{
	unsigned length = x[0] & 0x1f;
	const char *name;
	unsigned oui;
	bool reverse = false;
	bool audio_block = false;

	switch ((x[0] & 0xe0) >> 5) {
	case 0x01:
		data_block = "Audio Data Block";
		printf("  %s:\n", data_block.c_str());
		cta_audio_block(x + 1, length);
		audio_block = true;
		break;
	case 0x02:
		data_block = "Video Data Block";
		printf("  %s:\n", data_block.c_str());
		cta_svd(x + 1, length, false);
		break;
	case 0x03:
		oui = (x[3] << 16) + (x[2] << 8) + x[1];
		name = oui_name(oui);
		if (!name) {
			name = oui_name(oui, true);
			if (name)
				reverse = true;
		}
		if (!name) {
			printf("  Vendor-Specific Data Block, OUI %s:\n", ouitohex(oui).c_str());
			hex_block("    ", x + 4, length - 3);
			data_block.clear();
			warn("Unknown Vendor-Specific Data Block, OUI %s.\n",
			     ouitohex(oui).c_str());
			return;
		}
		data_block = std::string("Vendor-Specific Data Block (") + name + ")";
		if (reverse)
			fail((std::string("OUI ") + ouitohex(oui) + " is in the wrong byte order\n").c_str());
		printf("  %s, OUI %s:\n", data_block.c_str(), ouitohex(oui).c_str());
		if (oui == 0x000c03) {
			cta_hdmi_block(x + 1, length);
			cta.last_block_was_hdmi_vsdb = 1;
			cta.first_block = 0;
			// The HDMI OUI is present, so this EDID represents an HDMI
			// interface. And HDMI interfaces must use EDID version 1.3
			// according to the HDMI Specification, so check for this.
			if (base.edid_minor != 3)
				fail("The HDMI Specification requires EDID 1.3 instead of 1.%u.\n",
				     base.edid_minor);
			return;
		}
		if (oui == 0xc45dd8) {
			if (!cta.last_block_was_hdmi_vsdb)
				fail("HDMI Forum VSDB did not immediately follow the HDMI VSDB.\n");
			if (cta.have_hf_scdb || cta.have_hf_vsdb)
				fail("Duplicate HDMI Forum VSDB/SCDB.\n");
			cta_hf_scdb(x + 4, length - 3);
			cta.have_hf_vsdb = 1;
			break;
		}
		if (oui == 0x00001a) {
			cta_amd(x + 4, length - 3);
			break;
		}
		if (oui == 0xca125c && length == 0x15) {
			cta_microsoft(x + 4, length - 3);
			break;
		}
		hex_block("    ", x + 4, length - 3);
		break;
	case 0x04:
		data_block = "Speaker Allocation Data Block";
		printf("  %s:\n", data_block.c_str());
		cta_sadb(x + 1, length);
		audio_block = true;
		if (duplicate)
			fail("Only one instance of this Data Block is allowed.\n");
		break;
	case 0x05:
		data_block = "VESA Display Transfer Characteristics Data Block";
		printf("  %s:\n", data_block.c_str());
		cta_vesa_dtcdb(x + 1, length);
		if (duplicate)
			fail("Only one instance of this Data Block is allowed.\n");
		break;
	case 0x07:
		cta_ext_block(x + 1, length - 1, duplicate);
		break;
	default: {
		unsigned tag = (*x & 0xe0) >> 5;
		unsigned length = *x & 0x1f;

		printf("  Unknown CTA-861 tag 0x%02x, length %u\n", tag, length);
		hex_block("    ", x + 1, length);
		data_block.clear();
		warn("Unknown CTA-861 Data Block %u.\n", tag);
		break;
	}
	}

	// See Table 52 of CTA-861-G for a description of Byte 3
	if (audio_block && !(cta.byte3 & 0x40))
		fail("audio information is present, but bit 6 of Byte 3 of the CTA-861 Extension header indicates no Basic Audio support.\n");
	cta.first_block = 0;
	cta.last_block_was_hdmi_vsdb = 0;
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0xa8, %rsp
movq %rsi, %r14
movq %rdi, %r15
movzbl (%rsi), %r12d
movl %r12d, %r13d
andl $0x1f, %r13d
shrl $0x5, %r12d
leal -0x1(%r12), %eax
cmpl $0x6, %eax
ja 0x100d6
movl %edx, %ebp
leaq 0x109c7(%rip), %rcx     # 0x209fc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x30(%r15), %rdi
leaq 0x14d27(%rip), %rsi     # 0x24d70
callq 0x3460
movq %r15, 0x60(%rsp)
movq 0x30(%r15), %rsi
leaq 0xedad(%rip), %rdi      # 0x1ee0b
xorl %eax, %eax
callq 0x3030
movzbl %r13b, %eax
movb $0x3, %cl
divb %cl
movzbl %ah, %eax
testb %al, %al
je 0x104a2
leaq 0x16e22(%rip), %rsi     # 0x26ea1
xorl %edi, %edi
movl %r13d, %edx
xorl %eax, %eax
callq 0x362c
jmp 0x101bf
movzwl 0x2(%r14), %eax
shll $0x8, %eax
movzbl 0x1(%r14), %ebp
orl %eax, %ebp
xorl %ebx, %ebx
movl %ebp, %edi
xorl %esi, %esi
callq 0x4e65
testq %rax, %rax
je 0x102df
movq %rax, %r12
jmp 0x102f8
incq %r14
leal -0x1(%r13), %edx
movzbl %bpl, %ecx
movq %r15, %rdi
movq %r14, %rsi
callq 0xdf32
jmp 0x10bbf
leaq 0x152b3(%rip), %rdi     # 0x25390
movl %r12d, %esi
movl %r13d, %edx
xorl %eax, %eax
callq 0x3030
incq %r14
leaq 0xf3a3(%rip), %rdi      # 0x1f497
pushq $0x1
popq %rbp
pushq $0x10
popq %r8
movq %r14, %rsi
movl %r13d, %edx
movl %ebp, %ecx
callq 0x4fc1
andq $0x0, 0x38(%r15)
movq 0x30(%r15), %rax
movb $0x0, (%rax)
leaq 0x1529e(%rip), %rsi     # 0x253b9
movl %ebp, %edi
movl %r12d, %edx
xorl %eax, %eax
callq 0x362c
jmp 0x10bbf
leaq 0x30(%r15), %rdi
leaq 0x14bcd(%rip), %rsi     # 0x24d04
callq 0x3460
movq 0x30(%r15), %rsi
leaq 0xecc4(%rip), %rdi      # 0x1ee0b
xorl %eax, %eax
callq 0x3030
incq %r14
movq %r15, %rdi
movq %r14, %rsi
movl %r13d, %edx
xorl %ecx, %ecx
callq 0xc16a
jmp 0x10bbf
leaq 0x30(%r15), %rdi
leaq 0x151d0(%rip), %rsi     # 0x25341
callq 0x3460
movq %r15, 0x60(%rsp)
movq 0x30(%r15), %rsi
leaq 0xec85(%rip), %rdi      # 0x1ee0b
xorl %eax, %eax
callq 0x3030
cmpl $0x2, %r13d
ja 0x10299
leaq 0x13fb1(%rip), %rsi     # 0x2414f
xorl %edi, %edi
movl %r13d, %edx
xorl %eax, %eax
callq 0x362c
testb %bpl, %bpl
je 0x101bf
leaq 0x14dba(%rip), %rsi     # 0x24f70
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
movq 0x60(%rsp), %r15
testb $0x40, 0x2c2(%r15)
jne 0x10bbf
leaq 0x14dc9(%rip), %rsi     # 0x24fa2
jmp 0x10bb6
leaq 0x30(%r15), %rdi
leaq 0x15176(%rip), %rsi     # 0x2535f
callq 0x3460
movq 0x30(%r15), %rsi
leaq 0xec12(%rip), %rdi      # 0x1ee0b
xorl %eax, %eax
callq 0x3030
cmpl $0x1f, %r13d
ja 0x10b97
movl $0x80008080, %eax       # imm = 0x80008080
btl %r13d, %eax
jae 0x10b97
movq %r15, 0x60(%rsp)
movzbl 0x1(%r14), %eax
shrl $0x6, %eax
leaq 0x13d03(%rip), %rcx     # 0x23f30
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
xorl %eax, %eax
callq 0x3030
movzbl 0x1(%r14), %r12d
andl $0x3f, %r12d
leaq 0x17339(%rip), %rdi     # 0x27584
movl %r12d, %esi
xorl %eax, %eax
callq 0x3030
movl %r13d, %ebx
pushq $0x1
popq %r13
leaq 0x15c44(%rip), %r15     # 0x25ea7
cmpq %rbx, %r13
jae 0x10283
movzbl 0x1(%r14,%r13), %eax
addl %eax, %r12d
movq %r15, %rdi
movl %r12d, %esi
xorl %eax, %eax
callq 0x3030
incq %r13
jmp 0x10263
leaq 0x1832d(%rip), %rdi     # 0x285b7
callq 0x33b0
movq 0x60(%rsp), %r15
jmp 0x10baa
movzwl 0x2(%r14), %eax
shll $0x8, %eax
movzbl 0x1(%r14), %ebx
orl %eax, %ebx
leaq 0x239c1(%rip), %r15     # 0x33c70
leaq 0x14471(%rip), %r14     # 0x24727
xorl %r12d, %r12d
cmpq $0x15, %r12
je 0x101aa
btl %r12d, %ebx
jae 0x102d6
movq (%r15), %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3030
incq %r12
addq $0x8, %r15
jmp 0x102b9
pushq $0x1
popq %rsi
movl %ebp, %edi
callq 0x4e65
movq %rax, %r12
testq %rax, %rax
setne %bl
je 0x10e09
leaq 0x14faf(%rip), %rsi     # 0x252ae
leaq 0x88(%rsp), %rdi
leaq 0x38(%rsp), %rdx
callq 0x75c4
leaq 0x68(%rsp), %rdi
leaq 0x88(%rsp), %rsi
movq %r12, %rdx
callq 0x75a4
movq %r13, 0x10(%rsp)
leaq 0x1657b(%rip), %rdx     # 0x268ad
leaq 0x18(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x75a4
leaq 0x30(%r15), %r12
leaq 0x18(%rsp), %r13
movq %r12, %rdi
movq %r13, %rsi
callq 0x32f0
movq %r13, %rdi
callq 0x3130
leaq 0x68(%rsp), %rdi
callq 0x3130
leaq 0x88(%rsp), %rdi
callq 0x3130
testb %bl, %bl
je 0x10407
leaq 0x1a4e5(%rip), %rsi     # 0x2a868
leaq 0x88(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x75c4
leaq 0x38(%rsp), %rdi
movl %ebp, %esi
callq 0x4f51
leaq 0x68(%rsp), %rdi
leaq 0x88(%rsp), %rsi
leaq 0x38(%rsp), %rdx
callq 0x76b4
leaq 0x14d1d(%rip), %rdx     # 0x250dc
leaq 0x18(%rsp), %rdi
leaq 0x68(%rsp), %rsi
callq 0x75a4
movq 0x18(%rsp), %rsi
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
leaq 0x18(%rsp), %rdi
callq 0x3130
leaq 0x68(%rsp), %rdi
callq 0x3130
leaq 0x38(%rsp), %rdi
callq 0x3130
leaq 0x88(%rsp), %rdi
callq 0x3130
movq (%r12), %r12
leaq 0x18(%rsp), %r13
movq %r13, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%r13), %rdx
leaq 0x14cd4(%rip), %rdi     # 0x250f9
movq %r12, %rsi
xorl %eax, %eax
callq 0x3030
movq %r13, %rdi
callq 0x3130
cmpl $0x1a, %ebp
je 0x10c38
cmpl $0xc45dd8, %ebp         # imm = 0xC45DD8
movq 0x10(%rsp), %rbx
je 0x10be1
cmpl $0xc03, %ebp            # imm = 0xC03
jne 0x10d6f
incq %r14
movq %r15, %rdi
movq %r14, %rsi
movl %ebx, %edx
callq 0xce8c
movb $0x1, 0x2d2(%r15)
movb $0x0, 0x2d5(%r15)
movl 0x88(%r15), %edx
cmpl $0x3, %edx
je 0x10bcf
leaq 0x14e37(%rip), %rsi     # 0x252cb
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
jmp 0x10bcf
leaq 0x18(%rsp), %rcx
leaq 0x38(%rsp), %rbx
xorl %r15d, %r15d
movq %r13, 0x10(%rsp)
cmpq %r13, %r15
jae 0x101bf
movzbl 0x1(%r14,%r15), %r12d
shrl $0x3, %r12d
andl $0xf, %r12d
movzbl %r12b, %ebp
cmpl $0xf, %r12d
je 0x104ff
testl %r12d, %r12d
jne 0x10568
leaq 0x180be(%rip), %rdi     # 0x285a3
callq 0x33b0
xorl %edi, %edi
leaq 0x169d5(%rip), %rsi     # 0x26ec8
xorl %eax, %eax
callq 0x362c
jmp 0x107e9
movzbl 0x3(%r14,%r15), %r8d
shrl $0x3, %r8d
leal -0x1(%r8), %eax
cmpb $0x2, %al
ja 0x1052f
xorl %edi, %edi
leaq 0x16b3c(%rip), %rsi     # 0x27056
movl %r8d, %edx
xorl %eax, %eax
movq %r8, %r13
callq 0x362c
movq %r13, %r8
leaq 0x18(%rsp), %rcx
movzbl %r8b, %r13d
leal -0x1(%r13), %eax
cmpl $0xc, %eax
movl %ebp, 0x5c(%rsp)
ja 0x1087d
leaq 0x1051d(%rip), %rdx     # 0x20a68
movslq (%rdx,%rax,4), %rax
addq %rdx, %rax
jmpq *%rax
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16b16(%rip), %rsi     # 0x27079
jmp 0x106bb
movq %rcx, %rdi
movl %ebp, 0x5c(%rsp)
movl %ebp, %esi
movq %r13, %rbp
movq %r14, %r13
movq %rbx, %r14
movq %rcx, %rbx
callq 0x11cb2
movq 0x18(%rsp), %rsi
movq $0x0, 0x8(%rsp)
leaq 0xe872(%rip), %rdi      # 0x1ee09
xorl %eax, %eax
callq 0x3030
movq %rbx, %rdi
movq %r14, %rbx
movq %r13, %r14
movq %rbp, %r13
callq 0x3130
jmp 0x106e3
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16b73(%rip), %rsi     # 0x27136
jmp 0x106bb
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16ac9(%rip), %rsi     # 0x270a0
jmp 0x106bb
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16aed(%rip), %rsi     # 0x270d8
jmp 0x106bb
movq %rbx, %rdi
leaq 0x16b41(%rip), %rsi     # 0x2713b
movq %rcx, %rdx
callq 0x75c4
movq 0x38(%rsp), %rsi
leaq 0xe7fb(%rip), %rdi      # 0x1ee09
xorl %eax, %eax
callq 0x3030
movq %rbx, %rdi
callq 0x3130
jmp 0x1096b
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16a5a(%rip), %rsi     # 0x2708b
jmp 0x106bb
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16aa1(%rip), %rsi     # 0x270e6
jmp 0x106bb
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16a94(%rip), %rsi     # 0x270ea
jmp 0x106bb
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16a52(%rip), %rsi     # 0x270b9
jmp 0x106bb
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16a4f(%rip), %rsi     # 0x270c7
jmp 0x106bb
movq %rbx, %rdi
leaq 0x16aa2(%rip), %rsi     # 0x27126
movq %rcx, %rdx
callq 0x75c4
movq 0x38(%rsp), %rsi
leaq 0xe771(%rip), %rdi      # 0x1ee09
xorl %eax, %eax
callq 0x3030
movq %rbx, %rdi
callq 0x3130
jmp 0x10938
movq %r8, 0x8(%rsp)
movq %rbx, %rdi
leaq 0x16a4d(%rip), %rsi     # 0x27108
movq %rcx, %rdx
callq 0x75c4
movq 0x38(%rsp), %rsi
leaq 0xe73a(%rip), %rdi      # 0x1ee09
xorl %eax, %eax
callq 0x3030
movq %rbx, %rdi
callq 0x3130
movq 0x10(%rsp), %r13
movzbl 0x1(%r14,%r15), %esi
andl $0x7, %esi
incl %esi
leaq 0x167f8(%rip), %rdi     # 0x26eed
xorl %eax, %eax
callq 0x3030
movzbl 0x2(%r14,%r15), %eax
testb $0x40, %al
leaq 0x160a3(%rip), %rsi     # 0x267ae
leaq 0xa577(%rip), %rdi      # 0x1ac89
cmoveq %rdi, %rsi
testb $0x20, %al
leaq 0x16094(%rip), %rdx     # 0x267b3
cmoveq %rdi, %rdx
testb $0x10, %al
leaq 0x1608e(%rip), %rcx     # 0x267ba
cmoveq %rdi, %rcx
testb $0x8, %al
leaq 0x16085(%rip), %r8      # 0x267be
cmoveq %rdi, %r8
testb $0x4, %al
leaq 0x1607e(%rip), %r9      # 0x267c4
cmoveq %rdi, %r9
testb $0x2, %al
leaq 0x16075(%rip), %r10     # 0x267c8
cmoveq %rdi, %r10
testb $0x1, %al
leaq 0x1606e(%rip), %r11     # 0x267ce
cmoveq %rdi, %r11
leaq 0x16010(%rip), %rdi     # 0x2677b
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x3030
popq %rcx
popq %rdx
cmpb $0x1, %r12b
movq 0x8(%rsp), %rcx
je 0x107a7
cmpl $0xd, %ecx
je 0x107a7
cmpb $0x8, %r12b
ja 0x107f7
movzbl 0x3(%r14,%r15), %esi
shll $0x3, %esi
leaq 0x16788(%rip), %rdi     # 0x26f26
xorl %eax, %eax
callq 0x3030
jmp 0x107e9
movzbl 0x3(%r14,%r15), %eax
testb $0x4, %al
leaq 0x16048(%rip), %rsi     # 0x267fe
leaq 0xa4cc(%rip), %rdi      # 0x1ac89
cmoveq %rdi, %rsi
testb $0x2, %al
leaq 0x16038(%rip), %rdx     # 0x26802
cmoveq %rdi, %rdx
testb $0x1, %al
leaq 0x1602f(%rip), %rcx     # 0x26806
cmoveq %rdi, %rcx
leaq 0x15ff0(%rip), %rdi     # 0x267d2
xorl %eax, %eax
callq 0x3030
addq $0x3, %r15
leaq 0x18(%rsp), %rcx
jmp 0x104b4
cmpb $0xe, %r12b
je 0x1084c
movl 0x5c(%rsp), %eax
cmpl $0xc, %eax
je 0x10832
cmpl $0xa, %eax
jne 0x10861
movb 0x3(%r14,%r15), %al
testb $0x1, %al
je 0x10825
leaq 0x17d35(%rip), %rdi     # 0x28550
callq 0x33b0
movb 0x3(%r14,%r15), %al
testb $0x2, %al
je 0x107e9
leaq 0x17d43(%rip), %rdi     # 0x28573
jmp 0x10845
testb $0x1, 0x3(%r14,%r15)
jne 0x109ac
leaq 0x17ca6(%rip), %rdi     # 0x284eb
callq 0x33b0
jmp 0x107e9
movzbl 0x3(%r14,%r15), %esi
andl $0x7, %esi
leaq 0x16738(%rip), %rdi     # 0x26f94
jmp 0x1079e
cmpb $0xd, %r12b
ja 0x109e3
movzbl 0x3(%r14,%r15), %esi
leaq 0x1672f(%rip), %rdi     # 0x26fa7
jmp 0x1079e
xorl %edi, %edi
leaq 0x168c4(%rip), %rsi     # 0x2714a
movq %r8, 0x8(%rsp)
movl %r8d, %edx
xorl %eax, %eax
callq 0x362c
leaq 0x68(%rsp), %rdi
leaq 0x168cb(%rip), %rsi     # 0x2716c
leaq 0x7(%rsp), %rdx
callq 0x75c4
leaq 0x88(%rsp), %rdi
movl %r13d, %esi
callq 0x4e28
leaq 0x18(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x76b4
movq %rbx, %rdi
leaq 0x18(%rsp), %rsi
leaq 0x15fcc(%rip), %rdx     # 0x268ad
callq 0x75a4
leaq 0x18(%rsp), %rdi
callq 0x3130
leaq 0x88(%rsp), %rdi
callq 0x3130
leaq 0x68(%rsp), %rdi
callq 0x3130
movq 0x38(%rsp), %rsi
leaq 0xe4f6(%rip), %rdi      # 0x1ee09
xorl %eax, %eax
callq 0x3030
movq %rbx, %rdi
callq 0x3130
cmpb $0xd, 0x8(%rsp)
je 0x1096b
cmpl $0xb, %r13d
movq 0x10(%rsp), %r13
jne 0x106e3
movzbl 0x1(%r14,%r15), %r13d
andl $0x7, %r13d
cmpb $0x5, %r13b
ja 0x10ae9
leaq 0x10149(%rip), %rcx     # 0x20a9c
movslq (%rcx,%r13,4), %rax
addq %rcx, %rax
jmpq *%rax
movq %rbx, %rdi
leaq 0x16821(%rip), %rsi     # 0x27187
jmp 0x10ab2
movzbl 0x2(%r14,%r15), %eax
shrl $0x3, %eax
andl $0x10, %eax
movzbl 0x1(%r14,%r15), %ecx
movl %ecx, %edx
shrl $0x7, %edx
andl $0x7, %ecx
orl %eax, %ecx
leal (%rcx,%rdx,8), %esi
incl %esi
leaq 0x1655a(%rip), %rdi     # 0x26eed
xorl %eax, %eax
callq 0x3030
pushq $0xd
popq %rax
movq %rax, 0x8(%rsp)
movq 0x10(%rsp), %r13
jmp 0x106fc
leaq 0x17b59(%rip), %rdi     # 0x2850c
callq 0x33b0
testb $0x2, 0x3(%r14,%r15)
leaq 0x1b3cf(%rip), %rsi     # 0x2bd94
leaq 0xa2bd(%rip), %rax      # 0x1ac89
cmoveq %rax, %rsi
leaq 0x16570(%rip), %rdi     # 0x26f47
xorl %eax, %eax
callq 0x3030
jmp 0x107e9
cmpl $0xb, %ecx
jne 0x109f0
testb $0x1, 0x3(%r14,%r15)
jne 0x10a6c
leal -0x4(%rcx), %eax
cmpl $0x3, %eax
setae %al
andl $-0x3, %ecx
cmpl $0x8, %ecx
setne %cl
testb %cl, %al
jne 0x107e9
movzbl 0x3(%r14,%r15), %eax
testb $0x4, %al
leaq 0x165e3(%rip), %rsi     # 0x26ffc
leaq 0xa269(%rip), %rcx      # 0x1ac89
cmoveq %rcx, %rsi
testb $0x2, %al
leaq 0x165d8(%rip), %rdx     # 0x27005
cmoveq %rcx, %rdx
leaq 0x165a0(%rip), %rdi     # 0x26fd8
xorl %eax, %eax
callq 0x3030
movq 0x8(%rsp), %rax
cmpl $0x8, %eax
jb 0x10b76
testb $0x1, 0x3(%r14,%r15)
je 0x107e9
leaq 0x165ad(%rip), %rdi     # 0x2700d
leaq 0x165d5(%rip), %rsi     # 0x2703c
jmp 0x109d7
leaq 0x17a42(%rip), %rdi     # 0x284b5
jmp 0x10845
movq %rbx, %rdi
leaq 0x16729(%rip), %rsi     # 0x271ab
jmp 0x10ab2
movq %rbx, %rdi
leaq 0x1670d(%rip), %rsi     # 0x2719b
jmp 0x10ab2
movq %rbx, %rdi
leaq 0x16709(%rip), %rsi     # 0x271a3
jmp 0x10ab2
movq %rbx, %rdi
leaq 0x166ed(%rip), %rsi     # 0x27193
jmp 0x10ab2
movq %rbx, %rdi
leaq 0x16701(%rip), %rsi     # 0x271b3
leaq 0x18(%rsp), %rdx
callq 0x75c4
movq 0x10(%rsp), %r13
movq 0x38(%rsp), %rsi
leaq 0x16438(%rip), %rdi     # 0x26f05
xorl %eax, %eax
callq 0x3030
movq %rbx, %rdi
callq 0x3130
pushq $0xb
popq %rax
movq %rax, 0x8(%rsp)
jmp 0x106fc
xorl %edi, %edi
leaq 0x166c9(%rip), %rsi     # 0x271bb
movl %r13d, %edx
xorl %eax, %eax
callq 0x362c
leaq 0x68(%rsp), %rdi
leaq 0x166da(%rip), %rsi     # 0x271e2
leaq 0x7(%rsp), %rdx
callq 0x75c4
movzbl %r13b, %esi
leaq 0x88(%rsp), %r13
movq %r13, %rdi
callq 0x4e28
leaq 0x18(%rsp), %rbp
movq %rbp, %rdi
leaq 0x68(%rsp), %rsi
movq %r13, %rdx
callq 0x76b4
movq 0x10(%rsp), %r13
movq %rbx, %rdi
movq %rbp, %rsi
leaq 0x15d60(%rip), %rdx     # 0x268ad
callq 0x75a4
movq %rbp, %rdi
callq 0x3130
leaq 0x88(%rsp), %rdi
callq 0x3130
leaq 0x68(%rsp), %rdi
callq 0x3130
jmp 0x10ac1
cmpl $0x6, %eax
jne 0x107e9
testb $0x1, 0x3(%r14,%r15)
je 0x107e9
leaq 0x17904(%rip), %rdi     # 0x28496
jmp 0x10845
leaq 0x1556f(%rip), %rsi     # 0x2610d
xorl %edi, %edi
movl %r13d, %edx
xorl %eax, %eax
callq 0x362c
testb %bpl, %bpl
je 0x10bbf
leaq 0x143ba(%rip), %rsi     # 0x24f70
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
xorl %eax, %eax
movb %al, 0x2d5(%r15)
movb %al, 0x2d2(%r15)
addq $0xa8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
cmpb $0x0, 0x2d2(%r15)
jne 0x10bfb
leaq 0x14714(%rip), %rsi     # 0x25306
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
cmpb $0x0, 0x2d4(%r15)
jne 0x10c0f
cmpb $0x1, 0x2d3(%r15)
jne 0x10c1f
leaq 0x145fb(%rip), %rsi     # 0x25211
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
addq $0x4, %r14
leal -0x3(%rbx), %esi
movq %r14, %rdi
callq 0xfc05
movb $0x1, 0x2d3(%r15)
jmp 0x10bbf
movzbl 0x4(%r14), %esi
movzbl 0x5(%r14), %edx
leaq 0x165b9(%rip), %rdi     # 0x27202
xorl %eax, %eax
callq 0x3030
movzbl 0x6(%r14), %esi
leaq 0x165ba(%rip), %rdi     # 0x27216
xorl %eax, %eax
callq 0x3030
movzbl 0x7(%r14), %esi
leaq 0x165c8(%rip), %rdi     # 0x27237
xorl %eax, %eax
callq 0x3030
movzbl 0x8(%r14), %esi
testb $-0x1a, %sil
leaq 0xa003(%rip), %rax      # 0x1ac89
leaq 0x165e4(%rip), %rdx     # 0x27271
cmoveq %rax, %rdx
leaq 0x165c0(%rip), %rdi     # 0x27258
xorl %eax, %eax
callq 0x3030
movq 0x10(%rsp), %rax
addl $-0xd, %eax
cmpl $-0xb, %eax
ja 0x10bbf
movzbl 0x9(%r14), %esi
leaq 0x165bd(%rip), %rdi     # 0x27279
xorl %eax, %eax
callq 0x3030
movzbl 0xa(%r14), %ebp
cvtsi2sd %ebp, %xmm0
mulsd 0x13274(%rip), %xmm0    # 0x23f48
callq 0x3220
mulsd 0x1326f(%rip), %xmm0    # 0x23f50
leaq 0x165a8(%rip), %rdi     # 0x27290
movl %ebp, %esi
movb $0x1, %al
callq 0x3030
movzbl 0xb(%r14), %ebp
movzbl 0xa(%r14), %eax
cvtsi2sd %eax, %xmm0
mulsd 0x13241(%rip), %xmm0    # 0x23f48
callq 0x3220
mulsd 0x1323c(%rip), %xmm0    # 0x23f50
movzbl 0xb(%r14), %eax
cvtsi2sd %eax, %xmm1
divsd 0x13233(%rip), %xmm1    # 0x23f58
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm0
divsd 0x92eb(%rip), %xmm0     # 0x1a020
leaq 0x1657d(%rip), %rdi     # 0x272b9
movl %ebp, %esi
movb $0x1, %al
callq 0x3030
testb $0x4, 0x9(%r14)
movzbl 0xc(%r14), %ebp
jne 0x10eb3
movzbl 0xd(%r14), %edx
leaq 0x16603(%rip), %rdi     # 0x27364
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x10bbf
leaq 0x4(%r14), %r12
cmpl $0x15, %ebx
jne 0x10e95
cmpl $0xca125c, %ebp         # imm = 0xCA125C
jne 0x10e95
movq %r15, %rbx
movzbl (%r12), %esi
leaq 0x159a0(%rip), %rdi     # 0x26737
xorl %eax, %eax
callq 0x3030
cmpb $0x3, (%r12)
jb 0x10dd7
movzbl 0x5(%r14), %esi
shrl $0x6, %esi
andl $0x1, %esi
leaq 0x165c9(%rip), %rdi     # 0x27380
xorl %eax, %eax
callq 0x3030
movzbl 0x5(%r14), %esi
shrl $0x5, %esi
andl $0x1, %esi
leaq 0x165c7(%rip), %rdi     # 0x27397
xorl %eax, %eax
callq 0x3030
movzbl 0x5(%r14), %r15d
andl $0x1f, %r15d
leal -0x1(%r15), %eax
cmpl $0x13, %eax
ja 0x10f85
leaq 0xfc24(%rip), %rcx      # 0x20a18
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x165f3(%rip), %rsi     # 0x273f7
jmp 0x11043
leaq 0x18(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%r12), %rsi
leaq 0x14437(%rip), %rdi     # 0x2525a
xorl %eax, %eax
callq 0x3030
movq %r12, %rdi
callq 0x3130
addq $0x4, %r14
leal -0x3(%r13), %edx
leaq 0xe656(%rip), %rdi      # 0x1f497
movq %r15, %rbx
pushq $0x1
popq %r15
pushq $0x10
popq %r8
movq %r14, %rsi
movl %r15d, %ecx
callq 0x4fc1
andq $0x0, 0x38(%rbx)
movq 0x30(%rbx), %rax
movb $0x0, (%rax)
leaq 0x18(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%rbx), %rdx
leaq 0x14405(%rip), %rsi     # 0x25281
movl %r15d, %edi
xorl %eax, %eax
callq 0x362c
leaq 0x18(%rsp), %rdi
callq 0x3130
jmp 0x10bcf
leal -0x3(%rbx), %edx
leaq 0xe5f8(%rip), %rdi      # 0x1f497
pushq $0x1
popq %rcx
pushq $0x10
popq %r8
movq %r12, %rsi
callq 0x4fc1
jmp 0x10bbf
cvtsi2sd %ebp, %xmm0
movsd 0x13089(%rip), %xmm1    # 0x23f48
mulsd %xmm1, %xmm0
callq 0x3220
movsd 0x13080(%rip), %xmm1    # 0x23f50
mulsd %xmm1, %xmm0
leaq 0x16407(%rip), %rdi     # 0x272e2
movl %ebp, %esi
movb $0x1, %al
callq 0x3030
movzbl 0xd(%r14), %ebp
movzbl 0xc(%r14), %eax
cvtsi2sd %eax, %xmm0
mulsd 0x1304e(%rip), %xmm0    # 0x23f48
callq 0x3220
mulsd 0x13049(%rip), %xmm0    # 0x23f50
movzbl 0xd(%r14), %eax
cvtsi2sd %eax, %xmm1
divsd 0x13040(%rip), %xmm1    # 0x23f58
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm0
divsd 0x90f8(%rip), %xmm0     # 0x1a020
leaq 0x163f4(%rip), %rdi     # 0x27323
movl %ebp, %esi
movb $0x1, %al
callq 0x3030
jmp 0x10bbf
leaq 0x16583(%rip), %rsi     # 0x274c7
jmp 0x11043
leaq 0x164f6(%rip), %rsi     # 0x27446
jmp 0x11043
leaq 0x165a4(%rip), %rsi     # 0x27500
jmp 0x11043
leaq 0x164f5(%rip), %rsi     # 0x2745d
jmp 0x11043
leaq 0x1656c(%rip), %rsi     # 0x274e0
jmp 0x11043
leaq 0x164a9(%rip), %rsi     # 0x27429
jmp 0x11043
leaq 0x16586(%rip), %rsi     # 0x27512
xorl %edi, %edi
movl %r15d, %edx
xorl %eax, %eax
callq 0x362c
leaq 0x165a5(%rip), %rsi     # 0x27544
leaq 0x68(%rsp), %rdi
leaq 0x7(%rsp), %rdx
callq 0x75c4
movzbl %r15b, %esi
leaq 0x88(%rsp), %rdi
callq 0x4e28
leaq 0x18(%rsp), %rdi
leaq 0x68(%rsp), %rsi
leaq 0x88(%rsp), %rdx
callq 0x76b4
leaq 0x158d0(%rip), %rdx     # 0x268ad
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rsi
callq 0x75a4
leaq 0x18(%rsp), %rdi
callq 0x3130
leaq 0x88(%rsp), %rdi
callq 0x3130
leaq 0x68(%rsp), %rdi
callq 0x3130
jmp 0x11052
leaq 0x16400(%rip), %rsi     # 0x27416
jmp 0x11043
leaq 0x163e7(%rip), %rsi     # 0x27406
jmp 0x11043
leaq 0x1644a(%rip), %rsi     # 0x27472
jmp 0x11043
leaq 0x16459(%rip), %rsi     # 0x2748a
jmp 0x11043
leaq 0x16475(%rip), %rsi     # 0x274af
jmp 0x11043
leaq 0x16459(%rip), %rsi     # 0x2749c
leaq 0x38(%rsp), %rdi
leaq 0x18(%rsp), %rdx
callq 0x75c4
leaq 0x38(%rsp), %r12
movq (%r12), %rdx
leaq 0x16350(%rip), %rdi     # 0x273b2
movl %r15d, %esi
xorl %eax, %eax
callq 0x3030
movq %r12, %rdi
callq 0x3130
addq $0x6, %r14
leaq 0x18(%rsp), %r15
movq %r15, %rdi
movq %r14, %rsi
callq 0x4d58
movq (%r15), %rsi
leaq 0x1634f(%rip), %rdi     # 0x273e1
xorl %eax, %eax
callq 0x3030
movq %r15, %rdi
callq 0x3130
movq %rbx, %r15
jmp 0x10bbf
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x3130
jmp 0x110bb
movq %rax, %rbx
jmp 0x110d1
jmp 0x110e0
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x3130
jmp 0x110d1
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x3130
jmp 0x11113
movq %rax, %rbx
jmp 0x11113
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
jmp 0x11168
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x3130
jmp 0x11101
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x3130
jmp 0x11113
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
jmp 0x11168
movq %rax, %rbx
leaq 0x18(%rsp), %rdi
callq 0x3130
jmp 0x1112c
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x3130
jmp 0x1113b
movq %rax, %rbx
leaq 0x38(%rsp), %rdi
callq 0x3130
jmp 0x11160
movq %rax, %rbx
jmp 0x11160
jmp 0x1116f
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
callq 0x3130
jmp 0x11160
movq %rax, %rbx
leaq 0x88(%rsp), %rdi
callq 0x3130
jmp 0x11172
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3430