407d4d:	39 75 0c             	cmp    %esi,0xc(%ebp)
407d50:	72 12                	jb     0x407d64
407d52:	8d 04 36             	lea    (%esi,%esi,1),%eax
407d55:	50                   	push   %eax
407d56:	57                   	push   %edi
407d57:	51                   	push   %ecx
407d58:	e8 83 07 01 00       	call   0x4184e0
407d5d:	83 c4 0c             	add    $0xc,%esp
407d60:	33 c0                	xor    %eax,%eax
407d62:	eb 36                	jmp    0x407d9a
407d64:	ff 75 0c             	push   0xc(%ebp)
407d67:	6a 00                	push   $0x0
407d69:	51                   	push   %ecx
407d6a:	e8 2f 00 00 00       	call   0x407d9e
407d6f:	83 c4 0c             	add    $0xc,%esp
407d72:	85 ff                	test   %edi,%edi
407d74:	75 09                	jne    0x407d7f
407d76:	e8 8c ff ff ff       	call   0x407d07
407d7b:	6a 16                	push   $0x16
407d7d:	eb 0c                	jmp    0x407d8b
407d7f:	39 75 0c             	cmp    %esi,0xc(%ebp)
407d82:	73 13                	jae    0x407d97
407d84:	e8 7e ff ff ff       	call   0x407d07
407d89:	6a 22                	push   $0x22
407d8b:	5e                   	pop    %esi
407d8c:	89 30                	mov    %esi,(%eax)
407d8e:	e8 9b fe ff ff       	call   0x407c2e
407d93:	8b c6                	mov    %esi,%eax
407d95:	eb 03                	jmp    0x407d9a
407d97:	6a 16                	push   $0x16
407d99:	58                   	pop    %eax
407d9a:	5f                   	pop    %edi
407d9b:	5e                   	pop    %esi
407d9c:	5d                   	pop    %ebp
407d9d:	c3                   	ret
407d9e:	8b ff                	mov    %edi,%edi
407da0:	55                   	push   %ebp
407da1:	8b ec                	mov    %esp,%ebp
407da3:	8b 4d 10             	mov    0x10(%ebp),%ecx
407da6:	85 c9                	test   %ecx,%ecx
407da8:	74 1b                	je     0x407dc5
407daa:	8b 45 0c             	mov    0xc(%ebp),%eax
407dad:	0f b7 d0             	movzwl %ax,%edx
407db0:	8b c2                	mov    %edx,%eax
407db2:	c1 e2 10             	shl    $0x10,%edx
407db5:	57                   	push   %edi
407db6:	8b 7d 08             	mov    0x8(%ebp),%edi
407db9:	0b c2                	or     %edx,%eax
407dbb:	d1 e9                	shr    $1,%ecx
407dbd:	f3 ab                	rep stos %eax,%es:(%edi)
407dbf:	13 c9                	adc    %ecx,%ecx
407dc1:	66 f3 ab             	rep stos %ax,%es:(%edi)
407dc4:	5f                   	pop    %edi
407dc5:	8b 45 08             	mov    0x8(%ebp),%eax
407dc8:	5d                   	pop    %ebp
407dc9:	c3                   	ret
407dca:	8b ff                	mov    %edi,%edi
407dcc:	55                   	push   %ebp
407dcd:	8b ec                	mov    %esp,%ebp
407dcf:	51                   	push   %ecx
407dd0:	a1 14 3e 42 00       	mov    0x423e14,%eax
407dd5:	8b 4d 08             	mov    0x8(%ebp),%ecx
407dd8:	56                   	push   %esi
407dd9:	57                   	push   %edi
407dda:	83 f8 05             	cmp    $0x5,%eax
407ddd:	0f 8c bc 00 00 00    	jl     0x407e9f
407de3:	f6 c1 01             	test   $0x1,%cl
407de6:	74 27                	je     0x407e0f
407de8:	8b 45 0c             	mov    0xc(%ebp),%eax
407deb:	8b d1                	mov    %ecx,%edx
407ded:	8d 04 41             	lea    (%ecx,%eax,2),%eax
407df0:	3b c8                	cmp    %eax,%ecx
407df2:	0f 84 7d 01 00 00    	je     0x407f75
407df8:	33 ff                	xor    %edi,%edi
407dfa:	66 39 3a             	cmp    %di,(%edx)
407dfd:	0f 84 72 01 00 00    	je     0x407f75
407e03:	83 c2 02             	add    $0x2,%edx
407e06:	3b d0                	cmp    %eax,%edx
407e08:	75 f0                	jne    0x407dfa
407e0a:	e9 66 01 00 00       	jmp    0x407f75
407e0f:	8b f1                	mov    %ecx,%esi
407e11:	83 e6 1f             	and    $0x1f,%esi
407e14:	6a 20                	push   $0x20
407e16:	58                   	pop    %eax
407e17:	2b c6                	sub    %esi,%eax
407e19:	f7 de                	neg    %esi
407e1b:	1b f6                	sbb    %esi,%esi
407e1d:	23 f0                	and    %eax,%esi
407e1f:	8b 45 0c             	mov    0xc(%ebp),%eax
407e22:	d1 ee                	shr    $1,%esi
407e24:	3b c6                	cmp    %esi,%eax
407e26:	73 02                	jae    0x407e2a
407e28:	8b f0                	mov    %eax,%esi
407e2a:	8d 14 71             	lea    (%ecx,%esi,2),%edx
407e2d:	33 ff                	xor    %edi,%edi
407e2f:	89 55 fc             	mov    %edx,-0x4(%ebp)
407e32:	8b d1                	mov    %ecx,%edx
407e34:	3b 4d fc             	cmp    -0x4(%ebp),%ecx
407e37:	74 0d                	je     0x407e46
407e39:	66 39 3a             	cmp    %di,(%edx)
407e3c:	74 08                	je     0x407e46
407e3e:	83 c2 02             	add    $0x2,%edx
407e41:	3b 55 fc             	cmp    -0x4(%ebp),%edx
407e44:	75 f3                	jne    0x407e39
407e46:	2b d1                	sub    %ecx,%edx
407e48:	d1 fa                	sar    $1,%edx
407e4a:	3b d6                	cmp    %esi,%edx
407e4c:	0f 85 27 01 00 00    	jne    0x407f79
407e52:	8d 14 51             	lea    (%ecx,%edx,2),%edx
407e55:	8b c8                	mov    %eax,%ecx
407e57:	2b ce                	sub    %esi,%ecx
407e59:	8b c1                	mov    %ecx,%eax
407e5b:	83 e0 1f             	and    $0x1f,%eax
407e5e:	2b c8                	sub    %eax,%ecx
407e60:	c5 f4 57 c9          	vxorps %ymm1,%ymm1,%ymm1
407e64:	8d 0c 4a             	lea    (%edx,%ecx,2),%ecx
407e67:	eb 0f                	jmp    0x407e78
407e69:	c5 f5 75 02          	vpcmpeqw (%edx),%ymm1,%ymm0
407e6d:	c5 fd d7 c0          	vpmovmskb %ymm0,%eax
407e71:	85 c0                	test   %eax,%eax
407e73:	75 07                	jne    0x407e7c
407e75:	83 c2 20             	add    $0x20,%edx
407e78:	3b d1                	cmp    %ecx,%edx
407e7a:	75 ed                	jne    0x407e69
407e7c:	8b 45 08             	mov    0x8(%ebp),%eax
407e7f:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407e82:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
407e85:	eb 08                	jmp    0x407e8f
407e87:	66 39 3a             	cmp    %di,(%edx)
407e8a:	74 07                	je     0x407e93
407e8c:	83 c2 02             	add    $0x2,%edx
407e8f:	3b d1                	cmp    %ecx,%edx
407e91:	75 f4                	jne    0x407e87
407e93:	2b d0                	sub    %eax,%edx
407e95:	d1 fa                	sar    $1,%edx
407e97:	c5 f8 77             	vzeroupper
407e9a:	e9 da 00 00 00       	jmp    0x407f79
407e9f:	83 f8 01             	cmp    $0x1,%eax
407ea2:	0f 8c b3 00 00 00    	jl     0x407f5b
407ea8:	f6 c1 01             	test   $0x1,%cl
407eab:	74 27                	je     0x407ed4
407ead:	8b 45 0c             	mov    0xc(%ebp),%eax
407eb0:	8b d1                	mov    %ecx,%edx
407eb2:	8d 04 41             	lea    (%ecx,%eax,2),%eax
407eb5:	3b c8                	cmp    %eax,%ecx
407eb7:	0f 84 b8 00 00 00    	je     0x407f75
407ebd:	33 ff                	xor    %edi,%edi
407ebf:	66 39 3a             	cmp    %di,(%edx)
407ec2:	0f 84 ad 00 00 00    	je     0x407f75
407ec8:	83 c2 02             	add    $0x2,%edx
407ecb:	3b d0                	cmp    %eax,%edx
407ecd:	75 f0                	jne    0x407ebf
407ecf:	e9 a1 00 00 00       	jmp    0x407f75
407ed4:	8b f1                	mov    %ecx,%esi
407ed6:	83 e6 0f             	and    $0xf,%esi
407ed9:	6a 10                	push   $0x10
407edb:	58                   	pop    %eax
407edc:	2b c6                	sub    %esi,%eax
407ede:	f7 de                	neg    %esi
407ee0:	1b f6                	sbb    %esi,%esi
407ee2:	23 f0                	and    %eax,%esi
407ee4:	8b 45 0c             	mov    0xc(%ebp),%eax
407ee7:	d1 ee                	shr    $1,%esi
407ee9:	3b c6                	cmp    %esi,%eax
407eeb:	73 02                	jae    0x407eef
407eed:	8b f0                	mov    %eax,%esi
407eef:	8d 14 71             	lea    (%ecx,%esi,2),%edx
407ef2:	33 ff                	xor    %edi,%edi
407ef4:	89 55 fc             	mov    %edx,-0x4(%ebp)
407ef7:	8b d1                	mov    %ecx,%edx
407ef9:	3b 4d fc             	cmp    -0x4(%ebp),%ecx
407efc:	74 0d                	je     0x407f0b
407efe:	66 39 3a             	cmp    %di,(%edx)
407f01:	74 08                	je     0x407f0b
407f03:	83 c2 02             	add    $0x2,%edx
407f06:	3b 55 fc             	cmp    -0x4(%ebp),%edx
407f09:	75 f3                	jne    0x407efe
407f0b:	2b d1                	sub    %ecx,%edx
407f0d:	d1 fa                	sar    $1,%edx
407f0f:	3b d6                	cmp    %esi,%edx
407f11:	75 66                	jne    0x407f79
407f13:	8d 14 51             	lea    (%ecx,%edx,2),%edx
407f16:	66 0f ef c9          	pxor   %xmm1,%xmm1
407f1a:	8b c8                	mov    %eax,%ecx
407f1c:	2b ce                	sub    %esi,%ecx
407f1e:	8b c1                	mov    %ecx,%eax
407f20:	83 e0 0f             	and    $0xf,%eax
407f23:	2b c8                	sub    %eax,%ecx
407f25:	8d 0c 4a             	lea    (%edx,%ecx,2),%ecx
407f28:	eb 12                	jmp    0x407f3c
407f2a:	0f 28 02             	movaps (%edx),%xmm0
407f2d:	66 0f 75 c1          	pcmpeqw %xmm1,%xmm0
407f31:	66 0f d7 c0          	pmovmskb %xmm0,%eax
407f35:	85 c0                	test   %eax,%eax
407f37:	75 07                	jne    0x407f40
407f39:	83 c2 10             	add    $0x10,%edx
407f3c:	3b d1                	cmp    %ecx,%edx
407f3e:	75 ea                	jne    0x407f2a
407f40:	8b 45 08             	mov    0x8(%ebp),%eax
407f43:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407f46:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
407f49:	eb 08                	jmp    0x407f53
407f4b:	66 39 3a             	cmp    %di,(%edx)
407f4e:	74 07                	je     0x407f57
407f50:	83 c2 02             	add    $0x2,%edx
407f53:	3b d1                	cmp    %ecx,%edx
407f55:	75 f4                	jne    0x407f4b
407f57:	2b d0                	sub    %eax,%edx
407f59:	eb 1c                	jmp    0x407f77
407f5b:	8b 45 0c             	mov    0xc(%ebp),%eax
407f5e:	8b d1                	mov    %ecx,%edx
407f60:	8d 04 41             	lea    (%ecx,%eax,2),%eax
407f63:	3b c8                	cmp    %eax,%ecx
407f65:	74 0e                	je     0x407f75
407f67:	33 ff                	xor    %edi,%edi
407f69:	66 39 3a             	cmp    %di,(%edx)
407f6c:	74 07                	je     0x407f75
407f6e:	83 c2 02             	add    $0x2,%edx
407f71:	3b d0                	cmp    %eax,%edx
407f73:	75 f4                	jne    0x407f69
407f75:	2b d1                	sub    %ecx,%edx
407f77:	d1 fa                	sar    $1,%edx
407f79:	5f                   	pop    %edi
407f7a:	8b c2                	mov    %edx,%eax
407f7c:	5e                   	pop    %esi
407f7d:	8b e5                	mov    %ebp,%esp
407f7f:	5d                   	pop    %ebp
407f80:	c3                   	ret
407f81:	8b ff                	mov    %edi,%edi
407f83:	55                   	push   %ebp
407f84:	8b ec                	mov    %esp,%ebp
407f86:	8b 55 08             	mov    0x8(%ebp),%edx
407f89:	56                   	push   %esi
407f8a:	85 d2                	test   %edx,%edx
407f8c:	74 13                	je     0x407fa1
407f8e:	8b 4d 0c             	mov    0xc(%ebp),%ecx
407f91:	85 c9                	test   %ecx,%ecx
407f93:	74 0c                	je     0x407fa1
407f95:	8b 75 10             	mov    0x10(%ebp),%esi
407f98:	85 f6                	test   %esi,%esi
407f9a:	75 19                	jne    0x407fb5
407f9c:	33 c0                	xor    %eax,%eax
407f9e:	66 89 02             	mov    %ax,(%edx)
407fa1:	e8 61 fd ff ff       	call   0x407d07
407fa6:	6a 16                	push   $0x16
407fa8:	5e                   	pop    %esi
407fa9:	89 30                	mov    %esi,(%eax)
407fab:	e8 7e fc ff ff       	call   0x407c2e
407fb0:	8b c6                	mov    %esi,%eax
407fb2:	5e                   	pop    %esi
407fb3:	5d                   	pop    %ebp
407fb4:	c3                   	ret
407fb5:	57                   	push   %edi
407fb6:	8b fa                	mov    %edx,%edi
407fb8:	2b f2                	sub    %edx,%esi
407fba:	0f b7 04 3e          	movzwl (%esi,%edi,1),%eax
407fbe:	66 89 07             	mov    %ax,(%edi)
407fc1:	8d 7f 02             	lea    0x2(%edi),%edi
407fc4:	66 85 c0             	test   %ax,%ax
407fc7:	74 05                	je     0x407fce
407fc9:	83 e9 01             	sub    $0x1,%ecx
407fcc:	75 ec                	jne    0x407fba
407fce:	5f                   	pop    %edi
407fcf:	85 c9                	test   %ecx,%ecx
407fd1:	75 0e                	jne    0x407fe1
407fd3:	33 c0                	xor    %eax,%eax
407fd5:	66 89 02             	mov    %ax,(%edx)
407fd8:	e8 2a fd ff ff       	call   0x407d07
407fdd:	6a 22                	push   $0x22
407fdf:	eb c7                	jmp    0x407fa8
407fe1:	33 f6                	xor    %esi,%esi
407fe3:	eb cb                	jmp    0x407fb0
407fe5:	8b ff                	mov    %edi,%edi
407fe7:	55                   	push   %ebp
407fe8:	8b ec                	mov    %esp,%ebp
407fea:	a1 98 41 42 00       	mov    0x424198,%eax
407fef:	85 c0                	test   %eax,%eax
407ff1:	75 75                	jne    0x408068
407ff3:	8b 55 08             	mov    0x8(%ebp),%edx
407ff6:	85 d2                	test   %edx,%edx
407ff8:	75 17                	jne    0x408011
407ffa:	e8 08 fd ff ff       	call   0x407d07
407fff:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
408005:	e8 24 fc ff ff       	call   0x407c2e
40800a:	b8 ff ff ff 7f       	mov    $0x7fffffff,%eax
40800f:	5d                   	pop    %ebp
408010:	c3                   	ret
408011:	8b 4d 0c             	mov    0xc(%ebp),%ecx
408014:	85 c9                	test   %ecx,%ecx
408016:	74 e2                	je     0x407ffa
408018:	53                   	push   %ebx
408019:	56                   	push   %esi
40801a:	57                   	push   %edi
40801b:	6a 41                	push   $0x41
40801d:	5f                   	pop    %edi
40801e:	6a 5a                	push   $0x5a
408020:	2b d1                	sub    %ecx,%edx
408022:	5b                   	pop    %ebx
408023:	0f b7 04 0a          	movzwl (%edx,%ecx,1),%eax
408027:	66 3b c7             	cmp    %di,%ax
40802a:	72 0d                	jb     0x408039
40802c:	66 3b c3             	cmp    %bx,%ax
40802f:	77 08                	ja     0x408039
408031:	83 c0 20             	add    $0x20,%eax
408034:	0f b7 f0             	movzwl %ax,%esi
408037:	eb 02                	jmp    0x40803b
408039:	8b f0                	mov    %eax,%esi
40803b:	0f b7 01             	movzwl (%ecx),%eax
40803e:	66 3b c7             	cmp    %di,%ax
408041:	72 0b                	jb     0x40804e
408043:	66 3b c3             	cmp    %bx,%ax
408046:	77 06                	ja     0x40804e
408048:	83 c0 20             	add    $0x20,%eax
40804b:	0f b7 c0             	movzwl %ax,%eax
40804e:	83 c1 02             	add    $0x2,%ecx
408051:	66 85 f6             	test   %si,%si
408054:	74 05                	je     0x40805b
408056:	66 3b f0             	cmp    %ax,%si
408059:	74 c8                	je     0x408023
40805b:	0f b7 c8             	movzwl %ax,%ecx
40805e:	5f                   	pop    %edi
40805f:	0f b7 c6             	movzwl %si,%eax
408062:	5e                   	pop    %esi
408063:	2b c1                	sub    %ecx,%eax
408065:	5b                   	pop    %ebx
408066:	5d                   	pop    %ebp
408067:	c3                   	ret
408068:	6a 00                	push   $0x0
40806a:	ff 75 0c             	push   0xc(%ebp)
40806d:	ff 75 08             	push   0x8(%ebp)
408070:	e8 05 00 00 00       	call   0x40807a
408075:	83 c4 0c             	add    $0xc,%esp
408078:	5d                   	pop    %ebp
408079:	c3                   	ret
40807a:	8b ff                	mov    %edi,%edi
40807c:	55                   	push   %ebp
40807d:	8b ec                	mov    %esp,%ebp
40807f:	83 ec 10             	sub    $0x10,%esp
408082:	8d 4d f0             	lea    -0x10(%ebp),%ecx
408085:	53                   	push   %ebx
408086:	56                   	push   %esi
408087:	ff 75 10             	push   0x10(%ebp)
40808a:	e8 22 d6 ff ff       	call   0x4056b1
40808f:	8b 5d 08             	mov    0x8(%ebp),%ebx
408092:	85 db                	test   %ebx,%ebx
408094:	74 07                	je     0x40809d
408096:	8b 75 0c             	mov    0xc(%ebp),%esi
408099:	85 f6                	test   %esi,%esi
40809b:	75 1a                	jne    0x4080b7
40809d:	e8 65 fc ff ff       	call   0x407d07