140023646:	48 c1 e9 20          	shr    $0x20,%rcx
14002364a:	48 0f af c8          	imul   %rax,%rcx
14002364e:	48 c1 ef 20          	shr    $0x20,%rdi
140023652:	41 8b c1             	mov    %r9d,%eax
140023655:	48 03 f9             	add    %rcx,%rdi
140023658:	69 ca 4f 93 12 00    	imul   $0x12934f,%edx,%ecx
14002365e:	c1 e9 13             	shr    $0x13,%ecx
140023661:	2b 8c 24 80 00 00 00 	sub    0x80(%rsp),%ecx
140023668:	83 c1 1a             	add    $0x1a,%ecx
14002366b:	41 03 c8             	add    %r8d,%ecx
14002366e:	48 d3 ef             	shr    %cl,%rdi
140023671:	f7 e7                	mul    %edi
140023673:	c1 ea 03             	shr    $0x3,%edx
140023676:	8a c2                	mov    %dl,%al
140023678:	c0 e0 02             	shl    $0x2,%al
14002367b:	02 d0                	add    %al,%dl
14002367d:	02 d2                	add    %dl,%dl
14002367f:	40 2a fa             	sub    %dl,%dil
140023682:	41 83 f8 09          	cmp    $0x9,%r8d
140023686:	0f 87 f7 01 00 00    	ja     0x140023883
14002368c:	41 8b c1             	mov    %r9d,%eax
14002368f:	41 f7 e5             	mul    %r13d
140023692:	c1 ea 02             	shr    $0x2,%edx
140023695:	8d 04 92             	lea    (%rdx,%rdx,4),%eax
140023698:	44 3b e8             	cmp    %eax,%r13d
14002369b:	75 25                	jne    0x1400236c2
14002369d:	41 8b ea             	mov    %r10d,%ebp
1400236a0:	8b ca                	mov    %edx,%ecx
1400236a2:	41 8b c1             	mov    %r9d,%eax
1400236a5:	f7 e2                	mul    %edx
1400236a7:	ff c5                	inc    %ebp
1400236a9:	c1 ea 02             	shr    $0x2,%edx
1400236ac:	8d 04 92             	lea    (%rdx,%rdx,4),%eax
1400236af:	3b c8                	cmp    %eax,%ecx
1400236b1:	74 ed                	je     0x1400236a0
1400236b3:	41 3b e8             	cmp    %r8d,%ebp
1400236b6:	41 8b ea             	mov    %r10d,%ebp
1400236b9:	41 0f 93 c7          	setae  %r15b
1400236bd:	e9 c9 01 00 00       	jmp    0x14002388b
1400236c2:	41 8b c1             	mov    %r9d,%eax
1400236c5:	45 84 e4             	test   %r12b,%r12b
1400236c8:	74 2f                	je     0x1400236f9
1400236ca:	f7 e5                	mul    %ebp
1400236cc:	45 8b f2             	mov    %r10d,%r14d
1400236cf:	c1 ea 02             	shr    $0x2,%edx
1400236d2:	8d 04 92             	lea    (%rdx,%rdx,4),%eax
1400236d5:	3b e8                	cmp    %eax,%ebp
1400236d7:	75 14                	jne    0x1400236ed
1400236d9:	8b ca                	mov    %edx,%ecx
1400236db:	41 8b c1             	mov    %r9d,%eax
1400236de:	f7 e2                	mul    %edx
1400236e0:	41 ff c6             	inc    %r14d
1400236e3:	c1 ea 02             	shr    $0x2,%edx
1400236e6:	8d 04 92             	lea    (%rdx,%rdx,4),%eax
1400236e9:	3b c8                	cmp    %eax,%ecx
1400236eb:	74 ec                	je     0x1400236d9
1400236ed:	45 3b f0             	cmp    %r8d,%r14d
1400236f0:	41 0f 93 c6          	setae  %r14b
1400236f4:	e9 8a 01 00 00       	jmp    0x140023883
1400236f9:	f7 24 24             	mull   (%rsp)
1400236fc:	41 8b ea             	mov    %r10d,%ebp
1400236ff:	c1 ea 02             	shr    $0x2,%edx
140023702:	8d 04 92             	lea    (%rdx,%rdx,4),%eax
140023705:	39 04 24             	cmp    %eax,(%rsp)
140023708:	75 13                	jne    0x14002371d
14002370a:	8b ca                	mov    %edx,%ecx
14002370c:	41 8b c1             	mov    %r9d,%eax
14002370f:	f7 e2                	mul    %edx
140023711:	ff c5                	inc    %ebp
140023713:	c1 ea 02             	shr    $0x2,%edx
140023716:	8d 04 92             	lea    (%rdx,%rdx,4),%eax
140023719:	3b c8                	cmp    %eax,%ecx
14002371b:	74 ed                	je     0x14002370a
14002371d:	41 3b e8             	cmp    %r8d,%ebp
140023720:	41 8b c2             	mov    %r10d,%eax
140023723:	0f 93 c0             	setae  %al
140023726:	2b f0                	sub    %eax,%esi
140023728:	e9 56 01 00 00       	jmp    0x140023883
14002372d:	41 69 eb 05 d1 f4 ff 	imul   $0xfff4d105,%r11d,%ebp
140023734:	c1 ed 14             	shr    $0x14,%ebp
140023737:	41 8d 04 2b          	lea    (%r11,%rbp,1),%eax
14002373b:	4c 8b db             	mov    %rbx,%r11
14002373e:	89 44 24 78          	mov    %eax,0x78(%rsp)
140023742:	f7 d8                	neg    %eax
140023744:	69 d0 4f 93 12 00    	imul   $0x12934f,%eax,%edx
14002374a:	89 84 24 80 00 00 00 	mov    %eax,0x80(%rsp)
140023751:	48 8b 8c c1 70 fc 24 	mov    0x24fc70(%rcx,%rax,8),%rcx
140023758:	00
140023759:	44 8b c1             	mov    %ecx,%r8d
14002375c:	4c 8b c9             	mov    %rcx,%r9
14002375f:	8b c2                	mov    %edx,%eax
140023761:	49 c1 e9 20          	shr    $0x20,%r9
140023765:	c1 e8 13             	shr    $0x13,%eax
140023768:	8b cd                	mov    %ebp,%ecx
14002376a:	2b c8                	sub    %eax,%ecx
14002376c:	89 14 24             	mov    %edx,(%rsp)
14002376f:	4d 0f af d8          	imul   %r8,%r11
140023773:	83 c1 1c             	add    $0x1c,%ecx
140023776:	49 8b c1             	mov    %r9,%rax
140023779:	48 0f af c3          	imul   %rbx,%rax
14002377d:	48 8b 5c 24 10       	mov    0x10(%rsp),%rbx
140023782:	48 8b d6             	mov    %rsi,%rdx
140023785:	49 0f af d0          	imul   %r8,%rdx
140023789:	49 c1 eb 20          	shr    $0x20,%r11
14002378d:	4c 03 d8             	add    %rax,%r11
140023790:	48 c1 ea 20          	shr    $0x20,%rdx
140023794:	49 8b c1             	mov    %r9,%rax
140023797:	49 d3 eb             	shr    %cl,%r11
14002379a:	48 0f af c6          	imul   %rsi,%rax
14002379e:	48 03 d0             	add    %rax,%rdx
1400237a1:	48 8b c3             	mov    %rbx,%rax
1400237a4:	49 0f af d9          	imul   %r9,%rbx
1400237a8:	49 0f af c0          	imul   %r8,%rax
1400237ac:	48 d3 ea             	shr    %cl,%rdx
1400237af:	41 b9 cd cc cc cc    	mov    $0xcccccccd,%r9d
1400237b5:	48 89 54 24 08       	mov    %rdx,0x8(%rsp)
1400237ba:	8b f2                	mov    %edx,%esi
1400237bc:	48 c1 e8 20          	shr    $0x20,%rax
1400237c0:	48 03 d8             	add    %rax,%rbx
1400237c3:	48 d3 eb             	shr    %cl,%rbx
1400237c6:	85 ed                	test   %ebp,%ebp
1400237c8:	74 7c                	je     0x140023846
1400237ca:	8d 4a ff             	lea    -0x1(%rdx),%ecx
1400237cd:	41 8b c1             	mov    %r9d,%eax
1400237d0:	f7 e1                	mul    %ecx
1400237d2:	41 8b c1             	mov    %r9d,%eax
1400237d5:	8b ca                	mov    %edx,%ecx
1400237d7:	f7 e3                	mul    %ebx
1400237d9:	c1 e9 03             	shr    $0x3,%ecx
1400237dc:	c1 ea 03             	shr    $0x3,%edx
1400237df:	3b ca                	cmp    %edx,%ecx
1400237e1:	77 5e                	ja     0x140023841
1400237e3:	8b 84 24 80 00 00 00 	mov    0x80(%rsp),%eax
1400237ea:	48 8d 3d 0f c8 fd ff 	lea    -0x237f1(%rip),%rdi        # 0x140000000
1400237f1:	ff c0                	inc    %eax
1400237f3:	41 8b cd             	mov    %r13d,%ecx
1400237f6:	48 8b 84 c7 70 fc 24 	mov    0x24fc70(%rdi,%rax,8),%rax
1400237fd:	00
1400237fe:	44 8b c0             	mov    %eax,%r8d
140023801:	48 c1 e8 20          	shr    $0x20,%rax
140023805:	48 0f af c1          	imul   %rcx,%rax
140023809:	4c 0f af c1          	imul   %rcx,%r8
14002380d:	8b cd                	mov    %ebp,%ecx
14002380f:	49 c1 e8 20          	shr    $0x20,%r8
140023813:	4c 03 c0             	add    %rax,%r8
140023816:	8b 04 24             	mov    (%rsp),%eax
140023819:	05 4f 93 12 00       	add    $0x12934f,%eax
14002381e:	c1 e8 13             	shr    $0x13,%eax
140023821:	2b c8                	sub    %eax,%ecx
140023823:	41 8b c1             	mov    %r9d,%eax
140023826:	83 c1 1b             	add    $0x1b,%ecx
140023829:	49 d3 e8             	shr    %cl,%r8
14002382c:	41 f7 e0             	mul    %r8d
14002382f:	c1 ea 03             	shr    $0x3,%edx
140023832:	8a c2                	mov    %dl,%al
140023834:	c0 e0 02             	shl    $0x2,%al
140023837:	02 d0                	add    %al,%dl
140023839:	02 d2                	add    %dl,%dl
14002383b:	44 2a c2             	sub    %dl,%r8b
14002383e:	41 8a f8             	mov    %r8b,%dil
140023841:	48 8b 54 24 08       	mov    0x8(%rsp),%rdx
140023846:	83 fd 01             	cmp    $0x1,%ebp
140023849:	77 20                	ja     0x14002386b
14002384b:	45 84 e4             	test   %r12b,%r12b
14002384e:	8d 46 ff             	lea    -0x1(%rsi),%eax
140023851:	41 b7 01             	mov    $0x1,%r15b
140023854:	0f 44 d0             	cmove  %eax,%edx
140023857:	41 8a c4             	mov    %r12b,%al
14002385a:	f6 d8                	neg    %al
14002385c:	8b f2                	mov    %edx,%esi
14002385e:	45 1a f6             	sbb    %r14b,%r14b
140023861:	44 22 b4 24 88 00 00 	and    0x88(%rsp),%r14b
140023868:	00
140023869:	eb 18                	jmp    0x140023883
14002386b:	83 fd 1f             	cmp    $0x1f,%ebp
14002386e:	73 13                	jae    0x140023883
140023870:	8d 4d ff             	lea    -0x1(%rbp),%ecx
140023873:	b8 01 00 00 00       	mov    $0x1,%eax
140023878:	d3 e0                	shl    %cl,%eax
14002387a:	ff c8                	dec    %eax
14002387c:	41 85 c5             	test   %eax,%r13d
14002387f:	41 0f 94 c7          	sete   %r15b
140023883:	41 8b ea             	mov    %r10d,%ebp
140023886:	45 84 f6             	test   %r14b,%r14b
140023889:	75 51                	jne    0x1400238dc
14002388b:	45 84 ff             	test   %r15b,%r15b
14002388e:	75 4c                	jne    0x1400238dc
140023890:	41 8b c1             	mov    %r9d,%eax
140023893:	f7 e3                	mul    %ebx
140023895:	eb 27                	jmp    0x1400238be
140023897:	41 8b c1             	mov    %r9d,%eax
14002389a:	ff c5                	inc    %ebp
14002389c:	41 f7 e3             	mul    %r11d
14002389f:	41 8b d8             	mov    %r8d,%ebx
1400238a2:	c1 ea 03             	shr    $0x3,%edx
1400238a5:	8a c2                	mov    %dl,%al
1400238a7:	c0 e0 02             	shl    $0x2,%al
1400238aa:	8d 0c 10             	lea    (%rax,%rdx,1),%ecx
1400238ad:	41 8b c1             	mov    %r9d,%eax
1400238b0:	02 c9                	add    %cl,%cl
1400238b2:	44 2a d9             	sub    %cl,%r11b
1400238b5:	41 8a fb             	mov    %r11b,%dil
1400238b8:	44 8b da             	mov    %edx,%r11d
1400238bb:	41 f7 e0             	mul    %r8d
1400238be:	44 8b c2             	mov    %edx,%r8d
1400238c1:	41 8b c1             	mov    %r9d,%eax
1400238c4:	f7 e6                	mul    %esi
1400238c6:	41 c1 e8 03          	shr    $0x3,%r8d
1400238ca:	8b f2                	mov    %edx,%esi
1400238cc:	c1 ee 03             	shr    $0x3,%esi
1400238cf:	41 3b f0             	cmp    %r8d,%esi
1400238d2:	77 c3                	ja     0x140023897
1400238d4:	44 3b db             	cmp    %ebx,%r11d
1400238d7:	e9 e1 00 00 00       	jmp    0x1400239bd
1400238dc:	41 8b c1             	mov    %r9d,%eax
1400238df:	f7 e3                	mul    %ebx
1400238e1:	eb 4d                	jmp    0x140023930
1400238e3:	41 0f b6 c6          	movzbl %r14b,%eax
1400238e7:	43 8d 0c a4          	lea    (%r12,%r12,4),%ecx
1400238eb:	03 c9                	add    %ecx,%ecx
1400238ed:	45 8b c2             	mov    %r10d,%r8d
1400238f0:	3b d9                	cmp    %ecx,%ebx
1400238f2:	41 8b ca             	mov    %r10d,%ecx
1400238f5:	41 8b dc             	mov    %r12d,%ebx
1400238f8:	44 0f 44 c0          	cmove  %eax,%r8d
1400238fc:	40 84 ff             	test   %dil,%dil
1400238ff:	41 0f b6 c7          	movzbl %r15b,%eax
140023903:	45 8a f0             	mov    %r8b,%r14b
140023906:	0f 44 c8             	cmove  %eax,%ecx
140023909:	41 8b c1             	mov    %r9d,%eax
14002390c:	41 f7 e3             	mul    %r11d
14002390f:	44 8a f9             	mov    %cl,%r15b
140023912:	ff c5                	inc    %ebp
140023914:	c1 ea 03             	shr    $0x3,%edx
140023917:	8a c2                	mov    %dl,%al
140023919:	c0 e0 02             	shl    $0x2,%al
14002391c:	8d 0c 10             	lea    (%rax,%rdx,1),%ecx
14002391f:	41 8b c1             	mov    %r9d,%eax
140023922:	02 c9                	add    %cl,%cl
140023924:	44 2a d9             	sub    %cl,%r11b
140023927:	41 8a fb             	mov    %r11b,%dil
14002392a:	44 8b da             	mov    %edx,%r11d
14002392d:	41 f7 e4             	mul    %r12d
140023930:	44 8b e2             	mov    %edx,%r12d
140023933:	41 8b c1             	mov    %r9d,%eax
140023936:	f7 e6                	mul    %esi
140023938:	41 c1 ec 03          	shr    $0x3,%r12d
14002393c:	8b f2                	mov    %edx,%esi
14002393e:	c1 ee 03             	shr    $0x3,%esi
140023941:	41 3b f4             	cmp    %r12d,%esi
140023944:	77 9d                	ja     0x1400238e3
140023946:	45 84 f6             	test   %r14b,%r14b
140023949:	74 48                	je     0x140023993
14002394b:	41 8b c1             	mov    %r9d,%eax
14002394e:	f7 e3                	mul    %ebx
140023950:	eb 30                	jmp    0x140023982
140023952:	40 84 ff             	test   %dil,%dil
140023955:	41 8b d8             	mov    %r8d,%ebx
140023958:	0f 94 c0             	sete   %al
14002395b:	ff c5                	inc    %ebp
14002395d:	44 22 f8             	and    %al,%r15b
140023960:	41 8b c1             	mov    %r9d,%eax
140023963:	41 f7 e3             	mul    %r11d
140023966:	c1 ea 03             	shr    $0x3,%edx
140023969:	8a c2                	mov    %dl,%al
14002396b:	c0 e0 02             	shl    $0x2,%al
14002396e:	8d 0c 10             	lea    (%rax,%rdx,1),%ecx
140023971:	41 8b c1             	mov    %r9d,%eax
140023974:	02 c9                	add    %cl,%cl
140023976:	44 2a d9             	sub    %cl,%r11b
140023979:	41 8a fb             	mov    %r11b,%dil
14002397c:	44 8b da             	mov    %edx,%r11d
14002397f:	41 f7 e0             	mul    %r8d
140023982:	44 8b c2             	mov    %edx,%r8d
140023985:	41 c1 e8 03          	shr    $0x3,%r8d
140023989:	43 8d 0c 80          	lea    (%r8,%r8,4),%ecx
14002398d:	03 c9                	add    %ecx,%ecx
14002398f:	3b d9                	cmp    %ecx,%ebx
140023991:	74 bf                	je     0x140023952
140023993:	45 84 ff             	test   %r15b,%r15b
140023996:	74 16                	je     0x1400239ae
140023998:	40 80 ff 05          	cmp    $0x5,%dil
14002399c:	75 10                	jne    0x1400239ae
14002399e:	41 f6 c3 01          	test   $0x1,%r11b
1400239a2:	40 0f b6 ff          	movzbl %dil,%edi
1400239a6:	b9 04 00 00 00       	mov    $0x4,%ecx
1400239ab:	0f 44 f9             	cmove  %ecx,%edi
1400239ae:	44 3b db             	cmp    %ebx,%r11d
1400239b1:	75 0c                	jne    0x1400239bf
1400239b3:	44 38 54 24 70       	cmp    %r10b,0x70(%rsp)
1400239b8:	74 0b                	je     0x1400239c5
1400239ba:	45 84 f6             	test   %r14b,%r14b
1400239bd:	74 06                	je     0x1400239c5
1400239bf:	40 80 ff 05          	cmp    $0x5,%dil
1400239c3:	72 06                	jb     0x1400239cb
1400239c5:	41 ba 01 00 00 00    	mov    $0x1,%r10d
1400239cb:	8b 44 24 78          	mov    0x78(%rsp),%eax
1400239cf:	43 8d 0c 1a          	lea    (%r10,%r11,1),%ecx
1400239d3:	03 c5                	add    %ebp,%eax
1400239d5:	89 8c 24 80 00 00 00 	mov    %ecx,0x80(%rsp)
1400239dc:	89 84 24 84 00 00 00 	mov    %eax,0x84(%rsp)
1400239e3:	48 8b 84 24 80 00 00 	mov    0x80(%rsp),%rax
1400239ea:	00
1400239eb:	48 83 c4 28          	add    $0x28,%rsp
1400239ef:	41 5f                	pop    %r15
1400239f1:	41 5e                	pop    %r14
1400239f3:	41 5d                	pop    %r13
1400239f5:	41 5c                	pop    %r12
1400239f7:	5f                   	pop    %rdi
1400239f8:	5e                   	pop    %rsi
1400239f9:	5d                   	pop    %rbp
1400239fa:	5b                   	pop    %rbx
1400239fb:	c3                   	ret
1400239fc:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
140023a01:	48 89 7c 24 10       	mov    %rdi,0x10(%rsp)
140023a06:	45 33 db             	xor    %r11d,%r11d
140023a09:	44 8b d1             	mov    %ecx,%r10d
140023a0c:	48 8d 3d dd c3 22 00 	lea    0x22c3dd(%rip),%rdi        # 0x14024fdf0
140023a13:	49 8b d8             	mov    %r8,%rbx
140023a16:	44 8b ca             	mov    %edx,%r9d
140023a19:	81 fa 10 27 00 00    	cmp    $0x2710,%edx
140023a1f:	72 58                	jb     0x140023a79
140023a21:	b8 59 17 b7 d1       	mov    $0xd1b71759,%eax
140023a26:	4d 8b c2             	mov    %r10,%r8
140023a29:	41 f7 e1             	mul    %r9d
140023a2c:	c1 ea 0d             	shr    $0xd,%edx
140023a2f:	69 c2 10 27 00 00    	imul   $0x2710,%edx,%eax
140023a35:	44 2b c8             	sub    %eax,%r9d
140023a38:	b8 1f 85 eb 51       	mov    $0x51eb851f,%eax
140023a3d:	41 8b c9             	mov    %r9d,%ecx
140023a40:	44 8b ca             	mov    %edx,%r9d
140023a43:	f7 e1                	mul    %ecx
140023a45:	41 8b c3             	mov    %r11d,%eax
140023a48:	41 83 c3 04          	add    $0x4,%r11d
140023a4c:	4c 2b c0             	sub    %rax,%r8
140023a4f:	c1 ea 05             	shr    $0x5,%edx
140023a52:	6b c2 64             	imul   $0x64,%edx,%eax
140023a55:	2b c8                	sub    %eax,%ecx
140023a57:	03 c9                	add    %ecx,%ecx
140023a59:	0f b7 04 39          	movzwl (%rcx,%rdi,1),%eax
140023a5d:	8d 0c 12             	lea    (%rdx,%rdx,1),%ecx
140023a60:	66 41 89 44 18 fe    	mov    %ax,-0x2(%r8,%rbx,1)
140023a66:	0f b7 0c 39          	movzwl (%rcx,%rdi,1),%ecx
140023a6a:	66 41 89 4c 18 fc    	mov    %cx,-0x4(%r8,%rbx,1)
140023a70:	41 81 f9 10 27 00 00 	cmp    $0x2710,%r9d
140023a77:	73 a8                	jae    0x140023a21
140023a79:	41 83 f9 64          	cmp    $0x64,%r9d
140023a7d:	72 31                	jb     0x140023ab0
140023a7f:	b8 1f 85 eb 51       	mov    $0x51eb851f,%eax
140023a84:	49 8b ca             	mov    %r10,%rcx