4057f6:	8d 7d b0             	lea    -0x50(%ebp),%edi
4057f9:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4057fa:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4057fb:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4057fc:	a5                   	movsl  %ds:(%esi),%es:(%edi)
4057fd:	8b 75 dc             	mov    -0x24(%ebp),%esi
405800:	8b 7d e0             	mov    -0x20(%ebp),%edi
405803:	85 f6                	test   %esi,%esi
405805:	7e 24                	jle    0x40582b
405807:	52                   	push   %edx
405808:	ff 37                	push   (%edi)
40580a:	8d 45 b0             	lea    -0x50(%ebp),%eax
40580d:	50                   	push   %eax
40580e:	e8 a9 02 00 00       	call   0x405abc
405813:	83 c4 0c             	add    $0xc,%esp
405816:	85 c0                	test   %eax,%eax
405818:	75 22                	jne    0x40583c
40581a:	8b 53 1c             	mov    0x1c(%ebx),%edx
40581d:	4e                   	dec    %esi
40581e:	83 c7 04             	add    $0x4,%edi
405821:	85 f6                	test   %esi,%esi
405823:	7f e2                	jg     0x405807
405825:	8b 4d f0             	mov    -0x10(%ebp),%ecx
405828:	8b 45 ec             	mov    -0x14(%ebp),%eax
40582b:	41                   	inc    %ecx
40582c:	83 c0 10             	add    $0x10,%eax
40582f:	89 4d f0             	mov    %ecx,-0x10(%ebp)
405832:	89 45 ec             	mov    %eax,-0x14(%ebp)
405835:	3b 4d a8             	cmp    -0x58(%ebp),%ecx
405838:	75 ba                	jne    0x4057f4
40583a:	eb 2b                	jmp    0x405867
40583c:	ff 75 1c             	push   0x1c(%ebp)
40583f:	8d 45 9c             	lea    -0x64(%ebp),%eax
405842:	ff 75 e8             	push   -0x18(%ebp)
405845:	ff 75 24             	push   0x24(%ebp)
405848:	ff 75 20             	push   0x20(%ebp)
40584b:	50                   	push   %eax
40584c:	ff 37                	push   (%edi)
40584e:	8d 45 b0             	lea    -0x50(%ebp),%eax
405851:	50                   	push   %eax
405852:	ff 75 18             	push   0x18(%ebp)
405855:	ff 75 14             	push   0x14(%ebp)
405858:	ff 75 fc             	push   -0x4(%ebp)
40585b:	ff 75 0c             	push   0xc(%ebp)
40585e:	53                   	push   %ebx
40585f:	e8 fd fc ff ff       	call   0x405561
405864:	83 c4 30             	add    $0x30,%esp
405867:	8b 55 f4             	mov    -0xc(%ebp),%edx
40586a:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
40586d:	42                   	inc    %edx
40586e:	8b 45 d8             	mov    -0x28(%ebp),%eax
405871:	83 c1 14             	add    $0x14,%ecx
405874:	89 55 f4             	mov    %edx,-0xc(%ebp)
405877:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
40587a:	3b 55 cc             	cmp    -0x34(%ebp),%edx
40587d:	0f 82 28 ff ff ff    	jb     0x4057ab
405883:	8b 7d 18             	mov    0x18(%ebp),%edi
405886:	8b 75 24             	mov    0x24(%ebp),%esi
405889:	80 7d 1c 00          	cmpb   $0x0,0x1c(%ebp)
40588d:	74 0a                	je     0x405899
40588f:	6a 01                	push   $0x1
405891:	53                   	push   %ebx
405892:	e8 19 f0 ff ff       	call   0x4048b0
405897:	59                   	pop    %ecx
405898:	59                   	pop    %ecx
405899:	8b 07                	mov    (%edi),%eax
40589b:	25 ff ff ff 1f       	and    $0x1fffffff,%eax
4058a0:	3d 21 05 93 19       	cmp    $0x19930521,%eax
4058a5:	72 68                	jb     0x40590f
4058a7:	8b 47 20             	mov    0x20(%edi),%eax
4058aa:	c1 e8 02             	shr    $0x2,%eax
4058ad:	83 7f 1c 00          	cmpl   $0x0,0x1c(%edi)
4058b1:	75 0c                	jne    0x4058bf
4058b3:	a8 01                	test   $0x1,%al
4058b5:	74 58                	je     0x40590f
4058b7:	83 7d 20 00          	cmpl   $0x0,0x20(%ebp)
4058bb:	75 52                	jne    0x40590f
4058bd:	eb 04                	jmp    0x4058c3
4058bf:	a8 01                	test   $0x1,%al
4058c1:	74 15                	je     0x4058d8
4058c3:	e8 d4 f9 ff ff       	call   0x40529c
4058c8:	89 58 10             	mov    %ebx,0x10(%eax)
4058cb:	e8 cc f9 ff ff       	call   0x40529c
4058d0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4058d3:	89 48 14             	mov    %ecx,0x14(%eax)
4058d6:	eb 47                	jmp    0x40591f
4058d8:	ff 77 1c             	push   0x1c(%edi)
4058db:	53                   	push   %ebx
4058dc:	e8 1e 07 00 00       	call   0x405fff
4058e1:	59                   	pop    %ecx
4058e2:	59                   	pop    %ecx
4058e3:	84 c0                	test   %al,%al
4058e5:	74 5d                	je     0x405944
4058e7:	eb 26                	jmp    0x40590f
4058e9:	39 47 0c             	cmp    %eax,0xc(%edi)
4058ec:	76 21                	jbe    0x40590f
4058ee:	38 45 1c             	cmp    %al,0x1c(%ebp)
4058f1:	0f 85 89 00 00 00    	jne    0x405980
4058f7:	ff 75 24             	push   0x24(%ebp)
4058fa:	ff 75 20             	push   0x20(%ebp)
4058fd:	51                   	push   %ecx
4058fe:	57                   	push   %edi
4058ff:	ff 75 14             	push   0x14(%ebp)
405902:	52                   	push   %edx
405903:	ff 75 0c             	push   0xc(%ebp)
405906:	53                   	push   %ebx
405907:	e8 7a 00 00 00       	call   0x405986
40590c:	83 c4 20             	add    $0x20,%esp
40590f:	e8 88 f9 ff ff       	call   0x40529c
405914:	83 78 1c 00          	cmpl   $0x0,0x1c(%eax)
405918:	75 66                	jne    0x405980
40591a:	5f                   	pop    %edi
40591b:	5e                   	pop    %esi
40591c:	5b                   	pop    %ebx
40591d:	c9                   	leave
40591e:	c3                   	ret
40591f:	e8 ca 4b 00 00       	call   0x40a4ee
405924:	6a 01                	push   $0x1
405926:	53                   	push   %ebx
405927:	e8 84 ef ff ff       	call   0x4048b0
40592c:	59                   	pop    %ecx
40592d:	59                   	pop    %ecx
40592e:	8d 4d c4             	lea    -0x3c(%ebp),%ecx
405931:	e8 3a 03 00 00       	call   0x405c70
405936:	68 e4 fd 41 00       	push   $0x41fde4
40593b:	8d 45 c4             	lea    -0x3c(%ebp),%eax
40593e:	50                   	push   %eax
40593f:	e8 86 f2 ff ff       	call   0x404bca
405944:	e8 53 f9 ff ff       	call   0x40529c
405949:	89 58 10             	mov    %ebx,0x10(%eax)
40594c:	e8 4b f9 ff ff       	call   0x40529c
405951:	8b 4d fc             	mov    -0x4(%ebp),%ecx
405954:	89 48 14             	mov    %ecx,0x14(%eax)
405957:	85 f6                	test   %esi,%esi
405959:	75 03                	jne    0x40595e
40595b:	8b 75 0c             	mov    0xc(%ebp),%esi
40595e:	53                   	push   %ebx
40595f:	56                   	push   %esi
405960:	e8 3f f5 ff ff       	call   0x404ea4
405965:	57                   	push   %edi
405966:	ff 75 14             	push   0x14(%ebp)
405969:	ff 75 0c             	push   0xc(%ebp)
40596c:	e8 8e 05 00 00       	call   0x405eff
405971:	57                   	push   %edi
405972:	e8 45 07 00 00       	call   0x4060bc
405977:	83 c4 10             	add    $0x10,%esp
40597a:	50                   	push   %eax
40597b:	e8 f6 04 00 00       	call   0x405e76
405980:	e8 a5 4b 00 00       	call   0x40a52a
405985:	cc                   	int3
405986:	55                   	push   %ebp
405987:	8b ec                	mov    %esp,%ebp
405989:	83 ec 38             	sub    $0x38,%esp
40598c:	53                   	push   %ebx
40598d:	8b 5d 08             	mov    0x8(%ebp),%ebx
405990:	81 3b 03 00 00 80    	cmpl   $0x80000003,(%ebx)
405996:	0f 84 17 01 00 00    	je     0x405ab3
40599c:	56                   	push   %esi
40599d:	57                   	push   %edi
40599e:	e8 f9 f8 ff ff       	call   0x40529c
4059a3:	33 ff                	xor    %edi,%edi
4059a5:	39 78 08             	cmp    %edi,0x8(%eax)
4059a8:	74 46                	je     0x4059f0
4059aa:	57                   	push   %edi
4059ab:	ff 15 8c 90 41 00    	call   *0x41908c
4059b1:	8b f0                	mov    %eax,%esi
4059b3:	e8 e4 f8 ff ff       	call   0x40529c
4059b8:	39 70 08             	cmp    %esi,0x8(%eax)
4059bb:	74 33                	je     0x4059f0
4059bd:	81 3b 4d 4f 43 e0    	cmpl   $0xe0434f4d,(%ebx)
4059c3:	74 2b                	je     0x4059f0
4059c5:	81 3b 52 43 43 e0    	cmpl   $0xe0434352,(%ebx)
4059cb:	74 23                	je     0x4059f0
4059cd:	ff 75 24             	push   0x24(%ebp)
4059d0:	ff 75 20             	push   0x20(%ebp)
4059d3:	ff 75 18             	push   0x18(%ebp)
4059d6:	ff 75 14             	push   0x14(%ebp)
4059d9:	ff 75 10             	push   0x10(%ebp)
4059dc:	ff 75 0c             	push   0xc(%ebp)
4059df:	53                   	push   %ebx
4059e0:	e8 9f f3 ff ff       	call   0x404d84
4059e5:	83 c4 1c             	add    $0x1c,%esp
4059e8:	85 c0                	test   %eax,%eax
4059ea:	0f 85 c1 00 00 00    	jne    0x405ab1
4059f0:	8b 45 18             	mov    0x18(%ebp),%eax
4059f3:	89 45 ec             	mov    %eax,-0x14(%ebp)
4059f6:	89 7d f0             	mov    %edi,-0x10(%ebp)
4059f9:	39 78 0c             	cmp    %edi,0xc(%eax)
4059fc:	0f 86 b4 00 00 00    	jbe    0x405ab6
405a02:	ff 75 20             	push   0x20(%ebp)
405a05:	50                   	push   %eax
405a06:	ff 75 14             	push   0x14(%ebp)
405a09:	8d 45 ec             	lea    -0x14(%ebp),%eax
405a0c:	ff 75 1c             	push   0x1c(%ebp)
405a0f:	50                   	push   %eax
405a10:	8d 45 dc             	lea    -0x24(%ebp),%eax
405a13:	50                   	push   %eax
405a14:	e8 9f f2 ff ff       	call   0x404cb8
405a19:	8b 55 e0             	mov    -0x20(%ebp),%edx
405a1c:	83 c4 18             	add    $0x18,%esp
405a1f:	8b 45 dc             	mov    -0x24(%ebp),%eax
405a22:	89 45 f4             	mov    %eax,-0xc(%ebp)
405a25:	89 55 fc             	mov    %edx,-0x4(%ebp)
405a28:	3b 55 e8             	cmp    -0x18(%ebp),%edx
405a2b:	0f 83 80 00 00 00    	jae    0x405ab1
405a31:	6b ca 14             	imul   $0x14,%edx,%ecx
405a34:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405a37:	8b 00                	mov    (%eax),%eax
405a39:	8d 7d c8             	lea    -0x38(%ebp),%edi
405a3c:	6a 05                	push   $0x5
405a3e:	8b 70 10             	mov    0x10(%eax),%esi
405a41:	8b 45 1c             	mov    0x1c(%ebp),%eax
405a44:	03 f1                	add    %ecx,%esi
405a46:	59                   	pop    %ecx
405a47:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
405a49:	39 45 c8             	cmp    %eax,-0x38(%ebp)
405a4c:	7f 4e                	jg     0x405a9c
405a4e:	3b 45 cc             	cmp    -0x34(%ebp),%eax
405a51:	7f 49                	jg     0x405a9c
405a53:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
405a56:	8b 45 d8             	mov    -0x28(%ebp),%eax
405a59:	c1 e1 04             	shl    $0x4,%ecx
405a5c:	83 c0 f0             	add    $0xfffffff0,%eax
405a5f:	03 c1                	add    %ecx,%eax
405a61:	8b 48 04             	mov    0x4(%eax),%ecx
405a64:	85 c9                	test   %ecx,%ecx
405a66:	74 06                	je     0x405a6e
405a68:	80 79 08 00          	cmpb   $0x0,0x8(%ecx)
405a6c:	75 2e                	jne    0x405a9c
405a6e:	f6 00 40             	testb  $0x40,(%eax)
405a71:	75 29                	jne    0x405a9c
405a73:	6a 00                	push   $0x0
405a75:	6a 01                	push   $0x1
405a77:	ff 75 24             	push   0x24(%ebp)
405a7a:	8d 4d c8             	lea    -0x38(%ebp),%ecx
405a7d:	ff 75 20             	push   0x20(%ebp)
405a80:	51                   	push   %ecx
405a81:	6a 00                	push   $0x0
405a83:	50                   	push   %eax
405a84:	ff 75 18             	push   0x18(%ebp)
405a87:	ff 75 14             	push   0x14(%ebp)
405a8a:	ff 75 10             	push   0x10(%ebp)
405a8d:	ff 75 0c             	push   0xc(%ebp)
405a90:	53                   	push   %ebx
405a91:	e8 cb fa ff ff       	call   0x405561
405a96:	8b 55 fc             	mov    -0x4(%ebp),%edx
405a99:	83 c4 30             	add    $0x30,%esp
405a9c:	8b 4d f8             	mov    -0x8(%ebp),%ecx
405a9f:	42                   	inc    %edx
405aa0:	8b 45 f4             	mov    -0xc(%ebp),%eax
405aa3:	83 c1 14             	add    $0x14,%ecx
405aa6:	89 55 fc             	mov    %edx,-0x4(%ebp)
405aa9:	89 4d f8             	mov    %ecx,-0x8(%ebp)
405aac:	3b 55 e8             	cmp    -0x18(%ebp),%edx
405aaf:	72 86                	jb     0x405a37
405ab1:	5f                   	pop    %edi
405ab2:	5e                   	pop    %esi
405ab3:	5b                   	pop    %ebx
405ab4:	c9                   	leave
405ab5:	c3                   	ret
405ab6:	e8 6f 4a 00 00       	call   0x40a52a
405abb:	cc                   	int3
405abc:	55                   	push   %ebp
405abd:	8b ec                	mov    %esp,%ebp
405abf:	8b 55 08             	mov    0x8(%ebp),%edx
405ac2:	53                   	push   %ebx
405ac3:	56                   	push   %esi
405ac4:	57                   	push   %edi
405ac5:	8b 42 04             	mov    0x4(%edx),%eax
405ac8:	85 c0                	test   %eax,%eax
405aca:	74 76                	je     0x405b42
405acc:	8d 48 08             	lea    0x8(%eax),%ecx
405acf:	80 39 00             	cmpb   $0x0,(%ecx)
405ad2:	74 6e                	je     0x405b42
405ad4:	f6 02 80             	testb  $0x80,(%edx)
405ad7:	8b 7d 0c             	mov    0xc(%ebp),%edi
405ada:	74 05                	je     0x405ae1
405adc:	f6 07 10             	testb  $0x10,(%edi)
405adf:	75 61                	jne    0x405b42
405ae1:	8b 5f 04             	mov    0x4(%edi),%ebx
405ae4:	33 f6                	xor    %esi,%esi
405ae6:	3b c3                	cmp    %ebx,%eax
405ae8:	74 30                	je     0x405b1a
405aea:	8d 43 08             	lea    0x8(%ebx),%eax
405aed:	8a 19                	mov    (%ecx),%bl
405aef:	3a 18                	cmp    (%eax),%bl
405af1:	75 1a                	jne    0x405b0d
405af3:	84 db                	test   %bl,%bl
405af5:	74 12                	je     0x405b09
405af7:	8a 59 01             	mov    0x1(%ecx),%bl
405afa:	3a 58 01             	cmp    0x1(%eax),%bl
405afd:	75 0e                	jne    0x405b0d
405aff:	83 c1 02             	add    $0x2,%ecx
405b02:	83 c0 02             	add    $0x2,%eax
405b05:	84 db                	test   %bl,%bl
405b07:	75 e4                	jne    0x405aed
405b09:	8b c6                	mov    %esi,%eax
405b0b:	eb 05                	jmp    0x405b12
405b0d:	1b c0                	sbb    %eax,%eax
405b0f:	83 c8 01             	or     $0x1,%eax
405b12:	85 c0                	test   %eax,%eax
405b14:	74 04                	je     0x405b1a
405b16:	33 c0                	xor    %eax,%eax
405b18:	eb 2b                	jmp    0x405b45
405b1a:	f6 07 02             	testb  $0x2,(%edi)
405b1d:	74 05                	je     0x405b24
405b1f:	f6 02 08             	testb  $0x8,(%edx)
405b22:	74 1a                	je     0x405b3e
405b24:	8b 45 10             	mov    0x10(%ebp),%eax
405b27:	f6 00 01             	testb  $0x1,(%eax)
405b2a:	74 05                	je     0x405b31
405b2c:	f6 02 01             	testb  $0x1,(%edx)
405b2f:	74 0d                	je     0x405b3e
405b31:	f6 00 02             	testb  $0x2,(%eax)
405b34:	74 05                	je     0x405b3b
405b36:	f6 02 02             	testb  $0x2,(%edx)
405b39:	74 03                	je     0x405b3e
405b3b:	33 f6                	xor    %esi,%esi
405b3d:	46                   	inc    %esi
405b3e:	8b c6                	mov    %esi,%eax
405b40:	eb 03                	jmp    0x405b45
405b42:	33 c0                	xor    %eax,%eax
405b44:	40                   	inc    %eax
405b45:	5f                   	pop    %edi
405b46:	5e                   	pop    %esi
405b47:	5b                   	pop    %ebx
405b48:	5d                   	pop    %ebp
405b49:	c3                   	ret
405b4a:	55                   	push   %ebp
405b4b:	8b ec                	mov    %esp,%ebp
405b4d:	53                   	push   %ebx
405b4e:	56                   	push   %esi
405b4f:	57                   	push   %edi
405b50:	ff 75 10             	push   0x10(%ebp)
405b53:	e8 c4 05 00 00       	call   0x40611c
405b58:	59                   	pop    %ecx
405b59:	e8 3e f7 ff ff       	call   0x40529c
405b5e:	8b 4d 18             	mov    0x18(%ebp),%ecx
405b61:	33 f6                	xor    %esi,%esi
405b63:	8b 55 08             	mov    0x8(%ebp),%edx
405b66:	bb ff ff ff 1f       	mov    $0x1fffffff,%ebx
405b6b:	bf 22 05 93 19       	mov    $0x19930522,%edi
405b70:	39 70 20             	cmp    %esi,0x20(%eax)
405b73:	75 22                	jne    0x405b97
405b75:	81 3a 63 73 6d e0    	cmpl   $0xe06d7363,(%edx)
405b7b:	74 1a                	je     0x405b97
405b7d:	81 3a 26 00 00 80    	cmpl   $0x80000026,(%edx)
405b83:	74 12                	je     0x405b97
405b85:	8b 01                	mov    (%ecx),%eax
405b87:	23 c3                	and    %ebx,%eax