18010bac1:	4c 8b c7             	mov    %rdi,%r8
18010bac4:	e8 7f e7 ff ff       	call   0x18010a248
18010bac9:	4c 8b 75 f8          	mov    -0x8(%rbp),%r14
18010bacd:	8b d8                	mov    %eax,%ebx
18010bacf:	85 c0                	test   %eax,%eax
18010bad1:	78 59                	js     0x18010bb2c
18010bad3:	48 8b 45 58          	mov    0x58(%rbp),%rax
18010bad7:	49 8b d6             	mov    %r14,%rdx
18010bada:	48 8b 4d 20          	mov    0x20(%rbp),%rcx
18010bade:	48 89 7c 24 38       	mov    %rdi,0x38(%rsp)
18010bae3:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
18010bae8:	48 8d 45 f0          	lea    -0x10(%rbp),%rax
18010baec:	48 89 44 24 28       	mov    %rax,0x28(%rsp)
18010baf1:	8b 45 40             	mov    0x40(%rbp),%eax
18010baf4:	89 44 24 20          	mov    %eax,0x20(%rsp)
18010baf8:	e8 47 01 00 00       	call   0x18010bc44
18010bafd:	48 8b 4d f0          	mov    -0x10(%rbp),%rcx
18010bb01:	8b d8                	mov    %eax,%ebx
18010bb03:	85 c0                	test   %eax,%eax
18010bb05:	78 15                	js     0x18010bb1c
18010bb07:	48 8b 45 48          	mov    0x48(%rbp),%rax
18010bb0b:	8b 51 04             	mov    0x4(%rcx),%edx
18010bb0e:	c1 ea 02             	shr    $0x2,%edx
18010bb11:	48 89 08             	mov    %rcx,(%rax)
18010bb14:	48 8b 45 50          	mov    0x50(%rbp),%rax
18010bb18:	89 10                	mov    %edx,(%rax)
18010bb1a:	eb 10                	jmp    0x18010bb2c
18010bb1c:	48 85 c9             	test   %rcx,%rcx
18010bb1f:	74 0b                	je     0x18010bb2c
18010bb21:	48 83 3f 00          	cmpq   $0x0,(%rdi)
18010bb25:	75 05                	jne    0x18010bb2c
18010bb27:	e8 d0 e4 f8 ff       	call   0x180099ffc
18010bb2c:	4d 85 f6             	test   %r14,%r14
18010bb2f:	74 0e                	je     0x18010bb3f
18010bb31:	48 83 3f 00          	cmpq   $0x0,(%rdi)
18010bb35:	75 08                	jne    0x18010bb3f
18010bb37:	49 8b ce             	mov    %r14,%rcx
18010bb3a:	e8 bd e4 f8 ff       	call   0x180099ffc
18010bb3f:	48 83 7d 20 00       	cmpq   $0x0,0x20(%rbp)
18010bb44:	74 0f                	je     0x18010bb55
18010bb46:	48 83 3f 00          	cmpq   $0x0,(%rdi)
18010bb4a:	75 09                	jne    0x18010bb55
18010bb4c:	48 8b 4d 20          	mov    0x20(%rbp),%rcx
18010bb50:	e8 a7 e4 f8 ff       	call   0x180099ffc
18010bb55:	8b c3                	mov    %ebx,%eax
18010bb57:	48 8b 5c 24 78       	mov    0x78(%rsp),%rbx
18010bb5c:	48 83 c4 50          	add    $0x50,%rsp
18010bb60:	41 5e                	pop    %r14
18010bb62:	5f                   	pop    %rdi
18010bb63:	5d                   	pop    %rbp
18010bb64:	c3                   	ret
18010bb65:	cc                   	int3
18010bb66:	cc                   	int3
18010bb67:	cc                   	int3
18010bb68:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
18010bb6d:	48 8b 41 08          	mov    0x8(%rcx),%rax
18010bb71:	4c 8b d2             	mov    %rdx,%r10
18010bb74:	45 33 c9             	xor    %r9d,%r9d
18010bb77:	0f b7 50 78          	movzwl 0x78(%rax),%edx
18010bb7b:	66 85 d2             	test   %dx,%dx
18010bb7e:	75 0a                	jne    0x18010bb8a
18010bb80:	b8 01 00 00 c0       	mov    $0xc0000001,%eax
18010bb85:	e9 b0 00 00 00       	jmp    0x18010bc3a
18010bb8a:	44 8b 58 60          	mov    0x60(%rax),%r11d
18010bb8e:	48 8d 1c d2          	lea    (%rdx,%rdx,8),%rbx
18010bb92:	8b 41 10             	mov    0x10(%rcx),%eax
18010bb95:	4c 0f af d8          	imul   %rax,%r11
18010bb99:	49 0f bf 42 02       	movswq 0x2(%r10),%rax
18010bb9e:	49 c1 e3 06          	shl    $0x6,%r11
18010bba2:	49 0f af c3          	imul   %r11,%rax
18010bba6:	48 c1 e3 03          	shl    $0x3,%rbx
18010bbaa:	48 99                	cqto
18010bbac:	48 f7 fb             	idiv   %rbx
18010bbaf:	41 89 42 02          	mov    %eax,0x2(%r10)
18010bbb3:	49 0f bf 42 06       	movswq 0x6(%r10),%rax
18010bbb8:	49 0f af c3          	imul   %r11,%rax
18010bbbc:	48 99                	cqto
18010bbbe:	48 f7 fb             	idiv   %rbx
18010bbc1:	41 89 42 06          	mov    %eax,0x6(%r10)
18010bbc5:	49 0f bf 42 0a       	movswq 0xa(%r10),%rax
18010bbca:	49 0f af c3          	imul   %r11,%rax
18010bbce:	48 99                	cqto
18010bbd0:	48 f7 fb             	idiv   %rbx
18010bbd3:	41 89 42 0a          	mov    %eax,0xa(%r10)
18010bbd7:	49 0f bf 42 0e       	movswq 0xe(%r10),%rax
18010bbdc:	49 0f af c3          	imul   %r11,%rax
18010bbe0:	48 99                	cqto
18010bbe2:	48 f7 fb             	idiv   %rbx
18010bbe5:	41 89 42 0e          	mov    %eax,0xe(%r10)
18010bbe9:	49 0f bf 42 12       	movswq 0x12(%r10),%rax
18010bbee:	49 0f af c3          	imul   %r11,%rax
18010bbf2:	48 99                	cqto
18010bbf4:	48 f7 fb             	idiv   %rbx
18010bbf7:	41 89 42 12          	mov    %eax,0x12(%r10)
18010bbfb:	eb 34                	jmp    0x18010bc31
18010bbfd:	49 8b 4a 32          	mov    0x32(%r10),%rcx
18010bc01:	45 0f b7 c1          	movzwl %r9w,%r8d
18010bc05:	4a 0f bf 04 81       	movswq (%rcx,%r8,4),%rax
18010bc0a:	49 0f af c3          	imul   %r11,%rax
18010bc0e:	48 99                	cqto
18010bc10:	48 f7 fb             	idiv   %rbx
18010bc13:	42 89 04 81          	mov    %eax,(%rcx,%r8,4)
18010bc17:	49 8b 4a 3a          	mov    0x3a(%r10),%rcx
18010bc1b:	4a 0f bf 04 81       	movswq (%rcx,%r8,4),%rax
18010bc20:	49 0f af c3          	imul   %r11,%rax
18010bc24:	48 99                	cqto
18010bc26:	48 f7 fb             	idiv   %rbx
18010bc29:	66 41 ff c1          	inc    %r9w
18010bc2d:	42 89 04 81          	mov    %eax,(%rcx,%r8,4)
18010bc31:	66 45 3b 4a 18       	cmp    0x18(%r10),%r9w
18010bc36:	72 c5                	jb     0x18010bbfd
18010bc38:	33 c0                	xor    %eax,%eax
18010bc3a:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
18010bc3f:	c3                   	ret
18010bc40:	cc                   	int3
18010bc41:	cc                   	int3
18010bc42:	cc                   	int3
18010bc43:	cc                   	int3
18010bc44:	48 89 5c 24 10       	mov    %rbx,0x10(%rsp)
18010bc49:	44 89 4c 24 20       	mov    %r9d,0x20(%rsp)
18010bc4e:	44 89 44 24 18       	mov    %r8d,0x18(%rsp)
18010bc53:	55                   	push   %rbp
18010bc54:	56                   	push   %rsi
18010bc55:	57                   	push   %rdi
18010bc56:	41 54                	push   %r12
18010bc58:	41 55                	push   %r13
18010bc5a:	41 56                	push   %r14
18010bc5c:	41 57                	push   %r15
18010bc5e:	48 8b ec             	mov    %rsp,%rbp
18010bc61:	48 83 ec 60          	sub    $0x60,%rsp
18010bc65:	44 8b 7d 60          	mov    0x60(%rbp),%r15d
18010bc69:	4c 8b f2             	mov    %rdx,%r14
18010bc6c:	48 83 65 40 00       	andq   $0x0,0x40(%rbp)
18010bc71:	41 83 e7 01          	and    $0x1,%r15d
18010bc75:	48 83 65 e8 00       	andq   $0x0,-0x18(%rbp)
18010bc7a:	48 8b f1             	mov    %rcx,%rsi
18010bc7d:	44 0f b7 41 18       	movzwl 0x18(%rcx),%r8d
18010bc82:	41 83 f8 02          	cmp    $0x2,%r8d
18010bc86:	73 0a                	jae    0x18010bc92
18010bc88:	bb 0d 00 00 c0       	mov    $0xc000000d,%ebx
18010bc8d:	e9 c6 03 00 00       	jmp    0x18010c058
18010bc92:	4c 8b 65 78          	mov    0x78(%rbp),%r12
18010bc96:	48 8d 45 d4          	lea    -0x2c(%rbp),%rax
18010bc9a:	4c 89 64 24 28       	mov    %r12,0x28(%rsp)
18010bc9f:	4c 8d 4d e8          	lea    -0x18(%rbp),%r9
18010bca3:	48 89 44 24 20       	mov    %rax,0x20(%rsp)
18010bca8:	e8 4b e6 ff ff       	call   0x18010a2f8
18010bcad:	8b d8                	mov    %eax,%ebx
18010bcaf:	85 c0                	test   %eax,%eax
18010bcb1:	0f 88 8a 03 00 00    	js     0x18010c041
18010bcb7:	8b 46 0e             	mov    0xe(%rsi),%eax
18010bcba:	bb 00 00 00 fc       	mov    $0xfc000000,%ebx
18010bcbf:	44 0f b7 46 18       	movzwl 0x18(%rsi),%r8d
18010bcc4:	8b f8                	mov    %eax,%edi
18010bcc6:	c1 ff 06             	sar    $0x6,%edi
18010bcc9:	41 83 e8 02          	sub    $0x2,%r8d
18010bccd:	89 7d 58             	mov    %edi,0x58(%rbp)
18010bcd0:	85 c0                	test   %eax,%eax
18010bcd2:	79 04                	jns    0x18010bcd8
18010bcd4:	0b fb                	or     %ebx,%edi
18010bcd6:	eb 06                	jmp    0x18010bcde
18010bcd8:	a8 3f                	test   $0x3f,%al
18010bcda:	74 05                	je     0x18010bce1
18010bcdc:	ff c7                	inc    %edi
18010bcde:	89 7d 58             	mov    %edi,0x58(%rbp)
18010bce1:	8b 4e 06             	mov    0x6(%rsi),%ecx
18010bce4:	8b c1                	mov    %ecx,%eax
18010bce6:	c1 f8 06             	sar    $0x6,%eax
18010bce9:	85 c9                	test   %ecx,%ecx
18010bceb:	79 04                	jns    0x18010bcf1
18010bced:	0b c3                	or     %ebx,%eax
18010bcef:	eb 07                	jmp    0x18010bcf8
18010bcf1:	f6 c1 3f             	test   $0x3f,%cl
18010bcf4:	74 02                	je     0x18010bcf8
18010bcf6:	ff c0                	inc    %eax
18010bcf8:	44 8b df             	mov    %edi,%r11d
18010bcfb:	44 2b d8             	sub    %eax,%r11d
18010bcfe:	41 ff c3             	inc    %r11d
18010bd01:	41 83 fb 01          	cmp    $0x1,%r11d
18010bd05:	75 2d                	jne    0x18010bd34
18010bd07:	41 8d 48 01          	lea    0x1(%r8),%ecx
18010bd0b:	48 6b c1 11          	imul   $0x11,%rcx,%rax
18010bd0f:	42 8b 54 30 04       	mov    0x4(%rax,%r14,1),%edx
18010bd14:	8b c2                	mov    %edx,%eax
18010bd16:	c1 f8 06             	sar    $0x6,%eax
18010bd19:	8b c8                	mov    %eax,%ecx
18010bd1b:	0b cb                	or     %ebx,%ecx
18010bd1d:	85 d2                	test   %edx,%edx
18010bd1f:	0f 49 c8             	cmovns %eax,%ecx
18010bd22:	f6 c2 20             	test   $0x20,%dl
18010bd25:	44 8d 59 01          	lea    0x1(%rcx),%r11d
18010bd29:	44 0f 44 d9          	cmove  %ecx,%r11d
18010bd2d:	41 8b fb             	mov    %r11d,%edi
18010bd30:	44 89 5d 58          	mov    %r11d,0x58(%rbp)
18010bd34:	41 8d 48 01          	lea    0x1(%r8),%ecx
18010bd38:	41 8b c0             	mov    %r8d,%eax
18010bd3b:	48 6b d1 11          	imul   $0x11,%rcx,%rdx
18010bd3f:	48 6b c8 11          	imul   $0x11,%rax,%rcx
18010bd43:	46 8b 44 32 08       	mov    0x8(%rdx,%r14,1),%r8d
18010bd48:	46 8b 0c 31          	mov    (%rcx,%r14,1),%r9d
18010bd4c:	45 2b c1             	sub    %r9d,%r8d
18010bd4f:	46 8b 54 31 08       	mov    0x8(%rcx,%r14,1),%r10d
18010bd54:	45 2b c2             	sub    %r10d,%r8d
18010bd57:	46 03 04 32          	add    (%rdx,%r14,1),%r8d
18010bd5b:	ba 01 00 00 00       	mov    $0x1,%edx
18010bd60:	41 8b c0             	mov    %r8d,%eax
18010bd63:	c1 f8 06             	sar    $0x6,%eax
18010bd66:	8b c8                	mov    %eax,%ecx
18010bd68:	0b cb                	or     %ebx,%ecx
18010bd6a:	45 85 c0             	test   %r8d,%r8d
18010bd6d:	0f 49 c8             	cmovns %eax,%ecx
18010bd70:	41 f6 c0 20          	test   $0x20,%r8b
18010bd74:	41 8b c3             	mov    %r11d,%eax
18010bd77:	44 8d 69 01          	lea    0x1(%rcx),%r13d
18010bd7b:	44 0f 44 e9          	cmove  %ecx,%r13d
18010bd7f:	c1 e0 02             	shl    $0x2,%eax
18010bd82:	41 c1 e5 02          	shl    $0x2,%r13d
18010bd86:	43 8d 0c 11          	lea    (%r9,%r10,1),%ecx
18010bd8a:	89 4d e0             	mov    %ecx,-0x20(%rbp)
18010bd8d:	48 8d 4d f0          	lea    -0x10(%rbp),%rcx
18010bd91:	44 89 6d 60          	mov    %r13d,0x60(%rbp)
18010bd95:	89 45 d0             	mov    %eax,-0x30(%rbp)
18010bd98:	89 45 f4             	mov    %eax,-0xc(%rbp)
18010bd9b:	44 89 6d f0          	mov    %r13d,-0x10(%rbp)
18010bd9f:	44 89 6d f8          	mov    %r13d,-0x8(%rbp)
18010bda3:	45 84 ff             	test   %r15b,%r15b
18010bda6:	75 14                	jne    0x18010bdbc
18010bda8:	4d 8b cc             	mov    %r12,%r9
18010bdab:	4c 8d 45 40          	lea    0x40(%rbp),%r8
18010bdaf:	e8 d0 08 00 00       	call   0x18010c684
18010bdb4:	4c 8b 75 40          	mov    0x40(%rbp),%r14
18010bdb8:	8b d8                	mov    %eax,%ebx
18010bdba:	eb 1f                	jmp    0x18010bddb
18010bdbc:	4c 8d 35 9d 85 08 00 	lea    0x8859d(%rip),%r14        # 0x180194360
18010bdc3:	41 b9 44 0c 00 00    	mov    $0xc44,%r9d
18010bdc9:	4d 8b c6             	mov    %r14,%r8
18010bdcc:	e8 17 bd ff ff       	call   0x180107ae8
18010bdd1:	8b d8                	mov    %eax,%ebx
18010bdd3:	85 c0                	test   %eax,%eax
18010bdd5:	0f 88 66 02 00 00    	js     0x18010c041
18010bddb:	85 db                	test   %ebx,%ebx
18010bddd:	0f 88 4a 02 00 00    	js     0x18010c02d
18010bde3:	45 8b 46 0c          	mov    0xc(%r14),%r8d
18010bde7:	33 d2                	xor    %edx,%edx
18010bde9:	49 8b 4e 18          	mov    0x18(%r14),%rcx
18010bded:	e8 8e 9e 02 00       	call   0x180135c80
18010bdf2:	48 83 7d e8 00       	cmpq   $0x0,-0x18(%rbp)
18010bdf7:	75 14                	jne    0x18010be0d
18010bdf9:	48 8b 45 68          	mov    0x68(%rbp),%rax
18010bdfd:	4c 89 30             	mov    %r14,(%rax)
18010be00:	48 8b 45 70          	mov    0x70(%rbp),%rax
18010be04:	89 38                	mov    %edi,(%rax)
18010be06:	33 c0                	xor    %eax,%eax
18010be08:	e9 4d 02 00 00       	jmp    0x18010c05a
18010be0d:	48 8d 05 9c 91 08 00 	lea    0x8919c(%rip),%rax        # 0x180194fb0
18010be14:	45 84 ff             	test   %r15b,%r15b
18010be17:	75 11                	jne    0x18010be2a
18010be19:	49 63 cd             	movslq %r13d,%rcx
18010be1c:	49 8b d4             	mov    %r12,%rdx
18010be1f:	48 c1 e1 02          	shl    $0x2,%rcx
18010be23:	e8 e8 07 00 00       	call   0x18010c610
18010be28:	eb 0a                	jmp    0x18010be34
18010be2a:	41 83 fd 68          	cmp    $0x68,%r13d
18010be2e:	0f 8f f4 01 00 00    	jg     0x18010c028
18010be34:	48 8b f0             	mov    %rax,%rsi
18010be37:	48 85 c0             	test   %rax,%rax
18010be3a:	0f 84 e8 01 00 00    	je     0x18010c028
18010be40:	83 65 50 00          	andl   $0x0,0x50(%rbp)
18010be44:	45 33 ff             	xor    %r15d,%r15d
18010be47:	4d 63 ed             	movslq %r13d,%r13
18010be4a:	44 89 7d 40          	mov    %r15d,0x40(%rbp)
18010be4e:	4c 89 6d f0          	mov    %r13,-0x10(%rbp)
18010be52:	44 39 7d d0          	cmp    %r15d,-0x30(%rbp)
18010be56:	0f 8e a6 01 00 00    	jle    0x18010c002
18010be5c:	44 8b 65 60          	mov    0x60(%rbp),%r12d
18010be60:	8b c7                	mov    %edi,%eax
18010be62:	8b 7d 50             	mov    0x50(%rbp),%edi
18010be65:	49 8b cd             	mov    %r13,%rcx
18010be68:	48 c1 e1 02          	shl    $0x2,%rcx
18010be6c:	c1 e0 06             	shl    $0x6,%eax
18010be6f:	89 45 d8             	mov    %eax,-0x28(%rbp)
18010be72:	4c 8b c1             	mov    %rcx,%r8
18010be75:	33 d2                	xor    %edx,%edx
18010be77:	48 8b ce             	mov    %rsi,%rcx
18010be7a:	e8 01 9e 02 00       	call   0x180135c80
18010be7f:	8b 4d d4             	mov    -0x2c(%rbp),%ecx
18010be82:	41 8b df             	mov    %r15d,%ebx
18010be85:	83 e3 03             	and    $0x3,%ebx
18010be88:	41 8b c7             	mov    %r15d,%eax
18010be8b:	f7 db                	neg    %ebx
18010be8d:	c1 e8 02             	shr    $0x2,%eax
18010be90:	c1 e3 04             	shl    $0x4,%ebx
18010be93:	c1 e0 06             	shl    $0x6,%eax
18010be96:	2b d8                	sub    %eax,%ebx
18010be98:	03 5d d8             	add    -0x28(%rbp),%ebx
18010be9b:	85 c9                	test   %ecx,%ecx
18010be9d:	0f 84 ec 00 00 00    	je     0x18010bf8f
18010bea3:	4c 8b 7d e8          	mov    -0x18(%rbp),%r15
18010bea7:	44 8b e1             	mov    %ecx,%r12d
18010beaa:	49 83 c7 18          	add    $0x18,%r15
18010beae:	4c 8d 4d 50          	lea    0x50(%rbp),%r9
18010beb2:	8b d3                	mov    %ebx,%edx
18010beb4:	4c 8d 45 dc          	lea    -0x24(%rbp),%r8
18010beb8:	49 8d 4f e8          	lea    -0x18(%r15),%rcx
18010bebc:	e8 b3 01 00 00       	call   0x18010c074
18010bec1:	44 8b 55 dc          	mov    -0x24(%rbp),%r10d
18010bec5:	41 81 fa ff ff ff 7f 	cmp    $0x7fffffff,%r10d
18010becc:	0f 84 a3 00 00 00    	je     0x18010bf75
18010bed2:	49 8b 47 f8          	mov    -0x8(%r15),%rax
18010bed6:	49 8b 4f e8          	mov    -0x18(%r15),%rcx
18010beda:	44 8b 48 04          	mov    0x4(%rax),%r9d
18010bede:	41 8b d1             	mov    %r9d,%edx
18010bee1:	2b 51 0c             	sub    0xc(%rcx),%edx
18010bee4:	2b 51 04             	sub    0x4(%rcx),%edx
18010bee7:	44 8b 40 0c          	mov    0xc(%rax),%r8d
18010beeb:	41 03 d0             	add    %r8d,%edx
18010beee:	75 16                	jne    0x18010bf06
18010bef0:	41 80 3f 01          	cmpb   $0x1,(%r15)
18010bef4:	74 24                	je     0x18010bf1a
18010bef6:	49 8b 47 f0          	mov    -0x10(%r15),%rax
18010befa:	41 8b d1             	mov    %r9d,%edx
18010befd:	2b 50 0c             	sub    0xc(%rax),%edx
18010bf00:	2b 50 04             	sub    0x4(%rax),%edx
18010bf03:	41 03 d0             	add    %r8d,%edx
18010bf06:	85 d2                	test   %edx,%edx
18010bf08:	7e 08                	jle    0x18010bf12
18010bf0a:	41 b8 01 00 00 00    	mov    $0x1,%r8d
18010bf10:	eb 0b                	jmp    0x18010bf1d
18010bf12:	79 06                	jns    0x18010bf1a
18010bf14:	41 83 c8 ff          	or     $0xffffffff,%r8d
18010bf18:	eb 03                	jmp    0x18010bf1d
18010bf1a:	45 33 c0             	xor    %r8d,%r8d
18010bf1d:	4c 8b 6d f0          	mov    -0x10(%rbp),%r13
18010bf21:	45 33 c9             	xor    %r9d,%r9d
18010bf24:	33 c9                	xor    %ecx,%ecx
18010bf26:	4d 85 ed             	test   %r13,%r13
18010bf29:	7e 4e                	jle    0x18010bf79
18010bf2b:	44 8b 5d e0          	mov    -0x20(%rbp),%r11d
18010bf2f:	41 8b c1             	mov    %r9d,%eax
18010bf32:	41 8b d1             	mov    %r9d,%edx
18010bf35:	c1 e0 04             	shl    $0x4,%eax
18010bf38:	83 e2 03             	and    $0x3,%edx
18010bf3b:	83 e0 c0             	and    $0xffffffc0,%eax
18010bf3e:	c1 e2 04             	shl    $0x4,%edx
18010bf41:	41 03 c3             	add    %r11d,%eax
18010bf44:	03 d0                	add    %eax,%edx
18010bf46:	41 80 3f 01          	cmpb   $0x1,(%r15)
18010bf4a:	75 05                	jne    0x18010bf51
18010bf4c:	41 3b d2             	cmp    %r10d,%edx
18010bf4f:	eb 11                	jmp    0x18010bf62