406a3b:	89 46 0c             	mov    %eax,0xc(%esi)
406a3e:	eb 16                	jmp    0x406a56
406a40:	a8 01                	test   $0x1,%al
406a42:	74 12                	je     0x406a56
406a44:	a8 08                	test   $0x8,%al
406a46:	74 0e                	je     0x406a56
406a48:	a9 00 04 00 00       	test   $0x400,%eax
406a4d:	75 07                	jne    0x406a56
406a4f:	c7 46 18 00 02 00 00 	movl   $0x200,0x18(%esi)
406a56:	57                   	push   %edi
406a57:	ff 75 08             	push   0x8(%ebp)
406a5a:	53                   	push   %ebx
406a5b:	56                   	push   %esi
406a5c:	e8 d8 74 00 00       	call   0x40df39
406a61:	59                   	pop    %ecx
406a62:	50                   	push   %eax
406a63:	e8 2a 86 00 00       	call   0x40f092
406a68:	83 c4 10             	add    $0x10,%esp
406a6b:	23 c2                	and    %edx,%eax
406a6d:	83 c9 ff             	or     $0xffffffff,%ecx
406a70:	5b                   	pop    %ebx
406a71:	3b c1                	cmp    %ecx,%eax
406a73:	74 02                	je     0x406a77
406a75:	33 c9                	xor    %ecx,%ecx
406a77:	8b c1                	mov    %ecx,%eax
406a79:	eb 0e                	jmp    0x406a89
406a7b:	e8 fd 16 00 00       	call   0x40817d
406a80:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406a86:	83 c8 ff             	or     $0xffffffff,%eax
406a89:	5f                   	pop    %edi
406a8a:	5e                   	pop    %esi
406a8b:	5d                   	pop    %ebp
406a8c:	c3                   	ret
406a8d:	55                   	push   %ebp
406a8e:	8b ec                	mov    %esp,%ebp
406a90:	51                   	push   %ecx
406a91:	51                   	push   %ecx
406a92:	8b 4d 0c             	mov    0xc(%ebp),%ecx
406a95:	53                   	push   %ebx
406a96:	56                   	push   %esi
406a97:	57                   	push   %edi
406a98:	85 c9                	test   %ecx,%ecx
406a9a:	74 1e                	je     0x406aba
406a9c:	8b 5d 10             	mov    0x10(%ebp),%ebx
406a9f:	85 db                	test   %ebx,%ebx
406aa1:	74 17                	je     0x406aba
406aa3:	8b 75 14             	mov    0x14(%ebp),%esi
406aa6:	85 f6                	test   %esi,%esi
406aa8:	75 17                	jne    0x406ac1
406aaa:	e8 ce 16 00 00       	call   0x40817d
406aaf:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406ab5:	e8 3b 4b 00 00       	call   0x40b5f5
406aba:	33 c0                	xor    %eax,%eax
406abc:	5f                   	pop    %edi
406abd:	5e                   	pop    %esi
406abe:	5b                   	pop    %ebx
406abf:	c9                   	leave
406ac0:	c3                   	ret
406ac1:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
406ac5:	74 e3                	je     0x406aaa
406ac7:	83 c8 ff             	or     $0xffffffff,%eax
406aca:	33 d2                	xor    %edx,%edx
406acc:	f7 f1                	div    %ecx
406ace:	3b d8                	cmp    %eax,%ebx
406ad0:	77 d8                	ja     0x406aaa
406ad2:	8b f9                	mov    %ecx,%edi
406ad4:	0f af fb             	imul   %ebx,%edi
406ad7:	f7 46 0c 0c 01 00 00 	testl  $0x10c,0xc(%esi)
406ade:	8b df                	mov    %edi,%ebx
406ae0:	74 05                	je     0x406ae7
406ae2:	8b 4e 18             	mov    0x18(%esi),%ecx
406ae5:	eb 05                	jmp    0x406aec
406ae7:	b9 00 10 00 00       	mov    $0x1000,%ecx
406aec:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406aef:	85 ff                	test   %edi,%edi
406af1:	0f 84 d3 00 00 00    	je     0x406bca
406af7:	8b 56 0c             	mov    0xc(%esi),%edx
406afa:	81 e2 08 01 00 00    	and    $0x108,%edx
406b00:	74 36                	je     0x406b38
406b02:	8b 46 04             	mov    0x4(%esi),%eax
406b05:	89 45 f8             	mov    %eax,-0x8(%ebp)
406b08:	85 c0                	test   %eax,%eax
406b0a:	74 2c                	je     0x406b38
406b0c:	0f 88 c0 00 00 00    	js     0x406bd2
406b12:	3b d8                	cmp    %eax,%ebx
406b14:	73 05                	jae    0x406b1b
406b16:	8b c3                	mov    %ebx,%eax
406b18:	89 5d f8             	mov    %ebx,-0x8(%ebp)
406b1b:	50                   	push   %eax
406b1c:	ff 75 08             	push   0x8(%ebp)
406b1f:	ff 36                	push   (%esi)
406b21:	e8 7a eb ff ff       	call   0x4056a0
406b26:	8b 45 f8             	mov    -0x8(%ebp),%eax
406b29:	29 46 04             	sub    %eax,0x4(%esi)
406b2c:	01 06                	add    %eax,(%esi)
406b2e:	83 c4 0c             	add    $0xc,%esp
406b31:	2b d8                	sub    %eax,%ebx
406b33:	01 45 08             	add    %eax,0x8(%ebp)
406b36:	eb 5d                	jmp    0x406b95
406b38:	3b d9                	cmp    %ecx,%ebx
406b3a:	72 5e                	jb     0x406b9a
406b3c:	85 d2                	test   %edx,%edx
406b3e:	74 12                	je     0x406b52
406b40:	56                   	push   %esi
406b41:	e8 d4 f9 ff ff       	call   0x40651a
406b46:	59                   	pop    %ecx
406b47:	85 c0                	test   %eax,%eax
406b49:	0f 85 87 00 00 00    	jne    0x406bd6
406b4f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406b52:	8b c3                	mov    %ebx,%eax
406b54:	85 c9                	test   %ecx,%ecx
406b56:	74 0d                	je     0x406b65
406b58:	33 d2                	xor    %edx,%edx
406b5a:	f7 f1                	div    %ecx
406b5c:	8b c3                	mov    %ebx,%eax
406b5e:	2b c2                	sub    %edx,%eax
406b60:	89 45 f8             	mov    %eax,-0x8(%ebp)
406b63:	eb 03                	jmp    0x406b68
406b65:	89 5d f8             	mov    %ebx,-0x8(%ebp)
406b68:	50                   	push   %eax
406b69:	ff 75 08             	push   0x8(%ebp)
406b6c:	56                   	push   %esi
406b6d:	e8 c7 73 00 00       	call   0x40df39
406b72:	59                   	pop    %ecx
406b73:	50                   	push   %eax
406b74:	e8 8a 76 00 00       	call   0x40e203
406b79:	83 c4 0c             	add    $0xc,%esp
406b7c:	83 f8 ff             	cmp    $0xffffffff,%eax
406b7f:	74 51                	je     0x406bd2
406b81:	8b 4d f8             	mov    -0x8(%ebp),%ecx
406b84:	8b d1                	mov    %ecx,%edx
406b86:	3b c1                	cmp    %ecx,%eax
406b88:	77 02                	ja     0x406b8c
406b8a:	8b d0                	mov    %eax,%edx
406b8c:	01 55 08             	add    %edx,0x8(%ebp)
406b8f:	2b da                	sub    %edx,%ebx
406b91:	3b c1                	cmp    %ecx,%eax
406b93:	72 3d                	jb     0x406bd2
406b95:	8b 4d fc             	mov    -0x4(%ebp),%ecx
406b98:	eb 28                	jmp    0x406bc2
406b9a:	8b 45 08             	mov    0x8(%ebp),%eax
406b9d:	56                   	push   %esi
406b9e:	0f be 00             	movsbl (%eax),%eax
406ba1:	50                   	push   %eax
406ba2:	e8 89 4a 00 00       	call   0x40b630
406ba7:	59                   	pop    %ecx
406ba8:	59                   	pop    %ecx
406ba9:	83 f8 ff             	cmp    $0xffffffff,%eax
406bac:	74 28                	je     0x406bd6
406bae:	ff 45 08             	incl   0x8(%ebp)
406bb1:	8b 4e 18             	mov    0x18(%esi),%ecx
406bb4:	4b                   	dec    %ebx
406bb5:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406bb8:	85 c9                	test   %ecx,%ecx
406bba:	7f 06                	jg     0x406bc2
406bbc:	33 c9                	xor    %ecx,%ecx
406bbe:	41                   	inc    %ecx
406bbf:	89 4d fc             	mov    %ecx,-0x4(%ebp)
406bc2:	85 db                	test   %ebx,%ebx
406bc4:	0f 85 2d ff ff ff    	jne    0x406af7
406bca:	8b 45 10             	mov    0x10(%ebp),%eax
406bcd:	e9 ea fe ff ff       	jmp    0x406abc
406bd2:	83 4e 0c 20          	orl    $0x20,0xc(%esi)
406bd6:	2b fb                	sub    %ebx,%edi
406bd8:	8b c7                	mov    %edi,%eax
406bda:	33 d2                	xor    %edx,%edx
406bdc:	f7 75 0c             	divl   0xc(%ebp)
406bdf:	e9 d8 fe ff ff       	jmp    0x406abc
406be4:	6a 0c                	push   $0xc
406be6:	68 d0 e2 41 00       	push   $0x41e2d0
406beb:	e8 c0 41 00 00       	call   0x40adb0
406bf0:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
406bf4:	74 24                	je     0x406c1a
406bf6:	83 7d 10 00          	cmpl   $0x0,0x10(%ebp)
406bfa:	74 1e                	je     0x406c1a
406bfc:	33 c0                	xor    %eax,%eax
406bfe:	8b 75 14             	mov    0x14(%ebp),%esi
406c01:	85 f6                	test   %esi,%esi
406c03:	0f 95 c0             	setne  %al
406c06:	85 c0                	test   %eax,%eax
406c08:	75 18                	jne    0x406c22
406c0a:	e8 6e 15 00 00       	call   0x40817d
406c0f:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406c15:	e8 db 49 00 00       	call   0x40b5f5
406c1a:	33 c0                	xor    %eax,%eax
406c1c:	e8 d4 41 00 00       	call   0x40adf5
406c21:	c3                   	ret
406c22:	56                   	push   %esi
406c23:	e8 f3 f6 ff ff       	call   0x40631b
406c28:	59                   	pop    %ecx
406c29:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406c2d:	56                   	push   %esi
406c2e:	ff 75 10             	push   0x10(%ebp)
406c31:	ff 75 0c             	push   0xc(%ebp)
406c34:	ff 75 08             	push   0x8(%ebp)
406c37:	e8 51 fe ff ff       	call   0x406a8d
406c3c:	83 c4 10             	add    $0x10,%esp
406c3f:	8b f8                	mov    %eax,%edi
406c41:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406c44:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406c4b:	e8 0a 00 00 00       	call   0x406c5a
406c50:	8b c7                	mov    %edi,%eax
406c52:	eb c8                	jmp    0x406c1c
406c54:	8b 75 14             	mov    0x14(%ebp),%esi
406c57:	8b 7d e4             	mov    -0x1c(%ebp),%edi
406c5a:	56                   	push   %esi
406c5b:	e8 2a f7 ff ff       	call   0x40638a
406c60:	59                   	pop    %ecx
406c61:	c3                   	ret
406c62:	6a 10                	push   $0x10
406c64:	68 f0 e2 41 00       	push   $0x41e2f0
406c69:	e8 42 41 00 00       	call   0x40adb0
406c6e:	33 ff                	xor    %edi,%edi
406c70:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406c73:	33 c0                	xor    %eax,%eax
406c75:	8b 75 08             	mov    0x8(%ebp),%esi
406c78:	85 f6                	test   %esi,%esi
406c7a:	0f 95 c0             	setne  %al
406c7d:	85 c0                	test   %eax,%eax
406c7f:	75 18                	jne    0x406c99
406c81:	e8 f7 14 00 00       	call   0x40817d
406c86:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406c8c:	e8 64 49 00 00       	call   0x40b5f5
406c91:	83 c8 ff             	or     $0xffffffff,%eax
406c94:	e9 bb 00 00 00       	jmp    0x406d54
406c99:	8b 5d 10             	mov    0x10(%ebp),%ebx
406c9c:	83 fb 04             	cmp    $0x4,%ebx
406c9f:	74 09                	je     0x406caa
406ca1:	85 db                	test   %ebx,%ebx
406ca3:	74 13                	je     0x406cb8
406ca5:	83 fb 40             	cmp    $0x40,%ebx
406ca8:	75 d7                	jne    0x406c81
406caa:	85 db                	test   %ebx,%ebx
406cac:	74 0a                	je     0x406cb8
406cae:	83 fb 40             	cmp    $0x40,%ebx
406cb1:	74 05                	je     0x406cb8
406cb3:	8b 4d 14             	mov    0x14(%ebp),%ecx
406cb6:	eb 0d                	jmp    0x406cc5
406cb8:	8b 4d 14             	mov    0x14(%ebp),%ecx
406cbb:	8d 41 fe             	lea    -0x2(%ecx),%eax
406cbe:	3d fd ff ff 7f       	cmp    $0x7ffffffd,%eax
406cc3:	77 bc                	ja     0x406c81
406cc5:	83 e1 fe             	and    $0xfffffffe,%ecx
406cc8:	89 4d 08             	mov    %ecx,0x8(%ebp)
406ccb:	89 75 e0             	mov    %esi,-0x20(%ebp)
406cce:	56                   	push   %esi
406ccf:	e8 47 f6 ff ff       	call   0x40631b
406cd4:	59                   	pop    %ecx
406cd5:	89 7d fc             	mov    %edi,-0x4(%ebp)
406cd8:	56                   	push   %esi
406cd9:	e8 3c f8 ff ff       	call   0x40651a
406cde:	56                   	push   %esi
406cdf:	e8 f8 73 00 00       	call   0x40e0dc
406ce4:	59                   	pop    %ecx
406ce5:	59                   	pop    %ecx
406ce6:	81 66 0c f3 c2 ff ff 	andl   $0xffffc2f3,0xc(%esi)
406ced:	8b 4e 0c             	mov    0xc(%esi),%ecx
406cf0:	f6 c3 04             	test   $0x4,%bl
406cf3:	74 0e                	je     0x406d03
406cf5:	83 c9 04             	or     $0x4,%ecx
406cf8:	89 4e 0c             	mov    %ecx,0xc(%esi)
406cfb:	8d 46 14             	lea    0x14(%esi),%eax
406cfe:	6a 02                	push   $0x2
406d00:	5b                   	pop    %ebx
406d01:	eb 38                	jmp    0x406d3b
406d03:	8b 45 0c             	mov    0xc(%ebp),%eax
406d06:	85 c0                	test   %eax,%eax
406d08:	75 25                	jne    0x406d2f
406d0a:	8b 5d 08             	mov    0x8(%ebp),%ebx
406d0d:	53                   	push   %ebx
406d0e:	e8 8f 1d 00 00       	call   0x408aa2
406d13:	59                   	pop    %ecx
406d14:	85 c0                	test   %eax,%eax
406d16:	75 0e                	jne    0x406d26
406d18:	ff 05 50 1c 42 00    	incl   0x421c50
406d1e:	83 cf ff             	or     $0xffffffff,%edi
406d21:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406d24:	eb 20                	jmp    0x406d46
406d26:	81 4e 0c 08 04 00 00 	orl    $0x408,0xc(%esi)
406d2d:	eb 0c                	jmp    0x406d3b
406d2f:	81 c9 00 05 00 00    	or     $0x500,%ecx
406d35:	89 4e 0c             	mov    %ecx,0xc(%esi)
406d38:	8b 5d 08             	mov    0x8(%ebp),%ebx
406d3b:	89 5e 18             	mov    %ebx,0x18(%esi)
406d3e:	89 46 08             	mov    %eax,0x8(%esi)
406d41:	89 06                	mov    %eax,(%esi)
406d43:	89 7e 04             	mov    %edi,0x4(%esi)
406d46:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406d4d:	e8 0e 00 00 00       	call   0x406d60
406d52:	8b c7                	mov    %edi,%eax
406d54:	e8 9c 40 00 00       	call   0x40adf5
406d59:	c3                   	ret
406d5a:	8b 7d e4             	mov    -0x1c(%ebp),%edi
406d5d:	8b 75 e0             	mov    -0x20(%ebp),%esi
406d60:	56                   	push   %esi
406d61:	e8 24 f6 ff ff       	call   0x40638a
406d66:	59                   	pop    %ecx
406d67:	c3                   	ret
406d68:	55                   	push   %ebp
406d69:	8b ec                	mov    %esp,%ebp
406d6b:	53                   	push   %ebx
406d6c:	56                   	push   %esi
406d6d:	8b 75 0c             	mov    0xc(%ebp),%esi
406d70:	57                   	push   %edi
406d71:	83 cf ff             	or     $0xffffffff,%edi
406d74:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406d78:	75 6f                	jne    0x406de9
406d7a:	56                   	push   %esi
406d7b:	e8 b9 71 00 00       	call   0x40df39
406d80:	59                   	pop    %ecx
406d81:	8b c8                	mov    %eax,%ecx
406d83:	bb 18 10 42 00       	mov    $0x421018,%ebx
406d88:	3b cf                	cmp    %edi,%ecx
406d8a:	74 19                	je     0x406da5
406d8c:	83 f9 fe             	cmp    $0xfffffffe,%ecx
406d8f:	74 14                	je     0x406da5
406d91:	8b d1                	mov    %ecx,%edx
406d93:	83 e2 1f             	and    $0x1f,%edx
406d96:	c1 f8 05             	sar    $0x5,%eax
406d99:	c1 e2 06             	shl    $0x6,%edx
406d9c:	03 14 85 20 2a 42 00 	add    0x422a20(,%eax,4),%edx
406da3:	eb 02                	jmp    0x406da7
406da5:	8b d3                	mov    %ebx,%edx
406da7:	f6 42 24 7f          	testb  $0x7f,0x24(%edx)
406dab:	75 25                	jne    0x406dd2
406dad:	3b cf                	cmp    %edi,%ecx
406daf:	74 19                	je     0x406dca
406db1:	83 f9 fe             	cmp    $0xfffffffe,%ecx
406db4:	74 14                	je     0x406dca
406db6:	8b c1                	mov    %ecx,%eax
406db8:	83 e1 1f             	and    $0x1f,%ecx
406dbb:	c1 f8 05             	sar    $0x5,%eax
406dbe:	c1 e1 06             	shl    $0x6,%ecx
406dc1:	03 0c 85 20 2a 42 00 	add    0x422a20(,%eax,4),%ecx
406dc8:	eb 02                	jmp    0x406dcc
406dca:	8b cb                	mov    %ebx,%ecx
406dcc:	f6 41 24 80          	testb  $0x80,0x24(%ecx)
406dd0:	74 17                	je     0x406de9
406dd2:	e8 a6 13 00 00       	call   0x40817d
406dd7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406ddd:	e8 13 48 00 00       	call   0x40b5f5
406de2:	8b c7                	mov    %edi,%eax
406de4:	5f                   	pop    %edi
406de5:	5e                   	pop    %esi
406de6:	5b                   	pop    %ebx
406de7:	5d                   	pop    %ebp
406de8:	c3                   	ret
406de9:	8b 5d 08             	mov    0x8(%ebp),%ebx
406dec:	3b df                	cmp    %edi,%ebx
406dee:	74 f2                	je     0x406de2