18005c2d6:	41 57                	push   %r15
18005c2d8:	48 8b ec             	mov    %rsp,%rbp
18005c2db:	48 83 ec 70          	sub    $0x70,%rsp
18005c2df:	48 c7 45 50 00 00 00 	movq   $0x0,0x50(%rbp)
18005c2e6:	00
18005c2e7:	48 8b f2             	mov    %rdx,%rsi
18005c2ea:	48 8b 41 48          	mov    0x48(%rcx),%rax
18005c2ee:	48 8b f9             	mov    %rcx,%rdi
18005c2f1:	48 8b 59 48          	mov    0x48(%rcx),%rbx
18005c2f5:	48 89 45 58          	mov    %rax,0x58(%rbp)
18005c2f9:	48 89 5d 58          	mov    %rbx,0x58(%rbp)
18005c2fd:	e8 66 9f ff ff       	call   0x180056268
18005c302:	44 8b f8             	mov    %eax,%r15d
18005c305:	85 c0                	test   %eax,%eax
18005c307:	0f 88 d6 01 00 00    	js     0x18005c4e3
18005c30d:	8b 16                	mov    (%rsi),%edx
18005c30f:	48 8b 46 08          	mov    0x8(%rsi),%rax
18005c313:	83 ea 02             	sub    $0x2,%edx
18005c316:	0f 84 73 01 00 00    	je     0x18005c48f
18005c31c:	83 ea 02             	sub    $0x2,%edx
18005c31f:	0f 84 22 01 00 00    	je     0x18005c447
18005c325:	83 ea 01             	sub    $0x1,%edx
18005c328:	74 53                	je     0x18005c37d
18005c32a:	83 fa 01             	cmp    $0x1,%edx
18005c32d:	74 0b                	je     0x18005c33a
18005c32f:	41 bf 0d 00 00 c0    	mov    $0xc000000d,%r15d
18005c335:	e9 a9 01 00 00       	jmp    0x18005c4e3
18005c33a:	8b 45 5c             	mov    0x5c(%rbp),%eax
18005c33d:	25 00 00 00 e0       	and    $0xe0000000,%eax
18005c342:	3d 00 00 00 40       	cmp    $0x40000000,%eax
18005c347:	0f 85 96 01 00 00    	jne    0x18005c4e3
18005c34d:	c7 45 54 00 00 00 60 	movl   $0x60000000,0x54(%rbp)
18005c354:	4c 8d 45 b0          	lea    -0x50(%rbp),%r8
18005c358:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c35c:	48 8d 55 b8          	lea    -0x48(%rbp),%rdx
18005c360:	48 89 45 b0          	mov    %rax,-0x50(%rbp)
18005c364:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c368:	48 89 45 b0          	mov    %rax,-0x50(%rbp)
18005c36c:	48 8b 45 58          	mov    0x58(%rbp),%rax
18005c370:	48 89 45 b8          	mov    %rax,-0x48(%rbp)
18005c374:	48 89 5d b8          	mov    %rbx,-0x48(%rbp)
18005c378:	e9 5e 01 00 00       	jmp    0x18005c4db
18005c37d:	48 8b 40 70          	mov    0x70(%rax),%rax
18005c381:	45 33 f6             	xor    %r14d,%r14d
18005c384:	0f b6 4f 2b          	movzbl 0x2b(%rdi),%ecx
18005c388:	4c 8b 6f 20          	mov    0x20(%rdi),%r13
18005c38c:	48 89 45 f0          	mov    %rax,-0x10(%rbp)
18005c390:	89 4d 40             	mov    %ecx,0x40(%rbp)
18005c393:	4d 85 ed             	test   %r13,%r13
18005c396:	74 06                	je     0x18005c39e
18005c398:	49 8d 45 58          	lea    0x58(%r13),%rax
18005c39c:	eb 08                	jmp    0x18005c3a6
18005c39e:	48 8b 47 08          	mov    0x8(%rdi),%rax
18005c3a2:	48 83 c0 50          	add    $0x50,%rax
18005c3a6:	8b 40 10             	mov    0x10(%rax),%eax
18005c3a9:	0f af c1             	imul   %ecx,%eax
18005c3ac:	44 3b f0             	cmp    %eax,%r14d
18005c3af:	0f 83 2e 01 00 00    	jae    0x18005c4e3
18005c3b5:	4c 8b 67 30          	mov    0x30(%rdi),%r12
18005c3b9:	48 8b cf             	mov    %rdi,%rcx
18005c3bc:	41 8b d6             	mov    %r14d,%edx
18005c3bf:	48 c1 e2 05          	shl    $0x5,%rdx
18005c3c3:	49 03 d4             	add    %r12,%rdx
18005c3c6:	41 8b f6             	mov    %r14d,%esi
18005c3c9:	e8 ee 4f ff ff       	call   0x1800513bc
18005c3ce:	48 3b 45 f0          	cmp    -0x10(%rbp),%rax
18005c3d2:	74 08                	je     0x18005c3dc
18005c3d4:	8b 4d 40             	mov    0x40(%rbp),%ecx
18005c3d7:	41 ff c6             	inc    %r14d
18005c3da:	eb b7                	jmp    0x18005c393
18005c3dc:	48 c1 e6 05          	shl    $0x5,%rsi
18005c3e0:	42 8a 4c 26 02       	mov    0x2(%rsi,%r12,1),%cl
18005c3e5:	80 e1 0f             	and    $0xf,%cl
18005c3e8:	8d 41 ff             	lea    -0x1(%rcx),%eax
18005c3eb:	a8 fa                	test   $0xfa,%al
18005c3ed:	0f 85 f0 00 00 00    	jne    0x18005c4e3
18005c3f3:	80 f9 02             	cmp    $0x2,%cl
18005c3f6:	0f 84 e7 00 00 00    	je     0x18005c4e3
18005c3fc:	8b 45 5c             	mov    0x5c(%rbp),%eax
18005c3ff:	25 00 00 00 e0       	and    $0xe0000000,%eax
18005c404:	3d 00 00 00 40       	cmp    $0x40000000,%eax
18005c409:	0f 85 d4 00 00 00    	jne    0x18005c4e3
18005c40f:	8b 45 54             	mov    0x54(%rbp),%eax
18005c412:	4c 8d 45 c0          	lea    -0x40(%rbp),%r8
18005c416:	25 ff ff ff 1f       	and    $0x1fffffff,%eax
18005c41b:	48 8d 55 c8          	lea    -0x38(%rbp),%rdx
18005c41f:	0f ba e8 1d          	bts    $0x1d,%eax
18005c423:	89 45 54             	mov    %eax,0x54(%rbp)
18005c426:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c42a:	48 89 45 c0          	mov    %rax,-0x40(%rbp)
18005c42e:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c432:	48 89 45 c0          	mov    %rax,-0x40(%rbp)
18005c436:	48 8b 45 58          	mov    0x58(%rbp),%rax
18005c43a:	48 89 45 c8          	mov    %rax,-0x38(%rbp)
18005c43e:	48 89 5d c8          	mov    %rbx,-0x38(%rbp)
18005c442:	e9 94 00 00 00       	jmp    0x18005c4db
18005c447:	8b 45 5c             	mov    0x5c(%rbp),%eax
18005c44a:	25 00 00 00 e0       	and    $0xe0000000,%eax
18005c44f:	3d 00 00 00 40       	cmp    $0x40000000,%eax
18005c454:	0f 85 89 00 00 00    	jne    0x18005c4e3
18005c45a:	8b 45 54             	mov    0x54(%rbp),%eax
18005c45d:	4c 8d 45 d0          	lea    -0x30(%rbp),%r8
18005c461:	25 ff ff ff 1f       	and    $0x1fffffff,%eax
18005c466:	48 8d 55 d8          	lea    -0x28(%rbp),%rdx
18005c46a:	0f ba e8 1d          	bts    $0x1d,%eax
18005c46e:	89 45 54             	mov    %eax,0x54(%rbp)
18005c471:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c475:	48 89 45 d0          	mov    %rax,-0x30(%rbp)
18005c479:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c47d:	48 89 45 d0          	mov    %rax,-0x30(%rbp)
18005c481:	48 8b 45 58          	mov    0x58(%rbp),%rax
18005c485:	48 89 45 d8          	mov    %rax,-0x28(%rbp)
18005c489:	48 89 5d d8          	mov    %rbx,-0x28(%rbp)
18005c48d:	eb 4c                	jmp    0x18005c4db
18005c48f:	83 7e 10 00          	cmpl   $0x0,0x10(%rsi)
18005c493:	7c 4e                	jl     0x18005c4e3
18005c495:	8b 45 5c             	mov    0x5c(%rbp),%eax
18005c498:	25 00 00 00 e0       	and    $0xe0000000,%eax
18005c49d:	3d 00 00 00 20       	cmp    $0x20000000,%eax
18005c4a2:	75 3f                	jne    0x18005c4e3
18005c4a4:	85 db                	test   %ebx,%ebx
18005c4a6:	75 3b                	jne    0x18005c4e3
18005c4a8:	8b 45 54             	mov    0x54(%rbp),%eax
18005c4ab:	4c 8d 45 e0          	lea    -0x20(%rbp),%r8
18005c4af:	25 ff ff ff 1f       	and    $0x1fffffff,%eax
18005c4b4:	48 8d 55 e8          	lea    -0x18(%rbp),%rdx
18005c4b8:	0f ba e8 1e          	bts    $0x1e,%eax
18005c4bc:	89 45 54             	mov    %eax,0x54(%rbp)
18005c4bf:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c4c3:	48 89 45 e0          	mov    %rax,-0x20(%rbp)
18005c4c7:	48 8b 45 50          	mov    0x50(%rbp),%rax
18005c4cb:	48 89 45 e0          	mov    %rax,-0x20(%rbp)
18005c4cf:	48 8b 45 58          	mov    0x58(%rbp),%rax
18005c4d3:	48 89 45 e8          	mov    %rax,-0x18(%rbp)
18005c4d7:	48 89 5d e8          	mov    %rbx,-0x18(%rbp)
18005c4db:	48 8b cf             	mov    %rdi,%rcx
18005c4de:	e8 15 f5 ff ff       	call   0x18005b9f8
18005c4e3:	48 8b 9c 24 b8 00 00 	mov    0xb8(%rsp),%rbx
18005c4ea:	00
18005c4eb:	41 8b c7             	mov    %r15d,%eax
18005c4ee:	48 83 c4 70          	add    $0x70,%rsp
18005c4f2:	41 5f                	pop    %r15
18005c4f4:	41 5e                	pop    %r14
18005c4f6:	41 5d                	pop    %r13
18005c4f8:	41 5c                	pop    %r12
18005c4fa:	5f                   	pop    %rdi
18005c4fb:	5e                   	pop    %rsi
18005c4fc:	5d                   	pop    %rbp
18005c4fd:	c3                   	ret
18005c4fe:	cc                   	int3
18005c4ff:	cc                   	int3
18005c500:	48 89 5c 24 10       	mov    %rbx,0x10(%rsp)
18005c505:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
18005c50a:	57                   	push   %rdi
18005c50b:	48 83 ec 20          	sub    $0x20,%rsp
18005c50f:	83 64 24 30 00       	andl   $0x0,0x30(%rsp)
18005c514:	48 8b d9             	mov    %rcx,%rbx
18005c517:	33 ff                	xor    %edi,%edi
18005c519:	48 8b 43 20          	mov    0x20(%rbx),%rax
18005c51d:	48 85 c0             	test   %rax,%rax
18005c520:	74 06                	je     0x18005c528
18005c522:	48 83 c0 58          	add    $0x58,%rax
18005c526:	eb 08                	jmp    0x18005c530
18005c528:	48 8b 43 08          	mov    0x8(%rbx),%rax
18005c52c:	48 83 c0 50          	add    $0x50,%rax
18005c530:	3b 78 10             	cmp    0x10(%rax),%edi
18005c533:	73 62                	jae    0x18005c597
18005c535:	4c 8d 44 24 30       	lea    0x30(%rsp),%r8
18005c53a:	8b d7                	mov    %edi,%edx
18005c53c:	48 8b cb             	mov    %rbx,%rcx
18005c53f:	e8 64 00 00 00       	call   0x18005c5a8
18005c544:	84 c0                	test   %al,%al
18005c546:	74 4b                	je     0x18005c593
18005c548:	33 f6                	xor    %esi,%esi
18005c54a:	40 38 73 2b          	cmp    %sil,0x2b(%rbx)
18005c54e:	76 43                	jbe    0x18005c593
18005c550:	44 8b c6             	mov    %esi,%r8d
18005c553:	8b d7                	mov    %edi,%edx
18005c555:	48 8b cb             	mov    %rbx,%rcx
18005c558:	e8 f3 4d ff ff       	call   0x180051350
18005c55d:	8a 50 02             	mov    0x2(%rax),%dl
18005c560:	80 e2 0f             	and    $0xf,%dl
18005c563:	8d 4a ff             	lea    -0x1(%rdx),%ecx
18005c566:	f6 c1 fa             	test   $0xfa,%cl
18005c569:	75 1e                	jne    0x18005c589
18005c56b:	80 fa 02             	cmp    $0x2,%dl
18005c56e:	74 19                	je     0x18005c589
18005c570:	48 8b d0             	mov    %rax,%rdx
18005c573:	48 8b cb             	mov    %rbx,%rcx
18005c576:	e8 41 4e ff ff       	call   0x1800513bc
18005c57b:	44 8b c7             	mov    %edi,%r8d
18005c57e:	48 8b d0             	mov    %rax,%rdx
18005c581:	48 8b cb             	mov    %rbx,%rcx
18005c584:	e8 df 9e ff ff       	call   0x180056468
18005c589:	0f b6 43 2b          	movzbl 0x2b(%rbx),%eax
18005c58d:	ff c6                	inc    %esi
18005c58f:	3b f0                	cmp    %eax,%esi
18005c591:	72 bd                	jb     0x18005c550
18005c593:	ff c7                	inc    %edi
18005c595:	eb 82                	jmp    0x18005c519
18005c597:	48 8b 5c 24 38       	mov    0x38(%rsp),%rbx
18005c59c:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
18005c5a1:	48 83 c4 20          	add    $0x20,%rsp
18005c5a5:	5f                   	pop    %rdi
18005c5a6:	c3                   	ret
18005c5a7:	cc                   	int3
18005c5a8:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
18005c5ad:	48 89 6c 24 10       	mov    %rbp,0x10(%rsp)
18005c5b2:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
18005c5b7:	57                   	push   %rdi
18005c5b8:	48 83 ec 20          	sub    $0x20,%rsp
18005c5bc:	33 db                	xor    %ebx,%ebx
18005c5be:	49 8b f0             	mov    %r8,%rsi
18005c5c1:	41 21 18             	and    %ebx,(%r8)
18005c5c4:	8b ea                	mov    %edx,%ebp
18005c5c6:	48 8b f9             	mov    %rcx,%rdi
18005c5c9:	e8 36 f0 ff ff       	call   0x18005b604
18005c5ce:	83 f8 04             	cmp    $0x4,%eax
18005c5d1:	75 04                	jne    0x18005c5d7
18005c5d3:	32 c0                	xor    %al,%al
18005c5d5:	eb 37                	jmp    0x18005c60e
18005c5d7:	44 0f b6 4f 2b       	movzbl 0x2b(%rdi),%r9d
18005c5dc:	45 33 c0             	xor    %r8d,%r8d
18005c5df:	45 85 c9             	test   %r9d,%r9d
18005c5e2:	74 23                	je     0x18005c607
18005c5e4:	8b d5                	mov    %ebp,%edx
18005c5e6:	48 8b cf             	mov    %rdi,%rcx
18005c5e9:	e8 62 4d ff ff       	call   0x180051350
18005c5ee:	8a 48 02             	mov    0x2(%rax),%cl
18005c5f1:	8d 43 01             	lea    0x1(%rbx),%eax
18005c5f4:	80 e1 0f             	and    $0xf,%cl
18005c5f7:	80 f9 05             	cmp    $0x5,%cl
18005c5fa:	0f 45 c3             	cmovne %ebx,%eax
18005c5fd:	41 ff c0             	inc    %r8d
18005c600:	8b d8                	mov    %eax,%ebx
18005c602:	45 3b c1             	cmp    %r9d,%r8d
18005c605:	72 dd                	jb     0x18005c5e4
18005c607:	85 db                	test   %ebx,%ebx
18005c609:	89 1e                	mov    %ebx,(%rsi)
18005c60b:	0f 95 c0             	setne  %al
18005c60e:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
18005c613:	48 8b 6c 24 38       	mov    0x38(%rsp),%rbp
18005c618:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
18005c61d:	48 83 c4 20          	add    $0x20,%rsp
18005c621:	5f                   	pop    %rdi
18005c622:	c3                   	ret
18005c623:	cc                   	int3
18005c624:	48 89 5c 24 18       	mov    %rbx,0x18(%rsp)
18005c629:	55                   	push   %rbp
18005c62a:	56                   	push   %rsi
18005c62b:	57                   	push   %rdi
18005c62c:	41 54                	push   %r12
18005c62e:	41 55                	push   %r13
18005c630:	41 56                	push   %r14
18005c632:	41 57                	push   %r15
18005c634:	48 83 ec 30          	sub    $0x30,%rsp
18005c638:	48 8b f9             	mov    %rcx,%rdi
18005c63b:	33 db                	xor    %ebx,%ebx
18005c63d:	48 8b 49 20          	mov    0x20(%rcx),%rcx
18005c641:	48 8b 47 08          	mov    0x8(%rdi),%rax
18005c645:	48 85 c9             	test   %rcx,%rcx
18005c648:	74 06                	je     0x18005c650
18005c64a:	48 83 c1 38          	add    $0x38,%rcx
18005c64e:	eb 04                	jmp    0x18005c654
18005c650:	48 8d 48 30          	lea    0x30(%rax),%rcx
18005c654:	48 8b 49 08          	mov    0x8(%rcx),%rcx
18005c658:	8b eb                	mov    %ebx,%ebp
18005c65a:	4c 8b a0 a8 00 00 00 	mov    0xa8(%rax),%r12
18005c661:	48 89 4c 24 78       	mov    %rcx,0x78(%rsp)
18005c666:	48 8b 47 20          	mov    0x20(%rdi),%rax
18005c66a:	48 85 c0             	test   %rax,%rax
18005c66d:	74 06                	je     0x18005c675
18005c66f:	48 83 c0 58          	add    $0x58,%rax
18005c673:	eb 08                	jmp    0x18005c67d
18005c675:	48 8b 47 08          	mov    0x8(%rdi),%rax
18005c679:	48 83 c0 50          	add    $0x50,%rax
18005c67d:	3b 68 10             	cmp    0x10(%rax),%ebp
18005c680:	0f 83 3d 02 00 00    	jae    0x18005c8c3
18005c686:	4c 8d 44 24 70       	lea    0x70(%rsp),%r8
18005c68b:	89 5c 24 70          	mov    %ebx,0x70(%rsp)
18005c68f:	8b d5                	mov    %ebp,%edx
18005c691:	48 8b cf             	mov    %rdi,%rcx
18005c694:	41 83 cf ff          	or     $0xffffffff,%r15d
18005c698:	e8 0b ff ff ff       	call   0x18005c5a8
18005c69d:	84 c0                	test   %al,%al
18005c69f:	0f 84 12 02 00 00    	je     0x18005c8b7
18005c6a5:	44 8b f3             	mov    %ebx,%r14d
18005c6a8:	38 5f 2b             	cmp    %bl,0x2b(%rdi)
18005c6ab:	0f 86 06 02 00 00    	jbe    0x18005c8b7
18005c6b1:	45 8b c6             	mov    %r14d,%r8d
18005c6b4:	8b d5                	mov    %ebp,%edx
18005c6b6:	48 8b cf             	mov    %rdi,%rcx
18005c6b9:	e8 92 4c ff ff       	call   0x180051350
18005c6be:	48 8b d0             	mov    %rax,%rdx
18005c6c1:	4c 8b e8             	mov    %rax,%r13
18005c6c4:	e8 f3 4c ff ff       	call   0x1800513bc
18005c6c9:	41 f6 45 03 0f       	testb  $0xf,0x3(%r13)
18005c6ce:	48 8b f0             	mov    %rax,%rsi
18005c6d1:	0f 85 e0 01 00 00    	jne    0x18005c8b7
18005c6d7:	41 0f b6 4d 02       	movzbl 0x2(%r13),%ecx
18005c6dc:	83 e1 0f             	and    $0xf,%ecx
18005c6df:	83 e9 01             	sub    $0x1,%ecx
18005c6e2:	74 35                	je     0x18005c719
18005c6e4:	83 f9 04             	cmp    $0x4,%ecx
18005c6e7:	75 5e                	jne    0x18005c747
18005c6e9:	48 8b 00             	mov    (%rax),%rax
18005c6ec:	48 8b ce             	mov    %rsi,%rcx
18005c6ef:	48 8b 40 58          	mov    0x58(%rax),%rax
18005c6f3:	ff d0                	call   *%rax
18005c6f5:	0f 1f 00             	nopl   (%rax)
18005c6f8:	38 58 04             	cmp    %bl,0x4(%rax)
18005c6fb:	0f 85 b6 01 00 00    	jne    0x18005c8b7
18005c701:	44 8b c5             	mov    %ebp,%r8d
18005c704:	48 8b d6             	mov    %rsi,%rdx
18005c707:	48 8b cf             	mov    %rdi,%rcx
18005c70a:	e8 59 9d ff ff       	call   0x180056468
18005c70f:	84 c0                	test   %al,%al
18005c711:	0f 84 a0 01 00 00    	je     0x18005c8b7
18005c717:	eb 2e                	jmp    0x18005c747
18005c719:	41 83 ff ff          	cmp    $0xffffffff,%r15d
18005c71d:	75 28                	jne    0x18005c747
18005c71f:	48 8b 00             	mov    (%rax),%rax
18005c722:	48 8b ce             	mov    %rsi,%rcx
18005c725:	48 8b 40 58          	mov    0x58(%rax),%rax
18005c729:	ff d0                	call   *%rax
18005c72b:	0f 1f 00             	nopl   (%rax)
18005c72e:	38 58 04             	cmp    %bl,0x4(%rax)
18005c731:	75 14                	jne    0x18005c747
18005c733:	44 8b c5             	mov    %ebp,%r8d
18005c736:	48 8b d6             	mov    %rsi,%rdx
18005c739:	48 8b cf             	mov    %rdi,%rcx
18005c73c:	e8 27 9d ff ff       	call   0x180056468
18005c741:	84 c0                	test   %al,%al
18005c743:	45 0f 45 fe          	cmovne %r14d,%r15d
18005c747:	0f b6 47 2b          	movzbl 0x2b(%rdi),%eax
18005c74b:	41 ff c6             	inc    %r14d
18005c74e:	44 3b f0             	cmp    %eax,%r14d
18005c751:	0f 82 5a ff ff ff    	jb     0x18005c6b1
18005c757:	41 83 ff ff          	cmp    $0xffffffff,%r15d
18005c75b:	0f 84 56 01 00 00    	je     0x18005c8b7
18005c761:	b9 f8 00 00 00       	mov    $0xf8,%ecx
18005c766:	e8 a9 a1 fe ff       	call   0x180046914
18005c76b:	48 8b f0             	mov    %rax,%rsi
18005c76e:	48 85 c0             	test   %rax,%rax
18005c771:	74 29                	je     0x18005c79c
18005c773:	48 8b c8             	mov    %rax,%rcx
18005c776:	e8 ed a7 fe ff       	call   0x180046f68
18005c77b:	48 8d 0d a6 6c 0e 00 	lea    0xe6ca6(%rip),%rcx        # 0x180143428
18005c782:	48 89 9e e0 00 00 00 	mov    %rbx,0xe0(%rsi)
18005c789:	48 89 0e             	mov    %rcx,(%rsi)