406f07:	c5 f8 77             	vzeroupper
406f0a:	e9 8a 00 00 00       	jmp    0x406f99
406f0f:	83 f8 01             	cmp    $0x1,%eax
406f12:	7c 71                	jl     0x406f85
406f14:	8b 45 08             	mov    0x8(%ebp),%eax
406f17:	a8 01                	test   $0x1,%al
406f19:	74 12                	je     0x406f2d
406f1b:	8b c8                	mov    %eax,%ecx
406f1d:	33 d2                	xor    %edx,%edx
406f1f:	66 39 11             	cmp    %dx,(%ecx)
406f22:	0f 84 79 ff ff ff    	je     0x406ea1
406f28:	83 c1 02             	add    $0x2,%ecx
406f2b:	eb f2                	jmp    0x406f1f
406f2d:	8b f0                	mov    %eax,%esi
406f2f:	83 e6 0f             	and    $0xf,%esi
406f32:	6a 10                	push   $0x10
406f34:	58                   	pop    %eax
406f35:	2b c6                	sub    %esi,%eax
406f37:	f7 de                	neg    %esi
406f39:	1b f6                	sbb    %esi,%esi
406f3b:	33 d2                	xor    %edx,%edx
406f3d:	23 f0                	and    %eax,%esi
406f3f:	8b 45 08             	mov    0x8(%ebp),%eax
406f42:	d1 ee                	shr    $1,%esi
406f44:	8b c8                	mov    %eax,%ecx
406f46:	8d 3c 70             	lea    (%eax,%esi,2),%edi
406f49:	3b c7                	cmp    %edi,%eax
406f4b:	74 0c                	je     0x406f59
406f4d:	66 39 11             	cmp    %dx,(%ecx)
406f50:	74 07                	je     0x406f59
406f52:	83 c1 02             	add    $0x2,%ecx
406f55:	3b cf                	cmp    %edi,%ecx
406f57:	75 f4                	jne    0x406f4d
406f59:	2b c8                	sub    %eax,%ecx
406f5b:	d1 f9                	sar    $1,%ecx
406f5d:	3b ce                	cmp    %esi,%ecx
406f5f:	75 38                	jne    0x406f99
406f61:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
406f64:	0f 57 c9             	xorps  %xmm1,%xmm1
406f67:	0f 28 c1             	movaps %xmm1,%xmm0
406f6a:	66 0f 75 01          	pcmpeqw (%ecx),%xmm0
406f6e:	66 0f d7 c0          	pmovmskb %xmm0,%eax
406f72:	85 c0                	test   %eax,%eax
406f74:	75 05                	jne    0x406f7b
406f76:	83 c1 10             	add    $0x10,%ecx
406f79:	eb ec                	jmp    0x406f67
406f7b:	66 39 11             	cmp    %dx,(%ecx)
406f7e:	74 14                	je     0x406f94
406f80:	83 c1 02             	add    $0x2,%ecx
406f83:	eb f6                	jmp    0x406f7b
406f85:	8b 4d 08             	mov    0x8(%ebp),%ecx
406f88:	33 d2                	xor    %edx,%edx
406f8a:	66 39 11             	cmp    %dx,(%ecx)
406f8d:	74 05                	je     0x406f94
406f8f:	83 c1 02             	add    $0x2,%ecx
406f92:	eb f6                	jmp    0x406f8a
406f94:	2b 4d 08             	sub    0x8(%ebp),%ecx
406f97:	d1 f9                	sar    $1,%ecx
406f99:	5f                   	pop    %edi
406f9a:	8b c1                	mov    %ecx,%eax
406f9c:	5e                   	pop    %esi
406f9d:	5d                   	pop    %ebp
406f9e:	c3                   	ret
406f9f:	8b ff                	mov    %edi,%edi
406fa1:	55                   	push   %ebp
406fa2:	8b ec                	mov    %esp,%ebp
406fa4:	a1 6c 1a 42 00       	mov    0x421a6c,%eax
406fa9:	56                   	push   %esi
406faa:	57                   	push   %edi
406fab:	83 f8 05             	cmp    $0x5,%eax
406fae:	0f 8c b7 00 00 00    	jl     0x40706b
406fb4:	8b 4d 08             	mov    0x8(%ebp),%ecx
406fb7:	f6 c1 01             	test   $0x1,%cl
406fba:	74 21                	je     0x406fdd
406fbc:	8b 45 0c             	mov    0xc(%ebp),%eax
406fbf:	8b f1                	mov    %ecx,%esi
406fc1:	8d 14 41             	lea    (%ecx,%eax,2),%edx
406fc4:	3b f2                	cmp    %edx,%esi
406fc6:	74 0e                	je     0x406fd6
406fc8:	33 c0                	xor    %eax,%eax
406fca:	66 39 01             	cmp    %ax,(%ecx)
406fcd:	74 07                	je     0x406fd6
406fcf:	83 c1 02             	add    $0x2,%ecx
406fd2:	3b ca                	cmp    %edx,%ecx
406fd4:	75 f4                	jne    0x406fca
406fd6:	2b ce                	sub    %esi,%ecx
406fd8:	e9 6a 01 00 00       	jmp    0x407147
406fdd:	8b d1                	mov    %ecx,%edx
406fdf:	83 e2 1f             	and    $0x1f,%edx
406fe2:	6a 20                	push   $0x20
406fe4:	58                   	pop    %eax
406fe5:	2b c2                	sub    %edx,%eax
406fe7:	f7 da                	neg    %edx
406fe9:	1b d2                	sbb    %edx,%edx
406feb:	23 d0                	and    %eax,%edx
406fed:	8b 45 0c             	mov    0xc(%ebp),%eax
406ff0:	d1 ea                	shr    $1,%edx
406ff2:	3b c2                	cmp    %edx,%eax
406ff4:	73 02                	jae    0x406ff8
406ff6:	8b d0                	mov    %eax,%edx
406ff8:	8b 75 08             	mov    0x8(%ebp),%esi
406ffb:	8d 3c 51             	lea    (%ecx,%edx,2),%edi
406ffe:	33 c0                	xor    %eax,%eax
407000:	3b f7                	cmp    %edi,%esi
407002:	74 0c                	je     0x407010
407004:	66 39 01             	cmp    %ax,(%ecx)
407007:	74 07                	je     0x407010
407009:	83 c1 02             	add    $0x2,%ecx
40700c:	3b cf                	cmp    %edi,%ecx
40700e:	75 f4                	jne    0x407004
407010:	2b ce                	sub    %esi,%ecx
407012:	d1 f9                	sar    $1,%ecx
407014:	3b ca                	cmp    %edx,%ecx
407016:	0f 85 2d 01 00 00    	jne    0x407149
40701c:	8b 45 0c             	mov    0xc(%ebp),%eax
40701f:	8d 3c 4e             	lea    (%esi,%ecx,2),%edi
407022:	2b c2                	sub    %edx,%eax
407024:	83 e0 e0             	and    $0xffffffe0,%eax
407027:	03 c1                	add    %ecx,%eax
407029:	c5 f1 ef c9          	vpxor  %xmm1,%xmm1,%xmm1
40702d:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
407030:	eb 0f                	jmp    0x407041
407032:	c5 f5 75 07          	vpcmpeqw (%edi),%ymm1,%ymm0
407036:	c5 fd d7 c0          	vpmovmskb %ymm0,%eax
40703a:	85 c0                	test   %eax,%eax
40703c:	75 07                	jne    0x407045
40703e:	83 c7 20             	add    $0x20,%edi
407041:	3b f9                	cmp    %ecx,%edi
407043:	75 ed                	jne    0x407032
407045:	8b 45 0c             	mov    0xc(%ebp),%eax
407048:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
40704b:	3b f9                	cmp    %ecx,%edi
40704d:	74 0e                	je     0x40705d
40704f:	33 c0                	xor    %eax,%eax
407051:	66 39 07             	cmp    %ax,(%edi)
407054:	74 07                	je     0x40705d
407056:	83 c7 02             	add    $0x2,%edi
407059:	3b f9                	cmp    %ecx,%edi
40705b:	75 f4                	jne    0x407051
40705d:	8b cf                	mov    %edi,%ecx
40705f:	2b ce                	sub    %esi,%ecx
407061:	d1 f9                	sar    $1,%ecx
407063:	c5 f8 77             	vzeroupper
407066:	e9 de 00 00 00       	jmp    0x407149
40706b:	83 f8 01             	cmp    $0x1,%eax
40706e:	0f 8c b4 00 00 00    	jl     0x407128
407074:	8b 4d 08             	mov    0x8(%ebp),%ecx
407077:	f6 c1 01             	test   $0x1,%cl
40707a:	74 27                	je     0x4070a3
40707c:	8b 45 0c             	mov    0xc(%ebp),%eax
40707f:	8b f1                	mov    %ecx,%esi
407081:	8d 14 41             	lea    (%ecx,%eax,2),%edx
407084:	3b f2                	cmp    %edx,%esi
407086:	0f 84 4a ff ff ff    	je     0x406fd6
40708c:	33 c0                	xor    %eax,%eax
40708e:	66 39 01             	cmp    %ax,(%ecx)
407091:	0f 84 3f ff ff ff    	je     0x406fd6
407097:	83 c1 02             	add    $0x2,%ecx
40709a:	3b ca                	cmp    %edx,%ecx
40709c:	75 f0                	jne    0x40708e
40709e:	e9 33 ff ff ff       	jmp    0x406fd6
4070a3:	8b d1                	mov    %ecx,%edx
4070a5:	83 e2 0f             	and    $0xf,%edx
4070a8:	6a 10                	push   $0x10
4070aa:	58                   	pop    %eax
4070ab:	2b c2                	sub    %edx,%eax
4070ad:	f7 da                	neg    %edx
4070af:	1b d2                	sbb    %edx,%edx
4070b1:	23 d0                	and    %eax,%edx
4070b3:	8b 45 0c             	mov    0xc(%ebp),%eax
4070b6:	d1 ea                	shr    $1,%edx
4070b8:	3b c2                	cmp    %edx,%eax
4070ba:	73 02                	jae    0x4070be
4070bc:	8b d0                	mov    %eax,%edx
4070be:	8b 75 08             	mov    0x8(%ebp),%esi
4070c1:	8d 3c 51             	lea    (%ecx,%edx,2),%edi
4070c4:	33 c0                	xor    %eax,%eax
4070c6:	3b f7                	cmp    %edi,%esi
4070c8:	74 0c                	je     0x4070d6
4070ca:	66 39 01             	cmp    %ax,(%ecx)
4070cd:	74 07                	je     0x4070d6
4070cf:	83 c1 02             	add    $0x2,%ecx
4070d2:	3b cf                	cmp    %edi,%ecx
4070d4:	75 f4                	jne    0x4070ca
4070d6:	2b ce                	sub    %esi,%ecx
4070d8:	d1 f9                	sar    $1,%ecx
4070da:	3b ca                	cmp    %edx,%ecx
4070dc:	75 6b                	jne    0x407149
4070de:	8b 45 0c             	mov    0xc(%ebp),%eax
4070e1:	8d 3c 4e             	lea    (%esi,%ecx,2),%edi
4070e4:	2b c2                	sub    %edx,%eax
4070e6:	0f 57 c9             	xorps  %xmm1,%xmm1
4070e9:	83 e0 f0             	and    $0xfffffff0,%eax
4070ec:	03 c1                	add    %ecx,%eax
4070ee:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
4070f1:	eb 12                	jmp    0x407105
4070f3:	0f 28 c1             	movaps %xmm1,%xmm0
4070f6:	66 0f 75 07          	pcmpeqw (%edi),%xmm0
4070fa:	66 0f d7 c0          	pmovmskb %xmm0,%eax
4070fe:	85 c0                	test   %eax,%eax
407100:	75 07                	jne    0x407109
407102:	83 c7 10             	add    $0x10,%edi
407105:	3b f9                	cmp    %ecx,%edi
407107:	75 ea                	jne    0x4070f3
407109:	8b 45 0c             	mov    0xc(%ebp),%eax
40710c:	8d 0c 46             	lea    (%esi,%eax,2),%ecx
40710f:	3b f9                	cmp    %ecx,%edi
407111:	74 0e                	je     0x407121
407113:	33 c0                	xor    %eax,%eax
407115:	66 39 07             	cmp    %ax,(%edi)
407118:	74 07                	je     0x407121
40711a:	83 c7 02             	add    $0x2,%edi
40711d:	3b f9                	cmp    %ecx,%edi
40711f:	75 f4                	jne    0x407115
407121:	8b cf                	mov    %edi,%ecx
407123:	e9 ae fe ff ff       	jmp    0x406fd6
407128:	8b 55 08             	mov    0x8(%ebp),%edx
40712b:	8b ca                	mov    %edx,%ecx
40712d:	8b 45 0c             	mov    0xc(%ebp),%eax
407130:	8d 34 42             	lea    (%edx,%eax,2),%esi
407133:	3b d6                	cmp    %esi,%edx
407135:	74 0e                	je     0x407145
407137:	33 c0                	xor    %eax,%eax
407139:	66 39 01             	cmp    %ax,(%ecx)
40713c:	74 07                	je     0x407145
40713e:	83 c1 02             	add    $0x2,%ecx
407141:	3b ce                	cmp    %esi,%ecx
407143:	75 f4                	jne    0x407139
407145:	2b ca                	sub    %edx,%ecx
407147:	d1 f9                	sar    $1,%ecx
407149:	5f                   	pop    %edi
40714a:	8b c1                	mov    %ecx,%eax
40714c:	5e                   	pop    %esi
40714d:	5d                   	pop    %ebp
40714e:	c3                   	ret
40714f:	6a 10                	push   $0x10
407151:	68 80 fe 41 00       	push   $0x41fe80
407156:	e8 45 cd ff ff       	call   0x403ea0
40715b:	8b 75 08             	mov    0x8(%ebp),%esi
40715e:	89 75 e0             	mov    %esi,-0x20(%ebp)
407161:	85 f6                	test   %esi,%esi
407163:	75 23                	jne    0x407188
407165:	8b 45 0c             	mov    0xc(%ebp),%eax
407168:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
40716c:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
407173:	50                   	push   %eax
407174:	33 ff                	xor    %edi,%edi
407176:	57                   	push   %edi
407177:	57                   	push   %edi
407178:	57                   	push   %edi
407179:	57                   	push   %edi
40717a:	57                   	push   %edi
40717b:	e8 cc 02 00 00       	call   0x40744c
407180:	83 c4 18             	add    $0x18,%esp
407183:	83 c8 ff             	or     $0xffffffff,%eax
407186:	eb 40                	jmp    0x4071c8
407188:	8b 46 0c             	mov    0xc(%esi),%eax
40718b:	90                   	nop
40718c:	c1 e8 0c             	shr    $0xc,%eax
40718f:	56                   	push   %esi
407190:	a8 01                	test   $0x1,%al
407192:	74 08                	je     0x40719c
407194:	e8 68 55 00 00       	call   0x40c701
407199:	59                   	pop    %ecx
40719a:	eb e7                	jmp    0x407183
40719c:	33 ff                	xor    %edi,%edi
40719e:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4071a1:	e8 41 f5 ff ff       	call   0x4066e7
4071a6:	59                   	pop    %ecx
4071a7:	89 7d fc             	mov    %edi,-0x4(%ebp)
4071aa:	ff 75 0c             	push   0xc(%ebp)
4071ad:	56                   	push   %esi
4071ae:	e8 33 00 00 00       	call   0x4071e6
4071b3:	59                   	pop    %ecx
4071b4:	59                   	pop    %ecx
4071b5:	8b f8                	mov    %eax,%edi
4071b7:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4071ba:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4071c1:	e8 18 00 00 00       	call   0x4071de
4071c6:	8b c7                	mov    %edi,%eax
4071c8:	8b 4d f0             	mov    -0x10(%ebp),%ecx
4071cb:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
4071d2:	59                   	pop    %ecx
4071d3:	5f                   	pop    %edi
4071d4:	5e                   	pop    %esi
4071d5:	5b                   	pop    %ebx
4071d6:	c9                   	leave
4071d7:	c3                   	ret
4071d8:	8b 75 e0             	mov    -0x20(%ebp),%esi
4071db:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4071de:	56                   	push   %esi
4071df:	e8 17 f5 ff ff       	call   0x4066fb
4071e4:	59                   	pop    %ecx
4071e5:	c3                   	ret
4071e6:	8b ff                	mov    %edi,%edi
4071e8:	55                   	push   %ebp
4071e9:	8b ec                	mov    %esp,%ebp
4071eb:	56                   	push   %esi
4071ec:	8b 75 08             	mov    0x8(%ebp),%esi
4071ef:	85 f6                	test   %esi,%esi
4071f1:	75 23                	jne    0x407216
4071f3:	8b 45 0c             	mov    0xc(%ebp),%eax
4071f6:	50                   	push   %eax
4071f7:	c6 40 1c 01          	movb   $0x1,0x1c(%eax)
4071fb:	c7 40 18 16 00 00 00 	movl   $0x16,0x18(%eax)
407202:	33 c0                	xor    %eax,%eax
407204:	50                   	push   %eax
407205:	50                   	push   %eax
407206:	50                   	push   %eax
407207:	50                   	push   %eax
407208:	50                   	push   %eax
407209:	e8 3e 02 00 00       	call   0x40744c
40720e:	83 c4 18             	add    $0x18,%esp
407211:	83 c8 ff             	or     $0xffffffff,%eax
407214:	eb 5b                	jmp    0x407271
407216:	8b 46 0c             	mov    0xc(%esi),%eax
407219:	57                   	push   %edi
40721a:	83 cf ff             	or     $0xffffffff,%edi
40721d:	90                   	nop
40721e:	c1 e8 0d             	shr    $0xd,%eax
407221:	a8 01                	test   $0x1,%al
407223:	74 42                	je     0x407267
407225:	ff 75 0c             	push   0xc(%ebp)
407228:	56                   	push   %esi
407229:	e8 8c 3c 00 00       	call   0x40aeba
40722e:	56                   	push   %esi
40722f:	8b f8                	mov    %eax,%edi
407231:	e8 5b 3d 00 00       	call   0x40af91
407236:	83 c4 0c             	add    $0xc,%esp
407239:	ff 75 0c             	push   0xc(%ebp)
40723c:	56                   	push   %esi
40723d:	e8 81 3f 00 00       	call   0x40b1c3
407242:	59                   	pop    %ecx
407243:	50                   	push   %eax
407244:	e8 15 5c 00 00       	call   0x40ce5e
407249:	59                   	pop    %ecx
40724a:	59                   	pop    %ecx
40724b:	85 c0                	test   %eax,%eax
40724d:	79 05                	jns    0x407254
40724f:	83 cf ff             	or     $0xffffffff,%edi
407252:	eb 13                	jmp    0x407267
407254:	83 7e 1c 00          	cmpl   $0x0,0x1c(%esi)
407258:	74 0d                	je     0x407267
40725a:	ff 76 1c             	push   0x1c(%esi)
40725d:	e8 3d 35 00 00       	call   0x40a79f
407262:	83 66 1c 00          	andl   $0x0,0x1c(%esi)
407266:	59                   	pop    %ecx
407267:	56                   	push   %esi
407268:	e8 94 54 00 00       	call   0x40c701
40726d:	59                   	pop    %ecx