18002133b:	0f 82 32 ff ff ff    	jb     0x180021273
180021341:	48 8b 46 08          	mov    0x8(%rsi),%rax
180021345:	89 3e                	mov    %edi,(%rsi)
180021347:	40 80 ef 02          	sub    $0x2,%dil
18002134b:	40 88 78 01          	mov    %dil,0x1(%rax)
18002134f:	8b 06                	mov    (%rsi),%eax
180021351:	eb 03                	jmp    0x180021356
180021353:	83 c8 ff             	or     $0xffffffff,%eax
180021356:	48 8b 4d 27          	mov    0x27(%rbp),%rcx
18002135a:	48 33 cc             	xor    %rsp,%rcx
18002135d:	e8 ca 47 ff ff       	call   0x180015b2c
180021362:	4c 8d 9c 24 c0 00 00 	lea    0xc0(%rsp),%r11
180021369:	00
18002136a:	49 8b 5b 30          	mov    0x30(%r11),%rbx
18002136e:	49 8b 73 40          	mov    0x40(%r11),%rsi
180021372:	49 8b 7b 48          	mov    0x48(%r11),%rdi
180021376:	49 8b e3             	mov    %r11,%rsp
180021379:	41 5f                	pop    %r15
18002137b:	41 5e                	pop    %r14
18002137d:	41 5d                	pop    %r13
18002137f:	41 5c                	pop    %r12
180021381:	5d                   	pop    %rbp
180021382:	c3                   	ret
180021383:	cc                   	int3
180021384:	48 8b c4             	mov    %rsp,%rax
180021387:	48 89 58 08          	mov    %rbx,0x8(%rax)
18002138b:	57                   	push   %rdi
18002138c:	48 83 ec 30          	sub    $0x30,%rsp
180021390:	48 8b fa             	mov    %rdx,%rdi
180021393:	0f 57 c0             	xorps  %xmm0,%xmm0
180021396:	8b 11                	mov    (%rcx),%edx
180021398:	48 8b d9             	mov    %rcx,%rbx
18002139b:	0f 11 40 e8          	movups %xmm0,-0x18(%rax)
18002139f:	85 d2                	test   %edx,%edx
1800213a1:	74 43                	je     0x1800213e6
1800213a3:	48 8b 49 08          	mov    0x8(%rcx),%rcx
1800213a7:	4c 8d 48 f0          	lea    -0x10(%rax),%r9
1800213ab:	4c 8d 40 e8          	lea    -0x18(%rax),%r8
1800213af:	e8 24 f9 ff ff       	call   0x180020cd8
1800213b4:	85 c0                	test   %eax,%eax
1800213b6:	78 2e                	js     0x1800213e6
1800213b8:	48 8b 43 08          	mov    0x8(%rbx),%rax
1800213bc:	8a 08                	mov    (%rax),%cl
1800213be:	80 f9 17             	cmp    $0x17,%cl
1800213c1:	75 0f                	jne    0x1800213d2
1800213c3:	48 8b d7             	mov    %rdi,%rdx
1800213c6:	48 8d 4c 24 20       	lea    0x20(%rsp),%rcx
1800213cb:	e8 dc 01 00 00       	call   0x1800215ac
1800213d0:	eb 16                	jmp    0x1800213e8
1800213d2:	80 f9 18             	cmp    $0x18,%cl
1800213d5:	75 0f                	jne    0x1800213e6
1800213d7:	48 8b d7             	mov    %rdi,%rdx
1800213da:	48 8d 4c 24 20       	lea    0x20(%rsp),%rcx
1800213df:	e8 10 04 00 00       	call   0x1800217f4
1800213e4:	eb 02                	jmp    0x1800213e8
1800213e6:	32 c0                	xor    %al,%al
1800213e8:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
1800213ed:	48 83 c4 30          	add    $0x30,%rsp
1800213f1:	5f                   	pop    %rdi
1800213f2:	c3                   	ret
1800213f3:	cc                   	int3
1800213f4:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
1800213f9:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
1800213fe:	48 89 7c 24 18       	mov    %rdi,0x18(%rsp)
180021403:	55                   	push   %rbp
180021404:	48 8b ec             	mov    %rsp,%rbp
180021407:	48 83 ec 30          	sub    $0x30,%rsp
18002140b:	33 f6                	xor    %esi,%esi
18002140d:	0f bf fa             	movswl %dx,%edi
180021410:	48 89 75 28          	mov    %rsi,0x28(%rbp)
180021414:	48 8b d9             	mov    %rcx,%rbx
180021417:	45 84 c0             	test   %r8b,%r8b
18002141a:	0f 85 a0 00 00 00    	jne    0x1800214c0
180021420:	66 85 ff             	test   %di,%di
180021423:	0f 84 97 00 00 00    	je     0x1800214c0
180021429:	8b c7                	mov    %edi,%eax
18002142b:	44 8d 46 01          	lea    0x1(%rsi),%r8d
18002142f:	99                   	cltd
180021430:	0f 57 c0             	xorps  %xmm0,%xmm0
180021433:	33 c2                	xor    %edx,%eax
180021435:	2b c2                	sub    %edx,%eax
180021437:	0f bf c8             	movswl %ax,%ecx
18002143a:	b8 89 88 88 88       	mov    $0x88888889,%eax
18002143f:	f7 e9                	imul   %ecx
180021441:	0f 11 45 f0          	movups %xmm0,-0x10(%rbp)
180021445:	c7 45 f0 41 06 01 00 	movl   $0x10641,-0x10(%rbp)
18002144c:	03 d1                	add    %ecx,%edx
18002144e:	66 44 89 45 f4       	mov    %r8w,-0xc(%rbp)
180021453:	c1 fa 05             	sar    $0x5,%edx
180021456:	8b c2                	mov    %edx,%eax
180021458:	c1 e8 1f             	shr    $0x1f,%eax
18002145b:	03 d0                	add    %eax,%edx
18002145d:	6b c2 3c             	imul   $0x3c,%edx,%eax
180021460:	66 89 55 f6          	mov    %dx,-0xa(%rbp)
180021464:	2b c8                	sub    %eax,%ecx
180021466:	66 89 4d f8          	mov    %cx,-0x8(%rbp)
18002146a:	66 83 fa 18          	cmp    $0x18,%dx
18002146e:	7c 28                	jl     0x180021498
180021470:	0f bf ca             	movswl %dx,%ecx
180021473:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
180021478:	f7 e9                	imul   %ecx
18002147a:	c1 fa 02             	sar    $0x2,%edx
18002147d:	8b c2                	mov    %edx,%eax
18002147f:	c1 e8 1f             	shr    $0x1f,%eax
180021482:	03 d0                	add    %eax,%edx
180021484:	8d 04 52             	lea    (%rdx,%rdx,2),%eax
180021487:	c1 e0 03             	shl    $0x3,%eax
18002148a:	2b c8                	sub    %eax,%ecx
18002148c:	66 41 03 d0          	add    %r8w,%dx
180021490:	66 89 4d f6          	mov    %cx,-0xa(%rbp)
180021494:	66 89 55 f4          	mov    %dx,-0xc(%rbp)
180021498:	48 8d 55 28          	lea    0x28(%rbp),%rdx
18002149c:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
1800214a0:	e8 17 27 01 00       	call   0x180033bbc
1800214a5:	84 c0                	test   %al,%al
1800214a7:	74 1c                	je     0x1800214c5
1800214a9:	48 8b 0b             	mov    (%rbx),%rcx
1800214ac:	66 85 ff             	test   %di,%di
1800214af:	7e 06                	jle    0x1800214b7
1800214b1:	48 03 4d 28          	add    0x28(%rbp),%rcx
1800214b5:	eb 04                	jmp    0x1800214bb
1800214b7:	48 2b 4d 28          	sub    0x28(%rbp),%rcx
1800214bb:	48 89 0b             	mov    %rcx,(%rbx)
1800214be:	eb 05                	jmp    0x1800214c5
1800214c0:	b8 01 00 00 00       	mov    $0x1,%eax
1800214c5:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
1800214ca:	48 8b 74 24 48       	mov    0x48(%rsp),%rsi
1800214cf:	48 8b 7c 24 50       	mov    0x50(%rsp),%rdi
1800214d4:	48 83 c4 30          	add    $0x30,%rsp
1800214d8:	5d                   	pop    %rbp
1800214d9:	c3                   	ret
1800214da:	cc                   	int3
1800214db:	cc                   	int3
1800214dc:	48 8b c4             	mov    %rsp,%rax
1800214df:	48 89 58 08          	mov    %rbx,0x8(%rax)
1800214e3:	48 89 68 10          	mov    %rbp,0x10(%rax)
1800214e7:	48 89 70 18          	mov    %rsi,0x18(%rax)
1800214eb:	48 89 78 20          	mov    %rdi,0x20(%rax)
1800214ef:	41 56                	push   %r14
1800214f1:	48 83 ec 20          	sub    $0x20,%rsp
1800214f5:	41 83 20 00          	andl   $0x0,(%r8)
1800214f9:	33 db                	xor    %ebx,%ebx
1800214fb:	41 83 21 00          	andl   $0x0,(%r9)
1800214ff:	49 8b f1             	mov    %r9,%rsi
180021502:	4d 8b f0             	mov    %r8,%r14
180021505:	8b ea                	mov    %edx,%ebp
180021507:	48 8b f9             	mov    %rcx,%rdi
18002150a:	85 d2                	test   %edx,%edx
18002150c:	74 29                	je     0x180021537
18002150e:	0f b6 0f             	movzbl (%rdi),%ecx
180021511:	e8 d2 a5 10 00       	call   0x18012bae8
180021516:	85 c0                	test   %eax,%eax
180021518:	74 1d                	je     0x180021537
18002151a:	41 8b 0e             	mov    (%r14),%ecx
18002151d:	ff c3                	inc    %ebx
18002151f:	ff 06                	incl   (%rsi)
180021521:	8d 14 89             	lea    (%rcx,%rcx,4),%edx
180021524:	0f b6 0f             	movzbl (%rdi),%ecx
180021527:	8d 52 e8             	lea    -0x18(%rdx),%edx
18002152a:	48 ff c7             	inc    %rdi
18002152d:	8d 14 51             	lea    (%rcx,%rdx,2),%edx
180021530:	41 89 16             	mov    %edx,(%r14)
180021533:	3b dd                	cmp    %ebp,%ebx
180021535:	72 d7                	jb     0x18002150e
180021537:	48 8b 6c 24 38       	mov    0x38(%rsp),%rbp
18002153c:	8b c3                	mov    %ebx,%eax
18002153e:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
180021543:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
180021548:	48 8b 7c 24 48       	mov    0x48(%rsp),%rdi
18002154d:	48 83 c4 20          	add    $0x20,%rsp
180021551:	41 5e                	pop    %r14
180021553:	c3                   	ret
180021554:	cc                   	int3
180021555:	cc                   	int3
180021556:	cc                   	int3
180021557:	cc                   	int3
180021558:	0f af ca             	imul   %edx,%ecx
18002155b:	4c 63 c9             	movslq %ecx,%r9
18002155e:	45 85 c0             	test   %r8d,%r8d
180021561:	79 1a                	jns    0x18002157d
180021563:	41 f7 d8             	neg    %r8d
180021566:	45 85 c0             	test   %r8d,%r8d
180021569:	7e 3b                	jle    0x1800215a6
18002156b:	41 8b c0             	mov    %r8d,%eax
18002156e:	4f 8d 0c 89          	lea    (%r9,%r9,4),%r9
180021572:	4d 03 c9             	add    %r9,%r9
180021575:	48 83 e8 01          	sub    $0x1,%rax
180021579:	75 f3                	jne    0x18002156e
18002157b:	eb 29                	jmp    0x1800215a6
18002157d:	7e 27                	jle    0x1800215a6
18002157f:	41 8b c8             	mov    %r8d,%ecx
180021582:	48 b8 67 66 66 66 66 	movabs $0x6666666666666667,%rax
180021589:	66 66 66
18002158c:	49 f7 e9             	imul   %r9
18002158f:	4c 8b ca             	mov    %rdx,%r9
180021592:	49 c1 f9 02          	sar    $0x2,%r9
180021596:	49 8b c1             	mov    %r9,%rax
180021599:	48 c1 e8 3f          	shr    $0x3f,%rax
18002159d:	4c 03 c8             	add    %rax,%r9
1800215a0:	48 83 e9 01          	sub    $0x1,%rcx
1800215a4:	75 dc                	jne    0x180021582
1800215a6:	41 8b c1             	mov    %r9d,%eax
1800215a9:	c3                   	ret
1800215aa:	cc                   	int3
1800215ab:	cc                   	int3
1800215ac:	48 89 5c 24 10       	mov    %rbx,0x10(%rsp)
1800215b1:	55                   	push   %rbp
1800215b2:	56                   	push   %rsi
1800215b3:	57                   	push   %rdi
1800215b4:	41 54                	push   %r12
1800215b6:	41 55                	push   %r13
1800215b8:	41 56                	push   %r14
1800215ba:	41 57                	push   %r15
1800215bc:	48 8b ec             	mov    %rsp,%rbp
1800215bf:	48 83 ec 40          	sub    $0x40,%rsp
1800215c3:	8b 39                	mov    (%rcx),%edi
1800215c5:	33 c0                	xor    %eax,%eax
1800215c7:	48 8b 59 08          	mov    0x8(%rcx),%rbx
1800215cb:	4c 8b fa             	mov    %rdx,%r15
1800215ce:	89 45 50             	mov    %eax,0x50(%rbp)
1800215d1:	44 8b e0             	mov    %eax,%r12d
1800215d4:	89 45 58             	mov    %eax,0x58(%rbp)
1800215d7:	8b f0                	mov    %eax,%esi
1800215d9:	44 8a f0             	mov    %al,%r14b
1800215dc:	83 ff 0a             	cmp    $0xa,%edi
1800215df:	0f 82 f4 01 00 00    	jb     0x1800217d9
1800215e5:	88 45 42             	mov    %al,0x42(%rbp)
1800215e8:	48 8d 4d 40          	lea    0x40(%rbp),%rcx
1800215ec:	8a 03                	mov    (%rbx),%al
1800215ee:	88 45 40             	mov    %al,0x40(%rbp)
1800215f1:	8a 43 01             	mov    0x1(%rbx),%al
1800215f4:	88 45 41             	mov    %al,0x41(%rbp)
1800215f7:	e8 98 a4 10 00       	call   0x18012ba94
1800215fc:	44 8b e8             	mov    %eax,%r13d
1800215ff:	48 8d 4d 40          	lea    0x40(%rbp),%rcx
180021603:	8a 43 02             	mov    0x2(%rbx),%al
180021606:	88 45 40             	mov    %al,0x40(%rbp)
180021609:	8a 43 03             	mov    0x3(%rbx),%al
18002160c:	88 45 41             	mov    %al,0x41(%rbp)
18002160f:	e8 80 a4 10 00       	call   0x18012ba94
180021614:	89 45 e0             	mov    %eax,-0x20(%rbp)
180021617:	48 8d 4d 40          	lea    0x40(%rbp),%rcx
18002161b:	8a 43 04             	mov    0x4(%rbx),%al
18002161e:	88 45 40             	mov    %al,0x40(%rbp)
180021621:	8a 43 05             	mov    0x5(%rbx),%al
180021624:	88 45 41             	mov    %al,0x41(%rbp)
180021627:	e8 68 a4 10 00       	call   0x18012ba94
18002162c:	89 45 e4             	mov    %eax,-0x1c(%rbp)
18002162f:	48 8d 4d 40          	lea    0x40(%rbp),%rcx
180021633:	8a 43 06             	mov    0x6(%rbx),%al
180021636:	88 45 40             	mov    %al,0x40(%rbp)
180021639:	8a 43 07             	mov    0x7(%rbx),%al
18002163c:	88 45 41             	mov    %al,0x41(%rbp)
18002163f:	e8 50 a4 10 00       	call   0x18012ba94
180021644:	89 45 e8             	mov    %eax,-0x18(%rbp)
180021647:	48 8d 4d 40          	lea    0x40(%rbp),%rcx
18002164b:	8a 43 08             	mov    0x8(%rbx),%al
18002164e:	88 45 40             	mov    %al,0x40(%rbp)
180021651:	8a 43 09             	mov    0x9(%rbx),%al
180021654:	88 45 41             	mov    %al,0x41(%rbp)
180021657:	e8 38 a4 10 00       	call   0x18012ba94
18002165c:	48 83 c3 0a          	add    $0xa,%rbx
180021660:	89 45 ec             	mov    %eax,-0x14(%rbp)
180021663:	83 c7 f6             	add    $0xfffffff6,%edi
180021666:	83 ff 02             	cmp    $0x2,%edi
180021669:	72 2a                	jb     0x180021695
18002166b:	0f b6 0b             	movzbl (%rbx),%ecx
18002166e:	e8 75 a4 10 00       	call   0x18012bae8
180021673:	85 c0                	test   %eax,%eax
180021675:	74 1e                	je     0x180021695
180021677:	8a 03                	mov    (%rbx),%al
180021679:	48 8d 4d 40          	lea    0x40(%rbp),%rcx
18002167d:	88 45 40             	mov    %al,0x40(%rbp)
180021680:	8a 43 01             	mov    0x1(%rbx),%al
180021683:	88 45 41             	mov    %al,0x41(%rbp)
180021686:	e8 09 a4 10 00       	call   0x18012ba94
18002168b:	48 83 c3 02          	add    $0x2,%rbx
18002168f:	44 8b e0             	mov    %eax,%r12d
180021692:	83 c7 fe             	add    $0xfffffffe,%edi
180021695:	83 ff 01             	cmp    $0x1,%edi
180021698:	0f 82 3b 01 00 00    	jb     0x1800217d9
18002169e:	8a 0b                	mov    (%rbx),%cl
1800216a0:	80 f9 5a             	cmp    $0x5a,%cl
1800216a3:	75 0a                	jne    0x1800216af
1800216a5:	41 b6 01             	mov    $0x1,%r14b
1800216a8:	ff cf                	dec    %edi
1800216aa:	e9 c4 00 00 00       	jmp    0x180021773
1800216af:	80 f9 2b             	cmp    $0x2b,%cl
1800216b2:	75 5c                	jne    0x180021710
1800216b4:	ff cf                	dec    %edi
1800216b6:	48 8d 4b 01          	lea    0x1(%rbx),%rcx
1800216ba:	8b d7                	mov    %edi,%edx
1800216bc:	4c 8d 4d 58          	lea    0x58(%rbp),%r9
1800216c0:	4c 8d 45 50          	lea    0x50(%rbp),%r8
1800216c4:	e8 13 fe ff ff       	call   0x1800214dc
1800216c9:	44 8b 55 58          	mov    0x58(%rbp),%r10d
1800216cd:	b9 01 00 00 00       	mov    $0x1,%ecx
1800216d2:	8b 55 50             	mov    0x50(%rbp),%edx
1800216d5:	2b f8                	sub    %eax,%edi
1800216d7:	45 8d 42 fc          	lea    -0x4(%r10),%r8d
1800216db:	e8 78 fe ff ff       	call   0x180021558
1800216e0:	8b f0                	mov    %eax,%esi
1800216e2:	45 8d 42 fe          	lea    -0x2(%r10),%r8d
1800216e6:	b8 1f 85 eb 51       	mov    $0x51eb851f,%eax
1800216eb:	b9 01 00 00 00       	mov    $0x1,%ecx
1800216f0:	f7 ee                	imul   %esi
1800216f2:	c1 fa 05             	sar    $0x5,%edx
1800216f5:	8b c2                	mov    %edx,%eax
1800216f7:	c1 e8 1f             	shr    $0x1f,%eax
1800216fa:	03 d0                	add    %eax,%edx
1800216fc:	6b c2 64             	imul   $0x64,%edx,%eax
1800216ff:	8b 55 50             	mov    0x50(%rbp),%edx
180021702:	2b f0                	sub    %eax,%esi
180021704:	e8 4f fe ff ff       	call   0x180021558
180021709:	6b c8 3c             	imul   $0x3c,%eax,%ecx
18002170c:	03 f1                	add    %ecx,%esi
18002170e:	eb 63                	jmp    0x180021773
180021710:	80 f9 2d             	cmp    $0x2d,%cl
180021713:	75 5e                	jne    0x180021773
180021715:	ff cf                	dec    %edi
180021717:	48 8d 4b 01          	lea    0x1(%rbx),%rcx
18002171b:	8b d7                	mov    %edi,%edx
18002171d:	4c 8d 4d 58          	lea    0x58(%rbp),%r9
180021721:	4c 8d 45 50          	lea    0x50(%rbp),%r8
180021725:	e8 b2 fd ff ff       	call   0x1800214dc
18002172a:	44 8b 55 58          	mov    0x58(%rbp),%r10d
18002172e:	b9 01 00 00 00       	mov    $0x1,%ecx
180021733:	8b 55 50             	mov    0x50(%rbp),%edx
180021736:	2b f8                	sub    %eax,%edi
180021738:	45 8d 42 fc          	lea    -0x4(%r10),%r8d
18002173c:	e8 17 fe ff ff       	call   0x180021558
180021741:	44 8b d8             	mov    %eax,%r11d
180021744:	45 8d 42 fe          	lea    -0x2(%r10),%r8d
180021748:	b8 1f 85 eb 51       	mov    $0x51eb851f,%eax
18002174d:	41 f7 eb             	imul   %r11d
180021750:	c1 fa 05             	sar    $0x5,%edx
180021753:	8b ca                	mov    %edx,%ecx
180021755:	c1 e9 1f             	shr    $0x1f,%ecx
180021758:	03 d1                	add    %ecx,%edx
18002175a:	6b ca 64             	imul   $0x64,%edx,%ecx
18002175d:	8b 55 50             	mov    0x50(%rbp),%edx
180021760:	44 2b d9             	sub    %ecx,%r11d
180021763:	b9 01 00 00 00       	mov    $0x1,%ecx
180021768:	e8 eb fd ff ff       	call   0x180021558
18002176d:	6b f0 c4             	imul   $0xffffffc4,%eax,%esi
180021770:	41 2b f3             	sub    %r11d,%esi
180021773:	85 ff                	test   %edi,%edi
180021775:	75 62                	jne    0x1800217d9
180021777:	21 7d fc             	and    %edi,-0x4(%rbp)
18002177a:	b8 d0 07 00 00       	mov    $0x7d0,%eax