180103f72:	49 8b cd             	mov    %r13,%rcx
180103f75:	0f 49 fe             	cmovns %esi,%edi
180103f78:	8b f7                	mov    %edi,%esi
180103f7a:	2b fd                	sub    %ebp,%edi
180103f7c:	83 ff 01             	cmp    $0x1,%edi
180103f7f:	76 53                	jbe    0x180103fd4
180103f81:	d1 ef                	shr    $1,%edi
180103f83:	03 fd                	add    %ebp,%edi
180103f85:	4c 89 74 24 28       	mov    %r14,0x28(%rsp)
180103f8a:	44 8b cf             	mov    %edi,%r9d
180103f8d:	49 8b d4             	mov    %r12,%rdx
180103f90:	4c 89 7c 24 20       	mov    %r15,0x20(%rsp)
180103f95:	e8 ba 00 00 00       	call   0x180104054
180103f9a:	83 f8 02             	cmp    $0x2,%eax
180103f9d:	75 c8                	jne    0x180103f67
180103f9f:	48 8b 84 24 88 00 00 	mov    0x88(%rsp),%rax
180103fa6:	00
180103fa7:	41 83 0e ff          	orl    $0xffffffff,(%r14)
180103fab:	c7 00 00 00 00 80    	movl   $0x80000000,(%rax)
180103fb1:	b8 9a 00 00 c0       	mov    $0xc000009a,%eax
180103fb6:	48 8b 5c 24 60       	mov    0x60(%rsp),%rbx
180103fbb:	48 8b 6c 24 68       	mov    0x68(%rsp),%rbp
180103fc0:	48 8b 74 24 70       	mov    0x70(%rsp),%rsi
180103fc5:	48 83 c4 30          	add    $0x30,%rsp
180103fc9:	41 5f                	pop    %r15
180103fcb:	41 5e                	pop    %r14
180103fcd:	41 5d                	pop    %r13
180103fcf:	41 5c                	pop    %r12
180103fd1:	5f                   	pop    %rdi
180103fd2:	c3                   	ret
180103fd3:	cc                   	int3
180103fd4:	4c 89 74 24 28       	mov    %r14,0x28(%rsp)
180103fd9:	44 8b cd             	mov    %ebp,%r9d
180103fdc:	49 8b d4             	mov    %r12,%rdx
180103fdf:	4c 89 7c 24 20       	mov    %r15,0x20(%rsp)
180103fe4:	e8 6b 00 00 00       	call   0x180104054
180103fe9:	83 f8 02             	cmp    $0x2,%eax
180103fec:	74 b1                	je     0x180103f9f
180103fee:	85 c0                	test   %eax,%eax
180103ff0:	74 07                	je     0x180103ff9
180103ff2:	79 13                	jns    0x180104007
180103ff4:	bb 34 00 00 c0       	mov    $0xc0000034,%ebx
180103ff9:	48 8b 8c 24 88 00 00 	mov    0x88(%rsp),%rcx
180104000:	00
180104001:	8b c3                	mov    %ebx,%eax
180104003:	89 29                	mov    %ebp,(%rcx)
180104005:	eb af                	jmp    0x180103fb6
180104007:	4c 89 74 24 28       	mov    %r14,0x28(%rsp)
18010400c:	44 8b ce             	mov    %esi,%r9d
18010400f:	49 8b d4             	mov    %r12,%rdx
180104012:	4c 89 7c 24 20       	mov    %r15,0x20(%rsp)
180104017:	49 8b cd             	mov    %r13,%rcx
18010401a:	e8 35 00 00 00       	call   0x180104054
18010401f:	83 f8 02             	cmp    $0x2,%eax
180104022:	0f 84 77 ff ff ff    	je     0x180103f9f
180104028:	48 8b 8c 24 88 00 00 	mov    0x88(%rsp),%rcx
18010402f:	00
180104030:	f7 d8                	neg    %eax
180104032:	1b c0                	sbb    %eax,%eax
180104034:	25 34 00 00 c0       	and    $0xc0000034,%eax
180104039:	89 31                	mov    %esi,(%rcx)
18010403b:	e9 76 ff ff ff       	jmp    0x180103fb6
180104040:	48 8b 84 24 88 00 00 	mov    0x88(%rsp),%rax
180104047:	00
180104048:	89 38                	mov    %edi,(%rax)
18010404a:	33 c0                	xor    %eax,%eax
18010404c:	e9 65 ff ff ff       	jmp    0x180103fb6
180104051:	cc                   	int3
180104052:	cc                   	int3
180104053:	cc                   	int3
180104054:	48 8b c4             	mov    %rsp,%rax
180104057:	48 89 58 08          	mov    %rbx,0x8(%rax)
18010405b:	48 89 68 10          	mov    %rbp,0x10(%rax)
18010405f:	48 89 70 18          	mov    %rsi,0x18(%rax)
180104063:	48 89 78 20          	mov    %rdi,0x20(%rax)
180104067:	41 54                	push   %r12
180104069:	41 56                	push   %r14
18010406b:	41 57                	push   %r15
18010406d:	48 83 ec 20          	sub    $0x20,%rsp
180104071:	48 8b 5c 24 60       	mov    0x60(%rsp),%rbx
180104076:	4c 8b da             	mov    %rdx,%r11
180104079:	48 8b 74 24 68       	mov    0x68(%rsp),%rsi
18010407e:	ba 6c 66 00 00       	mov    $0x666c,%edx
180104083:	48 8b e9             	mov    %rcx,%rbp
180104086:	41 8b f9             	mov    %r9d,%edi
180104089:	b9 ff fd 00 00       	mov    $0xfdff,%ecx
18010408e:	44 0f b7 03          	movzwl (%rbx),%r8d
180104092:	83 0e ff             	orl    $0xffffffff,(%rsi)
180104095:	41 0f b7 c0          	movzwl %r8w,%eax
180104099:	66 2b c2             	sub    %dx,%ax
18010409c:	66 85 c1             	test   %ax,%cx
18010409f:	74 2e                	je     0x1801040cf
1801040a1:	44 8b 4c bb 04       	mov    0x4(%rbx,%rdi,4),%r9d
1801040a6:	49 8b d3             	mov    %r11,%rdx
1801040a9:	48 8b cd             	mov    %rbp,%rcx
1801040ac:	e8 f7 00 00 00       	call   0x1801041a8
1801040b1:	8b d0                	mov    %eax,%edx
1801040b3:	83 f8 02             	cmp    $0x2,%eax
1801040b6:	0f 84 ab 00 00 00    	je     0x180104167
1801040bc:	85 c0                	test   %eax,%eax
1801040be:	0f 85 bf 00 00 00    	jne    0x180104183
1801040c4:	8b 4c bb 04          	mov    0x4(%rbx,%rdi,4),%ecx
1801040c8:	89 0e                	mov    %ecx,(%rsi)
1801040ca:	e9 b4 00 00 00       	jmp    0x180104183
1801040cf:	66 44 3b c2          	cmp    %dx,%r8w
1801040d3:	75 7b                	jne    0x180104150
1801040d5:	b9 04 00 00 00       	mov    $0x4,%ecx
1801040da:	48 8d 53 08          	lea    0x8(%rbx),%rdx
1801040de:	33 c0                	xor    %eax,%eax
1801040e0:	48 8d 14 fa          	lea    (%rdx,%rdi,8),%rdx
1801040e4:	44 8d 61 fd          	lea    -0x3(%rcx),%r12d
1801040e8:	80 3a 00             	cmpb   $0x0,(%rdx)
1801040eb:	74 0c                	je     0x1801040f9
1801040ed:	41 03 c4             	add    %r12d,%eax
1801040f0:	49 03 d4             	add    %r12,%rdx
1801040f3:	3b c1                	cmp    %ecx,%eax
1801040f5:	72 f1                	jb     0x1801040e8
1801040f7:	eb 02                	jmp    0x1801040fb
1801040f9:	8b c8                	mov    %eax,%ecx
1801040fb:	41 0f b7 13          	movzwl (%r11),%edx
1801040ff:	d1 ea                	shr    $1,%edx
180104101:	3b d1                	cmp    %ecx,%edx
180104103:	0f 43 d1             	cmovae %ecx,%edx
180104106:	45 33 c9             	xor    %r9d,%r9d
180104109:	85 d2                	test   %edx,%edx
18010410b:	74 43                	je     0x180104150
18010410d:	4d 8b 73 08          	mov    0x8(%r11),%r14
180104111:	4c 8d 3c fb          	lea    (%rbx,%rdi,8),%r15
180104115:	47 0f b7 04 4e       	movzwl (%r14,%r9,2),%r8d
18010411a:	47 0f b6 54 0f 08    	movzbl 0x8(%r15,%r9,1),%r10d
180104120:	41 8b c8             	mov    %r8d,%ecx
180104123:	41 83 f8 61          	cmp    $0x61,%r8d
180104127:	72 09                	jb     0x180104132
180104129:	41 83 f8 7a          	cmp    $0x7a,%r8d
18010412d:	77 03                	ja     0x180104132
18010412f:	83 c1 e0             	add    $0xffffffe0,%ecx
180104132:	41 8b c2             	mov    %r10d,%eax
180104135:	41 80 fa 61          	cmp    $0x61,%r10b
180104139:	72 09                	jb     0x180104144
18010413b:	41 80 fa 7a          	cmp    $0x7a,%r10b
18010413f:	77 03                	ja     0x180104144
180104141:	83 c0 e0             	add    $0xffffffe0,%eax
180104144:	2b c8                	sub    %eax,%ecx
180104146:	75 26                	jne    0x18010416e
180104148:	45 03 cc             	add    %r12d,%r9d
18010414b:	44 3b ca             	cmp    %edx,%r9d
18010414e:	72 c5                	jb     0x180104115
180104150:	44 8b 4c fb 04       	mov    0x4(%rbx,%rdi,8),%r9d
180104155:	49 8b d3             	mov    %r11,%rdx
180104158:	48 8b cd             	mov    %rbp,%rcx
18010415b:	e8 48 00 00 00       	call   0x1801041a8
180104160:	8b d0                	mov    %eax,%edx
180104162:	83 f8 02             	cmp    $0x2,%eax
180104165:	75 12                	jne    0x180104179
180104167:	b8 02 00 00 00       	mov    $0x2,%eax
18010416c:	eb 17                	jmp    0x180104185
18010416e:	83 c8 ff             	or     $0xffffffff,%eax
180104171:	85 c9                	test   %ecx,%ecx
180104173:	41 0f 4f c4          	cmovg  %r12d,%eax
180104177:	eb 0c                	jmp    0x180104185
180104179:	85 c0                	test   %eax,%eax
18010417b:	75 06                	jne    0x180104183
18010417d:	8b 44 fb 04          	mov    0x4(%rbx,%rdi,8),%eax
180104181:	89 06                	mov    %eax,(%rsi)
180104183:	8b c2                	mov    %edx,%eax
180104185:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
18010418a:	48 8b 6c 24 48       	mov    0x48(%rsp),%rbp
18010418f:	48 8b 74 24 50       	mov    0x50(%rsp),%rsi
180104194:	48 8b 7c 24 58       	mov    0x58(%rsp),%rdi
180104199:	48 83 c4 20          	add    $0x20,%rsp
18010419d:	41 5f                	pop    %r15
18010419f:	41 5e                	pop    %r14
1801041a1:	41 5c                	pop    %r12
1801041a3:	c3                   	ret
1801041a4:	cc                   	int3
1801041a5:	cc                   	int3
1801041a6:	cc                   	int3
1801041a7:	cc                   	int3
1801041a8:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
1801041ad:	4c 89 44 24 18       	mov    %r8,0x18(%rsp)
1801041b2:	57                   	push   %rdi
1801041b3:	48 83 ec 30          	sub    $0x30,%rsp
1801041b7:	83 4c 24 50 ff       	orl    $0xffffffff,0x50(%rsp)
1801041bc:	4c 8d 44 24 50       	lea    0x50(%rsp),%r8
1801041c1:	33 c0                	xor    %eax,%eax
1801041c3:	48 8b da             	mov    %rdx,%rbx
1801041c6:	89 44 24 54          	mov    %eax,0x54(%rsp)
1801041ca:	41 8b d1             	mov    %r9d,%edx
1801041cd:	48 8b 41 08          	mov    0x8(%rcx),%rax
1801041d1:	48 8b f9             	mov    %rcx,%rdi
1801041d4:	ff d0                	call   *%rax
1801041d6:	0f 1f 00             	nopl   (%rax)
1801041d9:	48 85 c0             	test   %rax,%rax
1801041dc:	75 07                	jne    0x1801041e5
1801041de:	b8 02 00 00 00       	mov    $0x2,%eax
1801041e3:	eb 60                	jmp    0x180104245
1801041e5:	0f b7 48 48          	movzwl 0x48(%rax),%ecx
1801041e9:	4c 8d 50 4c          	lea    0x4c(%rax),%r10
1801041ed:	8a 40 02             	mov    0x2(%rax),%al
1801041f0:	a8 20                	test   $0x20,%al
1801041f2:	74 10                	je     0x180104204
1801041f4:	44 8b c1             	mov    %ecx,%r8d
1801041f7:	49 8b d2             	mov    %r10,%rdx
1801041fa:	48 8b cb             	mov    %rbx,%rcx
1801041fd:	e8 de b7 ff ff       	call   0x1800ff9e0
180104202:	eb 1d                	jmp    0x180104221
180104204:	0f b7 13             	movzwl (%rbx),%edx
180104207:	4c 8b c9             	mov    %rcx,%r9
18010420a:	48 8b 4b 08          	mov    0x8(%rbx),%rcx
18010420e:	4d 8b c2             	mov    %r10,%r8
180104211:	49 d1 e9             	shr    $1,%r9
180104214:	48 d1 ea             	shr    $1,%rdx
180104217:	c6 44 24 20 01       	movb   $0x1,0x20(%rsp)
18010421c:	e8 7b 97 f7 ff       	call   0x18007d99c
180104221:	8b d8                	mov    %eax,%ebx
180104223:	48 8d 54 24 50       	lea    0x50(%rsp),%rdx
180104228:	48 8b 47 10          	mov    0x10(%rdi),%rax
18010422c:	48 8b cf             	mov    %rdi,%rcx
18010422f:	ff d0                	call   *%rax
180104231:	0f 1f 00             	nopl   (%rax)
180104234:	85 db                	test   %ebx,%ebx
180104236:	75 04                	jne    0x18010423c
180104238:	33 c0                	xor    %eax,%eax
18010423a:	eb 09                	jmp    0x180104245
18010423c:	c1 fb 1f             	sar    $0x1f,%ebx
18010423f:	83 e3 fe             	and    $0xfffffffe,%ebx
180104242:	8d 43 01             	lea    0x1(%rbx),%eax
180104245:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
18010424a:	48 83 c4 30          	add    $0x30,%rsp
18010424e:	5f                   	pop    %rdi
18010424f:	c3                   	ret
180104250:	cc                   	int3
180104251:	cc                   	int3
180104252:	cc                   	int3
180104253:	cc                   	int3
180104254:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180104259:	48 89 6c 24 18       	mov    %rbp,0x18(%rsp)
18010425e:	56                   	push   %rsi
18010425f:	57                   	push   %rdi
180104260:	41 56                	push   %r14
180104262:	48 83 ec 20          	sub    $0x20,%rsp
180104266:	33 c0                	xor    %eax,%eax
180104268:	33 db                	xor    %ebx,%ebx
18010426a:	48 8b f9             	mov    %rcx,%rdi
18010426d:	89 44 24 4c          	mov    %eax,0x4c(%rsp)
180104271:	8b 42 14             	mov    0x14(%rdx),%eax
180104274:	83 c9 ff             	or     $0xffffffff,%ecx
180104277:	89 4c 24 48          	mov    %ecx,0x48(%rsp)
18010427b:	4d 8b f1             	mov    %r9,%r14
18010427e:	41 89 09             	mov    %ecx,(%r9)
180104281:	41 8b f0             	mov    %r8d,%esi
180104284:	8b eb                	mov    %ebx,%ebp
180104286:	44 3b c0             	cmp    %eax,%r8d
180104289:	73 23                	jae    0x1801042ae
18010428b:	8b 52 1c             	mov    0x1c(%rdx),%edx
18010428e:	48 8b 47 08          	mov    0x8(%rdi),%rax
180104292:	4c 8d 44 24 48       	lea    0x48(%rsp),%r8
180104297:	48 8b cf             	mov    %rdi,%rcx
18010429a:	ff d0                	call   *%rax
18010429c:	0f 1f 00             	nopl   (%rax)
18010429f:	48 8b e8             	mov    %rax,%rbp
1801042a2:	48 85 c0             	test   %rax,%rax
1801042a5:	75 1c                	jne    0x1801042c3
1801042a7:	bb 9a 00 00 c0       	mov    $0xc000009a,%ebx
1801042ac:	eb 3c                	jmp    0x1801042ea
1801042ae:	83 bf d0 00 00 00 01 	cmpl   $0x1,0xd0(%rdi)
1801042b5:	76 1d                	jbe    0x1801042d4
1801042b7:	2b f0                	sub    %eax,%esi
1801042b9:	3b 72 18             	cmp    0x18(%rdx),%esi
1801042bc:	73 2c                	jae    0x1801042ea
1801042be:	8b 52 20             	mov    0x20(%rdx),%edx
1801042c1:	eb cb                	jmp    0x18010428e
1801042c3:	44 8b c6             	mov    %esi,%r8d
1801042c6:	48 8b d5             	mov    %rbp,%rdx
1801042c9:	48 8b cf             	mov    %rdi,%rcx
1801042cc:	e8 2f 00 00 00       	call   0x180104300
1801042d1:	41 89 06             	mov    %eax,(%r14)
1801042d4:	48 85 ed             	test   %rbp,%rbp
1801042d7:	74 11                	je     0x1801042ea
1801042d9:	48 8b 47 10          	mov    0x10(%rdi),%rax
1801042dd:	48 8d 54 24 48       	lea    0x48(%rsp),%rdx
1801042e2:	48 8b cf             	mov    %rdi,%rcx
1801042e5:	ff d0                	call   *%rax
1801042e7:	0f 1f 00             	nopl   (%rax)
1801042ea:	48 8b 6c 24 50       	mov    0x50(%rsp),%rbp
1801042ef:	8b c3                	mov    %ebx,%eax
1801042f1:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
1801042f6:	48 83 c4 20          	add    $0x20,%rsp
1801042fa:	41 5e                	pop    %r14
1801042fc:	5f                   	pop    %rdi
1801042fd:	5e                   	pop    %rsi
1801042fe:	c3                   	ret
1801042ff:	cc                   	int3
180104300:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180104305:	48 89 6c 24 18       	mov    %rbp,0x18(%rsp)
18010430a:	56                   	push   %rsi
18010430b:	57                   	push   %rdi
18010430c:	41 56                	push   %r14
18010430e:	48 83 ec 20          	sub    $0x20,%rsp
180104312:	83 4c 24 48 ff       	orl    $0xffffffff,0x48(%rsp)
180104317:	33 c0                	xor    %eax,%eax
180104319:	89 44 24 4c          	mov    %eax,0x4c(%rsp)
18010431d:	48 8b f1             	mov    %rcx,%rsi
180104320:	0f b7 02             	movzwl (%rdx),%eax
180104323:	b9 72 69 00 00       	mov    $0x6972,%ecx
180104328:	41 8b f8             	mov    %r8d,%edi
18010432b:	48 8b da             	mov    %rdx,%rbx
18010432e:	66 3b c1             	cmp    %cx,%ax
180104331:	75 54                	jne    0x180104387
180104333:	45 33 f6             	xor    %r14d,%r14d
180104336:	41 8b ee             	mov    %r14d,%ebp
180104339:	66 44 3b 72 02       	cmp    0x2(%rdx),%r14w
18010433e:	73 59                	jae    0x180104399
180104340:	8b c5                	mov    %ebp,%eax
180104342:	4c 8d 44 24 48       	lea    0x48(%rsp),%r8
180104347:	48 8b ce             	mov    %rsi,%rcx
18010434a:	8b 54 83 04          	mov    0x4(%rbx,%rax,4),%edx
18010434e:	48 8b 46 08          	mov    0x8(%rsi),%rax
180104352:	ff d0                	call   *%rax
180104354:	0f 1f 00             	nopl   (%rax)
180104357:	48 8b c8             	mov    %rax,%rcx
18010435a:	48 85 c0             	test   %rax,%rax
18010435d:	74 78                	je     0x1801043d7
18010435f:	0f b7 40 02          	movzwl 0x2(%rax),%eax
180104363:	3b f8                	cmp    %eax,%edi
180104365:	72 3a                	jb     0x1801043a1
180104367:	2b f8                	sub    %eax,%edi
180104369:	48 8d 54 24 48       	lea    0x48(%rsp),%rdx
18010436e:	48 8b 46 10          	mov    0x10(%rsi),%rax
180104372:	48 8b ce             	mov    %rsi,%rcx
180104375:	ff d0                	call   *%rax
180104377:	0f 1f 00             	nopl   (%rax)
18010437a:	0f b7 43 02          	movzwl 0x2(%rbx),%eax
18010437e:	ff c5                	inc    %ebp
180104380:	3b e8                	cmp    %eax,%ebp
180104382:	72 bc                	jb     0x180104340
180104384:	0f b7 03             	movzwl (%rbx),%eax
180104387:	ba 6c 66 00 00       	mov    $0x666c,%edx
18010438c:	66 2b c2             	sub    %dx,%ax
18010438f:	ba ff fd 00 00       	mov    $0xfdff,%edx
180104394:	66 85 c2             	test   %ax,%dx
180104397:	74 43                	je     0x1801043dc
180104399:	8b c7                	mov    %edi,%eax
18010439b:	8b 44 83 04          	mov    0x4(%rbx,%rax,4),%eax
18010439f:	eb 41                	jmp    0x1801043e2
1801043a1:	0f b7 01             	movzwl (%rcx),%eax
1801043a4:	ba 6c 66 00 00       	mov    $0x666c,%edx
1801043a9:	66 2b c2             	sub    %dx,%ax
1801043ac:	ba ff fd 00 00       	mov    $0xfdff,%edx
1801043b1:	66 85 c2             	test   %ax,%dx