// File: /workspace/github_cpp_makefile_star2_O1/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
movq 0x38(%r14), %rdx
leaq 0x13dc8(%rip), %rcx     # 0x320e9
movl $0x28, %r8d
xorl %esi, %esi
callq 0x3390
movq 0x30(%r14), %rsi
leaq 0x6a82(%rip), %rdi      # 0x24dbb
xorl %eax, %eax
callq 0x3030
movzbl 0x14(%rbx), %ebp
testb %bpl, %bpl
leaq 0x13e08(%rip), %rax     # 0x32156
leaq 0x13dfd(%rip), %rsi     # 0x32152
cmovnsq %rax, %rsi
leaq 0x13db2(%rip), %rdi     # 0x32112
xorl %eax, %eax
callq 0x3030
leaq 0x13df0(%rip), %rdi     # 0x3215e
xorl %eax, %eax
callq 0x3030
movl %ebp, %r14d
shrl $0x4, %r14d
andl $0x7, %r14d
cmpl $0x3, %r14d
ja 0x1e68a
leaq 0x1368b(%rip), %rax     # 0x31a1c
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x14c28(%rip), %rdi     # 0x32fc9
jmp 0x1e3bc
leaq 0x14bd1(%rip), %rdi     # 0x32f7b
jmp 0x1e3bc
leaq 0x14ba5(%rip), %rdi     # 0x32f58
jmp 0x1e3bc
leaq 0x14be4(%rip), %rdi     # 0x32fa0
callq 0x3380
testb $0x8, %bpl
leaq 0xdf6b(%rip), %r12      # 0x2c337
leaq 0xdf60(%rip), %r14      # 0x2c333
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13dae(%rip), %rdi     # 0x3218f
xorl %eax, %eax
callq 0x3030
testb $0x4, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13dae(%rip), %rdi     # 0x321a8
xorl %eax, %eax
callq 0x3030
testb $0x2, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13dae(%rip), %rdi     # 0x321c1
xorl %eax, %eax
callq 0x3030
testb $0x1, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13db1(%rip), %rdi     # 0x321dd
xorl %eax, %eax
callq 0x3030
movzbl 0x15(%rbx), %ebp
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13daf(%rip), %rdi     # 0x321f7
xorl %eax, %eax
callq 0x3030
leaq 0x13db5(%rip), %rdi     # 0x3220b
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x3, %eax
andl $0xc, %eax
leaq 0x13660(%rip), %rcx     # 0x31acc
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x3380
testb $0x1f, %bpl
je 0x1e48e
leaq 0x13da2(%rip), %rsi     # 0x32227
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
movzwl 0x16(%rbx), %ebp
leaq 0x13db2(%rip), %rdi     # 0x3224b
xorl %eax, %eax
callq 0x3030
cmpl $0xffff, %ebp           # imm = 0xFFFF
je 0x1e4ba
testl %ebp, %ebp
jne 0x1e4d8
leaq 0x14bc1(%rip), %rdi     # 0x33074
callq 0x3380
jmp 0x1e4f5
leaq 0x130bf(%rip), %rdi     # 0x31580
callq 0x3380
leaq 0x13d97(%rip), %rsi     # 0x32264
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
jmp 0x1e4f5
movzwl %bp, %eax
cvtsi2sd %eax, %xmm0
divsd 0x1b31(%rip), %xmm0     # 0x20018
leaq 0x13da8(%rip), %rdi     # 0x32296
movb $0x1, %al
callq 0x3030
movzwl 0x18(%rbx), %ebp
leaq 0x13da0(%rip), %rdi     # 0x322a0
xorl %eax, %eax
callq 0x3030
cmpl $0xffff, %ebp           # imm = 0xFFFF
je 0x1e521
testl %ebp, %ebp
jne 0x1e53f
leaq 0x14b5a(%rip), %rdi     # 0x33074
callq 0x3380
jmp 0x1e55f
leaq 0x13058(%rip), %rdi     # 0x31580
callq 0x3380
leaq 0x13d87(%rip), %rsi     # 0x322bb
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
jmp 0x1e55f
movzwl %bp, %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
divsd 0x1ac7(%rip), %xmm0     # 0x20018
leaq 0x13d3e(%rip), %rdi     # 0x32296
movb $0x1, %al
callq 0x3030
movzbl 0x1a(%rbx), %ebp
leaq 0x13d85(%rip), %rdi     # 0x322ef
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x1355f(%rip), %rcx     # 0x31adc
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
testb $0x20, %bpl
leaq 0xf511(%rip), %rax      # 0x2daa5
leaq 0xf501(%rip), %rsi      # 0x2da9c
cmoveq %rax, %rsi
leaq 0x13d78(%rip), %rdi     # 0x3231e
xorl %eax, %eax
callq 0x3030
leaq 0x10afe(%rip), %rdi     # 0x2f0b2
xorl %eax, %eax
callq 0x3030
movl %ebp, %r15d
shrl %r15d
movl %r15d, %eax
andl $0xc, %eax
leaq 0x1351e(%rip), %rcx     # 0x31aec
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x10aed(%rip), %rdi     # 0x2f0ce
xorl %eax, %eax
callq 0x3030
andl $0x3, %r15d
leaq 0x13439(%rip), %rax     # 0x31a2c
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0xf76d(%rip), %rdi      # 0x2dd70
jmp 0x1e633
leaq 0xf543(%rip), %rdi      # 0x2db4f
jmp 0x1e633
leaq 0x12f6b(%rip), %rdi     # 0x31580
callq 0x3380
leaq 0xdc66(%rip), %rsi      # 0x2c287
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
jmp 0x1e638
leaq 0xf566(%rip), %rdi      # 0x2db99
callq 0x3380
testb $0x1, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13cf0(%rip), %rdi     # 0x3233a
xorl %eax, %eax
callq 0x3030
movzbl 0x1b(%rbx), %r15d
leaq 0x13cfb(%rip), %rdi     # 0x32358
xorl %eax, %eax
callq 0x3030
cmpq $0xe, %r15
ja 0x1e6f2
leaq 0x133c7(%rip), %rax     # 0x31a3c
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0xf6eb(%rip), %rdi      # 0x2dd70
jmp 0x1e75e
leaq 0x682b(%rip), %rdi      # 0x24ebc
movl %r14d, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13acf(%rip), %rsi     # 0x32171
xorl %edi, %edi
movl %r14d, %edx
xorl %eax, %eax
callq 0x37ec
jmp 0x1e3c1
leaq 0x14b9b(%rip), %rdi     # 0x33255
jmp 0x1e75e
leaq 0x14a64(%rip), %rdi     # 0x3312a
jmp 0x1e75e
leaq 0x14b4a(%rip), %rdi     # 0x3321c
jmp 0x1e75e
leaq 0x14a33(%rip), %rdi     # 0x33111
jmp 0x1e75e
leaq 0x14a89(%rip), %rdi     # 0x33170
jmp 0x1e75e
leaq 0x14b52(%rip), %rdi     # 0x33242
jmp 0x1e75e
leaq 0x67c3(%rip), %rdi      # 0x24ebc
movl %r15d, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13c75(%rip), %rsi     # 0x3237f
xorl %edi, %edi
movl %r15d, %edx
xorl %eax, %eax
callq 0x37ec
jmp 0x1e763
leaq 0x14b11(%rip), %rdi     # 0x33230
jmp 0x1e75e
leaq 0x14a8e(%rip), %rdi     # 0x331b6
jmp 0x1e75e
leaq 0x14b4e(%rip), %rdi     # 0x3327f
jmp 0x1e75e
leaq 0x14ac0(%rip), %rdi     # 0x331fa
jmp 0x1e75e
leaq 0x149b3(%rip), %rdi     # 0x330f6
jmp 0x1e75e
leaq 0x14a8c(%rip), %rdi     # 0x331d8
jmp 0x1e75e
leaq 0x149f8(%rip), %rdi     # 0x3314d
jmp 0x1e75e
leaq 0x14a35(%rip), %rdi     # 0x33193
callq 0x3380
movzbl 0x1c(%rbx), %r15d
leaq 0x13c42(%rip), %rdi     # 0x323b1
xorl %eax, %eax
callq 0x3030
cmpq $0x4, %r15
ja 0x1ec7a
leaq 0x132f1(%rip), %rax     # 0x31a78
movslq (%rax,%r15,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x14aec(%rip), %rdi     # 0x33283
jmp 0x1e7bb
leaq 0x14ab5(%rip), %rdi     # 0x33255
jmp 0x1e7bb
leaq 0x14ac8(%rip), %rdi     # 0x33271
jmp 0x1e7bb
leaq 0x14aae(%rip), %rdi     # 0x33260
jmp 0x1e7bb
leaq 0x14ac4(%rip), %rdi     # 0x3327f
callq 0x3380
movzbl 0x1d(%rbx), %ebp
testl %ebp, %ebp
je 0x1e7ce
cmpb $0x4, 0x1e(%rbx)
jae 0x1e7df
leaq 0x14ac4(%rip), %rdi     # 0x33299
callq 0x3380
jmp 0x1e94b
leaq 0x14ae3(%rip), %rdi     # 0x332c9
callq 0x3380
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13c11(%rip), %rdi     # 0x3240d
xorl %eax, %eax
callq 0x3030
testb $0x40, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c07(%rip), %rdi     # 0x3241c
xorl %eax, %eax
callq 0x3030
testb $0x20, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c0c(%rip), %rdi     # 0x3243a
xorl %eax, %eax
callq 0x3030
testb $0x10, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c10(%rip), %rdi     # 0x32457
xorl %eax, %eax
callq 0x3030
testb $0x8, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c16(%rip), %rdi     # 0x32476
xorl %eax, %eax
callq 0x3030
testb $0x4, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c2a(%rip), %rdi     # 0x324a3
xorl %eax, %eax
callq 0x3030
testb $0x2, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c3e(%rip), %rdi     # 0x324d0
xorl %eax, %eax
callq 0x3030
testb $0x1, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c52(%rip), %rdi     # 0x324fd
xorl %eax, %eax
callq 0x3030
movzbl 0x1e(%rbx), %ebp
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13c64(%rip), %rdi     # 0x3252b
xorl %eax, %eax
callq 0x3030
testb $0x40, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c79(%rip), %rdi     # 0x32559
xorl %eax, %eax
callq 0x3030
testb $0x20, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13c8e(%rip), %rdi     # 0x32587
xorl %eax, %eax
callq 0x3030
testb $0x10, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13ca3(%rip), %rdi     # 0x325b5
xorl %eax, %eax
callq 0x3030
testb $0x8, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13cae(%rip), %rdi     # 0x325d9
xorl %eax, %eax
callq 0x3030
testb $0x4, %bpl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13cbb(%rip), %rdi     # 0x325ff
xorl %eax, %eax
callq 0x3030
testb $0x3, %bpl
je 0x1e961
leaq 0x13cbd(%rip), %rsi     # 0x32615
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
movb 0x1f(%rbx), %bpl
testb %bpl, %bpl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13cc3(%rip), %rdi     # 0x32639
xorl %eax, %eax
callq 0x3030
testb $0x7f, %bpl
je 0x1e993
leaq 0x13cc2(%rip), %rsi     # 0x3264c
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
movzbl 0x20(%rbx), %ebp
leaq 0x13cd2(%rip), %rdi     # 0x32670
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x1e9c1
cmpb $0x10, %bpl
ja 0x1e9cf
leaq 0x10e30(%rip), %rdi     # 0x2f7e6
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x1e9f1
leaq 0x1492c(%rip), %rdi     # 0x332f4
callq 0x3380
jmp 0x1e9f1
leaq 0x13cd2(%rip), %rdi     # 0x326a8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13cd5(%rip), %rsi     # 0x326bb
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37ec
movzbl 0x21(%rbx), %ebp
leaq 0x13cff(%rip), %rdi     # 0x326fb
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x1ea1f
cmpb $0x10, %bpl
ja 0x1ea2d
leaq 0x10dd2(%rip), %rdi     # 0x2f7e6
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x1ea4f
leaq 0x148ce(%rip), %rdi     # 0x332f4
callq 0x3380
jmp 0x1ea4f
leaq 0x13c74(%rip), %rdi     # 0x326a8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13cf0(%rip), %rsi     # 0x32734
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37ec
movzbl 0x22(%rbx), %ebp
leaq 0x13d1b(%rip), %rdi     # 0x32775
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x1ea7d
cmpb $0x10, %bpl
ja 0x1ea8b
leaq 0x10d74(%rip), %rdi     # 0x2f7e6
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x1eaad
leaq 0x14870(%rip), %rdi     # 0x332f4
callq 0x3380
jmp 0x1eaad
leaq 0x13c16(%rip), %rdi     # 0x326a8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13d0a(%rip), %rsi     # 0x327ac
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37ec
movzbl 0x23(%rbx), %ebp
leaq 0x13d33(%rip), %rdi     # 0x327eb
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x1eadb
cmpb $0x10, %bpl
ja 0x1eae9
leaq 0x10d16(%rip), %rdi     # 0x2f7e6
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x1eb0b
leaq 0x14812(%rip), %rdi     # 0x332f4
callq 0x3380
jmp 0x1eb0b
leaq 0x13bb8(%rip), %rdi     # 0x326a8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13d24(%rip), %rsi     # 0x32824
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37ec
movzbl 0x24(%rbx), %ebp
leaq 0x13d4f(%rip), %rdi     # 0x32865
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x1eb39
cmpb $0x10, %bpl
ja 0x1eb47
leaq 0x10cb8(%rip), %rdi     # 0x2f7e6
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x1eb69
leaq 0x147b4(%rip), %rdi     # 0x332f4
callq 0x3380
jmp 0x1eb69
leaq 0x13b5a(%rip), %rdi     # 0x326a8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13d3c(%rip), %rsi     # 0x3289a
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37ec
movzbl 0x25(%rbx), %ebp
leaq 0x13d63(%rip), %rdi     # 0x328d7
xorl %eax, %eax
callq 0x3030
testl %ebp, %ebp
je 0x1eb97
cmpb $0x10, %bpl
ja 0x1eba5
leaq 0x10c5a(%rip), %rdi     # 0x2f7e6
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
jmp 0x1ebc7
leaq 0x14756(%rip), %rdi     # 0x332f4
callq 0x3380
jmp 0x1ebc7
leaq 0x13afc(%rip), %rdi     # 0x326a8
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13d54(%rip), %rsi     # 0x32910
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37ec
movzbl 0x26(%rbx), %ebx
leaq 0x13d7f(%rip), %rdi     # 0x32951
xorl %eax, %eax
callq 0x3030
testl %ebx, %ebx
je 0x1ec48
movl $0xa, %edi
callq 0x3310
testb %bl, %bl
movq %r14, %rsi
cmovnsq %r12, %rsi
leaq 0x13d7d(%rip), %rdi     # 0x32974
xorl %eax, %eax
callq 0x3030
testb $0x40, %bl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13d7a(%rip), %rdi     # 0x32989
xorl %eax, %eax
callq 0x3030
testb $0x20, %bl
movq %r14, %rsi
cmoveq %r12, %rsi
leaq 0x13d77(%rip), %rdi     # 0x3299e
xorl %eax, %eax
callq 0x3030
testb $0x10, %bl
cmoveq %r12, %r14
leaq 0x13d90(%rip), %rdi     # 0x329cc
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
jmp 0x1ec54
leaq 0x14674(%rip), %rdi     # 0x332c3
callq 0x3380
testb $0xf, %bl
je 0x1ec71
leaq 0x13d95(%rip), %rsi     # 0x329f5
xorl %edi, %edi
xorl %eax, %eax
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
jmp 0x37ec
popq %rbx
popq %r12
popq %r14
popq %r15
popq %rbp
retq
leaq 0x623b(%rip), %rdi      # 0x24ebc
movl %r15d, %esi
xorl %eax, %eax
callq 0x3030
leaq 0x13747(%rip), %rsi     # 0x323d9
xorl %edi, %edi
movl %r15d, %edx
xorl %eax, %eax
callq 0x37ec
jmp 0x1e7c0
nop