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

	switch (x[0]) {
	case 0x00: data_block = "Video Capability Data Block"; break;
	case 0x01: data_block.clear(); break;
	case 0x02: data_block = "VESA Video Display Device Data Block"; break;
	case 0x03: data_block = "VESA Video Timing Block Extension"; break;
	case 0x04: data_block = "Reserved for HDMI Video Data Block"; break;
	case 0x05: data_block = "Colorimetry Data Block"; break;
	case 0x06: data_block = "HDR Static Metadata Data Block"; break;
	case 0x07: data_block = "HDR Dynamic Metadata Data Block"; break;

	case 0x0d: data_block = "Video Format Preference Data Block"; break;
	case 0x0e: data_block = "YCbCr 4:2:0 Video Data Block"; break;
	case 0x0f: data_block = "YCbCr 4:2:0 Capability Map Data Block"; break;
	case 0x10: data_block = "Reserved for CTA-861 Miscellaneous Audio Fields"; break;
	case 0x11: data_block.clear(); audio_block = true; break;
	case 0x12: data_block = "HDMI Audio Data Block"; audio_block = true; break;
	case 0x13: data_block = "Room Configuration Data Block"; audio_block = true; break;
	case 0x14: data_block = "Speaker Location Data Block"; audio_block = true; break;

	case 0x20: data_block = "InfoFrame Data Block"; break;

	case 0x34: data_block = "DisplayID Type VII Video Timing Data Block"; break;
	case 0x35: data_block = "DisplayID Type VIII Video Timing Data Block"; break;
	case 0x42: data_block = "DisplayID Type X Video Timing Data Block"; break;

	case 0x78: data_block = "HDMI Forum EDID Extension Override Data Block"; break;
	case 0x79: data_block = "HDMI Forum Sink Capability Data Block"; break;
	default:
		if (x[0] <= 12)
			printf("  Unknown CTA-861 Video-Related");
		else if (x[0] <= 31)
			printf("  Unknown CTA-861 Audio-Related");
		else if (x[0] >= 120 && x[0] <= 127)
			printf("  Unknown CTA-861 HDMI-Related");
		else
			printf("  Unknown CTA-861");
		printf(" Data Block (extended tag 0x%02x, length %u)\n", x[0], length);
		hex_block("    ", x + 1, length);
		data_block.clear();
		warn("Unknown Extended CTA-861 Data Block 0x%02x.\n", x[0]);
		return;
	}

	switch (x[0]) {
	case 0x00:
	case 0x02:
	case 0x05:
	case 0x06:
	case 0x0d:
	case 0x0f:
	case 0x12:
	case 0x13:
	case 0x78:
	case 0x79:
		if (duplicate)
			fail("Only one instance of this Data Block is allowed.\n");
		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");

	if (data_block.length())
		printf("  %s:\n", data_block.c_str());

	switch (x[0]) {
	case 0x00: cta_vcdb(x + 1, length); return;
	case 0x01:
		if (length < 3) {
			data_block = std::string("Vendor-Specific Video Data Block");
			fail("Invalid length %u < 3.\n", length);
			return;
		}
		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 Video Data Block, OUI %s:\n",
			       ouitohex(oui).c_str());
			hex_block("    ", x + 4, length - 3);
			data_block.clear();
			warn("Unknown Extended Vendor-Specific Video Data Block, OUI %s.\n",
			     ouitohex(oui).c_str());
			return;
		}
		data_block = std::string("Vendor-Specific Video 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 == 0x90848b)
			cta_hdr10plus(x + 4, length - 3);
		else if (oui == 0x00d046)
			cta_dolby_video(x + 4, length - 3);
		else
			hex_block("    ", x + 4, length - 3);
		return;
	case 0x02: cta_vesa_vdddb(x + 1, length); return;
	case 0x05: cta_colorimetry_block(x + 1, length); return;
	case 0x06: cta_hdr_static_metadata_block(x + 1, length); return;
	case 0x07: cta_hdr_dyn_metadata_block(x + 1, length); return;
	case 0x0d: cta_vfpdb(x + 1, length); return;
	case 0x0e: cta_svd(x + 1, length, true); return;
	case 0x0f: cta_y420cmdb(x + 1, length); return;
	case 0x11:
		if (length < 3) {
			data_block = std::string("Vendor-Specific Audio Data Block");
			fail("Invalid length %u < 3.\n", length);
			return;
		}
		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 Audio Data Block, OUI %s:\n",
			       ouitohex(oui).c_str());
			hex_block("    ", x + 4, length - 3);
			data_block.clear();
			warn("Unknown Extended Vendor-Specific Audio Data Block, OUI %s.\n",
			     ouitohex(oui).c_str());
			return;
		}
		data_block = std::string("Vendor-Specific Audio 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 == 0x00d046)
			cta_dolby_audio(x + 4, length - 3);
		else
			hex_block("    ", x + 4, length - 3);
		return;
	case 0x12: cta_hdmi_audio_block(x + 1, length); return;
	case 0x13: cta_rcdb(x + 1, length); return;
	case 0x14: cta_sldb(x + 1, length); return;
	case 0x20: cta_ifdb(x + 1, length); return;
	case 0x34: cta_displayid_type_7(x + 1, length); return;
	case 0x35: cta_displayid_type_8(x + 1, length); return;
	case 0x42: cta_displayid_type_10(x + 1, length); return;
	case 0x78:
		cta_hf_eeodb(x + 1, length);
		// This must be the first CTA-861 block
		if (!cta.first_block)
			fail("Block starts at a wrong offset.\n");
		return;
	case 0x79:
		if (!cta.last_block_was_hdmi_vsdb)
			fail("HDMI Forum SCDB did not immediately follow the HDMI VSDB.\n");
		if (cta.have_hf_scdb || cta.have_hf_vsdb)
			fail("Duplicate HDMI Forum VSDB/SCDB.\n");
		if (length < 2) {
			data_block = std::string("HDMI Forum SCDB");
			fail("Invalid length %u < 2.\n", length);
			return;
		}
		if (x[1] || x[2])
			printf("  Non-zero SCDB reserved fields!\n");
		cta_hf_scdb(x + 3, length - 2);
		cta.have_hf_scdb = 1;
		return;
	}

	hex_block("    ", x + 1, length);
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x88, %rsp
movl %ecx, %r15d
movl %edx, %ebp
movq %rsi, %rbx
movq %rdi, %r14
movb (%rsi), %al
movzbl %al, %ecx
cmpl $0x33, %ecx
jg 0x1086c
cmpl $0x20, %ecx
ja 0x113f9
movl %ecx, %ecx
leaq 0x16042(%rip), %rdx     # 0x26888
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a373(%rip), %rcx     # 0x2abd1
xorl %r12d, %r12d
movl $0x1b, %r8d
jmp 0x10ac8
cmpl $0x41, %ecx
jle 0x108a0
cmpl $0x42, %ecx
je 0x10a96
cmpl $0x78, %ecx
je 0x10a7c
cmpl $0x79, %ecx
jne 0x113f9
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a5bb(%rip), %rcx     # 0x2ae56
jmp 0x10a71
cmpl $0x34, %ecx
je 0x10ab0
cmpl $0x35, %ecx
jne 0x113f9
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a512(%rip), %rcx     # 0x2add3
xorl %r12d, %r12d
movl $0x2b, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a3af(%rip), %rcx     # 0x2ac8d
xorl %r12d, %r12d
movl $0x1f, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a448(%rip), %rcx     # 0x2ad43
movl $0x15, %r8d
jmp 0x10994
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a462(%rip), %rcx     # 0x2ad77
movl $0x1b, %r8d
jmp 0x10994
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a381(%rip), %rcx     # 0x2acad
jmp 0x10954
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
xorl %r12d, %r12d
jmp 0x10acf
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a2e0(%rip), %rcx     # 0x2ac34
xorl %r12d, %r12d
movl $0x22, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a2e6(%rip), %rcx     # 0x2ac57
xorl %r12d, %r12d
movl $0x16, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a3cb(%rip), %rcx     # 0x2ad59
movl $0x1d, %r8d
xorl %esi, %esi
callq 0x3390
jmp 0x10a40
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a321(%rip), %rcx     # 0x2acd0
xorl %r12d, %r12d
movl $0x1c, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a221(%rip), %rcx     # 0x2abed
xorl %r12d, %r12d
movl $0x24, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a229(%rip), %rcx     # 0x2ac12
xorl %r12d, %r12d
movl $0x21, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a38d(%rip), %rcx     # 0x2ad93
xorl %r12d, %r12d
movl $0x14, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a24b(%rip), %rcx     # 0x2ac6e
xorl %r12d, %r12d
movl $0x1e, %r8d
jmp 0x10ac8
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movb $0x1, %r12b
jmp 0x10acf
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a2bc(%rip), %rcx     # 0x2ad13
xorl %r12d, %r12d
movl $0x2f, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a27c(%rip), %rcx     # 0x2aced
xorl %r12d, %r12d
movl $0x25, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a39d(%rip), %rcx     # 0x2ae28
xorl %r12d, %r12d
movl $0x2d, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a35a(%rip), %rcx     # 0x2adff
xorl %r12d, %r12d
movl $0x28, %r8d
jmp 0x10ac8
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a2e9(%rip), %rcx     # 0x2ada8
xorl %r12d, %r12d
movl $0x2a, %r8d
xorl %esi, %esi
callq 0x3390
movzbl (%rbx), %eax
cmpl $0x13, %eax
ja 0x10c36
movl $0xca065, %ecx          # imm = 0xCA065
btl %eax, %ecx
jae 0x10c36
testb %r15b, %r15b
je 0x10afe
leaq 0x1a453(%rip), %rsi     # 0x2af48
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
testb %r12b, %r12b
je 0x10b1d
testb $0x40, 0x2c2(%r14)
jne 0x10b1d
leaq 0x1a466(%rip), %rsi     # 0x2af7a
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
leaq 0x30(%r14), %r15
cmpq $0x0, 0x38(%r14)
je 0x10b39
movq (%r15), %rsi
leaq 0x14289(%rip), %rdi     # 0x24dbb
xorl %eax, %eax
callq 0x3030
movzbl (%rbx), %eax
cmpl $0x33, %eax
jg 0x10b7d
cmpl $0x20, %eax
ja 0x113c9
movl %eax, %eax
leaq 0x15db9(%rip), %rcx     # 0x2690c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10432
cmpl $0x41, %eax
jle 0x10c47
cmpl $0x42, %eax
je 0x11387
cmpl $0x78, %eax
je 0x1132b
cmpl $0x79, %eax
jne 0x113c9
cmpb $0x0, 0x2d2(%r14)
jne 0x10bbb
leaq 0x1a5fc(%rip), %rsi     # 0x2b1ae
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
cmpb $0x0, 0x2d4(%r14)
jne 0x10bcf
cmpb $0x1, 0x2d3(%r14)
jne 0x10bdf
leaq 0x1a613(%rip), %rsi     # 0x2b1e9
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
cmpl $0x1, %ebp
ja 0x11576
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1a612(%rip), %rsi     # 0x2b20a
leaq 0x1a61a(%rip), %rdx     # 0x2b219
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x8f6e
movq %r15, %rdi
movq %rbx, %rsi
callq 0x32d0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x10c2a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x1a5e9(%rip), %rsi     # 0x2b21a
jmp 0x112dc
addl $-0x78, %eax
cmpl $0x2, %eax
jb 0x10ae9
jmp 0x10afe
cmpl $0x34, %eax
je 0x113a8
cmpl $0x35, %eax
jne 0x113c9
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1067e
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xffd6
cmpl $0x1, %ebp
jbe 0x1131b
movzbl 0x1(%rbx), %esi
andl $0x3, %esi
je 0x10cbd
incl %esi
leaq 0x1ba6a(%rip), %rdi     # 0x2c720
xorl %eax, %eax
callq 0x3030
testb $0x4, 0x1(%rbx)
je 0x10ccf
leaq 0x1d313(%rip), %rdi     # 0x2dfdd
callq 0x3380
testb $0x7, 0x2(%rbx)
je 0x11d47
addl $-0x2, %ebp
cmpl $0x4, %ebp
jb 0x11d47
addq $0x3, %rbx
leaq 0x19a0d(%rip), %r14     # 0x2a6fd
cmpl $0x4, %ebp
jne 0x10d64
movzbl 0x3(%rbx), %esi
shrl $0x4, %esi
leal -0x1(%rsi), %eax
cmpb $0x3, %al
jae 0x11d59
movzbl 0x2(%rbx), %ecx
shll $0x10, %ecx
movzbl 0x1(%rbx), %edx
shll $0x8, %edx
orl %ecx, %edx
movzbl (%rbx), %r15d
orl %edx, %r15d
movzbl %al, %eax
leaq 0x191a4(%rip), %rcx     # 0x29ecc
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x28f35(%rip), %r12     # 0x39c70
xorl %r13d, %r13d
btl %r13d, %r15d
jae 0x10d52
movq (%r12), %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3030
incq %r13
addq $0x8, %r12
cmpq $0x15, %r13
jne 0x10d3e
jmp 0x10e6f
movzbl (%rbx), %r15d
andl $0xf, %r15d
movq %rsp, %rdi
movl %r15d, %esi
callq 0x15919
movq (%rsp), %rsi
movzbl 0x1(%rbx), %edx
andl $0x1f, %edx
incl %edx
leaq 0x1b9af(%rip), %rdi     # 0x2c73a
xorl %eax, %eax
callq 0x3030
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x10dad
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movzbl 0x2(%rbx), %eax
testb $0x40, %al
leaq 0x1b9cc(%rip), %rsi     # 0x2c786
leaq 0xfeb8(%rip), %rdi      # 0x20c79
cmoveq %rdi, %rsi
testb $0x20, %al
leaq 0x1b9bd(%rip), %rdx     # 0x2c78b
cmoveq %rdi, %rdx
testb $0x10, %al
leaq 0x1b9b7(%rip), %rcx     # 0x2c792
cmoveq %rdi, %rcx
testb $0x8, %al
leaq 0x1b9ae(%rip), %r8      # 0x2c796
cmoveq %rdi, %r8
testb $0x4, %al
leaq 0x1b9a7(%rip), %r9      # 0x2c79c
cmoveq %rdi, %r9
testb $0x2, %al
leaq 0x1b99e(%rip), %r10     # 0x2c7a0
cmoveq %rdi, %r10
testb $0x1, %al
leaq 0x1b997(%rip), %r11     # 0x2c7a6
cmoveq %rdi, %r11
leaq 0x1b939(%rip), %rdi     # 0x2c753
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x3030
addq $0x10, %rsp
cmpb $0x1, %r15b
jne 0x10e6f
movzbl 0x3(%rbx), %eax
testb $0x4, %al
leaq 0x1b99a(%rip), %rsi     # 0x2c7d6
leaq 0xfe36(%rip), %rdi      # 0x20c79
cmoveq %rdi, %rsi
testb $0x2, %al
leaq 0x1b98a(%rip), %rdx     # 0x2c7da
cmoveq %rdi, %rdx
testb $0x1, %al
leaq 0x1b981(%rip), %rcx     # 0x2c7de
cmoveq %rdi, %rcx
leaq 0x1b942(%rip), %rdi     # 0x2c7aa
xorl %eax, %eax
callq 0x3030
addl $-0x4, %ebp
addq $0x4, %rbx
cmpl $0x3, %ebp
ja 0x10cf0
jmp 0x11d47
cmpl $0x3, %ebp
jb 0x1131b
incq %rbx
leaq 0x1b854(%rip), %r14     # 0x2c6eb
leaq 0x1b86f(%rip), %r15     # 0x2c70d
cmpl $0x3, %ebp
jb 0x11d47
movzbl (%rbx), %r12d
cmpl %r12d, %ebp
jbe 0x10eed
movzwl 0x1(%rbx), %r13d
movq %r14, %rdi
movl %r13d, %esi
xorl %eax, %eax
callq 0x3030
cmpl $0x4, %r13d
je 0x10ed4
cmpl $0x2, %r13d
je 0x10ef1
cmpl $0x1, %r13d
jne 0x10f48
cmpb $0x3, %r12b
jb 0x10f48
movzbl 0x3(%rbx), %esi
andl $0xf, %esi
movq %r15, %rdi
xorl %eax, %eax
callq 0x3030
jmp 0x10f48
movl %ebp, %eax
jmp 0x10f54
cmpb $0x3, %r12b
jb 0x10f48
movzbl 0x3(%rbx), %r13d
movl %r13d, %esi
andl $0xf, %esi
movq %r15, %rdi
xorl %eax, %eax
callq 0x3030
andl $0xf, %r13d
je 0x10f48
testb $0x10, 0x3(%rbx)
je 0x10f24
leaq 0x1cf73(%rip), %rdi     # 0x2de92
callq 0x3380
testb $0x20, 0x3(%rbx)
je 0x10f36
leaq 0x1cf8c(%rip), %rdi     # 0x2debd
callq 0x3380
testb $0x40, 0x3(%rbx)
je 0x10f48
leaq 0x1cfa5(%rip), %rdi     # 0x2dee8
callq 0x3380
leaq 0x1(%r12), %rcx
movl %ebp, %eax
subl %ecx, %eax
addq %rcx, %rbx
cmpl %r12d, %ebp
movl %eax, %ebp
ja 0x10e9e
jmp 0x11d47
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xed32
cmpl $0x1e, %ebp
jne 0x1140d
leaq 0x1b164(%rip), %rdi     # 0x2c0f9
xorl %eax, %eax
callq 0x3030
movzbl 0x1(%rbx), %r14d
movl %r14d, %eax
shrl $0x4, %eax
cmpl $0xc, %eax
ja 0x11dd2
leaq 0x159d9(%rip), %rcx     # 0x26990
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1b147(%rip), %rdi     # 0x2c10e
xorl %eax, %eax
callq 0x3030
andl $0xf, %r14d
cmpl $0x2, %r14d
ja 0x122c3
leaq 0x18e59(%rip), %rax     # 0x29e3c
movslq (%rax,%r14,4), %rdi
addq %rax, %rdi
jmp 0x122ca
cmpl $0x2, %ebp
jb 0x1131b
leaq 0x18dcd(%rip), %r15     # 0x29dcc
leaq 0x196f9(%rip), %r14     # 0x2a6ff
movq %r15, %r12
xorl %r13d, %r13d
movzbl 0x1(%rbx), %eax
btl %r13d, %eax
jae 0x11027
movslq (%r12), %rsi
addq %r15, %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3030
incq %r13
addq $0x4, %r12
cmpq $0x8, %r13
jne 0x1100c
cmpb $0x0, 0x2(%rbx)
jns 0x11046
leaq 0x1cde9(%rip), %rdi     # 0x2de2a
callq 0x3380
testb $0x40, 0x2(%rbx)
je 0x11d47
leaq 0x1cdde(%rip), %rdi     # 0x2de35
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3380
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x1023a
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xebd8
cmpl $0x1, %ebp
jbe 0x1131b
leaq 0x1cd80(%rip), %rdi     # 0x2de3f
callq 0x3380
leaq 0x18d21(%rip), %r15     # 0x29dec
leaq 0x1b4cb(%rip), %r12     # 0x2c59d
movq %r15, %r14
xorl %r13d, %r13d
movzbl 0x1(%rbx), %eax
btl %r13d, %eax
jae 0x1111e
cmpq $0x3, %r13
ja 0x110fe
movslq (%r14), %rsi
addq %r15, %rsi
leaq 0x19608(%rip), %rdi     # 0x2a6fd
xorl %eax, %eax
callq 0x3030
jmp 0x1111e
leaq 0x1b484(%rip), %rdi     # 0x2c589
movl %r13d, %esi
xorl %eax, %eax
callq 0x3030
xorl %edi, %edi
movq %r12, %rsi
movl %r13d, %edx
xorl %eax, %eax
callq 0x37ec
incq %r13
addq $0x4, %r14
cmpq $0x6, %r13
jne 0x110d8
leaq 0x1cd35(%rip), %rdi     # 0x2de67
callq 0x3380
leaq 0x1b473(%rip), %r14     # 0x2c5b1
xorl %r15d, %r15d
movzbl 0x2(%rbx), %eax
btl %r15d, %eax
jae 0x11159
leal 0x1(%r15), %esi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3030
incl %r15d
cmpl $0x8, %r15d
jne 0x11141
cmpl $0x2, %ebp
je 0x11197
movzbl 0x3(%rbx), %r14d
cvtsi2sd %r14d, %xmm0
mulsd 0x18da7(%rip), %xmm0    # 0x29f20
callq 0x3200
mulsd 0x18da2(%rip), %xmm0    # 0x29f28
leaq 0x1b443(%rip), %rdi     # 0x2c5d0
movl %r14d, %esi
movb $0x1, %al
callq 0x3030
cmpl $0x4, %ebp
jb 0x111cf
movzbl 0x4(%rbx), %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
mulsd 0x18d6f(%rip), %xmm0    # 0x29f20
callq 0x3200
mulsd 0x18d6a(%rip), %xmm0    # 0x29f28
leaq 0x1b440(%rip), %rdi     # 0x2c605
movl %r14d, %esi
movb $0x1, %al
callq 0x3030
cmpl $0x5, %ebp
jb 0x11d47
movzbl 0x5(%rbx), %ebp
movzbl 0x3(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
mulsd 0x18d31(%rip), %xmm0    # 0x29f20
callq 0x3200
mulsd 0x18d2c(%rip), %xmm0    # 0x29f28
movzbl 0x5(%rbx), %eax
cvtsi2sd %eax, %xmm1
divsd 0x18d24(%rip), %xmm1    # 0x29f30
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm0
divsd 0xedfc(%rip), %xmm0     # 0x20018
leaq 0x1b425(%rip), %rdi     # 0x2c648
movl %ebp, %esi
movb $0x1, %al
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3030
cmpl $0x2, %ebp
ja 0x11419
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x19d99(%rip), %rsi     # 0x2afef
leaq 0x19db2(%rip), %rdx     # 0x2b00f
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x8f6e
movq %r15, %rdi
movq %rbx, %rsi
callq 0x32d0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x11288
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x112d5
cmpl $0x2, %ebp
ja 0x11454
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x19e3d(%rip), %rsi     # 0x2b0e0
leaq 0x19e56(%rip), %rdx     # 0x2b100
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x8f6e
movq %r15, %rdi
movq %rbx, %rsi
callq 0x32d0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x112d5
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x19d34(%rip), %rsi     # 0x2b010
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37ec
jmp 0x11d47
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xe3f4
cmpl $0x1, %ebp
ja 0x1148f
leaq 0x18e05(%rip), %rsi     # 0x2a127
xorl %edi, %edi
movl %ebp, %edx
jmp 0x11622
movzbl 0x1(%rbx), %esi
leaq 0x1b5f2(%rip), %rdi     # 0x2c928
xorl %eax, %eax
callq 0x3030
cmpl $0x1, %ebp
jne 0x11348
cmpb $0x0, 0x1(%rbx)
jne 0x11358
leaq 0x1b5fd(%rip), %rsi     # 0x2c94c
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
cmpb $0x0, 0x2d5(%r14)
jne 0x11d47
leaq 0x19e20(%rip), %rsi     # 0x2b18d
xorl %edi, %edi
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x37ec
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10768
incq %rbx
movq %r14, %rdi
movq %rbx, %rsi
movl %ebp, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x10616
incq %rbx
leaq 0x14074(%rip), %rdi     # 0x25447
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x5bbb
cmpb $0xd, %al
jae 0x115ac
leaq 0x19a74(%rip), %rdi     # 0x2ae7c
jmp 0x115cd
leaq 0x1acd1(%rip), %rsi     # 0x2c0e5
jmp 0x11322
movzbl 0x3(%rbx), %eax
shll $0x10, %eax
movzbl 0x2(%rbx), %ecx
shll $0x8, %ecx
orl %eax, %ecx
movzbl 0x1(%rbx), %r12d
orl %ecx, %r12d
movl $0x0, 0x24(%rsp)
movl %r12d, %edi
xorl %esi, %esi
callq 0x5a2e
testq %rax, %rax
je 0x1163a
movq %rax, %r13
jmp 0x11654
movzbl 0x3(%rbx), %eax
shll $0x10, %eax
movzbl 0x2(%rbx), %ecx
shll $0x8, %ecx
orl %eax, %ecx
movzbl 0x1(%rbx), %r12d
orl %ecx, %r12d
movl $0x0, 0x24(%rsp)
movl %r12d, %edi
xorl %esi, %esi
callq 0x5a2e
testq %rax, %rax
je 0x11749
movq %rax, %r13
jmp 0x11763
leaq 0x1(%rbx), %r12
movzbl 0x1(%rbx), %r14d
shrl $0x5, %r14d
movzbl 0x2(%rbx), %esi
leaq 0x1b432(%rip), %rdi     # 0x2c8d9
xorl %eax, %eax
callq 0x3030
addq $0x2, %r14
subl %r14d, %ebp
jb 0x11d47
je 0x11d47
addq %r14, %r12
movq %rsp, %rbx
leaq 0x1b41a(%rip), %r14     # 0x2c8e8
leaq 0x1b437(%rip), %r15     # 0x2c90c
movzbl (%r12), %r13d
movl %r13d, %esi
andl $0x1f, %esi
cmpl $0x4, %ebp
jb 0x11548
cmpl $0x1, %esi
jne 0x11548
movzbl 0x3(%r12), %eax
shll $0x10, %eax
movzbl 0x2(%r12), %ecx
shll $0x8, %ecx
orl %eax, %ecx
movzbl 0x1(%r12), %esi
orl %ecx, %esi
movq %rbx, %rdi
callq 0x5b32
movq (%rsp), %rdx
movq %r14, %rdi
movl $0x1, %esi
xorl %eax, %eax
callq 0x3030
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1153c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movl $0x4, %eax
movl $0xfffffffc, %ecx       # imm = 0xFFFFFFFC
jmp 0x1155c
movq %r15, %rdi
xorl %eax, %eax
callq 0x3030
movl $0x1, %eax
movl $0xffffffff, %ecx       # imm = 0xFFFFFFFF
shrl $0x5, %r13d
addl %ecx, %ebp
addq %rax, %r12
addq %r13, %r12
subl %r13d, %ebp
jne 0x114d5
jmp 0x11d47
cmpb $0x0, 0x1(%rbx)
jne 0x11582
cmpb $0x0, 0x2(%rbx)
je 0x1158e
leaq 0x1c40e(%rip), %rdi     # 0x2d997
callq 0x3380
addq $0x3, %rbx
addl $-0x2, %ebp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12a89
movb $0x1, 0x2d4(%r14)
jmp 0x11d47
cmpb $0x20, %al
jae 0x115b9
leaq 0x198e5(%rip), %rdi     # 0x2ae9c
jmp 0x115cd
cmpb $0x78, %al
leaq 0x198fa(%rip), %rax     # 0x2aebc
leaq 0x19912(%rip), %rdi     # 0x2aedb
cmovgeq %rax, %rdi
xorl %eax, %eax
callq 0x3030
movzbl (%rbx), %esi
leaq 0x1990f(%rip), %rdi     # 0x2aeed
movl %ebp, %edx
xorl %eax, %eax
callq 0x3030
leaq 0x1(%rbx), %rsi
leaq 0x13e55(%rip), %rdi     # 0x25447
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bbb
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movzbl (%rbx), %edx
leaq 0x198fe(%rip), %rsi     # 0x2af1b
movl $0x1, %edi
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x37ec
movl %r12d, %edi
movl $0x1, %esi
callq 0x5a2e
movq %rax, %r13
testq %rax, %rax
setne %al
movl %eax, 0x24(%rsp)
testq %r13, %r13
je 0x116b5
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x19a28(%rip), %rsi     # 0x2b091
leaq 0x19a43(%rip), %rdx     # 0x2b0b3
leaq 0x48(%rsp), %rdi
callq 0x8f6e
leaq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0x3420
leaq 0x38(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11872
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x1187b
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b32
movq (%r15), %rsi
leaq 0x1995b(%rip), %rdi     # 0x2b028
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %r15
cmpq %r15, %rdi
je 0x116ee
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
leaq 0x13d4b(%rip), %rdi     # 0x25447
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bbb
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movq %rsp, %rbx
movq %rbx, %rdi
movl %r12d, %esi
callq 0x5b32
movq (%rbx), %rdx
leaq 0x1991d(%rip), %rsi     # 0x2b055
movl $0x1, %edi
xorl %eax, %eax
callq 0x37ec
jmp 0x11853
movl %r12d, %edi
movl $0x1, %esi
callq 0x5a2e
movq %rax, %r13
testq %rax, %rax
setne %al
movl %eax, 0x24(%rsp)
testq %r13, %r13
je 0x117c4
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x199f2(%rip), %rsi     # 0x2b16a
leaq 0x19a0d(%rip), %rdx     # 0x2b18c
leaq 0x48(%rsp), %rdi
callq 0x8f6e
leaq 0x48(%rsp), %rdi
movq %r13, %rsi
callq 0x3420
leaq 0x38(%rsp), %r14
movq %r14, -0x10(%r14)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x118c9
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x118d2
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b32
movq (%r15), %rsi
leaq 0x19925(%rip), %rdi     # 0x2b101
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %r15
cmpq %r15, %rdi
je 0x117fd
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
leaq 0x13c3c(%rip), %rdi     # 0x25447
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bbb
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movq %rsp, %rbx
movq %rbx, %rdi
movl %r12d, %esi
callq 0x5b32
movq (%rbx), %rdx
leaq 0x198e7(%rip), %rsi     # 0x2b12e
movl $0x1, %edi
xorl %eax, %eax
callq 0x37ec
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x11d47
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x11d47
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x28(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1afe7(%rip), %rsi     # 0x2c885
callq 0x3420
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11927
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11931
movupd (%rcx), %xmm0
movupd %xmm0, (%r14)
movq 0x8(%rax), %rdx
leaq 0x28(%rsp), %rdi
movq %rdx, 0x8(%rdi)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
leaq 0x1af90(%rip), %rsi     # 0x2c885
callq 0x3420
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11a28
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11a32
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rsp, %r14
movq %rdx, 0x8(%r14)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r15, %rdi
movq %r14, %rsi
callq 0x32d0
movq (%r14), %rdi
cmpq %r13, %rdi
je 0x1196b
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
leaq 0x58(%rsp), %r14
je 0x1198c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x119a3
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
cmpb $0x0, 0x24(%rsp)
je 0x11bbf
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1ee6b(%rip), %rsi     # 0x30828
leaq 0x1ee68(%rip), %rdx     # 0x3082c
callq 0x8f6e
leaq 0x68(%rsp), %rdi
movl %r12d, %esi
callq 0x5b32
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x15d34
leaq 0x196c3(%rip), %rsi     # 0x2b0b4
leaq 0x28(%rsp), %rdi
callq 0x3420
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11b29
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11b31
movupd (%rcx), %xmm0
movupd %xmm0, (%r13)
movq 0x8(%rax), %rdx
movq %rsp, %r14
movq %rdx, 0x8(%r14)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq %r15, %rdi
movq %r14, %rsi
callq 0x32d0
movq (%r14), %rdi
cmpq %r13, %rdi
je 0x11a6c
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
leaq 0x58(%rsp), %r14
je 0x11a8d
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x11aa4
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
cmpb $0x0, 0x24(%rsp)
je 0x11cd0
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1ed6a(%rip), %rsi     # 0x30828
leaq 0x1ed67(%rip), %rdx     # 0x3082c
callq 0x8f6e
leaq 0x68(%rsp), %rdi
movl %r12d, %esi
callq 0x5b32
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x15d34
leaq 0x195c2(%rip), %rsi     # 0x2b0b4
leaq 0x28(%rsp), %rdi
callq 0x3420
leaq 0x10(%rsp), %rsi
movq %rsi, (%rsp)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11c3a
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11c42
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x11b71
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x11b8d
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11ba8
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x11bbf
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
movq (%r15), %r14
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b32
movq (%r15), %rdx
leaq 0x194f7(%rip), %rdi     # 0x2b0d1
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x11bfe
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
cmpl $0xd046, %r12d          # imm = 0xD046
je 0x11c26
cmpl $0x90848b, %r12d        # imm = 0x90848B
jne 0x11c35
movq %rbx, %rdi
movl %ebp, %esi
callq 0x123ac
jmp 0x11d47
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12404
jmp 0x11d47
jmp 0x11d2b
movupd (%rcx), %xmm0
movupd %xmm0, (%rsi)
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
movq (%rsp), %rsi
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x11c82
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x11c9e
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x11cb9
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x11cd0
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
movq (%r15), %r14
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b32
movq (%r15), %rdx
leaq 0x193e6(%rip), %rdi     # 0x2b0d1
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x11d0f
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
cmpl $0xd046, %r12d          # imm = 0xD046
jne 0x11d2b
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12a11
jmp 0x11d47
leaq 0x13715(%rip), %rdi     # 0x25447
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bbb
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1aa82(%rip), %rdi     # 0x2c7e2
xorl %eax, %eax
callq 0x3030
jmp 0x11d47
leaq 0x1a43d(%rip), %rdi     # 0x2c1ad
jmp 0x11deb
leaq 0x1a3cc(%rip), %rdi     # 0x2c145
jmp 0x11deb
andl $0xf, %r14d
leaq 0x1a431(%rip), %rdi     # 0x2c1b7
jmp 0x11dff
andl $0xf, %r14d
leaq 0x1a3f8(%rip), %rdi     # 0x2c18b
jmp 0x11dff
andl $0xf, %r14d
leaq 0x1a385(%rip), %rdi     # 0x2c125
jmp 0x11dff
andl $0xf, %r14d
leaq 0x1a386(%rip), %rdi     # 0x2c133
jmp 0x11dff
leaq 0x1a3bd(%rip), %rdi     # 0x2c173
jmp 0x11deb
andl $0xf, %r14d
leaq 0x1a354(%rip), %rdi     # 0x2c117
jmp 0x11dff
andl $0xf, %r14d
leaq 0x1a382(%rip), %rdi     # 0x2c152
jmp 0x11dff
leaq 0x1f7a7(%rip), %rdi     # 0x31580
jmp 0x11deb
leaq 0x1a38a(%rip), %rdi     # 0x2c16c
jmp 0x11deb
leaq 0x1a3b8(%rip), %rdi     # 0x2c1a3
xorl %eax, %eax
callq 0x3030
jmp 0x11e09
andl $0xf, %r14d
leaq 0x1a37b(%rip), %rdi     # 0x2c17a
movl %r14d, %esi
xorl %eax, %eax
callq 0x3030
movl $0xa, %edi
callq 0x3310
movzbl 0x2(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
andl $0xf, %edx
leaq 0x1a3a8(%rip), %rdi     # 0x2c1ce
xorl %eax, %eax
callq 0x3030
leaq 0x1a3c1(%rip), %rdi     # 0x2c1f5
xorl %eax, %eax
callq 0x3030
movzbl 0x3(%rbx), %eax
cmpq $0x3, %rax
ja 0x11e55
leaq 0x17ffc(%rip), %rcx     # 0x29e48
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x11e5c
leaq 0x1f724(%rip), %rdi     # 0x31580
callq 0x3380
movzbl 0x4(%rbx), %esi
shrl $0x2, %esi
leaq 0x1a3a7(%rip), %rdi     # 0x2c216
xorl %eax, %eax
callq 0x3030
movzbl 0x4(%rbx), %eax
andl $0x3, %eax
shll $0x8, %eax
movzbl 0x5(%rbx), %esi
orl %eax, %esi
leaq 0x1a3ae(%rip), %rdi     # 0x2c23b
xorl %eax, %eax
callq 0x3030
movzwl 0x6(%rbx), %esi
movzwl 0x8(%rbx), %edx
leaq 0x1a3bd(%rip), %rdi     # 0x2c260
xorl %eax, %eax
callq 0x3030
movzbl 0xa(%rbx), %eax
addl $0x64, %eax
cvtsi2sd %eax, %xmm0
divsd 0xe15b(%rip), %xmm0     # 0x20018
leaq 0x1d19c(%rip), %rdi     # 0x2f060
movb $0x1, %al
callq 0x3030
movzbl 0xb(%rbx), %r14d
leaq 0x1d1a3(%rip), %rdi     # 0x2f07a
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
shrl $0x6, %eax
leaq 0x17f6d(%rip), %rcx     # 0x29e58
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x1d198(%rip), %rdi     # 0x2f096
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
shrl $0x2, %eax
andl $0xc, %eax
leaq 0x17fc3(%rip), %rcx     # 0x29ed8
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x1d18a(%rip), %rdi     # 0x2f0b2
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
andl $0xc, %eax
leaq 0x17f2c(%rip), %rcx     # 0x29e68
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x1d17f(%rip), %rdi     # 0x2f0ce
xorl %eax, %eax
callq 0x3030
andl $0x3, %r14d
leaq 0x14a63(%rip), %rax     # 0x269c4
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1bdff(%rip), %rdi     # 0x2dd70
jmp 0x11fa1
leaq 0x1bbd5(%rip), %rdi     # 0x2db4f
jmp 0x11fa1
leaq 0x1f5fd(%rip), %rdi     # 0x31580
callq 0x3380
leaq 0x1a2f8(%rip), %rsi     # 0x2c287
xorl %edi, %edi
xorl %eax, %eax
callq 0x37ec
jmp 0x11fa6
leaq 0x1bbf8(%rip), %rdi     # 0x2db99
callq 0x3380
leaq 0x1a308(%rip), %rdi     # 0x2c2b5
xorl %eax, %eax
callq 0x3030
movzbl 0xc(%rbx), %eax
cmpq $0xc, %rax
ja 0x11fce
leaq 0x17eb3(%rip), %rcx     # 0x29e78
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x11fd5
leaq 0x1f5ab(%rip), %rdi     # 0x31580
callq 0x3380
movzbl 0xd(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0xe02b(%rip), %xmm2     # 0x20018
divsd %xmm2, %xmm0
movzbl 0xe(%rbx), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm2, %xmm1
leaq 0x1a2cc(%rip), %rdi     # 0x2c2d0
movb $0x2, %al
callq 0x3030
movzbl 0xf(%rbx), %ebp
leaq 0x1a2f7(%rip), %rdi     # 0x2c30d
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x17e83(%rip), %rcx     # 0x29eac
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
testb $0x20, %bpl
leaq 0x1a2f7(%rip), %r12     # 0x2c337
leaq 0x1a2ec(%rip), %r15     # 0x2c333
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x1a2c8(%rip), %rdi     # 0x2c31d
xorl %eax, %eax
callq 0x3030
testb $0x10, %bpl
leaq 0xec12(%rip), %r14      # 0x20c79
leaq 0x1fce6(%rip), %rsi     # 0x31d54
cmoveq %r14, %rsi
leaq 0x1a2c1(%rip), %rdi     # 0x2c33a
xorl %eax, %eax
callq 0x3030
testb $0x8, %bpl
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x1a2c5(%rip), %rdi     # 0x2c357
xorl %eax, %eax
callq 0x3030
movzbl 0x10(%rbx), %ebp
testb %bpl, %bpl
movq %r15, %rsi
cmovnsq %r12, %rsi
leaq 0x1a2c0(%rip), %rdi     # 0x2c36e
xorl %eax, %eax
callq 0x3030
testb $0x40, %bpl
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x1a2be(%rip), %rdi     # 0x2c385
xorl %eax, %eax
callq 0x3030
testb $0x20, %bpl
cmoveq %r12, %r15
leaq 0x1a2d0(%rip), %rdi     # 0x2c3ad
movq %r15, %rsi
xorl %eax, %eax
callq 0x3030
movb 0x11(%rbx), %al
testb %al, %al
je 0x12111
leaq 0xf265(%rip), %rcx      # 0x2135a
cmovnsq %rcx, %r14
addb %al, %al
movzbl %al, %edx
leaq 0x1a2c6(%rip), %rdi     # 0x2c3cb
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
jmp 0x1211d
leaq 0x1bc81(%rip), %rdi     # 0x2dd99
callq 0x3380
movzbl 0x12(%rbx), %ebp
leaq 0x1a2bd(%rip), %rdi     # 0x2c3e5
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x17d81(%rip), %rcx     # 0x29ebc
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
movzbl 0x13(%rbx), %esi
andl $0x3f, %ebp
je 0x12162
leaq 0x1a2af(%rip), %rdi     # 0x2c406
movl %ebp, %edx
xorl %eax, %eax
callq 0x3030
jmp 0x12170
leaq 0x1a2c6(%rip), %rdi     # 0x2c42f
xorl %eax, %eax
callq 0x3030
movzbl 0x14(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
incl %esi
andl $0xf, %edx
incl %edx
leaq 0x1a2c8(%rip), %rdi     # 0x2c44f
xorl %eax, %eax
callq 0x3030
movb 0x16(%rbx), %bpl
andb $0x3, %bpl
je 0x1226f
leaq 0x1bc60(%rip), %rdi     # 0x2de03
callq 0x3380
movzbl 0x17(%rbx), %eax
movzbl 0x15(%rbx), %ecx
movl %ecx, %edx
shrl $0x6, %edx
leal (%rdx,%rax,4), %eax
movzbl 0x18(%rbx), %edx
shrl $0x4, %ecx
andl $0x3, %ecx
leal (%rcx,%rdx,4), %ecx
imull $0x2710, %eax, %esi     # imm = 0x2710
shrl $0xa, %esi
imull $0x2710, %ecx, %edx     # imm = 0x2710
shrl $0xa, %edx
leaq 0x1a2a4(%rip), %rdi     # 0x2c482
xorl %eax, %eax
callq 0x3030
cmpb $0x1, %bpl
je 0x1226f
movzbl 0x19(%rbx), %eax
movzbl 0x15(%rbx), %ecx
movl %ecx, %edx
shrl $0x2, %edx
andl $0x3, %edx
leal (%rdx,%rax,4), %eax
movzbl 0x1a(%rbx), %edx
andl $0x3, %ecx
leal (%rcx,%rdx,4), %ecx
imull $0x2710, %eax, %esi     # imm = 0x2710
shrl $0xa, %esi
imull $0x2710, %ecx, %edx     # imm = 0x2710
shrl $0xa, %edx
leaq 0x1a280(%rip), %rdi     # 0x2c4a5
xorl %eax, %eax
callq 0x3030
cmpb $0x3, %bpl
jne 0x1226f
movzbl 0x1b(%rbx), %eax
movzbl 0x16(%rbx), %ecx
movl %ecx, %edx
shrl $0x6, %edx
leal (%rdx,%rax,4), %eax
movzbl 0x1c(%rbx), %edx
shrl $0x4, %ecx
andl $0x3, %ecx
leal (%rcx,%rdx,4), %ecx
imull $0x2710, %eax, %esi     # imm = 0x2710
shrl $0xa, %esi
imull $0x2710, %ecx, %edx     # imm = 0x2710
shrl $0xa, %edx
leaq 0x1a260(%rip), %rdi     # 0x2c4c8
xorl %eax, %eax
callq 0x3030
movzbl 0x1d(%rbx), %edx
testb %dl, %dl
leaq 0x1a29b(%rip), %rax     # 0x2c517
leaq 0x1a285(%rip), %rsi     # 0x2c508
cmovnsq %rax, %rsi
andl $0x7f, %edx
leaq 0x1a25a(%rip), %rdi     # 0x2c4eb
xorl %eax, %eax
callq 0x3030
movzbl 0x1e(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
andl $0xf, %edx
leaq 0x1a27b(%rip), %rdi     # 0x2c526
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3030
leaq 0x1f2b6(%rip), %rdi     # 0x31580
xorl %eax, %eax
callq 0x3030
leaq 0x1a5ad(%rip), %rdi     # 0x2c885
callq 0x3380
jmp 0x11e09
jmp 0x122e4
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x12309
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x12309
jmp 0x12306
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x1232c
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x1232c
jmp 0x12329
movq %rax, %rbx
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x12381
movq 0x78(%rsp), %rsi
jmp 0x12372
jmp 0x1237e
jmp 0x1237e
jmp 0x123a1
jmp 0x123a1
jmp 0x1234b
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x123a4
movq 0x10(%rsp), %rsi
jmp 0x12395
jmp 0x12360
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x12381
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x12381
jmp 0x1237e
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x123a4
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x123a4
jmp 0x123a1
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3400