// File: /workspace/github_cpp_makefile_star2_O2/rpavlik[P]edid-decode/parse-di-ext-block.cpp
// Function: edid_state::parse_display_caps(unsigned char const*)
void edid_state::parse_display_caps(const unsigned char *x)
{
	data_block = "Display Capabities & Feature Support Set";
	printf("  %s:\n", data_block.c_str());

	unsigned short v = x[0x14];

	printf("    Legacy Modes: %s VGA/DOS Legacy Timing Modes are supported\n",
	       (v & 0x80) ? "All" : "Not all");
	printf("    Stereo Video: ");
	switch ((v & 0x70) >> 4) {
	case 0x00: printf("No direct stereo\n"); break;
	case 0x01: printf("Field seq. stereo via stereo sync signal\n"); break;
	case 0x02: printf("auto-stereoscopic, column interleave\n"); break;
	case 0x03: printf("auto-stereoscopic, line interleave\n"); break;
	default:
		   printf("Unknown (0x%02x)\n", (v & 0x70) >> 4);
		   fail("Unknown Stereo Video 0x%02x.\n", (v & 0x70) >> 4);
		   break;
	}
	printf("    Scaler On Board: %s\n", (v & 0x08) ? "Yes" : "No");
	printf("    Image Centering: %s\n", (v & 0x04) ? "Yes" : "No");
	printf("    Conditional Update: %s\n", (v & 0x02) ? "Yes" : "No");
	printf("    Interlaced Video: %s\n", (v & 0x01) ? "Yes" : "No");

	v = x[0x15];
	printf("    Frame Lock: %s\n", (v & 0x80) ? "Yes" : "No");
	printf("    Frame Rate Conversion: ");
	switch ((v & 0x60) >> 5) {
	case 0x00: printf("Not supported\n"); break;
	case 0x01: printf("Vertical is converted to a single frequency\n"); break;
	case 0x02: printf("Horizontal is convertred to a single frequency\n"); break;
	case 0x03: printf("Both Vertical & Horizontal are converted to single frequencies\n"); break;
	}
	if (v & 0x1f)
		fail("Bits 4-0 of byte 0x15 should be 0.\n");
	v = x[0x16] | (x[0x17] << 8);
	printf("    Vertical Frequency: ");
	if (!v) {
		printf("Not available\n");
	} else if (v == 0xffff) {
		printf("Reserved\n");
		fail("Vertical Frequency uses 0xffff (reserved value).\n");
	} else {
		printf("%.2f kHz\n", v / 100.0);
	}
	v = x[0x18] | (x[0x19] << 8);
	printf("    Horizontal Frequency: ");
	if (!v) {
		printf("Not available\n");
	} else if (v == 0xffff) {
		printf("Reserved\n");
		fail("Horizontal Frequency uses 0xffff (reserved value).\n");
	} else {
		printf("%.2f kHz\n", v / 100.0);
	}

	v = x[0x1a];
	printf("    Display/Scan Orientation Definition Type: ");
	switch ((v & 0xc0) >> 6) {
	case 0x00: printf("Not defined\n"); break;
	case 0x01: printf("Fixed Orientation\n"); break;
	case 0x02: printf("Pivots: Default Orientation\n"); break;
	case 0x03: printf("Pivots: Current Orientation (requires multiple EDID Extension Tables)\n"); break;
	}
	printf("    Screen Orientation: %s\n",
	       (v & 0x20) ? "Portrait" : "Landscape");
	printf("    Zero Pixel Location: ");
	switch ((v & 0x18) >> 3) {
	case 0x00: printf("Upper Left\n"); break;
	case 0x01: printf("Upper Right\n"); break;
	case 0x02: printf("Lower Left\n"); break;
	case 0x03: printf("Lower Right\n"); break;
	}
	printf("    Scan Direction: ");
	switch ((v & 0x06) >> 1) {
	case 0x00: printf("Not defined\n"); break;
	case 0x01: printf("Fast Scan is on the Major (Long) Axis and Slow Scan is on the Minor Axis\n"); break;
	case 0x02: printf("Fast Scan is on the Minor (Short) Axis and Slow Scan is on the Major Axis\n"); break;
	case 0x03:
		   printf("Reserved\n");
		   fail("Scan Direction used the reserved value 0x03.\n");
		   break;
	}
	printf("    Standalone Projector: %s\n",
	       (v & 0x01) ? "Yes" : "No");

	v = x[0x1b];
	printf("    Default Color/Luminance Decoding: ");
	switch (v) {
	case 0x00: printf("Not defined\n"); break;
	case 0x01: printf("BGR\n"); break;
	case 0x02: printf("Y/C (S-Video) NTSC\n"); break;
	case 0x03: printf("Y/C (S-Video) PAL\n"); break;
	case 0x04: printf("Y/C (S-Video) SECAM\n"); break;
	case 0x05: printf("YCrCb 4:4:4 per SMPTE 293M & 294M\n"); break;
	case 0x06: printf("YCrCb 4:2:2 per SMPTE 293M & 294M\n"); break;
	case 0x07: printf("YCrCb 4:2:0 per SMPTE 293M & 294M\n"); break;
	case 0x08: printf("YCrCb per SMPTE 260M (Legacy HDTV)\n"); break;
	case 0x09: printf("YPbPr per SMPTE 240M (Legacy HDTV)\n"); break;
	case 0x0a: printf("YCrCb per SMPTE 274M (Modern HDTV)\n"); break;
	case 0x0b: printf("YPbPr per SMPTE 274M (Modern HDTV)\n"); break;
	case 0x0c: printf("Y B-Y R-Y BetaCam (Sony)\n"); break;
	case 0x0d: printf("Y B-Y R-Y M-2 (Matsushita)\n"); break;
	case 0x0e: printf("Monochrome\n"); break;
	default:
		   printf("Unknown (0x%02x)\n", v);
		   fail("Unknown Default Color/Luminance Decoding 0x%02x.\n", v);
		   break;
	}
	v = x[0x1c];
	printf("    Preferred Color/Luminance Decoder: ");
	switch (v) {
	case 0x00: printf("Uses Default Decoding\n"); break;
	case 0x01: printf("BGR\n"); break;
	case 0x02: printf("Y/C (S-Video)\n"); break;
	case 0x03: printf("Yxx (SMPTE 2xxM)\n"); break;
	case 0x04: printf("Monochrome\n"); break;
	default:
		   printf("Unknown (0x%02x)\n", v);
		   fail("Unknown Preferred Color/Luminance Decoding 0x%02x.\n", v);
		   break;
	}
	v = x[0x1d];
	if (v && (x[0x1e] & 0xfc)) {
		printf("    Color/Luminance Decoding Capabilities:\n");
		printf("      BGR: %s\n", (v & 0x80) ? "Yes" : "No");
		printf("      Y/C (S-Video) NTSC: %s\n", (v & 0x40) ? "Yes" : "No");
		printf("      Y/C (S-Video) PAL: %s\n", (v & 0x20) ? "Yes" : "No");
		printf("      Y/C (S-Video) SECAM: %s\n", (v & 0x10) ? "Yes" : "No");
		printf("      YCrCb 4:4:4 per SMPTE 293M & 294M: %s\n", (v & 0x08) ? "Yes" : "No");
		printf("      YCrCb 4:2:2 per SMPTE 293M & 294M: %s\n", (v & 0x04) ? "Yes" : "No");
		printf("      YCrCb 4:2:0 per SMPTE 293M & 294M: %s\n", (v & 0x02) ? "Yes" : "No");
		printf("      YCrCb per SMPTE 260M (Legacy HDTV): %s\n", (v & 0x01) ? "Yes" : "No");
		v = x[0x1e];
		printf("      YPbPr per SMPTE 240M (Legacy HDTV): %s\n", (v & 0x80) ? "Yes" : "No");
		printf("      YCrCb per SMPTE 274M (Modern HDTV): %s\n", (v & 0x40) ? "Yes" : "No");
		printf("      YPbPr per SMPTE 274M (Modern HDTV): %s\n", (v & 0x20) ? "Yes" : "No");
		printf("      Y B-Y R-Y BetaCam (Sony): %s\n", (v & 0x10) ? "Yes" : "No");
		printf("      Y B-Y R-Y M-2 (Matsushita): %s\n", (v & 0x08) ? "Yes" : "No");
		printf("      Monochrome: %s\n", (v & 0x04) ? "Yes" : "No");
	} else {
		printf("    Color/Luminance Decoding Capabilities: None\n");
	}
	if (v & 0x03)
		fail("Bits 1-0 of byte 0x1e should be 0.\n");

	v = x[0x1f];
	printf("    Dithering: %s\n", (v & 0x80) ? "Yes" : "No");
	if (v & 0x7f)
		fail("Bits 6-0 of byte 0x1f should be 0.\n");
	v = x[0x20];
	printf("    Supported Color Bit-Depth of Sub-Channel 0 (Blue): ");
	if (!v) {
		printf("No Information\n");
	} else if (v <= 16) {
		printf("%u\n", v);
	} else {
		printf("Reserved (0x%02x)\n", v);
		fail("Supported Color Bit-Depth of Sub-Channel Blue value is 0x%02x.\n", v);
	}
	v = x[0x21];
	printf("    Supported Color Bit-Depth of Sub-Channel 1 (Green): ");
	if (!v) {
		printf("No Information\n");
	} else if (v <= 16) {
		printf("%u\n", v);
	} else {
		printf("Reserved (0x%02x)\n", v);
		fail("Supported Color Bit-Depth of Sub-Channel Green value is 0x%02x.\n", v);
	}
	v = x[0x22];
	printf("    Supported Color Bit-Depth of Sub-Channel 2 (Red): ");
	if (!v) {
		printf("No Information\n");
	} else if (v <= 16) {
		printf("%u\n", v);
	} else {
		printf("Reserved (0x%02x)\n", v);
		fail("Supported Color Bit-Depth of Sub-Channel Red value is 0x%02x.\n", v);
	}
	v = x[0x23];
	printf("    Supported Color Bit-Depth of Sub-Channel 0 (Cb/Pb): ");
	if (!v) {
		printf("No Information\n");
	} else if (v <= 16) {
		printf("%u\n", v);
	} else {
		printf("Reserved (0x%02x)\n", v);
		fail("Supported Color Bit-Depth of Sub-Channel Cb/Pb value is 0x%02x.\n", v);
	}
	v = x[0x24];
	printf("    Supported Color Bit-Depth of Sub-Channel 1 (Y): ");
	if (!v) {
		printf("No Information\n");
	} else if (v <= 16) {
		printf("%u\n", v);
	} else {
		printf("Reserved (0x%02x)\n", v);
		fail("Supported Color Bit-Depth of Sub-Channel Y value is 0x%02x.\n", v);
	}
	v = x[0x25];
	printf("    Supported Color Bit-Depth of Sub-Channel 2 (Cr/Pr): ");
	if (!v) {
		printf("No Information\n");
	} else if (v <= 16) {
		printf("%u\n", v);
	} else {
		printf("Reserved (0x%02x)\n", v);
		fail("Supported Color Bit-Depth of Sub-Channel Cr/Pr value is 0x%02x.\n", v);
	}

	v = x[0x26];
	printf("    Aspect Ratio Conversion Modes:");
	if (!v) {
		printf(" None\n");
	} else {
		printf("\n");
		printf("      Full Mode: %s\n", (v & 0x80) ? "Yes" : "No");
		printf("      Zoom Mode: %s\n", (v & 0x40) ? "Yes" : "No");
		printf("      Squeeze (Side Bars/Letterbox) Mode: %s\n", (v & 0x20) ? "Yes" : "No");
		printf("      Variable (Expand/Shrink) Mode: %s\n", (v & 0x10) ? "Yes" : "No");
	}
	if (v & 0x0f)
		fail("Bits 3-0 of byte 0x26 should be 0.\n");
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r12
pushq %rbx
movq %rsi, %rbx
movq %rdi, %r14
addq $0x30, %rdi
leaq 0x13c80(%rip), %rsi     # 0x2c129
callq 0x3460
movq 0x30(%r14), %rsi
leaq 0x6952(%rip), %rdi      # 0x1ee0b
xorl %eax, %eax
callq 0x3030
movzbl 0x14(%rbx), %ebp
testb %bpl, %bpl
leaq 0x13cc8(%rip), %rax     # 0x2c196
leaq 0x13cbd(%rip), %rsi     # 0x2c192
cmovnsq %rax, %rsi
leaq 0x13c72(%rip), %rdi     # 0x2c152
xorl %eax, %eax
callq 0x3030
leaq 0x13cb0(%rip), %rdi     # 0x2c19e
xorl %eax, %eax
callq 0x3030
movl %ebp, %r14d
shrl $0x4, %r14d
andl $0x7, %r14d
cmpl $0x3, %r14d
ja 0x18807
leaq 0x1354b(%rip), %rax     # 0x2ba5c
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x14ae8(%rip), %rdi     # 0x2d009
jmp 0x1853c
leaq 0x14a91(%rip), %rdi     # 0x2cfbb
jmp 0x1853c
leaq 0x14a65(%rip), %rdi     # 0x2cf98
jmp 0x1853c
leaq 0x14aa4(%rip), %rdi     # 0x2cfe0
callq 0x33b0
testb $0x8, %bpl
leaq 0xde13(%rip), %r12      # 0x2635f
leaq 0xde08(%rip), %r14      # 0x2635b
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c6e(%rip), %rdi     # 0x2c1cf
xorl %eax, %eax
callq 0x3030
testb $0x4, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c6e(%rip), %rdi     # 0x2c1e8
xorl %eax, %eax
callq 0x3030
testb $0x2, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c6e(%rip), %rdi     # 0x2c201
xorl %eax, %eax
callq 0x3030
testb $0x1, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c71(%rip), %rdi     # 0x2c21d
xorl %eax, %eax
callq 0x3030
movzbl 0x15(%rbx), %ebp
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13c6f(%rip), %rdi     # 0x2c237
xorl %eax, %eax
callq 0x3030
leaq 0x13c75(%rip), %rdi     # 0x2c24b
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x3, %eax
andl $0xc, %eax
leaq 0x13520(%rip), %rcx     # 0x2bb0c
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x33b0
testb $0x1f, %bpl
je 0x1860e
leaq 0x13c62(%rip), %rsi     # 0x2c267
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
movzwl 0x16(%rbx), %ebp
leaq 0x13c72(%rip), %rdi     # 0x2c28b
xorl %eax, %eax
callq 0x3030
cmpl $0xffff, %ebp           # imm = 0xFFFF
je 0x1863a
testl %ebp, %ebp
jne 0x18658
leaq 0x14a81(%rip), %rdi     # 0x2d0b4
callq 0x33b0
jmp 0x18675
leaq 0x12f7f(%rip), %rdi     # 0x2b5c0
callq 0x33b0
leaq 0x13c57(%rip), %rsi     # 0x2c2a4
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
jmp 0x18675
movzwl %bp, %eax
cvtsi2sd %eax, %xmm0
divsd 0x19b9(%rip), %xmm0     # 0x1a020
leaq 0x13c68(%rip), %rdi     # 0x2c2d6
movb $0x1, %al
callq 0x3030
movzwl 0x18(%rbx), %ebp
leaq 0x13c60(%rip), %rdi     # 0x2c2e0
xorl %eax, %eax
callq 0x3030
cmpl $0xffff, %ebp           # imm = 0xFFFF
je 0x186a1
testl %ebp, %ebp
jne 0x186bf
leaq 0x14a1a(%rip), %rdi     # 0x2d0b4
callq 0x33b0
jmp 0x186dc
leaq 0x12f18(%rip), %rdi     # 0x2b5c0
callq 0x33b0
leaq 0x13c47(%rip), %rsi     # 0x2c2fb
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
jmp 0x186dc
movzwl %bp, %eax
cvtsi2sd %eax, %xmm0
divsd 0x1952(%rip), %xmm0     # 0x1a020
leaq 0x13c01(%rip), %rdi     # 0x2c2d6
movb $0x1, %al
callq 0x3030
movzbl 0x1a(%rbx), %ebp
leaq 0x13c48(%rip), %rdi     # 0x2c32f
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x13422(%rip), %rcx     # 0x2bb1c
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x33b0
testb $0x20, %bpl
leaq 0xf3c1(%rip), %rax      # 0x27ad2
leaq 0xf3b1(%rip), %rsi      # 0x27ac9
cmoveq %rax, %rsi
leaq 0x13c3b(%rip), %rdi     # 0x2c35e
xorl %eax, %eax
callq 0x3030
leaq 0x109c1(%rip), %rdi     # 0x290f2
xorl %eax, %eax
callq 0x3030
movl %ebp, %r15d
shrl %r15d
movl %r15d, %eax
andl $0xc, %eax
leaq 0x133e1(%rip), %rcx     # 0x2bb2c
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x33b0
leaq 0x109b0(%rip), %rdi     # 0x2910e
xorl %eax, %eax
callq 0x3030
andl $0x3, %r15d
leaq 0x132fc(%rip), %rax     # 0x2ba6c
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0xf61d(%rip), %rdi      # 0x27d9d
jmp 0x187b0
leaq 0xf3f3(%rip), %rdi      # 0x27b7c
jmp 0x187b0
leaq 0x12e2e(%rip), %rdi     # 0x2b5c0
callq 0x33b0
leaq 0xdb11(%rip), %rsi      # 0x262af
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
jmp 0x187b5
leaq 0xf416(%rip), %rdi      # 0x27bc6
callq 0x33b0
testb $0x1, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13bb3(%rip), %rdi     # 0x2c37a
xorl %eax, %eax
callq 0x3030
movzbl 0x1b(%rbx), %r15d
leaq 0x13bbe(%rip), %rdi     # 0x2c398
xorl %eax, %eax
callq 0x3030
cmpq $0xe, %r15
ja 0x1886f
leaq 0x1328a(%rip), %rax     # 0x2ba7c
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0xf59b(%rip), %rdi      # 0x27d9d
jmp 0x188db
leaq 0x66fe(%rip), %rdi      # 0x1ef0c
movl %r14d, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13992(%rip), %rsi     # 0x2c1b1
xorl %edi, %edi
movl %r14d, %edx
xorl %eax, %eax
callq 0x362c
jmp 0x18541
leaq 0x14a5e(%rip), %rdi     # 0x2d295
jmp 0x188db
leaq 0x14927(%rip), %rdi     # 0x2d16a
jmp 0x188db
leaq 0x14a0d(%rip), %rdi     # 0x2d25c
jmp 0x188db
leaq 0x148f6(%rip), %rdi     # 0x2d151
jmp 0x188db
leaq 0x1494c(%rip), %rdi     # 0x2d1b0
jmp 0x188db
leaq 0x14a15(%rip), %rdi     # 0x2d282
jmp 0x188db
leaq 0x6696(%rip), %rdi      # 0x1ef0c
movl %r15d, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13b38(%rip), %rsi     # 0x2c3bf
xorl %edi, %edi
movl %r15d, %edx
xorl %eax, %eax
callq 0x362c
jmp 0x188e0
leaq 0x149d4(%rip), %rdi     # 0x2d270
jmp 0x188db
leaq 0x14951(%rip), %rdi     # 0x2d1f6
jmp 0x188db
leaq 0x14a11(%rip), %rdi     # 0x2d2bf
jmp 0x188db
leaq 0x14983(%rip), %rdi     # 0x2d23a
jmp 0x188db
leaq 0x14876(%rip), %rdi     # 0x2d136
jmp 0x188db
leaq 0x1494f(%rip), %rdi     # 0x2d218
jmp 0x188db
leaq 0x148bb(%rip), %rdi     # 0x2d18d
jmp 0x188db
leaq 0x148f8(%rip), %rdi     # 0x2d1d3
callq 0x33b0
movzbl 0x1c(%rbx), %r15d
leaq 0x13b05(%rip), %rdi     # 0x2c3f1
xorl %eax, %eax
callq 0x3030
cmpq $0x4, %r15
ja 0x18dff
leaq 0x131b4(%rip), %rax     # 0x2bab8
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x149af(%rip), %rdi     # 0x2d2c3
jmp 0x18938
leaq 0x14978(%rip), %rdi     # 0x2d295
jmp 0x18938
leaq 0x1498b(%rip), %rdi     # 0x2d2b1
jmp 0x18938
leaq 0x14971(%rip), %rdi     # 0x2d2a0
jmp 0x18938
leaq 0x14987(%rip), %rdi     # 0x2d2bf
callq 0x33b0
movzbl 0x1d(%rbx), %ebp
testl %ebp, %ebp
je 0x1894b
cmpb $0x4, 0x1e(%rbx)
jae 0x1895c
leaq 0x14987(%rip), %rdi     # 0x2d2d9
callq 0x33b0
jmp 0x18ac8
leaq 0x149a6(%rip), %rdi     # 0x2d309
callq 0x33b0
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13ad4(%rip), %rdi     # 0x2c44d
xorl %eax, %eax
callq 0x3030
testb $0x40, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13aca(%rip), %rdi     # 0x2c45c
xorl %eax, %eax
callq 0x3030
testb $0x20, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13acf(%rip), %rdi     # 0x2c47a
xorl %eax, %eax
callq 0x3030
testb $0x10, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13ad3(%rip), %rdi     # 0x2c497
xorl %eax, %eax
callq 0x3030
testb $0x8, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13ad9(%rip), %rdi     # 0x2c4b6
xorl %eax, %eax
callq 0x3030
testb $0x4, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13aed(%rip), %rdi     # 0x2c4e3
xorl %eax, %eax
callq 0x3030
testb $0x2, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13b01(%rip), %rdi     # 0x2c510
xorl %eax, %eax
callq 0x3030
testb $0x1, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13b15(%rip), %rdi     # 0x2c53d
xorl %eax, %eax
callq 0x3030
movzbl 0x1e(%rbx), %ebp
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13b27(%rip), %rdi     # 0x2c56b
xorl %eax, %eax
callq 0x3030
testb $0x40, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13b3c(%rip), %rdi     # 0x2c599
xorl %eax, %eax
callq 0x3030
testb $0x20, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13b51(%rip), %rdi     # 0x2c5c7
xorl %eax, %eax
callq 0x3030
testb $0x10, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13b66(%rip), %rdi     # 0x2c5f5
xorl %eax, %eax
callq 0x3030
testb $0x8, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13b71(%rip), %rdi     # 0x2c619
xorl %eax, %eax
callq 0x3030
testb $0x4, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13b7e(%rip), %rdi     # 0x2c63f
xorl %eax, %eax
callq 0x3030
testb $0x3, %bpl
je 0x18ade
leaq 0x13b80(%rip), %rsi     # 0x2c655
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
movb 0x1f(%rbx), %bpl
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13b86(%rip), %rdi     # 0x2c679
xorl %eax, %eax
callq 0x3030
testb $0x7f, %bpl
je 0x18b10
leaq 0x13b85(%rip), %rsi     # 0x2c68c
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
movzbl 0x20(%rbx), %ebp
leaq 0x13b95(%rip), %rdi     # 0x2c6b0
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x18b3e
cmpb $0x10, %bpl
ja 0x18b4c
leaq 0x10cf3(%rip), %rdi     # 0x29826
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x18b6e
leaq 0x147ef(%rip), %rdi     # 0x2d334
callq 0x33b0
jmp 0x18b6e
leaq 0x13b95(%rip), %rdi     # 0x2c6e8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13b98(%rip), %rsi     # 0x2c6fb
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x362c
movzbl 0x21(%rbx), %ebp
leaq 0x13bc2(%rip), %rdi     # 0x2c73b
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x18b9c
cmpb $0x10, %bpl
ja 0x18baa
leaq 0x10c95(%rip), %rdi     # 0x29826
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x18bcc
leaq 0x14791(%rip), %rdi     # 0x2d334
callq 0x33b0
jmp 0x18bcc
leaq 0x13b37(%rip), %rdi     # 0x2c6e8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13bb3(%rip), %rsi     # 0x2c774
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x362c
movzbl 0x22(%rbx), %ebp
leaq 0x13bde(%rip), %rdi     # 0x2c7b5
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x18bfa
cmpb $0x10, %bpl
ja 0x18c08
leaq 0x10c37(%rip), %rdi     # 0x29826
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x18c2a
leaq 0x14733(%rip), %rdi     # 0x2d334
callq 0x33b0
jmp 0x18c2a
leaq 0x13ad9(%rip), %rdi     # 0x2c6e8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13bcd(%rip), %rsi     # 0x2c7ec
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x362c
movzbl 0x23(%rbx), %ebp
leaq 0x13bf6(%rip), %rdi     # 0x2c82b
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x18c58
cmpb $0x10, %bpl
ja 0x18c66
leaq 0x10bd9(%rip), %rdi     # 0x29826
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x18c88
leaq 0x146d5(%rip), %rdi     # 0x2d334
callq 0x33b0
jmp 0x18c88
leaq 0x13a7b(%rip), %rdi     # 0x2c6e8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13be7(%rip), %rsi     # 0x2c864
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x362c
movzbl 0x24(%rbx), %ebp
leaq 0x13c12(%rip), %rdi     # 0x2c8a5
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x18cb6
cmpb $0x10, %bpl
ja 0x18cc4
leaq 0x10b7b(%rip), %rdi     # 0x29826
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x18ce6
leaq 0x14677(%rip), %rdi     # 0x2d334
callq 0x33b0
jmp 0x18ce6
leaq 0x13a1d(%rip), %rdi     # 0x2c6e8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13bff(%rip), %rsi     # 0x2c8da
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x362c
movzbl 0x25(%rbx), %ebp
leaq 0x13c26(%rip), %rdi     # 0x2c917
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x18d14
cmpb $0x10, %bpl
ja 0x18d22
leaq 0x10b1d(%rip), %rdi     # 0x29826
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x18d44
leaq 0x14619(%rip), %rdi     # 0x2d334
callq 0x33b0
jmp 0x18d44
leaq 0x139bf(%rip), %rdi     # 0x2c6e8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13c17(%rip), %rsi     # 0x2c950
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x362c
movzbl 0x26(%rbx), %ebx
leaq 0x13c42(%rip), %rdi     # 0x2c991
xorl %eax, %eax
callq 0x3030
testl %ebx, %ebx
je 0x18de2
pushq $0xa
popq %rdi
callq 0x3340
testb %bl, %bl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13c3e(%rip), %rdi     # 0x2c9b4
xorl %eax, %eax
callq 0x3030
testb $0x40, %bl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c3b(%rip), %rdi     # 0x2c9c9
xorl %eax, %eax
callq 0x3030
testb $0x20, %bl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c38(%rip), %rdi     # 0x2c9de
xorl %eax, %eax
callq 0x3030
testb $0x10, %bl
cmoveq %r12, %r14
leaq 0x13c51(%rip), %rdi     # 0x2ca0c
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
testb $0xf, %bl
je 0x18df6
leaq 0x13c64(%rip), %rsi     # 0x2ca35
xorl %edi, %edi
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x362c
leaq 0x1451a(%rip), %rdi     # 0x2d303
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x33b0
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x6106(%rip), %rdi      # 0x1ef0c
movl %r15d, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13602(%rip), %rsi     # 0x2c419
xorl %edi, %edi
movl %r15d, %edx
xorl %eax, %eax
callq 0x362c
jmp 0x1893d