180048e6f:	2b ca                	sub    %edx,%ecx
180048e71:	8b c1                	mov    %ecx,%eax
180048e73:	99                   	cltd
180048e74:	41 f7 f8             	idiv   %r8d
180048e77:	66 3b 45 f6          	cmp    -0xa(%rbp),%ax
180048e7b:	0f 85 a9 01 00 00    	jne    0x18004902a
180048e81:	0f b7 4d d6          	movzwl -0x2a(%rbp),%ecx
180048e85:	8a c1                	mov    %cl,%al
180048e87:	66 83 e1 01          	and    $0x1,%cx
180048e8b:	74 08                	je     0x180048e95
180048e8d:	a8 02                	test   $0x2,%al
180048e8f:	0f 85 95 01 00 00    	jne    0x18004902a
180048e95:	a8 02                	test   $0x2,%al
180048e97:	74 1e                	je     0x180048eb7
180048e99:	41 0f b7 47 28       	movzwl 0x28(%r15),%eax
180048e9e:	66 85 c0             	test   %ax,%ax
180048ea1:	74 14                	je     0x180048eb7
180048ea3:	66 83 f8 02          	cmp    $0x2,%ax
180048ea7:	0f 86 52 01 00 00    	jbe    0x180048fff
180048ead:	66 83 f8 04          	cmp    $0x4,%ax
180048eb1:	0f 84 48 01 00 00    	je     0x180048fff
180048eb7:	bf 03 00 00 00       	mov    $0x3,%edi
180048ebc:	66 85 c9             	test   %cx,%cx
180048ebf:	74 0b                	je     0x180048ecc
180048ec1:	66 41 39 7f 28       	cmp    %di,0x28(%r15)
180048ec6:	0f 84 33 01 00 00    	je     0x180048fff
180048ecc:	4c 8d 4d e0          	lea    -0x20(%rbp),%r9
180048ed0:	41 8b d4             	mov    %r12d,%edx
180048ed3:	4c 8d 45 d4          	lea    -0x2c(%rbp),%r8
180048ed7:	49 8b cf             	mov    %r15,%rcx
180048eda:	e8 51 fa ff ff       	call   0x180048930
180048edf:	8b f0                	mov    %eax,%esi
180048ee1:	85 c0                	test   %eax,%eax
180048ee3:	0f 88 4b 01 00 00    	js     0x180049034
180048ee9:	48 8b 4d 60          	mov    0x60(%rbp),%rcx
180048eed:	48 8b 41 08          	mov    0x8(%rcx),%rax
180048ef1:	48 39 08             	cmp    %rcx,(%rax)
180048ef4:	0f 85 24 01 00 00    	jne    0x18004901e
180048efa:	48 8b 7d e0          	mov    -0x20(%rbp),%rdi
180048efe:	49 8b d5             	mov    %r13,%rdx
180048f01:	48 89 0f             	mov    %rcx,(%rdi)
180048f04:	48 89 47 08          	mov    %rax,0x8(%rdi)
180048f08:	48 89 38             	mov    %rdi,(%rax)
180048f0b:	48 89 79 08          	mov    %rdi,0x8(%rcx)
180048f0f:	0f b7 47 14          	movzwl 0x14(%rdi),%eax
180048f13:	0f b7 4d 40          	movzwl 0x40(%rbp),%ecx
180048f17:	66 2b cb             	sub    %bx,%cx
180048f1a:	66 3b c8             	cmp    %ax,%cx
180048f1d:	66 0f 43 c8          	cmovae %ax,%cx
180048f21:	0f b7 d9             	movzwl %cx,%ebx
180048f24:	48 8d 4f 1c          	lea    0x1c(%rdi),%rcx
180048f28:	44 8b c3             	mov    %ebx,%r8d
180048f2b:	e8 90 ca 0e 00       	call   0x1801359c0
180048f30:	66 01 5f 16          	add    %bx,0x16(%rdi)
180048f34:	e9 c3 00 00 00       	jmp    0x180048ffc
180048f39:	48 85 db             	test   %rbx,%rbx
180048f3c:	0f 84 bd 00 00 00    	je     0x180048fff
180048f42:	41 0f b7 47 1c       	movzwl 0x1c(%r15),%eax
180048f47:	66 83 e8 10          	sub    $0x10,%ax
180048f4b:	44 0f b7 c0          	movzwl %ax,%r8d
180048f4f:	0f b7 43 14          	movzwl 0x14(%rbx),%eax
180048f53:	66 83 c0 08          	add    $0x8,%ax
180048f57:	0f b7 c0             	movzwl %ax,%eax
180048f5a:	41 8d 48 ff          	lea    -0x1(%r8),%ecx
180048f5e:	03 c8                	add    %eax,%ecx
180048f60:	8b c1                	mov    %ecx,%eax
180048f62:	99                   	cltd
180048f63:	41 f7 f8             	idiv   %r8d
180048f66:	2b ca                	sub    %edx,%ecx
180048f68:	8b c1                	mov    %ecx,%eax
180048f6a:	99                   	cltd
180048f6b:	41 f7 f8             	idiv   %r8d
180048f6e:	66 3b 45 f6          	cmp    -0xa(%rbp),%ax
180048f72:	0f 85 b2 00 00 00    	jne    0x18004902a
180048f78:	8b 53 18             	mov    0x18(%rbx),%edx
180048f7b:	49 8b cf             	mov    %r15,%rcx
180048f7e:	bf 01 00 00 00       	mov    $0x1,%edi
180048f83:	e8 88 f1 ff ff       	call   0x180048110
180048f88:	8b 48 04             	mov    0x4(%rax),%ecx
180048f8b:	83 f9 ff             	cmp    $0xffffffff,%ecx
180048f8e:	74 1e                	je     0x180048fae
180048f90:	44 8b f7             	mov    %edi,%r14d
180048f93:	8b d1                	mov    %ecx,%edx
180048f95:	41 03 fe             	add    %r14d,%edi
180048f98:	49 8b cf             	mov    %r15,%rcx
180048f9b:	e8 70 f1 ff ff       	call   0x180048110
180048fa0:	8b 48 04             	mov    0x4(%rax),%ecx
180048fa3:	83 f9 ff             	cmp    $0xffffffff,%ecx
180048fa6:	75 eb                	jne    0x180048f93
180048fa8:	41 be 16 00 e7 c0    	mov    $0xc0e70016,%r14d
180048fae:	44 0f b7 45 f4       	movzwl -0xc(%rbp),%r8d
180048fb3:	44 3b c7             	cmp    %edi,%r8d
180048fb6:	75 72                	jne    0x18004902a
180048fb8:	44 89 60 04          	mov    %r12d,0x4(%rax)
180048fbc:	0f b7 45 40          	movzwl 0x40(%rbp),%eax
180048fc0:	8b d0                	mov    %eax,%edx
180048fc2:	8b c8                	mov    %eax,%ecx
180048fc4:	41 0f af d0          	imul   %r8d,%edx
180048fc8:	0f b7 f8             	movzwl %ax,%edi
180048fcb:	44 0f b7 43 14       	movzwl 0x14(%rbx),%r8d
180048fd0:	41 8b c0             	mov    %r8d,%eax
180048fd3:	83 ea 08             	sub    $0x8,%edx
180048fd6:	2b c2                	sub    %edx,%eax
180048fd8:	3b c8                	cmp    %eax,%ecx
180048fda:	72 07                	jb     0x180048fe3
180048fdc:	41 0f b7 f8          	movzwl %r8w,%edi
180048fe0:	66 2b fa             	sub    %dx,%di
180048fe3:	8b ca                	mov    %edx,%ecx
180048fe5:	49 8b d5             	mov    %r13,%rdx
180048fe8:	48 83 c1 1c          	add    $0x1c,%rcx
180048fec:	44 0f b7 c7          	movzwl %di,%r8d
180048ff0:	48 03 cb             	add    %rbx,%rcx
180048ff3:	e8 c8 c9 0e 00       	call   0x1801359c0
180048ff8:	66 01 7b 16          	add    %di,0x16(%rbx)
180048ffc:	45 33 db             	xor    %r11d,%r11d
180048fff:	b9 10 00 00 00       	mov    $0x10,%ecx
180049004:	8b 45 58             	mov    0x58(%rbp),%eax
180049007:	41 ff c4             	inc    %r12d
18004900a:	41 03 c4             	add    %r12d,%eax
18004900d:	3b 45 d0             	cmp    -0x30(%rbp),%eax
180049010:	73 22                	jae    0x180049034
180049012:	8b 45 58             	mov    0x58(%rbp),%eax
180049015:	4c 8b 55 48          	mov    0x48(%rbp),%r10
180049019:	e9 38 fd ff ff       	jmp    0x180048d56
18004901e:	48 8b cf             	mov    %rdi,%rcx
180049021:	cd 29                	int    $0x29
180049023:	be 9a 00 00 c0       	mov    $0xc000009a,%esi
180049028:	eb 0a                	jmp    0x180049034
18004902a:	41 8b f6             	mov    %r14d,%esi
18004902d:	eb 05                	jmp    0x180049034
18004902f:	be 16 00 e7 c0       	mov    $0xc0e70016,%esi
180049034:	48 8b 9c 24 b0 00 00 	mov    0xb0(%rsp),%rbx
18004903b:	00
18004903c:	8b c6                	mov    %esi,%eax
18004903e:	48 83 c4 60          	add    $0x60,%rsp
180049042:	41 5f                	pop    %r15
180049044:	41 5e                	pop    %r14
180049046:	41 5d                	pop    %r13
180049048:	41 5c                	pop    %r12
18004904a:	5f                   	pop    %rdi
18004904b:	5e                   	pop    %rsi
18004904c:	5d                   	pop    %rbp
18004904d:	c3                   	ret
18004904e:	cc                   	int3
18004904f:	cc                   	int3
180049050:	48 89 5c 24 10       	mov    %rbx,0x10(%rsp)
180049055:	55                   	push   %rbp
180049056:	56                   	push   %rsi
180049057:	57                   	push   %rdi
180049058:	48 83 ec 40          	sub    $0x40,%rsp
18004905c:	48 8b 05 0d 39 12 00 	mov    0x12390d(%rip),%rax        # 0x18016c970
180049063:	48 33 c4             	xor    %rsp,%rax
180049066:	48 89 44 24 30       	mov    %rax,0x30(%rsp)
18004906b:	48 8b b9 c0 00 00 00 	mov    0xc0(%rcx),%rdi
180049072:	49 8b f0             	mov    %r8,%rsi
180049075:	0f b7 ea             	movzwl %dx,%ebp
180049078:	48 8b d9             	mov    %rcx,%rbx
18004907b:	48 8b cf             	mov    %rdi,%rcx
18004907e:	33 d2                	xor    %edx,%edx
180049080:	41 b8 00 00 01 00    	mov    $0x10000,%r8d
180049086:	e8 f5 cb 0e 00       	call   0x180135c80
18004908b:	4c 8b c7             	mov    %rdi,%r8
18004908e:	33 d2                	xor    %edx,%edx
180049090:	48 8b cb             	mov    %rbx,%rcx
180049093:	e8 70 02 00 00       	call   0x180049308
180049098:	66 83 fd 03          	cmp    $0x3,%bp
18004909c:	75 10                	jne    0x1800490ae
18004909e:	8b 4b 20             	mov    0x20(%rbx),%ecx
1800490a1:	8b 43 4c             	mov    0x4c(%rbx),%eax
1800490a4:	3b c8                	cmp    %eax,%ecx
1800490a6:	0f 46 c8             	cmovbe %eax,%ecx
1800490a9:	89 4b 20             	mov    %ecx,0x20(%rbx)
1800490ac:	eb 06                	jmp    0x1800490b4
1800490ae:	8b 43 48             	mov    0x48(%rbx),%eax
1800490b1:	89 43 20             	mov    %eax,0x20(%rbx)
1800490b4:	48 83 63 40 00       	andq   $0x0,0x40(%rbx)
1800490b9:	4c 8d 44 24 20       	lea    0x20(%rsp),%r8
1800490be:	83 64 24 2c 00       	andl   $0x0,0x2c(%rsp)
1800490c3:	48 8d 0d 26 5a 10 00 	lea    0x105a26(%rip),%rcx        # 0x18014eaf0
1800490ca:	48 b8 20 20 20 20 43 	movabs $0x5344424320202020,%rax
1800490d1:	42 44 53
1800490d4:	66 89 6b 28          	mov    %bp,0x28(%rbx)
1800490d8:	4c 8b cf             	mov    %rdi,%r9
1800490db:	48 89 44 24 20       	mov    %rax,0x20(%rsp)
1800490e0:	ba 04 00 00 00       	mov    $0x4,%edx
1800490e5:	c7 44 24 28 01 00 00 	movl   $0x2000001,0x28(%rsp)
1800490ec:	02
1800490ed:	bd 00 02 00 00       	mov    $0x200,%ebp
1800490f2:	e8 05 6d 00 00       	call   0x18004fdfc
1800490f7:	4c 8d 43 08          	lea    0x8(%rbx),%r8
1800490fb:	4c 8b c8             	mov    %rax,%r9
1800490fe:	ba 0a 00 00 00       	mov    $0xa,%edx
180049103:	48 8d 0d 16 5a 10 00 	lea    0x105a16(%rip),%rcx        # 0x18014eb20
18004910a:	e8 ed 6c 00 00       	call   0x18004fdfc
18004910f:	44 8b c5             	mov    %ebp,%r8d
180049112:	48 8b d7             	mov    %rdi,%rdx
180049115:	e8 6a ad fe ff       	call   0x180033e84
18004911a:	4c 8b cf             	mov    %rdi,%r9
18004911d:	89 44 24 2c          	mov    %eax,0x2c(%rsp)
180049121:	4c 8d 44 24 20       	lea    0x20(%rsp),%r8
180049126:	ba 04 00 00 00       	mov    $0x4,%edx
18004912b:	48 8d 0d be 59 10 00 	lea    0x1059be(%rip),%rcx        # 0x18014eaf0
180049132:	e8 c5 6c 00 00       	call   0x18004fdfc
180049137:	44 8b 83 90 00 00 00 	mov    0x90(%rbx),%r8d
18004913e:	4c 8b ce             	mov    %rsi,%r9
180049141:	44 0f af 43 1c       	imul   0x1c(%rbx),%r8d
180049146:	33 d2                	xor    %edx,%edx
180049148:	48 8b cb             	mov    %rbx,%rcx
18004914b:	e8 b8 04 00 00       	call   0x180049608
180049150:	8b f8                	mov    %eax,%edi
180049152:	85 c0                	test   %eax,%eax
180049154:	78 0b                	js     0x180049161
180049156:	48 8b d6             	mov    %rsi,%rdx
180049159:	48 8b cb             	mov    %rbx,%rcx
18004915c:	e8 a3 05 00 00       	call   0x180049704
180049161:	8b c7                	mov    %edi,%eax
180049163:	48 8b 4c 24 30       	mov    0x30(%rsp),%rcx
180049168:	48 33 cc             	xor    %rsp,%rcx
18004916b:	e8 bc c9 fc ff       	call   0x180015b2c
180049170:	48 8b 5c 24 68       	mov    0x68(%rsp),%rbx
180049175:	48 83 c4 40          	add    $0x40,%rsp
180049179:	5f                   	pop    %rdi
18004917a:	5e                   	pop    %rsi
18004917b:	5d                   	pop    %rbp
18004917c:	c3                   	ret
18004917d:	cc                   	int3
18004917e:	cc                   	int3
18004917f:	cc                   	int3
180049180:	48 89 5c 24 10       	mov    %rbx,0x10(%rsp)
180049185:	48 89 6c 24 18       	mov    %rbp,0x18(%rsp)
18004918a:	48 89 74 24 20       	mov    %rsi,0x20(%rsp)
18004918f:	57                   	push   %rdi
180049190:	41 54                	push   %r12
180049192:	41 55                	push   %r13
180049194:	41 56                	push   %r14
180049196:	41 57                	push   %r15
180049198:	48 83 ec 20          	sub    $0x20,%rsp
18004919c:	44 8b 89 90 00 00 00 	mov    0x90(%rcx),%r9d
1800491a3:	4c 8b f2             	mov    %rdx,%r14
1800491a6:	44 8b 41 4c          	mov    0x4c(%rcx),%r8d
1800491aa:	33 d2                	xor    %edx,%edx
1800491ac:	48 8b a9 c0 00 00 00 	mov    0xc0(%rcx),%rbp
1800491b3:	41 ff c8             	dec    %r8d
1800491b6:	45 03 c1             	add    %r9d,%r8d
1800491b9:	48 89 6c 24 50       	mov    %rbp,0x50(%rsp)
1800491be:	41 8b c0             	mov    %r8d,%eax
1800491c1:	33 f6                	xor    %esi,%esi
1800491c3:	41 f7 f1             	div    %r9d
1800491c6:	45 33 e4             	xor    %r12d,%r12d
1800491c9:	45 33 ff             	xor    %r15d,%r15d
1800491cc:	44 2b c2             	sub    %edx,%r8d
1800491cf:	48 8b d9             	mov    %rcx,%rbx
1800491d2:	33 d2                	xor    %edx,%edx
1800491d4:	41 8b c0             	mov    %r8d,%eax
1800491d7:	41 f7 f1             	div    %r9d
1800491da:	44 8b e8             	mov    %eax,%r13d
1800491dd:	8b f8                	mov    %eax,%edi
1800491df:	4d 85 f6             	test   %r14,%r14
1800491e2:	75 13                	jne    0x1800491f7
1800491e4:	48 8b 81 b0 00 00 00 	mov    0xb0(%rcx),%rax
1800491eb:	8b b9 a4 00 00 00    	mov    0xa4(%rcx),%edi
1800491f1:	0f ba 20 00          	btl    $0x0,(%rax)
1800491f5:	73 19                	jae    0x180049210
1800491f7:	0f b7 51 28          	movzwl 0x28(%rcx),%edx
1800491fb:	4d 8b c6             	mov    %r14,%r8
1800491fe:	e8 4d fe ff ff       	call   0x180049050
180049203:	44 8b f8             	mov    %eax,%r15d
180049206:	85 c0                	test   %eax,%eax
180049208:	0f 88 d9 00 00 00    	js     0x1800492e7
18004920e:	ff cf                	dec    %edi
180049210:	33 d2                	xor    %edx,%edx
180049212:	41 b8 00 00 01 00    	mov    $0x10000,%r8d
180049218:	48 8b cd             	mov    %rbp,%rcx
18004921b:	e8 60 ca 0e 00       	call   0x180135c80
180049220:	bd 01 00 00 00       	mov    $0x1,%ebp
180049225:	44 3b ed             	cmp    %ebp,%r13d
180049228:	0f 86 ae 00 00 00    	jbe    0x1800492dc
18004922e:	4d 85 f6             	test   %r14,%r14
180049231:	75 10                	jne    0x180049243
180049233:	48 8b 83 b0 00 00 00 	mov    0xb0(%rbx),%rax
18004923a:	0f a3 28             	bt     %ebp,(%rax)
18004923d:	72 04                	jb     0x180049243
18004923f:	32 c0                	xor    %al,%al
180049241:	eb 37                	jmp    0x18004927a
180049243:	44 8b 43 1c          	mov    0x1c(%rbx),%r8d
180049247:	48 8b cb             	mov    %rbx,%rcx
18004924a:	8b 93 90 00 00 00    	mov    0x90(%rbx),%edx
180049250:	44 0f af c6          	imul   %esi,%r8d
180049254:	0f af d5             	imul   %ebp,%edx
180049257:	4c 03 44 24 50       	add    0x50(%rsp),%r8
18004925c:	e8 a7 00 00 00       	call   0x180049308
180049261:	84 c0                	test   %al,%al
180049263:	74 13                	je     0x180049278
180049265:	8b 8b 90 00 00 00    	mov    0x90(%rbx),%ecx
18004926b:	85 f6                	test   %esi,%esi
18004926d:	75 07                	jne    0x180049276
18004926f:	44 8b e1             	mov    %ecx,%r12d
180049272:	44 0f af e5          	imul   %ebp,%r12d
180049276:	03 f1                	add    %ecx,%esi
180049278:	ff cf                	dec    %edi
18004927a:	85 f6                	test   %esi,%esi
18004927c:	74 4f                	je     0x1800492cd
18004927e:	84 c0                	test   %al,%al
180049280:	74 12                	je     0x180049294
180049282:	33 d2                	xor    %edx,%edx
180049284:	b8 00 00 01 00       	mov    $0x10000,%eax
180049289:	f7 73 1c             	divl   0x1c(%rbx)
18004928c:	3b f0                	cmp    %eax,%esi
18004928e:	74 04                	je     0x180049294
180049290:	85 ff                	test   %edi,%edi
180049292:	75 3d                	jne    0x1800492d1
180049294:	8b 43 1c             	mov    0x1c(%rbx),%eax
180049297:	4d 8b ce             	mov    %r14,%r9
18004929a:	44 8b c0             	mov    %eax,%r8d
18004929d:	48 8b cb             	mov    %rbx,%rcx
1800492a0:	41 0f af c4          	imul   %r12d,%eax
1800492a4:	44 0f af c6          	imul   %esi,%r8d
1800492a8:	8b d0                	mov    %eax,%edx
1800492aa:	e8 59 03 00 00       	call   0x180049608
1800492af:	44 8b f8             	mov    %eax,%r15d
1800492b2:	85 c0                	test   %eax,%eax
1800492b4:	78 31                	js     0x1800492e7
1800492b6:	48 8b 4c 24 50       	mov    0x50(%rsp),%rcx
1800492bb:	45 33 e4             	xor    %r12d,%r12d
1800492be:	33 f6                	xor    %esi,%esi
1800492c0:	33 d2                	xor    %edx,%edx
1800492c2:	41 b8 00 00 01 00    	mov    $0x10000,%r8d
1800492c8:	e8 b3 c9 0e 00       	call   0x180135c80
1800492cd:	85 ff                	test   %edi,%edi
1800492cf:	74 0b                	je     0x1800492dc
1800492d1:	ff c5                	inc    %ebp
1800492d3:	41 3b ed             	cmp    %r13d,%ebp
1800492d6:	0f 82 52 ff ff ff    	jb     0x18004922e
1800492dc:	49 8b d6             	mov    %r14,%rdx
1800492df:	48 8b cb             	mov    %rbx,%rcx
1800492e2:	e8 1d 04 00 00       	call   0x180049704
1800492e7:	48 8b 5c 24 58       	mov    0x58(%rsp),%rbx
1800492ec:	41 8b c7             	mov    %r15d,%eax
1800492ef:	48 8b 6c 24 60       	mov    0x60(%rsp),%rbp
1800492f4:	48 8b 74 24 68       	mov    0x68(%rsp),%rsi
1800492f9:	48 83 c4 20          	add    $0x20,%rsp
1800492fd:	41 5f                	pop    %r15
1800492ff:	41 5e                	pop    %r14
180049301:	41 5d                	pop    %r13
180049303:	41 5c                	pop    %r12
180049305:	5f                   	pop    %rdi
180049306:	c3                   	ret
180049307:	cc                   	int3
180049308:	4c 89 44 24 18       	mov    %r8,0x18(%rsp)
18004930d:	55                   	push   %rbp