140016cae:	45 3b e5             	cmp    %r13d,%r12d
140016cb1:	0f 8d a3 00 00 00    	jge    0x140016d5a
140016cb7:	4d 85 ff             	test   %r15,%r15
140016cba:	74 06                	je     0x140016cc2
140016cbc:	41 88 0f             	mov    %cl,(%r15)
140016cbf:	49 ff c7             	inc    %r15
140016cc2:	41 ff c4             	inc    %r12d
140016cc5:	eb 70                	jmp    0x140016d37
140016cc7:	48 8d 84 24 80 00 00 	lea    0x80(%rsp),%rax
140016cce:	00
140016ccf:	41 b9 01 00 00 00    	mov    $0x1,%r9d
140016cd5:	48 89 44 24 38       	mov    %rax,0x38(%rsp)
140016cda:	4c 8d 84 24 88 00 00 	lea    0x88(%rsp),%r8
140016ce1:	00
140016ce2:	4c 89 5c 24 30       	mov    %r11,0x30(%rsp)
140016ce7:	48 8d 84 24 98 00 00 	lea    0x98(%rsp),%rax
140016cee:	00
140016cef:	c7 44 24 28 04 00 00 	movl   $0x4,0x28(%rsp)
140016cf6:	00
140016cf7:	33 d2                	xor    %edx,%edx
140016cf9:	8b cf                	mov    %edi,%ecx
140016cfb:	48 89 44 24 20       	mov    %rax,0x20(%rsp)
140016d00:	ff 15 2a b4 1f 00    	call   *0x1fb42a(%rip)        # 0x140212130
140016d06:	44 03 e0             	add    %eax,%r12d
140016d09:	45 3b e5             	cmp    %r13d,%r12d
140016d0c:	7f 4c                	jg     0x140016d5a
140016d0e:	45 33 db             	xor    %r11d,%r11d
140016d11:	45 85 ed             	test   %r13d,%r13d
140016d14:	74 21                	je     0x140016d37
140016d16:	4d 85 ff             	test   %r15,%r15
140016d19:	74 1c                	je     0x140016d37
140016d1b:	48 63 d8             	movslq %eax,%rbx
140016d1e:	48 8d 94 24 98 00 00 	lea    0x98(%rsp),%rdx
140016d25:	00
140016d26:	4c 8b c3             	mov    %rbx,%r8
140016d29:	49 8b cf             	mov    %r15,%rcx
140016d2c:	e8 bf ec 1e 00       	call   0x1402059f0
140016d31:	4c 03 fb             	add    %rbx,%r15
140016d34:	45 33 db             	xor    %r11d,%r11d
140016d37:	85 f6                	test   %esi,%esi
140016d39:	0f 85 49 ff ff ff    	jne    0x140016c88
140016d3f:	41 8b c4             	mov    %r12d,%eax
140016d42:	48 8b 9c 24 90 00 00 	mov    0x90(%rsp),%rbx
140016d49:	00
140016d4a:	48 83 c4 40          	add    $0x40,%rsp
140016d4e:	41 5f                	pop    %r15
140016d50:	41 5e                	pop    %r14
140016d52:	41 5d                	pop    %r13
140016d54:	41 5c                	pop    %r12
140016d56:	5f                   	pop    %rdi
140016d57:	5e                   	pop    %rsi
140016d58:	5d                   	pop    %rbp
140016d59:	c3                   	ret
140016d5a:	33 c0                	xor    %eax,%eax
140016d5c:	eb e4                	jmp    0x140016d42
140016d5e:	cc                   	int3
140016d5f:	90                   	nop
140016d60:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
140016d65:	48 89 6c 24 10       	mov    %rbp,0x10(%rsp)
140016d6a:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
140016d6f:	57                   	push   %rdi
140016d70:	41 54                	push   %r12
140016d72:	41 55                	push   %r13
140016d74:	41 56                	push   %r14
140016d76:	41 57                	push   %r15
140016d78:	48 83 ec 20          	sub    $0x20,%rsp
140016d7c:	49 8b f0             	mov    %r8,%rsi
140016d7f:	4c 8b fa             	mov    %rdx,%r15
140016d82:	48 8b d9             	mov    %rcx,%rbx
140016d85:	4c 8b d9             	mov    %rcx,%r11
140016d88:	4d 8b d0             	mov    %r8,%r10
140016d8b:	48 85 c9             	test   %rcx,%rcx
140016d8e:	0f 84 38 02 00 00    	je     0x140016fcc
140016d94:	48 85 d2             	test   %rdx,%rdx
140016d97:	0f 84 3c 02 00 00    	je     0x140016fd9
140016d9d:	83 3a 00             	cmpl   $0x0,(%rdx)
140016da0:	0f 8c 19 02 00 00    	jl     0x140016fbf
140016da6:	45 85 c9             	test   %r9d,%r9d
140016da9:	0f 88 10 02 00 00    	js     0x140016fbf
140016daf:	4d 85 c0             	test   %r8,%r8
140016db2:	75 09                	jne    0x140016dbd
140016db4:	45 85 c9             	test   %r9d,%r9d
140016db7:	0f 85 27 02 00 00    	jne    0x140016fe4
140016dbd:	4c 63 02             	movslq (%rdx),%r8
140016dc0:	49 63 c1             	movslq %r9d,%rax
140016dc3:	4c 03 c3             	add    %rbx,%r8
140016dc6:	4c 8d 24 46          	lea    (%rsi,%rax,2),%r12
140016dca:	49 3b d8             	cmp    %r8,%rbx
140016dcd:	0f 83 91 01 00 00    	jae    0x140016f64
140016dd3:	48 8d 7e 02          	lea    0x2(%rsi),%rdi
140016dd7:	4c 8d 69 03          	lea    0x3(%rcx),%r13
140016ddb:	48 8d 69 02          	lea    0x2(%rcx),%rbp
140016ddf:	4c 8d 71 01          	lea    0x1(%rcx),%r14
140016de3:	ba 01 00 00 00       	mov    $0x1,%edx
140016de8:	4d 3b d4             	cmp    %r12,%r10
140016deb:	72 09                	jb     0x140016df6
140016ded:	45 85 c9             	test   %r9d,%r9d
140016df0:	0f 85 73 01 00 00    	jne    0x140016f69
140016df6:	41 8a 0b             	mov    (%r11),%cl
140016df9:	84 c9                	test   %cl,%cl
140016dfb:	78 19                	js     0x140016e16
140016dfd:	45 85 c9             	test   %r9d,%r9d
140016e00:	74 07                	je     0x140016e09
140016e02:	0f b6 c1             	movzbl %cl,%eax
140016e05:	66 41 89 02          	mov    %ax,(%r10)
140016e09:	49 83 c2 02          	add    $0x2,%r10
140016e0d:	48 83 c7 02          	add    $0x2,%rdi
140016e11:	e9 33 01 00 00       	jmp    0x140016f49
140016e16:	8a c1                	mov    %cl,%al
140016e18:	24 e0                	and    $0xe0,%al
140016e1a:	3c c0                	cmp    $0xc0,%al
140016e1c:	75 42                	jne    0x140016e60
140016e1e:	4d 3b f0             	cmp    %r8,%r14
140016e21:	0f 83 3d 01 00 00    	jae    0x140016f64
140016e27:	45 85 c9             	test   %r9d,%r9d
140016e2a:	74 1a                	je     0x140016e46
140016e2c:	8a c1                	mov    %cl,%al
140016e2e:	24 1f                	and    $0x1f,%al
140016e30:	0f b6 d0             	movzbl %al,%edx
140016e33:	41 8a 06             	mov    (%r14),%al
140016e36:	24 3f                	and    $0x3f,%al
140016e38:	66 c1 e2 06          	shl    $0x6,%dx
140016e3c:	0f b6 c8             	movzbl %al,%ecx
140016e3f:	66 0b d1             	or     %cx,%dx
140016e42:	66 41 89 12          	mov    %dx,(%r10)
140016e46:	b8 02 00 00 00       	mov    $0x2,%eax
140016e4b:	49 83 c2 02          	add    $0x2,%r10
140016e4f:	48 83 c7 02          	add    $0x2,%rdi
140016e53:	8b c8                	mov    %eax,%ecx
140016e55:	49 83 c3 02          	add    $0x2,%r11
140016e59:	8b d0                	mov    %eax,%edx
140016e5b:	e9 f2 00 00 00       	jmp    0x140016f52
140016e60:	8a c1                	mov    %cl,%al
140016e62:	24 f0                	and    $0xf0,%al
140016e64:	3c e0                	cmp    $0xe0,%al
140016e66:	75 46                	jne    0x140016eae
140016e68:	49 3b e8             	cmp    %r8,%rbp
140016e6b:	0f 83 f3 00 00 00    	jae    0x140016f64
140016e71:	45 85 c9             	test   %r9d,%r9d
140016e74:	74 26                	je     0x140016e9c
140016e76:	41 8a 06             	mov    (%r14),%al
140016e79:	41 0f b6 13          	movzbl (%r11),%edx
140016e7d:	24 3f                	and    $0x3f,%al
140016e7f:	0f b6 c8             	movzbl %al,%ecx
140016e82:	8a 45 00             	mov    0x0(%rbp),%al
140016e85:	66 c1 e2 06          	shl    $0x6,%dx
140016e89:	24 3f                	and    $0x3f,%al
140016e8b:	66 0b d1             	or     %cx,%dx
140016e8e:	0f b6 c8             	movzbl %al,%ecx
140016e91:	66 c1 e2 06          	shl    $0x6,%dx
140016e95:	66 0b d1             	or     %cx,%dx
140016e98:	66 41 89 12          	mov    %dx,(%r10)
140016e9c:	49 83 c2 02          	add    $0x2,%r10
140016ea0:	ba 03 00 00 00       	mov    $0x3,%edx
140016ea5:	48 83 c7 02          	add    $0x2,%rdi
140016ea9:	e9 9b 00 00 00       	jmp    0x140016f49
140016eae:	80 e1 f8             	and    $0xf8,%cl
140016eb1:	80 f9 f0             	cmp    $0xf0,%cl
140016eb4:	0f 85 8f 00 00 00    	jne    0x140016f49
140016eba:	4d 3b e8             	cmp    %r8,%r13
140016ebd:	0f 83 a1 00 00 00    	jae    0x140016f64
140016ec3:	45 85 c9             	test   %r9d,%r9d
140016ec6:	74 76                	je     0x140016f3e
140016ec8:	49 3b fc             	cmp    %r12,%rdi
140016ecb:	0f 83 a2 00 00 00    	jae    0x140016f73
140016ed1:	41 8a 0e             	mov    (%r14),%cl
140016ed4:	41 8a 03             	mov    (%r11),%al
140016ed7:	24 07                	and    $0x7,%al
140016ed9:	0f b6 d0             	movzbl %al,%edx
140016edc:	8a c1                	mov    %cl,%al
140016ede:	c0 e8 04             	shr    $0x4,%al
140016ee1:	80 e1 0f             	and    $0xf,%cl
140016ee4:	24 03                	and    $0x3,%al
140016ee6:	66 c1 e2 02          	shl    $0x2,%dx
140016eea:	0f b6 c0             	movzbl %al,%eax
140016eed:	66 0b d0             	or     %ax,%dx
140016ef0:	b8 60 ff 00 00       	mov    $0xff60,%eax
140016ef5:	66 ff ca             	dec    %dx
140016ef8:	66 0b d0             	or     %ax,%dx
140016efb:	0f b6 c1             	movzbl %cl,%eax
140016efe:	66 c1 e2 04          	shl    $0x4,%dx
140016f02:	66 0b d0             	or     %ax,%dx
140016f05:	8a 45 00             	mov    0x0(%rbp),%al
140016f08:	c0 e8 04             	shr    $0x4,%al
140016f0b:	24 03                	and    $0x3,%al
140016f0d:	66 c1 e2 02          	shl    $0x2,%dx
140016f11:	0f b6 c0             	movzbl %al,%eax
140016f14:	66 0b d0             	or     %ax,%dx
140016f17:	66 41 89 12          	mov    %dx,(%r10)
140016f1b:	8a 45 00             	mov    0x0(%rbp),%al
140016f1e:	24 0f                	and    $0xf,%al
140016f20:	0f b6 d0             	movzbl %al,%edx
140016f23:	b8 70 ff 00 00       	mov    $0xff70,%eax
140016f28:	66 0b d0             	or     %ax,%dx
140016f2b:	41 8a 45 00          	mov    0x0(%r13),%al
140016f2f:	24 3f                	and    $0x3f,%al
140016f31:	66 c1 e2 06          	shl    $0x6,%dx
140016f35:	0f b6 c8             	movzbl %al,%ecx
140016f38:	66 0b d1             	or     %cx,%dx
140016f3b:	66 89 17             	mov    %dx,(%rdi)
140016f3e:	ba 04 00 00 00       	mov    $0x4,%edx
140016f43:	4c 03 d2             	add    %rdx,%r10
140016f46:	48 03 fa             	add    %rdx,%rdi
140016f49:	48 8b ca             	mov    %rdx,%rcx
140016f4c:	48 8b c2             	mov    %rdx,%rax
140016f4f:	4c 03 da             	add    %rdx,%r11
140016f52:	4c 03 ea             	add    %rdx,%r13
140016f55:	48 03 e9             	add    %rcx,%rbp
140016f58:	4c 03 f0             	add    %rax,%r14
140016f5b:	4d 3b d8             	cmp    %r8,%r11
140016f5e:	0f 82 7f fe ff ff    	jb     0x140016de3
140016f64:	45 85 c9             	test   %r9d,%r9d
140016f67:	74 34                	je     0x140016f9d
140016f69:	4d 3b d4             	cmp    %r12,%r10
140016f6c:	72 2f                	jb     0x140016f9d
140016f6e:	4d 3b d8             	cmp    %r8,%r11
140016f71:	73 2a                	jae    0x140016f9d
140016f73:	b9 7a 00 00 00       	mov    $0x7a,%ecx
140016f78:	ff 15 92 b0 1f 00    	call   *0x1fb092(%rip)        # 0x140212010
140016f7e:	33 c0                	xor    %eax,%eax
140016f80:	48 8b 5c 24 50       	mov    0x50(%rsp),%rbx
140016f85:	48 8b 6c 24 58       	mov    0x58(%rsp),%rbp
140016f8a:	48 8b 74 24 60       	mov    0x60(%rsp),%rsi
140016f8f:	48 83 c4 20          	add    $0x20,%rsp
140016f93:	41 5f                	pop    %r15
140016f95:	41 5e                	pop    %r14
140016f97:	41 5d                	pop    %r13
140016f99:	41 5c                	pop    %r12
140016f9b:	5f                   	pop    %rdi
140016f9c:	c3                   	ret
140016f9d:	44 2b db             	sub    %ebx,%r11d
140016fa0:	4c 2b d6             	sub    %rsi,%r10
140016fa3:	49 d1 fa             	sar    $1,%r10
140016fa6:	45 89 1f             	mov    %r11d,(%r15)
140016fa9:	78 0e                	js     0x140016fb9
140016fab:	49 81 fa ff ff ff 7f 	cmp    $0x7fffffff,%r10
140016fb2:	77 05                	ja     0x140016fb9
140016fb4:	41 8b c2             	mov    %r10d,%eax
140016fb7:	eb c7                	jmp    0x140016f80
140016fb9:	e8 06 58 ff ff       	call   0x14000c7c4
140016fbe:	cc                   	int3
140016fbf:	33 d2                	xor    %edx,%edx
140016fc1:	b9 d5 d3 48 00       	mov    $0x48d3d5,%ecx
140016fc6:	e8 19 43 ff ff       	call   0x14000b2e4
140016fcb:	cc                   	int3
140016fcc:	33 d2                	xor    %edx,%edx
140016fce:	b9 8c c1 34 00       	mov    $0x34c18c,%ecx
140016fd3:	e8 0c 43 ff ff       	call   0x14000b2e4
140016fd8:	cc                   	int3
140016fd9:	b9 42 a2 10 00       	mov    $0x10a242,%ecx
140016fde:	e8 01 43 ff ff       	call   0x14000b2e4
140016fe3:	cc                   	int3
140016fe4:	33 d2                	xor    %edx,%edx
140016fe6:	b9 d6 d3 48 00       	mov    $0x48d3d6,%ecx
140016feb:	e8 f4 42 ff ff       	call   0x14000b2e4
140016ff0:	cc                   	int3
140016ff1:	90                   	nop
140016ff2:	90                   	nop
140016ff3:	90                   	nop
140016ff4:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
140016ff9:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
140016ffe:	48 89 7c 24 18       	mov    %rdi,0x18(%rsp)
140017003:	41 54                	push   %r12
140017005:	48 83 ec 20          	sub    $0x20,%rsp
140017009:	45 33 d2             	xor    %r10d,%r10d
14001700c:	49 8b f8             	mov    %r8,%rdi
14001700f:	44 8b da             	mov    %edx,%r11d
140017012:	48 8b d9             	mov    %rcx,%rbx
140017015:	48 85 c9             	test   %rcx,%rcx
140017018:	0f 84 d9 01 00 00    	je     0x1400171f7
14001701e:	44 8b 44 24 50       	mov    0x50(%rsp),%r8d
140017023:	85 d2                	test   %edx,%edx
140017025:	0f 84 94 01 00 00    	je     0x1400171bf
14001702b:	41 bc 00 fc 00 00    	mov    $0xfc00,%r12d
140017031:	45 3b d0             	cmp    %r8d,%r10d
140017034:	7c 09                	jl     0x14001703f
140017036:	45 85 c0             	test   %r8d,%r8d
140017039:	0f 85 80 01 00 00    	jne    0x1400171bf
14001703f:	0f b7 0b             	movzwl (%rbx),%ecx
140017042:	66 83 f9 7f          	cmp    $0x7f,%cx
140017046:	77 17                	ja     0x14001705f
140017048:	45 85 c0             	test   %r8d,%r8d
14001704b:	0f 84 56 01 00 00    	je     0x1400171a7
140017051:	8a 03                	mov    (%rbx),%al
140017053:	49 63 ca             	movslq %r10d,%rcx
140017056:	42 88 04 09          	mov    %al,(%rcx,%r9,1)
14001705a:	e9 48 01 00 00       	jmp    0x1400171a7
14001705f:	b8 ff 07 00 00       	mov    $0x7ff,%eax
140017064:	66 39 03             	cmp    %ax,(%rbx)
140017067:	77 22                	ja     0x14001708b
140017069:	41 8d 42 02          	lea    0x2(%r10),%eax
14001706d:	45 85 c0             	test   %r8d,%r8d
140017070:	0f 84 36 01 00 00    	je     0x1400171ac
140017076:	41 3b c0             	cmp    %r8d,%eax
140017079:	0f 8f 40 01 00 00    	jg     0x1400171bf
14001707f:	66 c1 e9 06          	shr    $0x6,%cx
140017083:	80 c9 c0             	or     $0xc0,%cl
140017086:	e9 03 01 00 00       	jmp    0x14001718e
14001708b:	0f b7 c1             	movzwl %cx,%eax
14001708e:	ba 00 d8 00 00       	mov    $0xd800,%edx
140017093:	66 41 23 c4          	and    %r12w,%ax
140017097:	66 3b c2             	cmp    %dx,%ax
14001709a:	0f 85 c2 00 00 00    	jne    0x140017162
1400170a0:	33 d2                	xor    %edx,%edx
1400170a2:	41 83 fb 02          	cmp    $0x2,%r11d
1400170a6:	7c 15                	jl     0x1400170bd
1400170a8:	0f b7 43 02          	movzwl 0x2(%rbx),%eax
1400170ac:	be 00 dc 00 00       	mov    $0xdc00,%esi
1400170b1:	66 41 23 c4          	and    %r12w,%ax
1400170b5:	66 3b c6             	cmp    %si,%ax
1400170b8:	0f 95 c2             	setne  %dl
1400170bb:	eb 06                	jmp    0x1400170c3
1400170bd:	48 85 ff             	test   %rdi,%rdi
1400170c0:	0f 94 c2             	sete   %dl
1400170c3:	85 d2                	test   %edx,%edx
1400170c5:	0f 85 97 00 00 00    	jne    0x140017162
1400170cb:	41 83 fb 02          	cmp    $0x2,%r11d
1400170cf:	0f 8c ea 00 00 00    	jl     0x1400171bf
1400170d5:	41 8d 42 04          	lea    0x4(%r10),%eax
1400170d9:	45 85 c0             	test   %r8d,%r8d
1400170dc:	74 77                	je     0x140017155
1400170de:	41 3b c0             	cmp    %r8d,%eax
1400170e1:	0f 8f d8 00 00 00    	jg     0x1400171bf
1400170e7:	c1 e9 06             	shr    $0x6,%ecx
1400170ea:	83 e1 0f             	and    $0xf,%ecx
1400170ed:	49 63 c2             	movslq %r10d,%rax
1400170f0:	41 ff c2             	inc    %r10d
1400170f3:	8d 51 01             	lea    0x1(%rcx),%edx
1400170f6:	8b ca                	mov    %edx,%ecx
1400170f8:	80 e2 03             	and    $0x3,%dl
1400170fb:	c1 e9 02             	shr    $0x2,%ecx
1400170fe:	80 ca f8             	or     $0xf8,%dl
140017101:	80 c9 f0             	or     $0xf0,%cl
140017104:	c0 e2 04             	shl    $0x4,%dl
140017107:	42 88 0c 08          	mov    %cl,(%rax,%r9,1)
14001710b:	8a 0b                	mov    (%rbx),%cl
14001710d:	c0 e9 02             	shr    $0x2,%cl
140017110:	80 e1 0f             	and    $0xf,%cl
140017113:	49 63 c2             	movslq %r10d,%rax
140017116:	0a ca                	or     %dl,%cl
140017118:	41 ff c2             	inc    %r10d
14001711b:	42 88 0c 08          	mov    %cl,(%rax,%r9,1)
14001711f:	0f b7 43 02          	movzwl 0x2(%rbx),%eax
140017123:	8a 0b                	mov    (%rbx),%cl
140017125:	80 e1 03             	and    $0x3,%cl
140017128:	66 c1 e8 06          	shr    $0x6,%ax
14001712c:	80 c9 f8             	or     $0xf8,%cl
14001712f:	24 0f                	and    $0xf,%al
140017131:	c0 e1 04             	shl    $0x4,%cl
140017134:	0a c8                	or     %al,%cl