180098ef3:	55                   	push   %rbp
180098ef4:	41 56                	push   %r14
180098ef6:	41 57                	push   %r15
180098ef8:	48 8d 68 a9          	lea    -0x57(%rax),%rbp
180098efc:	48 81 ec d0 00 00 00 	sub    $0xd0,%rsp
180098f03:	8b 75 7f             	mov    0x7f(%rbp),%esi
180098f06:	49 8b d9             	mov    %r9,%rbx
180098f09:	49 8b f8             	mov    %r8,%rdi
180098f0c:	4c 8b f2             	mov    %rdx,%r14
180098f0f:	4c 8b f9             	mov    %rcx,%r15
180098f12:	8d 86 fb ff ff 2f    	lea    0x2ffffffb(%rsi),%eax
180098f18:	83 f8 02             	cmp    $0x2,%eax
180098f1b:	77 06                	ja     0x180098f23
180098f1d:	41 0f ba 69 34 1d    	btsl   $0x1d,0x34(%r9)
180098f23:	89 74 24 20          	mov    %esi,0x20(%rsp)
180098f27:	e8 00 05 00 00       	call   0x18009942c
180098f2c:	85 c0                	test   %eax,%eax
180098f2e:	0f 89 fb 00 00 00    	jns    0x18009902f
180098f34:	8b 4b 34             	mov    0x34(%rbx),%ecx
180098f37:	f7 c1 00 00 ff 00    	test   $0xff0000,%ecx
180098f3d:	0f 84 ec 00 00 00    	je     0x18009902f
180098f43:	0f ba e1 10          	bt     $0x10,%ecx
180098f47:	0f 83 b9 00 00 00    	jae    0x180099006
180098f4d:	0f 28 4b 10          	movaps 0x10(%rbx),%xmm1
180098f51:	4c 8d 4d cf          	lea    -0x31(%rbp),%r9
180098f55:	0f 28 03             	movaps (%rbx),%xmm0
180098f58:	48 8d 55 0f          	lea    0xf(%rbp),%rdx
180098f5c:	48 83 65 b7 00       	andq   $0x0,-0x49(%rbp)
180098f61:	b9 ff 01 00 00       	mov    $0x1ff,%ecx
180098f66:	0f 29 4d df          	movaps %xmm1,-0x21(%rbp)
180098f6a:	4c 8b c7             	mov    %rdi,%r8
180098f6d:	0f 28 4b 30          	movaps 0x30(%rbx),%xmm1
180098f71:	0f 29 4d ff          	movaps %xmm1,-0x1(%rbp)
180098f75:	66 0f 73 d9 04       	psrldq $0x4,%xmm1
180098f7a:	66 0f 7e c8          	movd   %xmm1,%eax
180098f7e:	0f 29 45 cf          	movaps %xmm0,-0x31(%rbp)
180098f82:	0f 28 43 20          	movaps 0x20(%rbx),%xmm0
180098f86:	0f ba f0 10          	btr    $0x10,%eax
180098f8a:	0f 29 45 ef          	movaps %xmm0,-0x11(%rbp)
180098f8e:	89 45 03             	mov    %eax,0x3(%rbp)
180098f91:	48 8b 43 28          	mov    0x28(%rbx),%rax
180098f95:	48 03 c1             	add    %rcx,%rax
180098f98:	c7 44 24 20 01 00 00 	movl   $0xf0000001,0x20(%rsp)
180098f9f:	f0
180098fa0:	48 25 00 fe ff ff    	and    $0xfffffffffffffe00,%rax
180098fa6:	48 89 45 f7          	mov    %rax,-0x9(%rbp)
180098faa:	8b 43 30             	mov    0x30(%rbx),%eax
180098fad:	03 c1                	add    %ecx,%eax
180098faf:	48 8d 4d 9f          	lea    -0x61(%rbp),%rcx
180098fb3:	25 00 fe ff ff       	and    $0xfffffe00,%eax
180098fb8:	89 45 ff             	mov    %eax,-0x1(%rbp)
180098fbb:	48 8d 45 9f          	lea    -0x61(%rbp),%rax
180098fbf:	48 89 45 a7          	mov    %rax,-0x59(%rbp)
180098fc3:	48 8d 45 9f          	lea    -0x61(%rbp),%rax
180098fc7:	48 89 45 9f          	mov    %rax,-0x61(%rbp)
180098fcb:	48 8d 45 9f          	lea    -0x61(%rbp),%rax
180098fcf:	48 89 45 af          	mov    %rax,-0x51(%rbp)
180098fd3:	8b 47 20             	mov    0x20(%rdi),%eax
180098fd6:	89 45 bf             	mov    %eax,-0x41(%rbp)
180098fd9:	e8 4e 04 00 00       	call   0x18009942c
180098fde:	85 c0                	test   %eax,%eax
180098fe0:	78 4d                	js     0x18009902f
180098fe2:	48 8b 45 af          	mov    -0x51(%rbp),%rax
180098fe6:	45 33 c0             	xor    %r8d,%r8d
180098fe9:	48 8b cf             	mov    %rdi,%rcx
180098fec:	48 8b 10             	mov    (%rax),%rdx
180098fef:	0f ba 6a 28 10       	btsl   $0x10,0x28(%rdx)
180098ff4:	e8 77 33 00 00       	call   0x18009c370
180098ff9:	85 c0                	test   %eax,%eax
180098ffb:	78 32                	js     0x18009902f
180098ffd:	c7 43 38 01 00 00 f0 	movl   $0xf0000001,0x38(%rbx)
180099004:	eb 14                	jmp    0x18009901a
180099006:	0f ba e1 12          	bt     $0x12,%ecx
18009900a:	73 23                	jae    0x18009902f
18009900c:	0f ba e9 1b          	bts    $0x1b,%ecx
180099010:	c7 43 38 0f 00 00 d0 	movl   $0xd000000f,0x38(%rbx)
180099017:	89 4b 34             	mov    %ecx,0x34(%rbx)
18009901a:	4c 8b cb             	mov    %rbx,%r9
18009901d:	89 74 24 20          	mov    %esi,0x20(%rsp)
180099021:	4c 8b c7             	mov    %rdi,%r8
180099024:	49 8b d6             	mov    %r14,%rdx
180099027:	49 8b cf             	mov    %r15,%rcx
18009902a:	e8 21 00 00 00       	call   0x180099050
18009902f:	4c 8d 9c 24 d0 00 00 	lea    0xd0(%rsp),%r11
180099036:	00
180099037:	49 8b 5b 20          	mov    0x20(%r11),%rbx
18009903b:	49 8b 73 28          	mov    0x28(%r11),%rsi
18009903f:	49 8b 7b 30          	mov    0x30(%r11),%rdi
180099043:	49 8b e3             	mov    %r11,%rsp
180099046:	41 5f                	pop    %r15
180099048:	41 5e                	pop    %r14
18009904a:	5d                   	pop    %rbp
18009904b:	c3                   	ret
18009904c:	cc                   	int3
18009904d:	cc                   	int3
18009904e:	cc                   	int3
18009904f:	cc                   	int3
180099050:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180099055:	4c 89 44 24 18       	mov    %r8,0x18(%rsp)
18009905a:	48 89 54 24 10       	mov    %rdx,0x10(%rsp)
18009905f:	55                   	push   %rbp
180099060:	56                   	push   %rsi
180099061:	57                   	push   %rdi
180099062:	41 54                	push   %r12
180099064:	41 55                	push   %r13
180099066:	41 56                	push   %r14
180099068:	41 57                	push   %r15
18009906a:	48 83 ec 70          	sub    $0x70,%rsp
18009906e:	4c 8b e9             	mov    %rcx,%r13
180099071:	4d 85 c0             	test   %r8,%r8
180099074:	0f 84 91 03 00 00    	je     0x18009940b
18009907a:	4d 85 c9             	test   %r9,%r9
18009907d:	0f 84 88 03 00 00    	je     0x18009940b
180099083:	48 85 c9             	test   %rcx,%rcx
180099086:	75 09                	jne    0x180099091
180099088:	48 85 d2             	test   %rdx,%rdx
18009908b:	0f 84 7a 03 00 00    	je     0x18009940b
180099091:	49 8b 78 10          	mov    0x10(%r8),%rdi
180099095:	0f 57 c0             	xorps  %xmm0,%xmm0
180099098:	45 8b 51 20          	mov    0x20(%r9),%r10d
18009909c:	be 17 00 00 c0       	mov    $0xc0000017,%esi
1800990a1:	41 83 e2 02          	and    $0x2,%r10d
1800990a5:	c6 44 24 30 00       	movb   $0x0,0x30(%rsp)
1800990aa:	0f 11 44 24 50       	movups %xmm0,0x50(%rsp)
1800990af:	48 8d 47 08          	lea    0x8(%rdi),%rax
1800990b3:	48 0f 44 c7          	cmove  %rdi,%rax
1800990b7:	0f 11 44 24 60       	movups %xmm0,0x60(%rsp)
1800990bc:	48 8b 18             	mov    (%rax),%rbx
1800990bf:	48 3b df             	cmp    %rdi,%rbx
1800990c2:	0f 84 48 03 00 00    	je     0x180099410
1800990c8:	4d 8b 59 28          	mov    0x28(%r9),%r11
1800990cc:	41 bf 01 00 00 00    	mov    $0x1,%r15d
1800990d2:	41 8b 69 34          	mov    0x34(%r9),%ebp
1800990d6:	41 8b 41 38          	mov    0x38(%r9),%eax
1800990da:	4c 89 5c 24 38       	mov    %r11,0x38(%rsp)
1800990df:	39 43 2c             	cmp    %eax,0x2c(%rbx)
1800990e2:	0f 85 5e 01 00 00    	jne    0x180099246
1800990e8:	48 8b 43 10          	mov    0x10(%rbx),%rax
1800990ec:	4d 8b 01             	mov    (%r9),%r8
1800990ef:	4d 8b 71 08          	mov    0x8(%r9),%r14
1800990f3:	4c 3b c0             	cmp    %rax,%r8
1800990f6:	4c 0f 46 c0          	cmovbe %rax,%r8
1800990fa:	48 ff c8             	dec    %rax
1800990fd:	48 03 43 20          	add    0x20(%rbx),%rax
180099101:	4c 3b f0             	cmp    %rax,%r14
180099104:	4c 0f 43 f0          	cmovae %rax,%r14
180099108:	4d 3b c6             	cmp    %r14,%r8
18009910b:	0f 87 31 01 00 00    	ja     0x180099242
180099111:	45 8b 59 30          	mov    0x30(%r9),%r11d
180099115:	49 8d 4b ff          	lea    -0x1(%r11),%rcx
180099119:	49 03 c8             	add    %r8,%rcx
18009911c:	45 39 79 30          	cmp    %r15d,0x30(%r9)
180099120:	74 0b                	je     0x18009912d
180099122:	33 d2                	xor    %edx,%edx
180099124:	48 8b c1             	mov    %rcx,%rax
180099127:	49 f7 f3             	div    %r11
18009912a:	48 2b ca             	sub    %rdx,%rcx
18009912d:	48 8b 54 24 38       	mov    0x38(%rsp),%rdx
180099132:	4c 8b e1             	mov    %rcx,%r12
180099135:	4d 2b e0             	sub    %r8,%r12
180099138:	48 8d 42 ff          	lea    -0x1(%rdx),%rax
18009913c:	48 03 c1             	add    %rcx,%rax
18009913f:	48 3b c1             	cmp    %rcx,%rax
180099142:	0f 82 fa 00 00 00    	jb     0x180099242
180099148:	49 3b c6             	cmp    %r14,%rax
18009914b:	0f 87 f1 00 00 00    	ja     0x180099242
180099151:	45 85 d2             	test   %r10d,%r10d
180099154:	74 21                	je     0x180099177
180099156:	4c 2b f2             	sub    %rdx,%r14
180099159:	4d 03 f7             	add    %r15,%r14
18009915c:	45 39 79 30          	cmp    %r15d,0x30(%r9)
180099160:	75 05                	jne    0x180099167
180099162:	45 33 c0             	xor    %r8d,%r8d
180099165:	eb 0b                	jmp    0x180099172
180099167:	33 d2                	xor    %edx,%edx
180099169:	49 8b c6             	mov    %r14,%rax
18009916c:	49 f7 f3             	div    %r11
18009916f:	4c 8b c2             	mov    %rdx,%r8
180099172:	4d 2b f0             	sub    %r8,%r14
180099175:	eb 06                	jmp    0x18009917d
180099177:	45 33 c0             	xor    %r8d,%r8d
18009917a:	4c 8b f1             	mov    %rcx,%r14
18009917d:	49 8b 49 10          	mov    0x10(%r9),%rcx
180099181:	45 33 ff             	xor    %r15d,%r15d
180099184:	48 85 c9             	test   %rcx,%rcx
180099187:	75 0c                	jne    0x180099195
180099189:	4d 39 79 18          	cmp    %r15,0x18(%r9)
18009918d:	75 06                	jne    0x180099195
18009918f:	48 8b 43 18          	mov    0x18(%rbx),%rax
180099193:	eb 0d                	jmp    0x1800991a2
180099195:	48 8b 43 18          	mov    0x18(%rbx),%rax
180099199:	48 85 c0             	test   %rax,%rax
18009919c:	0f 84 9a 00 00 00    	je     0x18009923c
1800991a2:	ba 00 00 09 00       	mov    $0x90000,%edx
1800991a7:	48 85 c0             	test   %rax,%rax
1800991aa:	74 58                	je     0x180099204
1800991ac:	4d 8b 79 18          	mov    0x18(%r9),%r15
1800991b0:	48 3b c8             	cmp    %rax,%rcx
1800991b3:	48 0f 46 c8          	cmovbe %rax,%rcx
1800991b7:	48 ff c8             	dec    %rax
1800991ba:	48 03 43 20          	add    0x20(%rbx),%rax
1800991be:	4c 3b f8             	cmp    %rax,%r15
1800991c1:	4c 0f 43 f8          	cmovae %rax,%r15
1800991c5:	49 3b cf             	cmp    %r15,%rcx
1800991c8:	77 72                	ja     0x18009923c
1800991ca:	4c 8b 5c 24 38       	mov    0x38(%rsp),%r11
1800991cf:	4a 8d 04 21          	lea    (%rcx,%r12,1),%rax
1800991d3:	49 8d 4b ff          	lea    -0x1(%r11),%rcx
1800991d7:	48 03 c8             	add    %rax,%rcx
1800991da:	48 3b c8             	cmp    %rax,%rcx
1800991dd:	72 5d                	jb     0x18009923c
1800991df:	49 3b cf             	cmp    %r15,%rcx
1800991e2:	77 58                	ja     0x18009923c
1800991e4:	41 bc 01 00 00 00    	mov    $0x1,%r12d
1800991ea:	45 85 d2             	test   %r10d,%r10d
1800991ed:	74 0b                	je     0x1800991fa
1800991ef:	4d 2b f8             	sub    %r8,%r15
1800991f2:	4d 2b fb             	sub    %r11,%r15
1800991f5:	4d 03 fc             	add    %r12,%r15
1800991f8:	eb 03                	jmp    0x1800991fd
1800991fa:	4c 8b f8             	mov    %rax,%r15
1800991fd:	ba 00 f0 09 00       	mov    $0x9f000,%edx
180099202:	eb 0b                	jmp    0x18009920f
180099204:	4c 8b 5c 24 38       	mov    0x38(%rsp),%r11
180099209:	41 bc 01 00 00 00    	mov    $0x1,%r12d
18009920f:	44 8b 43 28          	mov    0x28(%rbx),%r8d
180099213:	41 8b c0             	mov    %r8d,%eax
180099216:	40 0f b6 cd          	movzbl %bpl,%ecx
18009921a:	23 c1                	and    %ecx,%eax
18009921c:	3b c1                	cmp    %ecx,%eax
18009921e:	75 1c                	jne    0x18009923c
180099220:	8b cd                	mov    %ebp,%ecx
180099222:	41 8b c0             	mov    %r8d,%eax
180099225:	81 e1 00 0f 00 00    	and    $0xf00,%ecx
18009922b:	23 c1                	and    %ecx,%eax
18009922d:	3b c1                	cmp    %ecx,%eax
18009922f:	75 0b                	jne    0x18009923c
180099231:	41 8b c0             	mov    %r8d,%eax
180099234:	23 c2                	and    %edx,%eax
180099236:	23 d5                	and    %ebp,%edx
180099238:	3b d0                	cmp    %eax,%edx
18009923a:	74 26                	je     0x180099262
18009923c:	41 bf 01 00 00 00    	mov    $0x1,%r15d
180099242:	41 8b 41 38          	mov    0x38(%r9),%eax
180099246:	45 85 d2             	test   %r10d,%r10d
180099249:	74 06                	je     0x180099251
18009924b:	48 8b 5b 08          	mov    0x8(%rbx),%rbx
18009924f:	eb 03                	jmp    0x180099254
180099251:	48 8b 1b             	mov    (%rbx),%rbx
180099254:	48 3b df             	cmp    %rdi,%rbx
180099257:	0f 84 b3 01 00 00    	je     0x180099410
18009925d:	e9 7d fe ff ff       	jmp    0x1800990df
180099262:	8b 43 2c             	mov    0x2c(%rbx),%eax
180099265:	48 8d 0d f4 9a 10 00 	lea    0x109af4(%rip),%rcx        # 0x1801a2d60
18009926c:	48 8b b4 24 c0 00 00 	mov    0xc0(%rsp),%rsi
180099273:	00
180099274:	8b fd                	mov    %ebp,%edi
180099276:	41 33 f8             	xor    %r8d,%edi
180099279:	89 44 24 6c          	mov    %eax,0x6c(%rsp)
18009927d:	81 e7 ff 0f 00 00    	and    $0xfff,%edi
180099283:	4c 89 74 24 50       	mov    %r14,0x50(%rsp)
180099288:	33 fd                	xor    %ebp,%edi
18009928a:	4c 89 7c 24 58       	mov    %r15,0x58(%rsp)
18009928f:	c1 ed 1b             	shr    $0x1b,%ebp
180099292:	41 22 ec             	and    %r12b,%bpl
180099295:	4c 89 5c 24 60       	mov    %r11,0x60(%rsp)
18009929a:	45 85 c0             	test   %r8d,%r8d
18009929d:	40 0f b6 c5          	movzbl %bpl,%eax
1800992a1:	89 7c 24 68          	mov    %edi,0x68(%rsp)
1800992a5:	41 0f 48 c4          	cmovs  %r12d,%eax
1800992a9:	48 3b f1             	cmp    %rcx,%rsi
1800992ac:	75 11                	jne    0x1800992bf
1800992ae:	8b 4c 24 30          	mov    0x30(%rsp),%ecx
1800992b2:	84 c0                	test   %al,%al
1800992b4:	0f b6 c9             	movzbl %cl,%ecx
1800992b7:	41 0f 44 cc          	cmove  %r12d,%ecx
1800992bb:	89 4c 24 30          	mov    %ecx,0x30(%rsp)
1800992bf:	48 8b d3             	mov    %rbx,%rdx
1800992c2:	48 8b ce             	mov    %rsi,%rcx
1800992c5:	e8 76 32 00 00       	call   0x18009c540
1800992ca:	48 8b 4b 10          	mov    0x10(%rbx),%rcx
1800992ce:	48 8d 05 4b 9a 10 00 	lea    0x109a4b(%rip),%rax        # 0x1801a2d20
1800992d5:	48 8b 6b 20          	mov    0x20(%rbx),%rbp
1800992d9:	4f 8d 24 1e          	lea    (%r14,%r11,1),%r12
1800992dd:	48 03 e9             	add    %rcx,%rbp
1800992e0:	48 3b f0             	cmp    %rax,%rsi
1800992e3:	75 29                	jne    0x18009930e
1800992e5:	4c 3b f1             	cmp    %rcx,%r14
1800992e8:	75 11                	jne    0x1800992fb
1800992ea:	4c 3b e5             	cmp    %rbp,%r12
1800992ed:	75 0c                	jne    0x1800992fb
1800992ef:	b8 00 00 00 40       	mov    $0x40000000,%eax
1800992f4:	85 43 28             	test   %eax,0x28(%rbx)
1800992f7:	74 15                	je     0x18009930e
1800992f9:	eb 08                	jmp    0x180099303
1800992fb:	b8 00 00 00 40       	mov    $0x40000000,%eax
180099300:	09 43 28             	or     %eax,0x28(%rbx)
180099303:	4d 85 ed             	test   %r13,%r13
180099306:	74 06                	je     0x18009930e
180099308:	0b f8                	or     %eax,%edi
18009930a:	89 7c 24 68          	mov    %edi,0x68(%rsp)
18009930e:	4c 3b f1             	cmp    %rcx,%r14
180099311:	74 3f                	je     0x180099352
180099313:	8b 43 2c             	mov    0x2c(%rbx),%eax
180099316:	4d 8b c6             	mov    %r14,%r8
180099319:	44 8b 4b 28          	mov    0x28(%rbx),%r9d
18009931d:	4c 2b c1             	sub    %rcx,%r8
180099320:	48 8b 53 18          	mov    0x18(%rbx),%rdx
180099324:	89 44 24 20          	mov    %eax,0x20(%rsp)
180099328:	e8 53 2e 00 00       	call   0x18009c180
18009932d:	45 33 c0             	xor    %r8d,%r8d
180099330:	48 8b d0             	mov    %rax,%rdx
180099333:	48 8b ce             	mov    %rsi,%rcx
180099336:	e8 35 30 00 00       	call   0x18009c370
18009933b:	8b f0                	mov    %eax,%esi
18009933d:	85 c0                	test   %eax,%eax
18009933f:	0f 88 cb 00 00 00    	js     0x180099410
180099345:	48 8b b4 24 c0 00 00 	mov    0xc0(%rsp),%rsi
18009934c:	00
18009934d:	4c 8b 5c 24 38       	mov    0x38(%rsp),%r11
180099352:	4c 3b e5             	cmp    %rbp,%r12
180099355:	74 3d                	je     0x180099394
180099357:	4f 8d 0c 1f          	lea    (%r15,%r11,1),%r9
18009935b:	49 2b ec             	sub    %r12,%rbp
18009935e:	49 8b c7             	mov    %r15,%rax
180099361:	4c 8b c5             	mov    %rbp,%r8
180099364:	48 f7 d8             	neg    %rax
180099367:	49 8b cc             	mov    %r12,%rcx
18009936a:	8b 43 2c             	mov    0x2c(%rbx),%eax
18009936d:	48 1b d2             	sbb    %rdx,%rdx
180099370:	89 44 24 20          	mov    %eax,0x20(%rsp)
180099374:	49 23 d1             	and    %r9,%rdx
180099377:	44 8b 4b 28          	mov    0x28(%rbx),%r9d
18009937b:	e8 00 2e 00 00       	call   0x18009c180
180099380:	45 33 c0             	xor    %r8d,%r8d
180099383:	48 8b d0             	mov    %rax,%rdx
180099386:	48 8b ce             	mov    %rsi,%rcx
180099389:	e8 e2 2f 00 00       	call   0x18009c370
18009938e:	8b f0                	mov    %eax,%esi
180099390:	85 c0                	test   %eax,%eax
180099392:	78 7c                	js     0x180099410
180099394:	33 f6                	xor    %esi,%esi
180099396:	4d 85 ed             	test   %r13,%r13
180099399:	74 42                	je     0x1800993dd
18009939b:	48 8b 44 24 38       	mov    0x38(%rsp),%rax
1800993a0:	48 89 43 20          	mov    %rax,0x20(%rbx)
1800993a4:	8b 84 24 d0 00 00 00 	mov    0xd0(%rsp),%eax
1800993ab:	89 43 2c             	mov    %eax,0x2c(%rbx)
1800993ae:	4c 89 73 10          	mov    %r14,0x10(%rbx)
1800993b2:	4c 89 7b 18          	mov    %r15,0x18(%rbx)