// File: rpavlik[P]edid-decode/parse-displayid-block.cpp
// Function: edid_state::parse_displayid_display_device(unsigned char const*)
void edid_state::parse_displayid_display_device(const unsigned char *x)
{
	check_displayid_datablock_revision(x[1]);

	if (!check_displayid_datablock_length(x, 13, 13))
		return;

	printf("    Display Device Technology: ");
	switch (x[3]) {
	case 0x00: printf("Monochrome CRT\n"); break;
	case 0x01: printf("Standard tricolor CRT\n"); break;
	case 0x02: printf("Other/undefined CRT\n"); break;
	case 0x10: printf("Passive matrix TN\n"); break;
	case 0x11: printf("Passive matrix cholesteric LC\n"); break;
	case 0x12: printf("Passive matrix ferroelectric LC\n"); break;
	case 0x13: printf("Other passive matrix LC type\n"); break;
	case 0x14: printf("Active-matrix TN\n"); break;
	case 0x15: printf("Active-matrix IPS (all types)\n"); break;
	case 0x16: printf("Active-matrix VA (all types)\n"); break;
	case 0x17: printf("Active-matrix OCB\n"); break;
	case 0x18: printf("Active-matrix ferroelectric\n"); break;
	case 0x1f: printf("Other LC type\n"); break;
	case 0x20: printf("DC plasma\n"); break;
	case 0x21: printf("AC plasma\n"); break;
	}
	switch (x[3] & 0xf0) {
	case 0x30: printf("Electroluminescent, except OEL/OLED\n"); break;
	case 0x40: printf("Inorganic LED\n"); break;
	case 0x50: printf("Organic LED/OEL\n"); break;
	case 0x60: printf("FED or sim. \"cold-cathode,\" phosphor-based types\n"); break;
	case 0x70: printf("Electrophoretic\n"); break;
	case 0x80: printf("Electrochromic\n"); break;
	case 0x90: printf("Electromechanical\n"); break;
	case 0xa0: printf("Electrowetting\n"); break;
	case 0xf0: printf("Other type not defined here\n"); break;
	}
	printf("    Display operating mode: ");
	switch (x[4] >> 4) {
	case 0x00: printf("Direct-view reflective, ambient light\n"); break;
	case 0x01: printf("Direct-view reflective, ambient light, also has light source\n"); break;
	case 0x02: printf("Direct-view reflective, uses light source\n"); break;
	case 0x03: printf("Direct-view transmissive, ambient light\n"); break;
	case 0x04: printf("Direct-view transmissive, ambient light, also has light source\n"); break;
	case 0x05: printf("Direct-view transmissive, uses light source\n"); break;
	case 0x06: printf("Direct-view emissive\n"); break;
	case 0x07: printf("Direct-view transflective, backlight off by default\n"); break;
	case 0x08: printf("Direct-view transflective, backlight on by default\n"); break;
	case 0x09: printf("Transparent display, ambient light\n"); break;
	case 0x0a: printf("Transparent emissive display\n"); break;
	case 0x0b: printf("Projection device using reflective light modulator\n"); break;
	case 0x0c: printf("Projection device using transmissive light modulator\n"); break;
	case 0x0d: printf("Projection device using emissive image transducer\n"); break;
	default: printf("Reserved\n"); break;
	}
	if (x[4] & 0x08)
		printf("    The backlight may be switched on and off\n");
	if (x[4] & 0x04)
		printf("    The backlight's intensity can be controlled\n");
	unsigned w = x[5] | (x[6] << 8);
	unsigned h = x[7] | (x[8] << 8);
	if (w && h) {
		printf("    Display native pixel format: %ux%u\n", w + 1, h + 1);
		dispid.native_width = w + 1;
		dispid.native_height = h + 1;
	} else if (w || h) {
		fail("Invalid Native Pixel Format %ux%u.\n", w, h);
	}
	printf("    Aspect ratio and orientation:\n");
	printf("      Aspect Ratio: %.2f\n", (100 + x[9]) / 100.0);
	unsigned char v = x[0x0a];
	printf("      Default Orientation: ");
	switch ((v & 0xc0) >> 6) {
	case 0x00: printf("Landscape\n"); break;
	case 0x01: printf("Portrait\n"); break;
	case 0x02: printf("Not Fixed\n"); break;
	case 0x03: printf("Undefined\n"); break;
	}
	printf("      Rotation Capability: ");
	switch ((v & 0x30) >> 4) {
	case 0x00: printf("None\n"); break;
	case 0x01: printf("Can rotate 90 degrees clockwise\n"); break;
	case 0x02: printf("Can rotate 90 degrees counterclockwise\n"); break;
	case 0x03: printf("Can rotate 90 degrees in either direction)\n"); break;
	}
	printf("      Zero Pixel Location: ");
	switch ((v & 0x0c) >> 2) {
	case 0x00: printf("Upper Left\n"); break;
	case 0x01: printf("Upper Right\n"); break;
	case 0x02: printf("Lower Left\n"); break;
	case 0x03: printf("Lower Right\n"); break;
	}
	printf("      Scan Direction: ");
	switch (v & 0x03) {
	case 0x00: printf("Not defined\n"); break;
	case 0x01: printf("Fast Scan is on the Major (Long) Axis and Slow Scan is on the Minor Axis\n"); break;
	case 0x02: printf("Fast Scan is on the Minor (Short) Axis and Slow Scan is on the Major Axis\n"); break;
	case 0x03: printf("Reserved\n");
		   fail("Scan Direction used the reserved value 0x03.\n");
		   break;
	}
	printf("    Sub-pixel layout/configuration/shape: ");
	switch (x[0x0b]) {
	case 0x00: printf("Not defined\n"); break;
	case 0x01: printf("RGB vertical stripes\n"); break;
	case 0x02: printf("RGB horizontal stripes\n"); break;
	case 0x03: printf("Vertical stripes using primary order\n"); break;
	case 0x04: printf("Horizontal stripes using primary order\n"); break;
	case 0x05: printf("Quad sub-pixels, red at top left\n"); break;
	case 0x06: printf("Quad sub-pixels, red at bottom left\n"); break;
	case 0x07: printf("Delta (triad) RGB sub-pixels\n"); break;
	case 0x08: printf("Mosaic\n"); break;
	case 0x09: printf("Quad sub-pixels, RGB + 1 additional color\n"); break;
	case 0x0a: printf("Five sub-pixels, RGB + 2 additional colors\n"); break;
	case 0x0b: printf("Six sub-pixels, RGB + 3 additional colors\n"); break;
	case 0x0c: printf("Clairvoyante, Inc. PenTile Matrix (tm) layout\n"); break;
	default: printf("Reserved\n"); break;
	}
	printf("    Horizontal and vertical dot/pixel pitch: %.2fx%.2f mm\n",
	       (double)(x[0x0c]) / 100.0, (double)(x[0x0d]) / 100.0);
	printf("    Color bit depth: %u\n", x[0x0e] & 0x0f);
	v = x[0x0f];
	printf("    Response time for %s transition: %u ms\n",
	       (v & 0x80) ? "white-to-black" : "black-to-white", v & 0x7f);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x80, %rsp
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0x28(%rbp)
movq -0x10(%rbp), %rax
xorl %ecx, %ecx
movzbl 0x1(%rax), %esi
movl %ecx, %edx
callq 0x21b00
movq -0x10(%rbp), %rdi
movl $0xd, %edx
xorl %ecx, %ecx
movl %edx, %esi
callq 0x21f90
testb $0x1, %al
jne 0x23cf7
jmp 0x2453f
leaq 0x1aa42(%rip), %rdi     # 0x3e740
xorl %eax, %eax
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0x3(%rax), %eax
movq %rax, -0x30(%rbp)
subq $0x21, %rax
ja 0x23e2f
movq -0x30(%rbp), %rax
leaq 0x19ec2(%rip), %rcx     # 0x3dbe8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1aa2a(%rip), %rdi     # 0x3e760
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa27(%rip), %rdi     # 0x3e770
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa2b(%rip), %rdi     # 0x3e787
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa2d(%rip), %rdi     # 0x3e79c
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa2d(%rip), %rdi     # 0x3e7af
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa39(%rip), %rdi     # 0x3e7ce
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa47(%rip), %rdi     # 0x3e7ef
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa55(%rip), %rdi     # 0x3e80d
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa57(%rip), %rdi     # 0x3e81f
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa66(%rip), %rdi     # 0x3e83e
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa74(%rip), %rdi     # 0x3e85c
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa77(%rip), %rdi     # 0x3e86f
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa84(%rip), %rdi     # 0x3e88c
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa83(%rip), %rdi     # 0x3e89b
movb $0x0, %al
callq 0x4050
jmp 0x23e2f
leaq 0x1aa7e(%rip), %rdi     # 0x3e8a6
movb $0x0, %al
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0x3(%rax), %eax
andl $-0x10, %eax
movl %eax, -0x34(%rbp)
subl $0x30, %eax
je 0x23ebb
jmp 0x23e44
movl -0x34(%rbp), %eax
subl $0x40, %eax
je 0x23ecb
jmp 0x23e4e
movl -0x34(%rbp), %eax
subl $0x50, %eax
je 0x23edb
jmp 0x23e5c
movl -0x34(%rbp), %eax
subl $0x60, %eax
je 0x23eeb
jmp 0x23e6a
movl -0x34(%rbp), %eax
subl $0x70, %eax
je 0x23efb
jmp 0x23e78
movl -0x34(%rbp), %eax
subl $0x80, %eax
je 0x23f0b
jmp 0x23e88
movl -0x34(%rbp), %eax
subl $0x90, %eax
je 0x23f1b
jmp 0x23e98
movl -0x34(%rbp), %eax
subl $0xa0, %eax
je 0x23f2b
jmp 0x23ea8
movl -0x34(%rbp), %eax
subl $0xf0, %eax
je 0x23f3b
jmp 0x23f49
leaq 0x1a9ef(%rip), %rdi     # 0x3e8b1
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa04(%rip), %rdi     # 0x3e8d6
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa03(%rip), %rdi     # 0x3e8e5
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa04(%rip), %rdi     # 0x3e8f6
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa26(%rip), %rdi     # 0x3e928
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa27(%rip), %rdi     # 0x3e939
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa27(%rip), %rdi     # 0x3e949
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa2a(%rip), %rdi     # 0x3e95c
movb $0x0, %al
callq 0x4050
jmp 0x23f49
leaq 0x1aa2a(%rip), %rdi     # 0x3e96c
movb $0x0, %al
callq 0x4050
leaq 0x1aa39(%rip), %rdi     # 0x3e989
xorl %eax, %eax
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0x4(%rax), %eax
shrl $0x4, %eax
movl %eax, %ecx
movq %rcx, -0x40(%rbp)
subl $0xd, %eax
ja 0x24077
movq -0x40(%rbp), %rax
leaq 0x19cf4(%rip), %rcx     # 0x3dc70
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1aa1a(%rip), %rdi     # 0x3e9a6
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aa2e(%rip), %rdi     # 0x3e9cd
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aa59(%rip), %rdi     # 0x3ea0b
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aa71(%rip), %rdi     # 0x3ea36
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aa87(%rip), %rdi     # 0x3ea5f
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aab4(%rip), %rdi     # 0x3ea9f
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aace(%rip), %rdi     # 0x3eacc
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aad4(%rip), %rdi     # 0x3eae2
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1aaf9(%rip), %rdi     # 0x3eb17
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1ab1d(%rip), %rdi     # 0x3eb4b
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1ab31(%rip), %rdi     # 0x3eb6f
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1ab3f(%rip), %rdi     # 0x3eb8d
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1ab63(%rip), %rdi     # 0x3ebc1
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1ab89(%rip), %rdi     # 0x3ebf7
movb $0x0, %al
callq 0x4050
jmp 0x24085
leaq 0x1b5a6(%rip), %rdi     # 0x3f624
movb $0x0, %al
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0x4(%rax), %eax
andl $0x8, %eax
cmpl $0x0, %eax
je 0x240a3
leaq 0x1ab8e(%rip), %rdi     # 0x3ec2a
movb $0x0, %al
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0x4(%rax), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x240c1
leaq 0x1ab9e(%rip), %rdi     # 0x3ec58
movb $0x0, %al
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0x5(%rax), %eax
movq -0x10(%rbp), %rcx
movzbl 0x6(%rcx), %ecx
shll $0x8, %ecx
orl %ecx, %eax
movl %eax, -0x14(%rbp)
movq -0x10(%rbp), %rax
movzbl 0x7(%rax), %eax
movq -0x10(%rbp), %rcx
movzbl 0x8(%rcx), %ecx
shll $0x8, %ecx
orl %ecx, %eax
movl %eax, -0x18(%rbp)
cmpl $0x0, -0x14(%rbp)
je 0x24135
cmpl $0x0, -0x18(%rbp)
je 0x24135
movl -0x14(%rbp), %esi
addl $0x1, %esi
movl -0x18(%rbp), %edx
addl $0x1, %edx
leaq 0x1ab79(%rip), %rdi     # 0x3ec89
movb $0x0, %al
callq 0x4050
movq -0x28(%rbp), %rax
movl -0x14(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, 0x940(%rax)
movl -0x18(%rbp), %ecx
addl $0x1, %ecx
movl %ecx, 0x944(%rax)
jmp 0x24159
cmpl $0x0, -0x14(%rbp)
jne 0x24141
cmpl $0x0, -0x18(%rbp)
je 0x24157
movl -0x14(%rbp), %edx
movl -0x18(%rbp), %ecx
xorl %edi, %edi
leaq 0x1ab61(%rip), %rsi     # 0x3ecb1
movb $0x0, %al
callq 0x47d0
jmp 0x24159
leaq 0x1ab75(%rip), %rdi     # 0x3ecd5
xorl %eax, %eax
movb %al, -0x49(%rbp)
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0x9(%rax), %eax
addl $0x64, %eax
cvtsi2sd %eax, %xmm0
movsd 0xaeb7(%rip), %xmm1     # 0x2f038
divsd %xmm1, %xmm0
leaq 0x1ab6c(%rip), %rdi     # 0x3ecf8
movb $0x1, %al
callq 0x4050
movb -0x49(%rbp), %al
movq -0x10(%rbp), %rcx
movb 0xa(%rcx), %cl
movb %cl, -0x19(%rbp)
leaq 0x1ab6b(%rip), %rdi     # 0x3ed12
callq 0x4050
movzbl -0x19(%rbp), %eax
shrl $0x6, %eax
movl %eax, %ecx
movq %rcx, -0x48(%rbp)
subl $0x3, %eax
ja 0x24210
movq -0x48(%rbp), %rax
leaq 0x19adf(%rip), %rcx     # 0x3dca8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x17b21(%rip), %rdi     # 0x3bcfa
movb $0x0, %al
callq 0x4050
jmp 0x24210
leaq 0x17b1c(%rip), %rdi     # 0x3bd05
movb $0x0, %al
callq 0x4050
jmp 0x24210
leaq 0x17b16(%rip), %rdi     # 0x3bd0f
movb $0x0, %al
callq 0x4050
jmp 0x24210
leaq 0x17b11(%rip), %rdi     # 0x3bd1a
movb $0x0, %al
callq 0x4050
leaq 0x1ab17(%rip), %rdi     # 0x3ed2e
xorl %eax, %eax
callq 0x4050
movzbl -0x19(%rbp), %eax
andl $0x30, %eax
shrl $0x4, %eax
movl %eax, %ecx
movq %rcx, -0x58(%rbp)
subl $0x3, %eax
ja 0x24285
movq -0x58(%rbp), %rax
leaq 0x19a7a(%rip), %rcx     # 0x3dcb8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x1e29c(%rip), %rdi     # 0x424ea
movb $0x0, %al
callq 0x4050
jmp 0x24285
leaq 0x17ac7(%rip), %rdi     # 0x3bd25
movb $0x0, %al
callq 0x4050
jmp 0x24285
leaq 0x17ad8(%rip), %rdi     # 0x3bd46
movb $0x0, %al
callq 0x4050
jmp 0x24285
leaq 0x17af0(%rip), %rdi     # 0x3bd6e
movb $0x0, %al
callq 0x4050
leaq 0x1aabe(%rip), %rdi     # 0x3ed4a
xorl %eax, %eax
callq 0x4050
movzbl -0x19(%rbp), %eax
andl $0xc, %eax
shrl $0x2, %eax
movl %eax, %ecx
movq %rcx, -0x60(%rbp)
subl $0x3, %eax
ja 0x242fa
movq -0x60(%rbp), %rax
leaq 0x19a15(%rip), %rcx     # 0x3dcc8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x17ad7(%rip), %rdi     # 0x3bd9a
movb $0x0, %al
callq 0x4050
jmp 0x242fa
leaq 0x17ad3(%rip), %rdi     # 0x3bda6
movb $0x0, %al
callq 0x4050
jmp 0x242fa
leaq 0x17ad0(%rip), %rdi     # 0x3bdb3
movb $0x0, %al
callq 0x4050
jmp 0x242fa
leaq 0x17acc(%rip), %rdi     # 0x3bdbf
movb $0x0, %al
callq 0x4050
leaq 0x1aa65(%rip), %rdi     # 0x3ed66
xorl %eax, %eax
callq 0x4050
movzbl -0x19(%rbp), %eax
andl $0x3, %eax
movl %eax, %ecx
movq %rcx, -0x68(%rbp)
subl $0x3, %eax
ja 0x2437c
movq -0x68(%rbp), %rax
leaq 0x199b3(%rip), %rcx     # 0x3dcd8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x17a97(%rip), %rdi     # 0x3bdcc
movb $0x0, %al
callq 0x4050
jmp 0x2437c
leaq 0x17a94(%rip), %rdi     # 0x3bdd9
movb $0x0, %al
callq 0x4050
jmp 0x2437c
leaq 0x17ace(%rip), %rdi     # 0x3be23
movb $0x0, %al
callq 0x4050
jmp 0x2437c
leaq 0x1b2bf(%rip), %rdi     # 0x3f624
movb $0x0, %al
callq 0x4050
xorl %edi, %edi
leaq 0x17af9(%rip), %rsi     # 0x3be6e
movb $0x0, %al
callq 0x47d0
leaq 0x1a9fa(%rip), %rdi     # 0x3ed7d
xorl %eax, %eax
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0xb(%rax), %eax
movq %rax, -0x70(%rbp)
subq $0xc, %rax
ja 0x24493
movq -0x70(%rbp), %rax
leaq 0x1993d(%rip), %rcx     # 0x3dce8
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
leaq 0x17a11(%rip), %rdi     # 0x3bdcc
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17ae9(%rip), %rdi     # 0x3beb7
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17aec(%rip), %rdi     # 0x3becd
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17af1(%rip), %rdi     # 0x3bee5
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b04(%rip), %rdi     # 0x3bf0b
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b19(%rip), %rdi     # 0x3bf33
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b2b(%rip), %rdi     # 0x3bf55
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b40(%rip), %rdi     # 0x3bf7a
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b4e(%rip), %rdi     # 0x3bf98
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b46(%rip), %rdi     # 0x3bfa0
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b61(%rip), %rdi     # 0x3bfcb
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b7d(%rip), %rdi     # 0x3bff7
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x17b98(%rip), %rdi     # 0x3c022
movb $0x0, %al
callq 0x4050
jmp 0x244a1
leaq 0x1b18a(%rip), %rdi     # 0x3f624
movb $0x0, %al
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0xc(%rax), %ecx
cvtsi2sd %ecx, %xmm0
movsd 0xab83(%rip), %xmm1     # 0x2f038
divsd %xmm1, %xmm0
movzbl 0xd(%rax), %eax
cvtsi2sd %eax, %xmm1
movsd 0xab6f(%rip), %xmm2     # 0x2f038
divsd %xmm2, %xmm1
leaq 0x1a8d4(%rip), %rdi     # 0x3eda8
movb $0x2, %al
callq 0x4050
movq -0x10(%rbp), %rax
movzbl 0xe(%rax), %esi
andl $0xf, %esi
leaq 0x1a8f6(%rip), %rdi     # 0x3ede3
movb $0x0, %al
callq 0x4050
movq -0x10(%rbp), %rax
movb 0xf(%rax), %al
movb %al, -0x19(%rbp)
movzbl -0x19(%rbp), %eax
andl $0x80, %eax
cmpl $0x0, %eax
je 0x24519
leaq 0x1a915(%rip), %rax     # 0x3ee28
movq %rax, -0x78(%rbp)
jmp 0x24526
leaq 0x1a917(%rip), %rax     # 0x3ee37
movq %rax, -0x78(%rbp)
jmp 0x24526
movq -0x78(%rbp), %rsi
movzbl -0x19(%rbp), %edx
andl $0x7f, %edx
leaq 0x1a8c4(%rip), %rdi     # 0x3edfc
movb $0x0, %al
callq 0x4050
addq $0x80, %rsp
popq %rbp
retq
nopl (%rax,%rax)