406e97:	83 e2 03             	and    $0x3,%edx
406e9a:	c1 e9 02             	shr    $0x2,%ecx
406e9d:	74 06                	je     0x406ea5
406e9f:	f3 ab                	rep stos %eax,%es:(%edi)
406ea1:	85 d2                	test   %edx,%edx
406ea3:	74 0a                	je     0x406eaf
406ea5:	88 07                	mov    %al,(%edi)
406ea7:	83 c7 01             	add    $0x1,%edi
406eaa:	83 ea 01             	sub    $0x1,%edx
406ead:	75 f6                	jne    0x406ea5
406eaf:	8b 44 24 08          	mov    0x8(%esp),%eax
406eb3:	5f                   	pop    %edi
406eb4:	c3                   	ret
406eb5:	8b 44 24 04          	mov    0x4(%esp),%eax
406eb9:	c3                   	ret
406eba:	6a 10                	push   $0x10
406ebc:	68 28 e8 41 00       	push   $0x41e828
406ec1:	e8 ba bc ff ff       	call   0x402b80
406ec6:	33 c0                	xor    %eax,%eax
406ec8:	8b 5d 08             	mov    0x8(%ebp),%ebx
406ecb:	33 ff                	xor    %edi,%edi
406ecd:	3b df                	cmp    %edi,%ebx
406ecf:	0f 95 c0             	setne  %al
406ed2:	3b c7                	cmp    %edi,%eax
406ed4:	75 1d                	jne    0x406ef3
406ed6:	e8 71 bf ff ff       	call   0x402e4c
406edb:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406ee1:	57                   	push   %edi
406ee2:	57                   	push   %edi
406ee3:	57                   	push   %edi
406ee4:	57                   	push   %edi
406ee5:	57                   	push   %edi
406ee6:	e8 56 cd ff ff       	call   0x403c41
406eeb:	83 c4 14             	add    $0x14,%esp
406eee:	83 c8 ff             	or     $0xffffffff,%eax
406ef1:	eb 53                	jmp    0x406f46
406ef3:	83 3d 98 2d de 02 03 	cmpl   $0x3,0x2de2d98
406efa:	75 38                	jne    0x406f34
406efc:	6a 04                	push   $0x4
406efe:	e8 d4 cb ff ff       	call   0x403ad7
406f03:	59                   	pop    %ecx
406f04:	89 7d fc             	mov    %edi,-0x4(%ebp)
406f07:	53                   	push   %ebx
406f08:	e8 8d e6 ff ff       	call   0x40559a
406f0d:	59                   	pop    %ecx
406f0e:	89 45 e0             	mov    %eax,-0x20(%ebp)
406f11:	3b c7                	cmp    %edi,%eax
406f13:	74 0b                	je     0x406f20
406f15:	8b 73 fc             	mov    -0x4(%ebx),%esi
406f18:	83 ee 09             	sub    $0x9,%esi
406f1b:	89 75 e4             	mov    %esi,-0x1c(%ebp)
406f1e:	eb 03                	jmp    0x406f23
406f20:	8b 75 e4             	mov    -0x1c(%ebp),%esi
406f23:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406f2a:	e8 25 00 00 00       	call   0x406f54
406f2f:	39 7d e0             	cmp    %edi,-0x20(%ebp)
406f32:	75 10                	jne    0x406f44
406f34:	53                   	push   %ebx
406f35:	57                   	push   %edi
406f36:	ff 35 24 0e 43 00    	push   0x430e24
406f3c:	ff 15 14 d1 41 00    	call   *0x41d114
406f42:	8b f0                	mov    %eax,%esi
406f44:	8b c6                	mov    %esi,%eax
406f46:	e8 7a bc ff ff       	call   0x402bc5
406f4b:	c3                   	ret
406f4c:	33 ff                	xor    %edi,%edi
406f4e:	8b 5d 08             	mov    0x8(%ebp),%ebx
406f51:	8b 75 e4             	mov    -0x1c(%ebp),%esi
406f54:	6a 04                	push   $0x4
406f56:	e8 a2 ca ff ff       	call   0x4039fd
406f5b:	59                   	pop    %ecx
406f5c:	c3                   	ret
406f5d:	6a 02                	push   $0x2
406f5f:	e8 99 a8 ff ff       	call   0x4017fd
406f64:	59                   	pop    %ecx
406f65:	c3                   	ret
406f66:	8b ff                	mov    %edi,%edi
406f68:	55                   	push   %ebp
406f69:	8b ec                	mov    %esp,%ebp
406f6b:	83 ec 10             	sub    $0x10,%esp
406f6e:	ff 75 0c             	push   0xc(%ebp)
406f71:	8d 4d f0             	lea    -0x10(%ebp),%ecx
406f74:	e8 55 d6 ff ff       	call   0x4045ce
406f79:	8b 45 f0             	mov    -0x10(%ebp),%eax
406f7c:	83 b8 ac 00 00 00 01 	cmpl   $0x1,0xac(%eax)
406f83:	7e 13                	jle    0x406f98
406f85:	8d 45 f0             	lea    -0x10(%ebp),%eax
406f88:	50                   	push   %eax
406f89:	6a 04                	push   $0x4
406f8b:	ff 75 08             	push   0x8(%ebp)
406f8e:	e8 5e 1b 00 00       	call   0x408af1
406f93:	83 c4 0c             	add    $0xc,%esp
406f96:	eb 10                	jmp    0x406fa8
406f98:	8b 80 c8 00 00 00    	mov    0xc8(%eax),%eax
406f9e:	8b 4d 08             	mov    0x8(%ebp),%ecx
406fa1:	0f b7 04 48          	movzwl (%eax,%ecx,2),%eax
406fa5:	83 e0 04             	and    $0x4,%eax
406fa8:	80 7d fc 00          	cmpb   $0x0,-0x4(%ebp)
406fac:	74 07                	je     0x406fb5
406fae:	8b 4d f8             	mov    -0x8(%ebp),%ecx
406fb1:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
406fb5:	c9                   	leave
406fb6:	c3                   	ret
406fb7:	8b ff                	mov    %edi,%edi
406fb9:	55                   	push   %ebp
406fba:	8b ec                	mov    %esp,%ebp
406fbc:	83 3d ec 0f 43 00 00 	cmpl   $0x0,0x430fec
406fc3:	75 12                	jne    0x406fd7
406fc5:	8b 45 08             	mov    0x8(%ebp),%eax
406fc8:	8b 0d 28 fb 41 00    	mov    0x41fb28,%ecx
406fce:	0f b7 04 41          	movzwl (%ecx,%eax,2),%eax
406fd2:	83 e0 04             	and    $0x4,%eax
406fd5:	5d                   	pop    %ebp
406fd6:	c3                   	ret
406fd7:	6a 00                	push   $0x0
406fd9:	ff 75 08             	push   0x8(%ebp)
406fdc:	e8 85 ff ff ff       	call   0x406f66
406fe1:	59                   	pop    %ecx
406fe2:	59                   	pop    %ecx
406fe3:	5d                   	pop    %ebp
406fe4:	c3                   	ret
406fe5:	8b ff                	mov    %edi,%edi
406fe7:	55                   	push   %ebp
406fe8:	8b ec                	mov    %esp,%ebp
406fea:	8b 45 08             	mov    0x8(%ebp),%eax
406fed:	85 c0                	test   %eax,%eax
406fef:	74 12                	je     0x407003
406ff1:	83 e8 08             	sub    $0x8,%eax
406ff4:	81 38 dd dd 00 00    	cmpl   $0xdddd,(%eax)
406ffa:	75 07                	jne    0x407003
406ffc:	50                   	push   %eax
406ffd:	e8 a1 dd ff ff       	call   0x404da3
407002:	59                   	pop    %ecx
407003:	5d                   	pop    %ebp
407004:	c3                   	ret
407005:	8b ff                	mov    %edi,%edi
407007:	55                   	push   %ebp
407008:	8b ec                	mov    %esp,%ebp
40700a:	83 ec 14             	sub    $0x14,%esp
40700d:	a1 04 f0 41 00       	mov    0x41f004,%eax
407012:	33 c5                	xor    %ebp,%eax
407014:	89 45 fc             	mov    %eax,-0x4(%ebp)
407017:	53                   	push   %ebx
407018:	56                   	push   %esi
407019:	33 db                	xor    %ebx,%ebx
40701b:	57                   	push   %edi
40701c:	8b f1                	mov    %ecx,%esi
40701e:	39 1d 14 10 43 00    	cmp    %ebx,0x431014
407024:	75 38                	jne    0x40705e
407026:	53                   	push   %ebx
407027:	53                   	push   %ebx
407028:	33 ff                	xor    %edi,%edi
40702a:	47                   	inc    %edi
40702b:	57                   	push   %edi
40702c:	68 38 db 41 00       	push   $0x41db38
407031:	68 00 01 00 00       	push   $0x100
407036:	53                   	push   %ebx
407037:	ff 15 3c d0 41 00    	call   *0x41d03c
40703d:	85 c0                	test   %eax,%eax
40703f:	74 08                	je     0x407049
407041:	89 3d 14 10 43 00    	mov    %edi,0x431014
407047:	eb 15                	jmp    0x40705e
407049:	ff 15 58 d0 41 00    	call   *0x41d058
40704f:	83 f8 78             	cmp    $0x78,%eax
407052:	75 0a                	jne    0x40705e
407054:	c7 05 14 10 43 00 02 	movl   $0x2,0x431014
40705b:	00 00 00
40705e:	39 5d 14             	cmp    %ebx,0x14(%ebp)
407061:	7e 22                	jle    0x407085
407063:	8b 4d 14             	mov    0x14(%ebp),%ecx
407066:	8b 45 10             	mov    0x10(%ebp),%eax
407069:	49                   	dec    %ecx
40706a:	38 18                	cmp    %bl,(%eax)
40706c:	74 08                	je     0x407076
40706e:	40                   	inc    %eax
40706f:	3b cb                	cmp    %ebx,%ecx
407071:	75 f6                	jne    0x407069
407073:	83 c9 ff             	or     $0xffffffff,%ecx
407076:	8b 45 14             	mov    0x14(%ebp),%eax
407079:	2b c1                	sub    %ecx,%eax
40707b:	48                   	dec    %eax
40707c:	3b 45 14             	cmp    0x14(%ebp),%eax
40707f:	7d 01                	jge    0x407082
407081:	40                   	inc    %eax
407082:	89 45 14             	mov    %eax,0x14(%ebp)
407085:	a1 14 10 43 00       	mov    0x431014,%eax
40708a:	83 f8 02             	cmp    $0x2,%eax
40708d:	0f 84 ac 01 00 00    	je     0x40723f
407093:	3b c3                	cmp    %ebx,%eax
407095:	0f 84 a4 01 00 00    	je     0x40723f
40709b:	83 f8 01             	cmp    $0x1,%eax
40709e:	0f 85 cc 01 00 00    	jne    0x407270
4070a4:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4070a7:	39 5d 20             	cmp    %ebx,0x20(%ebp)
4070aa:	75 08                	jne    0x4070b4
4070ac:	8b 06                	mov    (%esi),%eax
4070ae:	8b 40 04             	mov    0x4(%eax),%eax
4070b1:	89 45 20             	mov    %eax,0x20(%ebp)
4070b4:	8b 35 20 d1 41 00    	mov    0x41d120,%esi
4070ba:	33 c0                	xor    %eax,%eax
4070bc:	39 5d 24             	cmp    %ebx,0x24(%ebp)
4070bf:	53                   	push   %ebx
4070c0:	53                   	push   %ebx
4070c1:	ff 75 14             	push   0x14(%ebp)
4070c4:	0f 95 c0             	setne  %al
4070c7:	ff 75 10             	push   0x10(%ebp)
4070ca:	8d 04 c5 01 00 00 00 	lea    0x1(,%eax,8),%eax
4070d1:	50                   	push   %eax
4070d2:	ff 75 20             	push   0x20(%ebp)
4070d5:	ff d6                	call   *%esi
4070d7:	8b f8                	mov    %eax,%edi
4070d9:	3b fb                	cmp    %ebx,%edi
4070db:	0f 84 8f 01 00 00    	je     0x407270
4070e1:	7e 43                	jle    0x407126
4070e3:	6a e0                	push   $0xffffffe0
4070e5:	33 d2                	xor    %edx,%edx
4070e7:	58                   	pop    %eax
4070e8:	f7 f7                	div    %edi
4070ea:	83 f8 02             	cmp    $0x2,%eax
4070ed:	72 37                	jb     0x407126
4070ef:	8d 44 3f 08          	lea    0x8(%edi,%edi,1),%eax
4070f3:	3d 00 04 00 00       	cmp    $0x400,%eax
4070f8:	77 13                	ja     0x40710d
4070fa:	e8 b1 1a 00 00       	call   0x408bb0
4070ff:	8b c4                	mov    %esp,%eax
407101:	3b c3                	cmp    %ebx,%eax
407103:	74 1c                	je     0x407121
407105:	c7 00 cc cc 00 00    	movl   $0xcccc,(%eax)
40710b:	eb 11                	jmp    0x40711e
40710d:	50                   	push   %eax
40710e:	e8 27 05 00 00       	call   0x40763a
407113:	59                   	pop    %ecx
407114:	3b c3                	cmp    %ebx,%eax
407116:	74 09                	je     0x407121
407118:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
40711e:	83 c0 08             	add    $0x8,%eax
407121:	89 45 f4             	mov    %eax,-0xc(%ebp)
407124:	eb 03                	jmp    0x407129
407126:	89 5d f4             	mov    %ebx,-0xc(%ebp)
407129:	39 5d f4             	cmp    %ebx,-0xc(%ebp)
40712c:	0f 84 3e 01 00 00    	je     0x407270
407132:	57                   	push   %edi
407133:	ff 75 f4             	push   -0xc(%ebp)
407136:	ff 75 14             	push   0x14(%ebp)
407139:	ff 75 10             	push   0x10(%ebp)
40713c:	6a 01                	push   $0x1
40713e:	ff 75 20             	push   0x20(%ebp)
407141:	ff d6                	call   *%esi
407143:	85 c0                	test   %eax,%eax
407145:	0f 84 e3 00 00 00    	je     0x40722e
40714b:	8b 35 3c d0 41 00    	mov    0x41d03c,%esi
407151:	53                   	push   %ebx
407152:	53                   	push   %ebx
407153:	57                   	push   %edi
407154:	ff 75 f4             	push   -0xc(%ebp)
407157:	ff 75 0c             	push   0xc(%ebp)
40715a:	ff 75 08             	push   0x8(%ebp)
40715d:	ff d6                	call   *%esi
40715f:	8b c8                	mov    %eax,%ecx
407161:	89 4d f8             	mov    %ecx,-0x8(%ebp)
407164:	3b cb                	cmp    %ebx,%ecx
407166:	0f 84 c2 00 00 00    	je     0x40722e
40716c:	f7 45 0c 00 04 00 00 	testl  $0x400,0xc(%ebp)
407173:	74 29                	je     0x40719e
407175:	39 5d 1c             	cmp    %ebx,0x1c(%ebp)
407178:	0f 84 b0 00 00 00    	je     0x40722e
40717e:	3b 4d 1c             	cmp    0x1c(%ebp),%ecx
407181:	0f 8f a7 00 00 00    	jg     0x40722e
407187:	ff 75 1c             	push   0x1c(%ebp)
40718a:	ff 75 18             	push   0x18(%ebp)
40718d:	57                   	push   %edi
40718e:	ff 75 f4             	push   -0xc(%ebp)
407191:	ff 75 0c             	push   0xc(%ebp)
407194:	ff 75 08             	push   0x8(%ebp)
407197:	ff d6                	call   *%esi
407199:	e9 90 00 00 00       	jmp    0x40722e
40719e:	3b cb                	cmp    %ebx,%ecx
4071a0:	7e 45                	jle    0x4071e7
4071a2:	6a e0                	push   $0xffffffe0
4071a4:	33 d2                	xor    %edx,%edx
4071a6:	58                   	pop    %eax
4071a7:	f7 f1                	div    %ecx
4071a9:	83 f8 02             	cmp    $0x2,%eax
4071ac:	72 39                	jb     0x4071e7
4071ae:	8d 44 09 08          	lea    0x8(%ecx,%ecx,1),%eax
4071b2:	3d 00 04 00 00       	cmp    $0x400,%eax
4071b7:	77 16                	ja     0x4071cf
4071b9:	e8 f2 19 00 00       	call   0x408bb0
4071be:	8b f4                	mov    %esp,%esi
4071c0:	3b f3                	cmp    %ebx,%esi
4071c2:	74 6a                	je     0x40722e
4071c4:	c7 06 cc cc 00 00    	movl   $0xcccc,(%esi)
4071ca:	83 c6 08             	add    $0x8,%esi
4071cd:	eb 1a                	jmp    0x4071e9
4071cf:	50                   	push   %eax
4071d0:	e8 65 04 00 00       	call   0x40763a
4071d5:	59                   	pop    %ecx
4071d6:	3b c3                	cmp    %ebx,%eax
4071d8:	74 09                	je     0x4071e3
4071da:	c7 00 dd dd 00 00    	movl   $0xdddd,(%eax)
4071e0:	83 c0 08             	add    $0x8,%eax
4071e3:	8b f0                	mov    %eax,%esi
4071e5:	eb 02                	jmp    0x4071e9
4071e7:	33 f6                	xor    %esi,%esi
4071e9:	3b f3                	cmp    %ebx,%esi
4071eb:	74 41                	je     0x40722e
4071ed:	ff 75 f8             	push   -0x8(%ebp)
4071f0:	56                   	push   %esi
4071f1:	57                   	push   %edi
4071f2:	ff 75 f4             	push   -0xc(%ebp)
4071f5:	ff 75 0c             	push   0xc(%ebp)
4071f8:	ff 75 08             	push   0x8(%ebp)
4071fb:	ff 15 3c d0 41 00    	call   *0x41d03c
407201:	85 c0                	test   %eax,%eax
407203:	74 22                	je     0x407227
407205:	53                   	push   %ebx
407206:	53                   	push   %ebx
407207:	39 5d 1c             	cmp    %ebx,0x1c(%ebp)
40720a:	75 04                	jne    0x407210
40720c:	53                   	push   %ebx
40720d:	53                   	push   %ebx
40720e:	eb 06                	jmp    0x407216
407210:	ff 75 1c             	push   0x1c(%ebp)
407213:	ff 75 18             	push   0x18(%ebp)
407216:	ff 75 f8             	push   -0x8(%ebp)
407219:	56                   	push   %esi
40721a:	53                   	push   %ebx
40721b:	ff 75 20             	push   0x20(%ebp)
40721e:	ff 15 98 d0 41 00    	call   *0x41d098
407224:	89 45 f8             	mov    %eax,-0x8(%ebp)
407227:	56                   	push   %esi
407228:	e8 b8 fd ff ff       	call   0x406fe5
40722d:	59                   	pop    %ecx
40722e:	ff 75 f4             	push   -0xc(%ebp)
407231:	e8 af fd ff ff       	call   0x406fe5
407236:	8b 45 f8             	mov    -0x8(%ebp),%eax
407239:	59                   	pop    %ecx
40723a:	e9 59 01 00 00       	jmp    0x407398
40723f:	89 5d f4             	mov    %ebx,-0xc(%ebp)
407242:	89 5d f0             	mov    %ebx,-0x10(%ebp)
407245:	39 5d 08             	cmp    %ebx,0x8(%ebp)
407248:	75 08                	jne    0x407252
40724a:	8b 06                	mov    (%esi),%eax
40724c:	8b 40 14             	mov    0x14(%eax),%eax
40724f:	89 45 08             	mov    %eax,0x8(%ebp)
407252:	39 5d 20             	cmp    %ebx,0x20(%ebp)
407255:	75 08                	jne    0x40725f
407257:	8b 06                	mov    (%esi),%eax
407259:	8b 40 04             	mov    0x4(%eax),%eax
40725c:	89 45 20             	mov    %eax,0x20(%ebp)