// File: /workspace/github_cpp_makefile_star2_O3/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 0x106e6
cmpl $0x20, %ecx
ja 0x1126d
movl %ecx, %ecx
leaq 0x161f0(%rip), %rdx     # 0x268b0
movslq (%rdx,%rcx,4), %rcx
addq %rdx, %rcx
jmpq *%rcx
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a521(%rip), %rcx     # 0x2abf9
xorl %r12d, %r12d
movl $0x1b, %r8d
jmp 0x10942
cmpl $0x41, %ecx
jle 0x1071a
cmpl $0x42, %ecx
je 0x10910
cmpl $0x78, %ecx
je 0x108f6
cmpl $0x79, %ecx
jne 0x1126d
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a769(%rip), %rcx     # 0x2ae7e
jmp 0x108eb
cmpl $0x34, %ecx
je 0x1092a
cmpl $0x35, %ecx
jne 0x1126d
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a6c0(%rip), %rcx     # 0x2adfb
xorl %r12d, %r12d
movl $0x2b, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a55d(%rip), %rcx     # 0x2acb5
xorl %r12d, %r12d
movl $0x1f, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a5f6(%rip), %rcx     # 0x2ad6b
movl $0x15, %r8d
jmp 0x1080e
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a610(%rip), %rcx     # 0x2ad9f
movl $0x1b, %r8d
jmp 0x1080e
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a52f(%rip), %rcx     # 0x2acd5
jmp 0x107ce
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
xorl %r12d, %r12d
jmp 0x10949
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a48e(%rip), %rcx     # 0x2ac5c
xorl %r12d, %r12d
movl $0x22, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a494(%rip), %rcx     # 0x2ac7f
xorl %r12d, %r12d
movl $0x16, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a579(%rip), %rcx     # 0x2ad81
movl $0x1d, %r8d
xorl %esi, %esi
callq 0x3390
jmp 0x108ba
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a4cf(%rip), %rcx     # 0x2acf8
xorl %r12d, %r12d
movl $0x1c, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a3cf(%rip), %rcx     # 0x2ac15
xorl %r12d, %r12d
movl $0x24, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a3d7(%rip), %rcx     # 0x2ac3a
xorl %r12d, %r12d
movl $0x21, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a53b(%rip), %rcx     # 0x2adbb
xorl %r12d, %r12d
movl $0x14, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a3f9(%rip), %rcx     # 0x2ac96
xorl %r12d, %r12d
movl $0x1e, %r8d
jmp 0x10942
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movb $0x1, %r12b
jmp 0x10949
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a46a(%rip), %rcx     # 0x2ad3b
xorl %r12d, %r12d
movl $0x2f, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a42a(%rip), %rcx     # 0x2ad15
xorl %r12d, %r12d
movl $0x25, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a54b(%rip), %rcx     # 0x2ae50
xorl %r12d, %r12d
movl $0x2d, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a508(%rip), %rcx     # 0x2ae27
xorl %r12d, %r12d
movl $0x28, %r8d
jmp 0x10942
leaq 0x30(%r14), %rdi
movq 0x38(%r14), %rdx
leaq 0x1a497(%rip), %rcx     # 0x2add0
xorl %r12d, %r12d
movl $0x2a, %r8d
xorl %esi, %esi
callq 0x3390
movzbl (%rbx), %eax
cmpl $0x13, %eax
ja 0x10ab0
movl $0xca065, %ecx          # imm = 0xCA065
btl %eax, %ecx
jae 0x10ab0
testb %r15b, %r15b
je 0x10978
leaq 0x1a601(%rip), %rsi     # 0x2af70
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
testb %r12b, %r12b
je 0x10997
testb $0x40, 0x2c2(%r14)
jne 0x10997
leaq 0x1a614(%rip), %rsi     # 0x2afa2
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
leaq 0x30(%r14), %r15
cmpq $0x0, 0x38(%r14)
je 0x109b3
movq (%r15), %rsi
leaq 0x1445f(%rip), %rdi     # 0x24e0b
xorl %eax, %eax
callq 0x3030
movzbl (%rbx), %eax
cmpl $0x33, %eax
jg 0x109f7
cmpl $0x20, %eax
ja 0x1123d
movl %eax, %eax
leaq 0x15f67(%rip), %rcx     # 0x26934
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 0x10286
cmpl $0x41, %eax
jle 0x10ac1
cmpl $0x42, %eax
je 0x111fb
cmpl $0x78, %eax
je 0x1119f
cmpl $0x79, %eax
jne 0x1123d
cmpb $0x0, 0x2d2(%r14)
jne 0x10a35
leaq 0x1a7aa(%rip), %rsi     # 0x2b1d6
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
cmpb $0x0, 0x2d4(%r14)
jne 0x10a49
cmpb $0x1, 0x2d3(%r14)
jne 0x10a59
leaq 0x1a7c1(%rip), %rsi     # 0x2b211
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
cmpl $0x1, %ebp
ja 0x113cd
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x1a7c0(%rip), %rsi     # 0x2b232
leaq 0x1a7c8(%rip), %rdx     # 0x2b241
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x8d58
movq %r15, %rdi
movq %rbx, %rsi
callq 0x32d0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x10aa4
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x1a797(%rip), %rsi     # 0x2b242
jmp 0x11150
addl $-0x78, %eax
cmpl $0x2, %eax
jb 0x10963
jmp 0x10978
cmpl $0x34, %eax
je 0x1121c
cmpl $0x35, %eax
jne 0x1123d
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 0x104f8
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 0xfe44
cmpl $0x1, %ebp
jbe 0x1118f
movzbl 0x1(%rbx), %eax
movl %eax, %esi
andl $0x3, %esi
je 0x10b3c
incl %esi
leaq 0x1bc16(%rip), %rdi     # 0x2c748
xorl %eax, %eax
callq 0x3030
movb 0x1(%rbx), %al
testb $0x4, %al
je 0x10b4c
leaq 0x1d4be(%rip), %rdi     # 0x2e005
callq 0x3380
testb $0x7, 0x2(%rbx)
je 0x11a52
addl $-0x2, %ebp
cmpl $0x4, %ebp
jb 0x11a52
addq $0x3, %rbx
leaq 0x19bb8(%rip), %r14     # 0x2a725
cmpl $0x4, %ebp
jne 0x10bd8
movzbl 0x3(%rbx), %esi
shrl $0x4, %esi
leal -0x1(%rsi), %eax
cmpb $0x3, %al
jae 0x11ba6
movzwl 0x1(%rbx), %ecx
shll $0x8, %ecx
movzbl (%rbx), %r15d
orl %ecx, %r15d
movzbl %al, %eax
leaq 0x19358(%rip), %rcx     # 0x29ef4
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x290c1(%rip), %r12     # 0x39c70
xorl %r13d, %r13d
btl %r13d, %r15d
jae 0x10bc6
movq (%r12), %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3030
incq %r13
addq $0x8, %r12
cmpq $0x15, %r13
jne 0x10bb2
jmp 0x10ce3
movzbl (%rbx), %r15d
andl $0xf, %r15d
movq %rsp, %rdi
movl %r15d, %esi
callq 0x157ba
movq (%rsp), %rsi
movzbl 0x1(%rbx), %edx
andl $0x1f, %edx
incl %edx
leaq 0x1bb63(%rip), %rdi     # 0x2c762
xorl %eax, %eax
callq 0x3030
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x10c21
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movzbl 0x2(%rbx), %eax
testb $0x40, %al
leaq 0x1bb80(%rip), %rsi     # 0x2c7ae
leaq 0x10054(%rip), %rdi     # 0x20c89
cmoveq %rdi, %rsi
testb $0x20, %al
leaq 0x1bb71(%rip), %rdx     # 0x2c7b3
cmoveq %rdi, %rdx
testb $0x10, %al
leaq 0x1bb6b(%rip), %rcx     # 0x2c7ba
cmoveq %rdi, %rcx
testb $0x8, %al
leaq 0x1bb62(%rip), %r8      # 0x2c7be
cmoveq %rdi, %r8
testb $0x4, %al
leaq 0x1bb5b(%rip), %r9      # 0x2c7c4
cmoveq %rdi, %r9
testb $0x2, %al
leaq 0x1bb52(%rip), %r10     # 0x2c7c8
cmoveq %rdi, %r10
testb $0x1, %al
leaq 0x1bb4b(%rip), %r11     # 0x2c7ce
cmoveq %rdi, %r11
leaq 0x1baed(%rip), %rdi     # 0x2c77b
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x3030
addq $0x10, %rsp
cmpb $0x1, %r15b
jne 0x10ce3
movzbl 0x3(%rbx), %eax
testb $0x4, %al
leaq 0x1bb4e(%rip), %rsi     # 0x2c7fe
leaq 0xffd2(%rip), %rdi      # 0x20c89
cmoveq %rdi, %rsi
testb $0x2, %al
leaq 0x1bb3e(%rip), %rdx     # 0x2c802
cmoveq %rdi, %rdx
testb $0x1, %al
leaq 0x1bb35(%rip), %rcx     # 0x2c806
cmoveq %rdi, %rcx
leaq 0x1baf6(%rip), %rdi     # 0x2c7d2
xorl %eax, %eax
callq 0x3030
addl $-0x4, %ebp
addq $0x4, %rbx
cmpl $0x3, %ebp
ja 0x10b6d
jmp 0x11a52
cmpl $0x3, %ebp
jb 0x1118f
incq %rbx
leaq 0x1ba08(%rip), %r14     # 0x2c713
leaq 0x1ba23(%rip), %r15     # 0x2c735
movzbl (%rbx), %r12d
cmpl %r12d, %ebp
jbe 0x11a52
movzwl 0x1(%rbx), %r13d
movq %r14, %rdi
movl %r13d, %esi
xorl %eax, %eax
callq 0x3030
cmpl $0x4, %r13d
je 0x10d43
cmpl $0x2, %r13d
je 0x10d5c
cmpl $0x1, %r13d
jne 0x10db6
cmpb $0x3, %r12b
jb 0x10db6
movzbl 0x3(%rbx), %esi
andl $0xf, %esi
movq %r15, %rdi
xorl %eax, %eax
callq 0x3030
jmp 0x10db6
cmpb $0x3, %r12b
jb 0x10db6
movzbl 0x3(%rbx), %r13d
movl %r13d, %esi
andl $0xf, %esi
movq %r15, %rdi
xorl %eax, %eax
callq 0x3030
andl $0xf, %r13d
je 0x10db6
movb 0x3(%rbx), %al
testb $0x10, %al
je 0x10d93
leaq 0x1d12f(%rip), %rdi     # 0x2deba
callq 0x3380
movb 0x3(%rbx), %al
testb $0x20, %al
je 0x10da6
leaq 0x1d147(%rip), %rdi     # 0x2dee5
callq 0x3380
movb 0x3(%rbx), %al
testb $0x40, %al
je 0x10db6
leaq 0x1d15f(%rip), %rdi     # 0x2df10
callq 0x3380
incq %r12
subl %r12d, %ebp
addq %r12, %rbx
cmpl $0x2, %ebp
ja 0x10d12
jmp 0x11a52
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 0xebc4
cmpl $0x1e, %ebp
jne 0x11281
leaq 0x1b323(%rip), %rdi     # 0x2c121
xorl %eax, %eax
callq 0x3030
movzbl 0x1(%rbx), %r14d
movl %r14d, %eax
shrl $0x4, %eax
cmpl $0xc, %eax
ja 0x11c22
leaq 0x15b98(%rip), %rcx     # 0x269b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1b306(%rip), %rdi     # 0x2c136
xorl %eax, %eax
callq 0x3030
andl $0xf, %r14d
cmpl $0x2, %r14d
ja 0x12113
leaq 0x19018(%rip), %rax     # 0x29e64
movslq (%rax,%r14,4), %rdi
addq %rax, %rdi
jmp 0x1211a
cmpl $0x2, %ebp
jb 0x1118f
leaq 0x18f84(%rip), %r15     # 0x29dec
leaq 0x198b8(%rip), %r14     # 0x2a727
movq %r15, %r12
xorl %r13d, %r13d
movzbl 0x1(%rbx), %eax
btl %r13d, %eax
jae 0x10e90
movslq (%r12), %rsi
addq %r15, %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3030
incq %r13
addq $0x4, %r12
cmpq $0x8, %r13
jne 0x10e75
movb 0x2(%rbx), %al
testb %al, %al
jns 0x10eb3
leaq 0x1cfa7(%rip), %rdi     # 0x2de52
callq 0x3380
movb 0x2(%rbx), %al
testb $0x40, %al
je 0x11a52
leaq 0x1cf9b(%rip), %rdi     # 0x2de5d
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 0x1008c
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 0xea6a
cmpl $0x1, %ebp
jbe 0x1118f
leaq 0x1cf3d(%rip), %rdi     # 0x2de67
callq 0x3380
leaq 0x18ed6(%rip), %r15     # 0x29e0c
leaq 0x1b688(%rip), %r12     # 0x2c5c5
movq %r15, %r14
xorl %r13d, %r13d
movzbl 0x1(%rbx), %eax
btl %r13d, %eax
jae 0x10f89
cmpq $0x3, %r13
ja 0x10f69
movslq (%r14), %rsi
addq %r15, %rsi
leaq 0x197c5(%rip), %rdi     # 0x2a725
xorl %eax, %eax
callq 0x3030
jmp 0x10f89
leaq 0x1b641(%rip), %rdi     # 0x2c5b1
movl %r13d, %esi
xorl %eax, %eax
callq 0x3030
xorl %edi, %edi
movq %r12, %rsi
movl %r13d, %edx
xorl %eax, %eax
callq 0x37cc
incq %r13
addq $0x4, %r14
cmpq $0x6, %r13
jne 0x10f43
leaq 0x1cef2(%rip), %rdi     # 0x2de8f
callq 0x3380
leaq 0x1b630(%rip), %r14     # 0x2c5d9
xorl %eax, %eax
movzbl 0x2(%rbx), %ecx
leal 0x1(%rax), %r15d
btl %eax, %ecx
jae 0x10fc5
movq %r14, %rdi
movl %r15d, %esi
xorl %eax, %eax
callq 0x3030
movl %r15d, %eax
cmpl $0x8, %r15d
jne 0x10fab
cmpl $0x2, %ebp
je 0x11a52
movzbl 0x3(%rbx), %r14d
cvtsi2sd %r14d, %xmm0
mulsd 0x18f5f(%rip), %xmm0    # 0x29f48
callq 0x3200
mulsd 0x18f5a(%rip), %xmm0    # 0x29f50
leaq 0x1b5fb(%rip), %rdi     # 0x2c5f8
movl %r14d, %esi
movb $0x1, %al
callq 0x3030
cmpl $0x4, %ebp
jb 0x11a52
movzbl 0x4(%rbx), %r14d
xorps %xmm0, %xmm0
cvtsi2sd %r14d, %xmm0
mulsd 0x18f23(%rip), %xmm0    # 0x29f48
callq 0x3200
mulsd 0x18f1e(%rip), %xmm0    # 0x29f50
leaq 0x1b5f4(%rip), %rdi     # 0x2c62d
movl %r14d, %esi
movb $0x1, %al
callq 0x3030
cmpl $0x4, %ebp
je 0x11a52
movzbl 0x5(%rbx), %ebp
movzbl 0x3(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
mulsd 0x18ee5(%rip), %xmm0    # 0x29f48
callq 0x3200
mulsd 0x18ee0(%rip), %xmm0    # 0x29f50
movzbl 0x5(%rbx), %eax
cvtsi2sd %eax, %xmm1
divsd 0x18ed8(%rip), %xmm1    # 0x29f58
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm0
divsd 0xef90(%rip), %xmm0     # 0x20020
leaq 0x1b5d9(%rip), %rdi     # 0x2c670
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 0x1128d
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x19f4d(%rip), %rsi     # 0x2b017
leaq 0x19f66(%rip), %rdx     # 0x2b037
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x8d58
movq %r15, %rdi
movq %rbx, %rsi
callq 0x32d0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x110fc
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x11149
cmpl $0x2, %ebp
ja 0x112bf
leaq 0x10(%rsp), %r14
movq %r14, -0x10(%r14)
leaq 0x19ff1(%rip), %rsi     # 0x2b108
leaq 0x1a00a(%rip), %rdx     # 0x2b128
movq %rsp, %rbx
movq %rbx, %rdi
callq 0x8d58
movq %r15, %rdi
movq %rbx, %rsi
callq 0x32d0
movq (%rbx), %rdi
cmpq %r14, %rdi
je 0x11149
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x19ee8(%rip), %rsi     # 0x2b038
xorl %edi, %edi
movl %ebp, %edx
xorl %eax, %eax
callq 0x37cc
jmp 0x11a52
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 0xe234
cmpl $0x1, %ebp
ja 0x112f1
leaq 0x18fb9(%rip), %rsi     # 0x2a14f
xorl %edi, %edi
movl %ebp, %edx
jmp 0x11479
movzbl 0x1(%rbx), %esi
leaq 0x1b7a6(%rip), %rdi     # 0x2c950
xorl %eax, %eax
callq 0x3030
cmpl $0x1, %ebp
jne 0x111bc
cmpb $0x0, 0x1(%rbx)
jne 0x111cc
leaq 0x1b7b1(%rip), %rsi     # 0x2c974
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
cmpb $0x0, 0x2d5(%r14)
jne 0x11a52
leaq 0x19fd4(%rip), %rsi     # 0x2b1b5
xorl %edi, %edi
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x37cc
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 0x105e8
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 0x10490
incq %rbx
leaq 0x14250(%rip), %rdi     # 0x25497
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 0x5bd2
cmpb $0xd, %al
jae 0x11403
leaq 0x19c28(%rip), %rdi     # 0x2aea4
jmp 0x11424
leaq 0x1ae85(%rip), %rsi     # 0x2c10d
jmp 0x11196
movzwl 0x2(%rbx), %eax
shll $0x8, %eax
movzbl 0x1(%rbx), %r12d
orl %eax, %r12d
movl $0x0, 0x24(%rsp)
movl %r12d, %edi
xorl %esi, %esi
callq 0x5a41
testq %rax, %rax
je 0x11491
movq %rax, %r13
jmp 0x114b1
movzwl 0x2(%rbx), %eax
shll $0x8, %eax
movzbl 0x1(%rbx), %r12d
orl %eax, %r12d
movl $0x0, 0x24(%rsp)
movl %r12d, %edi
xorl %esi, %esi
callq 0x5a41
testq %rax, %rax
je 0x1150a
movq %rax, %r13
jmp 0x1152a
leaq 0x1(%rbx), %r12
movzbl 0x1(%rbx), %r14d
shrl $0x5, %r14d
movzbl 0x2(%rbx), %esi
leaq 0x1b5f8(%rip), %rdi     # 0x2c901
xorl %eax, %eax
callq 0x3030
addq $0x2, %r14
subl %r14d, %ebp
jb 0x11a52
je 0x11a52
addq %r14, %r12
movq %rsp, %rbx
leaq 0x1b5e0(%rip), %r14     # 0x2c910
leaq 0x1b5fd(%rip), %r15     # 0x2c934
movzbl (%r12), %r13d
movl %r13d, %esi
andl $0x1f, %esi
cmpl $0x4, %ebp
jb 0x1139f
cmpl $0x1, %esi
jne 0x1139f
movzwl 0x2(%r12), %eax
shll $0x8, %eax
movzbl 0x1(%r12), %esi
orl %eax, %esi
movq %rbx, %rdi
callq 0x5b45
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 0x11393
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movl $0x4, %ecx
movl $0xfffffffc, %eax       # imm = 0xFFFFFFFC
jmp 0x113b3
movq %r15, %rdi
xorl %eax, %eax
callq 0x3030
movl $0x1, %ecx
movl $0xffffffff, %eax       # imm = 0xFFFFFFFF
shrl $0x5, %r13d
addq %rcx, %r12
addq %r13, %r12
subl %r13d, %ebp
addl %eax, %ebp
jne 0x11337
jmp 0x11a52
cmpb $0x0, 0x1(%rbx)
jne 0x113d9
cmpb $0x0, 0x2(%rbx)
je 0x113e5
leaq 0x1c5df(%rip), %rdi     # 0x2d9bf
callq 0x3380
addq $0x3, %rbx
addl $-0x2, %ebp
movq %rbx, %rdi
movl %ebp, %esi
callq 0x128e6
movb $0x1, 0x2d4(%r14)
jmp 0x11a52
cmpb $0x20, %al
jae 0x11410
leaq 0x19ab6(%rip), %rdi     # 0x2aec4
jmp 0x11424
cmpb $0x78, %al
leaq 0x19acb(%rip), %rax     # 0x2aee4
leaq 0x19ae3(%rip), %rdi     # 0x2af03
cmovgeq %rax, %rdi
xorl %eax, %eax
callq 0x3030
movzbl (%rbx), %esi
leaq 0x19ae0(%rip), %rdi     # 0x2af15
movl %ebp, %edx
xorl %eax, %eax
callq 0x3030
leaq 0x1(%rbx), %rsi
leaq 0x1404e(%rip), %rdi     # 0x25497
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bd2
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movzbl (%rbx), %edx
leaq 0x19acf(%rip), %rsi     # 0x2af43
movl $0x1, %edi
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x37cc
movl %r12d, %edi
movl $0x1, %esi
callq 0x5a41
movq %rax, %r13
testq %rax, %rax
setne %al
movl %eax, 0x24(%rsp)
je 0x11a64
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x19bf8(%rip), %rsi     # 0x2b0b9
leaq 0x19c13(%rip), %rdx     # 0x2b0db
leaq 0x48(%rsp), %rdi
callq 0x8d58
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 0x1157f
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x11588
movl %r12d, %edi
movl $0x1, %esi
callq 0x5a41
movq %rax, %r13
testq %rax, %rax
setne %al
movl %eax, 0x24(%rsp)
je 0x11af8
leaq 0x58(%rsp), %rax
movq %rax, -0x10(%rax)
leaq 0x19c58(%rip), %rsi     # 0x2b192
leaq 0x19c73(%rip), %rdx     # 0x2b1b4
leaq 0x48(%rsp), %rdi
callq 0x8d58
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 0x115d6
movq %rdx, 0x28(%rsp)
movq (%rcx), %rdx
movq %rdx, 0x38(%rsp)
jmp 0x115df
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 0x1b302(%rip), %rsi     # 0x2c8ad
callq 0x3420
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11634
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x1163e
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 0x1b2ab(%rip), %rsi     # 0x2c8ad
callq 0x3420
leaq 0x10(%rsp), %r13
movq %r13, -0x10(%r13)
movq (%rax), %rdx
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rdx
je 0x11735
movq %rdx, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x1173f
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 0x11678
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
leaq 0x58(%rsp), %r14
je 0x11699
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x116b0
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
cmpb $0x0, 0x24(%rsp)
je 0x118cb
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1f19e(%rip), %rsi     # 0x30868
leaq 0x1f19b(%rip), %rdx     # 0x3086c
callq 0x8d58
leaq 0x68(%rsp), %rdi
movl %r12d, %esi
callq 0x5b45
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x15bd0
leaq 0x199de(%rip), %rsi     # 0x2b0dc
leaq 0x28(%rsp), %rdi
callq 0x3420
leaq 0x10(%rsp), %rdx
movq %rdx, (%rsp)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x11836
movq %rsi, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11841
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 0x11779
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
leaq 0x58(%rsp), %r14
je 0x1179a
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x117b1
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
cmpb $0x0, 0x24(%rsp)
je 0x119db
leaq 0x48(%rsp), %rdi
movq %r14, (%rdi)
leaq 0x1f09d(%rip), %rsi     # 0x30868
leaq 0x1f09a(%rip), %rdx     # 0x3086c
callq 0x8d58
leaq 0x68(%rsp), %rdi
movl %r12d, %esi
callq 0x5b45
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x15bd0
leaq 0x198dd(%rip), %rsi     # 0x2b0dc
leaq 0x28(%rsp), %rdi
callq 0x3420
leaq 0x10(%rsp), %rdx
movq %rdx, (%rsp)
movq (%rax), %rsi
movq %rax, %rcx
addq $0x10, %rcx
cmpq %rcx, %rsi
je 0x11946
movq %rsi, (%rsp)
movq (%rcx), %rdx
movq %rdx, 0x10(%rsp)
jmp 0x11951
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rdx, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1187d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x11899
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x118b4
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x118cb
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
movq (%r15), %r14
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b45
movq (%r15), %rdx
leaq 0x19813(%rip), %rdi     # 0x2b0f9
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1190a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
cmpl $0xd046, %r12d          # imm = 0xD046
je 0x11932
cmpl $0x90848b, %r12d        # imm = 0x90848B
jne 0x11941
movq %rbx, %rdi
movl %ebp, %esi
callq 0x12203
jmp 0x11a52
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1225b
jmp 0x11a52
jmp 0x11a36
movupd (%rcx), %xmm0
movupd %xmm0, (%rdx)
movq %rdx, %rsi
movq 0x8(%rax), %rdx
movq %rdx, 0x8(%rsp)
movq %rcx, (%rax)
movq $0x0, 0x8(%rax)
movb $0x0, 0x10(%rax)
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x1198d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x119a9
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x119c4
movq 0x78(%rsp), %rsi
incq %rsi
callq 0x3260
movq 0x48(%rsp), %rdi
cmpq %r14, %rdi
je 0x119db
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
movq (%r15), %r14
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b45
movq (%r15), %rdx
leaq 0x19703(%rip), %rdi     # 0x2b0f9
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x11a1a
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
cmpl $0xd046, %r12d          # imm = 0xD046
jne 0x11a36
movq %rbx, %rdi
movl %ebp, %esi
callq 0x1286a
jmp 0x11a52
leaq 0x13a5a(%rip), %rdi     # 0x25497
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bd2
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b45
movq (%r15), %rsi
leaq 0x195d4(%rip), %rdi     # 0x2b050
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %r15
cmpq %r15, %rdi
je 0x11a9d
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
leaq 0x139ec(%rip), %rdi     # 0x25497
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bd2
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movq %rsp, %rbx
movq %rbx, %rdi
movl %r12d, %esi
callq 0x5b45
movq (%rbx), %rdx
leaq 0x19596(%rip), %rsi     # 0x2b07d
movl $0x1, %edi
xorl %eax, %eax
callq 0x37cc
jmp 0x11b87
movq %rsp, %r15
movq %r15, %rdi
movl %r12d, %esi
callq 0x5b45
movq (%r15), %rsi
leaq 0x19619(%rip), %rdi     # 0x2b129
xorl %eax, %eax
callq 0x3030
movq (%r15), %rdi
leaq 0x10(%rsp), %r15
cmpq %r15, %rdi
je 0x11b31
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
addq $0x4, %rbx
addl $-0x3, %ebp
leaq 0x13958(%rip), %rdi     # 0x25497
movq %rbx, %rsi
movl %ebp, %edx
movl $0x1, %ecx
movl $0x10, %r8d
callq 0x5bd2
movq $0x0, 0x38(%r14)
movq 0x30(%r14), %rax
movb $0x0, (%rax)
movq %rsp, %rbx
movq %rbx, %rdi
movl %r12d, %esi
callq 0x5b45
movq (%rbx), %rdx
leaq 0x195db(%rip), %rsi     # 0x2b156
movl $0x1, %edi
xorl %eax, %eax
callq 0x37cc
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x11a52
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x11a52
leaq 0x1ac5d(%rip), %rdi     # 0x2c80a
xorl %eax, %eax
callq 0x3030
jmp 0x11a52
leaq 0x1a615(%rip), %rdi     # 0x2c1d5
jmp 0x11c3b
leaq 0x1a5a4(%rip), %rdi     # 0x2c16d
jmp 0x11c3b
andl $0xf, %r14d
leaq 0x1a609(%rip), %rdi     # 0x2c1df
jmp 0x11c4f
andl $0xf, %r14d
leaq 0x1a5d0(%rip), %rdi     # 0x2c1b3
jmp 0x11c4f
andl $0xf, %r14d
leaq 0x1a55d(%rip), %rdi     # 0x2c14d
jmp 0x11c4f
andl $0xf, %r14d
leaq 0x1a55e(%rip), %rdi     # 0x2c15b
jmp 0x11c4f
leaq 0x1a595(%rip), %rdi     # 0x2c19b
jmp 0x11c3b
andl $0xf, %r14d
leaq 0x1a52c(%rip), %rdi     # 0x2c13f
jmp 0x11c4f
andl $0xf, %r14d
leaq 0x1a55a(%rip), %rdi     # 0x2c17a
jmp 0x11c4f
leaq 0x1f997(%rip), %rdi     # 0x315c0
jmp 0x11c3b
leaq 0x1a562(%rip), %rdi     # 0x2c194
jmp 0x11c3b
leaq 0x1a590(%rip), %rdi     # 0x2c1cb
xorl %eax, %eax
callq 0x3030
jmp 0x11c59
andl $0xf, %r14d
leaq 0x1a553(%rip), %rdi     # 0x2c1a2
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 0x1a580(%rip), %rdi     # 0x2c1f6
xorl %eax, %eax
callq 0x3030
leaq 0x1a599(%rip), %rdi     # 0x2c21d
xorl %eax, %eax
callq 0x3030
movzbl 0x3(%rbx), %eax
cmpq $0x3, %rax
ja 0x11ca5
leaq 0x181d4(%rip), %rcx     # 0x29e70
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x11cac
leaq 0x1f914(%rip), %rdi     # 0x315c0
callq 0x3380
movzbl 0x4(%rbx), %esi
shrl $0x2, %esi
leaq 0x1a57f(%rip), %rdi     # 0x2c23e
xorl %eax, %eax
callq 0x3030
movzbl 0x4(%rbx), %eax
andl $0x3, %eax
shll $0x8, %eax
movzbl 0x5(%rbx), %esi
orl %eax, %esi
leaq 0x1a586(%rip), %rdi     # 0x2c263
xorl %eax, %eax
callq 0x3030
movzwl 0x6(%rbx), %esi
movzwl 0x8(%rbx), %edx
leaq 0x1a595(%rip), %rdi     # 0x2c288
xorl %eax, %eax
callq 0x3030
movzbl 0xa(%rbx), %eax
addl $0x64, %eax
cvtsi2sd %eax, %xmm0
divsd 0xe313(%rip), %xmm0     # 0x20020
leaq 0x1d38c(%rip), %rdi     # 0x2f0a0
movb $0x1, %al
callq 0x3030
movzbl 0xb(%rbx), %r14d
leaq 0x1d393(%rip), %rdi     # 0x2f0ba
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
shrl $0x6, %eax
leaq 0x18145(%rip), %rcx     # 0x29e80
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x1d388(%rip), %rdi     # 0x2f0d6
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
shrl $0x2, %eax
andl $0xc, %eax
leaq 0x1819b(%rip), %rcx     # 0x29f00
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x1d37a(%rip), %rdi     # 0x2f0f2
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
andl $0xc, %eax
leaq 0x18104(%rip), %rcx     # 0x29e90
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x3380
leaq 0x1d36f(%rip), %rdi     # 0x2f10e
xorl %eax, %eax
callq 0x3030
andl $0x3, %r14d
leaq 0x14c3b(%rip), %rax     # 0x269ec
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x1bfd7(%rip), %rdi     # 0x2dd98
jmp 0x11df1
leaq 0x1bdad(%rip), %rdi     # 0x2db77
jmp 0x11df1
leaq 0x1f7ed(%rip), %rdi     # 0x315c0
callq 0x3380
leaq 0x1a4d0(%rip), %rsi     # 0x2c2af
xorl %edi, %edi
xorl %eax, %eax
callq 0x37cc
jmp 0x11df6
leaq 0x1bdd0(%rip), %rdi     # 0x2dbc1
callq 0x3380
leaq 0x1a4e0(%rip), %rdi     # 0x2c2dd
xorl %eax, %eax
callq 0x3030
movzbl 0xc(%rbx), %eax
cmpq $0xc, %rax
ja 0x11e1e
leaq 0x1808b(%rip), %rcx     # 0x29ea0
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0x11e25
leaq 0x1f79b(%rip), %rdi     # 0x315c0
callq 0x3380
movzbl 0xd(%rbx), %eax
xorps %xmm0, %xmm0
cvtsi2sd %eax, %xmm0
movsd 0xe1e3(%rip), %xmm2     # 0x20020
divsd %xmm2, %xmm0
movzbl 0xe(%rbx), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm2, %xmm1
leaq 0x1a4a4(%rip), %rdi     # 0x2c2f8
movb $0x2, %al
callq 0x3030
movzbl 0xf(%rbx), %ebp
leaq 0x1a4cf(%rip), %rdi     # 0x2c335
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x1805b(%rip), %rcx     # 0x29ed4
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
testb $0x20, %bpl
leaq 0x1a4cf(%rip), %r12     # 0x2c35f
leaq 0x1a4c4(%rip), %r15     # 0x2c35b
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x1a4a0(%rip), %rdi     # 0x2c345
xorl %eax, %eax
callq 0x3030
testb $0x10, %bpl
leaq 0xedd2(%rip), %r14      # 0x20c89
leaq 0x1fed6(%rip), %rsi     # 0x31d94
cmoveq %r14, %rsi
leaq 0x1a499(%rip), %rdi     # 0x2c362
xorl %eax, %eax
callq 0x3030
testb $0x8, %bpl
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x1a49d(%rip), %rdi     # 0x2c37f
xorl %eax, %eax
callq 0x3030
movzbl 0x10(%rbx), %ebp
testb %bpl, %bpl
movq %r15, %rsi
cmovnsq %r12, %rsi
leaq 0x1a498(%rip), %rdi     # 0x2c396
xorl %eax, %eax
callq 0x3030
testb $0x40, %bpl
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x1a496(%rip), %rdi     # 0x2c3ad
xorl %eax, %eax
callq 0x3030
testb $0x20, %bpl
cmoveq %r12, %r15
leaq 0x1a4a8(%rip), %rdi     # 0x2c3d5
movq %r15, %rsi
xorl %eax, %eax
callq 0x3030
movb 0x11(%rbx), %al
testb %al, %al
je 0x11f61
leaq 0xf425(%rip), %rcx      # 0x2136a
cmovnsq %rcx, %r14
addb %al, %al
movzbl %al, %edx
leaq 0x1a49e(%rip), %rdi     # 0x2c3f3
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
jmp 0x11f6d
leaq 0x1be59(%rip), %rdi     # 0x2ddc1
callq 0x3380
movzbl 0x12(%rbx), %ebp
leaq 0x1a495(%rip), %rdi     # 0x2c40d
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x17f59(%rip), %rcx     # 0x29ee4
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x3380
movzbl 0x13(%rbx), %esi
andl $0x3f, %ebp
je 0x11fb2
leaq 0x1a487(%rip), %rdi     # 0x2c42e
movl %ebp, %edx
xorl %eax, %eax
callq 0x3030
jmp 0x11fc0
leaq 0x1a49e(%rip), %rdi     # 0x2c457
xorl %eax, %eax
callq 0x3030
movzbl 0x14(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
incl %esi
andl $0xf, %edx
incl %edx
leaq 0x1a4a0(%rip), %rdi     # 0x2c477
xorl %eax, %eax
callq 0x3030
movb 0x16(%rbx), %bpl
andb $0x3, %bpl
je 0x120bf
leaq 0x1be38(%rip), %rdi     # 0x2de2b
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 0x1a47c(%rip), %rdi     # 0x2c4aa
xorl %eax, %eax
callq 0x3030
cmpb $0x1, %bpl
je 0x120bf
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 0x1a458(%rip), %rdi     # 0x2c4cd
xorl %eax, %eax
callq 0x3030
cmpb $0x3, %bpl
jne 0x120bf
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 0x1a438(%rip), %rdi     # 0x2c4f0
xorl %eax, %eax
callq 0x3030
movzbl 0x1d(%rbx), %edx
testb %dl, %dl
leaq 0x1a473(%rip), %rax     # 0x2c53f
leaq 0x1a45d(%rip), %rsi     # 0x2c530
cmovnsq %rax, %rsi
andl $0x7f, %edx
leaq 0x1a432(%rip), %rdi     # 0x2c513
xorl %eax, %eax
callq 0x3030
movzbl 0x1e(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
andl $0xf, %edx
leaq 0x1a453(%rip), %rdi     # 0x2c54e
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3030
leaq 0x1f4a6(%rip), %rdi     # 0x315c0
xorl %eax, %eax
callq 0x3030
leaq 0x1a785(%rip), %rdi     # 0x2c8ad
callq 0x3380
jmp 0x11c59
jmp 0x12134
movq %rax, %rbx
movq (%rsp), %rdi
cmpq %r15, %rdi
je 0x121fb
movq 0x10(%rsp), %rsi
jmp 0x121ec
jmp 0x12150
movq %rax, %rbx
movq (%rsp), %rdi
leaq 0x10(%rsp), %rax
cmpq %rax, %rdi
je 0x12175
movq 0x10(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x12175
jmp 0x12172
movq %rax, %rbx
movq 0x28(%rsp), %rdi
leaq 0x38(%rsp), %rax
cmpq %rax, %rdi
je 0x12198
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x12198
jmp 0x12195
movq %rax, %rbx
leaq 0x78(%rsp), %rax
movq -0x10(%rax), %rdi
cmpq %rax, %rdi
je 0x121d8
movq 0x78(%rsp), %rsi
jmp 0x121c9
jmp 0x121d5
jmp 0x121d5
jmp 0x121f8
jmp 0x121f8
jmp 0x121b7
movq %rax, %rbx
movq 0x28(%rsp), %rdi
cmpq %r14, %rdi
je 0x121d8
movq 0x38(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x121d8
jmp 0x121d5
movq %rax, %rbx
movq 0x48(%rsp), %rdi
leaq 0x58(%rsp), %rax
cmpq %rax, %rdi
je 0x121fb
movq 0x58(%rsp), %rsi
incq %rsi
callq 0x3260
jmp 0x121fb
jmp 0x121f8
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3400