406a60:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a64:	2b c1                	sub    %ecx,%eax
406a66:	c3                   	ret
406a67:	8d 41 fd             	lea    -0x3(%ecx),%eax
406a6a:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a6e:	2b c1                	sub    %ecx,%eax
406a70:	c3                   	ret
406a71:	8d 41 fc             	lea    -0x4(%ecx),%eax
406a74:	8b 4c 24 04          	mov    0x4(%esp),%ecx
406a78:	2b c1                	sub    %ecx,%eax
406a7a:	c3                   	ret
406a7b:	6a 01                	push   $0x1
406a7d:	ff 74 24 08          	push   0x8(%esp)
406a81:	e8 19 09 00 00       	call   0x40739f
406a86:	59                   	pop    %ecx
406a87:	59                   	pop    %ecx
406a88:	c3                   	ret
406a89:	56                   	push   %esi
406a8a:	ff 74 24 0c          	push   0xc(%esp)
406a8e:	e8 33 ee ff ff       	call   0x4058c6
406a93:	ff 74 24 10          	push   0x10(%esp)
406a97:	ff 74 24 10          	push   0x10(%esp)
406a9b:	e8 13 00 00 00       	call   0x406ab3
406aa0:	ff 74 24 18          	push   0x18(%esp)
406aa4:	8b f0                	mov    %eax,%esi
406aa6:	e8 6d ee ff ff       	call   0x405918
406aab:	83 c4 10             	add    $0x10,%esp
406aae:	66 8b c6             	mov    %si,%ax
406ab1:	5e                   	pop    %esi
406ab2:	c3                   	ret
406ab3:	55                   	push   %ebp
406ab4:	8b ec                	mov    %esp,%ebp
406ab6:	56                   	push   %esi
406ab7:	8b 75 0c             	mov    0xc(%ebp),%esi
406aba:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406abe:	0f 85 c5 00 00 00    	jne    0x406b89
406ac4:	8b 46 10             	mov    0x10(%esi),%eax
406ac7:	83 f8 ff             	cmp    $0xffffffff,%eax
406aca:	74 17                	je     0x406ae3
406acc:	8b c8                	mov    %eax,%ecx
406ace:	c1 f9 05             	sar    $0x5,%ecx
406ad1:	83 e0 1f             	and    $0x1f,%eax
406ad4:	8b 0c 8d c0 1d 41 00 	mov    0x411dc0(,%ecx,4),%ecx
406adb:	8d 04 c0             	lea    (%eax,%eax,8),%eax
406ade:	8d 04 81             	lea    (%ecx,%eax,4),%eax
406ae1:	eb 05                	jmp    0x406ae8
406ae3:	b8 08 0e 41 00       	mov    $0x410e08,%eax
406ae8:	f6 40 04 80          	testb  $0x80,0x4(%eax)
406aec:	0f 84 97 00 00 00    	je     0x406b89
406af2:	ff 75 08             	push   0x8(%ebp)
406af5:	8d 45 0c             	lea    0xc(%ebp),%eax
406af8:	50                   	push   %eax
406af9:	e8 1b 34 00 00       	call   0x409f19
406afe:	59                   	pop    %ecx
406aff:	83 f8 ff             	cmp    $0xffffffff,%eax
406b02:	59                   	pop    %ecx
406b03:	75 14                	jne    0x406b19
406b05:	e8 d4 05 00 00       	call   0x4070de
406b0a:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
406b10:	66 0d ff ff          	or     $0xffff,%ax
406b14:	e9 90 00 00 00       	jmp    0x406ba9
406b19:	83 f8 01             	cmp    $0x1,%eax
406b1c:	75 2c                	jne    0x406b4a
406b1e:	ff 4e 04             	decl   0x4(%esi)
406b21:	78 0f                	js     0x406b32
406b23:	8b 06                	mov    (%esi),%eax
406b25:	8a 4d 0c             	mov    0xc(%ebp),%cl
406b28:	88 08                	mov    %cl,(%eax)
406b2a:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
406b2e:	ff 06                	incl   (%esi)
406b30:	eb 0d                	jmp    0x406b3f
406b32:	0f be 45 0c          	movsbl 0xc(%ebp),%eax
406b36:	56                   	push   %esi
406b37:	50                   	push   %eax
406b38:	e8 47 12 00 00       	call   0x407d84
406b3d:	59                   	pop    %ecx
406b3e:	59                   	pop    %ecx
406b3f:	83 f8 ff             	cmp    $0xffffffff,%eax
406b42:	74 cc                	je     0x406b10
406b44:	66 8b 45 08          	mov    0x8(%ebp),%ax
406b48:	eb 5f                	jmp    0x406ba9
406b4a:	ff 4e 04             	decl   0x4(%esi)
406b4d:	78 0f                	js     0x406b5e
406b4f:	8b 06                	mov    (%esi),%eax
406b51:	8a 4d 0c             	mov    0xc(%ebp),%cl
406b54:	88 08                	mov    %cl,(%eax)
406b56:	ff 06                	incl   (%esi)
406b58:	0f b6 45 0c          	movzbl 0xc(%ebp),%eax
406b5c:	eb 0d                	jmp    0x406b6b
406b5e:	0f be 45 0c          	movsbl 0xc(%ebp),%eax
406b62:	56                   	push   %esi
406b63:	50                   	push   %eax
406b64:	e8 1b 12 00 00       	call   0x407d84
406b69:	59                   	pop    %ecx
406b6a:	59                   	pop    %ecx
406b6b:	83 f8 ff             	cmp    $0xffffffff,%eax
406b6e:	74 a0                	je     0x406b10
406b70:	ff 4e 04             	decl   0x4(%esi)
406b73:	78 0d                	js     0x406b82
406b75:	8b 06                	mov    (%esi),%eax
406b77:	8a 4d 0d             	mov    0xd(%ebp),%cl
406b7a:	88 08                	mov    %cl,(%eax)
406b7c:	0f b6 45 0d          	movzbl 0xd(%ebp),%eax
406b80:	eb ac                	jmp    0x406b2e
406b82:	0f be 45 0d          	movsbl 0xd(%ebp),%eax
406b86:	56                   	push   %esi
406b87:	eb ae                	jmp    0x406b37
406b89:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
406b8d:	78 0d                	js     0x406b9c
406b8f:	8b 0e                	mov    (%esi),%ecx
406b91:	8b 45 08             	mov    0x8(%ebp),%eax
406b94:	66 89 01             	mov    %ax,(%ecx)
406b97:	83 06 02             	addl   $0x2,(%esi)
406b9a:	eb 0d                	jmp    0x406ba9
406b9c:	0f b7 45 08          	movzwl 0x8(%ebp),%eax
406ba0:	56                   	push   %esi
406ba1:	50                   	push   %eax
406ba2:	e8 4b 32 00 00       	call   0x409df2
406ba7:	59                   	pop    %ecx
406ba8:	59                   	pop    %ecx
406ba9:	5e                   	pop    %esi
406baa:	5d                   	pop    %ebp
406bab:	c3                   	ret
406bac:	56                   	push   %esi
406bad:	ff 74 24 0c          	push   0xc(%esp)
406bb1:	e8 10 ed ff ff       	call   0x4058c6
406bb6:	ff 74 24 10          	push   0x10(%esp)
406bba:	ff 74 24 10          	push   0x10(%esp)
406bbe:	e8 13 00 00 00       	call   0x406bd6
406bc3:	ff 74 24 18          	push   0x18(%esp)
406bc7:	8b f0                	mov    %eax,%esi
406bc9:	e8 4a ed ff ff       	call   0x405918
406bce:	83 c4 10             	add    $0x10,%esp
406bd1:	66 8b c6             	mov    %si,%ax
406bd4:	5e                   	pop    %esi
406bd5:	c3                   	ret
406bd6:	55                   	push   %ebp
406bd7:	8b ec                	mov    %esp,%ebp
406bd9:	53                   	push   %ebx
406bda:	8b 5d 08             	mov    0x8(%ebp),%ebx
406bdd:	66 81 fb ff ff       	cmp    $0xffff,%bx
406be2:	56                   	push   %esi
406be3:	74 70                	je     0x406c55
406be5:	8b 75 0c             	mov    0xc(%ebp),%esi
406be8:	8b 46 0c             	mov    0xc(%esi),%eax
406beb:	a8 01                	test   $0x1,%al
406bed:	75 08                	jne    0x406bf7
406bef:	a8 80                	test   $0x80,%al
406bf1:	74 62                	je     0x406c55
406bf3:	a8 02                	test   $0x2,%al
406bf5:	75 5e                	jne    0x406c55
406bf7:	83 7e 08 00          	cmpl   $0x0,0x8(%esi)
406bfb:	75 07                	jne    0x406c04
406bfd:	56                   	push   %esi
406bfe:	e8 80 2a 00 00       	call   0x409683
406c03:	59                   	pop    %ecx
406c04:	8b 46 0c             	mov    0xc(%esi),%eax
406c07:	a8 40                	test   $0x40,%al
406c09:	0f 85 88 00 00 00    	jne    0x406c97
406c0f:	8b 4e 10             	mov    0x10(%esi),%ecx
406c12:	83 f9 ff             	cmp    $0xffffffff,%ecx
406c15:	74 17                	je     0x406c2e
406c17:	8b d1                	mov    %ecx,%edx
406c19:	c1 fa 05             	sar    $0x5,%edx
406c1c:	83 e1 1f             	and    $0x1f,%ecx
406c1f:	8b 14 95 c0 1d 41 00 	mov    0x411dc0(,%edx,4),%edx
406c26:	8d 0c c9             	lea    (%ecx,%ecx,8),%ecx
406c29:	8d 0c 8a             	lea    (%edx,%ecx,4),%ecx
406c2c:	eb 05                	jmp    0x406c33
406c2e:	b9 08 0e 41 00       	mov    $0x410e08,%ecx
406c33:	f6 41 04 80          	testb  $0x80,0x4(%ecx)
406c37:	74 5e                	je     0x406c97
406c39:	8d 45 08             	lea    0x8(%ebp),%eax
406c3c:	53                   	push   %ebx
406c3d:	50                   	push   %eax
406c3e:	e8 d6 32 00 00       	call   0x409f19
406c43:	59                   	pop    %ecx
406c44:	83 f8 ff             	cmp    $0xffffffff,%eax
406c47:	59                   	pop    %ecx
406c48:	75 13                	jne    0x406c5d
406c4a:	e8 8f 04 00 00       	call   0x4070de
406c4f:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
406c55:	66 0d ff ff          	or     $0xffff,%ax
406c59:	5e                   	pop    %esi
406c5a:	5b                   	pop    %ebx
406c5b:	5d                   	pop    %ebp
406c5c:	c3                   	ret
406c5d:	8b 0e                	mov    (%esi),%ecx
406c5f:	3b 4e 08             	cmp    0x8(%esi),%ecx
406c62:	75 0a                	jne    0x406c6e
406c64:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
406c68:	75 eb                	jne    0x406c55
406c6a:	03 c8                	add    %eax,%ecx
406c6c:	89 0e                	mov    %ecx,(%esi)
406c6e:	83 f8 01             	cmp    $0x1,%eax
406c71:	74 09                	je     0x406c7c
406c73:	ff 0e                	decl   (%esi)
406c75:	8b 0e                	mov    (%esi),%ecx
406c77:	8a 55 09             	mov    0x9(%ebp),%dl
406c7a:	88 11                	mov    %dl,(%ecx)
406c7c:	ff 0e                	decl   (%esi)
406c7e:	8b 0e                	mov    (%esi),%ecx
406c80:	8a 55 08             	mov    0x8(%ebp),%dl
406c83:	88 11                	mov    %dl,(%ecx)
406c85:	01 46 04             	add    %eax,0x4(%esi)
406c88:	8b 46 0c             	mov    0xc(%esi),%eax
406c8b:	24 ef                	and    $0xef,%al
406c8d:	0c 01                	or     $0x1,%al
406c8f:	89 46 0c             	mov    %eax,0xc(%esi)
406c92:	66 8b c3             	mov    %bx,%ax
406c95:	eb c2                	jmp    0x406c59
406c97:	8b 0e                	mov    (%esi),%ecx
406c99:	3b 4e 08             	cmp    0x8(%esi),%ecx
406c9c:	75 0b                	jne    0x406ca9
406c9e:	83 7e 04 00          	cmpl   $0x0,0x4(%esi)
406ca2:	75 b1                	jne    0x406c55
406ca4:	83 c1 02             	add    $0x2,%ecx
406ca7:	89 0e                	mov    %ecx,(%esi)
406ca9:	83 46 04 02          	addl   $0x2,0x4(%esi)
406cad:	24 ef                	and    $0xef,%al
406caf:	0c 01                	or     $0x1,%al
406cb1:	83 06 fe             	addl   $0xfffffffe,(%esi)
406cb4:	89 46 0c             	mov    %eax,0xc(%esi)
406cb7:	8b 06                	mov    (%esi),%eax
406cb9:	66 89 18             	mov    %bx,(%eax)
406cbc:	8b 06                	mov    (%esi),%eax
406cbe:	66 8b 00             	mov    (%eax),%ax
406cc1:	eb 96                	jmp    0x406c59
406cc3:	56                   	push   %esi
406cc4:	8b 74 24 08          	mov    0x8(%esp),%esi
406cc8:	57                   	push   %edi
406cc9:	56                   	push   %esi
406cca:	e8 f7 eb ff ff       	call   0x4058c6
406ccf:	56                   	push   %esi
406cd0:	e8 11 00 00 00       	call   0x406ce6
406cd5:	56                   	push   %esi
406cd6:	8b f8                	mov    %eax,%edi
406cd8:	e8 3b ec ff ff       	call   0x405918
406cdd:	83 c4 0c             	add    $0xc,%esp
406ce0:	66 8b c7             	mov    %di,%ax
406ce3:	5f                   	pop    %edi
406ce4:	5e                   	pop    %esi
406ce5:	c3                   	ret
406ce6:	55                   	push   %ebp
406ce7:	8b ec                	mov    %esp,%ebp
406ce9:	51                   	push   %ecx
406cea:	56                   	push   %esi
406ceb:	8b 75 08             	mov    0x8(%ebp),%esi
406cee:	57                   	push   %edi
406cef:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406cf3:	0f 85 c1 00 00 00    	jne    0x406dba
406cf9:	8b 46 10             	mov    0x10(%esi),%eax
406cfc:	83 f8 ff             	cmp    $0xffffffff,%eax
406cff:	74 17                	je     0x406d18
406d01:	8b c8                	mov    %eax,%ecx
406d03:	c1 f9 05             	sar    $0x5,%ecx
406d06:	83 e0 1f             	and    $0x1f,%eax
406d09:	8b 0c 8d c0 1d 41 00 	mov    0x411dc0(,%ecx,4),%ecx
406d10:	8d 04 c0             	lea    (%eax,%eax,8),%eax
406d13:	8d 04 81             	lea    (%ecx,%eax,4),%eax
406d16:	eb 05                	jmp    0x406d1d
406d18:	b8 08 0e 41 00       	mov    $0x410e08,%eax
406d1d:	f6 40 04 80          	testb  $0x80,0x4(%eax)
406d21:	0f 84 93 00 00 00    	je     0x406dba
406d27:	ff 4e 04             	decl   0x4(%esi)
406d2a:	6a 01                	push   $0x1
406d2c:	5f                   	pop    %edi
406d2d:	78 0a                	js     0x406d39
406d2f:	8b 0e                	mov    (%esi),%ecx
406d31:	0f b6 01             	movzbl (%ecx),%eax
406d34:	41                   	inc    %ecx
406d35:	89 0e                	mov    %ecx,(%esi)
406d37:	eb 07                	jmp    0x406d40
406d39:	56                   	push   %esi
406d3a:	e8 88 29 00 00       	call   0x4096c7
406d3f:	59                   	pop    %ecx
406d40:	83 f8 ff             	cmp    $0xffffffff,%eax
406d43:	75 09                	jne    0x406d4e
406d45:	66 0d ff ff          	or     $0xffff,%ax
406d49:	e9 85 00 00 00       	jmp    0x406dd3
406d4e:	8b 0d ec 09 41 00    	mov    0x4109ec,%ecx
406d54:	88 45 fc             	mov    %al,-0x4(%ebp)
406d57:	0f b6 c0             	movzbl %al,%eax
406d5a:	f6 44 41 01 80       	testb  $0x80,0x1(%ecx,%eax,2)
406d5f:	74 30                	je     0x406d91
406d61:	ff 4e 04             	decl   0x4(%esi)
406d64:	78 0a                	js     0x406d70
406d66:	8b 0e                	mov    (%esi),%ecx
406d68:	0f b6 01             	movzbl (%ecx),%eax
406d6b:	41                   	inc    %ecx
406d6c:	89 0e                	mov    %ecx,(%esi)
406d6e:	eb 07                	jmp    0x406d77
406d70:	56                   	push   %esi
406d71:	e8 51 29 00 00       	call   0x4096c7
406d76:	59                   	pop    %ecx
406d77:	83 f8 ff             	cmp    $0xffffffff,%eax
406d7a:	75 0f                	jne    0x406d8b
406d7c:	0f be 45 fc          	movsbl -0x4(%ebp),%eax
406d80:	56                   	push   %esi
406d81:	50                   	push   %eax
406d82:	e8 82 f4 ff ff       	call   0x406209
406d87:	59                   	pop    %ecx
406d88:	59                   	pop    %ecx
406d89:	eb ba                	jmp    0x406d45
406d8b:	6a 02                	push   $0x2
406d8d:	88 45 fd             	mov    %al,-0x3(%ebp)
406d90:	5f                   	pop    %edi
406d91:	8d 45 fc             	lea    -0x4(%ebp),%eax
406d94:	57                   	push   %edi
406d95:	50                   	push   %eax
406d96:	8d 45 0a             	lea    0xa(%ebp),%eax
406d99:	50                   	push   %eax
406d9a:	e8 23 33 00 00       	call   0x40a0c2
406d9f:	83 c4 0c             	add    $0xc,%esp
406da2:	83 f8 ff             	cmp    $0xffffffff,%eax
406da5:	75 0d                	jne    0x406db4
406da7:	e8 32 03 00 00       	call   0x4070de
406dac:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
406db2:	eb 91                	jmp    0x406d45
406db4:	66 8b 45 0a          	mov    0xa(%ebp),%ax
406db8:	eb 19                	jmp    0x406dd3
406dba:	83 46 04 fe          	addl   $0xfffffffe,0x4(%esi)
406dbe:	78 0c                	js     0x406dcc
406dc0:	8b 0e                	mov    (%esi),%ecx
406dc2:	66 8b 01             	mov    (%ecx),%ax
406dc5:	83 c1 02             	add    $0x2,%ecx
406dc8:	89 0e                	mov    %ecx,(%esi)
406dca:	eb 07                	jmp    0x406dd3
406dcc:	56                   	push   %esi
406dcd:	e8 09 32 00 00       	call   0x409fdb
406dd2:	59                   	pop    %ecx
406dd3:	5f                   	pop    %edi
406dd4:	5e                   	pop    %esi
406dd5:	c9                   	leave
406dd6:	c3                   	ret
406dd7:	56                   	push   %esi
406dd8:	8b f1                	mov    %ecx,%esi
406dda:	e8 9b 00 00 00       	call   0x406e7a
406ddf:	f6 44 24 08 01       	testb  $0x1,0x8(%esp)
406de4:	74 07                	je     0x406ded
406de6:	56                   	push   %esi
406de7:	e8 95 e1 ff ff       	call   0x404f81
406dec:	59                   	pop    %ecx
406ded:	8b c6                	mov    %esi,%eax
406def:	5e                   	pop    %esi
406df0:	c2 04 00             	ret    $0x4
406df3:	56                   	push   %esi
406df4:	57                   	push   %edi
406df5:	8b 7c 24 0c          	mov    0xc(%esp),%edi
406df9:	8b f1                	mov    %ecx,%esi