40b359:	64 ff 30             	push   %fs:(%eax)
40b35c:	64 89 20             	mov    %esp,%fs:(%eax)
40b35f:	33 db                	xor    %ebx,%ebx
40b361:	85 ff                	test   %edi,%edi
40b363:	74 3a                	je     0x40b39f
40b365:	8b d6                	mov    %esi,%edx
40b367:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b36a:	e8 15 ff ff ff       	call   0x40b284
40b36f:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b372:	50                   	push   %eax
40b373:	8b c7                	mov    %edi,%eax
40b375:	e8 aa 90 ff ff       	call   0x404424
40b37a:	8b c8                	mov    %eax,%ecx
40b37c:	8b 16                	mov    (%esi),%edx
40b37e:	8b 45 fc             	mov    -0x4(%ebp),%eax
40b381:	e8 fe 92 ff ff       	call   0x404684
40b386:	8b 55 f8             	mov    -0x8(%ebp),%edx
40b389:	8b c7                	mov    %edi,%eax
40b38b:	e8 ac d1 ff ff       	call   0x40853c
40b390:	85 c0                	test   %eax,%eax
40b392:	75 0b                	jne    0x40b39f
40b394:	8b c7                	mov    %edi,%eax
40b396:	e8 89 90 ff ff       	call   0x404424
40b39b:	01 06                	add    %eax,(%esi)
40b39d:	b3 01                	mov    $0x1,%bl
40b39f:	33 c0                	xor    %eax,%eax
40b3a1:	5a                   	pop    %edx
40b3a2:	59                   	pop    %ecx
40b3a3:	59                   	pop    %ecx
40b3a4:	64 89 10             	mov    %edx,%fs:(%eax)
40b3a7:	68 bc b3 40 00       	push   $0x40b3bc
40b3ac:	8d 45 f8             	lea    -0x8(%ebp),%eax
40b3af:	e8 b0 8d ff ff       	call   0x404164
40b3b4:	c3                   	ret
40b3b5:	e9 ae 87 ff ff       	jmp    0x403b68
40b3ba:	eb f0                	jmp    0x40b3ac
40b3bc:	8b c3                	mov    %ebx,%eax
40b3be:	5f                   	pop    %edi
40b3bf:	5e                   	pop    %esi
40b3c0:	5b                   	pop    %ebx
40b3c1:	59                   	pop    %ecx
40b3c2:	59                   	pop    %ecx
40b3c3:	5d                   	pop    %ebp
40b3c4:	c3                   	ret
40b3c5:	8d 40 00             	lea    0x0(%eax),%eax
40b3c8:	53                   	push   %ebx
40b3c9:	56                   	push   %esi
40b3ca:	57                   	push   %edi
40b3cb:	51                   	push   %ecx
40b3cc:	88 0c 24             	mov    %cl,(%esp)
40b3cf:	8b fa                	mov    %edx,%edi
40b3d1:	8b f0                	mov    %eax,%esi
40b3d3:	33 db                	xor    %ebx,%ebx
40b3d5:	8b d7                	mov    %edi,%edx
40b3d7:	8b c6                	mov    %esi,%eax
40b3d9:	e8 a6 fe ff ff       	call   0x40b284
40b3de:	8b c6                	mov    %esi,%eax
40b3e0:	e8 3f 90 ff ff       	call   0x404424
40b3e5:	3b 07                	cmp    (%edi),%eax
40b3e7:	7c 0f                	jl     0x40b3f8
40b3e9:	8b 07                	mov    (%edi),%eax
40b3eb:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40b3ef:	3a 04 24             	cmp    (%esp),%al
40b3f2:	75 04                	jne    0x40b3f8
40b3f4:	ff 07                	incl   (%edi)
40b3f6:	b3 01                	mov    $0x1,%bl
40b3f8:	8b c3                	mov    %ebx,%eax
40b3fa:	5a                   	pop    %edx
40b3fb:	5f                   	pop    %edi
40b3fc:	5e                   	pop    %esi
40b3fd:	5b                   	pop    %ebx
40b3fe:	c3                   	ret
40b3ff:	90                   	nop
40b400:	53                   	push   %ebx
40b401:	56                   	push   %esi
40b402:	57                   	push   %edi
40b403:	8b f0                	mov    %eax,%esi
40b405:	33 db                	xor    %ebx,%ebx
40b407:	bf 01 00 00 00       	mov    $0x1,%edi
40b40c:	eb 29                	jmp    0x40b437
40b40e:	8a 44 3e ff          	mov    -0x1(%esi,%edi,1),%al
40b412:	24 df                	and    $0xdf,%al
40b414:	2c 44                	sub    $0x44,%al
40b416:	74 1a                	je     0x40b432
40b418:	fe c8                	dec    %al
40b41a:	74 0a                	je     0x40b426
40b41c:	2c 08                	sub    $0x8,%al
40b41e:	74 0e                	je     0x40b42e
40b420:	2c 0c                	sub    $0xc,%al
40b422:	74 06                	je     0x40b42a
40b424:	eb 10                	jmp    0x40b436
40b426:	b3 02                	mov    $0x2,%bl
40b428:	eb 1a                	jmp    0x40b444
40b42a:	b3 02                	mov    $0x2,%bl
40b42c:	eb 16                	jmp    0x40b444
40b42e:	33 db                	xor    %ebx,%ebx
40b430:	eb 12                	jmp    0x40b444
40b432:	b3 01                	mov    $0x1,%bl
40b434:	eb 0e                	jmp    0x40b444
40b436:	47                   	inc    %edi
40b437:	8b c6                	mov    %esi,%eax
40b439:	e8 e6 8f ff ff       	call   0x404424
40b43e:	3b f8                	cmp    %eax,%edi
40b440:	7e cc                	jle    0x40b40e
40b442:	33 db                	xor    %ebx,%ebx
40b444:	8b c3                	mov    %ebx,%eax
40b446:	5f                   	pop    %edi
40b447:	5e                   	pop    %esi
40b448:	5b                   	pop    %ebx
40b449:	c3                   	ret
40b44a:	8b c0                	mov    %eax,%eax
40b44c:	53                   	push   %ebx
40b44d:	56                   	push   %esi
40b44e:	8b da                	mov    %edx,%ebx
40b450:	8b f0                	mov    %eax,%esi
40b452:	eb 23                	jmp    0x40b477
40b454:	8b 03                	mov    (%ebx),%eax
40b456:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40b45a:	25 ff 00 00 00       	and    $0xff,%eax
40b45f:	0f a3 05 0c d1 48 00 	bt     %eax,0x48d10c
40b466:	73 0d                	jae    0x40b475
40b468:	8b 13                	mov    (%ebx),%edx
40b46a:	8b c6                	mov    %esi,%eax
40b46c:	e8 37 1c 00 00       	call   0x40d0a8
40b471:	89 03                	mov    %eax,(%ebx)
40b473:	eb 02                	jmp    0x40b477
40b475:	ff 03                	incl   (%ebx)
40b477:	8b c6                	mov    %esi,%eax
40b479:	e8 a6 8f ff ff       	call   0x404424
40b47e:	3b 03                	cmp    (%ebx),%eax
40b480:	7c 0c                	jl     0x40b48e
40b482:	8b 03                	mov    (%ebx),%eax
40b484:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40b488:	04 d0                	add    $0xd0,%al
40b48a:	2c 0a                	sub    $0xa,%al
40b48c:	73 c6                	jae    0x40b454
40b48e:	5e                   	pop    %esi
40b48f:	5b                   	pop    %ebx
40b490:	c3                   	ret
40b491:	8d 40 00             	lea    0x0(%eax),%eax
40b494:	53                   	push   %ebx
40b495:	56                   	push   %esi
40b496:	57                   	push   %edi
40b497:	55                   	push   %ebp
40b498:	51                   	push   %ecx
40b499:	8b e8                	mov    %eax,%ebp
40b49b:	33 c0                	xor    %eax,%eax
40b49d:	89 04 24             	mov    %eax,(%esp)
40b4a0:	bf 07 00 00 00       	mov    $0x7,%edi
40b4a5:	bb 54 c7 49 00       	mov    $0x49c754,%ebx
40b4aa:	be 70 c7 49 00       	mov    $0x49c770,%esi
40b4af:	83 3b 00             	cmpl   $0x0,(%ebx)
40b4b2:	74 29                	je     0x40b4dd
40b4b4:	8b c5                	mov    %ebp,%eax
40b4b6:	e8 69 91 ff ff       	call   0x404624
40b4bb:	50                   	push   %eax
40b4bc:	8b 03                	mov    (%ebx),%eax
40b4be:	e8 61 91 ff ff       	call   0x404624
40b4c3:	5a                   	pop    %edx
40b4c4:	e8 57 1d 00 00       	call   0x40d220
40b4c9:	85 c0                	test   %eax,%eax
40b4cb:	74 07                	je     0x40b4d4
40b4cd:	8b 06                	mov    (%esi),%eax
40b4cf:	89 04 24             	mov    %eax,(%esp)
40b4d2:	eb 09                	jmp    0x40b4dd
40b4d4:	83 c6 04             	add    $0x4,%esi
40b4d7:	83 c3 04             	add    $0x4,%ebx
40b4da:	4f                   	dec    %edi
40b4db:	75 d2                	jne    0x40b4af
40b4dd:	8b 04 24             	mov    (%esp),%eax
40b4e0:	5a                   	pop    %edx
40b4e1:	5d                   	pop    %ebp
40b4e2:	5f                   	pop    %edi
40b4e3:	5e                   	pop    %esi
40b4e4:	5b                   	pop    %ebx
40b4e5:	c3                   	ret
40b4e6:	8b c0                	mov    %eax,%eax
40b4e8:	55                   	push   %ebp
40b4e9:	8b ec                	mov    %esp,%ebp
40b4eb:	53                   	push   %ebx
40b4ec:	8b d8                	mov    %eax,%ebx
40b4ee:	83 3d 48 c7 49 00 12 	cmpl   $0x12,0x49c748
40b4f5:	75 3a                	jne    0x40b531
40b4f7:	83 fb 63             	cmp    $0x63,%ebx
40b4fa:	7f 24                	jg     0x40b520
40b4fc:	e8 87 f1 ff ff       	call   0x40a688
40b501:	0f b7 c8             	movzwl %ax,%ecx
40b504:	8b 45 08             	mov    0x8(%ebp),%eax
40b507:	8b 40 fc             	mov    -0x4(%eax),%eax
40b50a:	99                   	cltd
40b50b:	33 c2                	xor    %edx,%eax
40b50d:	2b c2                	sub    %edx,%eax
40b50f:	03 c8                	add    %eax,%ecx
40b511:	8b c1                	mov    %ecx,%eax
40b513:	b9 64 00 00 00       	mov    $0x64,%ecx
40b518:	99                   	cltd
40b519:	f7 f9                	idiv   %ecx
40b51b:	6b c0 64             	imul   $0x64,%eax,%eax
40b51e:	03 d8                	add    %eax,%ebx
40b520:	8b 45 08             	mov    0x8(%ebp),%eax
40b523:	83 78 fc 00          	cmpl   $0x0,-0x4(%eax)
40b527:	7e 0e                	jle    0x40b537
40b529:	8b 45 08             	mov    0x8(%ebp),%eax
40b52c:	f7 58 fc             	negl   -0x4(%eax)
40b52f:	eb 06                	jmp    0x40b537
40b531:	8b 45 08             	mov    0x8(%ebp),%eax
40b534:	ff 48 fc             	decl   -0x4(%eax)
40b537:	8b 45 08             	mov    0x8(%ebp),%eax
40b53a:	8b 40 fc             	mov    -0x4(%eax),%eax
40b53d:	03 c3                	add    %ebx,%eax
40b53f:	5b                   	pop    %ebx
40b540:	5d                   	pop    %ebp
40b541:	c3                   	ret
40b542:	8b c0                	mov    %eax,%eax
40b544:	55                   	push   %ebp
40b545:	8b ec                	mov    %esp,%ebp
40b547:	83 c4 d8             	add    $0xffffffd8,%esp
40b54a:	53                   	push   %ebx
40b54b:	56                   	push   %esi
40b54c:	57                   	push   %edi
40b54d:	33 db                	xor    %ebx,%ebx
40b54f:	89 5d d8             	mov    %ebx,-0x28(%ebp)
40b552:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40b555:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40b558:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40b55b:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40b55e:	8b da                	mov    %edx,%ebx
40b560:	8b f0                	mov    %eax,%esi
40b562:	33 c0                	xor    %eax,%eax
40b564:	55                   	push   %ebp
40b565:	68 5f b8 40 00       	push   $0x40b85f
40b56a:	64 ff 30             	push   %fs:(%eax)
40b56d:	64 89 20             	mov    %esp,%fs:(%eax)
40b570:	33 ff                	xor    %edi,%edi
40b572:	66 c7 45 ee 00 00    	movw   $0x0,-0x12(%ebp)
40b578:	66 c7 45 ec 00 00    	movw   $0x0,-0x14(%ebp)
40b57e:	c6 45 e8 00          	movb   $0x0,-0x18(%ebp)
40b582:	c6 45 f7 00          	movb   $0x0,-0x9(%ebp)
40b586:	a1 90 c6 49 00       	mov    0x49c690,%eax
40b58b:	e8 70 fe ff ff       	call   0x40b400
40b590:	88 45 f6             	mov    %al,-0xa(%ebp)
40b593:	33 c0                	xor    %eax,%eax
40b595:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b598:	83 3d 90 c6 49 00 00 	cmpl   $0x0,0x49c690
40b59f:	74 3e                	je     0x40b5df
40b5a1:	a1 90 c6 49 00       	mov    0x49c690,%eax
40b5a6:	80 38 67             	cmpb   $0x67,(%eax)
40b5a9:	75 34                	jne    0x40b5df
40b5ab:	8b d3                	mov    %ebx,%edx
40b5ad:	8b c6                	mov    %esi,%eax
40b5af:	e8 98 fe ff ff       	call   0x40b44c
40b5b4:	8d 45 e0             	lea    -0x20(%ebp),%eax
40b5b7:	50                   	push   %eax
40b5b8:	8b 0b                	mov    (%ebx),%ecx
40b5ba:	49                   	dec    %ecx
40b5bb:	ba 01 00 00 00       	mov    $0x1,%edx
40b5c0:	8b c6                	mov    %esi,%eax
40b5c2:	e8 bd 90 ff ff       	call   0x404684
40b5c7:	8b 45 e0             	mov    -0x20(%ebp),%eax
40b5ca:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40b5cd:	e8 fa cf ff ff       	call   0x4085cc
40b5d2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40b5d5:	e8 ba fe ff ff       	call   0x40b494
40b5da:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b5dd:	eb 1c                	jmp    0x40b5fb
40b5df:	8b 15 90 c6 49 00    	mov    0x49c690,%edx
40b5e5:	b8 78 b8 40 00       	mov    $0x40b878,%eax
40b5ea:	e8 6d 1b 00 00       	call   0x40d15c
40b5ef:	85 c0                	test   %eax,%eax
40b5f1:	7e 08                	jle    0x40b5fb
40b5f3:	a1 70 c7 49 00       	mov    0x49c770,%eax
40b5f8:	89 45 fc             	mov    %eax,-0x4(%ebp)
40b5fb:	8d 45 eb             	lea    -0x15(%ebp),%eax
40b5fe:	50                   	push   %eax
40b5ff:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40b602:	8b d3                	mov    %ebx,%edx
40b604:	8b c6                	mov    %esi,%eax
40b606:	e8 9d fc ff ff       	call   0x40b2a8
40b60b:	84 c0                	test   %al,%al
40b60d:	0f 84 31 02 00 00    	je     0x40b844
40b613:	8b d3                	mov    %ebx,%edx
40b615:	8a 0d 8d c6 49 00    	mov    0x49c68d,%cl
40b61b:	8b c6                	mov    %esi,%eax
40b61d:	e8 a6 fd ff ff       	call   0x40b3c8
40b622:	84 c0                	test   %al,%al
40b624:	0f 84 1a 02 00 00    	je     0x40b844
40b62a:	8d 45 ea             	lea    -0x16(%ebp),%eax
40b62d:	50                   	push   %eax
40b62e:	8d 4d f2             	lea    -0xe(%ebp),%ecx
40b631:	8b d3                	mov    %ebx,%edx
40b633:	8b c6                	mov    %esi,%eax
40b635:	e8 6e fc ff ff       	call   0x40b2a8
40b63a:	84 c0                	test   %al,%al
40b63c:	0f 84 02 02 00 00    	je     0x40b844
40b642:	8b d3                	mov    %ebx,%edx
40b644:	8a 0d 8d c6 49 00    	mov    0x49c68d,%cl
40b64a:	8b c6                	mov    %esi,%eax
40b64c:	e8 77 fd ff ff       	call   0x40b3c8
40b651:	84 c0                	test   %al,%al
40b653:	0f 84 ce 00 00 00    	je     0x40b727
40b659:	8d 45 e9             	lea    -0x17(%ebp),%eax
40b65c:	50                   	push   %eax
40b65d:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40b660:	8b d3                	mov    %ebx,%edx
40b662:	8b c6                	mov    %esi,%eax
40b664:	e8 3f fc ff ff       	call   0x40b2a8
40b669:	84 c0                	test   %al,%al
40b66b:	0f 84 d3 01 00 00    	je     0x40b844
40b671:	8a 45 f6             	mov    -0xa(%ebp),%al
40b674:	2c 01                	sub    $0x1,%al
40b676:	72 08                	jb     0x40b680
40b678:	74 22                	je     0x40b69c
40b67a:	fe c8                	dec    %al
40b67c:	74 3a                	je     0x40b6b8
40b67e:	eb 52                	jmp    0x40b6d2
40b680:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40b684:	8a 45 e9             	mov    -0x17(%ebp),%al
40b687:	88 45 e8             	mov    %al,-0x18(%ebp)
40b68a:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40b68e:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40b692:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40b696:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40b69a:	eb 36                	jmp    0x40b6d2
40b69c:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40b6a0:	8a 45 e9             	mov    -0x17(%ebp),%al
40b6a3:	88 45 e8             	mov    %al,-0x18(%ebp)
40b6a6:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40b6aa:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40b6ae:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40b6b2:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40b6b6:	eb 1a                	jmp    0x40b6d2
40b6b8:	66 8b 7d f4          	mov    -0xc(%ebp),%di
40b6bc:	8a 45 eb             	mov    -0x15(%ebp),%al
40b6bf:	88 45 e8             	mov    %al,-0x18(%ebp)
40b6c2:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40b6c6:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40b6ca:	66 8b 45 f0          	mov    -0x10(%ebp),%ax
40b6ce:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40b6d2:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40b6d6:	7e 0e                	jle    0x40b6e6
40b6d8:	55                   	push   %ebp
40b6d9:	0f b7 c7             	movzwl %di,%eax
40b6dc:	e8 07 fe ff ff       	call   0x40b4e8
40b6e1:	59                   	pop    %ecx
40b6e2:	8b f8                	mov    %eax,%edi
40b6e4:	eb 70                	jmp    0x40b756
40b6e6:	80 7d e8 02          	cmpb   $0x2,-0x18(%ebp)
40b6ea:	77 6a                	ja     0x40b756
40b6ec:	e8 97 ef ff ff       	call   0x40a688
40b6f1:	0f b7 c8             	movzwl %ax,%ecx