180040c40:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180040c45:	57                   	push   %rdi
180040c46:	48 83 ec 20          	sub    $0x20,%rsp
180040c4a:	0f b7 79 40          	movzwl 0x40(%rcx),%edi
180040c4e:	48 8b d9             	mov    %rcx,%rbx
180040c51:	4c 8b d2             	mov    %rdx,%r10
180040c54:	48 8d 0d a5 f3 fb ff 	lea    -0x40c5b(%rip),%rcx        # 0x180000000
180040c5b:	0f b6 52 11          	movzbl 0x11(%rdx),%edx
180040c5f:	0f b7 84 91 f0 e3 14 	movzwl 0x14e3f0(%rcx,%rdx,4),%eax
180040c66:	00
180040c67:	66 23 c7             	and    %di,%ax
180040c6a:	80 7b 18 07          	cmpb   $0x7,0x18(%rbx)
180040c6e:	66 89 43 40          	mov    %ax,0x40(%rbx)
180040c72:	73 10                	jae    0x180040c84
180040c74:	48 c1 ab 98 00 00 00 	shrq   $0x1c,0x98(%rbx)
180040c7b:	1c
180040c7c:	48 c1 ab a0 00 00 00 	shrq   $0x1c,0xa0(%rbx)
180040c83:	1c
180040c84:	48 03 d2             	add    %rdx,%rdx
180040c87:	4c 8b cb             	mov    %rbx,%r9
180040c8a:	44 8b 84 d1 20 e3 14 	mov    0x14e320(%rcx,%rdx,8),%r8d
180040c91:	00
180040c92:	48 8b 94 d1 28 e3 14 	mov    0x14e328(%rcx,%rdx,8),%rdx
180040c99:	00
180040c9a:	49 8b ca             	mov    %r10,%rcx
180040c9d:	e8 8e 6b 00 00       	call   0x180047830
180040ca2:	80 7b 18 07          	cmpb   $0x7,0x18(%rbx)
180040ca6:	73 10                	jae    0x180040cb8
180040ca8:	48 c1 a3 98 00 00 00 	shlq   $0x1c,0x98(%rbx)
180040caf:	1c
180040cb0:	48 c1 a3 a0 00 00 00 	shlq   $0x1c,0xa0(%rbx)
180040cb7:	1c
180040cb8:	66 89 7b 40          	mov    %di,0x40(%rbx)
180040cbc:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
180040cc1:	48 83 c4 20          	add    $0x20,%rsp
180040cc5:	5f                   	pop    %rdi
180040cc6:	c3                   	ret
180040cc7:	cc                   	int3
180040cc8:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180040ccd:	57                   	push   %rdi
180040cce:	48 83 ec 20          	sub    $0x20,%rsp
180040cd2:	0f b6 79 18          	movzbl 0x18(%rcx),%edi
180040cd6:	48 8b d9             	mov    %rcx,%rbx
180040cd9:	40 80 ff 07          	cmp    $0x7,%dil
180040cdd:	73 10                	jae    0x180040cef
180040cdf:	48 c1 a9 98 00 00 00 	shrq   $0x1c,0x98(%rcx)
180040ce6:	1c
180040ce7:	48 c1 a9 a0 00 00 00 	shrq   $0x1c,0xa0(%rcx)
180040cee:	1c
180040cef:	48 8d 05 2a d6 10 00 	lea    0x10d62a(%rip),%rax        # 0x18014e320
180040cf6:	48 8b cf             	mov    %rdi,%rcx
180040cf9:	48 03 c9             	add    %rcx,%rcx
180040cfc:	4c 8b c3             	mov    %rbx,%r8
180040cff:	8b 14 c8             	mov    (%rax,%rcx,8),%edx
180040d02:	48 8b 4c c8 08       	mov    0x8(%rax,%rcx,8),%rcx
180040d07:	e8 c4 f3 00 00       	call   0x1800500d0
180040d0c:	0f b7 c0             	movzwl %ax,%eax
180040d0f:	40 80 ff 07          	cmp    $0x7,%dil
180040d13:	73 10                	jae    0x180040d25
180040d15:	48 c1 a3 98 00 00 00 	shlq   $0x1c,0x98(%rbx)
180040d1c:	1c
180040d1d:	48 c1 a3 a0 00 00 00 	shlq   $0x1c,0xa0(%rbx)
180040d24:	1c
180040d25:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
180040d2a:	48 83 c4 20          	add    $0x20,%rsp
180040d2e:	5f                   	pop    %rdi
180040d2f:	c3                   	ret
180040d30:	cc                   	int3
180040d31:	cc                   	int3
180040d32:	cc                   	int3
180040d33:	cc                   	int3
180040d34:	8b 41 44             	mov    0x44(%rcx),%eax
180040d37:	33 d2                	xor    %edx,%edx
180040d39:	85 c0                	test   %eax,%eax
180040d3b:	74 15                	je     0x180040d52
180040d3d:	83 f8 06             	cmp    $0x6,%eax
180040d40:	7d 10                	jge    0x180040d52
180040d42:	48 8b 81 98 00 00 00 	mov    0x98(%rcx),%rax
180040d49:	48 39 81 a0 00 00 00 	cmp    %rax,0xa0(%rcx)
180040d50:	73 05                	jae    0x180040d57
180040d52:	ba 0d 00 00 c0       	mov    $0xc000000d,%edx
180040d57:	8b c2                	mov    %edx,%eax
180040d59:	c3                   	ret
180040d5a:	cc                   	int3
180040d5b:	cc                   	int3
180040d5c:	40 53                	rex push %rbx
180040d5e:	48 83 ec 20          	sub    $0x20,%rsp
180040d62:	48 8b d9             	mov    %rcx,%rbx
180040d65:	e8 ce 00 00 00       	call   0x180040e38
180040d6a:	85 c0                	test   %eax,%eax
180040d6c:	78 18                	js     0x180040d86
180040d6e:	f6 43 40 02          	testb  $0x2,0x40(%rbx)
180040d72:	74 12                	je     0x180040d86
180040d74:	48 8b 4b 10          	mov    0x10(%rbx),%rcx
180040d78:	48 8b 51 10          	mov    0x10(%rcx),%rdx
180040d7c:	48 8b 4a 08          	mov    0x8(%rdx),%rcx
180040d80:	ff 81 0c 01 00 00    	incl   0x10c(%rcx)
180040d86:	48 83 c4 20          	add    $0x20,%rsp
180040d8a:	5b                   	pop    %rbx
180040d8b:	c3                   	ret
180040d8c:	cc                   	int3
180040d8d:	cc                   	int3
180040d8e:	cc                   	int3
180040d8f:	cc                   	int3
180040d90:	48 8b 91 90 00 00 00 	mov    0x90(%rcx),%rdx
180040d97:	48 83 c8 ff          	or     $0xffffffffffffffff,%rax
180040d9b:	48 3b d0             	cmp    %rax,%rdx
180040d9e:	74 05                	je     0x180040da5
180040da0:	48 8b c2             	mov    %rdx,%rax
180040da3:	c3                   	ret
180040da4:	cc                   	int3
180040da5:	4c 8b 81 c8 00 00 00 	mov    0xc8(%rcx),%r8
180040dac:	49 83 b8 a0 01 00 00 	cmpq   $0x0,0x1a0(%r8)
180040db3:	00
180040db4:	76 23                	jbe    0x180040dd9
180040db6:	48 8b 41 10          	mov    0x10(%rcx),%rax
180040dba:	48 8b 48 10          	mov    0x10(%rax),%rcx
180040dbe:	48 8b 41 08          	mov    0x8(%rcx),%rax
180040dc2:	8b 50 1c             	mov    0x1c(%rax),%edx
180040dc5:	0f af 50 18          	imul   0x18(%rax),%edx
180040dc9:	49 8b 80 98 01 00 00 	mov    0x198(%r8),%rax
180040dd0:	48 05 00 20 00 00    	add    $0x2000,%rax
180040dd6:	48 03 c2             	add    %rdx,%rax
180040dd9:	c3                   	ret
180040dda:	cc                   	int3
180040ddb:	cc                   	int3
180040ddc:	48 8b 81 98 00 00 00 	mov    0x98(%rcx),%rax
180040de3:	45 33 c0             	xor    %r8d,%r8d
180040de6:	48 85 c0             	test   %rax,%rax
180040de9:	74 05                	je     0x180040df0
180040deb:	4c 8b c0             	mov    %rax,%r8
180040dee:	eb 33                	jmp    0x180040e23
180040df0:	48 8b 81 c8 00 00 00 	mov    0xc8(%rcx),%rax
180040df7:	4c 8b 88 a0 01 00 00 	mov    0x1a0(%rax),%r9
180040dfe:	4d 85 c9             	test   %r9,%r9
180040e01:	74 20                	je     0x180040e23
180040e03:	48 8b 41 10          	mov    0x10(%rcx),%rax
180040e07:	4d 8b c1             	mov    %r9,%r8
180040e0a:	48 8b 48 10          	mov    0x10(%rax),%rcx
180040e0e:	48 8b 41 08          	mov    0x8(%rcx),%rax
180040e12:	8b 50 1c             	mov    0x1c(%rax),%edx
180040e15:	0f af 50 18          	imul   0x18(%rax),%edx
180040e19:	4c 2b c2             	sub    %rdx,%r8
180040e1c:	49 81 e8 00 20 00 00 	sub    $0x2000,%r8
180040e23:	49 8b c0             	mov    %r8,%rax
180040e26:	c3                   	ret
180040e27:	cc                   	int3
180040e28:	48 83 b9 90 00 00 00 	cmpq   $0xffffffffffffffff,0x90(%rcx)
180040e2f:	ff
180040e30:	0f 94 c0             	sete   %al
180040e33:	c3                   	ret
180040e34:	cc                   	int3
180040e35:	cc                   	int3
180040e36:	cc                   	int3
180040e37:	cc                   	int3
180040e38:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180040e3d:	48 89 6c 24 10       	mov    %rbp,0x10(%rsp)
180040e42:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
180040e47:	57                   	push   %rdi
180040e48:	48 83 ec 20          	sub    $0x20,%rsp
180040e4c:	48 8b 41 10          	mov    0x10(%rcx),%rax
180040e50:	48 8b f1             	mov    %rcx,%rsi
180040e53:	48 8b 48 10          	mov    0x10(%rax),%rcx
180040e57:	48 8b 89 d8 00 00 00 	mov    0xd8(%rcx),%rcx
180040e5e:	e8 0d db 0f 00       	call   0x18013e970
180040e63:	33 db                	xor    %ebx,%ebx
180040e65:	48 8b 50 58          	mov    0x58(%rax),%rdx
180040e69:	48 0f bd c2          	bsr    %rdx,%rax
180040e6d:	89 86 c0 00 00 00    	mov    %eax,0xc0(%rsi)
180040e73:	48 8b be a8 00 00 00 	mov    0xa8(%rsi),%rdi
180040e7a:	48 85 ff             	test   %rdi,%rdi
180040e7d:	74 10                	je     0x180040e8f
180040e7f:	48 8b cf             	mov    %rdi,%rcx
180040e82:	e8 95 29 00 00       	call   0x18004381c
180040e87:	48 8b cf             	mov    %rdi,%rcx
180040e8a:	e8 cd 5a 00 00       	call   0x18004695c
180040e8f:	bf 40 00 00 00       	mov    $0x40,%edi
180040e94:	8b cf                	mov    %edi,%ecx
180040e96:	e8 79 5a 00 00       	call   0x180046914
180040e9b:	4c 8b c0             	mov    %rax,%r8
180040e9e:	48 85 c0             	test   %rax,%rax
180040ea1:	74 2d                	je     0x180040ed0
180040ea3:	48 8d 48 08          	lea    0x8(%rax),%rcx
180040ea7:	48 89 18             	mov    %rbx,(%rax)
180040eaa:	48 89 58 18          	mov    %rbx,0x18(%rax)
180040eae:	c7 40 20 01 00 00 00 	movl   $0x1,0x20(%rax)
180040eb5:	89 78 24             	mov    %edi,0x24(%rax)
180040eb8:	8d 47 c6             	lea    -0x3a(%rdi),%eax
180040ebb:	41 89 40 28          	mov    %eax,0x28(%r8)
180040ebf:	41 89 40 38          	mov    %eax,0x38(%r8)
180040ec3:	48 89 49 08          	mov    %rcx,0x8(%rcx)
180040ec7:	48 89 09             	mov    %rcx,(%rcx)
180040eca:	49 89 78 30          	mov    %rdi,0x30(%r8)
180040ece:	eb 03                	jmp    0x180040ed3
180040ed0:	4c 8b c3             	mov    %rbx,%r8
180040ed3:	4c 89 86 a8 00 00 00 	mov    %r8,0xa8(%rsi)
180040eda:	4d 85 c0             	test   %r8,%r8
180040edd:	75 0a                	jne    0x180040ee9
180040edf:	bf 9a 00 00 c0       	mov    $0xc000009a,%edi
180040ee4:	e9 88 00 00 00       	jmp    0x180040f71
180040ee9:	8b 8e c0 00 00 00    	mov    0xc0(%rsi),%ecx
180040eef:	48 8b 96 98 00 00 00 	mov    0x98(%rsi),%rdx
180040ef6:	48 d3 ea             	shr    %cl,%rdx
180040ef9:	49 8b c8             	mov    %r8,%rcx
180040efc:	8b d2                	mov    %edx,%edx
180040efe:	e8 65 28 00 00       	call   0x180043768
180040f03:	8b f8                	mov    %eax,%edi
180040f05:	85 c0                	test   %eax,%eax
180040f07:	78 68                	js     0x180040f71
180040f09:	48 8b 8e b8 00 00 00 	mov    0xb8(%rsi),%rcx
180040f10:	48 85 c9             	test   %rcx,%rcx
180040f13:	74 0c                	je     0x180040f21
180040f15:	e8 42 5a 00 00       	call   0x18004695c
180040f1a:	48 89 9e b8 00 00 00 	mov    %rbx,0xb8(%rsi)
180040f21:	8b 8e c0 00 00 00    	mov    0xc0(%rsi),%ecx
180040f27:	48 8b ae 98 00 00 00 	mov    0x98(%rsi),%rbp
180040f2e:	48 d3 ed             	shr    %cl,%rbp
180040f31:	8d 4d 1f             	lea    0x1f(%rbp),%ecx
180040f34:	48 c1 e9 03          	shr    $0x3,%rcx
180040f38:	81 e1 fc ff ff 1f    	and    $0x1ffffffc,%ecx
180040f3e:	e8 d1 59 00 00       	call   0x180046914
180040f43:	48 85 c0             	test   %rax,%rax
180040f46:	74 97                	je     0x180040edf
180040f48:	40 f6 c5 1f          	test   $0x1f,%bpl
180040f4c:	89 ae b0 00 00 00    	mov    %ebp,0xb0(%rsi)
180040f52:	48 8b c8             	mov    %rax,%rcx
180040f55:	48 89 86 b8 00 00 00 	mov    %rax,0xb8(%rsi)
180040f5c:	0f 95 c3             	setne  %bl
180040f5f:	c1 ed 05             	shr    $0x5,%ebp
180040f62:	33 d2                	xor    %edx,%edx
180040f64:	44 8d 04 2b          	lea    (%rbx,%rbp,1),%r8d
180040f68:	41 c1 e0 02          	shl    $0x2,%r8d
180040f6c:	e8 0f 4d 0f 00       	call   0x180135c80
180040f71:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
180040f76:	8b c7                	mov    %edi,%eax
180040f78:	48 8b 6c 24 38       	mov    0x38(%rsp),%rbp
180040f7d:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
180040f82:	48 83 c4 20          	add    $0x20,%rsp
180040f86:	5f                   	pop    %rdi
180040f87:	c3                   	ret
180040f88:	cc                   	int3
180040f89:	cc                   	int3
180040f8a:	cc                   	int3
180040f8b:	cc                   	int3
180040f8c:	40 53                	rex push %rbx
180040f8e:	48 83 ec 20          	sub    $0x20,%rsp
180040f92:	48 8b d9             	mov    %rcx,%rbx
180040f95:	45 33 c9             	xor    %r9d,%r9d
180040f98:	8b 89 c0 00 00 00    	mov    0xc0(%rcx),%ecx
180040f9e:	45 33 c0             	xor    %r8d,%r8d
180040fa1:	48 d3 ea             	shr    %cl,%rdx
180040fa4:	48 8d 8b b0 00 00 00 	lea    0xb0(%rbx),%rcx
180040fab:	e8 1c e8 fe ff       	call   0x18002f7cc
180040fb0:	8b c0                	mov    %eax,%eax
180040fb2:	b9 ff ff ff ff       	mov    $0xffffffff,%ecx
180040fb7:	48 3b c1             	cmp    %rcx,%rax
180040fba:	75 06                	jne    0x180040fc2
180040fbc:	48 83 c8 ff          	or     $0xffffffffffffffff,%rax
180040fc0:	eb 09                	jmp    0x180040fcb
180040fc2:	8b 8b c0 00 00 00    	mov    0xc0(%rbx),%ecx
180040fc8:	48 d3 e0             	shl    %cl,%rax
180040fcb:	48 83 c4 20          	add    $0x20,%rsp
180040fcf:	5b                   	pop    %rbx
180040fd0:	c3                   	ret
180040fd1:	cc                   	int3
180040fd2:	cc                   	int3
180040fd3:	cc                   	int3
180040fd4:	40 53                	rex push %rbx
180040fd6:	48 83 ec 20          	sub    $0x20,%rsp
180040fda:	48 8b d9             	mov    %rcx,%rbx
180040fdd:	48 81 c1 b0 00 00 00 	add    $0xb0,%rcx
180040fe4:	e8 eb e9 fe ff       	call   0x18002f9d4
180040fe9:	8b c0                	mov    %eax,%eax
180040feb:	b9 ff ff ff ff       	mov    $0xffffffff,%ecx
180040ff0:	48 3b c1             	cmp    %rcx,%rax
180040ff3:	75 04                	jne    0x180040ff9
180040ff5:	33 c0                	xor    %eax,%eax
180040ff7:	eb 09                	jmp    0x180041002
180040ff9:	8b 8b c0 00 00 00    	mov    0xc0(%rbx),%ecx
180040fff:	48 d3 e0             	shl    %cl,%rax
180041002:	48 83 c4 20          	add    $0x20,%rsp
180041006:	5b                   	pop    %rbx
180041007:	c3                   	ret
180041008:	cc                   	int3
180041009:	cc                   	int3
18004100a:	cc                   	int3
18004100b:	cc                   	int3
18004100c:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180041011:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
180041016:	57                   	push   %rdi
180041017:	48 83 ec 20          	sub    $0x20,%rsp
18004101b:	48 8b f9             	mov    %rcx,%rdi
18004101e:	4c 8b c2             	mov    %rdx,%r8
180041021:	48 8b ca             	mov    %rdx,%rcx
180041024:	e8 47 d9 0f 00       	call   0x18013e970
180041029:	8b 8f c0 00 00 00    	mov    0xc0(%rdi),%ecx
18004102f:	48 8b f0             	mov    %rax,%rsi
180041032:	48 8b 50 30          	mov    0x30(%rax),%rdx
180041036:	48 d3 ea             	shr    %cl,%rdx
180041039:	48 8b 8f a8 00 00 00 	mov    0xa8(%rdi),%rcx
180041040:	e8 db 28 00 00       	call   0x180043920
180041045:	8b d8                	mov    %eax,%ebx
180041047:	85 c0                	test   %eax,%eax
180041049:	78 2f                	js     0x18004107a
18004104b:	8b 8f c0 00 00 00    	mov    0xc0(%rdi),%ecx
180041051:	4c 8b 4e 30          	mov    0x30(%rsi),%r9
180041055:	4c 8b 46 20          	mov    0x20(%rsi),%r8
180041059:	49 8b d1             	mov    %r9,%rdx
18004105c:	48 d3 ea             	shr    %cl,%rdx
18004105f:	49 ff c9             	dec    %r9
180041062:	4d 03 c1             	add    %r9,%r8
180041065:	49 d3 e8             	shr    %cl,%r8
180041068:	48 8d 8f b0 00 00 00 	lea    0xb0(%rdi),%rcx
18004106f:	44 2b c2             	sub    %edx,%r8d
180041072:	41 ff c0             	inc    %r8d
180041075:	e8 ba e8 fe ff       	call   0x18002f934
18004107a:	48 8b 74 24 38       	mov    0x38(%rsp),%rsi
18004107f:	8b c3                	mov    %ebx,%eax
180041081:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
180041086:	48 83 c4 20          	add    $0x20,%rsp
18004108a:	5f                   	pop    %rdi
18004108b:	c3                   	ret
18004108c:	cc                   	int3
18004108d:	cc                   	int3
18004108e:	cc                   	int3
18004108f:	cc                   	int3
180041090:	48 83 ec 28          	sub    $0x28,%rsp
180041094:	48 8b 89 a8 00 00 00 	mov    0xa8(%rcx),%rcx
18004109b:	48 85 d2             	test   %rdx,%rdx
18004109e:	49 8b d0             	mov    %r8,%rdx
1800410a1:	74 07                	je     0x1800410aa
1800410a3:	e8 64 2b 00 00       	call   0x180043c0c
1800410a8:	eb 05                	jmp    0x1800410af
1800410aa:	e8 55 2a 00 00       	call   0x180043b04
1800410af:	48 83 c4 28          	add    $0x28,%rsp
1800410b3:	c3                   	ret
1800410b4:	cc                   	int3
1800410b5:	cc                   	int3
1800410b6:	cc                   	int3
1800410b7:	cc                   	int3
1800410b8:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
1800410bd:	48 89 6c 24 10       	mov    %rbp,0x10(%rsp)
1800410c2:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
1800410c7:	57                   	push   %rdi
1800410c8:	41 56                	push   %r14
1800410ca:	41 57                	push   %r15
1800410cc:	48 83 ec 20          	sub    $0x20,%rsp
1800410d0:	4c 8b f1             	mov    %rcx,%r14
1800410d3:	48 8b da             	mov    %rdx,%rbx
1800410d6:	48 8b ca             	mov    %rdx,%rcx