140045552:	41 57                	push   %r15
140045554:	48 83 ec 08          	sub    $0x8,%rsp
140045558:	e8 23 00 00 00       	call   0x140045580
14004555d:	48 8b 6c 24 28       	mov    0x28(%rsp),%rbp
140045562:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
140045567:	48 83 c4 38          	add    $0x38,%rsp
14004556b:	48 8b 7c 24 08       	mov    0x8(%rsp),%rdi
140045570:	48 8b 74 24 10       	mov    0x10(%rsp),%rsi
140045575:	f3 c3                	repz ret
140045577:	90                   	nop
140045578:	90                   	nop
140045579:	90                   	nop
14004557a:	90                   	nop
14004557b:	90                   	nop
14004557c:	90                   	nop
14004557d:	90                   	nop
14004557e:	90                   	nop
14004557f:	90                   	nop
140045580:	89 f1                	mov    %esi,%ecx
140045582:	48 89 fe             	mov    %rdi,%rsi
140045585:	48 89 d7             	mov    %rdx,%rdi
140045588:	48 f7 c6 ff ff ff ff 	test   $0xffffffffffffffff,%rsi
14004558f:	0f 84 6b 02 00 00    	je     0x140045800
140045595:	48 f7 c7 ff ff ff ff 	test   $0xffffffffffffffff,%rdi
14004559c:	0f 84 5e 02 00 00    	je     0x140045800
1400455a2:	48 8d 2d 97 0a 00 00 	lea    0xa97(%rip),%rbp        # 0x140046040
1400455a9:	48 8d ad 80 08 00 00 	lea    0x880(%rbp),%rbp
1400455b0:	8b 45 80             	mov    -0x80(%rbp),%eax
1400455b3:	8b 5d a0             	mov    -0x60(%rbp),%ebx
1400455b6:	44 8b 45 c0          	mov    -0x40(%rbp),%r8d
1400455ba:	8b 55 e0             	mov    -0x20(%rbp),%edx
1400455bd:	8b 45 00             	mov    0x0(%rbp),%eax
1400455c0:	8b 5d 20             	mov    0x20(%rbp),%ebx
1400455c3:	44 8b 45 40          	mov    0x40(%rbp),%r8d
1400455c7:	8b 55 60             	mov    0x60(%rbp),%edx
1400455ca:	81 f9 80 00 00 00    	cmp    $0x80,%ecx
1400455d0:	74 24                	je     0x1400455f6
1400455d2:	81 f9 c0 00 00 00    	cmp    $0xc0,%ecx
1400455d8:	0f 84 9e 00 00 00    	je     0x14004567c
1400455de:	81 f9 00 01 00 00    	cmp    $0x100,%ecx
1400455e4:	0f 84 30 01 00 00    	je     0x14004571a
1400455ea:	48 c7 c0 fe ff ff ff 	mov    $0xfffffffffffffffe,%rax
1400455f1:	e9 11 02 00 00       	jmp    0x140045807
1400455f6:	48 8b 06             	mov    (%rsi),%rax
1400455f9:	48 8b 56 08          	mov    0x8(%rsi),%rdx
1400455fd:	48 89 07             	mov    %rax,(%rdi)
140045600:	48 89 57 08          	mov    %rdx,0x8(%rdi)
140045604:	48 c1 ea 20          	shr    $0x20,%rdx
140045608:	31 c9                	xor    %ecx,%ecx
14004560a:	eb 05                	jmp    0x140045611
14004560c:	8b 07                	mov    (%rdi),%eax
14004560e:	8b 57 0c             	mov    0xc(%rdi),%edx
140045611:	0f b6 f2             	movzbl %dl,%esi
140045614:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
140045619:	0f b6 f6             	movzbl %dh,%esi
14004561c:	c1 e3 18             	shl    $0x18,%ebx
14004561f:	31 d8                	xor    %ebx,%eax
140045621:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
140045626:	c1 ea 10             	shr    $0x10,%edx
140045629:	0f b6 f2             	movzbl %dl,%esi
14004562c:	31 d8                	xor    %ebx,%eax
14004562e:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
140045633:	0f b6 f6             	movzbl %dh,%esi
140045636:	c1 e3 08             	shl    $0x8,%ebx
140045639:	31 d8                	xor    %ebx,%eax
14004563b:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
140045640:	c1 e3 10             	shl    $0x10,%ebx
140045643:	31 d8                	xor    %ebx,%eax
140045645:	33 84 8d 80 03 00 00 	xor    0x380(%rbp,%rcx,4),%eax
14004564c:	89 47 10             	mov    %eax,0x10(%rdi)
14004564f:	33 47 04             	xor    0x4(%rdi),%eax
140045652:	89 47 14             	mov    %eax,0x14(%rdi)
140045655:	33 47 08             	xor    0x8(%rdi),%eax
140045658:	89 47 18             	mov    %eax,0x18(%rdi)
14004565b:	33 47 0c             	xor    0xc(%rdi),%eax
14004565e:	89 47 1c             	mov    %eax,0x1c(%rdi)
140045661:	83 c1 01             	add    $0x1,%ecx
140045664:	48 8d 7f 10          	lea    0x10(%rdi),%rdi
140045668:	83 f9 0a             	cmp    $0xa,%ecx
14004566b:	7c 9f                	jl     0x14004560c
14004566d:	c7 47 50 0a 00 00 00 	movl   $0xa,0x50(%rdi)
140045674:	48 31 c0             	xor    %rax,%rax
140045677:	e9 8b 01 00 00       	jmp    0x140045807
14004567c:	48 8b 06             	mov    (%rsi),%rax
14004567f:	48 8b 5e 08          	mov    0x8(%rsi),%rbx
140045683:	48 8b 56 10          	mov    0x10(%rsi),%rdx
140045687:	48 89 07             	mov    %rax,(%rdi)
14004568a:	48 89 5f 08          	mov    %rbx,0x8(%rdi)
14004568e:	48 89 57 10          	mov    %rdx,0x10(%rdi)
140045692:	48 c1 ea 20          	shr    $0x20,%rdx
140045696:	31 c9                	xor    %ecx,%ecx
140045698:	eb 07                	jmp    0x1400456a1
14004569a:	90                   	nop
14004569b:	90                   	nop
14004569c:	8b 07                	mov    (%rdi),%eax
14004569e:	8b 57 14             	mov    0x14(%rdi),%edx
1400456a1:	0f b6 f2             	movzbl %dl,%esi
1400456a4:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400456a9:	0f b6 f6             	movzbl %dh,%esi
1400456ac:	c1 e3 18             	shl    $0x18,%ebx
1400456af:	31 d8                	xor    %ebx,%eax
1400456b1:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400456b6:	c1 ea 10             	shr    $0x10,%edx
1400456b9:	0f b6 f2             	movzbl %dl,%esi
1400456bc:	31 d8                	xor    %ebx,%eax
1400456be:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400456c3:	0f b6 f6             	movzbl %dh,%esi
1400456c6:	c1 e3 08             	shl    $0x8,%ebx
1400456c9:	31 d8                	xor    %ebx,%eax
1400456cb:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400456d0:	c1 e3 10             	shl    $0x10,%ebx
1400456d3:	31 d8                	xor    %ebx,%eax
1400456d5:	33 84 8d 80 03 00 00 	xor    0x380(%rbp,%rcx,4),%eax
1400456dc:	89 47 18             	mov    %eax,0x18(%rdi)
1400456df:	33 47 04             	xor    0x4(%rdi),%eax
1400456e2:	89 47 1c             	mov    %eax,0x1c(%rdi)
1400456e5:	33 47 08             	xor    0x8(%rdi),%eax
1400456e8:	89 47 20             	mov    %eax,0x20(%rdi)
1400456eb:	33 47 0c             	xor    0xc(%rdi),%eax
1400456ee:	89 47 24             	mov    %eax,0x24(%rdi)
1400456f1:	83 f9 07             	cmp    $0x7,%ecx
1400456f4:	74 15                	je     0x14004570b
1400456f6:	83 c1 01             	add    $0x1,%ecx
1400456f9:	33 47 10             	xor    0x10(%rdi),%eax
1400456fc:	89 47 28             	mov    %eax,0x28(%rdi)
1400456ff:	33 47 14             	xor    0x14(%rdi),%eax
140045702:	89 47 2c             	mov    %eax,0x2c(%rdi)
140045705:	48 8d 7f 18          	lea    0x18(%rdi),%rdi
140045709:	eb 91                	jmp    0x14004569c
14004570b:	c7 47 48 0c 00 00 00 	movl   $0xc,0x48(%rdi)
140045712:	48 31 c0             	xor    %rax,%rax
140045715:	e9 ed 00 00 00       	jmp    0x140045807
14004571a:	48 8b 06             	mov    (%rsi),%rax
14004571d:	48 8b 5e 08          	mov    0x8(%rsi),%rbx
140045721:	48 8b 4e 10          	mov    0x10(%rsi),%rcx
140045725:	48 8b 56 18          	mov    0x18(%rsi),%rdx
140045729:	48 89 07             	mov    %rax,(%rdi)
14004572c:	48 89 5f 08          	mov    %rbx,0x8(%rdi)
140045730:	48 89 4f 10          	mov    %rcx,0x10(%rdi)
140045734:	48 89 57 18          	mov    %rdx,0x18(%rdi)
140045738:	48 c1 ea 20          	shr    $0x20,%rdx
14004573c:	31 c9                	xor    %ecx,%ecx
14004573e:	eb 05                	jmp    0x140045745
140045740:	8b 07                	mov    (%rdi),%eax
140045742:	8b 57 1c             	mov    0x1c(%rdi),%edx
140045745:	0f b6 f2             	movzbl %dl,%esi
140045748:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
14004574d:	0f b6 f6             	movzbl %dh,%esi
140045750:	c1 e3 18             	shl    $0x18,%ebx
140045753:	31 d8                	xor    %ebx,%eax
140045755:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
14004575a:	c1 ea 10             	shr    $0x10,%edx
14004575d:	0f b6 f2             	movzbl %dl,%esi
140045760:	31 d8                	xor    %ebx,%eax
140045762:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
140045767:	0f b6 f6             	movzbl %dh,%esi
14004576a:	c1 e3 08             	shl    $0x8,%ebx
14004576d:	31 d8                	xor    %ebx,%eax
14004576f:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
140045774:	c1 e3 10             	shl    $0x10,%ebx
140045777:	31 d8                	xor    %ebx,%eax
140045779:	33 84 8d 80 03 00 00 	xor    0x380(%rbp,%rcx,4),%eax
140045780:	89 47 20             	mov    %eax,0x20(%rdi)
140045783:	33 47 04             	xor    0x4(%rdi),%eax
140045786:	89 47 24             	mov    %eax,0x24(%rdi)
140045789:	33 47 08             	xor    0x8(%rdi),%eax
14004578c:	89 47 28             	mov    %eax,0x28(%rdi)
14004578f:	33 47 0c             	xor    0xc(%rdi),%eax
140045792:	89 47 2c             	mov    %eax,0x2c(%rdi)
140045795:	83 f9 06             	cmp    $0x6,%ecx
140045798:	74 5a                	je     0x1400457f4
14004579a:	83 c1 01             	add    $0x1,%ecx
14004579d:	89 c2                	mov    %eax,%edx
14004579f:	8b 47 10             	mov    0x10(%rdi),%eax
1400457a2:	0f b6 f2             	movzbl %dl,%esi
1400457a5:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400457aa:	0f b6 f6             	movzbl %dh,%esi
1400457ad:	31 d8                	xor    %ebx,%eax
1400457af:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400457b4:	c1 ea 10             	shr    $0x10,%edx
1400457b7:	c1 e3 08             	shl    $0x8,%ebx
1400457ba:	0f b6 f2             	movzbl %dl,%esi
1400457bd:	31 d8                	xor    %ebx,%eax
1400457bf:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400457c4:	0f b6 f6             	movzbl %dh,%esi
1400457c7:	c1 e3 10             	shl    $0x10,%ebx
1400457ca:	31 d8                	xor    %ebx,%eax
1400457cc:	0f b6 5c 35 80       	movzbl -0x80(%rbp,%rsi,1),%ebx
1400457d1:	c1 e3 18             	shl    $0x18,%ebx
1400457d4:	31 d8                	xor    %ebx,%eax
1400457d6:	89 47 30             	mov    %eax,0x30(%rdi)
1400457d9:	33 47 14             	xor    0x14(%rdi),%eax
1400457dc:	89 47 34             	mov    %eax,0x34(%rdi)
1400457df:	33 47 18             	xor    0x18(%rdi),%eax
1400457e2:	89 47 38             	mov    %eax,0x38(%rdi)
1400457e5:	33 47 1c             	xor    0x1c(%rdi),%eax
1400457e8:	89 47 3c             	mov    %eax,0x3c(%rdi)
1400457eb:	48 8d 7f 20          	lea    0x20(%rdi),%rdi
1400457ef:	e9 4c ff ff ff       	jmp    0x140045740
1400457f4:	c7 47 30 0e 00 00 00 	movl   $0xe,0x30(%rdi)
1400457fb:	48 31 c0             	xor    %rax,%rax
1400457fe:	eb 07                	jmp    0x140045807
140045800:	48 c7 c0 ff ff ff ff 	mov    $0xffffffffffffffff,%rax
140045807:	f3 c3                	repz ret
140045809:	90                   	nop
14004580a:	90                   	nop
14004580b:	90                   	nop
14004580c:	90                   	nop
14004580d:	90                   	nop
14004580e:	90                   	nop
14004580f:	90                   	nop
140045810:	48 89 7c 24 08       	mov    %rdi,0x8(%rsp)
140045815:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
14004581a:	48 89 e0             	mov    %rsp,%rax
14004581d:	48 89 cf             	mov    %rcx,%rdi
140045820:	48 89 d6             	mov    %rdx,%rsi
140045823:	4c 89 c2             	mov    %r8,%rdx
140045826:	f3 0f 1e fa          	endbr64
14004582a:	53                   	push   %rbx
14004582b:	55                   	push   %rbp
14004582c:	41 54                	push   %r12
14004582e:	41 55                	push   %r13
140045830:	41 56                	push   %r14
140045832:	41 57                	push   %r15
140045834:	52                   	push   %rdx
140045835:	e8 46 fd ff ff       	call   0x140045580
14004583a:	4c 8b 04 24          	mov    (%rsp),%r8
14004583e:	83 f8 00             	cmp    $0x0,%eax
140045841:	0f 85 da 01 00 00    	jne    0x140045a21
140045847:	45 8b b0 f0 00 00 00 	mov    0xf0(%r8),%r14d
14004584e:	48 31 ff             	xor    %rdi,%rdi
140045851:	4a 8d 0c b7          	lea    (%rdi,%r14,4),%rcx
140045855:	4c 89 c6             	mov    %r8,%rsi
140045858:	49 8d 3c 88          	lea    (%r8,%rcx,4),%rdi
14004585c:	48 8b 06             	mov    (%rsi),%rax
14004585f:	48 8b 5e 08          	mov    0x8(%rsi),%rbx
140045863:	48 8b 0f             	mov    (%rdi),%rcx
140045866:	48 8b 57 08          	mov    0x8(%rdi),%rdx
14004586a:	48 89 07             	mov    %rax,(%rdi)
14004586d:	48 89 5f 08          	mov    %rbx,0x8(%rdi)
140045871:	48 89 0e             	mov    %rcx,(%rsi)
140045874:	48 89 56 08          	mov    %rdx,0x8(%rsi)
140045878:	48 8d 76 10          	lea    0x10(%rsi),%rsi
14004587c:	48 8d 7f f0          	lea    -0x10(%rdi),%rdi
140045880:	48 39 f7             	cmp    %rsi,%rdi
140045883:	75 d7                	jne    0x14004585c
140045885:	48 8d 05 b4 13 00 00 	lea    0x13b4(%rip),%rax        # 0x140046c40
14004588c:	48 8b 70 28          	mov    0x28(%rax),%rsi
140045890:	48 8b 78 30          	mov    0x30(%rax),%rdi
140045894:	48 8b 68 38          	mov    0x38(%rax),%rbp
140045898:	4d 89 c7             	mov    %r8,%r15
14004589b:	41 83 ee 01          	sub    $0x1,%r14d
14004589f:	90                   	nop
1400458a0:	4d 8d 7f 10          	lea    0x10(%r15),%r15
1400458a4:	49 8b 07             	mov    (%r15),%rax
1400458a7:	49 8b 4f 08          	mov    0x8(%r15),%rcx
1400458ab:	49 89 f1             	mov    %rsi,%r9
1400458ae:	49 89 f4             	mov    %rsi,%r12
1400458b1:	49 21 c1             	and    %rax,%r9
1400458b4:	49 21 cc             	and    %rcx,%r12
1400458b7:	4c 89 cb             	mov    %r9,%rbx
1400458ba:	4c 89 e2             	mov    %r12,%rdx
1400458bd:	49 c1 e9 07          	shr    $0x7,%r9
1400458c1:	4c 8d 04 00          	lea    (%rax,%rax,1),%r8
1400458c5:	49 c1 ec 07          	shr    $0x7,%r12
1400458c9:	4c 8d 1c 09          	lea    (%rcx,%rcx,1),%r11
1400458cd:	4c 29 cb             	sub    %r9,%rbx
1400458d0:	4c 29 e2             	sub    %r12,%rdx
1400458d3:	49 21 f8             	and    %rdi,%r8
1400458d6:	49 21 fb             	and    %rdi,%r11
1400458d9:	48 21 eb             	and    %rbp,%rbx
1400458dc:	48 21 ea             	and    %rbp,%rdx
1400458df:	49 31 d8             	xor    %rbx,%r8
1400458e2:	49 31 d3             	xor    %rdx,%r11
1400458e5:	49 89 f2             	mov    %rsi,%r10
1400458e8:	49 89 f5             	mov    %rsi,%r13
1400458eb:	4d 21 c2             	and    %r8,%r10
1400458ee:	4d 21 dd             	and    %r11,%r13
1400458f1:	4c 89 d3             	mov    %r10,%rbx
1400458f4:	4c 89 ea             	mov    %r13,%rdx
1400458f7:	49 c1 ea 07          	shr    $0x7,%r10
1400458fb:	4f 8d 0c 00          	lea    (%r8,%r8,1),%r9
1400458ff:	49 c1 ed 07          	shr    $0x7,%r13
140045903:	4f 8d 24 1b          	lea    (%r11,%r11,1),%r12
140045907:	4c 29 d3             	sub    %r10,%rbx
14004590a:	4c 29 ea             	sub    %r13,%rdx
14004590d:	49 21 f9             	and    %rdi,%r9
140045910:	49 21 fc             	and    %rdi,%r12
140045913:	48 21 eb             	and    %rbp,%rbx
140045916:	48 21 ea             	and    %rbp,%rdx
140045919:	49 31 d9             	xor    %rbx,%r9
14004591c:	49 31 d4             	xor    %rdx,%r12
14004591f:	49 89 f2             	mov    %rsi,%r10
140045922:	49 89 f5             	mov    %rsi,%r13
140045925:	4d 21 ca             	and    %r9,%r10
140045928:	4d 21 e5             	and    %r12,%r13
14004592b:	4c 89 d3             	mov    %r10,%rbx
14004592e:	4c 89 ea             	mov    %r13,%rdx
140045931:	49 c1 ea 07          	shr    $0x7,%r10
140045935:	49 31 c0             	xor    %rax,%r8
140045938:	49 c1 ed 07          	shr    $0x7,%r13
14004593c:	49 31 cb             	xor    %rcx,%r11
14004593f:	4c 29 d3             	sub    %r10,%rbx
140045942:	4c 29 ea             	sub    %r13,%rdx
140045945:	4f 8d 14 09          	lea    (%r9,%r9,1),%r10
140045949:	4f 8d 2c 24          	lea    (%r12,%r12,1),%r13
14004594d:	49 31 c1             	xor    %rax,%r9
140045950:	49 31 cc             	xor    %rcx,%r12
140045953:	49 21 fa             	and    %rdi,%r10
140045956:	49 21 fd             	and    %rdi,%r13
140045959:	48 21 eb             	and    %rbp,%rbx
14004595c:	48 21 ea             	and    %rbp,%rdx
14004595f:	49 31 da             	xor    %rbx,%r10
140045962:	49 31 d5             	xor    %rdx,%r13
140045965:	4c 31 d0             	xor    %r10,%rax
140045968:	4c 31 e9             	xor    %r13,%rcx
14004596b:	4d 31 d0             	xor    %r10,%r8
14004596e:	4d 31 eb             	xor    %r13,%r11
140045971:	48 89 c3             	mov    %rax,%rbx
140045974:	48 89 ca             	mov    %rcx,%rdx
140045977:	4d 31 d1             	xor    %r10,%r9
14004597a:	48 c1 eb 20          	shr    $0x20,%rbx
14004597e:	4d 31 ec             	xor    %r13,%r12
140045981:	48 c1 ea 20          	shr    $0x20,%rdx
140045985:	4d 31 c2             	xor    %r8,%r10
140045988:	c1 c0 08             	rol    $0x8,%eax
14004598b:	4d 31 dd             	xor    %r11,%r13
14004598e:	c1 c1 08             	rol    $0x8,%ecx
140045991:	4d 31 ca             	xor    %r9,%r10
140045994:	c1 c3 08             	rol    $0x8,%ebx
140045997:	4d 31 e5             	xor    %r12,%r13
14004599a:	c1 c2 08             	rol    $0x8,%edx
14004599d:	44 31 d0             	xor    %r10d,%eax
1400459a0:	49 c1 ea 20          	shr    $0x20,%r10
1400459a4:	44 31 e9             	xor    %r13d,%ecx
1400459a7:	49 c1 ed 20          	shr    $0x20,%r13
1400459ab:	44 31 d3             	xor    %r10d,%ebx
1400459ae:	44 31 ea             	xor    %r13d,%edx
1400459b1:	4d 89 c2             	mov    %r8,%r10
1400459b4:	41 c1 c0 18          	rol    $0x18,%r8d
1400459b8:	4d 89 dd             	mov    %r11,%r13
1400459bb:	41 c1 c3 18          	rol    $0x18,%r11d
1400459bf:	49 c1 ea 20          	shr    $0x20,%r10
1400459c3:	44 31 c0             	xor    %r8d,%eax
1400459c6:	49 c1 ed 20          	shr    $0x20,%r13
1400459ca:	44 31 d9             	xor    %r11d,%ecx
1400459cd:	41 c1 c2 18          	rol    $0x18,%r10d
1400459d1:	4d 89 c8             	mov    %r9,%r8
1400459d4:	41 c1 c5 18          	rol    $0x18,%r13d
1400459d8:	4d 89 e3             	mov    %r12,%r11