401a81:	73 04                	jae    0x401a87
401a83:	32 c0                	xor    %al,%al
401a85:	eb 34                	jmp    0x401abb
401a87:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401a8b:	e8 d0 3b 00 00       	call   0x405660
401a90:	89 65 e8             	mov    %esp,-0x18(%ebp)
401a93:	eb 1d                	jmp    0x401ab2
401a95:	8b 45 ec             	mov    -0x14(%ebp),%eax
401a98:	8b 00                	mov    (%eax),%eax
401a9a:	33 c9                	xor    %ecx,%ecx
401a9c:	81 38 fd 00 00 c0    	cmpl   $0xc00000fd,(%eax)
401aa2:	0f 94 c1             	sete   %cl
401aa5:	8b c1                	mov    %ecx,%eax
401aa7:	c3                   	ret
401aa8:	8b 65 e8             	mov    -0x18(%ebp),%esp
401aab:	32 db                	xor    %bl,%bl
401aad:	e8 ee fe ff ff       	call   0x4019a0
401ab2:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
401ab9:	8a c3                	mov    %bl,%al
401abb:	8d 65 d4             	lea    -0x2c(%ebp),%esp
401abe:	8b 4d f0             	mov    -0x10(%ebp),%ecx
401ac1:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
401ac8:	59                   	pop    %ecx
401ac9:	5f                   	pop    %edi
401aca:	5e                   	pop    %esi
401acb:	5b                   	pop    %ebx
401acc:	c9                   	leave
401acd:	c3                   	ret
401ace:	6a 0c                	push   $0xc
401ad0:	68 b8 56 40 00       	push   $0x4056b8
401ad5:	e8 fe 39 00 00       	call   0x4054d8
401ada:	33 db                	xor    %ebx,%ebx
401adc:	89 5d fc             	mov    %ebx,-0x4(%ebp)
401adf:	51                   	push   %ecx
401ae0:	ff 15 30 71 40 00    	call   *0x407130
401ae6:	eb 2a                	jmp    0x401b12
401ae8:	8b 45 ec             	mov    -0x14(%ebp),%eax
401aeb:	8b 00                	mov    (%eax),%eax
401aed:	8b 00                	mov    (%eax),%eax
401aef:	89 45 e4             	mov    %eax,-0x1c(%ebp)
401af2:	33 c0                	xor    %eax,%eax
401af4:	40                   	inc    %eax
401af5:	c3                   	ret
401af6:	8b 65 e8             	mov    -0x18(%ebp),%esp
401af9:	33 db                	xor    %ebx,%ebx
401afb:	81 7d e4 17 00 00 c0 	cmpl   $0xc0000017,-0x1c(%ebp)
401b02:	0f 95 c3             	setne  %bl
401b05:	4b                   	dec    %ebx
401b06:	81 e3 09 c0 06 00    	and    $0x6c009,%ebx
401b0c:	81 c3 05 40 00 80    	add    $0x80004005,%ebx
401b12:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
401b19:	8b c3                	mov    %ebx,%eax
401b1b:	8b 4d f0             	mov    -0x10(%ebp),%ecx
401b1e:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
401b25:	59                   	pop    %ecx
401b26:	5f                   	pop    %edi
401b27:	5e                   	pop    %esi
401b28:	5b                   	pop    %ebx
401b29:	c9                   	leave
401b2a:	c3                   	ret
401b2b:	8b ff                	mov    %edi,%edi
401b2d:	55                   	push   %ebp
401b2e:	8b ec                	mov    %esp,%ebp
401b30:	53                   	push   %ebx
401b31:	56                   	push   %esi
401b32:	8b f1                	mov    %ecx,%esi
401b34:	33 db                	xor    %ebx,%ebx
401b36:	57                   	push   %edi
401b37:	39 5e 04             	cmp    %ebx,0x4(%esi)
401b3a:	75 45                	jne    0x401b81
401b3c:	39 5e 08             	cmp    %ebx,0x8(%esi)
401b3f:	75 40                	jne    0x401b81
401b41:	68 b8 12 40 00       	push   $0x4012b8
401b46:	ff 15 8c 70 40 00    	call   *0x40708c
401b4c:	85 c0                	test   %eax,%eax
401b4e:	74 11                	je     0x401b61
401b50:	68 0c 13 40 00       	push   $0x40130c
401b55:	50                   	push   %eax
401b56:	ff 15 94 70 40 00    	call   *0x407094
401b5c:	89 46 04             	mov    %eax,0x4(%esi)
401b5f:	eb 20                	jmp    0x401b81
401b61:	53                   	push   %ebx
401b62:	53                   	push   %ebx
401b63:	68 1c 13 40 00       	push   $0x40131c
401b68:	ff 15 80 70 40 00    	call   *0x407080
401b6e:	85 c0                	test   %eax,%eax
401b70:	74 0f                	je     0x401b81
401b72:	68 38 13 40 00       	push   $0x401338
401b77:	50                   	push   %eax
401b78:	ff 15 94 70 40 00    	call   *0x407094
401b7e:	89 46 08             	mov    %eax,0x8(%esi)
401b81:	8b 7e 04             	mov    0x4(%esi),%edi
401b84:	85 ff                	test   %edi,%edi
401b86:	74 13                	je     0x401b9b
401b88:	53                   	push   %ebx
401b89:	53                   	push   %ebx
401b8a:	ff 75 08             	push   0x8(%ebp)
401b8d:	8b cf                	mov    %edi,%ecx
401b8f:	ff 36                	push   (%esi)
401b91:	ff 15 d0 71 40 00    	call   *0x4071d0
401b97:	ff d7                	call   *%edi
401b99:	eb 1e                	jmp    0x401bb9
401b9b:	8b 7e 08             	mov    0x8(%esi),%edi
401b9e:	85 ff                	test   %edi,%edi
401ba0:	74 11                	je     0x401bb3
401ba2:	ff 75 08             	push   0x8(%ebp)
401ba5:	8b cf                	mov    %edi,%ecx
401ba7:	ff 36                	push   (%esi)
401ba9:	ff 15 d0 71 40 00    	call   *0x4071d0
401baf:	ff d7                	call   *%edi
401bb1:	eb 06                	jmp    0x401bb9
401bb3:	ff 15 40 70 40 00    	call   *0x407040
401bb9:	5f                   	pop    %edi
401bba:	5e                   	pop    %esi
401bbb:	5b                   	pop    %ebx
401bbc:	5d                   	pop    %ebp
401bbd:	c2 04 00             	ret    $0x4
401bc0:	8b ff                	mov    %edi,%edi
401bc2:	55                   	push   %ebp
401bc3:	8b ec                	mov    %esp,%ebp
401bc5:	51                   	push   %ecx
401bc6:	51                   	push   %ecx
401bc7:	56                   	push   %esi
401bc8:	57                   	push   %edi
401bc9:	8d 45 f8             	lea    -0x8(%ebp),%eax
401bcc:	33 ff                	xor    %edi,%edi
401bce:	50                   	push   %eax
401bcf:	8d 45 fc             	lea    -0x4(%ebp),%eax
401bd2:	89 7d fc             	mov    %edi,-0x4(%ebp)
401bd5:	50                   	push   %eax
401bd6:	57                   	push   %edi
401bd7:	68 1f 00 02 00       	push   $0x2001f
401bdc:	57                   	push   %edi
401bdd:	57                   	push   %edi
401bde:	57                   	push   %edi
401bdf:	ff 75 0c             	push   0xc(%ebp)
401be2:	8b f1                	mov    %ecx,%esi
401be4:	ff 75 08             	push   0x8(%ebp)
401be7:	ff 15 e8 70 40 00    	call   *0x4070e8
401bed:	8b c8                	mov    %eax,%ecx
401bef:	85 c9                	test   %ecx,%ecx
401bf1:	75 15                	jne    0x401c08
401bf3:	8b cf                	mov    %edi,%ecx
401bf5:	39 0e                	cmp    %ecx,(%esi)
401bf7:	74 0a                	je     0x401c03
401bf9:	ff 36                	push   (%esi)
401bfb:	ff 15 f8 70 40 00    	call   *0x4070f8
401c01:	8b c8                	mov    %eax,%ecx
401c03:	8b 45 fc             	mov    -0x4(%ebp),%eax
401c06:	89 06                	mov    %eax,(%esi)
401c08:	5f                   	pop    %edi
401c09:	8b c1                	mov    %ecx,%eax
401c0b:	5e                   	pop    %esi
401c0c:	c9                   	leave
401c0d:	c2 1c 00             	ret    $0x1c
401c10:	8b ff                	mov    %edi,%edi
401c12:	55                   	push   %ebp
401c13:	8b ec                	mov    %esp,%ebp
401c15:	8b 55 08             	mov    0x8(%ebp),%edx
401c18:	56                   	push   %esi
401c19:	57                   	push   %edi
401c1a:	33 ff                	xor    %edi,%edi
401c1c:	8d 72 02             	lea    0x2(%edx),%esi
401c1f:	66 8b 02             	mov    (%edx),%ax
401c22:	83 c2 02             	add    $0x2,%edx
401c25:	66 3b c7             	cmp    %di,%ax
401c28:	75 f5                	jne    0x401c1f
401c2a:	2b d6                	sub    %esi,%edx
401c2c:	d1 fa                	sar    $1,%edx
401c2e:	8d 04 55 02 00 00 00 	lea    0x2(,%edx,2),%eax
401c35:	50                   	push   %eax
401c36:	ff 75 08             	push   0x8(%ebp)
401c39:	6a 01                	push   $0x1
401c3b:	57                   	push   %edi
401c3c:	ff 75 0c             	push   0xc(%ebp)
401c3f:	ff 31                	push   (%ecx)
401c41:	ff 15 fc 70 40 00    	call   *0x4070fc
401c47:	5f                   	pop    %edi
401c48:	5e                   	pop    %esi
401c49:	5d                   	pop    %ebp
401c4a:	c2 08 00             	ret    $0x8
401c4d:	8b ff                	mov    %edi,%edi
401c4f:	55                   	push   %ebp
401c50:	8b ec                	mov    %esp,%ebp
401c52:	81 ec 28 02 00 00    	sub    $0x228,%esp
401c58:	a1 54 60 40 00       	mov    0x406054,%eax
401c5d:	33 c5                	xor    %ebp,%eax
401c5f:	89 45 f8             	mov    %eax,-0x8(%ebp)
401c62:	53                   	push   %ebx
401c63:	8b 5d 08             	mov    0x8(%ebp),%ebx
401c66:	8d 85 e0 fd ff ff    	lea    -0x220(%ebp),%eax
401c6c:	56                   	push   %esi
401c6d:	57                   	push   %edi
401c6e:	50                   	push   %eax
401c6f:	8b f9                	mov    %ecx,%edi
401c71:	33 c9                	xor    %ecx,%ecx
401c73:	68 1f 00 02 00       	push   $0x2001f
401c78:	51                   	push   %ecx
401c79:	53                   	push   %ebx
401c7a:	ff 37                	push   (%edi)
401c7c:	89 8d e8 fd ff ff    	mov    %ecx,-0x218(%ebp)
401c82:	89 8d ec fd ff ff    	mov    %ecx,-0x214(%ebp)
401c88:	89 8d f0 fd ff ff    	mov    %ecx,-0x210(%ebp)
401c8e:	89 8d e0 fd ff ff    	mov    %ecx,-0x220(%ebp)
401c94:	ff 15 00 71 40 00    	call   *0x407100
401c9a:	8b f0                	mov    %eax,%esi
401c9c:	85 f6                	test   %esi,%esi
401c9e:	0f 85 b6 00 00 00    	jne    0x401d5a
401ca4:	39 b5 e8 fd ff ff    	cmp    %esi,-0x218(%ebp)
401caa:	74 0e                	je     0x401cba
401cac:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401cb2:	ff 15 f8 70 40 00    	call   *0x4070f8
401cb8:	8b f0                	mov    %eax,%esi
401cba:	8b 85 e0 fd ff ff    	mov    -0x220(%ebp),%eax
401cc0:	89 85 e8 fd ff ff    	mov    %eax,-0x218(%ebp)
401cc6:	85 f6                	test   %esi,%esi
401cc8:	0f 85 8c 00 00 00    	jne    0x401d5a
401cce:	8d 8d d8 fd ff ff    	lea    -0x228(%ebp),%ecx
401cd4:	51                   	push   %ecx
401cd5:	56                   	push   %esi
401cd6:	56                   	push   %esi
401cd7:	56                   	push   %esi
401cd8:	8d 8d e4 fd ff ff    	lea    -0x21c(%ebp),%ecx
401cde:	51                   	push   %ecx
401cdf:	8d 8d f4 fd ff ff    	lea    -0x20c(%ebp),%ecx
401ce5:	51                   	push   %ecx
401ce6:	56                   	push   %esi
401ce7:	50                   	push   %eax
401ce8:	eb 37                	jmp    0x401d21
401cea:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
401cf0:	50                   	push   %eax
401cf1:	8d 8d e8 fd ff ff    	lea    -0x218(%ebp),%ecx
401cf7:	e8 51 ff ff ff       	call   0x401c4d
401cfc:	8b f0                	mov    %eax,%esi
401cfe:	85 f6                	test   %esi,%esi
401d00:	75 58                	jne    0x401d5a
401d02:	8d 85 d8 fd ff ff    	lea    -0x228(%ebp),%eax
401d08:	50                   	push   %eax
401d09:	56                   	push   %esi
401d0a:	56                   	push   %esi
401d0b:	56                   	push   %esi
401d0c:	8d 85 e4 fd ff ff    	lea    -0x21c(%ebp),%eax
401d12:	50                   	push   %eax
401d13:	8d 85 f4 fd ff ff    	lea    -0x20c(%ebp),%eax
401d19:	50                   	push   %eax
401d1a:	56                   	push   %esi
401d1b:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401d21:	c7 85 e4 fd ff ff 00 	movl   $0x100,-0x21c(%ebp)
401d28:	01 00 00
401d2b:	ff 15 e4 70 40 00    	call   *0x4070e4
401d31:	85 c0                	test   %eax,%eax
401d33:	74 b5                	je     0x401cea
401d35:	83 bd e8 fd ff ff 00 	cmpl   $0x0,-0x218(%ebp)
401d3c:	74 12                	je     0x401d50
401d3e:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401d44:	ff 15 f8 70 40 00    	call   *0x4070f8
401d4a:	89 b5 e8 fd ff ff    	mov    %esi,-0x218(%ebp)
401d50:	53                   	push   %ebx
401d51:	8b cf                	mov    %edi,%ecx
401d53:	e8 d3 fd ff ff       	call   0x401b2b
401d58:	8b f0                	mov    %eax,%esi
401d5a:	83 bd e8 fd ff ff 00 	cmpl   $0x0,-0x218(%ebp)
401d61:	74 0c                	je     0x401d6f
401d63:	ff b5 e8 fd ff ff    	push   -0x218(%ebp)
401d69:	ff 15 f8 70 40 00    	call   *0x4070f8
401d6f:	8b 4d f8             	mov    -0x8(%ebp),%ecx
401d72:	8b c6                	mov    %esi,%eax
401d74:	5f                   	pop    %edi
401d75:	5e                   	pop    %esi
401d76:	33 cd                	xor    %ebp,%ecx
401d78:	5b                   	pop    %ebx
401d79:	e8 22 32 00 00       	call   0x404fa0
401d7e:	c9                   	leave
401d7f:	c2 04 00             	ret    $0x4
401d82:	8b ff                	mov    %edi,%edi
401d84:	55                   	push   %ebp
401d85:	8b ec                	mov    %esp,%ebp
401d87:	51                   	push   %ecx
401d88:	51                   	push   %ecx
401d89:	53                   	push   %ebx
401d8a:	56                   	push   %esi
401d8b:	57                   	push   %edi
401d8c:	6a 08                	push   $0x8
401d8e:	8b f9                	mov    %ecx,%edi
401d90:	33 db                	xor    %ebx,%ebx
401d92:	e8 79 2e 00 00       	call   0x404c10
401d97:	8b f0                	mov    %eax,%esi
401d99:	59                   	pop    %ecx
401d9a:	85 f6                	test   %esi,%esi
401d9c:	0f 84 02 01 00 00    	je     0x401ea4
401da2:	39 5d 08             	cmp    %ebx,0x8(%ebp)
401da5:	75 04                	jne    0x401dab
401da7:	8b cb                	mov    %ebx,%ecx
401da9:	eb 15                	jmp    0x401dc0
401dab:	8b 4d 08             	mov    0x8(%ebp),%ecx
401dae:	8d 51 02             	lea    0x2(%ecx),%edx
401db1:	66 8b 01             	mov    (%ecx),%ax
401db4:	83 c1 02             	add    $0x2,%ecx
401db7:	66 3b c3             	cmp    %bx,%ax
401dba:	75 f5                	jne    0x401db1
401dbc:	2b ca                	sub    %edx,%ecx
401dbe:	d1 f9                	sar    $1,%ecx
401dc0:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
401dc7:	89 45 fc             	mov    %eax,-0x4(%ebp)
401dca:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
401dcd:	75 04                	jne    0x401dd3
401dcf:	8b cb                	mov    %ebx,%ecx
401dd1:	eb 15                	jmp    0x401de8
401dd3:	8b 4d 0c             	mov    0xc(%ebp),%ecx
401dd6:	8d 51 02             	lea    0x2(%ecx),%edx
401dd9:	66 8b 01             	mov    (%ecx),%ax
401ddc:	83 c1 02             	add    $0x2,%ecx
401ddf:	66 3b c3             	cmp    %bx,%ax
401de2:	75 f5                	jne    0x401dd9
401de4:	2b ca                	sub    %edx,%ecx
401de6:	d1 f9                	sar    $1,%ecx
401de8:	ff 75 fc             	push   -0x4(%ebp)
401deb:	8d 04 4d 02 00 00 00 	lea    0x2(,%ecx,2),%eax
401df2:	89 45 f8             	mov    %eax,-0x8(%ebp)
401df5:	ff 15 00 70 40 00    	call   *0x407000
401dfb:	ff 75 f8             	push   -0x8(%ebp)
401dfe:	89 06                	mov    %eax,(%esi)
401e00:	ff 15 00 70 40 00    	call   *0x407000
401e06:	89 46 04             	mov    %eax,0x4(%esi)
401e09:	39 1e                	cmp    %ebx,(%esi)
401e0b:	74 7f                	je     0x401e8c
401e0d:	85 c0                	test   %eax,%eax
401e0f:	74 7b                	je     0x401e8c
401e11:	ff 75 fc             	push   -0x4(%ebp)
401e14:	ff 75 08             	push   0x8(%ebp)
401e17:	ff 36                	push   (%esi)
401e19:	e8 6e 38 00 00       	call   0x40568c
401e1e:	ff 75 f8             	push   -0x8(%ebp)
401e21:	ff 75 0c             	push   0xc(%ebp)
401e24:	ff 76 04             	push   0x4(%esi)
401e27:	e8 60 38 00 00       	call   0x40568c
401e2c:	8b 47 04             	mov    0x4(%edi),%eax
401e2f:	83 c4 18             	add    $0x18,%esp
401e32:	8b 4f 08             	mov    0x8(%edi),%ecx
401e35:	3b c1                	cmp    %ecx,%eax
401e37:	75 47                	jne    0x401e80
401e39:	8d 04 09             	lea    (%ecx,%ecx,1),%eax
401e3c:	89 47 08             	mov    %eax,0x8(%edi)
401e3f:	c1 e0 02             	shl    $0x2,%eax
401e42:	50                   	push   %eax
401e43:	ff 37                	push   (%edi)
401e45:	ff 15 b4 71 40 00    	call   *0x4071b4
401e4b:	59                   	pop    %ecx
401e4c:	59                   	pop    %ecx
401e4d:	85 c0                	test   %eax,%eax