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
40ac3d:	ff 75 f8             	push   -0x8(%ebp)
40ac40:	e8 64 dd ff ff       	call   0x4089a9
40ac45:	8b 45 f4             	mov    -0xc(%ebp),%eax
40ac48:	59                   	pop    %ecx
40ac49:	8d 65 e4             	lea    -0x1c(%ebp),%esp
40ac4c:	5f                   	pop    %edi
40ac4d:	5e                   	pop    %esi
40ac4e:	5b                   	pop    %ebx
40ac4f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40ac52:	33 cd                	xor    %ebp,%ecx
40ac54:	e8 dc b2 ff ff       	call   0x405f35
40ac59:	c9                   	leave
40ac5a:	c3                   	ret
40ac5b:	55                   	push   %ebp
40ac5c:	8b ec                	mov    %esp,%ebp
40ac5e:	83 ec 10             	sub    $0x10,%esp
40ac61:	ff 75 08             	push   0x8(%ebp)
40ac64:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ac67:	e8 58 dd ff ff       	call   0x4089c4
40ac6c:	ff 75 24             	push   0x24(%ebp)
40ac6f:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ac72:	ff 75 20             	push   0x20(%ebp)
40ac75:	ff 75 1c             	push   0x1c(%ebp)
40ac78:	ff 75 18             	push   0x18(%ebp)
40ac7b:	ff 75 14             	push   0x14(%ebp)
40ac7e:	ff 75 10             	push   0x10(%ebp)
40ac81:	ff 75 0c             	push   0xc(%ebp)
40ac84:	e8 71 fd ff ff       	call   0x40a9fa
40ac89:	83 c4 1c             	add    $0x1c,%esp
40ac8c:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
40ac90:	74 07                	je     0x40ac99
40ac92:	8b 4d f8             	mov    -0x8(%ebp),%ecx
40ac95:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40ac99:	c9                   	leave
40ac9a:	c3                   	ret
40ac9b:	8b 4c 24 04          	mov    0x4(%esp),%ecx
40ac9f:	53                   	push   %ebx
40aca0:	33 db                	xor    %ebx,%ebx
40aca2:	3b cb                	cmp    %ebx,%ecx
40aca4:	56                   	push   %esi
40aca5:	57                   	push   %edi
40aca6:	74 08                	je     0x40acb0
40aca8:	8b 7c 24 14          	mov    0x14(%esp),%edi
40acac:	3b fb                	cmp    %ebx,%edi
40acae:	77 1b                	ja     0x40accb
40acb0:	e8 45 e7 ff ff       	call   0x4093fa
40acb5:	6a 16                	push   $0x16
40acb7:	5e                   	pop    %esi
40acb8:	89 30                	mov    %esi,(%eax)
40acba:	53                   	push   %ebx
40acbb:	53                   	push   %ebx
40acbc:	53                   	push   %ebx
40acbd:	53                   	push   %ebx
40acbe:	53                   	push   %ebx
40acbf:	e8 8c c9 ff ff       	call   0x407650
40acc4:	83 c4 14             	add    $0x14,%esp
40acc7:	8b c6                	mov    %esi,%eax
40acc9:	eb 31                	jmp    0x40acfc
40accb:	8b 74 24 18          	mov    0x18(%esp),%esi
40accf:	3b f3                	cmp    %ebx,%esi
40acd1:	75 04                	jne    0x40acd7
40acd3:	88 19                	mov    %bl,(%ecx)
40acd5:	eb d9                	jmp    0x40acb0
40acd7:	8b d1                	mov    %ecx,%edx
40acd9:	8a 06                	mov    (%esi),%al
40acdb:	88 02                	mov    %al,(%edx)
40acdd:	42                   	inc    %edx
40acde:	46                   	inc    %esi
40acdf:	3a c3                	cmp    %bl,%al
40ace1:	74 03                	je     0x40ace6
40ace3:	4f                   	dec    %edi
40ace4:	75 f3                	jne    0x40acd9
40ace6:	3b fb                	cmp    %ebx,%edi
40ace8:	75 10                	jne    0x40acfa
40acea:	88 19                	mov    %bl,(%ecx)
40acec:	e8 09 e7 ff ff       	call   0x4093fa
40acf1:	6a 22                	push   $0x22
40acf3:	59                   	pop    %ecx
40acf4:	89 08                	mov    %ecx,(%eax)
40acf6:	8b f1                	mov    %ecx,%esi
40acf8:	eb c0                	jmp    0x40acba
40acfa:	33 c0                	xor    %eax,%eax
40acfc:	5f                   	pop    %edi
40acfd:	5e                   	pop    %esi
40acfe:	5b                   	pop    %ebx
40acff:	c3                   	ret
40ad00:	6a 0c                	push   $0xc
40ad02:	68 d0 ab 41 00       	push   $0x41abd0
40ad07:	e8 3c 29 00 00       	call   0x40d648
40ad0c:	83 65 e4 00          	andl   $0x0,-0x1c(%ebp)
40ad10:	8b 75 08             	mov    0x8(%ebp),%esi
40ad13:	3b 35 e0 e5 41 00    	cmp    0x41e5e0,%esi
40ad19:	77 22                	ja     0x40ad3d
40ad1b:	6a 04                	push   $0x4
40ad1d:	e8 f5 1d 00 00       	call   0x40cb17
40ad22:	59                   	pop    %ecx
40ad23:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40ad27:	56                   	push   %esi
40ad28:	e8 37 26 00 00       	call   0x40d364
40ad2d:	59                   	pop    %ecx
40ad2e:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40ad31:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40ad38:	e8 09 00 00 00       	call   0x40ad46
40ad3d:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40ad40:	e8 48 29 00 00       	call   0x40d68d
40ad45:	c3                   	ret
40ad46:	6a 04                	push   $0x4
40ad48:	e8 f2 1c 00 00       	call   0x40ca3f
40ad4d:	59                   	pop    %ecx
40ad4e:	c3                   	ret
40ad4f:	55                   	push   %ebp
40ad50:	8b 6c 24 08          	mov    0x8(%esp),%ebp
40ad54:	83 fd e0             	cmp    $0xffffffe0,%ebp
40ad57:	0f 87 9f 00 00 00    	ja     0x40adfc
40ad5d:	53                   	push   %ebx
40ad5e:	8b 1d c0 70 41 00    	mov    0x4170c0,%ebx
40ad64:	56                   	push   %esi
40ad65:	57                   	push   %edi
40ad66:	33 f6                	xor    %esi,%esi
40ad68:	39 35 5c dd 41 00    	cmp    %esi,0x41dd5c
40ad6e:	8b fd                	mov    %ebp,%edi
40ad70:	75 18                	jne    0x40ad8a
40ad72:	e8 77 2f 00 00       	call   0x40dcee
40ad77:	6a 1e                	push   $0x1e
40ad79:	e8 d0 2d 00 00       	call   0x40db4e
40ad7e:	68 ff 00 00 00       	push   $0xff
40ad83:	e8 08 2b 00 00       	call   0x40d890
40ad88:	59                   	pop    %ecx
40ad89:	59                   	pop    %ecx
40ad8a:	a1 f0 e5 41 00       	mov    0x41e5f0,%eax
40ad8f:	83 f8 01             	cmp    $0x1,%eax
40ad92:	75 0e                	jne    0x40ada2
40ad94:	3b ee                	cmp    %esi,%ebp
40ad96:	74 04                	je     0x40ad9c
40ad98:	8b c5                	mov    %ebp,%eax
40ad9a:	eb 03                	jmp    0x40ad9f
40ad9c:	33 c0                	xor    %eax,%eax
40ad9e:	40                   	inc    %eax
40ad9f:	50                   	push   %eax
40ada0:	eb 1e                	jmp    0x40adc0
40ada2:	83 f8 03             	cmp    $0x3,%eax
40ada5:	75 0b                	jne    0x40adb2
40ada7:	55                   	push   %ebp
40ada8:	e8 53 ff ff ff       	call   0x40ad00
40adad:	3b c6                	cmp    %esi,%eax
40adaf:	59                   	pop    %ecx
40adb0:	75 17                	jne    0x40adc9
40adb2:	3b ee                	cmp    %esi,%ebp
40adb4:	75 03                	jne    0x40adb9
40adb6:	33 ff                	xor    %edi,%edi
40adb8:	47                   	inc    %edi
40adb9:	83 c7 0f             	add    $0xf,%edi
40adbc:	83 e7 f0             	and    $0xfffffff0,%edi
40adbf:	57                   	push   %edi
40adc0:	56                   	push   %esi
40adc1:	ff 35 5c dd 41 00    	push   0x41dd5c
40adc7:	ff d3                	call   *%ebx
40adc9:	8b f0                	mov    %eax,%esi
40adcb:	85 f6                	test   %esi,%esi
40adcd:	75 26                	jne    0x40adf5
40adcf:	39 05 88 e3 41 00    	cmp    %eax,0x41e388
40add5:	6a 0c                	push   $0xc
40add7:	5f                   	pop    %edi
40add8:	74 0d                	je     0x40ade7
40adda:	55                   	push   %ebp
40addb:	e8 23 14 00 00       	call   0x40c203
40ade0:	85 c0                	test   %eax,%eax
40ade2:	59                   	pop    %ecx
40ade3:	75 81                	jne    0x40ad66
40ade5:	eb 07                	jmp    0x40adee
40ade7:	e8 0e e6 ff ff       	call   0x4093fa
40adec:	89 38                	mov    %edi,(%eax)
40adee:	e8 07 e6 ff ff       	call   0x4093fa
40adf3:	89 38                	mov    %edi,(%eax)
40adf5:	5f                   	pop    %edi