40d1ff:	0f b6 54 1e ff       	movzbl -0x1(%esi,%ebx,1),%edx
40d204:	88 54 18 ff          	mov    %dl,-0x1(%eax,%ebx,1)
40d208:	0f b6 44 1e ff       	movzbl -0x1(%esi,%ebx,1),%eax
40d20d:	0f b6 c0             	movzbl %al,%eax
40d210:	0f a3 05 08 b8 49 00 	bt     %eax,0x49b808
40d217:	73 13                	jae    0x40d22c
40d219:	43                   	inc    %ebx
40d21a:	8b c7                	mov    %edi,%eax
40d21c:	e8 43 7a ff ff       	call   0x404c64
40d221:	0f b6 54 1e ff       	movzbl -0x1(%esi,%ebx,1),%edx
40d226:	88 54 18 ff          	mov    %dl,-0x1(%eax,%ebx,1)
40d22a:	eb 19                	jmp    0x40d245
40d22c:	8b 07                	mov    (%edi),%eax
40d22e:	0f b6 44 18 ff       	movzbl -0x1(%eax,%ebx,1),%eax
40d233:	04 bf                	add    $0xbf,%al
40d235:	2c 1a                	sub    $0x1a,%al
40d237:	73 0c                	jae    0x40d245
40d239:	8b c7                	mov    %edi,%eax
40d23b:	e8 24 7a ff ff       	call   0x404c64
40d240:	80 44 18 ff 20       	addb   $0x20,-0x1(%eax,%ebx,1)
40d245:	43                   	inc    %ebx
40d246:	3b eb                	cmp    %ebx,%ebp
40d248:	7d ae                	jge    0x40d1f8
40d24a:	eb 09                	jmp    0x40d255
40d24c:	8b d7                	mov    %edi,%edx
40d24e:	8b c6                	mov    %esi,%eax
40d250:	e8 6b b8 ff ff       	call   0x408ac0
40d255:	5d                   	pop    %ebp
40d256:	5f                   	pop    %edi
40d257:	5e                   	pop    %esi
40d258:	5b                   	pop    %ebx
40d259:	c3                   	ret
40d25a:	8b c0                	mov    %eax,%eax
40d25c:	53                   	push   %ebx
40d25d:	56                   	push   %esi
40d25e:	57                   	push   %edi
40d25f:	55                   	push   %ebp
40d260:	83 c4 f8             	add    $0xfffffff8,%esp
40d263:	8b ea                	mov    %edx,%ebp
40d265:	8b f0                	mov    %eax,%esi
40d267:	33 db                	xor    %ebx,%ebx
40d269:	85 f6                	test   %esi,%esi
40d26b:	0f 84 81 00 00 00    	je     0x40d2f2
40d271:	80 3e 00             	cmpb   $0x0,(%esi)
40d274:	74 7c                	je     0x40d2f2
40d276:	85 ed                	test   %ebp,%ebp
40d278:	74 78                	je     0x40d2f2
40d27a:	80 7d 00 00          	cmpb   $0x0,0x0(%ebp)
40d27e:	74 72                	je     0x40d2f2
40d280:	8b c6                	mov    %esi,%eax
40d282:	e8 c5 c0 ff ff       	call   0x40934c
40d287:	89 04 24             	mov    %eax,(%esp)
40d28a:	8b c5                	mov    %ebp,%eax
40d28c:	e8 bb c0 ff ff       	call   0x40934c
40d291:	8b f8                	mov    %eax,%edi
40d293:	8b d5                	mov    %ebp,%edx
40d295:	8b c6                	mov    %esi,%eax
40d297:	e8 84 c2 ff ff       	call   0x409520
40d29c:	8b d8                	mov    %eax,%ebx
40d29e:	eb 3f                	jmp    0x40d2df
40d2a0:	8b d3                	mov    %ebx,%edx
40d2a2:	2b d6                	sub    %esi,%edx
40d2a4:	8b c6                	mov    %esi,%eax
40d2a6:	e8 81 fb ff ff       	call   0x40ce2c
40d2ab:	88 44 24 04          	mov    %al,0x4(%esp)
40d2af:	80 7c 24 04 02       	cmpb   $0x2,0x4(%esp)
40d2b4:	74 15                	je     0x40d2cb
40d2b6:	57                   	push   %edi
40d2b7:	55                   	push   %ebp
40d2b8:	57                   	push   %edi
40d2b9:	53                   	push   %ebx
40d2ba:	6a 00                	push   $0x0
40d2bc:	68 00 04 00 00       	push   $0x400
40d2c1:	e8 c2 96 ff ff       	call   0x406988
40d2c6:	83 f8 02             	cmp    $0x2,%eax
40d2c9:	74 27                	je     0x40d2f2
40d2cb:	80 7c 24 04 01       	cmpb   $0x1,0x4(%esp)
40d2d0:	75 01                	jne    0x40d2d3
40d2d2:	43                   	inc    %ebx
40d2d3:	43                   	inc    %ebx
40d2d4:	8b d5                	mov    %ebp,%edx
40d2d6:	8b c3                	mov    %ebx,%eax
40d2d8:	e8 43 c2 ff ff       	call   0x409520
40d2dd:	8b d8                	mov    %eax,%ebx
40d2df:	85 db                	test   %ebx,%ebx
40d2e1:	74 0d                	je     0x40d2f0
40d2e3:	8b c3                	mov    %ebx,%eax
40d2e5:	2b c6                	sub    %esi,%eax
40d2e7:	8b 14 24             	mov    (%esp),%edx
40d2ea:	2b d0                	sub    %eax,%edx
40d2ec:	3b fa                	cmp    %edx,%edi
40d2ee:	76 b0                	jbe    0x40d2a0
40d2f0:	33 db                	xor    %ebx,%ebx
40d2f2:	8b c3                	mov    %ebx,%eax
40d2f4:	59                   	pop    %ecx
40d2f5:	5a                   	pop    %edx
40d2f6:	5d                   	pop    %ebp
40d2f7:	5f                   	pop    %edi
40d2f8:	5e                   	pop    %esi
40d2f9:	5b                   	pop    %ebx
40d2fa:	c3                   	ret
40d2fb:	90                   	nop
40d2fc:	53                   	push   %ebx
40d2fd:	56                   	push   %esi
40d2fe:	57                   	push   %edi
40d2ff:	8b da                	mov    %edx,%ebx
40d301:	8b f0                	mov    %eax,%esi
40d303:	8b d3                	mov    %ebx,%edx
40d305:	8b c6                	mov    %esi,%eax
40d307:	e8 24 00 00 00       	call   0x40d330
40d30c:	8b f0                	mov    %eax,%esi
40d30e:	8b fe                	mov    %esi,%edi
40d310:	84 db                	test   %bl,%bl
40d312:	74 16                	je     0x40d32a
40d314:	85 f6                	test   %esi,%esi
40d316:	74 12                	je     0x40d32a
40d318:	8b fe                	mov    %esi,%edi
40d31a:	46                   	inc    %esi
40d31b:	8b d3                	mov    %ebx,%edx
40d31d:	8b c6                	mov    %esi,%eax
40d31f:	e8 0c 00 00 00       	call   0x40d330
40d324:	8b f0                	mov    %eax,%esi
40d326:	85 f6                	test   %esi,%esi
40d328:	75 ee                	jne    0x40d318
40d32a:	8b c7                	mov    %edi,%eax
40d32c:	5f                   	pop    %edi
40d32d:	5e                   	pop    %esi
40d32e:	5b                   	pop    %ebx
40d32f:	c3                   	ret
40d330:	53                   	push   %ebx
40d331:	56                   	push   %esi
40d332:	57                   	push   %edi
40d333:	8b da                	mov    %edx,%ebx
40d335:	8b f0                	mov    %eax,%esi
40d337:	8b d3                	mov    %ebx,%edx
40d339:	8b c6                	mov    %esi,%eax
40d33b:	e8 cc c1 ff ff       	call   0x40950c
40d340:	8b f8                	mov    %eax,%edi
40d342:	85 ff                	test   %edi,%edi
40d344:	74 24                	je     0x40d36a
40d346:	8b d7                	mov    %edi,%edx
40d348:	2b d6                	sub    %esi,%edx
40d34a:	8b c6                	mov    %esi,%eax
40d34c:	e8 db fa ff ff       	call   0x40ce2c
40d351:	2c 01                	sub    $0x1,%al
40d353:	72 15                	jb     0x40d36a
40d355:	74 02                	je     0x40d359
40d357:	eb 01                	jmp    0x40d35a
40d359:	47                   	inc    %edi
40d35a:	47                   	inc    %edi
40d35b:	8b d3                	mov    %ebx,%edx
40d35d:	8b c7                	mov    %edi,%eax
40d35f:	e8 a8 c1 ff ff       	call   0x40950c
40d364:	8b f8                	mov    %eax,%edi
40d366:	85 ff                	test   %edi,%edi
40d368:	75 dc                	jne    0x40d346
40d36a:	8b c7                	mov    %edi,%eax
40d36c:	5f                   	pop    %edi
40d36d:	5e                   	pop    %esi
40d36e:	5b                   	pop    %ebx
40d36f:	c3                   	ret
40d370:	55                   	push   %ebp
40d371:	8b ec                	mov    %esp,%ebp
40d373:	51                   	push   %ecx
40d374:	53                   	push   %ebx
40d375:	56                   	push   %esi
40d376:	57                   	push   %edi
40d377:	8b 7d 08             	mov    0x8(%ebp),%edi
40d37a:	83 c7 ec             	add    $0xffffffec,%edi
40d37d:	57                   	push   %edi
40d37e:	6a 00                	push   $0x0
40d380:	e8 63 96 ff ff       	call   0x4069e8
40d385:	33 f6                	xor    %esi,%esi
40d387:	eb 2a                	jmp    0x40d3b3
40d389:	0f b6 44 37 06       	movzbl 0x6(%edi,%esi,1),%eax
40d38e:	0f b6 5c 37 07       	movzbl 0x7(%edi,%esi,1),%ebx
40d393:	2a d8                	sub    %al,%bl
40d395:	72 19                	jb     0x40d3b0
40d397:	43                   	inc    %ebx
40d398:	88 45 ff             	mov    %al,-0x1(%ebp)
40d39b:	0f b6 45 ff          	movzbl -0x1(%ebp),%eax
40d39f:	0f b6 c0             	movzbl %al,%eax
40d3a2:	0f ab 05 08 b8 49 00 	bts    %eax,0x49b808
40d3a9:	fe 45 ff             	incb   -0x1(%ebp)
40d3ac:	fe cb                	dec    %bl
40d3ae:	75 eb                	jne    0x40d39b
40d3b0:	83 c6 02             	add    $0x2,%esi
40d3b3:	83 fe 0c             	cmp    $0xc,%esi
40d3b6:	7d 0b                	jge    0x40d3c3
40d3b8:	0f b6 44 37 06       	movzbl 0x6(%edi,%esi,1),%eax
40d3bd:	0a 44 37 07          	or     0x7(%edi,%esi,1),%al
40d3c1:	75 c6                	jne    0x40d389
40d3c3:	5f                   	pop    %edi
40d3c4:	5e                   	pop    %esi
40d3c5:	5b                   	pop    %ebx
40d3c6:	59                   	pop    %ecx
40d3c7:	5d                   	pop    %ebp
40d3c8:	c3                   	ret
40d3c9:	8d 40 00             	lea    0x0(%eax),%eax
40d3cc:	55                   	push   %ebp
40d3cd:	8b ec                	mov    %esp,%ebp
40d3cf:	83 c4 ec             	add    $0xffffffec,%esp
40d3d2:	53                   	push   %ebx
40d3d3:	56                   	push   %esi
40d3d4:	57                   	push   %edi
40d3d5:	be c8 a8 4a 00       	mov    $0x4aa8c8,%esi
40d3da:	c7 06 09 04 00 00    	movl   $0x409,(%esi)
40d3e0:	c7 46 04 09 00 00 00 	movl   $0x9,0x4(%esi)
40d3e7:	c7 46 08 01 00 00 00 	movl   $0x1,0x8(%esi)
40d3ee:	e8 65 96 ff ff       	call   0x406a58
40d3f3:	85 c0                	test   %eax,%eax
40d3f5:	74 02                	je     0x40d3f9
40d3f7:	89 06                	mov    %eax,(%esi)
40d3f9:	66 85 c0             	test   %ax,%ax
40d3fc:	74 16                	je     0x40d414
40d3fe:	8b d0                	mov    %eax,%edx
40d400:	66 81 e2 ff 03       	and    $0x3ff,%dx
40d405:	0f b7 d2             	movzwl %dx,%edx
40d408:	89 56 04             	mov    %edx,0x4(%esi)
40d40b:	0f b7 c0             	movzwl %ax,%eax
40d40e:	c1 e8 0a             	shr    $0xa,%eax
40d411:	89 46 08             	mov    %eax,0x8(%esi)
40d414:	56                   	push   %esi
40d415:	be 70 d4 40 00       	mov    $0x40d470,%esi
40d41a:	bf 08 b8 49 00       	mov    $0x49b808,%edi
40d41f:	b9 08 00 00 00       	mov    $0x8,%ecx
40d424:	f3 a5                	rep movsl %ds:(%esi),%es:(%edi)
40d426:	5e                   	pop    %esi
40d427:	83 3d c4 b7 49 00 04 	cmpl   $0x4,0x49b7c4
40d42e:	7e 0f                	jle    0x40d43f
40d430:	83 3d c0 b7 49 00 02 	cmpl   $0x2,0x49b7c0
40d437:	75 06                	jne    0x40d43f
40d439:	c6 46 0d 01          	movb   $0x1,0xd(%esi)
40d43d:	eb 0f                	jmp    0x40d44e
40d43f:	6a 4a                	push   $0x4a
40d441:	e8 3a 9c ff ff       	call   0x407080
40d446:	85 c0                	test   %eax,%eax
40d448:	0f 95 c0             	setne  %al
40d44b:	88 46 0d             	mov    %al,0xd(%esi)
40d44e:	6a 2a                	push   $0x2a
40d450:	e8 2b 9c ff ff       	call   0x407080
40d455:	85 c0                	test   %eax,%eax
40d457:	0f 95 c3             	setne  %bl
40d45a:	88 5e 0c             	mov    %bl,0xc(%esi)
40d45d:	84 db                	test   %bl,%bl
40d45f:	74 07                	je     0x40d468
40d461:	55                   	push   %ebp
40d462:	e8 09 ff ff ff       	call   0x40d370
40d467:	59                   	pop    %ecx
40d468:	5f                   	pop    %edi
40d469:	5e                   	pop    %esi
40d46a:	5b                   	pop    %ebx
40d46b:	8b e5                	mov    %ebp,%esp
40d46d:	5d                   	pop    %ebp
40d46e:	c3                   	ret
40d48f:	00 55 8b             	add    %dl,-0x75(%ebp)
40d492:	ec                   	in     (%dx),%al
40d493:	b9 08 00 00 00       	mov    $0x8,%ecx
40d498:	6a 00                	push   $0x0
40d49a:	6a 00                	push   $0x0
40d49c:	49                   	dec    %ecx
40d49d:	75 f9                	jne    0x40d498
40d49f:	53                   	push   %ebx
40d4a0:	33 c0                	xor    %eax,%eax
40d4a2:	55                   	push   %ebp
40d4a3:	68 5b d7 40 00       	push   $0x40d75b
40d4a8:	64 ff 30             	push   %fs:(%eax)
40d4ab:	64 89 20             	mov    %esp,%fs:(%eax)
40d4ae:	e8 19 ff ff ff       	call   0x40d3cc
40d4b3:	e8 38 e8 ff ff       	call   0x40bcf0
40d4b8:	80 3d d4 a8 4a 00 00 	cmpb   $0x0,0x4aa8d4
40d4bf:	74 05                	je     0x40d4c6
40d4c1:	e8 02 ea ff ff       	call   0x40bec8
40d4c6:	e8 8d 95 ff ff       	call   0x406a58
40d4cb:	8b d8                	mov    %eax,%ebx
40d4cd:	8d 45 f0             	lea    -0x10(%ebp),%eax
40d4d0:	50                   	push   %eax
40d4d1:	33 c9                	xor    %ecx,%ecx
40d4d3:	ba 14 00 00 00       	mov    $0x14,%edx
40d4d8:	8b c3                	mov    %ebx,%eax
40d4da:	e8 5d e7 ff ff       	call   0x40bc3c
40d4df:	8b 55 f0             	mov    -0x10(%ebp),%edx
40d4e2:	b8 08 a8 4a 00       	mov    $0x4aa808,%eax
40d4e7:	e8 b0 72 ff ff       	call   0x40479c
40d4ec:	8d 45 ec             	lea    -0x14(%ebp),%eax
40d4ef:	50                   	push   %eax
40d4f0:	b9 70 d7 40 00       	mov    $0x40d770,%ecx
40d4f5:	ba 1b 00 00 00       	mov    $0x1b,%edx
40d4fa:	8b c3                	mov    %ebx,%eax
40d4fc:	e8 3b e7 ff ff       	call   0x40bc3c
40d501:	8b 45 ec             	mov    -0x14(%ebp),%eax
40d504:	33 d2                	xor    %edx,%edx
40d506:	e8 35 b9 ff ff       	call   0x408e40
40d50b:	a2 0c a8 4a 00       	mov    %al,0x4aa80c
40d510:	8d 45 e8             	lea    -0x18(%ebp),%eax
40d513:	50                   	push   %eax
40d514:	b9 70 d7 40 00       	mov    $0x40d770,%ecx
40d519:	ba 1c 00 00 00       	mov    $0x1c,%edx
40d51e:	8b c3                	mov    %ebx,%eax
40d520:	e8 17 e7 ff ff       	call   0x40bc3c
40d525:	8b 45 e8             	mov    -0x18(%ebp),%eax
40d528:	33 d2                	xor    %edx,%edx
40d52a:	e8 11 b9 ff ff       	call   0x408e40
40d52f:	a2 0d a8 4a 00       	mov    %al,0x4aa80d
40d534:	b1 2c                	mov    $0x2c,%cl
40d536:	ba 0f 00 00 00       	mov    $0xf,%edx
40d53b:	8b c3                	mov    %ebx,%eax
40d53d:	e8 46 e7 ff ff       	call   0x40bc88
40d542:	a2 0e a8 4a 00       	mov    %al,0x4aa80e
40d547:	b1 2e                	mov    $0x2e,%cl
40d549:	ba 0e 00 00 00       	mov    $0xe,%edx
40d54e:	8b c3                	mov    %ebx,%eax
40d550:	e8 33 e7 ff ff       	call   0x40bc88
40d555:	a2 0f a8 4a 00       	mov    %al,0x4aa80f
40d55a:	8d 45 e4             	lea    -0x1c(%ebp),%eax
40d55d:	50                   	push   %eax
40d55e:	b9 70 d7 40 00       	mov    $0x40d770,%ecx
40d563:	ba 19 00 00 00       	mov    $0x19,%edx
40d568:	8b c3                	mov    %ebx,%eax
40d56a:	e8 cd e6 ff ff       	call   0x40bc3c
40d56f:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40d572:	33 d2                	xor    %edx,%edx
40d574:	e8 c7 b8 ff ff       	call   0x408e40
40d579:	a2 10 a8 4a 00       	mov    %al,0x4aa810
40d57e:	b1 2f                	mov    $0x2f,%cl
40d580:	ba 1d 00 00 00       	mov    $0x1d,%edx
40d585:	8b c3                	mov    %ebx,%eax
40d587:	e8 fc e6 ff ff       	call   0x40bc88
40d58c:	a2 11 a8 4a 00       	mov    %al,0x4aa811
40d591:	8d 45 dc             	lea    -0x24(%ebp),%eax
40d594:	50                   	push   %eax
40d595:	b9 7c d7 40 00       	mov    $0x40d77c,%ecx
40d59a:	ba 1f 00 00 00       	mov    $0x1f,%edx
40d59f:	8b c3                	mov    %ebx,%eax
40d5a1:	e8 96 e6 ff ff       	call   0x40bc3c
40d5a6:	8b 45 dc             	mov    -0x24(%ebp),%eax
40d5a9:	8d 55 e0             	lea    -0x20(%ebp),%edx
40d5ac:	e8 c7 e9 ff ff       	call   0x40bf78
40d5b1:	8b 55 e0             	mov    -0x20(%ebp),%edx
40d5b4:	b8 14 a8 4a 00       	mov    $0x4aa814,%eax
40d5b9:	e8 de 71 ff ff       	call   0x40479c
40d5be:	8d 45 d4             	lea    -0x2c(%ebp),%eax
40d5c1:	50                   	push   %eax
40d5c2:	b9 8c d7 40 00       	mov    $0x40d78c,%ecx
40d5c7:	ba 20 00 00 00       	mov    $0x20,%edx
40d5cc:	8b c3                	mov    %ebx,%eax
40d5ce:	e8 69 e6 ff ff       	call   0x40bc3c
40d5d3:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40d5d6:	8d 55 d8             	lea    -0x28(%ebp),%edx
40d5d9:	e8 9a e9 ff ff       	call   0x40bf78