180043b4f:	44 8b c1             	mov    %ecx,%r8d
180043b52:	49 0f af d2          	imul   %r10,%rdx
180043b56:	4e 8b 4c c0 18       	mov    0x18(%rax,%r8,8),%r9
180043b5b:	49 03 d0             	add    %r8,%rdx
180043b5e:	48 89 13             	mov    %rdx,(%rbx)
180043b61:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
180043b66:	49 8b c1             	mov    %r9,%rax
180043b69:	c3                   	ret
180043b6a:	cc                   	int3
180043b6b:	cc                   	int3
180043b6c:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180043b71:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
180043b76:	48 89 7c 24 18       	mov    %rdi,0x18(%rsp)
180043b7b:	4c 8b 41 10          	mov    0x10(%rcx),%r8
180043b7f:	48 8d 79 08          	lea    0x8(%rcx),%rdi
180043b83:	33 c0                	xor    %eax,%eax
180043b85:	48 8b f2             	mov    %rdx,%rsi
180043b88:	48 89 02             	mov    %rax,(%rdx)
180043b8b:	4c 8b d1             	mov    %rcx,%r10
180043b8e:	44 8a d8             	mov    %al,%r11b
180043b91:	44 8b c8             	mov    %eax,%r9d
180043b94:	4c 3b c7             	cmp    %rdi,%r8
180043b97:	74 61                	je     0x180043bfa
180043b99:	49 8d 18             	lea    (%r8),%rbx
180043b9c:	41 39 40 14          	cmp    %eax,0x14(%r8)
180043ba0:	75 31                	jne    0x180043bd3
180043ba2:	45 8b 4a 24          	mov    0x24(%r10),%r9d
180043ba6:	41 83 e9 01          	sub    $0x1,%r9d
180043baa:	49 63 c9             	movslq %r9d,%rcx
180043bad:	78 1f                	js     0x180043bce
180043baf:	48 8d 51 03          	lea    0x3(%rcx),%rdx
180043bb3:	49 8d 14 d0          	lea    (%r8,%rdx,8),%rdx
180043bb7:	48 39 02             	cmp    %rax,(%rdx)
180043bba:	75 0f                	jne    0x180043bcb
180043bbc:	41 ff c9             	dec    %r9d
180043bbf:	48 83 ea 08          	sub    $0x8,%rdx
180043bc3:	48 83 e9 01          	sub    $0x1,%rcx
180043bc7:	79 ee                	jns    0x180043bb7
180043bc9:	eb 03                	jmp    0x180043bce
180043bcb:	41 b3 01             	mov    $0x1,%r11b
180043bce:	45 84 db             	test   %r11b,%r11b
180043bd1:	75 0e                	jne    0x180043be1
180043bd3:	4d 8b 40 08          	mov    0x8(%r8),%r8
180043bd7:	4c 3b c7             	cmp    %rdi,%r8
180043bda:	75 bd                	jne    0x180043b99
180043bdc:	45 84 db             	test   %r11b,%r11b
180043bdf:	74 19                	je     0x180043bfa
180043be1:	8b 53 10             	mov    0x10(%rbx),%edx
180043be4:	41 8b 4a 24          	mov    0x24(%r10),%ecx
180043be8:	4d 63 c1             	movslq %r9d,%r8
180043beb:	48 0f af d1          	imul   %rcx,%rdx
180043bef:	4a 8b 44 c3 18       	mov    0x18(%rbx,%r8,8),%rax
180043bf4:	49 03 d0             	add    %r8,%rdx
180043bf7:	48 89 16             	mov    %rdx,(%rsi)
180043bfa:	48 8b 5c 24 08       	mov    0x8(%rsp),%rbx
180043bff:	48 8b 74 24 10       	mov    0x10(%rsp),%rsi
180043c04:	48 8b 7c 24 18       	mov    0x18(%rsp),%rdi
180043c09:	c3                   	ret
180043c0a:	cc                   	int3
180043c0b:	cc                   	int3
180043c0c:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180043c11:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
180043c16:	48 89 7c 24 18       	mov    %rdi,0x18(%rsp)
180043c1b:	41 56                	push   %r14
180043c1d:	48 83 ec 20          	sub    $0x20,%rsp
180043c21:	48 8b 1a             	mov    (%rdx),%rbx
180043c24:	33 ff                	xor    %edi,%edi
180043c26:	4c 8b f2             	mov    %rdx,%r14
180043c29:	48 89 3a             	mov    %rdi,(%rdx)
180043c2c:	48 8b f1             	mov    %rcx,%rsi
180043c2f:	48 8d 43 01          	lea    0x1(%rbx),%rax
180043c33:	48 3b 41 30          	cmp    0x30(%rcx),%rax
180043c37:	73 6b                	jae    0x180043ca4
180043c39:	48 8b d3             	mov    %rbx,%rdx
180043c3c:	e8 4f fc ff ff       	call   0x180043890
180043c41:	4c 8b c0             	mov    %rax,%r8
180043c44:	48 85 c0             	test   %rax,%rax
180043c47:	74 5b                	je     0x180043ca4
180043c49:	8b 48 10             	mov    0x10(%rax),%ecx
180043c4c:	8d 47 01             	lea    0x1(%rdi),%eax
180043c4f:	8b 56 24             	mov    0x24(%rsi),%edx
180043c52:	48 0f af ca          	imul   %rdx,%rcx
180043c56:	48 2b c1             	sub    %rcx,%rax
180043c59:	48 03 d8             	add    %rax,%rbx
180043c5c:	48 83 c6 08          	add    $0x8,%rsi
180043c60:	4c 3b c6             	cmp    %rsi,%r8
180043c63:	74 3f                	je     0x180043ca4
180043c65:	41 39 78 14          	cmp    %edi,0x14(%r8)
180043c69:	75 39                	jne    0x180043ca4
180043c6b:	48 3b da             	cmp    %rdx,%rbx
180043c6e:	73 19                	jae    0x180043c89
180043c70:	48 8d 43 03          	lea    0x3(%rbx),%rax
180043c74:	49 8d 04 c0          	lea    (%r8,%rax,8),%rax
180043c78:	48 39 38             	cmp    %rdi,(%rax)
180043c7b:	75 14                	jne    0x180043c91
180043c7d:	48 ff c3             	inc    %rbx
180043c80:	48 83 c0 08          	add    $0x8,%rax
180043c84:	48 3b da             	cmp    %rdx,%rbx
180043c87:	72 ef                	jb     0x180043c78
180043c89:	4d 8b 00             	mov    (%r8),%r8
180043c8c:	48 8b df             	mov    %rdi,%rbx
180043c8f:	eb cf                	jmp    0x180043c60
180043c91:	41 8b 48 10          	mov    0x10(%r8),%ecx
180043c95:	49 8b 7c d8 18       	mov    0x18(%r8,%rbx,8),%rdi
180043c9a:	48 0f af ca          	imul   %rdx,%rcx
180043c9e:	48 03 cb             	add    %rbx,%rcx
180043ca1:	49 89 0e             	mov    %rcx,(%r14)
180043ca4:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
180043ca9:	48 8b c7             	mov    %rdi,%rax
180043cac:	48 8b 7c 24 40       	mov    0x40(%rsp),%rdi
180043cb1:	48 8b 74 24 38       	mov    0x38(%rsp),%rsi
180043cb6:	48 83 c4 20          	add    $0x20,%rsp
180043cba:	41 5e                	pop    %r14
180043cbc:	c3                   	ret
180043cbd:	cc                   	int3
180043cbe:	cc                   	int3
180043cbf:	cc                   	int3
180043cc0:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180043cc5:	48 89 6c 24 10       	mov    %rbp,0x10(%rsp)
180043cca:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
180043ccf:	57                   	push   %rdi
180043cd0:	41 56                	push   %r14
180043cd2:	41 57                	push   %r15
180043cd4:	48 83 ec 20          	sub    $0x20,%rsp
180043cd8:	48 8b e9             	mov    %rcx,%rbp
180043cdb:	4c 8b fa             	mov    %rdx,%r15
180043cde:	33 c9                	xor    %ecx,%ecx
180043ce0:	48 8d 75 08          	lea    0x8(%rbp),%rsi
180043ce4:	48 8b 1e             	mov    (%rsi),%rbx
180043ce7:	eb 3d                	jmp    0x180043d26
180043ce9:	83 7b 14 00          	cmpl   $0x0,0x14(%rbx)
180043ced:	75 3c                	jne    0x180043d2b
180043cef:	8b 45 24             	mov    0x24(%rbp),%eax
180043cf2:	33 ff                	xor    %edi,%edi
180043cf4:	44 8b 73 10          	mov    0x10(%rbx),%r14d
180043cf8:	4c 0f af f0          	imul   %rax,%r14
180043cfc:	85 c0                	test   %eax,%eax
180043cfe:	74 23                	je     0x180043d23
180043d00:	4c 8b 44 fb 18       	mov    0x18(%rbx,%rdi,8),%r8
180043d05:	4d 85 c0             	test   %r8,%r8
180043d08:	74 12                	je     0x180043d1c
180043d0a:	4a 8d 14 37          	lea    (%rdi,%r14,1),%rdx
180043d0e:	49 8b cf             	mov    %r15,%rcx
180043d11:	e8 0a fc ff ff       	call   0x180043920
180043d16:	8b c8                	mov    %eax,%ecx
180043d18:	85 c0                	test   %eax,%eax
180043d1a:	78 0f                	js     0x180043d2b
180043d1c:	ff c7                	inc    %edi
180043d1e:	3b 7d 24             	cmp    0x24(%rbp),%edi
180043d21:	72 dd                	jb     0x180043d00
180043d23:	48 8b 1b             	mov    (%rbx),%rbx
180043d26:	48 3b de             	cmp    %rsi,%rbx
180043d29:	75 be                	jne    0x180043ce9
180043d2b:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
180043d30:	8b c1                	mov    %ecx,%eax
180043d32:	48 8b 6c 24 48       	mov    0x48(%rsp),%rbp
180043d37:	48 8b 74 24 50       	mov    0x50(%rsp),%rsi
180043d3c:	48 83 c4 20          	add    $0x20,%rsp
180043d40:	41 5f                	pop    %r15
180043d42:	41 5e                	pop    %r14
180043d44:	5f                   	pop    %rdi
180043d45:	c3                   	ret
180043d46:	cc                   	int3
180043d47:	cc                   	int3
180043d48:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180043d4d:	48 89 74 24 18       	mov    %rsi,0x18(%rsp)
180043d52:	88 54 24 10          	mov    %dl,0x10(%rsp)
180043d56:	57                   	push   %rdi
180043d57:	48 83 ec 20          	sub    $0x20,%rsp
180043d5b:	48 8b f9             	mov    %rcx,%rdi
180043d5e:	c7 01 04 00 00 00    	movl   $0x4,(%rcx)
180043d64:	c7 41 04 10 00 00 00 	movl   $0x10,0x4(%rcx)
180043d6b:	33 db                	xor    %ebx,%ebx
180043d6d:	8d 73 40             	lea    0x40(%rbx),%esi
180043d70:	8b ce                	mov    %esi,%ecx
180043d72:	e8 9d 2b 00 00       	call   0x180046914
180043d77:	48 89 47 08          	mov    %rax,0x8(%rdi)
180043d7b:	48 85 c0             	test   %rax,%rax
180043d7e:	75 0a                	jne    0x180043d8a
180043d80:	bb 9a 00 00 c0       	mov    $0xc000009a,%ebx
180043d85:	e9 c1 00 00 00       	jmp    0x180043e4b
180043d8a:	48 8b ce             	mov    %rsi,%rcx
180043d8d:	e8 82 2b 00 00       	call   0x180046914
180043d92:	48 89 47 10          	mov    %rax,0x10(%rdi)
180043d96:	48 85 c0             	test   %rax,%rax
180043d99:	74 e5                	je     0x180043d80
180043d9b:	8b 4f 04             	mov    0x4(%rdi),%ecx
180043d9e:	ba 01 00 00 00       	mov    $0x1,%edx
180043da3:	44 8b c3             	mov    %ebx,%r8d
180043da6:	8d 41 ff             	lea    -0x1(%rcx),%eax
180043da9:	85 c0                	test   %eax,%eax
180043dab:	74 2b                	je     0x180043dd8
180043dad:	48 8b 47 08          	mov    0x8(%rdi),%rax
180043db1:	8b ca                	mov    %edx,%ecx
180043db3:	44 89 04 88          	mov    %r8d,(%rax,%rcx,4)
180043db7:	48 8b 47 10          	mov    0x10(%rdi),%rax
180043dbb:	41 8b c8             	mov    %r8d,%ecx
180043dbe:	89 14 88             	mov    %edx,(%rax,%rcx,4)
180043dc1:	03 d2                	add    %edx,%edx
180043dc3:	8b 4f 04             	mov    0x4(%rdi),%ecx
180043dc6:	85 ca                	test   %ecx,%edx
180043dc8:	74 03                	je     0x180043dcd
180043dca:	83 f2 13             	xor    $0x13,%edx
180043dcd:	41 ff c0             	inc    %r8d
180043dd0:	8d 41 ff             	lea    -0x1(%rcx),%eax
180043dd3:	44 3b c0             	cmp    %eax,%r8d
180043dd6:	72 d5                	jb     0x180043dad
180043dd8:	8b 07                	mov    (%rdi),%eax
180043dda:	8d 70 fe             	lea    -0x2(%rax),%esi
180043ddd:	03 f1                	add    %ecx,%esi
180043ddf:	0f af c6             	imul   %esi,%eax
180043de2:	8b c8                	mov    %eax,%ecx
180043de4:	e8 2b 2b 00 00       	call   0x180046914
180043de9:	48 89 47 18          	mov    %rax,0x18(%rdi)
180043ded:	48 85 c0             	test   %rax,%rax
180043df0:	74 8e                	je     0x180043d80
180043df2:	44 8b cb             	mov    %ebx,%r9d
180043df5:	85 f6                	test   %esi,%esi
180043df7:	74 52                	je     0x180043e4b
180043df9:	8b 4f 04             	mov    0x4(%rdi),%ecx
180043dfc:	33 d2                	xor    %edx,%edx
180043dfe:	44 8b d3             	mov    %ebx,%r10d
180043e01:	8d 41 ff             	lea    -0x1(%rcx),%eax
180043e04:	41 03 c1             	add    %r9d,%eax
180043e07:	ff c9                	dec    %ecx
180043e09:	f7 f1                	div    %ecx
180043e0b:	48 8b 47 10          	mov    0x10(%rdi),%rax
180043e0f:	48 63 ca             	movslq %edx,%rcx
180043e12:	8b 0c 88             	mov    (%rax,%rcx,4),%ecx
180043e15:	89 4c 24 38          	mov    %ecx,0x38(%rsp)
180043e19:	39 1f                	cmp    %ebx,(%rdi)
180043e1b:	76 26                	jbe    0x180043e43
180043e1d:	48 8b 4f 18          	mov    0x18(%rdi),%rcx
180043e21:	48 8d 44 24 38       	lea    0x38(%rsp),%rax
180043e26:	44 0f a3 10          	bt     %r10d,(%rax)
180043e2a:	8b 07                	mov    (%rdi),%eax
180043e2c:	41 0f 92 c0          	setb   %r8b
180043e30:	41 0f af c1          	imul   %r9d,%eax
180043e34:	41 03 c2             	add    %r10d,%eax
180043e37:	41 ff c2             	inc    %r10d
180043e3a:	44 88 04 08          	mov    %r8b,(%rax,%rcx,1)
180043e3e:	44 3b 17             	cmp    (%rdi),%r10d
180043e41:	72 da                	jb     0x180043e1d
180043e43:	41 ff c1             	inc    %r9d
180043e46:	44 3b ce             	cmp    %esi,%r9d
180043e49:	72 ae                	jb     0x180043df9
180043e4b:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
180043e50:	8b c3                	mov    %ebx,%eax
180043e52:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
180043e57:	48 83 c4 20          	add    $0x20,%rsp
180043e5b:	5f                   	pop    %rdi
180043e5c:	c3                   	ret
180043e5d:	cc                   	int3
180043e5e:	cc                   	int3
180043e5f:	cc                   	int3
180043e60:	4c 8b d1             	mov    %rcx,%r10
180043e63:	85 d2                	test   %edx,%edx
180043e65:	74 31                	je     0x180043e98
180043e67:	45 85 c0             	test   %r8d,%r8d
180043e6a:	74 2c                	je     0x180043e98
180043e6c:	4c 8b 49 08          	mov    0x8(%rcx),%r9
180043e70:	8b 49 04             	mov    0x4(%rcx),%ecx
180043e73:	8b c2                	mov    %edx,%eax
180043e75:	41 8b d0             	mov    %r8d,%edx
180043e78:	45 8b 04 81          	mov    (%r9,%rax,4),%r8d
180043e7c:	8d 41 ff             	lea    -0x1(%rcx),%eax
180043e7f:	45 03 04 91          	add    (%r9,%rdx,4),%r8d
180043e83:	33 d2                	xor    %edx,%edx
180043e85:	41 03 c0             	add    %r8d,%eax
180043e88:	ff c9                	dec    %ecx
180043e8a:	f7 f1                	div    %ecx
180043e8c:	49 8b 42 10          	mov    0x10(%r10),%rax
180043e90:	48 63 ca             	movslq %edx,%rcx
180043e93:	8b 04 88             	mov    (%rax,%rcx,4),%eax
180043e96:	c3                   	ret
180043e97:	cc                   	int3
180043e98:	33 c0                	xor    %eax,%eax
180043e9a:	c3                   	ret
180043e9b:	cc                   	int3
180043e9c:	41 8b c0             	mov    %r8d,%eax
180043e9f:	4c 8b d1             	mov    %rcx,%r10
180043ea2:	85 d2                	test   %edx,%edx
180043ea4:	75 04                	jne    0x180043eaa
180043ea6:	33 c0                	xor    %eax,%eax
180043ea8:	c3                   	ret
180043ea9:	cc                   	int3
180043eaa:	4c 8b 41 08          	mov    0x8(%rcx),%r8
180043eae:	44 8b 49 04          	mov    0x4(%rcx),%r9d
180043eb2:	8b d2                	mov    %edx,%edx
180043eb4:	41 8b 0c 80          	mov    (%r8,%rax,4),%ecx
180043eb8:	41 8b 04 90          	mov    (%r8,%rdx,4),%eax
180043ebc:	33 d2                	xor    %edx,%edx
180043ebe:	2b c1                	sub    %ecx,%eax
180043ec0:	41 8d 49 ff          	lea    -0x1(%r9),%ecx
180043ec4:	ff c8                	dec    %eax
180043ec6:	41 03 c1             	add    %r9d,%eax
180043ec9:	f7 f1                	div    %ecx
180043ecb:	49 8b 42 10          	mov    0x10(%r10),%rax
180043ecf:	48 63 ca             	movslq %edx,%rcx
180043ed2:	8b 04 88             	mov    (%rax,%rcx,4),%eax
180043ed5:	c3                   	ret
180043ed6:	cc                   	int3
180043ed7:	cc                   	int3
180043ed8:	40 53                	rex push %rbx
180043eda:	48 83 ec 20          	sub    $0x20,%rsp
180043ede:	44 89 41 08          	mov    %r8d,0x8(%rcx)
180043ee2:	48 8b d9             	mov    %rcx,%rbx
180043ee5:	45 0f af c1          	imul   %r9d,%r8d
180043ee9:	48 89 11             	mov    %rdx,(%rcx)
180043eec:	44 89 49 0c          	mov    %r9d,0xc(%rcx)
180043ef0:	41 c1 e0 02          	shl    $0x2,%r8d
180043ef4:	41 8b c8             	mov    %r8d,%ecx
180043ef7:	e8 18 2a 00 00       	call   0x180046914
180043efc:	48 89 43 10          	mov    %rax,0x10(%rbx)
180043f00:	48 f7 d8             	neg    %rax
180043f03:	1b c0                	sbb    %eax,%eax
180043f05:	f7 d0                	not    %eax
180043f07:	25 9a 00 00 c0       	and    $0xc000009a,%eax
180043f0c:	48 83 c4 20          	add    $0x20,%rsp
180043f10:	5b                   	pop    %rbx
180043f11:	c3                   	ret
180043f12:	cc                   	int3
180043f13:	cc                   	int3
180043f14:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180043f19:	48 89 74 24 10       	mov    %rsi,0x10(%rsp)
180043f1e:	48 89 7c 24 18       	mov    %rdi,0x18(%rsp)
180043f23:	45 33 db             	xor    %r11d,%r11d
180043f26:	41 8b f8             	mov    %r8d,%edi
180043f29:	8b f2                	mov    %edx,%esi
180043f2b:	48 8b d9             	mov    %rcx,%rbx
180043f2e:	44 39 59 0c          	cmp    %r11d,0xc(%rcx)
180043f32:	76 3e                	jbe    0x180043f72
180043f34:	44 8b 4b 0c          	mov    0xc(%rbx),%r9d
180043f38:	41 8b c1             	mov    %r9d,%eax
180043f3b:	4c 8b 43 10          	mov    0x10(%rbx),%r8
180043f3f:	0f af c6             	imul   %esi,%eax
180043f42:	44 0f af cf          	imul   %edi,%r9d
180043f46:	41 03 c3             	add    %r11d,%eax
180043f49:	45 03 cb             	add    %r11d,%r9d
180043f4c:	45 8b 14 80          	mov    (%r8,%rax,4),%r10d
180043f50:	43 8b 0c 88          	mov    (%r8,%r9,4),%ecx
180043f54:	41 89 0c 80          	mov    %ecx,(%r8,%rax,4)
180043f58:	8b cf                	mov    %edi,%ecx
180043f5a:	0f af 4b 0c          	imul   0xc(%rbx),%ecx
180043f5e:	48 8b 43 10          	mov    0x10(%rbx),%rax
180043f62:	41 03 cb             	add    %r11d,%ecx
180043f65:	41 ff c3             	inc    %r11d
180043f68:	44 89 14 88          	mov    %r10d,(%rax,%rcx,4)
180043f6c:	44 3b 5b 0c          	cmp    0xc(%rbx),%r11d
180043f70:	72 c2                	jb     0x180043f34