40cd3f:	3b 5d f4             	cmp    -0xc(%ebp),%ebx
40cd42:	7d 05                	jge    0x40cd49
40cd44:	3b 75 fc             	cmp    -0x4(%ebp),%esi
40cd47:	7c d6                	jl     0x40cd1f
40cd49:	3b 75 fc             	cmp    -0x4(%ebp),%esi
40cd4c:	75 22                	jne    0x40cd70
40cd4e:	3b 5d f4             	cmp    -0xc(%ebp),%ebx
40cd51:	7d 1d                	jge    0x40cd70
40cd53:	0f b6 44 1f ff       	movzbl -0x1(%edi,%ebx,1),%eax
40cd58:	0f b6 c0             	movzbl %al,%eax
40cd5b:	0f a3 05 0c 08 46 00 	bt     %eax,0x46080c
40cd62:	73 0c                	jae    0x40cd70
40cd64:	8b d3                	mov    %ebx,%edx
40cd66:	8b c7                	mov    %edi,%eax
40cd68:	e8 6b 01 00 00       	call   0x40ced8
40cd6d:	48                   	dec    %eax
40cd6e:	8b d8                	mov    %eax,%ebx
40cd70:	8b 45 f8             	mov    -0x8(%ebp),%eax
40cd73:	89 30                	mov    %esi,(%eax)
40cd75:	8b 45 08             	mov    0x8(%ebp),%eax
40cd78:	89 18                	mov    %ebx,(%eax)
40cd7a:	5f                   	pop    %edi
40cd7b:	5e                   	pop    %esi
40cd7c:	5b                   	pop    %ebx
40cd7d:	8b e5                	mov    %ebp,%esp
40cd7f:	5d                   	pop    %ebp
40cd80:	c2 04 00             	ret    $0x4
40cd83:	90                   	nop
40cd84:	53                   	push   %ebx
40cd85:	56                   	push   %esi
40cd86:	57                   	push   %edi
40cd87:	83 c4 f8             	add    $0xfffffff8,%esp
40cd8a:	8b da                	mov    %edx,%ebx
40cd8c:	8b f0                	mov    %eax,%esi
40cd8e:	33 c0                	xor    %eax,%eax
40cd90:	89 04 24             	mov    %eax,(%esp)
40cd93:	85 db                	test   %ebx,%ebx
40cd95:	7f 04                	jg     0x40cd9b
40cd97:	b0 01                	mov    $0x1,%al
40cd99:	eb 10                	jmp    0x40cdab
40cd9b:	8b c6                	mov    %esi,%eax
40cd9d:	85 c0                	test   %eax,%eax
40cd9f:	74 05                	je     0x40cda6
40cda1:	83 e8 04             	sub    $0x4,%eax
40cda4:	8b 00                	mov    (%eax),%eax
40cda6:	3b c3                	cmp    %ebx,%eax
40cda8:	0f 9c c0             	setl   %al
40cdab:	84 c0                	test   %al,%al
40cdad:	75 4d                	jne    0x40cdfc
40cdaf:	83 fb 01             	cmp    $0x1,%ebx
40cdb2:	7e 45                	jle    0x40cdf9
40cdb4:	80 3d d4 08 47 00 00 	cmpb   $0x0,0x4708d4
40cdbb:	74 3c                	je     0x40cdf9
40cdbd:	54                   	push   %esp
40cdbe:	8d 4c 24 08          	lea    0x8(%esp),%ecx
40cdc2:	8b fb                	mov    %ebx,%edi
40cdc4:	4f                   	dec    %edi
40cdc5:	8b d7                	mov    %edi,%edx
40cdc7:	8b c6                	mov    %esi,%eax
40cdc9:	e8 26 ff ff ff       	call   0x40ccf4
40cdce:	3b 7c 24 04          	cmp    0x4(%esp),%edi
40cdd2:	7e 04                	jle    0x40cdd8
40cdd4:	b0 01                	mov    $0x1,%al
40cdd6:	eb 11                	jmp    0x40cde9
40cdd8:	8b c6                	mov    %esi,%eax
40cdda:	85 c0                	test   %eax,%eax
40cddc:	74 05                	je     0x40cde3
40cdde:	83 e8 04             	sub    $0x4,%eax
40cde1:	8b 00                	mov    (%eax),%eax
40cde3:	3b 04 24             	cmp    (%esp),%eax
40cde6:	0f 9e c0             	setle  %al
40cde9:	84 c0                	test   %al,%al
40cdeb:	74 07                	je     0x40cdf4
40cded:	33 c0                	xor    %eax,%eax
40cdef:	89 04 24             	mov    %eax,(%esp)
40cdf2:	eb 08                	jmp    0x40cdfc
40cdf4:	ff 04 24             	incl   (%esp)
40cdf7:	eb 03                	jmp    0x40cdfc
40cdf9:	89 1c 24             	mov    %ebx,(%esp)
40cdfc:	8b 04 24             	mov    (%esp),%eax
40cdff:	59                   	pop    %ecx
40ce00:	5a                   	pop    %edx
40ce01:	5f                   	pop    %edi
40ce02:	5e                   	pop    %esi
40ce03:	5b                   	pop    %ebx
40ce04:	c3                   	ret
40ce05:	8d 40 00             	lea    0x0(%eax),%eax
40ce08:	53                   	push   %ebx
40ce09:	56                   	push   %esi
40ce0a:	83 c4 f8             	add    $0xfffffff8,%esp
40ce0d:	8b d8                	mov    %eax,%ebx
40ce0f:	33 c0                	xor    %eax,%eax
40ce11:	89 04 24             	mov    %eax,(%esp)
40ce14:	85 d2                	test   %edx,%edx
40ce16:	7e 56                	jle    0x40ce6e
40ce18:	8b f3                	mov    %ebx,%esi
40ce1a:	8b c6                	mov    %esi,%eax
40ce1c:	85 c0                	test   %eax,%eax
40ce1e:	74 05                	je     0x40ce25
40ce20:	83 e8 04             	sub    $0x4,%eax
40ce23:	8b 00                	mov    (%eax),%eax
40ce25:	3b c2                	cmp    %edx,%eax
40ce27:	7d 0d                	jge    0x40ce36
40ce29:	8b c6                	mov    %esi,%eax
40ce2b:	85 c0                	test   %eax,%eax
40ce2d:	74 05                	je     0x40ce34
40ce2f:	83 e8 04             	sub    $0x4,%eax
40ce32:	8b 00                	mov    (%eax),%eax
40ce34:	8b d0                	mov    %eax,%edx
40ce36:	80 3d d4 08 47 00 00 	cmpb   $0x0,0x4708d4
40ce3d:	74 2c                	je     0x40ce6b
40ce3f:	54                   	push   %esp
40ce40:	8d 4c 24 08          	lea    0x8(%esp),%ecx
40ce44:	8b c3                	mov    %ebx,%eax
40ce46:	e8 a9 fe ff ff       	call   0x40ccf4
40ce4b:	8b c6                	mov    %esi,%eax
40ce4d:	85 c0                	test   %eax,%eax
40ce4f:	74 05                	je     0x40ce56
40ce51:	83 e8 04             	sub    $0x4,%eax
40ce54:	8b 00                	mov    (%eax),%eax
40ce56:	3b 04 24             	cmp    (%esp),%eax
40ce59:	7d 13                	jge    0x40ce6e
40ce5b:	8b c6                	mov    %esi,%eax
40ce5d:	85 c0                	test   %eax,%eax
40ce5f:	74 05                	je     0x40ce66
40ce61:	83 e8 04             	sub    $0x4,%eax
40ce64:	8b 00                	mov    (%eax),%eax
40ce66:	89 04 24             	mov    %eax,(%esp)
40ce69:	eb 03                	jmp    0x40ce6e
40ce6b:	89 14 24             	mov    %edx,(%esp)
40ce6e:	8b 04 24             	mov    (%esp),%eax
40ce71:	59                   	pop    %ecx
40ce72:	5a                   	pop    %edx
40ce73:	5e                   	pop    %esi
40ce74:	5b                   	pop    %ebx
40ce75:	c3                   	ret
40ce76:	8b c0                	mov    %eax,%eax
40ce78:	53                   	push   %ebx
40ce79:	8b d8                	mov    %eax,%ebx
40ce7b:	80 3d d4 08 47 00 00 	cmpb   $0x0,0x4708d4
40ce82:	74 0a                	je     0x40ce8e
40ce84:	53                   	push   %ebx
40ce85:	e8 de 9e ff ff       	call   0x406d68
40ce8a:	2b c3                	sub    %ebx,%eax
40ce8c:	5b                   	pop    %ebx
40ce8d:	c3                   	ret
40ce8e:	b8 01 00 00 00       	mov    $0x1,%eax
40ce93:	5b                   	pop    %ebx
40ce94:	c3                   	ret
40ce95:	8d 40 00             	lea    0x0(%eax),%eax
40ce98:	50                   	push   %eax
40ce99:	e8 ca 9e ff ff       	call   0x406d68
40ce9e:	c3                   	ret
40ce9f:	90                   	nop
40cea0:	53                   	push   %ebx
40cea1:	56                   	push   %esi
40cea2:	8b f2                	mov    %edx,%esi
40cea4:	8b d8                	mov    %eax,%ebx
40cea6:	b8 01 00 00 00       	mov    $0x1,%eax
40ceab:	80 3d d4 08 47 00 00 	cmpb   $0x0,0x4708d4
40ceb2:	74 20                	je     0x40ced4
40ceb4:	0f b6 54 33 ff       	movzbl -0x1(%ebx,%esi,1),%edx
40ceb9:	0f b6 d2             	movzbl %dl,%edx
40cebc:	0f a3 15 0c 08 46 00 	bt     %edx,0x46080c
40cec3:	73 0f                	jae    0x40ced4
40cec5:	8b c3                	mov    %ebx,%eax
40cec7:	e8 18 7d ff ff       	call   0x404be4
40cecc:	03 c6                	add    %esi,%eax
40cece:	48                   	dec    %eax
40cecf:	e8 a4 ff ff ff       	call   0x40ce78
40ced4:	5e                   	pop    %esi
40ced5:	5b                   	pop    %ebx
40ced6:	c3                   	ret
40ced7:	90                   	nop
40ced8:	53                   	push   %ebx
40ced9:	56                   	push   %esi
40ceda:	8b da                	mov    %edx,%ebx
40cedc:	8b f0                	mov    %eax,%esi
40cede:	8d 43 01             	lea    0x1(%ebx),%eax
40cee1:	80 3d d4 08 47 00 00 	cmpb   $0x0,0x4708d4
40cee8:	74 22                	je     0x40cf0c
40ceea:	0f b6 54 1e ff       	movzbl -0x1(%esi,%ebx,1),%edx
40ceef:	0f b6 d2             	movzbl %dl,%edx
40cef2:	0f a3 15 0c 08 46 00 	bt     %edx,0x46080c
40cef9:	73 11                	jae    0x40cf0c
40cefb:	8b c6                	mov    %esi,%eax
40cefd:	e8 e2 7c ff ff       	call   0x404be4
40cf02:	03 c3                	add    %ebx,%eax
40cf04:	48                   	dec    %eax
40cf05:	e8 6e ff ff ff       	call   0x40ce78
40cf0a:	03 c3                	add    %ebx,%eax
40cf0c:	5e                   	pop    %esi
40cf0d:	5b                   	pop    %ebx
40cf0e:	c3                   	ret
40cf0f:	90                   	nop
40cf10:	53                   	push   %ebx
40cf11:	56                   	push   %esi
40cf12:	57                   	push   %edi
40cf13:	55                   	push   %ebp
40cf14:	8b f2                	mov    %edx,%esi
40cf16:	8b d8                	mov    %eax,%ebx
40cf18:	33 ff                	xor    %edi,%edi
40cf1a:	8b c3                	mov    %ebx,%eax
40cf1c:	e8 c3 7c ff ff       	call   0x404be4
40cf21:	50                   	push   %eax
40cf22:	8b c6                	mov    %esi,%eax
40cf24:	e8 bb 7c ff ff       	call   0x404be4
40cf29:	8b e8                	mov    %eax,%ebp
40cf2b:	8b c5                	mov    %ebp,%eax
40cf2d:	5a                   	pop    %edx
40cf2e:	e8 a9 00 00 00       	call   0x40cfdc
40cf33:	8b d8                	mov    %eax,%ebx
40cf35:	85 db                	test   %ebx,%ebx
40cf37:	74 05                	je     0x40cf3e
40cf39:	8b fb                	mov    %ebx,%edi
40cf3b:	2b fd                	sub    %ebp,%edi
40cf3d:	47                   	inc    %edi
40cf3e:	8b c7                	mov    %edi,%eax
40cf40:	5d                   	pop    %ebp
40cf41:	5f                   	pop    %edi
40cf42:	5e                   	pop    %esi
40cf43:	5b                   	pop    %ebx
40cf44:	c3                   	ret
40cf45:	8d 40 00             	lea    0x0(%eax),%eax
40cf48:	53                   	push   %ebx
40cf49:	56                   	push   %esi
40cf4a:	57                   	push   %edi
40cf4b:	55                   	push   %ebp
40cf4c:	8b fa                	mov    %edx,%edi
40cf4e:	8b f0                	mov    %eax,%esi
40cf50:	80 3d d4 08 47 00 00 	cmpb   $0x0,0x4708d4
40cf57:	74 73                	je     0x40cfcc
40cf59:	8b c6                	mov    %esi,%eax
40cf5b:	85 c0                	test   %eax,%eax
40cf5d:	74 05                	je     0x40cf64
40cf5f:	83 e8 04             	sub    $0x4,%eax
40cf62:	8b 00                	mov    (%eax),%eax
40cf64:	8b e8                	mov    %eax,%ebp
40cf66:	8b c7                	mov    %edi,%eax
40cf68:	8b d5                	mov    %ebp,%edx
40cf6a:	e8 fd 7e ff ff       	call   0x404e6c
40cf6f:	bb 01 00 00 00       	mov    $0x1,%ebx
40cf74:	3b eb                	cmp    %ebx,%ebp
40cf76:	7c 5d                	jl     0x40cfd5
40cf78:	8b c7                	mov    %edi,%eax
40cf7a:	e8 bd 7c ff ff       	call   0x404c3c
40cf7f:	0f b6 54 1e ff       	movzbl -0x1(%esi,%ebx,1),%edx
40cf84:	88 54 18 ff          	mov    %dl,-0x1(%eax,%ebx,1)
40cf88:	0f b6 44 1e ff       	movzbl -0x1(%esi,%ebx,1),%eax
40cf8d:	0f b6 c0             	movzbl %al,%eax
40cf90:	0f a3 05 0c 08 46 00 	bt     %eax,0x46080c
40cf97:	73 13                	jae    0x40cfac
40cf99:	43                   	inc    %ebx
40cf9a:	8b c7                	mov    %edi,%eax
40cf9c:	e8 9b 7c ff ff       	call   0x404c3c
40cfa1:	0f b6 54 1e ff       	movzbl -0x1(%esi,%ebx,1),%edx
40cfa6:	88 54 18 ff          	mov    %dl,-0x1(%eax,%ebx,1)
40cfaa:	eb 19                	jmp    0x40cfc5
40cfac:	8b 07                	mov    (%edi),%eax
40cfae:	0f b6 44 18 ff       	movzbl -0x1(%eax,%ebx,1),%eax
40cfb3:	04 bf                	add    $0xbf,%al
40cfb5:	2c 1a                	sub    $0x1a,%al
40cfb7:	73 0c                	jae    0x40cfc5
40cfb9:	8b c7                	mov    %edi,%eax
40cfbb:	e8 7c 7c ff ff       	call   0x404c3c
40cfc0:	80 44 18 ff 20       	addb   $0x20,-0x1(%eax,%ebx,1)
40cfc5:	43                   	inc    %ebx
40cfc6:	3b eb                	cmp    %ebx,%ebp
40cfc8:	7d ae                	jge    0x40cf78
40cfca:	eb 09                	jmp    0x40cfd5
40cfcc:	8b d7                	mov    %edi,%edx
40cfce:	8b c6                	mov    %esi,%eax
40cfd0:	e8 67 b9 ff ff       	call   0x40893c
40cfd5:	5d                   	pop    %ebp
40cfd6:	5f                   	pop    %edi
40cfd7:	5e                   	pop    %esi
40cfd8:	5b                   	pop    %ebx
40cfd9:	c3                   	ret
40cfda:	8b c0                	mov    %eax,%eax
40cfdc:	53                   	push   %ebx
40cfdd:	56                   	push   %esi
40cfde:	57                   	push   %edi
40cfdf:	55                   	push   %ebp
40cfe0:	83 c4 f8             	add    $0xfffffff8,%esp
40cfe3:	8b ea                	mov    %edx,%ebp
40cfe5:	8b f0                	mov    %eax,%esi
40cfe7:	33 db                	xor    %ebx,%ebx
40cfe9:	85 f6                	test   %esi,%esi
40cfeb:	0f 84 81 00 00 00    	je     0x40d072
40cff1:	80 3e 00             	cmpb   $0x0,(%esi)
40cff4:	74 7c                	je     0x40d072
40cff6:	85 ed                	test   %ebp,%ebp
40cff8:	74 78                	je     0x40d072
40cffa:	80 7d 00 00          	cmpb   $0x0,0x0(%ebp)
40cffe:	74 72                	je     0x40d072
40d000:	8b c6                	mov    %esi,%eax
40d002:	e8 c1 c1 ff ff       	call   0x4091c8
40d007:	89 04 24             	mov    %eax,(%esp)
40d00a:	8b c5                	mov    %ebp,%eax
40d00c:	e8 b7 c1 ff ff       	call   0x4091c8
40d011:	8b f8                	mov    %eax,%edi
40d013:	8b d5                	mov    %ebp,%edx
40d015:	8b c6                	mov    %esi,%eax
40d017:	e8 80 c3 ff ff       	call   0x40939c
40d01c:	8b d8                	mov    %eax,%ebx
40d01e:	eb 3f                	jmp    0x40d05f
40d020:	8b d3                	mov    %ebx,%edx
40d022:	2b d6                	sub    %esi,%edx
40d024:	8b c6                	mov    %esi,%eax
40d026:	e8 25 fc ff ff       	call   0x40cc50
40d02b:	88 44 24 04          	mov    %al,0x4(%esp)
40d02f:	80 7c 24 04 02       	cmpb   $0x2,0x4(%esp)
40d034:	74 15                	je     0x40d04b
40d036:	57                   	push   %edi
40d037:	55                   	push   %ebp
40d038:	57                   	push   %edi
40d039:	53                   	push   %ebx
40d03a:	6a 00                	push   $0x0
40d03c:	68 00 04 00 00       	push   $0x400
40d041:	e8 d2 98 ff ff       	call   0x406918
40d046:	83 f8 02             	cmp    $0x2,%eax
40d049:	74 27                	je     0x40d072
40d04b:	80 7c 24 04 01       	cmpb   $0x1,0x4(%esp)
40d050:	75 01                	jne    0x40d053
40d052:	43                   	inc    %ebx
40d053:	43                   	inc    %ebx
40d054:	8b d5                	mov    %ebp,%edx
40d056:	8b c3                	mov    %ebx,%eax
40d058:	e8 3f c3 ff ff       	call   0x40939c
40d05d:	8b d8                	mov    %eax,%ebx
40d05f:	85 db                	test   %ebx,%ebx
40d061:	74 0d                	je     0x40d070
40d063:	8b c3                	mov    %ebx,%eax
40d065:	2b c6                	sub    %esi,%eax
40d067:	8b 14 24             	mov    (%esp),%edx
40d06a:	2b d0                	sub    %eax,%edx
40d06c:	3b fa                	cmp    %edx,%edi
40d06e:	76 b0                	jbe    0x40d020
40d070:	33 db                	xor    %ebx,%ebx
40d072:	8b c3                	mov    %ebx,%eax
40d074:	59                   	pop    %ecx
40d075:	5a                   	pop    %edx
40d076:	5d                   	pop    %ebp
40d077:	5f                   	pop    %edi
40d078:	5e                   	pop    %esi
40d079:	5b                   	pop    %ebx
40d07a:	c3                   	ret
40d07b:	90                   	nop
40d07c:	53                   	push   %ebx
40d07d:	56                   	push   %esi