// File: /workspace/github_cpp_makefile_star2_O2/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, %ebp
movl %edx, %r14d
movq %rsi, %rbx
movq %rdi, %r15
movzbl (%rsi), %eax
cmpq $0x20, %rax
ja 0xdf77
leaq 0x12952(%rip), %rcx     # 0x208b0
movslq (%rcx,%rax,4), %rdx
addq %rcx, %rdx
jmpq *%rdx
leaq 0x30(%r15), %rdi
leaq 0x16c87(%rip), %rsi     # 0x24bf9
jmp 0xe0ee
cmpl $0x34, %eax
je 0xe0e3
cmpl $0x35, %eax
je 0xe0bc
cmpl $0x42, %eax
je 0xe0d6
cmpl $0x78, %eax
je 0xe0c9
cmpl $0x79, %eax
jne 0xdfb0
leaq 0x30(%r15), %rdi
leaq 0x16ed3(%rip), %rsi     # 0x24e7e
jmp 0xe0ee
cmpb $0xd, %al
jae 0xe73d
leaq 0x16ee5(%rip), %rdi     # 0x24ea4
jmp 0xeb14
andq $0x0, 0x38(%r15)
movq 0x30(%r15), %rax
movb $0x0, (%rax)
jmp 0xe0b7
leaq 0x30(%r15), %rdi
leaq 0x16ddb(%rip), %rsi     # 0x24dbb
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16d91(%rip), %rsi     # 0x24d81
jmp 0xe0b2
leaq 0x30(%r15), %rdi
leaq 0x16c3a(%rip), %rsi     # 0x24c3a
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16c6f(%rip), %rsi     # 0x24c7f
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16c3c(%rip), %rsi     # 0x24c5c
jmp 0xe0ee
andq $0x0, 0x38(%r15)
movq 0x30(%r15), %rax
movb $0x0, (%rax)
jmp 0xe0f3
leaq 0x30(%r15), %rdi
leaq 0x16bd4(%rip), %rsi     # 0x24c15
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16cc4(%rip), %rsi     # 0x24d15
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16cda(%rip), %rsi     # 0x24d3b
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16c25(%rip), %rsi     # 0x24c96
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16ced(%rip), %rsi     # 0x24d6b
jmp 0xe0b2
leaq 0x30(%r15), %rdi
leaq 0x16c4a(%rip), %rsi     # 0x24cd5
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16c1d(%rip), %rsi     # 0x24cb5
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16c53(%rip), %rsi     # 0x24cf8
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16ced(%rip), %rsi     # 0x24d9f
callq 0x3460
movb $0x1, %r12b
jmp 0xe0f6
leaq 0x30(%r15), %rdi
leaq 0x16d34(%rip), %rsi     # 0x24dfb
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16d7c(%rip), %rsi     # 0x24e50
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16d46(%rip), %rsi     # 0x24e27
jmp 0xe0ee
leaq 0x30(%r15), %rdi
leaq 0x16ce2(%rip), %rsi     # 0x24dd0
callq 0x3460
xorl %r12d, %r12d
movzbl (%rbx), %eax
cmpl $0x13, %eax
ja 0xe249
movl $0xca065, %ecx          # imm = 0xCA065
btl %eax, %ecx
jae 0xe249
testb %bpl, %bpl
je 0xe125
leaq 0x16e54(%rip), %rsi     # 0x24f70
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
testb %r12b, %r12b
je 0xe144
testb $0x40, 0x2c2(%r15)
jne 0xe144
leaq 0x16e67(%rip), %rsi     # 0x24fa2
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
leaq 0x30(%r15), %r12
cmpq $0x0, 0x38(%r15)
je 0xe161
movq (%r12), %rsi
leaq 0x10cb1(%rip), %rdi     # 0x1ee0b
xorl %eax, %eax
callq 0x3030
movzbl (%rbx), %eax
cmpq $0x20, %rax
ja 0xe19c
leaq 0x127c3(%rip), %rcx     # 0x20934
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xdb50
cmpl $0x34, %eax
je 0xe71b
cmpl $0x35, %eax
je 0xe67a
cmpl $0x42, %eax
je 0xe6f9
cmpl $0x78, %eax
je 0xe69c
cmpl $0x79, %eax
jne 0xe25a
cmpb $0x0, 0x2d2(%r15)
jne 0xe1e3
leaq 0x16ffc(%rip), %rsi     # 0x251d6
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
cmpb $0x0, 0x2d4(%r15)
jne 0xe1f7
cmpb $0x1, 0x2d3(%r15)
jne 0xe207
leaq 0x17013(%rip), %rsi     # 0x25211
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
cmpl $0x1, %r14d
ja 0xeac8
leaq 0x1701a(%rip), %rsi     # 0x25232
leaq 0x8(%rsp), %rbx
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x75c4
movq %r12, %rdi
movq %rbx, %rsi
callq 0x32f0
movq %rbx, %rdi
callq 0x3130
leaq 0x16ffe(%rip), %rsi     # 0x25242
jmp 0xe4ab
addl $-0x78, %eax
cmpl $0x2, %eax
jb 0xe110
jmp 0xe125
incq %rbx
leaq 0x11233(%rip), %rdi     # 0x1f497
pushq $0x1
popq %rcx
pushq $0x10
popq %r8
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x4fc1
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc752
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc8b4
cmpl $0x2, %r14d
ja 0xe751
leaq 0x16e2c(%rip), %rsi     # 0x25108
jmp 0xe47f
cmpl $0x1, %r14d
jbe 0xe669
movzbl 0x1(%rbx), %r15d
shrl $0x5, %r15d
movzbl 0x2(%rbx), %esi
leaq 0x18602(%rip), %rdi     # 0x26901
xorl %eax, %eax
callq 0x3030
addq $0x2, %r15
subl %r15d, %r14d
jb 0xfb55
incq %rbx
addq %r15, %rbx
leaq 0x8(%rsp), %r15
pushq $0x1
popq %r12
pushq $-0x1
popq %rbp
testl %r14d, %r14d
je 0xfb55
movzbl (%rbx), %r13d
movl %r13d, %esi
andl $0x1f, %esi
cmpl $0x4, %r14d
jb 0xe37e
cmpl $0x1, %esi
jne 0xe37e
movzwl 0x2(%rbx), %eax
shll $0x8, %eax
movzbl 0x1(%rbx), %esi
orl %eax, %esi
movq %r15, %rdi
callq 0x4f51
movq 0x8(%rsp), %rdx
leaq 0x185ac(%rip), %rdi     # 0x26910
pushq $0x1
popq %rsi
xorl %eax, %eax
callq 0x3030
movq %r15, %rdi
callq 0x3130
pushq $-0x4
popq %rax
pushq $0x4
popq %rcx
jmp 0xe391
leaq 0x185af(%rip), %rdi     # 0x26934
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
movq %r12, %rcx
shrl $0x5, %r13d
addq %rcx, %rbx
addq %r13, %rbx
subl %r13d, %r14d
addl %eax, %r14d
jmp 0xe325
cmpl $0x1, %r14d
jbe 0xe669
leaq 0x19ab8(%rip), %rdi     # 0x27e6c
callq 0x33b0
leaq 0x15a4c(%rip), %r12     # 0x23e0c
leaq 0x181fe(%rip), %r13     # 0x265c5
movq %r12, %r15
xorl %ebp, %ebp
cmpq $0x6, %rbp
je 0xe780
movzbl 0x1(%rbx), %eax
btl %ebp, %eax
jae 0xe419
cmpq $0x3, %rbp
ja 0xe3fb
movslq (%r15), %rsi
addq %r12, %rsi
leaq 0x16333(%rip), %rdi     # 0x24725
xorl %eax, %eax
callq 0x3030
jmp 0xe419
leaq 0x181af(%rip), %rdi     # 0x265b1
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
xorl %edi, %edi
movq %r13, %rsi
movl %ebp, %edx
xorl %eax, %eax
callq 0x362c
incq %rbp
addq $0x4, %r15
jmp 0xe3cc
cmpl $0x2, %r14d
jb 0xe669
leaq 0x159b9(%rip), %r15     # 0x23dec
leaq 0x162ed(%rip), %r14     # 0x24727
movq %r15, %r12
xorl %r13d, %r13d
cmpq $0x8, %r13
je 0xe890
movzbl 0x1(%rbx), %eax
btl %r13d, %eax
jae 0xe465
movslq (%r12), %rsi
addq %r15, %rsi
movq %r14, %rdi
xorl %eax, %eax
callq 0x3030
incq %r13
addq $0x4, %r12
jmp 0xe440
cmpl $0x2, %r14d
ja 0xe8cb
leaq 0x16b98(%rip), %rsi     # 0x25017
leaq 0x8(%rsp), %rbx
leaq 0x28(%rsp), %rdx
movq %rbx, %rdi
callq 0x75c4
movq %r12, %rdi
movq %rbx, %rsi
callq 0x32f0
movq %rbx, %rdi
callq 0x3130
leaq 0x16b8d(%rip), %rsi     # 0x25038
xorl %edi, %edi
movl %r14d, %edx
xorl %eax, %eax
callq 0x362c
jmp 0xfb55
cmpl $0x1e, %r14d
jne 0xe8fa
leaq 0x17c54(%rip), %rdi     # 0x26121
xorl %eax, %eax
callq 0x3030
movzbl 0x1(%rbx), %r14d
movl %r14d, %eax
shrl $0x4, %eax
cmpl $0xc, %eax
ja 0xf3d0
leaq 0x124c9(%rip), %rcx     # 0x209b8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x17c37(%rip), %rdi     # 0x26136
xorl %eax, %eax
callq 0x3030
andl $0xf, %r14d
cmpl $0x2, %r14d
ja 0xfa59
leaq 0x15959(%rip), %rax     # 0x23e74
movslq (%rax,%r14,4), %rdi
addq %rax, %rdi
jmp 0xfa60
incq %rbx
pushq $0x1
popq %rcx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xc16a
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xd964
cmpl $0x3, %r14d
jb 0xe669
incq %rbx
leaq 0x18191(%rip), %r15     # 0x26713
leaq 0x181ac(%rip), %r12     # 0x26735
cmpl $0x3, %r14d
jb 0xfb55
movzbl (%rbx), %r13d
cmpl %r13d, %r14d
jbe 0xfb55
movzwl 0x1(%rbx), %ebp
movq %r15, %rdi
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
cmpl $0x4, %ebp
je 0xe5bf
cmpl $0x2, %ebp
je 0xe5d8
cmpl $0x1, %ebp
jne 0xe62f
cmpb $0x3, %r13b
jb 0xe62f
movzbl 0x3(%rbx), %esi
andl $0xf, %esi
movq %r12, %rdi
xorl %eax, %eax
callq 0x3030
jmp 0xe62f
cmpb $0x3, %r13b
jb 0xe62f
movzbl 0x3(%rbx), %ebp
movl %ebp, %esi
andl $0xf, %esi
movq %r12, %rdi
xorl %eax, %eax
callq 0x3030
andl $0xf, %ebp
je 0xe62f
movb 0x3(%rbx), %al
testb $0x10, %al
je 0xe60c
leaq 0x198bb(%rip), %rdi     # 0x27ebf
callq 0x33b0
movb 0x3(%rbx), %al
testb $0x20, %al
je 0xe61f
leaq 0x198d3(%rip), %rdi     # 0x27eea
callq 0x33b0
movb 0x3(%rbx), %al
testb $0x40, %al
je 0xe62f
leaq 0x198eb(%rip), %rdi     # 0x27f15
callq 0x33b0
incq %r13
subl %r13d, %r14d
addq %r13, %rbx
jmp 0xe589
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xd724
cmpl $0x1, %r14d
ja 0xe906
leaq 0x15adf(%rip), %rsi     # 0x2414f
xorl %edi, %edi
movl %r14d, %edx
jmp 0xeb63
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xddb2
movzbl 0x1(%rbx), %esi
leaq 0x182a9(%rip), %rdi     # 0x26950
xorl %eax, %eax
callq 0x3030
cmpl $0x1, %r14d
jne 0xe6ba
cmpb $0x0, 0x1(%rbx)
jne 0xe6ca
leaq 0x182b3(%rip), %rsi     # 0x26974
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
cmpb $0x0, 0x2d5(%r15)
jne 0xfb55
leaq 0x16ad6(%rip), %rsi     # 0x251b5
xorl %edi, %edi
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x362c
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xde9a
incq %rbx
movq %r15, %rdi
movq %rbx, %rsi
movl %r14d, %edx
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0xdd54
cmpb $0x20, %al
jae 0xeb00
leaq 0x16778(%rip), %rdi     # 0x24ec4
jmp 0xeb14
movzwl 0x2(%rbx), %eax
shll $0x8, %eax
movzbl 0x1(%rbx), %ebp
orl %eax, %ebp
movl $0x0, 0x4(%rsp)
movl %ebp, %edi
xorl %esi, %esi
callq 0x4e65
testq %rax, %rax
je 0xeb7b
movq %rax, %r13
jmp 0xeb98
leaq 0x1970d(%rip), %rdi     # 0x27e94
callq 0x33b0
leaq 0x17e46(%rip), %r15     # 0x265d9
xorl %eax, %eax
cmpl $0x8, %eax
je 0xe7b6
movzbl 0x2(%rbx), %ecx
leal 0x1(%rax), %ebp
btl %eax, %ecx
jae 0xe7b2
movq %r15, %rdi
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
jmp 0xe795
cmpl $0x2, %r14d
je 0xfb55
movzbl 0x3(%rbx), %ebp
cvtsi2sd %ebp, %xmm0
mulsd 0x15778(%rip), %xmm0    # 0x23f48
callq 0x3220
mulsd 0x15773(%rip), %xmm0    # 0x23f50
leaq 0x17e14(%rip), %rdi     # 0x265f8
movl %ebp, %esi
movb $0x1, %al
callq 0x3030
cmpl $0x4, %r14d
jb 0xfb55
movzbl 0x4(%rbx), %ebp
cvtsi2sd %ebp, %xmm0
mulsd 0x15741(%rip), %xmm0    # 0x23f48
callq 0x3220
mulsd 0x1573c(%rip), %xmm0    # 0x23f50
leaq 0x17e12(%rip), %rdi     # 0x2662d
movl %ebp, %esi
movb $0x1, %al
callq 0x3030
cmpl $0x4, %r14d
je 0xfb55
movzbl 0x5(%rbx), %ebp
movzbl 0x3(%rbx), %eax
cvtsi2sd %eax, %xmm0
mulsd 0x15706(%rip), %xmm0    # 0x23f48
callq 0x3220
mulsd 0x15701(%rip), %xmm0    # 0x23f50
movzbl 0x5(%rbx), %eax
cvtsi2sd %eax, %xmm1
divsd 0x156f9(%rip), %xmm1    # 0x23f58
mulsd %xmm1, %xmm1
mulsd %xmm1, %xmm0
divsd 0xb7b1(%rip), %xmm0     # 0x1a020
leaq 0x17dfa(%rip), %rdi     # 0x26670
movl %ebp, %esi
movb $0x1, %al
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3030
movb 0x2(%rbx), %al
testb %al, %al
jns 0xe8a6
leaq 0x195b9(%rip), %rdi     # 0x27e57
callq 0x33b0
movb 0x2(%rbx), %al
testb $0x40, %al
je 0xfb55
leaq 0x195ad(%rip), %rdi     # 0x27e62
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x33b0
movzwl 0x2(%rbx), %eax
shll $0x8, %eax
movzbl 0x1(%rbx), %ebp
orl %eax, %ebp
movl $0x0, 0x4(%rsp)
movl %ebp, %edi
xorl %esi, %esi
callq 0x4e65
testq %rax, %rax
je 0xed54
movq %rax, %r13
jmp 0xed71
leaq 0x1780c(%rip), %rsi     # 0x2610d
jmp 0xe670
movzbl 0x1(%rbx), %eax
movl %eax, %esi
andl $0x3, %esi
je 0xe924
incl %esi
leaq 0x17e2e(%rip), %rdi     # 0x26748
xorl %eax, %eax
callq 0x3030
movb 0x1(%rbx), %al
testb $0x4, %al
je 0xe934
leaq 0x196db(%rip), %rdi     # 0x2800a
callq 0x33b0
testb $0x7, 0x2(%rbx)
je 0xfb55
addl $-0x2, %r14d
addq $0x3, %rbx
leaq 0x15dd8(%rip), %r15     # 0x24725
cmpl $0x4, %r14d
jb 0xfb55
jne 0xe9bf
movzbl 0x3(%rbx), %esi
shrl $0x4, %esi
leal -0x1(%rsi), %eax
cmpb $0x3, %al
jae 0xf0cc
movzwl 0x1(%rbx), %ecx
shll $0x8, %ecx
movzbl (%rbx), %r13d
orl %ecx, %r13d
movzbl %al, %eax
leaq 0x15581(%rip), %rcx     # 0x23f04
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x33b0
leaq 0x252da(%rip), %r12     # 0x33c70
xorl %ebp, %ebp
cmpq $0x15, %rbp
je 0xeabb
btl %ebp, %r13d
jae 0xe9b6
movq (%r12), %rsi
movq %r15, %rdi
xorl %eax, %eax
callq 0x3030
incq %rbp
addq $0x8, %r12
jmp 0xe998
movzbl (%rbx), %r13d
andl $0xf, %r13d
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movl %r13d, %esi
callq 0x11cb2
movq 0x8(%rsp), %rsi
movzbl 0x1(%rbx), %edx
andl $0x1f, %edx
incl %edx
leaq 0x17d76(%rip), %rdi     # 0x26762
xorl %eax, %eax
callq 0x3030
movq %r12, %rdi
callq 0x3130
movzbl 0x2(%rbx), %eax
testb $0x40, %al
leaq 0x17da6(%rip), %rsi     # 0x267ae
leaq 0xc27a(%rip), %rdi      # 0x1ac89
cmoveq %rdi, %rsi
testb $0x20, %al
leaq 0x17d97(%rip), %rdx     # 0x267b3
cmoveq %rdi, %rdx
testb $0x10, %al
leaq 0x17d91(%rip), %rcx     # 0x267ba
cmoveq %rdi, %rcx
testb $0x8, %al
leaq 0x17d88(%rip), %r8      # 0x267be
cmoveq %rdi, %r8
testb $0x4, %al
leaq 0x17d81(%rip), %r9      # 0x267c4
cmoveq %rdi, %r9
testb $0x2, %al
leaq 0x17d78(%rip), %r10     # 0x267c8
cmoveq %rdi, %r10
testb $0x1, %al
leaq 0x17d71(%rip), %r11     # 0x267ce
cmoveq %rdi, %r11
leaq 0x17d13(%rip), %rdi     # 0x2677b
xorl %eax, %eax
pushq %r11
pushq %r10
callq 0x3030
popq %rcx
popq %rdx
cmpl $0x1, %r13d
jne 0xeabb
movzbl 0x3(%rbx), %eax
testb $0x4, %al
leaq 0x17d76(%rip), %rsi     # 0x267fe
leaq 0xc1fa(%rip), %rdi      # 0x1ac89
cmoveq %rdi, %rsi
testb $0x2, %al
leaq 0x17d66(%rip), %rdx     # 0x26802
cmoveq %rdi, %rdx
testb $0x1, %al
leaq 0x17d5d(%rip), %rcx     # 0x26806
cmoveq %rdi, %rcx
leaq 0x17d1e(%rip), %rdi     # 0x267d2
xorl %eax, %eax
callq 0x3030
addl $-0x4, %r14d
addq $0x4, %rbx
jmp 0xe94d
cmpb $0x0, 0x1(%rbx)
jne 0xead4
cmpb $0x0, 0x2(%rbx)
je 0xeae0
leaq 0x18ee9(%rip), %rdi     # 0x279c4
callq 0x33b0
addq $0x3, %rbx
addl $-0x2, %r14d
movq %rbx, %rdi
movl %r14d, %esi
callq 0xfc05
movb $0x1, 0x2d4(%r15)
jmp 0xfb55
cmpb $0x78, %al
leaq 0x163db(%rip), %rax     # 0x24ee4
leaq 0x163f3(%rip), %rdi     # 0x24f03
cmovgeq %rax, %rdi
xorl %eax, %eax
callq 0x3030
movzbl (%rbx), %esi
leaq 0x163f0(%rip), %rdi     # 0x24f15
movl %r14d, %edx
xorl %eax, %eax
callq 0x3030
leaq 0x1(%rbx), %rsi
leaq 0x1095d(%rip), %rdi     # 0x1f497
pushq $0x1
popq %rbp
pushq $0x10
popq %r8
movl %r14d, %edx
movl %ebp, %ecx
callq 0x4fc1
andq $0x0, 0x38(%r15)
movq 0x30(%r15), %rax
movb $0x0, (%rax)
movzbl (%rbx), %edx
leaq 0x163e2(%rip), %rsi     # 0x24f43
movl %ebp, %edi
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x362c
pushq $0x1
popq %rsi
movl %ebp, %edi
callq 0x4e65
movq %rax, %r13
testq %rax, %rax
setne %al
movl %eax, 0x4(%rsp)
je 0xf25c
leaq 0x165f3(%rip), %rsi     # 0x25192
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x75c4
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
movq %r13, %rdx
callq 0x75a4
leaq 0x17ce6(%rip), %rdx     # 0x268ad
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x75a4
leaq 0x8(%rsp), %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0x32f0
movq %r15, %rdi
callq 0x3130
leaq 0x28(%rsp), %rdi
callq 0x3130
leaq 0x48(%rsp), %rdi
callq 0x3130
cmpb $0x0, 0x4(%rsp)
je 0xec8f
leaq 0x1bc54(%rip), %rsi     # 0x2a868
leaq 0x48(%rsp), %rdi
leaq 0x3(%rsp), %rdx
callq 0x75c4
leaq 0x68(%rsp), %rdi
movl %ebp, %esi
callq 0x4f51
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x76b4
leaq 0x16492(%rip), %rdx     # 0x250dc
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x75a4
movq 0x8(%rsp), %rsi
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
leaq 0x8(%rsp), %rdi
callq 0x3130
leaq 0x28(%rsp), %rdi
callq 0x3130
leaq 0x68(%rsp), %rdi
callq 0x3130
leaq 0x48(%rsp), %rdi
callq 0x3130
movq (%r12), %r15
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%r12), %rdx
leaq 0x1644c(%rip), %rdi     # 0x250f9
movq %r15, %rsi
xorl %eax, %eax
callq 0x3030
movq %r12, %rdi
callq 0x3130
leaq 0x4(%rbx), %r15
cmpl $0xd046, %ebp           # imm = 0xD046
jne 0xeee6
movzbl (%r15), %esi
andl $0x7, %esi
incl %esi
addl $0x2, %r14d
leaq 0x171c8(%rip), %rdi     # 0x25eab
movl %r14d, %edx
xorl %eax, %eax
callq 0x3030
movb (%r15), %al
testb %al, %al
jns 0xed03
leaq 0x19245(%rip), %rdi     # 0x27f40
callq 0x33b0
movb (%r15), %al
testb $0x40, %al
je 0xed16
leaq 0x1924e(%rip), %rdi     # 0x27f5c
callq 0x33b0
movb (%r15), %al
testb $0x20, %al
je 0xed29
leaq 0x1925b(%rip), %rdi     # 0x27f7c
callq 0x33b0
movb (%r15), %al
testb $0x10, %al
je 0xed39
leaq 0x1926a(%rip), %rdi     # 0x27f9e
callq 0x33b0
testb $0x1, 0x5(%rbx)
je 0xfb55
leaq 0x19274(%rip), %rdi     # 0x27fbe
callq 0x33b0
jmp 0xfb55
pushq $0x1
popq %rsi
movl %ebp, %edi
callq 0x4e65
movq %rax, %r13
testq %rax, %rax
setne %al
movl %eax, 0x4(%rsp)
je 0xf2db
leaq 0x16341(%rip), %rsi     # 0x250b9
leaq 0x48(%rsp), %rdi
leaq 0x68(%rsp), %rdx
callq 0x75c4
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
movq %r13, %rdx
callq 0x75a4
leaq 0x17b0d(%rip), %rdx     # 0x268ad
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x75a4
leaq 0x8(%rsp), %r15
movq %r12, %rdi
movq %r15, %rsi
callq 0x32f0
movq %r15, %rdi
callq 0x3130
leaq 0x28(%rsp), %rdi
callq 0x3130
leaq 0x48(%rsp), %rdi
callq 0x3130
cmpb $0x0, 0x4(%rsp)
je 0xee68
leaq 0x1ba7b(%rip), %rsi     # 0x2a868
leaq 0x48(%rsp), %rdi
leaq 0x3(%rsp), %rdx
callq 0x75c4
leaq 0x68(%rsp), %rdi
movl %ebp, %esi
callq 0x4f51
leaq 0x28(%rsp), %rdi
leaq 0x48(%rsp), %rsi
leaq 0x68(%rsp), %rdx
callq 0x76b4
leaq 0x162b9(%rip), %rdx     # 0x250dc
leaq 0x8(%rsp), %rdi
leaq 0x28(%rsp), %rsi
callq 0x75a4
movq 0x8(%rsp), %rsi
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
leaq 0x8(%rsp), %rdi
callq 0x3130
leaq 0x28(%rsp), %rdi
callq 0x3130
leaq 0x68(%rsp), %rdi
callq 0x3130
leaq 0x48(%rsp), %rdi
callq 0x3130
movq (%r12), %r15
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%r12), %rdx
leaq 0x16273(%rip), %rdi     # 0x250f9
movq %r15, %rsi
xorl %eax, %eax
callq 0x3030
movq %r12, %rdi
callq 0x3130
leaq 0x4(%rbx), %r15
cmpl $0xd046, %ebp           # imm = 0xD046
je 0xef08
cmpl $0x90848b, %ebp         # imm = 0x90848B
jne 0xeee6
movzbl (%r15), %esi
leaq 0x16fd8(%rip), %rdi     # 0x25e8f
xorl %eax, %eax
callq 0x3030
leal -0x5(%r14), %eax
cmpl $-0x3, %eax
ja 0xf0df
addq $0x5, %rbx
addl $-0x4, %r14d
leaq 0x105bf(%rip), %rdi     # 0x1f499
pushq $0x1
popq %rcx
pushq $0x10
popq %r8
movq %rbx, %rsi
jmp 0xeefb
addl $-0x3, %r14d
leaq 0x105a6(%rip), %rdi     # 0x1f497
pushq $0x1
popq %rcx
pushq $0x10
popq %r8
movq %r15, %rsi
movl %r14d, %edx
callq 0x4fc1
jmp 0xfb55
movzbl (%r15), %r12d
movl %r12d, %ebp
shrl $0x5, %ebp
leal 0x2(%r14), %edx
leaq 0x16f8e(%rip), %rdi     # 0x25eab
movl %ebp, %esi
xorl %eax, %eax
callq 0x3030
testb $0x1, (%r15)
je 0xef38
leaq 0x18ab2(%rip), %rdi     # 0x279e5
callq 0x33b0
cmpb $0x1f, %r12b
ja 0xf0ec
movb (%r15), %al
testb $0x2, %al
je 0xef58
leaq 0x18b25(%rip), %rdi     # 0x27a75
callq 0x33b0
movb (%r15), %al
testb $0x4, %al
je 0xef68
leaq 0x18b27(%rip), %rdi     # 0x27a8a
callq 0x33b0
movzbl 0x14(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
andl $0xf, %edx
leaq 0x16f4c(%rip), %rdi     # 0x25ec7
xorl %eax, %eax
callq 0x3030
movzbl 0x12(%rbx), %eax
shll $0x4, %eax
movzbl 0x11(%rbx), %esi
shrl $0x4, %esi
orl %eax, %esi
leaq 0x16f45(%rip), %rdi     # 0x25ede
xorl %eax, %eax
callq 0x3030
movzbl 0x13(%rbx), %eax
shll $0x4, %eax
movzbl 0x11(%rbx), %esi
andl $0xf, %esi
orl %eax, %esi
leaq 0x16f3e(%rip), %rdi     # 0x25ef5
xorl %eax, %eax
callq 0x3030
movzbl 0x5(%rbx), %eax
movl %eax, %ecx
shrl $0x4, %ecx
movzbl 0x6(%rbx), %edx
shll $0x4, %edx
orl %ecx, %edx
cvtsi2sd %edx, %xmm0
movsd 0x14fac(%rip), %xmm2    # 0x23f88
mulsd %xmm2, %xmm0
andl $0xf, %eax
movzbl 0x7(%rbx), %ecx
shll $0x4, %ecx
orl %eax, %ecx
cvtsi2sd %ecx, %xmm1
mulsd %xmm2, %xmm1
leaq 0x16f11(%rip), %rdi     # 0x25f0c
movb $0x2, %al
callq 0x3030
movzbl 0x8(%rbx), %eax
movl %eax, %ecx
shrl $0x4, %ecx
movzbl 0x9(%rbx), %edx
shll $0x4, %edx
orl %ecx, %edx
cvtsi2sd %edx, %xmm0
movsd 0x14f68(%rip), %xmm2    # 0x23f88
mulsd %xmm2, %xmm0
andl $0xf, %eax
movzbl 0xa(%rbx), %ecx
shll $0x4, %ecx
orl %eax, %ecx
cvtsi2sd %ecx, %xmm1
mulsd %xmm2, %xmm1
leaq 0x16ee5(%rip), %rdi     # 0x25f24
movb $0x2, %al
callq 0x3030
movzbl 0xb(%rbx), %eax
movl %eax, %ecx
shrl $0x4, %ecx
movzbl 0xc(%rbx), %edx
shll $0x4, %edx
orl %ecx, %edx
cvtsi2sd %edx, %xmm0
movsd 0x14f24(%rip), %xmm2    # 0x23f88
mulsd %xmm2, %xmm0
andl $0xf, %eax
movzbl 0xd(%rbx), %ecx
shll $0x4, %ecx
orl %eax, %ecx
cvtsi2sd %ecx, %xmm1
mulsd %xmm2, %xmm1
leaq 0x16eb9(%rip), %rdi     # 0x25f3c
movb $0x2, %al
callq 0x3030
movzbl 0xe(%rbx), %eax
movl %eax, %ecx
shrl $0x4, %ecx
movzbl 0xf(%rbx), %edx
shll $0x4, %edx
orl %ecx, %edx
cvtsi2sd %edx, %xmm0
movsd 0x14ee0(%rip), %xmm2    # 0x23f88
mulsd %xmm2, %xmm0
andl $0xf, %eax
movzbl 0x10(%rbx), %ecx
shll $0x4, %ecx
orl %eax, %ecx
cvtsi2sd %ecx, %xmm1
mulsd %xmm2, %xmm1
leaq 0x16e8d(%rip), %rdi     # 0x25f54
jmp 0xfb4e
leaq 0x17737(%rip), %rdi     # 0x2680a
xorl %eax, %eax
callq 0x3030
jmp 0xfb55
pushq $0xa
popq %rdi
callq 0x3340
jmp 0xfb55
cmpb $0x2, %bpl
je 0xf8bc
movzbl %bpl, %eax
cmpl $0x1, %eax
jne 0xfb55
testb $0x2, (%r15)
je 0xf115
leaq 0x18965(%rip), %rdi     # 0x27a75
callq 0x33b0
testb $0x1, 0x5(%rbx)
je 0xf127
leaq 0x18968(%rip), %rdi     # 0x27a8a
callq 0x33b0
movzbl 0x4(%rbx), %esi
shrl $0x2, %esi
andl $0x7, %esi
addl $0x2, %esi
leaq 0x16e31(%rip), %rdi     # 0x25f6c
xorl %eax, %eax
callq 0x3030
testb $0x1, 0x6(%rbx)
leaq 0x16e51(%rip), %rax     # 0x25f9e
leaq 0x16e43(%rip), %rsi     # 0x25f97
cmoveq %rax, %rsi
leaq 0x16e23(%rip), %rdi     # 0x25f82
xorl %eax, %eax
callq 0x3030
testb $0x1, 0x7(%rbx)
leaq 0x16e66(%rip), %rax     # 0x25fd7
leaq 0x16e48(%rip), %rsi     # 0x25fc0
cmoveq %rax, %rsi
leaq 0x16e28(%rip), %rdi     # 0x25fab
xorl %eax, %eax
callq 0x3030
movzbl 0x5(%rbx), %eax
shrl %eax
imull $0x32, %eax, %esi
addl $0x64, %esi
leaq 0x16e48(%rip), %rdi     # 0x25fe5
xorl %eax, %eax
callq 0x3030
movb 0x6(%rbx), %al
shrb %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
divsd 0x14dc8(%rip), %xmm0    # 0x23f80
mulsd %xmm0, %xmm0
leaq 0x16e47(%rip), %rdi     # 0x2600a
movb $0x1, %al
callq 0x3030
cmpl $0xd, %r14d
jne 0xfa78
movzbl 0x8(%rbx), %eax
cvtsi2sd %eax, %xmm0
movsd 0x14d7c(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
movzbl 0x9(%rbx), %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm2, %xmm1
leaq 0x16d11(%rip), %rdi     # 0x25f0c
movb $0x2, %al
callq 0x3030
movzbl 0xa(%rbx), %eax
cvtsi2sd %eax, %xmm0
movsd 0x14d4e(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
movzbl 0xb(%rbx), %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm2, %xmm1
leaq 0x16cfb(%rip), %rdi     # 0x25f24
movb $0x2, %al
callq 0x3030
movzbl 0xc(%rbx), %eax
cvtsi2sd %eax, %xmm0
movsd 0x14d20(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
movzbl 0xd(%rbx), %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm2, %xmm1
leaq 0x16ce5(%rip), %rdi     # 0x25f3c
jmp 0xfb4e
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%r12), %rsi
leaq 0x15eb3(%rip), %rdi     # 0x25129
xorl %eax, %eax
callq 0x3030
movq %r12, %rdi
callq 0x3130
addq $0x4, %rbx
addl $-0x3, %r14d
leaq 0x10203(%rip), %rdi     # 0x1f497
pushq $0x1
popq %r12
pushq $0x10
popq %r8
movq %rbx, %rsi
movl %r14d, %edx
movl %r12d, %ecx
callq 0x4fc1
andq $0x0, 0x38(%r15)
movq 0x30(%r15), %rax
movb $0x0, (%rax)
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%rbx), %rdx
leaq 0x15e87(%rip), %rsi     # 0x25156
movl %r12d, %edi
xorl %eax, %eax
callq 0x362c
jmp 0xf358
leaq 0x8(%rsp), %r12
movq %r12, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%r12), %rsi
leaq 0x15d5b(%rip), %rdi     # 0x25050
xorl %eax, %eax
callq 0x3030
movq %r12, %rdi
callq 0x3130
addq $0x4, %rbx
addl $-0x3, %r14d
leaq 0x10184(%rip), %rdi     # 0x1f497
pushq $0x1
popq %r12
pushq $0x10
popq %r8
movq %rbx, %rsi
movl %r14d, %edx
movl %r12d, %ecx
callq 0x4fc1
andq $0x0, 0x38(%r15)
movq 0x30(%r15), %rax
movb $0x0, (%rax)
leaq 0x8(%rsp), %rbx
movq %rbx, %rdi
movl %ebp, %esi
callq 0x4f51
movq (%rbx), %rdx
leaq 0x15d2f(%rip), %rsi     # 0x2507d
movl %r12d, %edi
xorl %eax, %eax
callq 0x362c
leaq 0x8(%rsp), %rdi
callq 0x3130
jmp 0xfb55
leaq 0x16e67(%rip), %rdi     # 0x261d5
jmp 0xf3e9
leaq 0x16df6(%rip), %rdi     # 0x2616d
jmp 0xf3e9
andl $0xf, %r14d
leaq 0x16e5b(%rip), %rdi     # 0x261df
jmp 0xf3fd
andl $0xf, %r14d
leaq 0x16e22(%rip), %rdi     # 0x261b3
jmp 0xf3fd
andl $0xf, %r14d
leaq 0x16daf(%rip), %rdi     # 0x2614d
jmp 0xf3fd
andl $0xf, %r14d
leaq 0x16db0(%rip), %rdi     # 0x2615b
jmp 0xf3fd
leaq 0x16de7(%rip), %rdi     # 0x2619b
jmp 0xf3e9
andl $0xf, %r14d
leaq 0x16d7e(%rip), %rdi     # 0x2613f
jmp 0xf3fd
andl $0xf, %r14d
leaq 0x16dac(%rip), %rdi     # 0x2617a
jmp 0xf3fd
leaq 0x1c1e9(%rip), %rdi     # 0x2b5c0
jmp 0xf3e9
leaq 0x16db4(%rip), %rdi     # 0x26194
jmp 0xf3e9
leaq 0x16de2(%rip), %rdi     # 0x261cb
xorl %eax, %eax
callq 0x3030
jmp 0xf407
andl $0xf, %r14d
leaq 0x16da5(%rip), %rdi     # 0x261a2
movl %r14d, %esi
xorl %eax, %eax
callq 0x3030
pushq $0xa
popq %rdi
callq 0x3340
movzbl 0x2(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
andl $0xf, %edx
leaq 0x16dd4(%rip), %rdi     # 0x261f6
xorl %eax, %eax
callq 0x3030
leaq 0x16ded(%rip), %rdi     # 0x2621d
xorl %eax, %eax
callq 0x3030
movzbl 0x3(%rbx), %eax
cmpq $0x3, %rax
ja 0xf451
leaq 0x14a38(%rip), %rcx     # 0x23e80
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0xf458
leaq 0x1c168(%rip), %rdi     # 0x2b5c0
callq 0x33b0
movzbl 0x4(%rbx), %esi
shrl $0x2, %esi
leaq 0x16dd3(%rip), %rdi     # 0x2623e
xorl %eax, %eax
callq 0x3030
movzbl 0x4(%rbx), %eax
andl $0x3, %eax
shll $0x8, %eax
movzbl 0x5(%rbx), %esi
orl %eax, %esi
leaq 0x16dda(%rip), %rdi     # 0x26263
xorl %eax, %eax
callq 0x3030
movzwl 0x6(%rbx), %esi
movzwl 0x8(%rbx), %edx
leaq 0x16de9(%rip), %rdi     # 0x26288
xorl %eax, %eax
callq 0x3030
movzbl 0xa(%rbx), %eax
addl $0x64, %eax
cvtsi2sd %eax, %xmm0
divsd 0xab67(%rip), %xmm0     # 0x1a020
leaq 0x19be0(%rip), %rdi     # 0x290a0
movb $0x1, %al
callq 0x3030
movzbl 0xb(%rbx), %r14d
leaq 0x19be7(%rip), %rdi     # 0x290ba
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
shrl $0x6, %eax
leaq 0x149a9(%rip), %rcx     # 0x23e90
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x33b0
leaq 0x19bdc(%rip), %rdi     # 0x290d6
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
shrl $0x2, %eax
andl $0xc, %eax
leaq 0x14a0f(%rip), %rcx     # 0x23f20
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x33b0
leaq 0x19bce(%rip), %rdi     # 0x290f2
xorl %eax, %eax
callq 0x3030
movl %r14d, %eax
andl $0xc, %eax
leaq 0x14968(%rip), %rcx     # 0x23ea0
movslq (%rax,%rcx), %rdi
addq %rcx, %rdi
callq 0x33b0
leaq 0x19bc3(%rip), %rdi     # 0x2910e
xorl %eax, %eax
callq 0x3030
andl $0x3, %r14d
leaq 0x1148f(%rip), %rax     # 0x209ec
movslq (%rax,%r14,4), %rcx
addq %rax, %rcx
jmpq *%rcx
leaq 0x18830(%rip), %rdi     # 0x27d9d
jmp 0xf59d
leaq 0x18606(%rip), %rdi     # 0x27b7c
jmp 0xf59d
leaq 0x1c041(%rip), %rdi     # 0x2b5c0
callq 0x33b0
leaq 0x16d24(%rip), %rsi     # 0x262af
xorl %edi, %edi
xorl %eax, %eax
callq 0x362c
jmp 0xf5a2
leaq 0x18629(%rip), %rdi     # 0x27bc6
callq 0x33b0
leaq 0x16d34(%rip), %rdi     # 0x262dd
xorl %eax, %eax
callq 0x3030
movzbl 0xc(%rbx), %eax
cmpq $0xc, %rax
ja 0xf5ca
leaq 0x148ef(%rip), %rcx     # 0x23eb0
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
jmp 0xf5d1
leaq 0x1bfef(%rip), %rdi     # 0x2b5c0
callq 0x33b0
movzbl 0xd(%rbx), %eax
cvtsi2sd %eax, %xmm0
movsd 0xaa3a(%rip), %xmm2     # 0x1a020
divsd %xmm2, %xmm0
movzbl 0xe(%rbx), %eax
cvtsi2sd %eax, %xmm1
divsd %xmm2, %xmm1
leaq 0x16cfb(%rip), %rdi     # 0x262f8
movb $0x2, %al
callq 0x3030
movzbl 0xf(%rbx), %ebp
leaq 0x16d26(%rip), %rdi     # 0x26335
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x148c2(%rip), %rcx     # 0x23ee4
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x33b0
testb $0x20, %bpl
leaq 0x16d26(%rip), %r12     # 0x2635f
leaq 0x16d1b(%rip), %r15     # 0x2635b
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x16cf7(%rip), %rdi     # 0x26345
xorl %eax, %eax
callq 0x3030
testb $0x10, %bpl
leaq 0xb629(%rip), %r14      # 0x1ac89
leaq 0x1c72d(%rip), %rsi     # 0x2bd94
cmoveq %r14, %rsi
leaq 0x16cf0(%rip), %rdi     # 0x26362
xorl %eax, %eax
callq 0x3030
testb $0x8, %bpl
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x16cf4(%rip), %rdi     # 0x2637f
xorl %eax, %eax
callq 0x3030
movzbl 0x10(%rbx), %ebp
testb %bpl, %bpl
movq %r15, %rsi
cmovnsq %r12, %rsi
leaq 0x16cef(%rip), %rdi     # 0x26396
xorl %eax, %eax
callq 0x3030
testb $0x40, %bpl
movq %r15, %rsi
cmoveq %r12, %rsi
leaq 0x16ced(%rip), %rdi     # 0x263ad
xorl %eax, %eax
callq 0x3030
testb $0x20, %bpl
cmoveq %r12, %r15
leaq 0x16cff(%rip), %rdi     # 0x263d5
movq %r15, %rsi
xorl %eax, %eax
callq 0x3030
movb 0x11(%rbx), %al
testb %al, %al
je 0xf70a
leaq 0xbc7c(%rip), %rcx      # 0x1b36a
cmovnsq %rcx, %r14
addb %al, %al
movzbl %al, %edx
leaq 0x16cf5(%rip), %rdi     # 0x263f3
movq %r14, %rsi
xorl %eax, %eax
callq 0x3030
jmp 0xf716
leaq 0x186b5(%rip), %rdi     # 0x27dc6
callq 0x33b0
movzbl 0x12(%rbx), %ebp
leaq 0x16cec(%rip), %rdi     # 0x2640d
xorl %eax, %eax
callq 0x3030
movl %ebp, %eax
shrl $0x6, %eax
leaq 0x147c0(%rip), %rcx     # 0x23ef4
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x33b0
movzbl 0x13(%rbx), %esi
andl $0x3f, %ebp
je 0xf75b
leaq 0x16cde(%rip), %rdi     # 0x2642e
movl %ebp, %edx
xorl %eax, %eax
callq 0x3030
jmp 0xf769
leaq 0x16cf5(%rip), %rdi     # 0x26457
xorl %eax, %eax
callq 0x3030
movzbl 0x14(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
incl %esi
andl $0xf, %edx
incl %edx
leaq 0x16cf7(%rip), %rdi     # 0x26477
xorl %eax, %eax
callq 0x3030
movb 0x16(%rbx), %bpl
andb $0x3, %bpl
je 0xf868
leaq 0x18694(%rip), %rdi     # 0x27e30
callq 0x33b0
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 0x16cd3(%rip), %rdi     # 0x264aa
xorl %eax, %eax
callq 0x3030
cmpb $0x1, %bpl
je 0xf868
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 0x16caf(%rip), %rdi     # 0x264cd
xorl %eax, %eax
callq 0x3030
cmpb $0x3, %bpl
jne 0xf868
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 0x16c8f(%rip), %rdi     # 0x264f0
xorl %eax, %eax
callq 0x3030
movzbl 0x1d(%rbx), %edx
testb %dl, %dl
leaq 0x16cca(%rip), %rax     # 0x2653f
leaq 0x16cb4(%rip), %rsi     # 0x26530
cmovnsq %rax, %rsi
andl $0x7f, %edx
leaq 0x16c89(%rip), %rdi     # 0x26513
xorl %eax, %eax
callq 0x3030
movzbl 0x1e(%rbx), %edx
movl %edx, %esi
shrl $0x4, %esi
andl $0xf, %edx
leaq 0x16caa(%rip), %rdi     # 0x2654e
xorl %eax, %eax
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
jmp 0x3030
testb $0x2, (%r15)
je 0xf8ce
leaq 0x18137(%rip), %rdi     # 0x27a00
callq 0x33b0
testb $0x4, 0x5(%rbx)
je 0xf8e0
leaq 0x181af(%rip), %rdi     # 0x27a8a
callq 0x33b0
movzbl 0x4(%rbx), %esi
shrl $0x2, %esi
andl $0x7, %esi
addl $0x2, %esi
leaq 0x16678(%rip), %rdi     # 0x25f6c
xorl %eax, %eax
callq 0x3030
movzbl 0x5(%rbx), %eax
andl $0x3, %eax
imull $0x19, %eax, %esi
addl $0x19, %esi
leaq 0x1677f(%rip), %rdi     # 0x2608e
xorl %eax, %eax
callq 0x3030
leaq 0x16791(%rip), %rdi     # 0x260ae
xorl %eax, %eax
callq 0x3030
movzbl 0x6(%rbx), %eax
andl $0x3, %eax
leaq 0x14532(%rip), %rcx     # 0x23e64
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x33b0
leaq 0x16779(%rip), %rdi     # 0x260be
xorl %eax, %eax
callq 0x3030
movzbl 0x7(%rbx), %eax
andl $0x1, %eax
movzbl 0x8(%rbx), %ecx
andl $0x1, %ecx
leal (%rcx,%rax,2), %eax
leaq 0x145ac(%rip), %rcx     # 0x23f10
movslq (%rcx,%rax,4), %rdi
addq %rcx, %rdi
callq 0x33b0
movzbl 0x5(%rbx), %eax
shrl $0x3, %eax
imull $0x14, %eax, %esi
leaq 0x16758(%rip), %rdi     # 0x260d9
xorl %eax, %eax
callq 0x3030
movzbl 0x6(%rbx), %eax
shrl $0x3, %eax
imull $0x41, %eax, %esi
addl $0x807, %esi            # imm = 0x807
leaq 0x16754(%rip), %rdi     # 0x260f3
xorl %eax, %eax
callq 0x3030
movb 0x9(%rbx), %al
movb 0xa(%rbx), %cl
shrb $0x3, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movsd 0x145a2(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
addsd 0x1459e(%rip), %xmm0    # 0x23f68
shrb $0x3, %cl
movzbl %cl, %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm2, %xmm1
addsd 0x14590(%rip), %xmm1    # 0x23f70
leaq 0x1664a(%rip), %rdi     # 0x26031
movb $0x2, %al
callq 0x3030
movb 0x7(%rbx), %al
movb 0x8(%rbx), %cl
shrb %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
shrb %cl
movzbl %cl, %eax
cvtsi2sd %eax, %xmm1
movsd 0x14552(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm1
addsd 0xa5f2(%rip), %xmm1     # 0x1a010
leaq 0x1662b(%rip), %rdi     # 0x26050
movb $0x2, %al
callq 0x3030
movb 0x9(%rbx), %al
andb $0x7, %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
movb 0xa(%rbx), %al
movsd 0x1451d(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
addsd 0x14529(%rip), %xmm0    # 0x23f78
andb $0x7, %al
movzbl %al, %eax
jmp 0xfb37
leaq 0x1bb60(%rip), %rdi     # 0x2b5c0
xorl %eax, %eax
callq 0x3030
leaq 0x16e3f(%rip), %rdi     # 0x268ad
callq 0x33b0
jmp 0xf407
movzbl 0xa(%rbx), %eax
movl %eax, %ecx
shrl $0x3, %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x144d3(%rip), %xmm1    # 0x23f60
mulsd %xmm1, %xmm0
movapd %xmm1, %xmm2
addsd 0x144cb(%rip), %xmm0    # 0x23f68
andl $0x7, %eax
movzbl 0x8(%rbx), %ecx
andl $0x1, %ecx
leal (%rcx,%rax,4), %eax
movzbl 0x9(%rbx), %ecx
andl $0x1, %ecx
leal (%rax,%rcx,2), %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm2, %xmm1
addsd 0x144ac(%rip), %xmm1    # 0x23f70
leaq 0x16566(%rip), %rdi     # 0x26031
movb $0x2, %al
callq 0x3030
movb 0x8(%rbx), %al
movb 0x9(%rbx), %cl
shrb %al
movzbl %al, %eax
cvtsi2sd %eax, %xmm0
shrb %cl
movzbl %cl, %eax
cvtsi2sd %eax, %xmm1
movsd 0x1446e(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
mulsd %xmm2, %xmm1
addsd 0xa50e(%rip), %xmm1     # 0x1a010
leaq 0x16547(%rip), %rdi     # 0x26050
movb $0x2, %al
callq 0x3030
movzbl 0x7(%rbx), %eax
movl %eax, %ecx
shrl $0x5, %ecx
cvtsi2sd %ecx, %xmm0
movsd 0x1443b(%rip), %xmm2    # 0x23f60
mulsd %xmm2, %xmm0
addsd 0x14447(%rip), %xmm0    # 0x23f78
shrl $0x2, %eax
andl $0x7, %eax
cvtsi2sd %eax, %xmm1
mulsd %xmm2, %xmm1
addsd 0x14401(%rip), %xmm1    # 0x23f48
leaq 0x16521(%rip), %rdi     # 0x2606f
movb $0x2, %al
callq 0x3030
addq $0x88, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
jmp 0xfb69
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
jmp 0xfbf1
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3130
jmp 0xfb94
movq %rax, %rbx
leaq 0x8(%rsp), %rdi
callq 0x3130
jmp 0xfba3
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3130
jmp 0xfbb2
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3130
jmp 0xfbb7
movq %rax, %rbx
jmp 0xfbb7
movq %rax, %rbx
leaq 0x68(%rsp), %rdi
jmp 0xfbdd
jmp 0xfbe9
jmp 0xfbe9
jmp 0xfbfa
jmp 0xfbfa
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3130
jmp 0xfbe7
movq %rax, %rbx
leaq 0x28(%rsp), %rdi
callq 0x3130
jmp 0xfbec
movq %rax, %rbx
jmp 0xfbec
movq %rax, %rbx
leaq 0x48(%rsp), %rdi
callq 0x3130
jmp 0xfbfd
jmp 0xfbfa
movq %rax, %rbx
movq %rbx, %rdi
callq 0x3430