40a26f:	e8 3d 21 01 00       	call   0x41c3b1
40a274:	83 c4 0c             	add    $0xc,%esp
40a277:	eb 1a                	jmp    0x40a293
40a279:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
40a27d:	8b 75 10             	mov    0x10(%ebp),%esi
40a280:	74 0c                	je     0x40a28e
40a282:	57                   	push   %edi
40a283:	56                   	push   %esi
40a284:	ff 75 08             	push   0x8(%ebp)
40a287:	e8 e8 74 00 00       	call   0x411774
40a28c:	eb 05                	jmp    0x40a293
40a28e:	33 c0                	xor    %eax,%eax
40a290:	66 89 06             	mov    %ax,(%esi)
40a293:	85 ff                	test   %edi,%edi
40a295:	76 07                	jbe    0x40a29e
40a297:	33 c0                	xor    %eax,%eax
40a299:	66 89 44 7e fe       	mov    %ax,-0x2(%esi,%edi,2)
40a29e:	5f                   	pop    %edi
40a29f:	8b c6                	mov    %esi,%eax
40a2a1:	5e                   	pop    %esi
40a2a2:	5d                   	pop    %ebp
40a2a3:	c2 10 00             	ret    $0x10
40a2a6:	56                   	push   %esi
40a2a7:	8b 74 24 08          	mov    0x8(%esp),%esi
40a2ab:	56                   	push   %esi
40a2ac:	e8 da fe 00 00       	call   0x41a18b
40a2b1:	59                   	pop    %ecx
40a2b2:	8b c8                	mov    %eax,%ecx
40a2b4:	eb 0e                	jmp    0x40a2c4
40a2b6:	0f b7 04 4e          	movzwl (%esi,%ecx,2),%eax
40a2ba:	50                   	push   %eax
40a2bb:	e8 17 fd ff ff       	call   0x409fd7
40a2c0:	84 c0                	test   %al,%al
40a2c2:	75 19                	jne    0x40a2dd
40a2c4:	49                   	dec    %ecx
40a2c5:	79 ef                	jns    0x40a2b6
40a2c7:	66 83 3e 00          	cmpw   $0x0,(%esi)
40a2cb:	74 0a                	je     0x40a2d7
40a2cd:	66 83 7e 02 3a       	cmpw   $0x3a,0x2(%esi)
40a2d2:	8d 46 04             	lea    0x4(%esi),%eax
40a2d5:	74 02                	je     0x40a2d9
40a2d7:	8b c6                	mov    %esi,%eax
40a2d9:	5e                   	pop    %esi
40a2da:	c2 04 00             	ret    $0x4
40a2dd:	8d 44 4e 02          	lea    0x2(%esi,%ecx,2),%eax
40a2e1:	eb f6                	jmp    0x40a2d9
40a2e3:	55                   	push   %ebp
40a2e4:	8b ec                	mov    %esp,%ebp
40a2e6:	b8 00 10 00 00       	mov    $0x1000,%eax
40a2eb:	e8 e0 01 01 00       	call   0x41a4d0
40a2f0:	8b 45 08             	mov    0x8(%ebp),%eax
40a2f3:	0f b7 08             	movzwl (%eax),%ecx
40a2f6:	57                   	push   %edi
40a2f7:	8b f8                	mov    %eax,%edi
40a2f9:	66 85 c9             	test   %cx,%cx
40a2fc:	74 3f                	je     0x40a33d
40a2fe:	0f b7 d1             	movzwl %cx,%edx
40a301:	8d 48 04             	lea    0x4(%eax),%ecx
40a304:	0f b7 c2             	movzwl %dx,%eax
40a307:	50                   	push   %eax
40a308:	e8 ca fc ff ff       	call   0x409fd7
40a30d:	84 c0                	test   %al,%al
40a30f:	74 1e                	je     0x40a32f
40a311:	66 83 79 fe 2e       	cmpw   $0x2e,-0x2(%ecx)
40a316:	75 17                	jne    0x40a32f
40a318:	66 83 39 2e          	cmpw   $0x2e,(%ecx)
40a31c:	75 11                	jne    0x40a32f
40a31e:	0f b7 41 02          	movzwl 0x2(%ecx),%eax
40a322:	50                   	push   %eax
40a323:	e8 af fc ff ff       	call   0x409fd7
40a328:	84 c0                	test   %al,%al
40a32a:	74 03                	je     0x40a32f
40a32c:	8d 79 04             	lea    0x4(%ecx),%edi
40a32f:	41                   	inc    %ecx
40a330:	0f b7 41 fd          	movzwl -0x3(%ecx),%eax
40a334:	41                   	inc    %ecx
40a335:	0f b7 d0             	movzwl %ax,%edx
40a338:	66 85 c0             	test   %ax,%ax
40a33b:	75 c7                	jne    0x40a304
40a33d:	66 83 3f 00          	cmpw   $0x0,(%edi)
40a341:	0f 84 81 00 00 00    	je     0x40a3c8
40a347:	56                   	push   %esi
40a348:	66 83 3f 00          	cmpw   $0x0,(%edi)
40a34c:	8b f7                	mov    %edi,%esi
40a34e:	74 0a                	je     0x40a35a
40a350:	66 83 7f 02 3a       	cmpw   $0x3a,0x2(%edi)
40a355:	75 03                	jne    0x40a35a
40a357:	8d 77 04             	lea    0x4(%edi),%esi
40a35a:	66 83 3e 5c          	cmpw   $0x5c,(%esi)
40a35e:	75 2c                	jne    0x40a38c
40a360:	66 83 7e 02 5c       	cmpw   $0x5c,0x2(%esi)
40a365:	75 25                	jne    0x40a38c
40a367:	8d 46 04             	lea    0x4(%esi),%eax
40a36a:	6a 5c                	push   $0x5c
40a36c:	50                   	push   %eax
40a36d:	e8 d7 20 01 00       	call   0x41c449
40a372:	59                   	pop    %ecx
40a373:	59                   	pop    %ecx
40a374:	85 c0                	test   %eax,%eax
40a376:	74 14                	je     0x40a38c
40a378:	83 c0 02             	add    $0x2,%eax
40a37b:	6a 5c                	push   $0x5c
40a37d:	50                   	push   %eax
40a37e:	e8 c6 20 01 00       	call   0x41c449
40a383:	59                   	pop    %ecx
40a384:	59                   	pop    %ecx
40a385:	85 c0                	test   %eax,%eax
40a387:	74 03                	je     0x40a38c
40a389:	8d 70 02             	lea    0x2(%eax),%esi
40a38c:	0f b7 06             	movzwl (%esi),%eax
40a38f:	8b d6                	mov    %esi,%edx
40a391:	66 85 c0             	test   %ax,%ax
40a394:	74 25                	je     0x40a3bb
40a396:	0f b7 c8             	movzwl %ax,%ecx
40a399:	0f b7 c1             	movzwl %cx,%eax
40a39c:	50                   	push   %eax
40a39d:	e8 35 fc ff ff       	call   0x409fd7
40a3a2:	84 c0                	test   %al,%al
40a3a4:	74 05                	je     0x40a3ab
40a3a6:	8d 72 02             	lea    0x2(%edx),%esi
40a3a9:	eb 06                	jmp    0x40a3b1
40a3ab:	66 83 f9 2e          	cmp    $0x2e,%cx
40a3af:	75 0a                	jne    0x40a3bb
40a3b1:	42                   	inc    %edx
40a3b2:	42                   	inc    %edx
40a3b3:	0f b7 0a             	movzwl (%edx),%ecx
40a3b6:	66 85 c9             	test   %cx,%cx
40a3b9:	75 de                	jne    0x40a399
40a3bb:	3b f7                	cmp    %edi,%esi
40a3bd:	74 08                	je     0x40a3c7
40a3bf:	66 83 3e 00          	cmpw   $0x0,(%esi)
40a3c3:	8b fe                	mov    %esi,%edi
40a3c5:	75 81                	jne    0x40a348
40a3c7:	5e                   	pop    %esi
40a3c8:	66 83 3f 2e          	cmpw   $0x2e,(%edi)
40a3cc:	75 12                	jne    0x40a3e0
40a3ce:	66 83 7f 02 2e       	cmpw   $0x2e,0x2(%edi)
40a3d3:	75 0b                	jne    0x40a3e0
40a3d5:	8d 47 04             	lea    0x4(%edi),%eax
40a3d8:	66 83 38 00          	cmpw   $0x0,(%eax)
40a3dc:	75 02                	jne    0x40a3e0
40a3de:	8b f8                	mov    %eax,%edi
40a3e0:	83 7d 0c 00          	cmpl   $0x0,0xc(%ebp)
40a3e4:	74 23                	je     0x40a409
40a3e6:	68 00 08 00 00       	push   $0x800
40a3eb:	57                   	push   %edi
40a3ec:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a3f2:	50                   	push   %eax
40a3f3:	e8 27 65 00 00       	call   0x41091f
40a3f8:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a3fe:	50                   	push   %eax
40a3ff:	ff 75 0c             	push   0xc(%ebp)
40a402:	e8 cc fd 00 00       	call   0x41a1d3
40a407:	59                   	pop    %ecx
40a408:	59                   	pop    %ecx
40a409:	8b c7                	mov    %edi,%eax
40a40b:	5f                   	pop    %edi
40a40c:	c9                   	leave
40a40d:	c2 08 00             	ret    $0x8
40a410:	ff 74 24 04          	push   0x4(%esp)
40a414:	e8 8d fe ff ff       	call   0x40a2a6
40a419:	8b 54 24 0c          	mov    0xc(%esp),%edx
40a41d:	8b c8                	mov    %eax,%ecx
40a41f:	2b 4c 24 04          	sub    0x4(%esp),%ecx
40a423:	d1 f9                	sar    $1,%ecx
40a425:	2b d1                	sub    %ecx,%edx
40a427:	52                   	push   %edx
40a428:	ff 74 24 0c          	push   0xc(%esp)
40a42c:	50                   	push   %eax
40a42d:	e8 ed 64 00 00       	call   0x41091f
40a432:	c2 0c 00             	ret    $0xc
40a435:	33 c0                	xor    %eax,%eax
40a437:	39 44 24 04          	cmp    %eax,0x4(%esp)
40a43b:	74 13                	je     0x40a450
40a43d:	ff 74 24 04          	push   0x4(%esp)
40a441:	e8 60 fe ff ff       	call   0x40a2a6
40a446:	6a 2e                	push   $0x2e
40a448:	50                   	push   %eax
40a449:	e8 21 20 01 00       	call   0x41c46f
40a44e:	59                   	pop    %ecx
40a44f:	59                   	pop    %ecx
40a450:	c2 04 00             	ret    $0x4
40a453:	ff 74 24 04          	push   0x4(%esp)
40a457:	e8 d9 ff ff ff       	call   0x40a435
40a45c:	85 c0                	test   %eax,%eax
40a45e:	74 14                	je     0x40a474
40a460:	ff 74 24 08          	push   0x8(%esp)
40a464:	83 c0 02             	add    $0x2,%eax
40a467:	50                   	push   %eax
40a468:	e8 2b 76 00 00       	call   0x411a98
40a46d:	85 c0                	test   %eax,%eax
40a46f:	75 03                	jne    0x40a474
40a471:	40                   	inc    %eax
40a472:	eb 02                	jmp    0x40a476
40a474:	33 c0                	xor    %eax,%eax
40a476:	c2 08 00             	ret    $0x8
40a479:	8b 44 24 0c          	mov    0xc(%esp),%eax
40a47d:	85 c0                	test   %eax,%eax
40a47f:	74 3a                	je     0x40a4bb
40a481:	56                   	push   %esi
40a482:	57                   	push   %edi
40a483:	8b 7c 24 0c          	mov    0xc(%esp),%edi
40a487:	57                   	push   %edi
40a488:	8d 70 ff             	lea    -0x1(%eax),%esi
40a48b:	e8 16 fe ff ff       	call   0x40a2a6
40a490:	2b c7                	sub    %edi,%eax
40a492:	d1 f8                	sar    $1,%eax
40a494:	3b f0                	cmp    %eax,%esi
40a496:	72 0c                	jb     0x40a4a4
40a498:	57                   	push   %edi
40a499:	e8 08 fe ff ff       	call   0x40a2a6
40a49e:	8b f0                	mov    %eax,%esi
40a4a0:	2b f7                	sub    %edi,%esi
40a4a2:	d1 fe                	sar    $1,%esi
40a4a4:	56                   	push   %esi
40a4a5:	57                   	push   %edi
40a4a6:	8b 7c 24 18          	mov    0x18(%esp),%edi
40a4aa:	57                   	push   %edi
40a4ab:	e8 01 1f 01 00       	call   0x41c3b1
40a4b0:	83 c4 0c             	add    $0xc,%esp
40a4b3:	33 c0                	xor    %eax,%eax
40a4b5:	66 89 04 77          	mov    %ax,(%edi,%esi,2)
40a4b9:	5f                   	pop    %edi
40a4ba:	5e                   	pop    %esi
40a4bb:	c2 0c 00             	ret    $0xc
40a4be:	56                   	push   %esi
40a4bf:	8b 74 24 08          	mov    0x8(%esp),%esi
40a4c3:	56                   	push   %esi
40a4c4:	e8 dd fd ff ff       	call   0x40a2a6
40a4c9:	8d 4e 04             	lea    0x4(%esi),%ecx
40a4cc:	3b c1                	cmp    %ecx,%eax
40a4ce:	72 10                	jb     0x40a4e0
40a4d0:	66 83 7e 02 3a       	cmpw   $0x3a,0x2(%esi)
40a4d5:	75 07                	jne    0x40a4de
40a4d7:	83 c6 08             	add    $0x8,%esi
40a4da:	3b c6                	cmp    %esi,%eax
40a4dc:	72 02                	jb     0x40a4e0
40a4de:	48                   	dec    %eax
40a4df:	48                   	dec    %eax
40a4e0:	33 c9                	xor    %ecx,%ecx
40a4e2:	66 89 08             	mov    %cx,(%eax)
40a4e5:	5e                   	pop    %esi
40a4e6:	c2 04 00             	ret    $0x4
40a4e9:	53                   	push   %ebx
40a4ea:	8b 5c 24 08          	mov    0x8(%esp),%ebx
40a4ee:	56                   	push   %esi
40a4ef:	57                   	push   %edi
40a4f0:	53                   	push   %ebx
40a4f1:	e8 95 fc 00 00       	call   0x41a18b
40a4f6:	59                   	pop    %ecx
40a4f7:	8d 7c 43 fe          	lea    -0x2(%ebx,%eax,2),%edi
40a4fb:	eb 06                	jmp    0x40a503
40a4fd:	3b fb                	cmp    %ebx,%edi
40a4ff:	76 0f                	jbe    0x40a510
40a501:	4f                   	dec    %edi
40a502:	4f                   	dec    %edi
40a503:	0f b7 07             	movzwl (%edi),%eax
40a506:	50                   	push   %eax
40a507:	e8 e4 63 00 00       	call   0x4108f0
40a50c:	84 c0                	test   %al,%al
40a50e:	74 ed                	je     0x40a4fd
40a510:	0f b7 07             	movzwl (%edi),%eax
40a513:	8b f7                	mov    %edi,%esi
40a515:	eb 09                	jmp    0x40a520
40a517:	3b f3                	cmp    %ebx,%esi
40a519:	76 49                	jbe    0x40a564
40a51b:	4e                   	dec    %esi
40a51c:	4e                   	dec    %esi
40a51d:	0f b7 06             	movzwl (%esi),%eax
40a520:	50                   	push   %eax
40a521:	e8 ca 63 00 00       	call   0x4108f0
40a526:	84 c0                	test   %al,%al
40a528:	75 ed                	jne    0x40a517
40a52a:	eb 18                	jmp    0x40a544
40a52c:	0f b7 06             	movzwl (%esi),%eax
40a52f:	66 83 f8 2e          	cmp    $0x2e,%ax
40a533:	74 2f                	je     0x40a564
40a535:	0f b7 c0             	movzwl %ax,%eax
40a538:	50                   	push   %eax
40a539:	e8 b2 63 00 00       	call   0x4108f0
40a53e:	84 c0                	test   %al,%al
40a540:	75 08                	jne    0x40a54a
40a542:	4e                   	dec    %esi
40a543:	4e                   	dec    %esi
40a544:	3b f3                	cmp    %ebx,%esi
40a546:	77 e4                	ja     0x40a52c
40a548:	eb 1a                	jmp    0x40a564
40a54a:	53                   	push   %ebx
40a54b:	e8 56 fd ff ff       	call   0x40a2a6
40a550:	6a 2e                	push   $0x2e
40a552:	50                   	push   %eax
40a553:	e8 f1 1e 01 00       	call   0x41c449
40a558:	59                   	pop    %ecx
40a559:	59                   	pop    %ecx
40a55a:	85 c0                	test   %eax,%eax
40a55c:	74 06                	je     0x40a564
40a55e:	3b c6                	cmp    %esi,%eax
40a560:	73 02                	jae    0x40a564
40a562:	8b fe                	mov    %esi,%edi
40a564:	8b c7                	mov    %edi,%eax
40a566:	5f                   	pop    %edi
40a567:	5e                   	pop    %esi
40a568:	5b                   	pop    %ebx
40a569:	c2 04 00             	ret    $0x4
40a56c:	53                   	push   %ebx
40a56d:	8b 5c 24 08          	mov    0x8(%esp),%ebx
40a571:	56                   	push   %esi
40a572:	57                   	push   %edi
40a573:	53                   	push   %ebx
40a574:	e8 bc fe ff ff       	call   0x40a435
40a579:	8b f0                	mov    %eax,%esi
40a57b:	85 f6                	test   %esi,%esi
40a57d:	75 19                	jne    0x40a598
40a57f:	ff 74 24 14          	push   0x14(%esp)
40a583:	68 90 a6 42 00       	push   $0x42a690
40a588:	53                   	push   %ebx
40a589:	e8 be 63 00 00       	call   0x41094c
40a58e:	53                   	push   %ebx
40a58f:	e8 a1 fe ff ff       	call   0x40a435
40a594:	8b f0                	mov    %eax,%esi
40a596:	eb 46                	jmp    0x40a5de
40a598:	8d 7e 02             	lea    0x2(%esi),%edi
40a59b:	66 83 3f 00          	cmpw   $0x0,(%edi)
40a59f:	75 12                	jne    0x40a5b3
40a5a1:	53                   	push   %ebx
40a5a2:	e8 e4 fb 00 00       	call   0x41a18b
40a5a7:	59                   	pop    %ecx
40a5a8:	8b 4c 24 14          	mov    0x14(%esp),%ecx
40a5ac:	83 c1 fd             	add    $0xfffffffd,%ecx
40a5af:	3b c1                	cmp    %ecx,%eax
40a5b1:	72 1e                	jb     0x40a5d1
40a5b3:	68 88 a6 42 00       	push   $0x42a688
40a5b8:	57                   	push   %edi
40a5b9:	e8 da 74 00 00       	call   0x411a98
40a5be:	85 c0                	test   %eax,%eax
40a5c0:	74 0f                	je     0x40a5d1
40a5c2:	68 80 a6 42 00       	push   $0x42a680
40a5c7:	57                   	push   %edi
40a5c8:	e8 cb 74 00 00       	call   0x411a98
40a5cd:	85 c0                	test   %eax,%eax
40a5cf:	75 0d                	jne    0x40a5de
40a5d1:	68 fc a5 42 00       	push   $0x42a5fc
40a5d6:	57                   	push   %edi
40a5d7:	e8 f7 fb 00 00       	call   0x41a1d3
40a5dc:	59                   	pop    %ecx
40a5dd:	59                   	pop    %ecx
40a5de:	80 7c 24 18 00       	cmpb   $0x0,0x18(%esp)
40a5e3:	75 53                	jne    0x40a638
40a5e5:	53                   	push   %ebx
40a5e6:	e8 fe fe ff ff       	call   0x40a4e9