401aac:	8d 7d d8             	lea    -0x28(%ebp),%edi
401aaf:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
401ab1:	8d 4d d8             	lea    -0x28(%ebp),%ecx
401ab4:	66 a5                	movsw  %ds:(%esi),%es:(%edi)
401ab6:	e8 6d fe ff ff       	call   0x401928
401abb:	8b cb                	mov    %ebx,%ecx
401abd:	e8 09 06 00 00       	call   0x4020cb
401ac2:	8b cb                	mov    %ebx,%ecx
401ac4:	e8 99 06 00 00       	call   0x402162
401ac9:	8b 4d fc             	mov    -0x4(%ebp),%ecx
401acc:	5f                   	pop    %edi
401acd:	5e                   	pop    %esi
401ace:	33 cd                	xor    %ebp,%ecx
401ad0:	5b                   	pop    %ebx
401ad1:	e8 63 2c 00 00       	call   0x404739
401ad6:	c9                   	leave
401ad7:	c3                   	ret
401ad8:	e8 93 ff ff ff       	call   0x401a70
401add:	33 c0                	xor    %eax,%eax
401adf:	c3                   	ret
401ae0:	6a 18                	push   $0x18
401ae2:	b8 44 7d 41 00       	mov    $0x417d44,%eax
401ae7:	e8 76 43 00 00       	call   0x405e62
401aec:	8b f1                	mov    %ecx,%esi
401aee:	89 75 e8             	mov    %esi,-0x18(%ebp)
401af1:	56                   	push   %esi
401af2:	8d 4d dc             	lea    -0x24(%ebp),%ecx
401af5:	33 ff                	xor    %edi,%edi
401af7:	e8 7e 01 00 00       	call   0x401c7a
401afc:	89 7d fc             	mov    %edi,-0x4(%ebp)
401aff:	80 7d e0 00          	cmpb   $0x0,-0x20(%ebp)
401b03:	75 07                	jne    0x401b0c
401b05:	6a 04                	push   $0x4
401b07:	59                   	pop    %ecx
401b08:	8b d9                	mov    %ecx,%ebx
401b0a:	eb 5b                	jmp    0x401b67
401b0c:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
401b10:	8b 06                	mov    (%esi),%eax
401b12:	6a 0a                	push   $0xa
401b14:	8b 40 04             	mov    0x4(%eax),%eax
401b17:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
401b1b:	e8 1e 01 00 00       	call   0x401c3e
401b20:	6a 04                	push   $0x4
401b22:	8b df                	mov    %edi,%ebx
401b24:	59                   	pop    %ecx
401b25:	83 f8 ff             	cmp    $0xffffffff,%eax
401b28:	0f 44 d9             	cmove  %ecx,%ebx
401b2b:	eb 37                	jmp    0x401b64
401b2d:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401b30:	6a 04                	push   $0x4
401b32:	8b 01                	mov    (%ecx),%eax
401b34:	8b 70 04             	mov    0x4(%eax),%esi
401b37:	03 f1                	add    %ecx,%esi
401b39:	59                   	pop    %ecx
401b3a:	8b 56 0c             	mov    0xc(%esi),%edx
401b3d:	0b d1                	or     %ecx,%edx
401b3f:	8b c2                	mov    %edx,%eax
401b41:	0b c1                	or     %ecx,%eax
401b43:	83 7e 38 00          	cmpl   $0x0,0x38(%esi)
401b47:	6a 01                	push   $0x1
401b49:	0f 44 d0             	cmove  %eax,%edx
401b4c:	52                   	push   %edx
401b4d:	8b ce                	mov    %esi,%ecx
401b4f:	e8 12 fb ff ff       	call   0x401666
401b54:	b8 5a 1b 40 00       	mov    $0x401b5a,%eax
401b59:	c3                   	ret
401b5a:	8b 75 e8             	mov    -0x18(%ebp),%esi
401b5d:	33 ff                	xor    %edi,%edi
401b5f:	6a 04                	push   $0x4
401b61:	59                   	pop    %ecx
401b62:	8b df                	mov    %edi,%ebx
401b64:	89 7d fc             	mov    %edi,-0x4(%ebp)
401b67:	8b 06                	mov    (%esi),%eax
401b69:	8b 40 04             	mov    0x4(%eax),%eax
401b6c:	03 c6                	add    %esi,%eax
401b6e:	89 45 e4             	mov    %eax,-0x1c(%ebp)
401b71:	85 db                	test   %ebx,%ebx
401b73:	74 19                	je     0x401b8e
401b75:	8b 50 0c             	mov    0xc(%eax),%edx
401b78:	0b d3                	or     %ebx,%edx
401b7a:	8b c2                	mov    %edx,%eax
401b7c:	0b c1                	or     %ecx,%eax
401b7e:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
401b81:	57                   	push   %edi
401b82:	39 79 38             	cmp    %edi,0x38(%ecx)
401b85:	0f 44 d0             	cmove  %eax,%edx
401b88:	52                   	push   %edx
401b89:	e8 d8 fa ff ff       	call   0x401666
401b8e:	8d 4d dc             	lea    -0x24(%ebp),%ecx
401b91:	e8 43 01 00 00       	call   0x401cd9
401b96:	8b c6                	mov    %esi,%eax
401b98:	e8 39 42 00 00       	call   0x405dd6
401b9d:	c2 04 00             	ret    $0x4
401ba0:	55                   	push   %ebp
401ba1:	8b ec                	mov    %esp,%ebp
401ba3:	83 e4 f8             	and    $0xfffffff8,%esp
401ba6:	6a ff                	push   $0xffffffff
401ba8:	68 21 7d 41 00       	push   $0x417d21
401bad:	64 a1 00 00 00 00    	mov    %fs:0x0,%eax
401bb3:	50                   	push   %eax
401bb4:	83 ec 10             	sub    $0x10,%esp
401bb7:	56                   	push   %esi
401bb8:	a1 90 08 42 00       	mov    0x420890,%eax
401bbd:	33 c4                	xor    %esp,%eax
401bbf:	50                   	push   %eax
401bc0:	8d 44 24 18          	lea    0x18(%esp),%eax
401bc4:	64 a3 00 00 00 00    	mov    %eax,%fs:0x0
401bca:	8b f1                	mov    %ecx,%esi
401bcc:	8b 06                	mov    (%esi),%eax
401bce:	8b 40 04             	mov    0x4(%eax),%eax
401bd1:	83 7c 30 38 00       	cmpl   $0x0,0x38(%eax,%esi,1)
401bd6:	74 53                	je     0x401c2b
401bd8:	56                   	push   %esi
401bd9:	8d 4c 24 10          	lea    0x10(%esp),%ecx
401bdd:	e8 98 00 00 00       	call   0x401c7a
401be2:	83 64 24 20 00       	andl   $0x0,0x20(%esp)
401be7:	80 7c 24 10 00       	cmpb   $0x0,0x10(%esp)
401bec:	74 34                	je     0x401c22
401bee:	8b 06                	mov    (%esi),%eax
401bf0:	8b 40 04             	mov    0x4(%eax),%eax
401bf3:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
401bf7:	8b 01                	mov    (%ecx),%eax
401bf9:	ff 50 34             	call   *0x34(%eax)
401bfc:	83 f8 ff             	cmp    $0xffffffff,%eax
401bff:	75 21                	jne    0x401c22
401c01:	8b 06                	mov    (%esi),%eax
401c03:	6a 00                	push   $0x0
401c05:	8b 48 04             	mov    0x4(%eax),%ecx
401c08:	03 ce                	add    %esi,%ecx
401c0a:	8b 51 0c             	mov    0xc(%ecx),%edx
401c0d:	83 ca 04             	or     $0x4,%edx
401c10:	8b c2                	mov    %edx,%eax
401c12:	83 c8 04             	or     $0x4,%eax
401c15:	83 79 38 00          	cmpl   $0x0,0x38(%ecx)
401c19:	0f 44 d0             	cmove  %eax,%edx
401c1c:	52                   	push   %edx
401c1d:	e8 44 fa ff ff       	call   0x401666
401c22:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
401c26:	e8 ae 00 00 00       	call   0x401cd9
401c2b:	8b c6                	mov    %esi,%eax
401c2d:	8b 4c 24 18          	mov    0x18(%esp),%ecx
401c31:	64 89 0d 00 00 00 00 	mov    %ecx,%fs:0x0
401c38:	59                   	pop    %ecx
401c39:	5e                   	pop    %esi
401c3a:	8b e5                	mov    %ebp,%esp
401c3c:	5d                   	pop    %ebp
401c3d:	c3                   	ret
401c3e:	55                   	push   %ebp
401c3f:	8b ec                	mov    %esp,%ebp
401c41:	8b 41 20             	mov    0x20(%ecx),%eax
401c44:	33 d2                	xor    %edx,%edx
401c46:	39 10                	cmp    %edx,(%eax)
401c48:	74 05                	je     0x401c4f
401c4a:	8b 41 30             	mov    0x30(%ecx),%eax
401c4d:	8b 10                	mov    (%eax),%edx
401c4f:	85 d2                	test   %edx,%edx
401c51:	7e 19                	jle    0x401c6c
401c53:	8b 41 30             	mov    0x30(%ecx),%eax
401c56:	ff 08                	decl   (%eax)
401c58:	8b 49 20             	mov    0x20(%ecx),%ecx
401c5b:	8b 11                	mov    (%ecx),%edx
401c5d:	8d 42 01             	lea    0x1(%edx),%eax
401c60:	89 01                	mov    %eax,(%ecx)
401c62:	8a 45 08             	mov    0x8(%ebp),%al
401c65:	88 02                	mov    %al,(%edx)
401c67:	0f b6 c0             	movzbl %al,%eax
401c6a:	eb 0a                	jmp    0x401c76
401c6c:	0f b6 45 08          	movzbl 0x8(%ebp),%eax
401c70:	8b 11                	mov    (%ecx),%edx
401c72:	50                   	push   %eax
401c73:	ff 52 0c             	call   *0xc(%edx)
401c76:	5d                   	pop    %ebp
401c77:	c2 04 00             	ret    $0x4
401c7a:	6a 04                	push   $0x4
401c7c:	b8 ab 7c 41 00       	mov    $0x417cab,%eax
401c81:	e8 73 41 00 00       	call   0x405df9
401c86:	8b f9                	mov    %ecx,%edi
401c88:	89 7d f0             	mov    %edi,-0x10(%ebp)
401c8b:	8b 75 08             	mov    0x8(%ebp),%esi
401c8e:	89 37                	mov    %esi,(%edi)
401c90:	8b 06                	mov    (%esi),%eax
401c92:	8b 40 04             	mov    0x4(%eax),%eax
401c95:	8b 4c 30 38          	mov    0x38(%eax,%esi,1),%ecx
401c99:	85 c9                	test   %ecx,%ecx
401c9b:	74 05                	je     0x401ca2
401c9d:	8b 01                	mov    (%ecx),%eax
401c9f:	ff 50 04             	call   *0x4(%eax)
401ca2:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401ca6:	8b 06                	mov    (%esi),%eax
401ca8:	8b 48 04             	mov    0x4(%eax),%ecx
401cab:	83 7c 31 0c 00       	cmpl   $0x0,0xc(%ecx,%esi,1)
401cb0:	75 0d                	jne    0x401cbf
401cb2:	8b 4c 31 3c          	mov    0x3c(%ecx,%esi,1),%ecx
401cb6:	85 c9                	test   %ecx,%ecx
401cb8:	74 05                	je     0x401cbf
401cba:	e8 e1 fe ff ff       	call   0x401ba0
401cbf:	8b 06                	mov    (%esi),%eax
401cc1:	8b 40 04             	mov    0x4(%eax),%eax
401cc4:	83 7c 30 0c 00       	cmpl   $0x0,0xc(%eax,%esi,1)
401cc9:	0f 94 c0             	sete   %al
401ccc:	88 47 04             	mov    %al,0x4(%edi)
401ccf:	8b c7                	mov    %edi,%eax
401cd1:	e8 00 41 00 00       	call   0x405dd6
401cd6:	c2 04 00             	ret    $0x4
401cd9:	56                   	push   %esi
401cda:	8b f1                	mov    %ecx,%esi
401cdc:	e8 a6 22 00 00       	call   0x403f87
401ce1:	84 c0                	test   %al,%al
401ce3:	75 07                	jne    0x401cec
401ce5:	8b 0e                	mov    (%esi),%ecx
401ce7:	e8 17 00 00 00       	call   0x401d03
401cec:	8b 0e                	mov    (%esi),%ecx
401cee:	8b 01                	mov    (%ecx),%eax
401cf0:	8b 40 04             	mov    0x4(%eax),%eax
401cf3:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
401cf7:	85 c9                	test   %ecx,%ecx
401cf9:	74 06                	je     0x401d01
401cfb:	8b 01                	mov    (%ecx),%eax
401cfd:	5e                   	pop    %esi
401cfe:	ff 60 08             	jmp    *0x8(%eax)
401d01:	5e                   	pop    %esi
401d02:	c3                   	ret
401d03:	6a 04                	push   $0x4
401d05:	b8 fe 7c 41 00       	mov    $0x417cfe,%eax
401d0a:	e8 53 41 00 00       	call   0x405e62
401d0f:	8b f1                	mov    %ecx,%esi
401d11:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
401d15:	8b 06                	mov    (%esi),%eax
401d17:	8b 48 04             	mov    0x4(%eax),%ecx
401d1a:	83 7c 31 0c 00       	cmpl   $0x0,0xc(%ecx,%esi,1)
401d1f:	75 36                	jne    0x401d57
401d21:	f6 44 31 14 02       	testb  $0x2,0x14(%ecx,%esi,1)
401d26:	74 2f                	je     0x401d57
401d28:	8b 4c 31 38          	mov    0x38(%ecx,%esi,1),%ecx
401d2c:	8b 01                	mov    (%ecx),%eax
401d2e:	ff 50 34             	call   *0x34(%eax)
401d31:	83 f8 ff             	cmp    $0xffffffff,%eax
401d34:	75 21                	jne    0x401d57
401d36:	8b 06                	mov    (%esi),%eax
401d38:	6a 00                	push   $0x0
401d3a:	8b 48 04             	mov    0x4(%eax),%ecx
401d3d:	03 ce                	add    %esi,%ecx
401d3f:	8b 51 0c             	mov    0xc(%ecx),%edx
401d42:	83 ca 04             	or     $0x4,%edx
401d45:	8b c2                	mov    %edx,%eax
401d47:	83 c8 04             	or     $0x4,%eax
401d4a:	83 79 38 00          	cmpl   $0x0,0x38(%ecx)
401d4e:	0f 44 d0             	cmove  %eax,%edx
401d51:	52                   	push   %edx
401d52:	e8 0f f9 ff ff       	call   0x401666
401d57:	e8 7a 40 00 00       	call   0x405dd6
401d5c:	c3                   	ret
401d5d:	b8 57 1d 40 00       	mov    $0x401d57,%eax
401d62:	c3                   	ret
401d63:	8b 09                	mov    (%ecx),%ecx
401d65:	8b 01                	mov    (%ecx),%eax
401d67:	8b 40 04             	mov    0x4(%eax),%eax
401d6a:	8b 4c 08 38          	mov    0x38(%eax,%ecx,1),%ecx
401d6e:	85 c9                	test   %ecx,%ecx
401d70:	74 05                	je     0x401d77
401d72:	8b 01                	mov    (%ecx),%eax
401d74:	ff 60 08             	jmp    *0x8(%eax)
401d77:	c3                   	ret
401d78:	6a 2c                	push   $0x2c
401d7a:	b8 5b 7c 41 00       	mov    $0x417c5b,%eax
401d7f:	e8 de 40 00 00       	call   0x405e62
401d84:	33 ff                	xor    %edi,%edi
401d86:	8b f7                	mov    %edi,%esi
401d88:	bb 28 1a 42 00       	mov    $0x421a28,%ebx
401d8d:	68 50 d4 41 00       	push   $0x41d450
401d92:	89 5d dc             	mov    %ebx,-0x24(%ebp)
401d95:	89 75 e4             	mov    %esi,-0x1c(%ebp)
401d98:	89 75 d8             	mov    %esi,-0x28(%ebp)
401d9b:	e8 60 f2 ff ff       	call   0x401000
401da0:	8b d0                	mov    %eax,%edx
401da2:	a1 28 1a 42 00       	mov    0x421a28,%eax
401da7:	59                   	pop    %ecx
401da8:	8b 40 04             	mov    0x4(%eax),%eax
401dab:	89 55 e0             	mov    %edx,-0x20(%ebp)
401dae:	8b 88 48 1a 42 00    	mov    0x421a48(%eax),%ecx
401db4:	8b 80 4c 1a 42 00    	mov    0x421a4c(%eax),%eax
401dba:	3b c7                	cmp    %edi,%eax
401dbc:	7c 1c                	jl     0x401dda
401dbe:	7f 0e                	jg     0x401dce
401dc0:	3b cf                	cmp    %edi,%ecx
401dc2:	76 16                	jbe    0x401dda
401dc4:	3b c7                	cmp    %edi,%eax
401dc6:	7c 12                	jl     0x401dda
401dc8:	7f 04                	jg     0x401dce
401dca:	3b ca                	cmp    %edx,%ecx
401dcc:	76 0c                	jbe    0x401dda
401dce:	2b ca                	sub    %edx,%ecx
401dd0:	1b c7                	sbb    %edi,%eax
401dd2:	89 4d ec             	mov    %ecx,-0x14(%ebp)
401dd5:	89 45 e8             	mov    %eax,-0x18(%ebp)
401dd8:	eb 14                	jmp    0x401dee
401dda:	0f 57 c0             	xorps  %xmm0,%xmm0
401ddd:	66 0f 13 45 d0       	movlpd %xmm0,-0x30(%ebp)
401de2:	8b 45 d4             	mov    -0x2c(%ebp),%eax
401de5:	89 45 e8             	mov    %eax,-0x18(%ebp)
401de8:	8b 45 d0             	mov    -0x30(%ebp),%eax
401deb:	89 45 ec             	mov    %eax,-0x14(%ebp)
401dee:	53                   	push   %ebx
401def:	8d 4d c8             	lea    -0x38(%ebp),%ecx
401df2:	e8 83 fe ff ff       	call   0x401c7a
401df7:	89 7d fc             	mov    %edi,-0x4(%ebp)
401dfa:	80 7d cc 00          	cmpb   $0x0,-0x34(%ebp)
401dfe:	75 08                	jne    0x401e08
401e00:	6a 04                	push   $0x4
401e02:	59                   	pop    %ecx
401e03:	e9 22 01 00 00       	jmp    0x401f2a
401e08:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
401e0c:	a1 28 1a 42 00       	mov    0x421a28,%eax
401e11:	8b 40 04             	mov    0x4(%eax),%eax
401e14:	8b 80 3c 1a 42 00    	mov    0x421a3c(%eax),%eax
401e1a:	25 c0 01 00 00       	and    $0x1c0,%eax
401e1f:	83 f8 40             	cmp    $0x40,%eax
401e22:	74 3a                	je     0x401e5e
401e24:	8b 45 ec             	mov    -0x14(%ebp),%eax
401e27:	8b 4d e8             	mov    -0x18(%ebp),%ecx
401e2a:	3b cf                	cmp    %edi,%ecx
401e2c:	7c 2c                	jl     0x401e5a
401e2e:	7f 04                	jg     0x401e34
401e30:	3b c7                	cmp    %edi,%eax
401e32:	76 26                	jbe    0x401e5a
401e34:	8b 03                	mov    (%ebx),%eax
401e36:	8b 48 04             	mov    0x4(%eax),%ecx
401e39:	8a 44 19 40          	mov    0x40(%ecx,%ebx,1),%al
401e3d:	8b 4c 19 38          	mov    0x38(%ecx,%ebx,1),%ecx
401e41:	88 45 d4             	mov    %al,-0x2c(%ebp)
401e44:	ff 75 d4             	push   -0x2c(%ebp)
401e47:	e8 f2 fd ff ff       	call   0x401c3e
401e4c:	83 f8 ff             	cmp    $0xffffffff,%eax
401e4f:	75 72                	jne    0x401ec3
401e51:	83 ce 04             	or     $0x4,%esi
401e54:	89 75 e4             	mov    %esi,-0x1c(%ebp)
401e57:	89 75 d8             	mov    %esi,-0x28(%ebp)
401e5a:	85 f6                	test   %esi,%esi
401e5c:	75 53                	jne    0x401eb1
401e5e:	8b 03                	mov    (%ebx),%eax
401e60:	57                   	push   %edi
401e61:	8b 40 04             	mov    0x4(%eax),%eax
401e64:	ff 75 e0             	push   -0x20(%ebp)
401e67:	8b 4c 18 38          	mov    0x38(%eax,%ebx,1),%ecx
401e6b:	68 50 d4 41 00       	push   $0x41d450
401e70:	8b 01                	mov    (%ecx),%eax
401e72:	ff 50 24             	call   *0x24(%eax)
401e75:	3b 45 e0             	cmp    -0x20(%ebp),%eax
401e78:	75 74                	jne    0x401eee
401e7a:	3b d7                	cmp    %edi,%edx