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
18002177f:	41 83 fd 32          	cmp    $0x32,%r13d
180021783:	66 44 89 65 fa       	mov    %r12w,-0x6(%rbp)
180021788:	49 8b d7             	mov    %r15,%rdx
18002178b:	8d 48 9c             	lea    -0x64(%rax),%ecx
18002178e:	66 0f 4d c1          	cmovge %cx,%ax
180021792:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
180021796:	66 41 03 c5          	add    %r13w,%ax
18002179a:	66 89 45 f0          	mov    %ax,-0x10(%rbp)
18002179e:	8b 45 e0             	mov    -0x20(%rbp),%eax
1800217a1:	66 89 45 f2          	mov    %ax,-0xe(%rbp)
1800217a5:	8b 45 e4             	mov    -0x1c(%rbp),%eax
1800217a8:	66 89 45 f4          	mov    %ax,-0xc(%rbp)
1800217ac:	8b 45 e8             	mov    -0x18(%rbp),%eax
1800217af:	66 89 45 f6          	mov    %ax,-0xa(%rbp)
1800217b3:	8b 45 ec             	mov    -0x14(%rbp),%eax
1800217b6:	66 89 45 f8          	mov    %ax,-0x8(%rbp)
1800217ba:	e8 fd 23 01 00       	call   0x180033bbc
1800217bf:	84 c0                	test   %al,%al
1800217c1:	74 16                	je     0x1800217d9
1800217c3:	45 8a c6             	mov    %r14b,%r8b
1800217c6:	0f b7 d6             	movzwl %si,%edx
1800217c9:	49 8b cf             	mov    %r15,%rcx
1800217cc:	e8 23 fc ff ff       	call   0x1800213f4
1800217d1:	84 c0                	test   %al,%al
1800217d3:	74 04                	je     0x1800217d9
1800217d5:	b0 01                	mov    $0x1,%al
1800217d7:	eb 02                	jmp    0x1800217db
1800217d9:	32 c0                	xor    %al,%al
1800217db:	48 8b 9c 24 88 00 00 	mov    0x88(%rsp),%rbx
1800217e2:	00
1800217e3:	48 83 c4 40          	add    $0x40,%rsp
1800217e7:	41 5f                	pop    %r15
1800217e9:	41 5e                	pop    %r14
1800217eb:	41 5d                	pop    %r13
1800217ed:	41 5c                	pop    %r12
1800217ef:	5f                   	pop    %rdi
1800217f0:	5e                   	pop    %rsi
1800217f1:	5d                   	pop    %rbp
1800217f2:	c3                   	ret
1800217f3:	cc                   	int3
1800217f4:	48 89 5c 24 18       	mov    %rbx,0x18(%rsp)
1800217f9:	55                   	push   %rbp
1800217fa:	56                   	push   %rsi
1800217fb:	57                   	push   %rdi
1800217fc:	41 54                	push   %r12
1800217fe:	41 55                	push   %r13
180021800:	41 56                	push   %r14
180021802:	41 57                	push   %r15
180021804:	48 8b ec             	mov    %rsp,%rbp
180021807:	48 83 ec 60          	sub    $0x60,%rsp
18002180b:	48 8b 05 5e b1 14 00 	mov    0x14b15e(%rip),%rax        # 0x18016c970
180021812:	48 33 c4             	xor    %rsp,%rax
180021815:	48 89 45 f8          	mov    %rax,-0x8(%rbp)
180021819:	8b 39                	mov    (%rcx),%edi
18002181b:	33 c0                	xor    %eax,%eax
18002181d:	48 8b 59 08          	mov    0x8(%rcx),%rbx
180021821:	44 8b e0             	mov    %eax,%r12d
180021824:	48 89 55 e8          	mov    %rdx,-0x18(%rbp)
180021828:	44 8b f0             	mov    %eax,%r14d
18002182b:	89 45 c0             	mov    %eax,-0x40(%rbp)
18002182e:	8b f0                	mov    %eax,%esi
180021830:	89 45 c4             	mov    %eax,-0x3c(%rbp)
180021833:	44 8b f8             	mov    %eax,%r15d
180021836:	44 8a e8             	mov    %al,%r13b
180021839:	83 ff 0a             	cmp    $0xa,%edi
18002183c:	0f 82 5a 03 00 00    	jb     0x180021b9c
180021842:	88 45 f4             	mov    %al,-0xc(%rbp)
180021845:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
180021849:	8a 03                	mov    (%rbx),%al
18002184b:	88 45 f0             	mov    %al,-0x10(%rbp)
18002184e:	8a 43 01             	mov    0x1(%rbx),%al
180021851:	88 45 f1             	mov    %al,-0xf(%rbp)
180021854:	8a 43 02             	mov    0x2(%rbx),%al
180021857:	88 45 f2             	mov    %al,-0xe(%rbp)
18002185a:	8a 43 03             	mov    0x3(%rbx),%al
18002185d:	88 45 f3             	mov    %al,-0xd(%rbp)
180021860:	e8 2f a2 10 00       	call   0x18012ba94
180021865:	89 45 d8             	mov    %eax,-0x28(%rbp)
180021868:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
18002186c:	40 88 75 f2          	mov    %sil,-0xe(%rbp)
180021870:	8a 43 04             	mov    0x4(%rbx),%al
180021873:	88 45 f0             	mov    %al,-0x10(%rbp)
180021876:	8a 43 05             	mov    0x5(%rbx),%al
180021879:	88 45 f1             	mov    %al,-0xf(%rbp)
18002187c:	e8 13 a2 10 00       	call   0x18012ba94
180021881:	89 45 dc             	mov    %eax,-0x24(%rbp)
180021884:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
180021888:	8a 43 06             	mov    0x6(%rbx),%al
18002188b:	88 45 f0             	mov    %al,-0x10(%rbp)
18002188e:	8a 43 07             	mov    0x7(%rbx),%al
180021891:	88 45 f1             	mov    %al,-0xf(%rbp)
180021894:	e8 fb a1 10 00       	call   0x18012ba94
180021899:	89 45 e0             	mov    %eax,-0x20(%rbp)
18002189c:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
1800218a0:	8a 43 08             	mov    0x8(%rbx),%al
1800218a3:	88 45 f0             	mov    %al,-0x10(%rbp)
1800218a6:	8a 43 09             	mov    0x9(%rbx),%al
1800218a9:	88 45 f1             	mov    %al,-0xf(%rbp)
1800218ac:	e8 e3 a1 10 00       	call   0x18012ba94
1800218b1:	48 83 c3 0a          	add    $0xa,%rbx
1800218b5:	89 45 e4             	mov    %eax,-0x1c(%rbp)
1800218b8:	83 c7 f6             	add    $0xfffffff6,%edi
1800218bb:	83 ff 01             	cmp    $0x1,%edi
1800218be:	0f 82 d8 02 00 00    	jb     0x180021b9c
1800218c4:	0f b6 0b             	movzbl (%rbx),%ecx
1800218c7:	8d 41 d4             	lea    -0x2c(%rcx),%eax
1800218ca:	a8 fd                	test   $0xfd,%al
1800218cc:	0f 84 1f 01 00 00    	je     0x1800219f1
1800218d2:	e8 11 a2 10 00       	call   0x18012bae8
1800218d7:	85 c0                	test   %eax,%eax
1800218d9:	0f 84 80 01 00 00    	je     0x180021a5f
1800218df:	83 ff 02             	cmp    $0x2,%edi
1800218e2:	0f 82 b4 02 00 00    	jb     0x180021b9c
1800218e8:	8a 03                	mov    (%rbx),%al
1800218ea:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
1800218ee:	88 45 f0             	mov    %al,-0x10(%rbp)
1800218f1:	8a 43 01             	mov    0x1(%rbx),%al
1800218f4:	88 45 f1             	mov    %al,-0xf(%rbp)
1800218f7:	e8 98 a1 10 00       	call   0x18012ba94
1800218fc:	48 83 c3 02          	add    $0x2,%rbx
180021900:	83 c7 fe             	add    $0xfffffffe,%edi
180021903:	44 8b e0             	mov    %eax,%r12d
180021906:	83 ff 01             	cmp    $0x1,%edi
180021909:	0f 82 8d 02 00 00    	jb     0x180021b9c
18002190f:	0f b6 13             	movzbl (%rbx),%edx
180021912:	8d 4a d4             	lea    -0x2c(%rdx),%ecx
180021915:	f6 c1 fd             	test   $0xfd,%cl
180021918:	0f 84 83 00 00 00    	je     0x1800219a1
18002191e:	8b ca                	mov    %edx,%ecx
180021920:	e8 c3 a1 10 00       	call   0x18012bae8
180021925:	85 c0                	test   %eax,%eax
180021927:	0f 84 32 01 00 00    	je     0x180021a5f
18002192d:	83 ff 02             	cmp    $0x2,%edi
180021930:	0f 82 66 02 00 00    	jb     0x180021b9c
180021936:	8a 03                	mov    (%rbx),%al
180021938:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
18002193c:	88 45 f0             	mov    %al,-0x10(%rbp)
18002193f:	8a 43 01             	mov    0x1(%rbx),%al
180021942:	88 45 f1             	mov    %al,-0xf(%rbp)
180021945:	e8 4a a1 10 00       	call   0x18012ba94
18002194a:	48 83 c3 02          	add    $0x2,%rbx
18002194e:	83 c7 fe             	add    $0xfffffffe,%edi
180021951:	44 8b f0             	mov    %eax,%r14d
180021954:	83 ff 01             	cmp    $0x1,%edi
180021957:	0f 82 3f 02 00 00    	jb     0x180021b9c
18002195d:	8a 0b                	mov    (%rbx),%cl
18002195f:	80 e9 2c             	sub    $0x2c,%cl
180021962:	f6 c1 fd             	test   $0xfd,%cl
180021965:	0f 85 f4 00 00 00    	jne    0x180021a5f
18002196b:	48 ff c3             	inc    %rbx
18002196e:	4c 8d 4d c4          	lea    -0x3c(%rbp),%r9
180021972:	ff cf                	dec    %edi
180021974:	4c 8d 45 c0          	lea    -0x40(%rbp),%r8
180021978:	8b d7                	mov    %edi,%edx
18002197a:	48 8b cb             	mov    %rbx,%rcx
18002197d:	e8 5a fb ff ff       	call   0x1800214dc
180021982:	44 8b 45 c4          	mov    -0x3c(%rbp),%r8d
180021986:	2b f8                	sub    %eax,%edi
180021988:	8b 55 c0             	mov    -0x40(%rbp),%edx
18002198b:	8b c8                	mov    %eax,%ecx
18002198d:	48 03 d9             	add    %rcx,%rbx
180021990:	b9 e8 03 00 00       	mov    $0x3e8,%ecx
180021995:	e8 be fb ff ff       	call   0x180021558
18002199a:	8b f0                	mov    %eax,%esi
18002199c:	e9 be 00 00 00       	jmp    0x180021a5f
1800219a1:	48 ff c3             	inc    %rbx
1800219a4:	4c 8d 4d c4          	lea    -0x3c(%rbp),%r9
1800219a8:	ff cf                	dec    %edi
1800219aa:	4c 8d 45 c0          	lea    -0x40(%rbp),%r8
1800219ae:	8b d7                	mov    %edi,%edx
1800219b0:	48 8b cb             	mov    %rbx,%rcx
1800219b3:	e8 24 fb ff ff       	call   0x1800214dc
1800219b8:	44 8b 45 c4          	mov    -0x3c(%rbp),%r8d
1800219bc:	2b f8                	sub    %eax,%edi
1800219be:	8b 55 c0             	mov    -0x40(%rbp),%edx