40aaaf:	8b 45 fc             	mov    -0x4(%ebp),%eax
40aab2:	e8 15 ff ff ff       	call   0x40a9cc
40aab7:	8d 45 f8             	lea    -0x8(%ebp),%eax
40aaba:	50                   	push   %eax
40aabb:	8b c7                	mov    %edi,%eax
40aabd:	e8 4e 98 ff ff       	call   0x404310
40aac2:	8b c8                	mov    %eax,%ecx
40aac4:	8b 16                	mov    (%esi),%edx
40aac6:	8b 45 fc             	mov    -0x4(%ebp),%eax
40aac9:	e8 a2 9a ff ff       	call   0x404570
40aace:	8b 55 f8             	mov    -0x8(%ebp),%edx
40aad1:	8b c7                	mov    %edi,%eax
40aad3:	e8 2c d5 ff ff       	call   0x408004
40aad8:	85 c0                	test   %eax,%eax
40aada:	75 0b                	jne    0x40aae7
40aadc:	8b c7                	mov    %edi,%eax
40aade:	e8 2d 98 ff ff       	call   0x404310
40aae3:	01 06                	add    %eax,(%esi)
40aae5:	b3 01                	mov    $0x1,%bl
40aae7:	33 c0                	xor    %eax,%eax
40aae9:	5a                   	pop    %edx
40aaea:	59                   	pop    %ecx
40aaeb:	59                   	pop    %ecx
40aaec:	64 89 10             	mov    %edx,%fs:(%eax)
40aaef:	68 04 ab 40 00       	push   $0x40ab04
40aaf4:	8d 45 f8             	lea    -0x8(%ebp),%eax
40aaf7:	e8 54 95 ff ff       	call   0x404050
40aafc:	c3                   	ret
40aafd:	e9 52 8f ff ff       	jmp    0x403a54
40ab02:	eb f0                	jmp    0x40aaf4
40ab04:	8b c3                	mov    %ebx,%eax
40ab06:	5f                   	pop    %edi
40ab07:	5e                   	pop    %esi
40ab08:	5b                   	pop    %ebx
40ab09:	59                   	pop    %ecx
40ab0a:	59                   	pop    %ecx
40ab0b:	5d                   	pop    %ebp
40ab0c:	c3                   	ret
40ab0d:	8d 40 00             	lea    0x0(%eax),%eax
40ab10:	53                   	push   %ebx
40ab11:	56                   	push   %esi
40ab12:	57                   	push   %edi
40ab13:	51                   	push   %ecx
40ab14:	88 0c 24             	mov    %cl,(%esp)
40ab17:	8b fa                	mov    %edx,%edi
40ab19:	8b f0                	mov    %eax,%esi
40ab1b:	33 db                	xor    %ebx,%ebx
40ab1d:	8b d7                	mov    %edi,%edx
40ab1f:	8b c6                	mov    %esi,%eax
40ab21:	e8 a6 fe ff ff       	call   0x40a9cc
40ab26:	8b c6                	mov    %esi,%eax
40ab28:	e8 e3 97 ff ff       	call   0x404310
40ab2d:	3b 07                	cmp    (%edi),%eax
40ab2f:	7c 0f                	jl     0x40ab40
40ab31:	8b 07                	mov    (%edi),%eax
40ab33:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40ab37:	3a 04 24             	cmp    (%esp),%al
40ab3a:	75 04                	jne    0x40ab40
40ab3c:	ff 07                	incl   (%edi)
40ab3e:	b3 01                	mov    $0x1,%bl
40ab40:	8b c3                	mov    %ebx,%eax
40ab42:	5a                   	pop    %edx
40ab43:	5f                   	pop    %edi
40ab44:	5e                   	pop    %esi
40ab45:	5b                   	pop    %ebx
40ab46:	c3                   	ret
40ab47:	90                   	nop
40ab48:	53                   	push   %ebx
40ab49:	56                   	push   %esi
40ab4a:	57                   	push   %edi
40ab4b:	8b f0                	mov    %eax,%esi
40ab4d:	33 db                	xor    %ebx,%ebx
40ab4f:	bf 01 00 00 00       	mov    $0x1,%edi
40ab54:	eb 29                	jmp    0x40ab7f
40ab56:	8a 44 3e ff          	mov    -0x1(%esi,%edi,1),%al
40ab5a:	24 df                	and    $0xdf,%al
40ab5c:	2c 44                	sub    $0x44,%al
40ab5e:	74 1a                	je     0x40ab7a
40ab60:	fe c8                	dec    %al
40ab62:	74 0a                	je     0x40ab6e
40ab64:	2c 08                	sub    $0x8,%al
40ab66:	74 0e                	je     0x40ab76
40ab68:	2c 0c                	sub    $0xc,%al
40ab6a:	74 06                	je     0x40ab72
40ab6c:	eb 10                	jmp    0x40ab7e
40ab6e:	b3 02                	mov    $0x2,%bl
40ab70:	eb 1a                	jmp    0x40ab8c
40ab72:	b3 02                	mov    $0x2,%bl
40ab74:	eb 16                	jmp    0x40ab8c
40ab76:	33 db                	xor    %ebx,%ebx
40ab78:	eb 12                	jmp    0x40ab8c
40ab7a:	b3 01                	mov    $0x1,%bl
40ab7c:	eb 0e                	jmp    0x40ab8c
40ab7e:	47                   	inc    %edi
40ab7f:	8b c6                	mov    %esi,%eax
40ab81:	e8 8a 97 ff ff       	call   0x404310
40ab86:	3b f8                	cmp    %eax,%edi
40ab88:	7e cc                	jle    0x40ab56
40ab8a:	33 db                	xor    %ebx,%ebx
40ab8c:	8b c3                	mov    %ebx,%eax
40ab8e:	5f                   	pop    %edi
40ab8f:	5e                   	pop    %esi
40ab90:	5b                   	pop    %ebx
40ab91:	c3                   	ret
40ab92:	8b c0                	mov    %eax,%eax
40ab94:	53                   	push   %ebx
40ab95:	56                   	push   %esi
40ab96:	8b da                	mov    %edx,%ebx
40ab98:	8b f0                	mov    %eax,%esi
40ab9a:	eb 23                	jmp    0x40abbf
40ab9c:	8b 03                	mov    (%ebx),%eax
40ab9e:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40aba2:	25 ff 00 00 00       	and    $0xff,%eax
40aba7:	0f a3 05 0c 91 46 00 	bt     %eax,0x46910c
40abae:	73 0d                	jae    0x40abbd
40abb0:	8b 13                	mov    (%ebx),%edx
40abb2:	8b c6                	mov    %esi,%eax
40abb4:	e8 63 1b 00 00       	call   0x40c71c
40abb9:	89 03                	mov    %eax,(%ebx)
40abbb:	eb 02                	jmp    0x40abbf
40abbd:	ff 03                	incl   (%ebx)
40abbf:	8b c6                	mov    %esi,%eax
40abc1:	e8 4a 97 ff ff       	call   0x404310
40abc6:	3b 03                	cmp    (%ebx),%eax
40abc8:	7c 0c                	jl     0x40abd6
40abca:	8b 03                	mov    (%ebx),%eax
40abcc:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40abd0:	04 d0                	add    $0xd0,%al
40abd2:	2c 0a                	sub    $0xa,%al
40abd4:	73 c6                	jae    0x40ab9c
40abd6:	5e                   	pop    %esi
40abd7:	5b                   	pop    %ebx
40abd8:	c3                   	ret
40abd9:	8d 40 00             	lea    0x0(%eax),%eax
40abdc:	53                   	push   %ebx
40abdd:	56                   	push   %esi
40abde:	57                   	push   %edi
40abdf:	55                   	push   %ebp
40abe0:	51                   	push   %ecx
40abe1:	8b e8                	mov    %eax,%ebp
40abe3:	33 c0                	xor    %eax,%eax
40abe5:	89 04 24             	mov    %eax,(%esp)
40abe8:	bf 07 00 00 00       	mov    $0x7,%edi
40abed:	bb 50 57 47 00       	mov    $0x475750,%ebx
40abf2:	be 6c 57 47 00       	mov    $0x47576c,%esi
40abf7:	83 3b 00             	cmpl   $0x0,(%ebx)
40abfa:	74 29                	je     0x40ac25
40abfc:	8b c5                	mov    %ebp,%eax
40abfe:	e8 0d 99 ff ff       	call   0x404510
40ac03:	50                   	push   %eax
40ac04:	8b 03                	mov    (%ebx),%eax
40ac06:	e8 05 99 ff ff       	call   0x404510
40ac0b:	5a                   	pop    %edx
40ac0c:	e8 83 1c 00 00       	call   0x40c894
40ac11:	85 c0                	test   %eax,%eax
40ac13:	74 07                	je     0x40ac1c
40ac15:	8b 06                	mov    (%esi),%eax
40ac17:	89 04 24             	mov    %eax,(%esp)
40ac1a:	eb 09                	jmp    0x40ac25
40ac1c:	83 c6 04             	add    $0x4,%esi
40ac1f:	83 c3 04             	add    $0x4,%ebx
40ac22:	4f                   	dec    %edi
40ac23:	75 d2                	jne    0x40abf7
40ac25:	8b 04 24             	mov    (%esp),%eax
40ac28:	5a                   	pop    %edx
40ac29:	5d                   	pop    %ebp
40ac2a:	5f                   	pop    %edi
40ac2b:	5e                   	pop    %esi
40ac2c:	5b                   	pop    %ebx
40ac2d:	c3                   	ret
40ac2e:	8b c0                	mov    %eax,%eax
40ac30:	55                   	push   %ebp
40ac31:	8b ec                	mov    %esp,%ebp
40ac33:	53                   	push   %ebx
40ac34:	8b d8                	mov    %eax,%ebx
40ac36:	83 3d 44 57 47 00 12 	cmpl   $0x12,0x475744
40ac3d:	75 3a                	jne    0x40ac79
40ac3f:	83 fb 63             	cmp    $0x63,%ebx
40ac42:	7f 24                	jg     0x40ac68
40ac44:	e8 6f f1 ff ff       	call   0x409db8
40ac49:	0f b7 c8             	movzwl %ax,%ecx
40ac4c:	8b 45 08             	mov    0x8(%ebp),%eax
40ac4f:	8b 40 fc             	mov    -0x4(%eax),%eax
40ac52:	99                   	cltd
40ac53:	33 c2                	xor    %edx,%eax
40ac55:	2b c2                	sub    %edx,%eax
40ac57:	03 c8                	add    %eax,%ecx
40ac59:	8b c1                	mov    %ecx,%eax
40ac5b:	b9 64 00 00 00       	mov    $0x64,%ecx
40ac60:	99                   	cltd
40ac61:	f7 f9                	idiv   %ecx
40ac63:	6b c0 64             	imul   $0x64,%eax,%eax
40ac66:	03 d8                	add    %eax,%ebx
40ac68:	8b 45 08             	mov    0x8(%ebp),%eax
40ac6b:	83 78 fc 00          	cmpl   $0x0,-0x4(%eax)
40ac6f:	7e 0e                	jle    0x40ac7f
40ac71:	8b 45 08             	mov    0x8(%ebp),%eax
40ac74:	f7 58 fc             	negl   -0x4(%eax)
40ac77:	eb 06                	jmp    0x40ac7f
40ac79:	8b 45 08             	mov    0x8(%ebp),%eax
40ac7c:	ff 48 fc             	decl   -0x4(%eax)
40ac7f:	8b 45 08             	mov    0x8(%ebp),%eax
40ac82:	8b 40 fc             	mov    -0x4(%eax),%eax
40ac85:	03 c3                	add    %ebx,%eax
40ac87:	5b                   	pop    %ebx
40ac88:	5d                   	pop    %ebp
40ac89:	c3                   	ret
40ac8a:	8b c0                	mov    %eax,%eax
40ac8c:	55                   	push   %ebp
40ac8d:	8b ec                	mov    %esp,%ebp
40ac8f:	83 c4 d8             	add    $0xffffffd8,%esp
40ac92:	53                   	push   %ebx
40ac93:	56                   	push   %esi
40ac94:	57                   	push   %edi
40ac95:	33 db                	xor    %ebx,%ebx
40ac97:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40ac9a:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40ac9d:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40aca0:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40aca3:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40aca6:	8b da                	mov    %edx,%ebx
40aca8:	8b f0                	mov    %eax,%esi
40acaa:	33 c0                	xor    %eax,%eax
40acac:	55                   	push   %ebp
40acad:	68 a7 af 40 00       	push   $0x40afa7
40acb2:	64 ff 30             	push   %fs:(%eax)
40acb5:	64 89 20             	mov    %esp,%fs:(%eax)
40acb8:	33 ff                	xor    %edi,%edi
40acba:	66 c7 45 ee 00 00    	movw   $0x0,-0x12(%ebp)
40acc0:	66 c7 45 ec 00 00    	movw   $0x0,-0x14(%ebp)
40acc6:	c6 45 e8 00          	movb   $0x0,-0x18(%ebp)
40acca:	c6 45 f7 00          	movb   $0x0,-0x9(%ebp)
40acce:	a1 8c 56 47 00       	mov    0x47568c,%eax
40acd3:	e8 70 fe ff ff       	call   0x40ab48
40acd8:	88 45 f6             	mov    %al,-0xa(%ebp)
40acdb:	33 c0                	xor    %eax,%eax
40acdd:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ace0:	83 3d 8c 56 47 00 00 	cmpl   $0x0,0x47568c
40ace7:	74 3e                	je     0x40ad27
40ace9:	a1 8c 56 47 00       	mov    0x47568c,%eax
40acee:	80 38 67             	cmpb   $0x67,(%eax)
40acf1:	75 34                	jne    0x40ad27
40acf3:	8b d3                	mov    %ebx,%edx
40acf5:	8b c6                	mov    %esi,%eax
40acf7:	e8 98 fe ff ff       	call   0x40ab94
40acfc:	8d 45 e0             	lea    -0x20(%ebp),%eax
40acff:	50                   	push   %eax
40ad00:	8b 0b                	mov    (%ebx),%ecx
40ad02:	49                   	dec    %ecx
40ad03:	ba 01 00 00 00       	mov    $0x1,%edx
40ad08:	8b c6                	mov    %esi,%eax
40ad0a:	e8 61 98 ff ff       	call   0x404570
40ad0f:	8b 45 e0             	mov    -0x20(%ebp),%eax
40ad12:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40ad15:	e8 5a d3 ff ff       	call   0x408074
40ad1a:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40ad1d:	e8 ba fe ff ff       	call   0x40abdc
40ad22:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ad25:	eb 1c                	jmp    0x40ad43
40ad27:	8b 15 8c 56 47 00    	mov    0x47568c,%edx
40ad2d:	b8 c0 af 40 00       	mov    $0x40afc0,%eax
40ad32:	e8 99 1a 00 00       	call   0x40c7d0
40ad37:	85 c0                	test   %eax,%eax
40ad39:	7e 08                	jle    0x40ad43
40ad3b:	a1 6c 57 47 00       	mov    0x47576c,%eax
40ad40:	89 45 fc             	mov    %eax,-0x4(%ebp)
40ad43:	8d 45 eb             	lea    -0x15(%ebp),%eax
40ad46:	50                   	push   %eax
40ad47:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40ad4a:	8b d3                	mov    %ebx,%edx
40ad4c:	8b c6                	mov    %esi,%eax
40ad4e:	e8 9d fc ff ff       	call   0x40a9f0
40ad53:	84 c0                	test   %al,%al
40ad55:	0f 84 31 02 00 00    	je     0x40af8c
40ad5b:	8b d3                	mov    %ebx,%edx
40ad5d:	8a 0d 89 56 47 00    	mov    0x475689,%cl
40ad63:	8b c6                	mov    %esi,%eax
40ad65:	e8 a6 fd ff ff       	call   0x40ab10
40ad6a:	84 c0                	test   %al,%al
40ad6c:	0f 84 1a 02 00 00    	je     0x40af8c
40ad72:	8d 45 ea             	lea    -0x16(%ebp),%eax
40ad75:	50                   	push   %eax
40ad76:	8d 4d f2             	lea    -0xe(%ebp),%ecx
40ad79:	8b d3                	mov    %ebx,%edx
40ad7b:	8b c6                	mov    %esi,%eax
40ad7d:	e8 6e fc ff ff       	call   0x40a9f0
40ad82:	84 c0                	test   %al,%al
40ad84:	0f 84 02 02 00 00    	je     0x40af8c
40ad8a:	8b d3                	mov    %ebx,%edx
40ad8c:	8a 0d 89 56 47 00    	mov    0x475689,%cl
40ad92:	8b c6                	mov    %esi,%eax
40ad94:	e8 77 fd ff ff       	call   0x40ab10
40ad99:	84 c0                	test   %al,%al
40ad9b:	0f 84 ce 00 00 00    	je     0x40ae6f
40ada1:	8d 45 e9             	lea    -0x17(%ebp),%eax
40ada4:	50                   	push   %eax
40ada5:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40ada8:	8b d3                	mov    %ebx,%edx
40adaa:	8b c6                	mov    %esi,%eax
40adac:	e8 3f fc ff ff       	call   0x40a9f0
40adb1:	84 c0                	test   %al,%al
40adb3:	0f 84 d3 01 00 00    	je     0x40af8c
40adb9:	8a 45 f6             	mov    -0xa(%ebp),%al
40adbc:	2c 01                	sub    $0x1,%al
40adbe:	72 08                	jb     0x40adc8
40adc0:	74 22                	je     0x40ade4
40adc2:	fe c8                	dec    %al
40adc4:	74 3a                	je     0x40ae00
40adc6:	eb 52                	jmp    0x40ae1a
40adc8:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40adcc:	8a 45 e9             	mov    -0x17(%ebp),%al
40adcf:	88 45 e8             	mov    %al,-0x18(%ebp)
40add2:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40add6:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40adda:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40adde:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40ade2:	eb 36                	jmp    0x40ae1a
40ade4:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40ade8:	8a 45 e9             	mov    -0x17(%ebp),%al
40adeb:	88 45 e8             	mov    %al,-0x18(%ebp)
40adee:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40adf2:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40adf6:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40adfa:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40adfe:	eb 1a                	jmp    0x40ae1a
40ae00:	66 8b 7d f4          	mov    -0xc(%ebp),%di
40ae04:	8a 45 eb             	mov    -0x15(%ebp),%al
40ae07:	88 45 e8             	mov    %al,-0x18(%ebp)
40ae0a:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40ae0e:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40ae12:	66 8b 45 f0          	mov    -0x10(%ebp),%ax
40ae16:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40ae1a:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40ae1e:	7e 0e                	jle    0x40ae2e
40ae20:	55                   	push   %ebp
40ae21:	0f b7 c7             	movzwl %di,%eax
40ae24:	e8 07 fe ff ff       	call   0x40ac30
40ae29:	59                   	pop    %ecx
40ae2a:	8b f8                	mov    %eax,%edi
40ae2c:	eb 70                	jmp    0x40ae9e
40ae2e:	80 7d e8 02          	cmpb   $0x2,-0x18(%ebp)
40ae32:	77 6a                	ja     0x40ae9e
40ae34:	e8 7f ef ff ff       	call   0x409db8
40ae39:	0f b7 c8             	movzwl %ax,%ecx
40ae3c:	0f b7 05 d8 90 46 00 	movzwl 0x4690d8,%eax
40ae43:	2b c8                	sub    %eax,%ecx
40ae45:	8b c1                	mov    %ecx,%eax
40ae47:	51                   	push   %ecx
40ae48:	b9 64 00 00 00       	mov    $0x64,%ecx
40ae4d:	99                   	cltd