1800489aa:	0f b7 47 04          	movzwl 0x4(%rdi),%eax
1800489ae:	4c 8b c3             	mov    %rbx,%r8
1800489b1:	66 89 43 14          	mov    %ax,0x14(%rbx)
1800489b5:	89 6b 18             	mov    %ebp,0x18(%rbx)
1800489b8:	e8 63 af ff ff       	call   0x180043920
1800489bd:	8b f8                	mov    %eax,%edi
1800489bf:	85 c0                	test   %eax,%eax
1800489c1:	78 0a                	js     0x1800489cd
1800489c3:	48 89 1e             	mov    %rbx,(%rsi)
1800489c6:	eb 12                	jmp    0x1800489da
1800489c8:	bf 01 00 00 c0       	mov    $0xc0000001,%edi
1800489cd:	48 85 db             	test   %rbx,%rbx
1800489d0:	74 08                	je     0x1800489da
1800489d2:	48 8b cb             	mov    %rbx,%rcx
1800489d5:	e8 82 df ff ff       	call   0x18004695c
1800489da:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
1800489df:	8b c7                	mov    %edi,%eax
1800489e1:	48 8b 6c 24 48       	mov    0x48(%rsp),%rbp
1800489e6:	48 8b 74 24 50       	mov    0x50(%rsp),%rsi
1800489eb:	48 83 c4 20          	add    $0x20,%rsp
1800489ef:	41 5f                	pop    %r15
1800489f1:	41 5e                	pop    %r14
1800489f3:	5f                   	pop    %rdi
1800489f4:	c3                   	ret
1800489f5:	cc                   	int3
1800489f6:	cc                   	int3
1800489f7:	cc                   	int3
1800489f8:	48 8b c4             	mov    %rsp,%rax
1800489fb:	4c 89 40 18          	mov    %r8,0x18(%rax)
1800489ff:	48 89 50 10          	mov    %rdx,0x10(%rax)
180048a03:	53                   	push   %rbx
180048a04:	55                   	push   %rbp
180048a05:	56                   	push   %rsi
180048a06:	57                   	push   %rdi
180048a07:	41 54                	push   %r12
180048a09:	41 55                	push   %r13
180048a0b:	41 56                	push   %r14
180048a0d:	41 57                	push   %r15
180048a0f:	48 83 ec 48          	sub    $0x48,%rsp
180048a13:	44 8b 89 90 00 00 00 	mov    0x90(%rcx),%r9d
180048a1a:	33 db                	xor    %ebx,%ebx
180048a1c:	48 89 58 20          	mov    %rbx,0x20(%rax)
180048a20:	4d 8b f8             	mov    %r8,%r15
180048a23:	41 89 18             	mov    %ebx,(%r8)
180048a26:	41 8b c1             	mov    %r9d,%eax
180048a29:	44 8b 41 4c          	mov    0x4c(%rcx),%r8d
180048a2d:	f7 d8                	neg    %eax
180048a2f:	48 89 1a             	mov    %rbx,(%rdx)
180048a32:	41 ff c8             	dec    %r8d
180048a35:	45 03 c1             	add    %r9d,%r8d
180048a38:	c6 84 24 90 00 00 00 	movb   $0x1,0x90(%rsp)
180048a3f:	01
180048a40:	48 8b f9             	mov    %rcx,%rdi
180048a43:	89 5c 24 20          	mov    %ebx,0x20(%rsp)
180048a47:	41 23 c0             	and    %r8d,%eax
180048a4a:	33 d2                	xor    %edx,%edx
180048a4c:	41 f7 f1             	div    %r9d
180048a4f:	44 8b eb             	mov    %ebx,%r13d
180048a52:	8b f0                	mov    %eax,%esi
180048a54:	89 44 24 24          	mov    %eax,0x24(%rsp)
180048a58:	8d 48 1f             	lea    0x1f(%rax),%ecx
180048a5b:	48 c1 e9 03          	shr    $0x3,%rcx
180048a5f:	81 e1 fc ff ff 1f    	and    $0x1ffffffc,%ecx
180048a65:	e8 aa de ff ff       	call   0x180046914
180048a6a:	48 85 c0             	test   %rax,%rax
180048a6d:	75 0a                	jne    0x180048a79
180048a6f:	bb 9a 00 00 c0       	mov    $0xc000009a,%ebx
180048a74:	e9 28 02 00 00       	jmp    0x180048ca1
180048a79:	4c 8d b7 a8 00 00 00 	lea    0xa8(%rdi),%r14
180048a80:	48 8d af c8 00 00 00 	lea    0xc8(%rdi),%rbp
180048a87:	41 89 36             	mov    %esi,(%r14)
180048a8a:	48 8b cd             	mov    %rbp,%rcx
180048a8d:	49 89 46 08          	mov    %rax,0x8(%r14)
180048a91:	48 8d 94 24 a8 00 00 	lea    0xa8(%rsp),%rdx
180048a98:	00
180048a99:	e8 66 b0 ff ff       	call   0x180043b04
180048a9e:	41 83 cc ff          	or     $0xffffffff,%r12d
180048aa2:	48 85 c0             	test   %rax,%rax
180048aa5:	74 60                	je     0x180048b07
180048aa7:	8b 70 18             	mov    0x18(%rax),%esi
180048aaa:	eb 3d                	jmp    0x180048ae9
180048aac:	48 8b 8f b0 00 00 00 	mov    0xb0(%rdi),%rcx
180048ab3:	33 d2                	xor    %edx,%edx
180048ab5:	8b c6                	mov    %esi,%eax
180048ab7:	f7 b7 90 00 00 00    	divl   0x90(%rdi)
180048abd:	44 8b c0             	mov    %eax,%r8d
180048ac0:	4c 0f a3 01          	bt     %r8,(%rcx)
180048ac4:	72 16                	jb     0x180048adc
180048ac6:	41 b8 01 00 00 00    	mov    $0x1,%r8d
180048acc:	8b d0                	mov    %eax,%edx
180048ace:	49 8b ce             	mov    %r14,%rcx
180048ad1:	e8 5e 6e fe ff       	call   0x18002f934
180048ad6:	ff 87 a4 00 00 00    	incl   0xa4(%rdi)
180048adc:	8b d6                	mov    %esi,%edx
180048ade:	48 8b cf             	mov    %rdi,%rcx
180048ae1:	e8 2a f6 ff ff       	call   0x180048110
180048ae6:	8b 70 04             	mov    0x4(%rax),%esi
180048ae9:	41 3b f4             	cmp    %r12d,%esi
180048aec:	75 be                	jne    0x180048aac
180048aee:	48 8d 94 24 a8 00 00 	lea    0xa8(%rsp),%rdx
180048af5:	00
180048af6:	48 8b cd             	mov    %rbp,%rcx
180048af9:	e8 0e b1 ff ff       	call   0x180043c0c
180048afe:	48 85 c0             	test   %rax,%rax
180048b01:	75 a4                	jne    0x180048aa7
180048b03:	8b 74 24 24          	mov    0x24(%rsp),%esi
180048b07:	48 8b 87 b0 00 00 00 	mov    0xb0(%rdi),%rax
180048b0e:	48 0f ba 20 00       	btq    $0x0,(%rax)
180048b13:	72 1b                	jb     0x180048b30
180048b15:	33 d2                	xor    %edx,%edx
180048b17:	49 8b ce             	mov    %r14,%rcx
180048b1a:	44 8d 42 01          	lea    0x1(%rdx),%r8d
180048b1e:	e8 11 6e fe ff       	call   0x18002f934
180048b23:	ff 87 a4 00 00 00    	incl   0xa4(%rdi)
180048b29:	88 9c 24 90 00 00 00 	mov    %bl,0x90(%rsp)
180048b30:	8b 8f 90 00 00 00    	mov    0x90(%rdi),%ecx
180048b36:	0f af 8f a4 00 00 00 	imul   0xa4(%rdi),%ecx
180048b3d:	c1 e1 02             	shl    $0x2,%ecx
180048b40:	e8 cf dd ff ff       	call   0x180046914
180048b45:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
180048b4a:	48 85 c0             	test   %rax,%rax
180048b4d:	0f 84 1c ff ff ff    	je     0x180048a6f
180048b53:	44 8b e3             	mov    %ebx,%r12d
180048b56:	85 f6                	test   %esi,%esi
180048b58:	0f 84 1b 01 00 00    	je     0x180048c79
180048b5e:	48 8b cb             	mov    %rbx,%rcx
180048b61:	48 89 5c 24 28       	mov    %rbx,0x28(%rsp)
180048b66:	48 8b 87 b0 00 00 00 	mov    0xb0(%rdi),%rax
180048b6d:	48 0f a3 08          	bt     %rcx,(%rax)
180048b71:	0f 83 e1 00 00 00    	jae    0x180048c58
180048b77:	8b af 90 00 00 00    	mov    0x90(%rdi),%ebp
180048b7d:	44 8b fb             	mov    %ebx,%r15d
180048b80:	85 ed                	test   %ebp,%ebp
180048b82:	0f 84 d0 00 00 00    	je     0x180048c58
180048b88:	44 8b ed             	mov    %ebp,%r13d
180048b8b:	48 8b cf             	mov    %rdi,%rcx
180048b8e:	45 0f af ec          	imul   %r12d,%r13d
180048b92:	45 03 ef             	add    %r15d,%r13d
180048b95:	41 8b d5             	mov    %r13d,%edx
180048b98:	e8 73 f5 ff ff       	call   0x180048110
180048b9d:	8b f5                	mov    %ebp,%esi
180048b9f:	48 85 c0             	test   %rax,%rax
180048ba2:	0f 84 94 00 00 00    	je     0x180048c3c
180048ba8:	44 8b 30             	mov    (%rax),%r14d
180048bab:	48 8d 8f c8 00 00 00 	lea    0xc8(%rdi),%rcx
180048bb2:	41 8b d6             	mov    %r14d,%edx
180048bb5:	e8 22 ad ff ff       	call   0x1800438dc
180048bba:	48 85 c0             	test   %rax,%rax
180048bbd:	75 7d                	jne    0x180048c3c
180048bbf:	41 8b d6             	mov    %r14d,%edx
180048bc2:	48 8b cf             	mov    %rdi,%rcx
180048bc5:	e8 46 f5 ff ff       	call   0x180048110
180048bca:	83 78 04 ff          	cmpl   $0xffffffff,0x4(%rax)
180048bce:	74 4e                	je     0x180048c1e
180048bd0:	8a c3                	mov    %bl,%al
180048bd2:	45 8b c6             	mov    %r14d,%r8d
180048bd5:	45 3b f5             	cmp    %r13d,%r14d
180048bd8:	74 40                	je     0x180048c1a
180048bda:	4c 8b af b0 00 00 00 	mov    0xb0(%rdi),%r13
180048be1:	33 d2                	xor    %edx,%edx
180048be3:	41 8b c0             	mov    %r8d,%eax
180048be6:	f7 f5                	div    %ebp
180048be8:	8b c8                	mov    %eax,%ecx
180048bea:	49 0f a3 4d 00       	bt     %rcx,0x0(%r13)
180048bef:	72 27                	jb     0x180048c18
180048bf1:	41 8b d0             	mov    %r8d,%edx
180048bf4:	48 8b cf             	mov    %rdi,%rcx
180048bf7:	e8 14 f5 ff ff       	call   0x180048110
180048bfc:	8b b7 90 00 00 00    	mov    0x90(%rdi),%esi
180048c02:	44 8b 40 04          	mov    0x4(%rax),%r8d
180048c06:	8b c6                	mov    %esi,%eax
180048c08:	41 0f af c4          	imul   %r12d,%eax
180048c0c:	41 03 c7             	add    %r15d,%eax
180048c0f:	44 3b c0             	cmp    %eax,%r8d
180048c12:	75 cd                	jne    0x180048be1
180048c14:	8a c3                	mov    %bl,%al
180048c16:	eb 02                	jmp    0x180048c1a
180048c18:	b0 01                	mov    $0x1,%al
180048c1a:	84 c0                	test   %al,%al
180048c1c:	75 1e                	jne    0x180048c3c
180048c1e:	44 8b 6c 24 20       	mov    0x20(%rsp),%r13d
180048c23:	48 8b 4c 24 30       	mov    0x30(%rsp),%rcx
180048c28:	46 89 34 a9          	mov    %r14d,(%rcx,%r13,4)
180048c2c:	41 ff c5             	inc    %r13d
180048c2f:	8b b7 90 00 00 00    	mov    0x90(%rdi),%esi
180048c35:	44 89 6c 24 20       	mov    %r13d,0x20(%rsp)
180048c3a:	eb 05                	jmp    0x180048c41
180048c3c:	44 8b 6c 24 20       	mov    0x20(%rsp),%r13d
180048c41:	41 ff c7             	inc    %r15d
180048c44:	8b ee                	mov    %esi,%ebp
180048c46:	44 3b fe             	cmp    %esi,%r15d
180048c49:	0f 82 39 ff ff ff    	jb     0x180048b88
180048c4f:	48 8b 4c 24 28       	mov    0x28(%rsp),%rcx
180048c54:	8b 74 24 24          	mov    0x24(%rsp),%esi
180048c58:	48 ff c1             	inc    %rcx
180048c5b:	41 ff c4             	inc    %r12d
180048c5e:	48 89 4c 24 28       	mov    %rcx,0x28(%rsp)
180048c63:	44 3b e6             	cmp    %esi,%r12d
180048c66:	0f 82 fa fe ff ff    	jb     0x180048b66
180048c6c:	48 8b 44 24 30       	mov    0x30(%rsp),%rax
180048c71:	4c 8b bc 24 a0 00 00 	mov    0xa0(%rsp),%r15
180048c78:	00
180048c79:	38 9c 24 90 00 00 00 	cmp    %bl,0x90(%rsp)
180048c80:	75 11                	jne    0x180048c93
180048c82:	48 8b 8f b0 00 00 00 	mov    0xb0(%rdi),%rcx
180048c89:	0f ba 31 00          	btrl   $0x0,(%rcx)
180048c8d:	ff 8f a4 00 00 00    	decl   0xa4(%rdi)
180048c93:	48 8b 8c 24 98 00 00 	mov    0x98(%rsp),%rcx
180048c9a:	00
180048c9b:	45 89 2f             	mov    %r13d,(%r15)
180048c9e:	48 89 01             	mov    %rax,(%rcx)
180048ca1:	8b c3                	mov    %ebx,%eax
180048ca3:	48 83 c4 48          	add    $0x48,%rsp
180048ca7:	41 5f                	pop    %r15
180048ca9:	41 5e                	pop    %r14
180048cab:	41 5d                	pop    %r13
180048cad:	41 5c                	pop    %r12
180048caf:	5f                   	pop    %rdi
180048cb0:	5e                   	pop    %rsi
180048cb1:	5d                   	pop    %rbp
180048cb2:	5b                   	pop    %rbx
180048cb3:	c3                   	ret
180048cb4:	cc                   	int3
180048cb5:	cc                   	int3
180048cb6:	cc                   	int3
180048cb7:	cc                   	int3
180048cb8:	48 8b 41 38          	mov    0x38(%rcx),%rax
180048cbc:	c3                   	ret
180048cbd:	cc                   	int3
180048cbe:	cc                   	int3
180048cbf:	cc                   	int3
180048cc0:	48 89 5c 24 18       	mov    %rbx,0x18(%rsp)
180048cc5:	48 89 54 24 10       	mov    %rdx,0x10(%rsp)
180048cca:	55                   	push   %rbp
180048ccb:	56                   	push   %rsi
180048ccc:	57                   	push   %rdi
180048ccd:	41 54                	push   %r12
180048ccf:	41 55                	push   %r13
180048cd1:	41 56                	push   %r14
180048cd3:	41 57                	push   %r15
180048cd5:	48 8b ec             	mov    %rsp,%rbp
180048cd8:	48 83 ec 60          	sub    $0x60,%rsp
180048cdc:	83 4d ec ff          	orl    $0xffffffff,-0x14(%rbp)
180048ce0:	4c 8b d2             	mov    %rdx,%r10
180048ce3:	33 d2                	xor    %edx,%edx
180048ce5:	4c 8b f9             	mov    %rcx,%r15
180048ce8:	8b 49 1c             	mov    0x1c(%rcx),%ecx
180048ceb:	49 8b c1             	mov    %r9,%rax
180048cee:	48 f7 f1             	div    %rcx
180048cf1:	45 33 db             	xor    %r11d,%r11d
180048cf4:	44 89 5d e8          	mov    %r11d,-0x18(%rbp)
180048cf8:	41 8b f3             	mov    %r11d,%esi
180048cfb:	4c 89 5d f0          	mov    %r11,-0x10(%rbp)
180048cff:	4c 8b e0             	mov    %rax,%r12
180048d02:	44 89 5d d4          	mov    %r11d,-0x2c(%rbp)
180048d06:	66 44 89 5d d8       	mov    %r11w,-0x28(%rbp)
180048d0b:	48 85 d2             	test   %rdx,%rdx
180048d0e:	0f 85 1b 03 00 00    	jne    0x18004902f
180048d14:	41 8b c0             	mov    %r8d,%eax
180048d17:	f7 f1                	div    %ecx
180048d19:	89 45 d0             	mov    %eax,-0x30(%rbp)
180048d1c:	44 8b c0             	mov    %eax,%r8d
180048d1f:	85 d2                	test   %edx,%edx
180048d21:	0f 85 08 03 00 00    	jne    0x18004902f
180048d27:	83 f9 18             	cmp    $0x18,%ecx
180048d2a:	0f 86 ff 02 00 00    	jbe    0x18004902f
180048d30:	41 0f b7 47 1c       	movzwl 0x1c(%r15),%eax
180048d35:	8d 4a 10             	lea    0x10(%rdx),%ecx
180048d38:	66 2b c1             	sub    %cx,%ax
180048d3b:	66 89 45 40          	mov    %ax,0x40(%rbp)
180048d3f:	45 85 c0             	test   %r8d,%r8d
180048d42:	0f 84 ec 02 00 00    	je     0x180049034
180048d48:	41 8b c4             	mov    %r12d,%eax
180048d4b:	41 be 16 00 e7 c0    	mov    $0xc0e70016,%r14d
180048d51:	f7 d8                	neg    %eax
180048d53:	89 45 58             	mov    %eax,0x58(%rbp)
180048d56:	45 8d 2c 04          	lea    (%r12,%rax,1),%r13d
180048d5a:	89 4c 24 20          	mov    %ecx,0x20(%rsp)
180048d5e:	45 0f af 6f 1c       	imul   0x1c(%r15),%r13d
180048d63:	4c 8d 45 e8          	lea    -0x18(%rbp),%r8
180048d67:	ba 05 00 00 00       	mov    $0x5,%edx
180048d6c:	48 8d 0d fd 5c 10 00 	lea    0x105cfd(%rip),%rcx        # 0x18014ea70
180048d73:	41 8b f3             	mov    %r11d,%esi
180048d76:	4d 03 ea             	add    %r10,%r13
180048d79:	4d 8b cd             	mov    %r13,%r9
180048d7c:	e8 8b 6d 00 00       	call   0x18004fb0c
180048d81:	45 33 db             	xor    %r11d,%r11d
180048d84:	85 c0                	test   %eax,%eax
180048d86:	0f 84 9e 02 00 00    	je     0x18004902a
180048d8c:	81 7d e8 42 42 44 53 	cmpl   $0x53444242,-0x18(%rbp)
180048d93:	0f 85 91 02 00 00    	jne    0x18004902a
180048d99:	8b 5d f0             	mov    -0x10(%rbp),%ebx
180048d9c:	0f b7 7d f4          	movzwl -0xc(%rbp),%edi
180048da0:	85 db                	test   %ebx,%ebx
180048da2:	74 0e                	je     0x180048db2
180048da4:	3b 5d ec             	cmp    -0x14(%rbp),%ebx
180048da7:	77 06                	ja     0x180048daf
180048da9:	66 3b 7d f6          	cmp    -0xa(%rbp),%di
180048dad:	72 03                	jb     0x180048db2
180048daf:	41 8b f6             	mov    %r14d,%esi
180048db2:	85 f6                	test   %esi,%esi
180048db4:	0f 88 7a 02 00 00    	js     0x180049034
180048dba:	b9 10 00 00 00       	mov    $0x10,%ecx
180048dbf:	4c 03 e9             	add    %rcx,%r13
180048dc2:	44 39 65 ec          	cmp    %r12d,-0x14(%rbp)
180048dc6:	0f 85 5e 02 00 00    	jne    0x18004902a
180048dcc:	85 db                	test   %ebx,%ebx
180048dce:	0f 84 30 02 00 00    	je     0x180049004
180048dd4:	41 8b d4             	mov    %r12d,%edx
180048dd7:	49 8b cf             	mov    %r15,%rcx
180048dda:	e8 79 f3 ff ff       	call   0x180048158
180048ddf:	48 85 c0             	test   %rax,%rax
180048de2:	0f 84 3b 02 00 00    	je     0x180049023
180048de8:	83 48 04 ff          	orl    $0xffffffff,0x4(%rax)
180048dec:	49 8d 8f c8 00 00 00 	lea    0xc8(%r15),%rcx
180048df3:	48 8b d3             	mov    %rbx,%rdx
180048df6:	89 18                	mov    %ebx,(%rax)
180048df8:	e8 df aa ff ff       	call   0x1800438dc
180048dfd:	45 33 db             	xor    %r11d,%r11d
180048e00:	48 89 45 e0          	mov    %rax,-0x20(%rbp)
180048e04:	48 8b d8             	mov    %rax,%rbx
180048e07:	66 85 ff             	test   %di,%di
180048e0a:	0f 85 29 01 00 00    	jne    0x180048f39
180048e10:	48 85 c0             	test   %rax,%rax
180048e13:	0f 85 11 02 00 00    	jne    0x18004902a
180048e19:	8d 58 08             	lea    0x8(%rax),%ebx
180048e1c:	4d 8b cd             	mov    %r13,%r9
180048e1f:	4c 8d 45 d4          	lea    -0x2c(%rbp),%r8
180048e23:	89 5c 24 20          	mov    %ebx,0x20(%rsp)
180048e27:	8d 50 05             	lea    0x5(%rax),%edx
180048e2a:	41 8b f3             	mov    %r11d,%esi
180048e2d:	48 8d 0d 7c 5c 10 00 	lea    0x105c7c(%rip),%rcx        # 0x18014eab0
180048e34:	e8 d3 6c 00 00       	call   0x18004fb0c
180048e39:	45 33 db             	xor    %r11d,%r11d
180048e3c:	85 c0                	test   %eax,%eax
180048e3e:	41 0f 44 f6          	cmove  %r14d,%esi
180048e42:	85 f6                	test   %esi,%esi
180048e44:	0f 88 ea 01 00 00    	js     0x180049034
180048e4a:	41 0f b7 47 1c       	movzwl 0x1c(%r15),%eax
180048e4f:	4c 03 eb             	add    %rbx,%r13
180048e52:	66 83 e8 10          	sub    $0x10,%ax
180048e56:	44 0f b7 c0          	movzwl %ax,%r8d
180048e5a:	0f b7 45 d8          	movzwl -0x28(%rbp),%eax
180048e5e:	66 03 c3             	add    %bx,%ax
180048e61:	0f b7 c8             	movzwl %ax,%ecx
180048e64:	ff c9                	dec    %ecx
180048e66:	41 03 c8             	add    %r8d,%ecx
180048e69:	8b c1                	mov    %ecx,%eax
180048e6b:	99                   	cltd
180048e6c:	41 f7 f8             	idiv   %r8d