40fad6:	ab                   	stos   %eax,%es:(%edi)
40fad7:	e9 be 00 00 00       	jmp    0x40fb9a
40fadc:	39 3d bc 46 42 00    	cmp    %edi,0x4246bc
40fae2:	74 0b                	je     0x40faef
40fae4:	56                   	push   %esi
40fae5:	e8 1f fb ff ff       	call   0x40f609
40faea:	e9 b1 00 00 00       	jmp    0x40fba0
40faef:	83 c8 ff             	or     $0xffffffff,%eax
40faf2:	e9 ac 00 00 00       	jmp    0x40fba3
40faf7:	68 01 01 00 00       	push   $0x101
40fafc:	8d 46 18             	lea    0x18(%esi),%eax
40faff:	57                   	push   %edi
40fb00:	50                   	push   %eax
40fb01:	e8 5a 4f ff ff       	call   0x404a60
40fb06:	83 c4 0c             	add    $0xc,%esp
40fb09:	6b 45 e4 30          	imul   $0x30,-0x1c(%ebp),%eax
40fb0d:	89 45 e0             	mov    %eax,-0x20(%ebp)
40fb10:	8d 80 b8 32 42 00    	lea    0x4232b8(%eax),%eax
40fb16:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fb19:	80 38 00             	cmpb   $0x0,(%eax)
40fb1c:	8b c8                	mov    %eax,%ecx
40fb1e:	74 35                	je     0x40fb55
40fb20:	8a 41 01             	mov    0x1(%ecx),%al
40fb23:	84 c0                	test   %al,%al
40fb25:	74 2b                	je     0x40fb52
40fb27:	0f b6 11             	movzbl (%ecx),%edx
40fb2a:	0f b6 c0             	movzbl %al,%eax
40fb2d:	eb 17                	jmp    0x40fb46
40fb2f:	81 fa 00 01 00 00    	cmp    $0x100,%edx
40fb35:	73 13                	jae    0x40fb4a
40fb37:	8a 87 a0 32 42 00    	mov    0x4232a0(%edi),%al
40fb3d:	08 44 16 19          	or     %al,0x19(%esi,%edx,1)
40fb41:	42                   	inc    %edx
40fb42:	0f b6 41 01          	movzbl 0x1(%ecx),%eax
40fb46:	3b d0                	cmp    %eax,%edx
40fb48:	76 e5                	jbe    0x40fb2f
40fb4a:	83 c1 02             	add    $0x2,%ecx
40fb4d:	80 39 00             	cmpb   $0x0,(%ecx)
40fb50:	75 ce                	jne    0x40fb20
40fb52:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40fb55:	47                   	inc    %edi
40fb56:	83 c0 08             	add    $0x8,%eax
40fb59:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40fb5c:	83 ff 04             	cmp    $0x4,%edi
40fb5f:	72 b8                	jb     0x40fb19
40fb61:	53                   	push   %ebx
40fb62:	89 5e 04             	mov    %ebx,0x4(%esi)
40fb65:	c7 46 08 01 00 00 00 	movl   $0x1,0x8(%esi)
40fb6c:	e8 e7 f9 ff ff       	call   0x40f558
40fb71:	83 c4 04             	add    $0x4,%esp
40fb74:	89 86 1c 02 00 00    	mov    %eax,0x21c(%esi)
40fb7a:	8b 45 e0             	mov    -0x20(%ebp),%eax
40fb7d:	8d 4e 0c             	lea    0xc(%esi),%ecx
40fb80:	6a 06                	push   $0x6
40fb82:	8d 90 ac 32 42 00    	lea    0x4232ac(%eax),%edx
40fb88:	5f                   	pop    %edi
40fb89:	66 8b 02             	mov    (%edx),%ax
40fb8c:	8d 52 02             	lea    0x2(%edx),%edx
40fb8f:	66 89 01             	mov    %ax,(%ecx)
40fb92:	8d 49 02             	lea    0x2(%ecx),%ecx
40fb95:	83 ef 01             	sub    $0x1,%edi
40fb98:	75 ef                	jne    0x40fb89
40fb9a:	56                   	push   %esi
40fb9b:	e8 ce fa ff ff       	call   0x40f66e
40fba0:	59                   	pop    %ecx
40fba1:	33 c0                	xor    %eax,%eax
40fba3:	5f                   	pop    %edi
40fba4:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40fba7:	5e                   	pop    %esi
40fba8:	33 cd                	xor    %ebp,%ecx
40fbaa:	5b                   	pop    %ebx
40fbab:	e8 a6 33 ff ff       	call   0x402f56
40fbb0:	8b e5                	mov    %ebp,%esp
40fbb2:	5d                   	pop    %ebp
40fbb3:	c3                   	ret
40fbb4:	8b ff                	mov    %edi,%edi
40fbb6:	55                   	push   %ebp
40fbb7:	8b ec                	mov    %esp,%ebp
40fbb9:	56                   	push   %esi
40fbba:	8b 75 14             	mov    0x14(%ebp),%esi
40fbbd:	85 f6                	test   %esi,%esi
40fbbf:	75 04                	jne    0x40fbc5
40fbc1:	33 c0                	xor    %eax,%eax
40fbc3:	eb 6d                	jmp    0x40fc32
40fbc5:	8b 45 08             	mov    0x8(%ebp),%eax
40fbc8:	85 c0                	test   %eax,%eax
40fbca:	75 13                	jne    0x40fbdf
40fbcc:	e8 36 81 ff ff       	call   0x407d07
40fbd1:	6a 16                	push   $0x16
40fbd3:	5e                   	pop    %esi
40fbd4:	89 30                	mov    %esi,(%eax)
40fbd6:	e8 53 80 ff ff       	call   0x407c2e
40fbdb:	8b c6                	mov    %esi,%eax
40fbdd:	eb 53                	jmp    0x40fc32
40fbdf:	57                   	push   %edi
40fbe0:	8b 7d 10             	mov    0x10(%ebp),%edi
40fbe3:	85 ff                	test   %edi,%edi
40fbe5:	74 14                	je     0x40fbfb
40fbe7:	39 75 0c             	cmp    %esi,0xc(%ebp)
40fbea:	72 0f                	jb     0x40fbfb
40fbec:	56                   	push   %esi
40fbed:	57                   	push   %edi
40fbee:	50                   	push   %eax
40fbef:	e8 ec 88 00 00       	call   0x4184e0
40fbf4:	83 c4 0c             	add    $0xc,%esp
40fbf7:	33 c0                	xor    %eax,%eax
40fbf9:	eb 36                	jmp    0x40fc31
40fbfb:	ff 75 0c             	push   0xc(%ebp)
40fbfe:	6a 00                	push   $0x0
40fc00:	50                   	push   %eax
40fc01:	e8 5a 4e ff ff       	call   0x404a60
40fc06:	83 c4 0c             	add    $0xc,%esp
40fc09:	85 ff                	test   %edi,%edi
40fc0b:	75 09                	jne    0x40fc16
40fc0d:	e8 f5 80 ff ff       	call   0x407d07
40fc12:	6a 16                	push   $0x16
40fc14:	eb 0c                	jmp    0x40fc22
40fc16:	39 75 0c             	cmp    %esi,0xc(%ebp)
40fc19:	73 13                	jae    0x40fc2e
40fc1b:	e8 e7 80 ff ff       	call   0x407d07
40fc20:	6a 22                	push   $0x22
40fc22:	5e                   	pop    %esi
40fc23:	89 30                	mov    %esi,(%eax)
40fc25:	e8 04 80 ff ff       	call   0x407c2e
40fc2a:	8b c6                	mov    %esi,%eax
40fc2c:	eb 03                	jmp    0x40fc31
40fc2e:	6a 16                	push   $0x16
40fc30:	58                   	pop    %eax
40fc31:	5f                   	pop    %edi
40fc32:	5e                   	pop    %esi
40fc33:	5d                   	pop    %ebp
40fc34:	c3                   	ret
40fc35:	8b ff                	mov    %edi,%edi
40fc37:	55                   	push   %ebp
40fc38:	8b ec                	mov    %esp,%ebp
40fc3a:	8b 55 08             	mov    0x8(%ebp),%edx
40fc3d:	57                   	push   %edi
40fc3e:	33 ff                	xor    %edi,%edi
40fc40:	66 39 3a             	cmp    %di,(%edx)
40fc43:	74 21                	je     0x40fc66
40fc45:	56                   	push   %esi
40fc46:	8b ca                	mov    %edx,%ecx
40fc48:	8d 71 02             	lea    0x2(%ecx),%esi
40fc4b:	66 8b 01             	mov    (%ecx),%ax
40fc4e:	83 c1 02             	add    $0x2,%ecx
40fc51:	66 3b c7             	cmp    %di,%ax
40fc54:	75 f5                	jne    0x40fc4b
40fc56:	2b ce                	sub    %esi,%ecx
40fc58:	d1 f9                	sar    $1,%ecx
40fc5a:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
40fc5d:	83 c2 02             	add    $0x2,%edx
40fc60:	66 39 3a             	cmp    %di,(%edx)
40fc63:	75 e1                	jne    0x40fc46
40fc65:	5e                   	pop    %esi
40fc66:	8d 42 02             	lea    0x2(%edx),%eax
40fc69:	5f                   	pop    %edi
40fc6a:	5d                   	pop    %ebp
40fc6b:	c3                   	ret
40fc6c:	8b ff                	mov    %edi,%edi
40fc6e:	55                   	push   %ebp
40fc6f:	8b ec                	mov    %esp,%ebp
40fc71:	51                   	push   %ecx
40fc72:	53                   	push   %ebx
40fc73:	56                   	push   %esi
40fc74:	57                   	push   %edi
40fc75:	ff 15 84 b1 41 00    	call   *0x41b184
40fc7b:	8b f0                	mov    %eax,%esi
40fc7d:	33 ff                	xor    %edi,%edi
40fc7f:	85 f6                	test   %esi,%esi
40fc81:	74 56                	je     0x40fcd9
40fc83:	56                   	push   %esi
40fc84:	e8 ac ff ff ff       	call   0x40fc35
40fc89:	59                   	pop    %ecx
40fc8a:	57                   	push   %edi
40fc8b:	57                   	push   %edi
40fc8c:	57                   	push   %edi
40fc8d:	8b d8                	mov    %eax,%ebx
40fc8f:	57                   	push   %edi
40fc90:	2b de                	sub    %esi,%ebx
40fc92:	d1 fb                	sar    $1,%ebx
40fc94:	53                   	push   %ebx
40fc95:	56                   	push   %esi
40fc96:	57                   	push   %edi
40fc97:	57                   	push   %edi
40fc98:	ff 15 30 b1 41 00    	call   *0x41b130
40fc9e:	89 45 fc             	mov    %eax,-0x4(%ebp)
40fca1:	85 c0                	test   %eax,%eax
40fca3:	74 34                	je     0x40fcd9
40fca5:	50                   	push   %eax
40fca6:	e8 b3 9b ff ff       	call   0x40985e
40fcab:	8b f8                	mov    %eax,%edi
40fcad:	59                   	pop    %ecx
40fcae:	85 ff                	test   %edi,%edi
40fcb0:	74 1c                	je     0x40fcce
40fcb2:	33 c0                	xor    %eax,%eax
40fcb4:	50                   	push   %eax
40fcb5:	50                   	push   %eax
40fcb6:	ff 75 fc             	push   -0x4(%ebp)
40fcb9:	57                   	push   %edi
40fcba:	53                   	push   %ebx
40fcbb:	56                   	push   %esi
40fcbc:	50                   	push   %eax
40fcbd:	50                   	push   %eax
40fcbe:	ff 15 30 b1 41 00    	call   *0x41b130
40fcc4:	85 c0                	test   %eax,%eax
40fcc6:	74 06                	je     0x40fcce
40fcc8:	8b df                	mov    %edi,%ebx
40fcca:	33 ff                	xor    %edi,%edi
40fccc:	eb 02                	jmp    0x40fcd0
40fcce:	33 db                	xor    %ebx,%ebx
40fcd0:	57                   	push   %edi
40fcd1:	e8 4e 9b ff ff       	call   0x409824
40fcd6:	59                   	pop    %ecx
40fcd7:	eb 02                	jmp    0x40fcdb
40fcd9:	8b df                	mov    %edi,%ebx
40fcdb:	85 f6                	test   %esi,%esi
40fcdd:	74 07                	je     0x40fce6
40fcdf:	56                   	push   %esi
40fce0:	ff 15 88 b1 41 00    	call   *0x41b188
40fce6:	5f                   	pop    %edi
40fce7:	5e                   	pop    %esi
40fce8:	8b c3                	mov    %ebx,%eax
40fcea:	5b                   	pop    %ebx
40fceb:	8b e5                	mov    %ebp,%esp
40fced:	5d                   	pop    %ebp
40fcee:	c3                   	ret
40fcef:	8b ff                	mov    %edi,%edi
40fcf1:	56                   	push   %esi
40fcf2:	57                   	push   %edi
40fcf3:	ff 15 84 b1 41 00    	call   *0x41b184
40fcf9:	8b f0                	mov    %eax,%esi
40fcfb:	85 f6                	test   %esi,%esi
40fcfd:	75 04                	jne    0x40fd03
40fcff:	33 ff                	xor    %edi,%edi
40fd01:	eb 37                	jmp    0x40fd3a
40fd03:	53                   	push   %ebx
40fd04:	56                   	push   %esi
40fd05:	e8 2b ff ff ff       	call   0x40fc35
40fd0a:	2b c6                	sub    %esi,%eax
40fd0c:	d1 f8                	sar    $1,%eax
40fd0e:	8d 1c 00             	lea    (%eax,%eax,1),%ebx
40fd11:	53                   	push   %ebx
40fd12:	e8 47 9b ff ff       	call   0x40985e
40fd17:	8b f8                	mov    %eax,%edi
40fd19:	59                   	pop    %ecx
40fd1a:	59                   	pop    %ecx
40fd1b:	85 ff                	test   %edi,%edi
40fd1d:	74 0b                	je     0x40fd2a
40fd1f:	53                   	push   %ebx
40fd20:	56                   	push   %esi
40fd21:	57                   	push   %edi
40fd22:	e8 b9 87 00 00       	call   0x4184e0
40fd27:	83 c4 0c             	add    $0xc,%esp
40fd2a:	6a 00                	push   $0x0
40fd2c:	e8 f3 9a ff ff       	call   0x409824
40fd31:	59                   	pop    %ecx
40fd32:	56                   	push   %esi
40fd33:	ff 15 88 b1 41 00    	call   *0x41b188
40fd39:	5b                   	pop    %ebx
40fd3a:	8b c7                	mov    %edi,%eax
40fd3c:	5f                   	pop    %edi
40fd3d:	5e                   	pop    %esi
40fd3e:	c3                   	ret
40fd3f:	8b ff                	mov    %edi,%edi
40fd41:	55                   	push   %ebp
40fd42:	8b ec                	mov    %esp,%ebp
40fd44:	83 ec 0c             	sub    $0xc,%esp
40fd47:	53                   	push   %ebx
40fd48:	8b 5d 08             	mov    0x8(%ebp),%ebx
40fd4b:	85 db                	test   %ebx,%ebx
40fd4d:	75 10                	jne    0x40fd5f
40fd4f:	e8 b3 7f ff ff       	call   0x407d07
40fd54:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40fd5a:	83 c8 ff             	or     $0xffffffff,%eax
40fd5d:	eb 7c                	jmp    0x40fddb
40fd5f:	56                   	push   %esi
40fd60:	57                   	push   %edi
40fd61:	6a 3d                	push   $0x3d
40fd63:	53                   	push   %ebx
40fd64:	8b fb                	mov    %ebx,%edi
40fd66:	e8 35 8e 00 00       	call   0x418ba0
40fd6b:	89 45 f4             	mov    %eax,-0xc(%ebp)
40fd6e:	59                   	pop    %ecx
40fd6f:	59                   	pop    %ecx
40fd70:	85 c0                	test   %eax,%eax
40fd72:	74 4e                	je     0x40fdc2
40fd74:	3b c3                	cmp    %ebx,%eax
40fd76:	74 4a                	je     0x40fdc2
40fd78:	80 78 01 00          	cmpb   $0x0,0x1(%eax)
40fd7c:	8b 35 4c 41 42 00    	mov    0x42414c,%esi
40fd82:	0f 94 c0             	sete   %al
40fd85:	88 45 ff             	mov    %al,-0x1(%ebp)
40fd88:	3b 35 58 41 42 00    	cmp    0x424158,%esi
40fd8e:	75 12                	jne    0x40fda2
40fd90:	56                   	push   %esi
40fd91:	e8 21 04 00 00       	call   0x4101b7
40fd96:	8b f0                	mov    %eax,%esi
40fd98:	8a 45 ff             	mov    -0x1(%ebp),%al
40fd9b:	59                   	pop    %ecx
40fd9c:	89 35 4c 41 42 00    	mov    %esi,0x42414c
40fda2:	33 db                	xor    %ebx,%ebx
40fda4:	85 f6                	test   %esi,%esi
40fda6:	0f 85 8e 00 00 00    	jne    0x40fe3a
40fdac:	39 5d 0c             	cmp    %ebx,0xc(%ebp)
40fdaf:	74 2f                	je     0x40fde0
40fdb1:	39 1d 50 41 42 00    	cmp    %ebx,0x424150
40fdb7:	74 27                	je     0x40fde0
40fdb9:	e8 ef 8e ff ff       	call   0x408cad
40fdbe:	85 c0                	test   %eax,%eax
40fdc0:	75 6e                	jne    0x40fe30
40fdc2:	e8 40 7f ff ff       	call   0x407d07
40fdc7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40fdcd:	83 cb ff             	or     $0xffffffff,%ebx
40fdd0:	57                   	push   %edi
40fdd1:	e8 4e 9a ff ff       	call   0x409824
40fdd6:	59                   	pop    %ecx
40fdd7:	5f                   	pop    %edi
40fdd8:	8b c3                	mov    %ebx,%eax
40fdda:	5e                   	pop    %esi
40fddb:	5b                   	pop    %ebx
40fddc:	8b e5                	mov    %ebp,%esp
40fdde:	5d                   	pop    %ebp
40fddf:	c3                   	ret
40fde0:	84 c0                	test   %al,%al
40fde2:	74 04                	je     0x40fde8
40fde4:	33 db                	xor    %ebx,%ebx
40fde6:	eb e8                	jmp    0x40fdd0
40fde8:	6a 04                	push   $0x4
40fdea:	6a 01                	push   $0x1
40fdec:	e8 bb 9a ff ff       	call   0x4098ac
40fdf1:	53                   	push   %ebx
40fdf2:	a3 4c 41 42 00       	mov    %eax,0x42414c
40fdf7:	e8 28 9a ff ff       	call   0x409824
40fdfc:	8b 35 4c 41 42 00    	mov    0x42414c,%esi
40fe02:	83 c4 0c             	add    $0xc,%esp
40fe05:	85 f6                	test   %esi,%esi
40fe07:	74 c4                	je     0x40fdcd
40fe09:	39 1d 50 41 42 00    	cmp    %ebx,0x424150
40fe0f:	75 25                	jne    0x40fe36
40fe11:	6a 04                	push   $0x4
40fe13:	6a 01                	push   $0x1
40fe15:	e8 92 9a ff ff       	call   0x4098ac
40fe1a:	53                   	push   %ebx
40fe1b:	a3 50 41 42 00       	mov    %eax,0x424150
40fe20:	e8 ff 99 ff ff       	call   0x409824
40fe25:	83 c4 0c             	add    $0xc,%esp
40fe28:	39 1d 50 41 42 00    	cmp    %ebx,0x424150
40fe2e:	74 9d                	je     0x40fdcd
40fe30:	8b 35 4c 41 42 00    	mov    0x42414c,%esi
40fe36:	85 f6                	test   %esi,%esi