1400168ef:	4d 85 c0             	test   %r8,%r8
1400168f2:	75 09                	jne    0x1400168fd
1400168f4:	45 85 c9             	test   %r9d,%r9d
1400168f7:	0f 85 27 02 00 00    	jne    0x140016b24
1400168fd:	4c 63 02             	movslq (%rdx),%r8
140016900:	49 63 c1             	movslq %r9d,%rax
140016903:	4c 03 c3             	add    %rbx,%r8
140016906:	4c 8d 24 46          	lea    (%rsi,%rax,2),%r12
14001690a:	49 3b d8             	cmp    %r8,%rbx
14001690d:	0f 83 91 01 00 00    	jae    0x140016aa4
140016913:	48 8d 7e 02          	lea    0x2(%rsi),%rdi
140016917:	4c 8d 69 03          	lea    0x3(%rcx),%r13
14001691b:	48 8d 69 02          	lea    0x2(%rcx),%rbp
14001691f:	4c 8d 71 01          	lea    0x1(%rcx),%r14
140016923:	ba 01 00 00 00       	mov    $0x1,%edx
140016928:	4d 3b d4             	cmp    %r12,%r10
14001692b:	72 09                	jb     0x140016936
14001692d:	45 85 c9             	test   %r9d,%r9d
140016930:	0f 85 73 01 00 00    	jne    0x140016aa9
140016936:	41 8a 0b             	mov    (%r11),%cl
140016939:	84 c9                	test   %cl,%cl
14001693b:	78 19                	js     0x140016956
14001693d:	45 85 c9             	test   %r9d,%r9d
140016940:	74 07                	je     0x140016949
140016942:	0f b6 c1             	movzbl %cl,%eax
140016945:	66 41 89 02          	mov    %ax,(%r10)
140016949:	49 83 c2 02          	add    $0x2,%r10
14001694d:	48 83 c7 02          	add    $0x2,%rdi
140016951:	e9 33 01 00 00       	jmp    0x140016a89
140016956:	8a c1                	mov    %cl,%al
140016958:	24 e0                	and    $0xe0,%al
14001695a:	3c c0                	cmp    $0xc0,%al
14001695c:	75 42                	jne    0x1400169a0
14001695e:	4d 3b f0             	cmp    %r8,%r14
140016961:	0f 83 3d 01 00 00    	jae    0x140016aa4
140016967:	45 85 c9             	test   %r9d,%r9d
14001696a:	74 1a                	je     0x140016986
14001696c:	8a c1                	mov    %cl,%al
14001696e:	24 1f                	and    $0x1f,%al
140016970:	0f b6 d0             	movzbl %al,%edx
140016973:	41 8a 06             	mov    (%r14),%al
140016976:	24 3f                	and    $0x3f,%al
140016978:	66 c1 e2 06          	shl    $0x6,%dx
14001697c:	0f b6 c8             	movzbl %al,%ecx
14001697f:	66 0b d1             	or     %cx,%dx
140016982:	66 41 89 12          	mov    %dx,(%r10)
140016986:	b8 02 00 00 00       	mov    $0x2,%eax
14001698b:	49 83 c2 02          	add    $0x2,%r10
14001698f:	48 83 c7 02          	add    $0x2,%rdi
140016993:	8b c8                	mov    %eax,%ecx
140016995:	49 83 c3 02          	add    $0x2,%r11
140016999:	8b d0                	mov    %eax,%edx
14001699b:	e9 f2 00 00 00       	jmp    0x140016a92
1400169a0:	8a c1                	mov    %cl,%al
1400169a2:	24 f0                	and    $0xf0,%al
1400169a4:	3c e0                	cmp    $0xe0,%al
1400169a6:	75 46                	jne    0x1400169ee
1400169a8:	49 3b e8             	cmp    %r8,%rbp
1400169ab:	0f 83 f3 00 00 00    	jae    0x140016aa4
1400169b1:	45 85 c9             	test   %r9d,%r9d
1400169b4:	74 26                	je     0x1400169dc
1400169b6:	41 8a 06             	mov    (%r14),%al
1400169b9:	41 0f b6 13          	movzbl (%r11),%edx
1400169bd:	24 3f                	and    $0x3f,%al
1400169bf:	0f b6 c8             	movzbl %al,%ecx
1400169c2:	8a 45 00             	mov    0x0(%rbp),%al
1400169c5:	66 c1 e2 06          	shl    $0x6,%dx
1400169c9:	24 3f                	and    $0x3f,%al
1400169cb:	66 0b d1             	or     %cx,%dx
1400169ce:	0f b6 c8             	movzbl %al,%ecx
1400169d1:	66 c1 e2 06          	shl    $0x6,%dx
1400169d5:	66 0b d1             	or     %cx,%dx
1400169d8:	66 41 89 12          	mov    %dx,(%r10)
1400169dc:	49 83 c2 02          	add    $0x2,%r10
1400169e0:	ba 03 00 00 00       	mov    $0x3,%edx
1400169e5:	48 83 c7 02          	add    $0x2,%rdi
1400169e9:	e9 9b 00 00 00       	jmp    0x140016a89
1400169ee:	80 e1 f8             	and    $0xf8,%cl
1400169f1:	80 f9 f0             	cmp    $0xf0,%cl
1400169f4:	0f 85 8f 00 00 00    	jne    0x140016a89
1400169fa:	4d 3b e8             	cmp    %r8,%r13
1400169fd:	0f 83 a1 00 00 00    	jae    0x140016aa4
140016a03:	45 85 c9             	test   %r9d,%r9d
140016a06:	74 76                	je     0x140016a7e
140016a08:	49 3b fc             	cmp    %r12,%rdi
140016a0b:	0f 83 a2 00 00 00    	jae    0x140016ab3
140016a11:	41 8a 0e             	mov    (%r14),%cl
140016a14:	41 8a 03             	mov    (%r11),%al
140016a17:	24 07                	and    $0x7,%al
140016a19:	0f b6 d0             	movzbl %al,%edx
140016a1c:	8a c1                	mov    %cl,%al
140016a1e:	c0 e8 04             	shr    $0x4,%al
140016a21:	80 e1 0f             	and    $0xf,%cl
140016a24:	24 03                	and    $0x3,%al
140016a26:	66 c1 e2 02          	shl    $0x2,%dx
140016a2a:	0f b6 c0             	movzbl %al,%eax
140016a2d:	66 0b d0             	or     %ax,%dx
140016a30:	b8 60 ff 00 00       	mov    $0xff60,%eax
140016a35:	66 ff ca             	dec    %dx
140016a38:	66 0b d0             	or     %ax,%dx
140016a3b:	0f b6 c1             	movzbl %cl,%eax
140016a3e:	66 c1 e2 04          	shl    $0x4,%dx
140016a42:	66 0b d0             	or     %ax,%dx
140016a45:	8a 45 00             	mov    0x0(%rbp),%al
140016a48:	c0 e8 04             	shr    $0x4,%al
140016a4b:	24 03                	and    $0x3,%al
140016a4d:	66 c1 e2 02          	shl    $0x2,%dx
140016a51:	0f b6 c0             	movzbl %al,%eax
140016a54:	66 0b d0             	or     %ax,%dx
140016a57:	66 41 89 12          	mov    %dx,(%r10)
140016a5b:	8a 45 00             	mov    0x0(%rbp),%al
140016a5e:	24 0f                	and    $0xf,%al
140016a60:	0f b6 d0             	movzbl %al,%edx
140016a63:	b8 70 ff 00 00       	mov    $0xff70,%eax
140016a68:	66 0b d0             	or     %ax,%dx
140016a6b:	41 8a 45 00          	mov    0x0(%r13),%al
140016a6f:	24 3f                	and    $0x3f,%al
140016a71:	66 c1 e2 06          	shl    $0x6,%dx
140016a75:	0f b6 c8             	movzbl %al,%ecx
140016a78:	66 0b d1             	or     %cx,%dx
140016a7b:	66 89 17             	mov    %dx,(%rdi)
140016a7e:	ba 04 00 00 00       	mov    $0x4,%edx
140016a83:	4c 03 d2             	add    %rdx,%r10
140016a86:	48 03 fa             	add    %rdx,%rdi
140016a89:	48 8b ca             	mov    %rdx,%rcx
140016a8c:	48 8b c2             	mov    %rdx,%rax
140016a8f:	4c 03 da             	add    %rdx,%r11
140016a92:	4c 03 ea             	add    %rdx,%r13
140016a95:	48 03 e9             	add    %rcx,%rbp
140016a98:	4c 03 f0             	add    %rax,%r14
140016a9b:	4d 3b d8             	cmp    %r8,%r11
140016a9e:	0f 82 7f fe ff ff    	jb     0x140016923
140016aa4:	45 85 c9             	test   %r9d,%r9d
140016aa7:	74 34                	je     0x140016add
140016aa9:	4d 3b d4             	cmp    %r12,%r10
140016aac:	72 2f                	jb     0x140016add
140016aae:	4d 3b d8             	cmp    %r8,%r11
140016ab1:	73 2a                	jae    0x140016add
140016ab3:	b9 7a 00 00 00       	mov    $0x7a,%ecx
140016ab8:	ff 15 5a 85 05 00    	call   *0x5855a(%rip)        # 0x14006f018
140016abe:	33 c0                	xor    %eax,%eax
140016ac0:	48 8b 5c 24 50       	mov    0x50(%rsp),%rbx
140016ac5:	48 8b 6c 24 58       	mov    0x58(%rsp),%rbp
140016aca:	48 8b 74 24 60       	mov    0x60(%rsp),%rsi
140016acf:	48 83 c4 20          	add    $0x20,%rsp
140016ad3:	41 5f                	pop    %r15
140016ad5:	41 5e                	pop    %r14
140016ad7:	41 5d                	pop    %r13
140016ad9:	41 5c                	pop    %r12
140016adb:	5f                   	pop    %rdi
140016adc:	c3                   	ret
140016add:	44 2b db             	sub    %ebx,%r11d
140016ae0:	4c 2b d6             	sub    %rsi,%r10
140016ae3:	49 d1 fa             	sar    $1,%r10
140016ae6:	45 89 1f             	mov    %r11d,(%r15)
140016ae9:	78 0e                	js     0x140016af9
140016aeb:	49 81 fa ff ff ff 7f 	cmp    $0x7fffffff,%r10
140016af2:	77 05                	ja     0x140016af9
140016af4:	41 8b c2             	mov    %r10d,%eax
140016af7:	eb c7                	jmp    0x140016ac0
140016af9:	e8 b6 03 00 00       	call   0x140016eb4
140016afe:	cc                   	int3
140016aff:	33 d2                	xor    %edx,%edx
140016b01:	b9 d5 d3 48 00       	mov    $0x48d3d5,%ecx
140016b06:	e8 a5 be ff ff       	call   0x1400129b0
140016b0b:	cc                   	int3
140016b0c:	33 d2                	xor    %edx,%edx
140016b0e:	b9 8c c1 34 00       	mov    $0x34c18c,%ecx
140016b13:	e8 98 be ff ff       	call   0x1400129b0
140016b18:	cc                   	int3
140016b19:	b9 42 a2 10 00       	mov    $0x10a242,%ecx
140016b1e:	e8 8d be ff ff       	call   0x1400129b0
140016b23:	cc                   	int3
140016b24:	33 d2                	xor    %edx,%edx
140016b26:	b9 d6 d3 48 00       	mov    $0x48d3d6,%ecx
140016b2b:	e8 80 be ff ff       	call   0x1400129b0
140016b30:	cc                   	int3
140016b31:	90                   	nop
140016b32:	90                   	nop
140016b33:	90                   	nop
140016b34:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
140016b39:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
140016b3e:	48 89 7c 24 18       	mov    %rdi,0x18(%rsp)
140016b43:	41 57                	push   %r15
140016b45:	48 83 ec 20          	sub    $0x20,%rsp
140016b49:	45 33 c0             	xor    %r8d,%r8d
140016b4c:	49 8b d9             	mov    %r9,%rbx
140016b4f:	44 8b da             	mov    %edx,%r11d
140016b52:	4c 8b d1             	mov    %rcx,%r10
140016b55:	48 85 c9             	test   %rcx,%rcx
140016b58:	0f 84 d5 01 00 00    	je     0x140016d33
140016b5e:	44 8b 4c 24 50       	mov    0x50(%rsp),%r9d
140016b63:	85 d2                	test   %edx,%edx
140016b65:	0f 84 96 01 00 00    	je     0x140016d01
140016b6b:	41 8d 70 01          	lea    0x1(%r8),%esi
140016b6f:	41 bf 00 fc 00 00    	mov    $0xfc00,%r15d
140016b75:	45 3b c1             	cmp    %r9d,%r8d
140016b78:	7c 09                	jl     0x140016b83
140016b7a:	45 85 c9             	test   %r9d,%r9d
140016b7d:	0f 85 83 01 00 00    	jne    0x140016d06
140016b83:	41 0f b7 0a          	movzwl (%r10),%ecx
140016b87:	66 83 f9 7f          	cmp    $0x7f,%cx
140016b8b:	77 17                	ja     0x140016ba4
140016b8d:	45 85 c9             	test   %r9d,%r9d
140016b90:	0f 84 53 01 00 00    	je     0x140016ce9
140016b96:	41 8a 02             	mov    (%r10),%al
140016b99:	49 63 c8             	movslq %r8d,%rcx
140016b9c:	88 04 19             	mov    %al,(%rcx,%rbx,1)
140016b9f:	e9 45 01 00 00       	jmp    0x140016ce9
140016ba4:	b8 ff 07 00 00       	mov    $0x7ff,%eax
140016ba9:	66 41 39 02          	cmp    %ax,(%r10)
140016bad:	77 22                	ja     0x140016bd1
140016baf:	41 8d 40 02          	lea    0x2(%r8),%eax
140016bb3:	45 85 c9             	test   %r9d,%r9d
140016bb6:	0f 84 32 01 00 00    	je     0x140016cee
140016bbc:	41 3b c1             	cmp    %r9d,%eax
140016bbf:	0f 8f 3c 01 00 00    	jg     0x140016d01
140016bc5:	66 c1 e9 06          	shr    $0x6,%cx
140016bc9:	80 c9 c0             	or     $0xc0,%cl
140016bcc:	e9 00 01 00 00       	jmp    0x140016cd1
140016bd1:	0f b7 c1             	movzwl %cx,%eax
140016bd4:	ba 00 d8 00 00       	mov    $0xd800,%edx
140016bd9:	66 41 23 c7          	and    %r15w,%ax
140016bdd:	66 3b c2             	cmp    %dx,%ax
140016be0:	0f 85 bf 00 00 00    	jne    0x140016ca5
140016be6:	41 83 fb 02          	cmp    $0x2,%r11d
140016bea:	7c 18                	jl     0x140016c04
140016bec:	41 0f b7 42 02       	movzwl 0x2(%r10),%eax
140016bf1:	33 d2                	xor    %edx,%edx
140016bf3:	66 41 23 c7          	and    %r15w,%ax
140016bf7:	bf 00 dc 00 00       	mov    $0xdc00,%edi
140016bfc:	66 3b c7             	cmp    %di,%ax
140016bff:	0f 95 c2             	setne  %dl
140016c02:	eb 02                	jmp    0x140016c06
140016c04:	8b d6                	mov    %esi,%edx
140016c06:	85 d2                	test   %edx,%edx
140016c08:	0f 85 97 00 00 00    	jne    0x140016ca5
140016c0e:	41 83 fb 02          	cmp    $0x2,%r11d
140016c12:	0f 8c e9 00 00 00    	jl     0x140016d01
140016c18:	41 8d 40 04          	lea    0x4(%r8),%eax
140016c1c:	45 85 c9             	test   %r9d,%r9d
140016c1f:	74 77                	je     0x140016c98
140016c21:	41 3b c1             	cmp    %r9d,%eax
140016c24:	0f 8f d7 00 00 00    	jg     0x140016d01
140016c2a:	c1 e9 06             	shr    $0x6,%ecx
140016c2d:	83 e1 0f             	and    $0xf,%ecx
140016c30:	49 63 c0             	movslq %r8d,%rax
140016c33:	44 03 c6             	add    %esi,%r8d
140016c36:	8d 51 01             	lea    0x1(%rcx),%edx
140016c39:	8b ca                	mov    %edx,%ecx
140016c3b:	80 e2 03             	and    $0x3,%dl
140016c3e:	c1 e9 02             	shr    $0x2,%ecx
140016c41:	80 ca f8             	or     $0xf8,%dl
140016c44:	80 c9 f0             	or     $0xf0,%cl
140016c47:	c0 e2 04             	shl    $0x4,%dl
140016c4a:	88 0c 18             	mov    %cl,(%rax,%rbx,1)
140016c4d:	41 8a 0a             	mov    (%r10),%cl
140016c50:	c0 e9 02             	shr    $0x2,%cl
140016c53:	80 e1 0f             	and    $0xf,%cl
140016c56:	49 63 c0             	movslq %r8d,%rax
140016c59:	0a ca                	or     %dl,%cl
140016c5b:	44 03 c6             	add    %esi,%r8d
140016c5e:	88 0c 18             	mov    %cl,(%rax,%rbx,1)
140016c61:	41 0f b7 42 02       	movzwl 0x2(%r10),%eax
140016c66:	41 8a 0a             	mov    (%r10),%cl
140016c69:	80 e1 03             	and    $0x3,%cl
140016c6c:	66 c1 e8 06          	shr    $0x6,%ax
140016c70:	80 c9 f8             	or     $0xf8,%cl
140016c73:	24 0f                	and    $0xf,%al
140016c75:	c0 e1 04             	shl    $0x4,%cl
140016c78:	0a c8                	or     %al,%cl
140016c7a:	49 63 c0             	movslq %r8d,%rax
140016c7d:	44 03 c6             	add    %esi,%r8d
140016c80:	88 0c 18             	mov    %cl,(%rax,%rbx,1)
140016c83:	41 8a 4a 02          	mov    0x2(%r10),%cl
140016c87:	49 63 c0             	movslq %r8d,%rax
140016c8a:	80 e1 3f             	and    $0x3f,%cl
140016c8d:	80 c9 80             	or     $0x80,%cl
140016c90:	44 03 c6             	add    %esi,%r8d
140016c93:	88 0c 18             	mov    %cl,(%rax,%rbx,1)
140016c96:	eb 03                	jmp    0x140016c9b
140016c98:	44 8b c0             	mov    %eax,%r8d
140016c9b:	49 83 c2 04          	add    $0x4,%r10
140016c9f:	41 83 eb 02          	sub    $0x2,%r11d
140016ca3:	eb 53                	jmp    0x140016cf8
140016ca5:	41 8d 40 03          	lea    0x3(%r8),%eax
140016ca9:	45 85 c9             	test   %r9d,%r9d
140016cac:	74 40                	je     0x140016cee
140016cae:	41 3b c1             	cmp    %r9d,%eax
140016cb1:	7f 4e                	jg     0x140016d01
140016cb3:	66 c1 e9 0c          	shr    $0xc,%cx
140016cb7:	80 c9 e0             	or     $0xe0,%cl
140016cba:	49 63 c0             	movslq %r8d,%rax
140016cbd:	44 03 c6             	add    %esi,%r8d
140016cc0:	88 0c 18             	mov    %cl,(%rax,%rbx,1)
140016cc3:	41 0f b7 0a          	movzwl (%r10),%ecx
140016cc7:	66 c1 e9 06          	shr    $0x6,%cx
140016ccb:	80 e1 3f             	and    $0x3f,%cl
140016cce:	80 c9 80             	or     $0x80,%cl
140016cd1:	49 63 c0             	movslq %r8d,%rax
140016cd4:	44 03 c6             	add    %esi,%r8d
140016cd7:	88 0c 18             	mov    %cl,(%rax,%rbx,1)
140016cda:	41 8a 0a             	mov    (%r10),%cl
140016cdd:	49 63 c0             	movslq %r8d,%rax
140016ce0:	80 e1 3f             	and    $0x3f,%cl
140016ce3:	80 c9 80             	or     $0x80,%cl
140016ce6:	88 0c 18             	mov    %cl,(%rax,%rbx,1)
140016ce9:	44 03 c6             	add    %esi,%r8d
140016cec:	eb 03                	jmp    0x140016cf1
140016cee:	44 8b c0             	mov    %eax,%r8d
140016cf1:	49 83 c2 02          	add    $0x2,%r10
140016cf5:	44 2b de             	sub    %esi,%r11d
140016cf8:	45 85 db             	test   %r11d,%r11d
140016cfb:	0f 85 74 fe ff ff    	jne    0x140016b75
140016d01:	45 85 c9             	test   %r9d,%r9d
140016d04:	74 14                	je     0x140016d1a
140016d06:	45 85 db             	test   %r11d,%r11d
140016d09:	7e 0f                	jle    0x140016d1a
140016d0b:	b9 7a 00 00 00       	mov    $0x7a,%ecx
140016d10:	ff 15 02 83 05 00    	call   *0x58302(%rip)        # 0x14006f018
140016d16:	33 c0                	xor    %eax,%eax
140016d18:	eb 03                	jmp    0x140016d1d
140016d1a:	41 8b c0             	mov    %r8d,%eax
140016d1d:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
140016d22:	48 8b 74 24 38       	mov    0x38(%rsp),%rsi
140016d27:	48 8b 7c 24 40       	mov    0x40(%rsp),%rdi
140016d2c:	48 83 c4 20          	add    $0x20,%rsp
140016d30:	41 5f                	pop    %r15
140016d32:	c3                   	ret
140016d33:	33 d2                	xor    %edx,%edx
140016d35:	b9 59 96 65 01       	mov    $0x1659659,%ecx
140016d3a:	e8 71 bc ff ff       	call   0x1400129b0
140016d3f:	cc                   	int3
140016d40:	45 33 c9             	xor    %r9d,%r9d
140016d43:	eb 16                	jmp    0x140016d5b
140016d45:	41 83 f8 01          	cmp    $0x1,%r8d
140016d49:	7e 16                	jle    0x140016d61
140016d4b:	0f b6 c0             	movzbl %al,%eax
140016d4e:	48 ff c1             	inc    %rcx
140016d51:	66 89 02             	mov    %ax,(%rdx)
140016d54:	48 83 c2 02          	add    $0x2,%rdx
140016d58:	41 ff c8             	dec    %r8d
140016d5b:	8a 01                	mov    (%rcx),%al
140016d5d:	84 c0                	test   %al,%al
140016d5f:	75 e4                	jne    0x140016d45
140016d61:	45 85 c0             	test   %r8d,%r8d
140016d64:	7e 04                	jle    0x140016d6a
140016d66:	66 44 89 0a          	mov    %r9w,(%rdx)
140016d6a:	c3                   	ret
140016d6b:	90                   	nop