40a893:	3b c7                	cmp    %edi,%eax
40a895:	74 1c                	je     0x40a8b3
40a897:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
40a89d:	eb 11                	jmp    0x40a8b0
40a89f:	50                   	push   %eax
40a8a0:	e8 aa 04 00 00       	call   0x40ad4f
40a8a5:	3b c7                	cmp    %edi,%eax
40a8a7:	59                   	pop    %ecx
40a8a8:	74 09                	je     0x40a8b3
40a8aa:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40a8b0:	83 c0 08             	add    $0x8,%eax
40a8b3:	89 45 f8             	mov    %eax,-0x8(%ebp)
40a8b6:	eb 03                	jmp    0x40a8bb
40a8b8:	89 7d f8             	mov    %edi,-0x8(%ebp)
40a8bb:	39 7d f8             	cmp    %edi,-0x8(%ebp)
40a8be:	0f 84 ed fe ff ff    	je     0x40a7b1
40a8c4:	56                   	push   %esi
40a8c5:	57                   	push   %edi
40a8c6:	ff 75 f8             	push   -0x8(%ebp)
40a8c9:	e8 82 b2 ff ff       	call   0x405b50
40a8ce:	83 c4 0c             	add    $0xc,%esp
40a8d1:	57                   	push   %edi
40a8d2:	57                   	push   %edi
40a8d3:	56                   	push   %esi
40a8d4:	ff 75 f8             	push   -0x8(%ebp)
40a8d7:	ff 75 14             	push   0x14(%ebp)
40a8da:	ff 75 10             	push   0x10(%ebp)
40a8dd:	57                   	push   %edi
40a8de:	ff 75 1c             	push   0x1c(%ebp)
40a8e1:	ff d3                	call   *%ebx
40a8e3:	85 c0                	test   %eax,%eax
40a8e5:	0f 84 b3 00 00 00    	je     0x40a99e
40a8eb:	8d 46 01             	lea    0x1(%esi),%eax
40a8ee:	3b c7                	cmp    %edi,%eax
40a8f0:	7e 44                	jle    0x40a936
40a8f2:	3d f0 ff ff 7f       	cmp    $0x7ffffff0,%eax
40a8f7:	77 3d                	ja     0x40a936
40a8f9:	8d 44 36 0a          	lea    0xa(%esi,%esi,1),%eax
40a8fd:	3d 00 04 00 00       	cmp    $0x400,%eax
40a902:	77 1a                	ja     0x40a91e
40a904:	e8 47 5d 00 00       	call   0x410650
40a909:	8b dc                	mov    %esp,%ebx
40a90b:	3b df                	cmp    %edi,%ebx
40a90d:	0f 84 8b 00 00 00    	je     0x40a99e
40a913:	c7 03 cc cc 00 00    	movl   $0xcccc,(%ebx)
40a919:	83 c3 08             	add    $0x8,%ebx
40a91c:	eb 1a                	jmp    0x40a938
40a91e:	50                   	push   %eax
40a91f:	e8 2b 04 00 00       	call   0x40ad4f
40a924:	3b c7                	cmp    %edi,%eax
40a926:	59                   	pop    %ecx
40a927:	74 09                	je     0x40a932
40a929:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40a92f:	83 c0 08             	add    $0x8,%eax
40a932:	8b d8                	mov    %eax,%ebx
40a934:	eb 02                	jmp    0x40a938
40a936:	33 db                	xor    %ebx,%ebx
40a938:	3b df                	cmp    %edi,%ebx
40a93a:	74 62                	je     0x40a99e
40a93c:	39 7d 20             	cmp    %edi,0x20(%ebp)
40a93f:	75 0b                	jne    0x40a94c
40a941:	8b 45 08             	mov    0x8(%ebp),%eax
40a944:	8b 00                	mov    (%eax),%eax
40a946:	8b 40 14             	mov    0x14(%eax),%eax
40a949:	89 45 20             	mov    %eax,0x20(%ebp)
40a94c:	8b 7d 14             	mov    0x14(%ebp),%edi
40a94f:	53                   	push   %ebx
40a950:	ff 75 f0             	push   -0x10(%ebp)
40a953:	03 ff                	add    %edi,%edi
40a955:	ff 75 f8             	push   -0x8(%ebp)
40a958:	8d 34 1f             	lea    (%edi,%ebx,1),%esi
40a95b:	ff 75 0c             	push   0xc(%ebp)
40a95e:	66 81 0e ff ff       	orw    $0xffff,(%esi)
40a963:	ff 75 20             	push   0x20(%ebp)
40a966:	66 81 4e fe ff ff    	orw    $0xffff,-0x2(%esi)
40a96c:	ff 15 e4 70 41 00    	call   *0x4170e4
40a972:	66 81 7e fe ff ff    	cmpw   $0xffff,-0x2(%esi)
40a978:	89 45 f4             	mov    %eax,-0xc(%ebp)
40a97b:	74 16                	je     0x40a993
40a97d:	66 81 3e ff ff       	cmpw   $0xffff,(%esi)
40a982:	75 0f                	jne    0x40a993
40a984:	57                   	push   %edi
40a985:	53                   	push   %ebx
40a986:	ff 75 18             	push   0x18(%ebp)
40a989:	e8 92 05 00 00       	call   0x40af20
40a98e:	83 c4 0c             	add    $0xc,%esp
40a991:	eb 04                	jmp    0x40a997
40a993:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40a997:	53                   	push   %ebx
40a998:	e8 0c e0 ff ff       	call   0x4089a9
40a99d:	59                   	pop    %ecx
40a99e:	ff 75 f8             	push   -0x8(%ebp)
40a9a1:	e8 03 e0 ff ff       	call   0x4089a9
40a9a6:	8b 45 f4             	mov    -0xc(%ebp),%eax
40a9a9:	59                   	pop    %ecx
40a9aa:	8d 65 e4             	lea    -0x1c(%ebp),%esp
40a9ad:	5f                   	pop    %edi
40a9ae:	5e                   	pop    %esi
40a9af:	5b                   	pop    %ebx
40a9b0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40a9b3:	33 cd                	xor    %ebp,%ecx
40a9b5:	e8 7b b5 ff ff       	call   0x405f35
40a9ba:	c9                   	leave
40a9bb:	c3                   	ret
40a9bc:	55                   	push   %ebp
40a9bd:	8b ec                	mov    %esp,%ebp
40a9bf:	83 ec 10             	sub    $0x10,%esp
40a9c2:	ff 75 08             	push   0x8(%ebp)
40a9c5:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40a9c8:	e8 f7 df ff ff       	call   0x4089c4
40a9cd:	ff 75 20             	push   0x20(%ebp)
40a9d0:	8d 45 f0             	lea    -0x10(%ebp),%eax
40a9d3:	ff 75 1c             	push   0x1c(%ebp)
40a9d6:	ff 75 18             	push   0x18(%ebp)
40a9d9:	ff 75 14             	push   0x14(%ebp)
40a9dc:	ff 75 10             	push   0x10(%ebp)
40a9df:	ff 75 0c             	push   0xc(%ebp)
40a9e2:	50                   	push   %eax
40a9e3:	e8 b0 fd ff ff       	call   0x40a798
40a9e8:	83 c4 1c             	add    $0x1c,%esp
40a9eb:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40a9ef:	74 07                	je     0x40a9f8
40a9f1:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40a9f4:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40a9f8:	c9                   	leave
40a9f9:	c3                   	ret
40a9fa:	55                   	push   %ebp
40a9fb:	8b ec                	mov    %esp,%ebp
40a9fd:	83 ec 10             	sub    $0x10,%esp
40aa00:	a1 20 c5 41 00       	mov    0x41c520,%eax
40aa05:	33 c5                	xor    %ebp,%eax
40aa07:	89 45 fc             	mov    %eax,-0x4(%ebp)
40aa0a:	53                   	push   %ebx
40aa0b:	56                   	push   %esi
40aa0c:	8b 35 dc 70 41 00    	mov    0x4170dc,%esi
40aa12:	33 db                	xor    %ebx,%ebx
40aa14:	39 1d 0c da 41 00    	cmp    %ebx,0x41da0c
40aa1a:	57                   	push   %edi
40aa1b:	8b f9                	mov    %ecx,%edi
40aa1d:	75 36                	jne    0x40aa55
40aa1f:	53                   	push   %ebx
40aa20:	53                   	push   %ebx
40aa21:	6a 01                	push   $0x1
40aa23:	68 88 76 41 00       	push   $0x417688
40aa28:	68 00 01 00 00       	push   $0x100
40aa2d:	53                   	push   %ebx
40aa2e:	ff d6                	call   *%esi
40aa30:	85 c0                	test   %eax,%eax
40aa32:	74 0c                	je     0x40aa40
40aa34:	c7 05 0c da 41 00 01 	movl   $0x1,0x41da0c
40aa3b:	00 00 00
40aa3e:	eb 15                	jmp    0x40aa55
40aa40:	ff 15 b0 70 41 00    	call   *0x4170b0
40aa46:	83 f8 78             	cmp    $0x78,%eax
40aa49:	75 0a                	jne    0x40aa55
40aa4b:	c7 05 0c da 41 00 02 	movl   $0x2,0x41da0c
40aa52:	00 00 00
40aa55:	39 5d 14             	cmp    %ebx,0x14(%ebp)
40aa58:	7e 1d                	jle    0x40aa77
40aa5a:	8b 4d 14             	mov    0x14(%ebp),%ecx
40aa5d:	8b 45 10             	mov    0x10(%ebp),%eax
40aa60:	49                   	dec    %ecx
40aa61:	66 39 18             	cmp    %bx,(%eax)
40aa64:	74 09                	je     0x40aa6f
40aa66:	40                   	inc    %eax
40aa67:	40                   	inc    %eax
40aa68:	3b cb                	cmp    %ebx,%ecx
40aa6a:	75 f4                	jne    0x40aa60
40aa6c:	83 c9 ff             	or     $0xffffffff,%ecx
40aa6f:	83 c8 ff             	or     $0xffffffff,%eax
40aa72:	2b c1                	sub    %ecx,%eax
40aa74:	01 45 14             	add    %eax,0x14(%ebp)
40aa77:	a1 0c da 41 00       	mov    0x41da0c,%eax
40aa7c:	83 f8 01             	cmp    $0x1,%eax
40aa7f:	75 19                	jne    0x40aa9a
40aa81:	ff 75 1c             	push   0x1c(%ebp)
40aa84:	ff 75 18             	push   0x18(%ebp)
40aa87:	ff 75 14             	push   0x14(%ebp)
40aa8a:	ff 75 10             	push   0x10(%ebp)
40aa8d:	ff 75 0c             	push   0xc(%ebp)
40aa90:	ff 75 08             	push   0x8(%ebp)
40aa93:	ff d6                	call   *%esi
40aa95:	e9 af 01 00 00       	jmp    0x40ac49
40aa9a:	83 f8 02             	cmp    $0x2,%eax
40aa9d:	74 04                	je     0x40aaa3
40aa9f:	3b c3                	cmp    %ebx,%eax
40aaa1:	75 52                	jne    0x40aaf5
40aaa3:	39 5d 08             	cmp    %ebx,0x8(%ebp)
40aaa6:	89 5d f4             	mov    %ebx,-0xc(%ebp)
40aaa9:	75 08                	jne    0x40aab3
40aaab:	8b 07                	mov    (%edi),%eax
40aaad:	8b 40 14             	mov    0x14(%eax),%eax
40aab0:	89 45 08             	mov    %eax,0x8(%ebp)
40aab3:	39 5d 20             	cmp    %ebx,0x20(%ebp)
40aab6:	75 08                	jne    0x40aac0
40aab8:	8b 07                	mov    (%edi),%eax
40aaba:	8b 40 04             	mov    0x4(%eax),%eax
40aabd:	89 45 20             	mov    %eax,0x20(%ebp)
40aac0:	ff 75 08             	push   0x8(%ebp)
40aac3:	e8 86 59 00 00       	call   0x41044e
40aac8:	39 45 20             	cmp    %eax,0x20(%ebp)
40aacb:	59                   	pop    %ecx
40aacc:	74 08                	je     0x40aad6
40aace:	83 f8 ff             	cmp    $0xffffffff,%eax
40aad1:	74 03                	je     0x40aad6
40aad3:	89 45 20             	mov    %eax,0x20(%ebp)
40aad6:	8b 35 90 70 41 00    	mov    0x417090,%esi
40aadc:	53                   	push   %ebx
40aadd:	53                   	push   %ebx
40aade:	53                   	push   %ebx
40aadf:	53                   	push   %ebx
40aae0:	ff 75 14             	push   0x14(%ebp)
40aae3:	ff 75 10             	push   0x10(%ebp)
40aae6:	53                   	push   %ebx
40aae7:	ff 75 20             	push   0x20(%ebp)
40aaea:	ff d6                	call   *%esi
40aaec:	8b f8                	mov    %eax,%edi
40aaee:	3b fb                	cmp    %ebx,%edi
40aaf0:	89 7d f0             	mov    %edi,-0x10(%ebp)
40aaf3:	75 07                	jne    0x40aafc
40aaf5:	33 c0                	xor    %eax,%eax
40aaf7:	e9 4d 01 00 00       	jmp    0x40ac49
40aafc:	7e 42                	jle    0x40ab40
40aafe:	6a e0                	push   $0xffffffe0
40ab00:	33 d2                	xor    %edx,%edx
40ab02:	58                   	pop    %eax
40ab03:	f7 f7                	div    %edi
40ab05:	83 f8 01             	cmp    $0x1,%eax
40ab08:	72 36                	jb     0x40ab40
40ab0a:	8d 47 08             	lea    0x8(%edi),%eax
40ab0d:	3d 00 04 00 00       	cmp    $0x400,%eax
40ab12:	77 13                	ja     0x40ab27
40ab14:	e8 37 5b 00 00       	call   0x410650
40ab19:	8b c4                	mov    %esp,%eax
40ab1b:	3b c3                	cmp    %ebx,%eax
40ab1d:	74 1c                	je     0x40ab3b
40ab1f:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
40ab25:	eb 11                	jmp    0x40ab38
40ab27:	50                   	push   %eax
40ab28:	e8 22 02 00 00       	call   0x40ad4f
40ab2d:	3b c3                	cmp    %ebx,%eax
40ab2f:	59                   	pop    %ecx
40ab30:	74 09                	je     0x40ab3b
40ab32:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40ab38:	83 c0 08             	add    $0x8,%eax
40ab3b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40ab3e:	eb 03                	jmp    0x40ab43
40ab40:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40ab43:	39 5d f8             	cmp    %ebx,-0x8(%ebp)
40ab46:	74 ad                	je     0x40aaf5
40ab48:	53                   	push   %ebx
40ab49:	53                   	push   %ebx
40ab4a:	57                   	push   %edi
40ab4b:	ff 75 f8             	push   -0x8(%ebp)
40ab4e:	ff 75 14             	push   0x14(%ebp)
40ab51:	ff 75 10             	push   0x10(%ebp)
40ab54:	53                   	push   %ebx
40ab55:	ff 75 20             	push   0x20(%ebp)
40ab58:	ff d6                	call   *%esi
40ab5a:	85 c0                	test   %eax,%eax
40ab5c:	0f 84 db 00 00 00    	je     0x40ac3d
40ab62:	53                   	push   %ebx
40ab63:	53                   	push   %ebx
40ab64:	57                   	push   %edi
40ab65:	ff 75 f8             	push   -0x8(%ebp)
40ab68:	8b 3d d8 70 41 00    	mov    0x4170d8,%edi
40ab6e:	ff 75 0c             	push   0xc(%ebp)
40ab71:	ff 75 08             	push   0x8(%ebp)
40ab74:	ff d7                	call   *%edi
40ab76:	8b f0                	mov    %eax,%esi
40ab78:	3b f3                	cmp    %ebx,%esi
40ab7a:	0f 84 bd 00 00 00    	je     0x40ac3d
40ab80:	7e 3f                	jle    0x40abc1
40ab82:	6a e0                	push   $0xffffffe0
40ab84:	33 d2                	xor    %edx,%edx
40ab86:	58                   	pop    %eax
40ab87:	f7 f6                	div    %esi
40ab89:	83 f8 01             	cmp    $0x1,%eax
40ab8c:	72 33                	jb     0x40abc1
40ab8e:	8d 46 08             	lea    0x8(%esi),%eax
40ab91:	3d 00 04 00 00       	cmp    $0x400,%eax
40ab96:	77 13                	ja     0x40abab
40ab98:	e8 b3 5a 00 00       	call   0x410650
40ab9d:	8b c4                	mov    %esp,%eax
40ab9f:	3b c3                	cmp    %ebx,%eax
40aba1:	74 1c                	je     0x40abbf
40aba3:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
40aba9:	eb 11                	jmp    0x40abbc
40abab:	50                   	push   %eax
40abac:	e8 9e 01 00 00       	call   0x40ad4f
40abb1:	3b c3                	cmp    %ebx,%eax
40abb3:	59                   	pop    %ecx
40abb4:	74 09                	je     0x40abbf
40abb6:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40abbc:	83 c0 08             	add    $0x8,%eax
40abbf:	8b d8                	mov    %eax,%ebx
40abc1:	85 db                	test   %ebx,%ebx
40abc3:	74 78                	je     0x40ac3d
40abc5:	56                   	push   %esi
40abc6:	53                   	push   %ebx
40abc7:	ff 75 f0             	push   -0x10(%ebp)
40abca:	ff 75 f8             	push   -0x8(%ebp)
40abcd:	ff 75 0c             	push   0xc(%ebp)
40abd0:	ff 75 08             	push   0x8(%ebp)
40abd3:	ff d7                	call   *%edi
40abd5:	85 c0                	test   %eax,%eax
40abd7:	74 5d                	je     0x40ac36
40abd9:	66 f7 45 0c 00 04    	testw  $0x400,0xc(%ebp)
40abdf:	74 34                	je     0x40ac15
40abe1:	8b 45 1c             	mov    0x1c(%ebp),%eax
40abe4:	33 ff                	xor    %edi,%edi
40abe6:	3b c7                	cmp    %edi,%eax
40abe8:	89 75 f4             	mov    %esi,-0xc(%ebp)
40abeb:	74 49                	je     0x40ac36
40abed:	3b c6                	cmp    %esi,%eax
40abef:	7f 03                	jg     0x40abf4
40abf1:	8d 70 ff             	lea    -0x1(%eax),%esi
40abf4:	56                   	push   %esi
40abf5:	53                   	push   %ebx
40abf6:	50                   	push   %eax
40abf7:	ff 75 18             	push   0x18(%ebp)
40abfa:	e8 f7 6d 00 00       	call   0x4119f6
40abff:	83 c4 10             	add    $0x10,%esp
40ac02:	85 c0                	test   %eax,%eax
40ac04:	74 30                	je     0x40ac36
40ac06:	57                   	push   %edi
40ac07:	57                   	push   %edi
40ac08:	57                   	push   %edi
40ac09:	57                   	push   %edi
40ac0a:	57                   	push   %edi
40ac0b:	e8 44 c9 ff ff       	call   0x407554
40ac10:	83 c4 14             	add    $0x14,%esp
40ac13:	eb 21                	jmp    0x40ac36
40ac15:	33 c0                	xor    %eax,%eax
40ac17:	39 45 1c             	cmp    %eax,0x1c(%ebp)
40ac1a:	75 04                	jne    0x40ac20
40ac1c:	50                   	push   %eax
40ac1d:	50                   	push   %eax
40ac1e:	eb 06                	jmp    0x40ac26
40ac20:	ff 75 1c             	push   0x1c(%ebp)
40ac23:	ff 75 18             	push   0x18(%ebp)
40ac26:	56                   	push   %esi
40ac27:	53                   	push   %ebx
40ac28:	6a 01                	push   $0x1
40ac2a:	ff 75 20             	push   0x20(%ebp)
40ac2d:	ff 15 a0 70 41 00    	call   *0x4170a0
40ac33:	89 45 f4             	mov    %eax,-0xc(%ebp)
40ac36:	53                   	push   %ebx
40ac37:	e8 6d dd ff ff       	call   0x4089a9
40ac3c:	59                   	pop    %ecx