406ba1:	ff 75 e4             	push   -0x1c(%ebp)
406ba4:	e8 52 fb ff ff       	call   0x4066fb
406ba9:	59                   	pop    %ecx
406baa:	c3                   	ret
406bab:	8b ff                	mov    %edi,%edi
406bad:	55                   	push   %ebp
406bae:	8b ec                	mov    %esp,%ebp
406bb0:	56                   	push   %esi
406bb1:	8b 75 08             	mov    0x8(%ebp),%esi
406bb4:	85 f6                	test   %esi,%esi
406bb6:	75 11                	jne    0x406bc9
406bb8:	e8 72 3b 00 00       	call   0x40a72f
406bbd:	6a 16                	push   $0x16
406bbf:	5e                   	pop    %esi
406bc0:	89 30                	mov    %esi,(%eax)
406bc2:	e8 02 09 00 00       	call   0x4074c9
406bc7:	eb 24                	jmp    0x406bed
406bc9:	68 80 00 00 00       	push   $0x80
406bce:	ff 75 10             	push   0x10(%ebp)
406bd1:	ff 75 0c             	push   0xc(%ebp)
406bd4:	e8 1c ff ff ff       	call   0x406af5
406bd9:	83 c4 0c             	add    $0xc,%esp
406bdc:	89 06                	mov    %eax,(%esi)
406bde:	85 c0                	test   %eax,%eax
406be0:	75 09                	jne    0x406beb
406be2:	e8 48 3b 00 00       	call   0x40a72f
406be7:	8b 30                	mov    (%eax),%esi
406be9:	eb 02                	jmp    0x406bed
406beb:	33 f6                	xor    %esi,%esi
406bed:	8b c6                	mov    %esi,%eax
406bef:	5e                   	pop    %esi
406bf0:	5d                   	pop    %ebp
406bf1:	c3                   	ret
406bf2:	6a 18                	push   $0x18
406bf4:	68 60 fe 41 00       	push   $0x41fe60
406bf9:	e8 a2 d2 ff ff       	call   0x403ea0
406bfe:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
406c02:	75 0f                	jne    0x406c13
406c04:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406c08:	74 09                	je     0x406c13
406c0a:	33 f6                	xor    %esi,%esi
406c0c:	8b c6                	mov    %esi,%eax
406c0e:	33 ff                	xor    %edi,%edi
406c10:	47                   	inc    %edi
406c11:	eb 07                	jmp    0x406c1a
406c13:	33 ff                	xor    %edi,%edi
406c15:	47                   	inc    %edi
406c16:	8b c7                	mov    %edi,%eax
406c18:	33 f6                	xor    %esi,%esi
406c1a:	85 c0                	test   %eax,%eax
406c1c:	75 14                	jne    0x406c32
406c1e:	e8 0c 3b 00 00       	call   0x40a72f
406c23:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406c29:	e8 9b 08 00 00       	call   0x4074c9
406c2e:	33 c0                	xor    %eax,%eax
406c30:	eb 63                	jmp    0x406c95
406c32:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406c36:	7c e6                	jl     0x406c1e
406c38:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
406c3c:	74 e0                	je     0x406c1e
406c3e:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406c42:	74 ea                	je     0x406c2e
406c44:	89 75 e4             	mov    %esi,-0x1c(%ebp)
406c47:	ff 75 10             	push   0x10(%ebp)
406c4a:	e8 98 fa ff ff       	call   0x4066e7
406c4f:	59                   	pop    %ecx
406c50:	89 75 fc             	mov    %esi,-0x4(%ebp)
406c53:	8b 5d 08             	mov    0x8(%ebp),%ebx
406c56:	89 5d e0             	mov    %ebx,-0x20(%ebp)
406c59:	89 7d dc             	mov    %edi,-0x24(%ebp)
406c5c:	3b 7d 0c             	cmp    0xc(%ebp),%edi
406c5f:	74 1b                	je     0x406c7c
406c61:	ff 75 10             	push   0x10(%ebp)
406c64:	e8 12 61 00 00       	call   0x40cd7b
406c69:	59                   	pop    %ecx
406c6a:	0f b7 c0             	movzwl %ax,%eax
406c6d:	89 45 d8             	mov    %eax,-0x28(%ebp)
406c70:	3d ff ff 00 00       	cmp    $0xffff,%eax
406c75:	75 2e                	jne    0x406ca5
406c77:	3b 5d 08             	cmp    0x8(%ebp),%ebx
406c7a:	74 0b                	je     0x406c87
406c7c:	33 c0                	xor    %eax,%eax
406c7e:	66 89 03             	mov    %ax,(%ebx)
406c81:	8b 75 08             	mov    0x8(%ebp),%esi
406c84:	89 75 e4             	mov    %esi,-0x1c(%ebp)
406c87:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406c8e:	e8 26 00 00 00       	call   0x406cb9
406c93:	8b c6                	mov    %esi,%eax
406c95:	8b 4d f0             	mov    -0x10(%ebp),%ecx
406c98:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
406c9f:	59                   	pop    %ecx
406ca0:	5f                   	pop    %edi
406ca1:	5e                   	pop    %esi
406ca2:	5b                   	pop    %ebx
406ca3:	c9                   	leave
406ca4:	c3                   	ret
406ca5:	66 89 03             	mov    %ax,(%ebx)
406ca8:	83 c3 02             	add    $0x2,%ebx
406cab:	89 5d e0             	mov    %ebx,-0x20(%ebp)
406cae:	83 f8 0a             	cmp    $0xa,%eax
406cb1:	74 c9                	je     0x406c7c
406cb3:	47                   	inc    %edi
406cb4:	eb a3                	jmp    0x406c59
406cb6:	8b 75 e4             	mov    -0x1c(%ebp),%esi
406cb9:	ff 75 10             	push   0x10(%ebp)
406cbc:	e8 3a fa ff ff       	call   0x4066fb
406cc1:	59                   	pop    %ecx
406cc2:	c3                   	ret
406cc3:	8b ff                	mov    %edi,%edi
406cc5:	55                   	push   %ebp
406cc6:	8b ec                	mov    %esp,%ebp
406cc8:	8b 4d 08             	mov    0x8(%ebp),%ecx
406ccb:	56                   	push   %esi
406ccc:	8b 41 0c             	mov    0xc(%ecx),%eax
406ccf:	90                   	nop
406cd0:	c1 e8 0c             	shr    $0xc,%eax
406cd3:	a8 01                	test   $0x1,%al
406cd5:	75 6e                	jne    0x406d45
406cd7:	57                   	push   %edi
406cd8:	51                   	push   %ecx
406cd9:	e8 e5 44 00 00       	call   0x40b1c3
406cde:	59                   	pop    %ecx
406cdf:	b9 e8 11 42 00       	mov    $0x4211e8,%ecx
406ce4:	83 f8 ff             	cmp    $0xffffffff,%eax
406ce7:	74 1b                	je     0x406d04
406ce9:	83 f8 fe             	cmp    $0xfffffffe,%eax
406cec:	74 16                	je     0x406d04
406cee:	8b f0                	mov    %eax,%esi
406cf0:	8b d0                	mov    %eax,%edx
406cf2:	83 e6 3f             	and    $0x3f,%esi
406cf5:	c1 fa 06             	sar    $0x6,%edx
406cf8:	6b fe 38             	imul   $0x38,%esi,%edi
406cfb:	03 3c 95 a8 21 42 00 	add    0x4221a8(,%edx,4),%edi
406d02:	eb 0c                	jmp    0x406d10
406d04:	8b d0                	mov    %eax,%edx
406d06:	8b f0                	mov    %eax,%esi
406d08:	c1 fa 06             	sar    $0x6,%edx
406d0b:	8b f9                	mov    %ecx,%edi
406d0d:	83 e6 3f             	and    $0x3f,%esi
406d10:	80 7f 29 00          	cmpb   $0x0,0x29(%edi)
406d14:	5f                   	pop    %edi
406d15:	75 1a                	jne    0x406d31
406d17:	83 f8 ff             	cmp    $0xffffffff,%eax
406d1a:	74 0f                	je     0x406d2b
406d1c:	83 f8 fe             	cmp    $0xfffffffe,%eax
406d1f:	74 0a                	je     0x406d2b
406d21:	6b ce 38             	imul   $0x38,%esi,%ecx
406d24:	03 0c 95 a8 21 42 00 	add    0x4221a8(,%edx,4),%ecx
406d2b:	f6 41 2d 01          	testb  $0x1,0x2d(%ecx)
406d2f:	74 14                	je     0x406d45
406d31:	e8 f9 39 00 00       	call   0x40a72f
406d36:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406d3c:	e8 88 07 00 00       	call   0x4074c9
406d41:	32 c0                	xor    %al,%al
406d43:	eb 02                	jmp    0x406d47
406d45:	b0 01                	mov    $0x1,%al
406d47:	5e                   	pop    %esi
406d48:	5d                   	pop    %ebp
406d49:	c3                   	ret
406d4a:	8b ff                	mov    %edi,%edi
406d4c:	55                   	push   %ebp
406d4d:	8b ec                	mov    %esp,%ebp
406d4f:	5d                   	pop    %ebp
406d50:	e9 9d fe ff ff       	jmp    0x406bf2
406d55:	8b ff                	mov    %edi,%edi
406d57:	55                   	push   %ebp
406d58:	8b ec                	mov    %esp,%ebp
406d5a:	a1 6c 1a 42 00       	mov    0x421a6c,%eax
406d5f:	56                   	push   %esi
406d60:	57                   	push   %edi
406d61:	83 f8 05             	cmp    $0x5,%eax
406d64:	7c 7a                	jl     0x406de0
406d66:	8b 75 08             	mov    0x8(%ebp),%esi
406d69:	8b d6                	mov    %esi,%edx
406d6b:	8b 7d 0c             	mov    0xc(%ebp),%edi
406d6e:	83 e2 1f             	and    $0x1f,%edx
406d71:	6a 20                	push   $0x20
406d73:	58                   	pop    %eax
406d74:	2b c2                	sub    %edx,%eax
406d76:	f7 da                	neg    %edx
406d78:	1b d2                	sbb    %edx,%edx
406d7a:	23 d0                	and    %eax,%edx
406d7c:	3b fa                	cmp    %edx,%edi
406d7e:	73 02                	jae    0x406d82
406d80:	8b d7                	mov    %edi,%edx
406d82:	8d 0c 32             	lea    (%edx,%esi,1),%ecx
406d85:	8b c6                	mov    %esi,%eax
406d87:	3b f1                	cmp    %ecx,%esi
406d89:	74 0a                	je     0x406d95
406d8b:	80 38 00             	cmpb   $0x0,(%eax)
406d8e:	74 05                	je     0x406d95
406d90:	40                   	inc    %eax
406d91:	3b c1                	cmp    %ecx,%eax
406d93:	75 f6                	jne    0x406d8b
406d95:	8b c8                	mov    %eax,%ecx
406d97:	2b ce                	sub    %esi,%ecx
406d99:	3b ca                	cmp    %edx,%ecx
406d9b:	0f 85 d0 00 00 00    	jne    0x406e71
406da1:	2b fa                	sub    %edx,%edi
406da3:	8b c8                	mov    %eax,%ecx
406da5:	83 e7 e0             	and    $0xffffffe0,%edi
406da8:	03 f8                	add    %eax,%edi
406daa:	c5 f1 ef c9          	vpxor  %xmm1,%xmm1,%xmm1
406dae:	3b c7                	cmp    %edi,%eax
406db0:	74 13                	je     0x406dc5
406db2:	c5 f5 74 01          	vpcmpeqb (%ecx),%ymm1,%ymm0
406db6:	c5 fd d7 c0          	vpmovmskb %ymm0,%eax
406dba:	85 c0                	test   %eax,%eax
406dbc:	75 07                	jne    0x406dc5
406dbe:	83 c1 20             	add    $0x20,%ecx
406dc1:	3b cf                	cmp    %edi,%ecx
406dc3:	75 ed                	jne    0x406db2
406dc5:	8b 45 0c             	mov    0xc(%ebp),%eax
406dc8:	03 c6                	add    %esi,%eax
406dca:	eb 06                	jmp    0x406dd2
406dcc:	80 39 00             	cmpb   $0x0,(%ecx)
406dcf:	74 05                	je     0x406dd6
406dd1:	41                   	inc    %ecx
406dd2:	3b c8                	cmp    %eax,%ecx
406dd4:	75 f6                	jne    0x406dcc
406dd6:	2b ce                	sub    %esi,%ecx
406dd8:	c5 f8 77             	vzeroupper
406ddb:	e9 91 00 00 00       	jmp    0x406e71
406de0:	83 f8 01             	cmp    $0x1,%eax
406de3:	7c 72                	jl     0x406e57
406de5:	8b 75 08             	mov    0x8(%ebp),%esi
406de8:	8b d6                	mov    %esi,%edx
406dea:	8b 7d 0c             	mov    0xc(%ebp),%edi
406ded:	83 e2 0f             	and    $0xf,%edx
406df0:	6a 10                	push   $0x10
406df2:	58                   	pop    %eax
406df3:	2b c2                	sub    %edx,%eax
406df5:	f7 da                	neg    %edx
406df7:	1b d2                	sbb    %edx,%edx
406df9:	23 d0                	and    %eax,%edx
406dfb:	3b fa                	cmp    %edx,%edi
406dfd:	73 02                	jae    0x406e01
406dff:	8b d7                	mov    %edi,%edx
406e01:	8d 0c 32             	lea    (%edx,%esi,1),%ecx
406e04:	8b c6                	mov    %esi,%eax
406e06:	3b f1                	cmp    %ecx,%esi
406e08:	74 0a                	je     0x406e14
406e0a:	80 38 00             	cmpb   $0x0,(%eax)
406e0d:	74 05                	je     0x406e14
406e0f:	40                   	inc    %eax
406e10:	3b c1                	cmp    %ecx,%eax
406e12:	75 f6                	jne    0x406e0a
406e14:	8b c8                	mov    %eax,%ecx
406e16:	2b ce                	sub    %esi,%ecx
406e18:	3b ca                	cmp    %edx,%ecx
406e1a:	75 55                	jne    0x406e71
406e1c:	2b fa                	sub    %edx,%edi
406e1e:	8b c8                	mov    %eax,%ecx
406e20:	83 e7 f0             	and    $0xfffffff0,%edi
406e23:	0f 57 c9             	xorps  %xmm1,%xmm1
406e26:	03 f8                	add    %eax,%edi
406e28:	3b c7                	cmp    %edi,%eax
406e2a:	74 16                	je     0x406e42
406e2c:	0f 28 c1             	movaps %xmm1,%xmm0
406e2f:	66 0f 74 01          	pcmpeqb (%ecx),%xmm0
406e33:	66 0f d7 c0          	pmovmskb %xmm0,%eax
406e37:	85 c0                	test   %eax,%eax
406e39:	75 07                	jne    0x406e42
406e3b:	83 c1 10             	add    $0x10,%ecx
406e3e:	3b cf                	cmp    %edi,%ecx
406e40:	75 ea                	jne    0x406e2c
406e42:	8b 45 0c             	mov    0xc(%ebp),%eax
406e45:	03 c6                	add    %esi,%eax
406e47:	eb 06                	jmp    0x406e4f
406e49:	80 39 00             	cmpb   $0x0,(%ecx)
406e4c:	74 05                	je     0x406e53
406e4e:	41                   	inc    %ecx
406e4f:	3b c8                	cmp    %eax,%ecx
406e51:	75 f6                	jne    0x406e49
406e53:	2b ce                	sub    %esi,%ecx
406e55:	eb 1a                	jmp    0x406e71
406e57:	8b 55 08             	mov    0x8(%ebp),%edx
406e5a:	8b ca                	mov    %edx,%ecx
406e5c:	8b 45 0c             	mov    0xc(%ebp),%eax
406e5f:	03 c2                	add    %edx,%eax
406e61:	3b d0                	cmp    %eax,%edx
406e63:	74 0a                	je     0x406e6f
406e65:	80 39 00             	cmpb   $0x0,(%ecx)
406e68:	74 05                	je     0x406e6f
406e6a:	41                   	inc    %ecx
406e6b:	3b c8                	cmp    %eax,%ecx
406e6d:	75 f6                	jne    0x406e65
406e6f:	2b ca                	sub    %edx,%ecx
406e71:	5f                   	pop    %edi
406e72:	8b c1                	mov    %ecx,%eax
406e74:	5e                   	pop    %esi
406e75:	5d                   	pop    %ebp
406e76:	c3                   	ret
406e77:	8b ff                	mov    %edi,%edi
406e79:	55                   	push   %ebp
406e7a:	8b ec                	mov    %esp,%ebp
406e7c:	a1 6c 1a 42 00       	mov    0x421a6c,%eax
406e81:	56                   	push   %esi
406e82:	57                   	push   %edi
406e83:	83 f8 05             	cmp    $0x5,%eax
406e86:	0f 8c 83 00 00 00    	jl     0x406f0f
406e8c:	8b 45 08             	mov    0x8(%ebp),%eax
406e8f:	a8 01                	test   $0x1,%al
406e91:	74 15                	je     0x406ea8
406e93:	8b c8                	mov    %eax,%ecx
406e95:	33 d2                	xor    %edx,%edx
406e97:	66 39 11             	cmp    %dx,(%ecx)
406e9a:	74 05                	je     0x406ea1
406e9c:	83 c1 02             	add    $0x2,%ecx
406e9f:	eb f6                	jmp    0x406e97
406ea1:	2b c8                	sub    %eax,%ecx
406ea3:	e9 ef 00 00 00       	jmp    0x406f97
406ea8:	8b f0                	mov    %eax,%esi
406eaa:	83 e6 1f             	and    $0x1f,%esi
406ead:	6a 20                	push   $0x20
406eaf:	58                   	pop    %eax
406eb0:	2b c6                	sub    %esi,%eax
406eb2:	f7 de                	neg    %esi
406eb4:	1b f6                	sbb    %esi,%esi
406eb6:	33 d2                	xor    %edx,%edx
406eb8:	23 f0                	and    %eax,%esi
406eba:	8b 45 08             	mov    0x8(%ebp),%eax
406ebd:	d1 ee                	shr    $1,%esi
406ebf:	8b c8                	mov    %eax,%ecx
406ec1:	8d 3c 70             	lea    (%eax,%esi,2),%edi
406ec4:	3b c7                	cmp    %edi,%eax
406ec6:	74 0c                	je     0x406ed4
406ec8:	66 39 11             	cmp    %dx,(%ecx)
406ecb:	74 07                	je     0x406ed4
406ecd:	83 c1 02             	add    $0x2,%ecx
406ed0:	3b cf                	cmp    %edi,%ecx
406ed2:	75 f4                	jne    0x406ec8
406ed4:	2b c8                	sub    %eax,%ecx
406ed6:	d1 f9                	sar    $1,%ecx
406ed8:	3b ce                	cmp    %esi,%ecx
406eda:	0f 85 b9 00 00 00    	jne    0x406f99
406ee0:	8d 0c 48             	lea    (%eax,%ecx,2),%ecx
406ee3:	c5 f1 ef c9          	vpxor  %xmm1,%xmm1,%xmm1
406ee7:	c5 f5 75 01          	vpcmpeqw (%ecx),%ymm1,%ymm0
406eeb:	c5 fd d7 c0          	vpmovmskb %ymm0,%eax
406eef:	85 c0                	test   %eax,%eax
406ef1:	75 05                	jne    0x406ef8
406ef3:	83 c1 20             	add    $0x20,%ecx
406ef6:	eb ef                	jmp    0x406ee7
406ef8:	66 39 11             	cmp    %dx,(%ecx)
406efb:	74 05                	je     0x406f02
406efd:	83 c1 02             	add    $0x2,%ecx
406f00:	eb f6                	jmp    0x406ef8
406f02:	2b 4d 08             	sub    0x8(%ebp),%ecx
406f05:	d1 f9                	sar    $1,%ecx