180040046:	48 8d 05 db 30 10 00 	lea    0x1030db(%rip),%rax        # 0x180143128
18004004d:	48 8b d9             	mov    %rcx,%rbx
180040050:	48 89 01             	mov    %rax,(%rcx)
180040053:	48 8b 89 e0 00 00 00 	mov    0xe0(%rcx),%rcx
18004005a:	48 85 c9             	test   %rcx,%rcx
18004005d:	74 05                	je     0x180040064
18004005f:	e8 f8 68 00 00       	call   0x18004695c
180040064:	48 8b 4b 38          	mov    0x38(%rbx),%rcx
180040068:	48 85 c9             	test   %rcx,%rcx
18004006b:	74 05                	je     0x180040072
18004006d:	e8 ea 68 00 00       	call   0x18004695c
180040072:	48 8b 4b 30          	mov    0x30(%rbx),%rcx
180040076:	48 85 c9             	test   %rcx,%rcx
180040079:	74 05                	je     0x180040080
18004007b:	e8 dc 68 00 00       	call   0x18004695c
180040080:	48 8d 05 41 2f 10 00 	lea    0x102f41(%rip),%rax        # 0x180142fc8
180040087:	48 89 03             	mov    %rax,(%rbx)
18004008a:	48 83 c4 20          	add    $0x20,%rsp
18004008e:	5b                   	pop    %rbx
18004008f:	c3                   	ret
180040090:	cc                   	int3
180040091:	cc                   	int3
180040092:	cc                   	int3
180040093:	cc                   	int3
180040094:	48 89 5c 24 08       	mov    %rbx,0x8(%rsp)
180040099:	57                   	push   %rdi
18004009a:	48 83 ec 20          	sub    $0x20,%rsp
18004009e:	8b da                	mov    %edx,%ebx
1800400a0:	48 8b f9             	mov    %rcx,%rdi
1800400a3:	e8 98 ff ff ff       	call   0x180040040
1800400a8:	f6 c3 01             	test   $0x1,%bl
1800400ab:	74 08                	je     0x1800400b5
1800400ad:	48 8b cf             	mov    %rdi,%rcx
1800400b0:	e8 a7 68 00 00       	call   0x18004695c
1800400b5:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
1800400ba:	48 8b c7             	mov    %rdi,%rax
1800400bd:	48 83 c4 20          	add    $0x20,%rsp
1800400c1:	5f                   	pop    %rdi
1800400c2:	c3                   	ret
1800400c3:	cc                   	int3
1800400c4:	48 83 89 d0 00 00 00 	orq    $0xffffffffffffffff,0xd0(%rcx)
1800400cb:	ff
1800400cc:	ba 01 00 00 00       	mov    $0x1,%edx
1800400d1:	b8 00 00 00 10       	mov    $0x10000000,%eax
1800400d6:	89 51 44             	mov    %edx,0x44(%rcx)
1800400d9:	48 89 41 58          	mov    %rax,0x58(%rcx)
1800400dd:	48 89 41 68          	mov    %rax,0x68(%rcx)
1800400e1:	c7 41 48 00 02 00 00 	movl   $0x200,0x48(%rcx)
1800400e8:	8d 42 02             	lea    0x2(%rdx),%eax
1800400eb:	c7 41 4c 00 10 00 00 	movl   $0x1000,0x4c(%rcx)
1800400f2:	89 51 54             	mov    %edx,0x54(%rcx)
1800400f5:	89 51 74             	mov    %edx,0x74(%rcx)
1800400f8:	89 51 78             	mov    %edx,0x78(%rcx)
1800400fb:	48 81 c1 90 00 00 00 	add    $0x90,%rcx
180040102:	89 11                	mov    %edx,(%rcx)
180040104:	48 8d 49 18          	lea    0x18(%rcx),%rcx
180040108:	48 2b c2             	sub    %rdx,%rax
18004010b:	75 f5                	jne    0x180040102
18004010d:	c3                   	ret
18004010e:	cc                   	int3
18004010f:	cc                   	int3
180040110:	48 8b c4             	mov    %rsp,%rax
180040113:	48 89 58 08          	mov    %rbx,0x8(%rax)
180040117:	48 89 68 10          	mov    %rbp,0x10(%rax)
18004011b:	48 89 70 18          	mov    %rsi,0x18(%rax)
18004011f:	48 89 78 20          	mov    %rdi,0x20(%rax)
180040123:	41 56                	push   %r14
180040125:	48 83 ec 20          	sub    $0x20,%rsp
180040129:	48 8b f9             	mov    %rcx,%rdi
18004012c:	33 f6                	xor    %esi,%esi
18004012e:	b9 28 01 00 00       	mov    $0x128,%ecx
180040133:	e8 dc 67 00 00       	call   0x180046914
180040138:	48 8b d8             	mov    %rax,%rbx
18004013b:	48 85 c0             	test   %rax,%rax
18004013e:	74 18                	je     0x180040158
180040140:	48 21 70 08          	and    %rsi,0x8(%rax)
180040144:	48 21 70 10          	and    %rsi,0x10(%rax)
180040148:	66 89 70 18          	mov    %si,0x18(%rax)
18004014c:	48 8d 05 d5 2f 10 00 	lea    0x102fd5(%rip),%rax        # 0x180143128
180040153:	48 89 03             	mov    %rax,(%rbx)
180040156:	eb 02                	jmp    0x18004015a
180040158:	33 db                	xor    %ebx,%ebx
18004015a:	48 85 db             	test   %rbx,%rbx
18004015d:	0f 84 05 01 00 00    	je     0x180040268
180040163:	ba 02 00 00 00       	mov    $0x2,%edx
180040168:	48 8b cb             	mov    %rbx,%rcx
18004016b:	48 8b c7             	mov    %rdi,%rax
18004016e:	44 8d 42 7e          	lea    0x7e(%rdx),%r8d
180040172:	0f 10 00             	movups (%rax),%xmm0
180040175:	0f 11 01             	movups %xmm0,(%rcx)
180040178:	0f 10 48 10          	movups 0x10(%rax),%xmm1
18004017c:	0f 11 49 10          	movups %xmm1,0x10(%rcx)
180040180:	0f 10 40 20          	movups 0x20(%rax),%xmm0
180040184:	0f 11 41 20          	movups %xmm0,0x20(%rcx)
180040188:	0f 10 48 30          	movups 0x30(%rax),%xmm1
18004018c:	0f 11 49 30          	movups %xmm1,0x30(%rcx)
180040190:	0f 10 40 40          	movups 0x40(%rax),%xmm0
180040194:	0f 11 41 40          	movups %xmm0,0x40(%rcx)
180040198:	0f 10 48 50          	movups 0x50(%rax),%xmm1
18004019c:	0f 11 49 50          	movups %xmm1,0x50(%rcx)
1800401a0:	0f 10 40 60          	movups 0x60(%rax),%xmm0
1800401a4:	0f 11 41 60          	movups %xmm0,0x60(%rcx)
1800401a8:	49 03 c8             	add    %r8,%rcx
1800401ab:	0f 10 48 70          	movups 0x70(%rax),%xmm1
1800401af:	49 03 c0             	add    %r8,%rax
1800401b2:	0f 11 49 f0          	movups %xmm1,-0x10(%rcx)
1800401b6:	48 83 ea 01          	sub    $0x1,%rdx
1800401ba:	75 b6                	jne    0x180040172
1800401bc:	0f 10 00             	movups (%rax),%xmm0
1800401bf:	4c 8d 43 30          	lea    0x30(%rbx),%r8
1800401c3:	0f 11 01             	movups %xmm0,(%rcx)
1800401c6:	0f 10 48 10          	movups 0x10(%rax),%xmm1
1800401ca:	0f 11 49 10          	movups %xmm1,0x10(%rcx)
1800401ce:	48 8b 40 20          	mov    0x20(%rax),%rax
1800401d2:	48 89 41 20          	mov    %rax,0x20(%rcx)
1800401d6:	49 21 30             	and    %rsi,(%r8)
1800401d9:	48 21 73 38          	and    %rsi,0x38(%rbx)
1800401dd:	48 21 b3 e0 00 00 00 	and    %rsi,0xe0(%rbx)
1800401e4:	48 8b 4f 30          	mov    0x30(%rdi),%rcx
1800401e8:	48 85 c9             	test   %rcx,%rcx
1800401eb:	74 0e                	je     0x1800401fb
1800401ed:	ba 00 01 00 00       	mov    $0x100,%edx
1800401f2:	e8 e1 fa ff ff       	call   0x18003fcd8
1800401f7:	85 c0                	test   %eax,%eax
1800401f9:	78 55                	js     0x180040250
1800401fb:	48 8b 4f 38          	mov    0x38(%rdi),%rcx
1800401ff:	48 85 c9             	test   %rcx,%rcx
180040202:	74 12                	je     0x180040216
180040204:	4c 8d 43 38          	lea    0x38(%rbx),%r8
180040208:	ba 00 04 00 00       	mov    $0x400,%edx
18004020d:	e8 c6 fa ff ff       	call   0x18003fcd8
180040212:	85 c0                	test   %eax,%eax
180040214:	78 3a                	js     0x180040250
180040216:	48 39 b7 e0 00 00 00 	cmp    %rsi,0xe0(%rdi)
18004021d:	74 2c                	je     0x18004024b
18004021f:	0f b7 ab f8 00 00 00 	movzwl 0xf8(%rbx),%ebp
180040226:	8b cd                	mov    %ebp,%ecx
180040228:	e8 e7 66 00 00       	call   0x180046914
18004022d:	48 89 83 e0 00 00 00 	mov    %rax,0xe0(%rbx)
180040234:	48 85 c0             	test   %rax,%rax
180040237:	74 17                	je     0x180040250
180040239:	48 8b 97 e0 00 00 00 	mov    0xe0(%rdi),%rdx
180040240:	44 8b c5             	mov    %ebp,%r8d
180040243:	48 8b c8             	mov    %rax,%rcx
180040246:	e8 75 57 0f 00       	call   0x1801359c0
18004024b:	48 8b f3             	mov    %rbx,%rsi
18004024e:	33 db                	xor    %ebx,%ebx
180040250:	48 85 db             	test   %rbx,%rbx
180040253:	74 13                	je     0x180040268
180040255:	48 8b 03             	mov    (%rbx),%rax
180040258:	ba 01 00 00 00       	mov    $0x1,%edx
18004025d:	48 8b cb             	mov    %rbx,%rcx
180040260:	48 8b 00             	mov    (%rax),%rax
180040263:	ff d0                	call   *%rax
180040265:	0f 1f 00             	nopl   (%rax)
180040268:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
18004026d:	48 8b c6             	mov    %rsi,%rax
180040270:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
180040275:	48 8b 6c 24 38       	mov    0x38(%rsp),%rbp
18004027a:	48 8b 7c 24 48       	mov    0x48(%rsp),%rdi
18004027f:	48 83 c4 20          	add    $0x20,%rsp
180040283:	41 5e                	pop    %r14
180040285:	c3                   	ret
180040286:	cc                   	int3
180040287:	cc                   	int3
180040288:	48 8b c4             	mov    %rsp,%rax
18004028b:	48 89 58 08          	mov    %rbx,0x8(%rax)
18004028f:	48 89 68 10          	mov    %rbp,0x10(%rax)
180040293:	48 89 70 18          	mov    %rsi,0x18(%rax)
180040297:	48 89 78 20          	mov    %rdi,0x20(%rax)
18004029b:	41 57                	push   %r15
18004029d:	48 83 ec 20          	sub    $0x20,%rsp
1800402a1:	0f b6 42 11          	movzbl 0x11(%rdx),%eax
1800402a5:	4c 8d 3d 54 fd fb ff 	lea    -0x402ac(%rip),%r15        # 0x180000000
1800402ac:	48 8b ea             	mov    %rdx,%rbp
1800402af:	88 41 18             	mov    %al,0x18(%rcx)
1800402b2:	8b d0                	mov    %eax,%edx
1800402b4:	48 8b f9             	mov    %rcx,%rdi
1800402b7:	48 03 d2             	add    %rdx,%rdx
1800402ba:	4c 8b c9             	mov    %rcx,%r9
1800402bd:	48 8b cd             	mov    %rbp,%rcx
1800402c0:	45 8b 84 d7 80 d5 14 	mov    0x14d580(%r15,%rdx,8),%r8d
1800402c7:	00
1800402c8:	49 8b 94 d7 88 d5 14 	mov    0x14d588(%r15,%rdx,8),%rdx
1800402cf:	00
1800402d0:	e8 d3 74 00 00       	call   0x1800477a8
1800402d5:	44 8b c0             	mov    %eax,%r8d
1800402d8:	85 c0                	test   %eax,%eax
1800402da:	0f 88 bc 00 00 00    	js     0x18004039c
1800402e0:	0f b6 47 18          	movzbl 0x18(%rdi),%eax
1800402e4:	41 8b 8c 87 b0 e3 14 	mov    0x14e3b0(%r15,%rax,4),%ecx
1800402eb:	00
1800402ec:	0f b7 47 40          	movzwl 0x40(%rdi),%eax
1800402f0:	f7 d1                	not    %ecx
1800402f2:	85 c8                	test   %ecx,%eax
1800402f4:	74 0b                	je     0x180040301
1800402f6:	41 b8 0d 00 00 c0    	mov    $0xc000000d,%r8d
1800402fc:	e9 9b 00 00 00       	jmp    0x18004039c
180040301:	33 f6                	xor    %esi,%esi
180040303:	48 8d 9f 88 00 00 00 	lea    0x88(%rdi),%rbx
18004030a:	0f b6 57 18          	movzbl 0x18(%rdi),%edx
18004030e:	48 8d 0c 76          	lea    (%rsi,%rsi,2),%rcx
180040312:	48 03 d2             	add    %rdx,%rdx
180040315:	4c 8d 8f 84 00 00 00 	lea    0x84(%rdi),%r9
18004031c:	4d 8d 0c c9          	lea    (%r9,%rcx,8),%r9
180040320:	48 8b cd             	mov    %rbp,%rcx
180040323:	45 8b 84 d7 70 e9 14 	mov    0x14e970(%r15,%rdx,8),%r8d
18004032a:	00
18004032b:	49 8b 94 d7 78 e9 14 	mov    0x14e978(%r15,%rdx,8),%rdx
180040332:	00
180040333:	e8 70 74 00 00       	call   0x1800477a8
180040338:	44 8b c0             	mov    %eax,%r8d
18004033b:	85 c0                	test   %eax,%eax
18004033d:	78 5d                	js     0x18004039c
18004033f:	80 7f 18 05          	cmpb   $0x5,0x18(%rdi)
180040343:	73 22                	jae    0x180040367
180040345:	8b 4b fc             	mov    -0x4(%rbx),%ecx
180040348:	83 e9 01             	sub    $0x1,%ecx
18004034b:	74 17                	je     0x180040364
18004034d:	83 e9 01             	sub    $0x1,%ecx
180040350:	74 09                	je     0x18004035b
180040352:	83 f9 01             	cmp    $0x1,%ecx
180040355:	75 10                	jne    0x180040367
180040357:	89 0b                	mov    %ecx,(%rbx)
180040359:	eb 0c                	jmp    0x180040367
18004035b:	8b 43 04             	mov    0x4(%rbx),%eax
18004035e:	ff c8                	dec    %eax
180040360:	89 03                	mov    %eax,(%rbx)
180040362:	eb 03                	jmp    0x180040367
180040364:	83 23 00             	andl   $0x0,(%rbx)
180040367:	80 7f 18 09          	cmpb   $0x9,0x18(%rdi)
18004036b:	73 10                	jae    0x18004037d
18004036d:	8b 43 0c             	mov    0xc(%rbx),%eax
180040370:	83 f8 ff             	cmp    $0xffffffff,%eax
180040373:	74 08                	je     0x18004037d
180040375:	33 d2                	xor    %edx,%edx
180040377:	f7 73 04             	divl   0x4(%rbx)
18004037a:	89 43 0c             	mov    %eax,0xc(%rbx)
18004037d:	ff c6                	inc    %esi
18004037f:	48 83 c3 18          	add    $0x18,%rbx
180040383:	83 fe 03             	cmp    $0x3,%esi
180040386:	72 82                	jb     0x18004030a
180040388:	80 7f 18 0a          	cmpb   $0xa,0x18(%rdi)
18004038c:	73 0e                	jae    0x18004039c
18004038e:	8a 47 78             	mov    0x78(%rdi),%al
180040391:	f6 d8                	neg    %al
180040393:	1b c9                	sbb    %ecx,%ecx
180040395:	f7 d9                	neg    %ecx
180040397:	ff c1                	inc    %ecx
180040399:	89 4f 78             	mov    %ecx,0x78(%rdi)
18004039c:	48 8b 5c 24 30       	mov    0x30(%rsp),%rbx
1800403a1:	41 8b c0             	mov    %r8d,%eax
1800403a4:	48 8b 6c 24 38       	mov    0x38(%rsp),%rbp
1800403a9:	48 8b 74 24 40       	mov    0x40(%rsp),%rsi
1800403ae:	48 8b 7c 24 48       	mov    0x48(%rsp),%rdi
1800403b3:	48 83 c4 20          	add    $0x20,%rsp
1800403b7:	41 5f                	pop    %r15
1800403b9:	c3                   	ret
1800403ba:	cc                   	int3
1800403bb:	cc                   	int3
1800403bc:	48 8b c4             	mov    %rsp,%rax
1800403bf:	48 89 58 08          	mov    %rbx,0x8(%rax)
1800403c3:	48 89 68 10          	mov    %rbp,0x10(%rax)
1800403c7:	48 89 70 18          	mov    %rsi,0x18(%rax)
1800403cb:	48 89 78 20          	mov    %rdi,0x20(%rax)
1800403cf:	41 54                	push   %r12
1800403d1:	41 56                	push   %r14
1800403d3:	41 57                	push   %r15
1800403d5:	48 83 ec 20          	sub    $0x20,%rsp
1800403d9:	44 0f b6 7a 11       	movzbl 0x11(%rdx),%r15d
1800403de:	33 f6                	xor    %esi,%esi
1800403e0:	48 8b ea             	mov    %rdx,%rbp
1800403e3:	48 8b f9             	mov    %rcx,%rdi
1800403e6:	41 80 ff 0a          	cmp    $0xa,%r15b
1800403ea:	73 18                	jae    0x180040404
1800403ec:	8b 71 78             	mov    0x78(%rcx),%esi
1800403ef:	8b ce                	mov    %esi,%ecx
1800403f1:	83 e9 01             	sub    $0x1,%ecx
1800403f4:	74 0a                	je     0x180040400
1800403f6:	83 f9 01             	cmp    $0x1,%ecx
1800403f9:	75 09                	jne    0x180040404
1800403fb:	89 4f 78             	mov    %ecx,0x78(%rdi)
1800403fe:	eb 04                	jmp    0x180040404
180040400:	83 67 78 00          	andl   $0x0,0x78(%rdi)
180040404:	0f b7 5f 40          	movzwl 0x40(%rdi),%ebx
180040408:	4c 8d 25 f1 fb fb ff 	lea    -0x4040f(%rip),%r12        # 0x180000000
18004040f:	43 0f b7 84 bc b0 e3 	movzwl 0x14e3b0(%r12,%r15,4),%eax
180040416:	14 00
180040418:	4d 8b f7             	mov    %r15,%r14
18004041b:	4d 03 f6             	add    %r14,%r14
18004041e:	66 23 c3             	and    %bx,%ax
180040421:	66 89 47 40          	mov    %ax,0x40(%rdi)
180040425:	4c 8b cf             	mov    %rdi,%r9
180040428:	48 8b cd             	mov    %rbp,%rcx
18004042b:	47 8b 84 f4 80 d5 14 	mov    0x14d580(%r12,%r14,8),%r8d
180040432:	00
180040433:	4b 8b 94 f4 88 d5 14 	mov    0x14d588(%r12,%r14,8),%rdx
18004043a:	00
18004043b:	e8 f0 73 00 00       	call   0x180047830
180040440:	66 89 5f 40          	mov    %bx,0x40(%rdi)
180040444:	41 80 ff 0a          	cmp    $0xa,%r15b
180040448:	73 03                	jae    0x18004044d
18004044a:	89 77 78             	mov    %esi,0x78(%rdi)
18004044d:	48 8d 9f 94 00 00 00 	lea    0x94(%rdi),%rbx
180040454:	be 03 00 00 00       	mov    $0x3,%esi
180040459:	48 81 c7 84 00 00 00 	add    $0x84,%rdi
180040460:	41 83 cf ff          	or     $0xffffffff,%r15d
180040464:	80 7d 11 09          	cmpb   $0x9,0x11(%rbp)
180040468:	73 0f                	jae    0x180040479
18004046a:	8b 0b                	mov    (%rbx),%ecx
18004046c:	41 3b cf             	cmp    %r15d,%ecx
18004046f:	74 08                	je     0x180040479
180040471:	8b 43 f8             	mov    -0x8(%rbx),%eax
180040474:	0f af c1             	imul   %ecx,%eax
180040477:	89 03                	mov    %eax,(%rbx)
180040479:	47 8b 84 f4 70 e9 14 	mov    0x14e970(%r12,%r14,8),%r8d
180040480:	00
180040481:	4c 8b cf             	mov    %rdi,%r9
180040484:	4b 8b 94 f4 78 e9 14 	mov    0x14e978(%r12,%r14,8),%rdx
18004048b:	00
18004048c:	48 8b cd             	mov    %rbp,%rcx
18004048f:	e8 9c 73 00 00       	call   0x180047830
180040494:	80 7d 11 09          	cmpb   $0x9,0x11(%rbp)
180040498:	73 0e                	jae    0x1800404a8
18004049a:	8b 03                	mov    (%rbx),%eax
18004049c:	41 3b c7             	cmp    %r15d,%eax
18004049f:	74 07                	je     0x1800404a8
1800404a1:	33 d2                	xor    %edx,%edx
1800404a3:	f7 73 f8             	divl   -0x8(%rbx)
1800404a6:	89 03                	mov    %eax,(%rbx)
1800404a8:	48 83 c7 18          	add    $0x18,%rdi
1800404ac:	48 83 c3 18          	add    $0x18,%rbx
1800404b0:	48 83 ee 01          	sub    $0x1,%rsi
1800404b4:	75 ae                	jne    0x180040464
1800404b6:	48 8b 5c 24 40       	mov    0x40(%rsp),%rbx
1800404bb:	48 8b 6c 24 48       	mov    0x48(%rsp),%rbp
1800404c0:	48 8b 74 24 50       	mov    0x50(%rsp),%rsi
1800404c5:	48 8b 7c 24 58       	mov    0x58(%rsp),%rdi
1800404ca:	48 83 c4 20          	add    $0x20,%rsp
1800404ce:	41 5f                	pop    %r15
1800404d0:	41 5e                	pop    %r14
1800404d2:	41 5c                	pop    %r12
1800404d4:	c3                   	ret
1800404d5:	cc                   	int3
1800404d6:	cc                   	int3
1800404d7:	cc                   	int3
1800404d8:	48 8b c4             	mov    %rsp,%rax
1800404db:	48 89 58 08          	mov    %rbx,0x8(%rax)
1800404df:	48 89 68 10          	mov    %rbp,0x10(%rax)
1800404e3:	48 89 70 18          	mov    %rsi,0x18(%rax)