40a447:	33 c0                	xor    %eax,%eax
40a449:	89 85 fc fe ff ff    	mov    %eax,-0x104(%ebp)
40a44f:	33 c0                	xor    %eax,%eax
40a451:	89 85 f8 fe ff ff    	mov    %eax,-0x108(%ebp)
40a457:	85 db                	test   %ebx,%ebx
40a459:	74 0b                	je     0x40a466
40a45b:	55                   	push   %ebp
40a45c:	8b c3                	mov    %ebx,%eax
40a45e:	e8 21 f8 ff ff       	call   0x409c84
40a463:	59                   	pop    %ecx
40a464:	eb 0c                	jmp    0x40a472
40a466:	55                   	push   %ebp
40a467:	b8 90 a4 40 00       	mov    $0x40a490,%eax
40a46c:	e8 13 f8 ff ff       	call   0x409c84
40a471:	59                   	pop    %ecx
40a472:	8d 95 00 ff ff ff    	lea    -0x100(%ebp),%edx
40a478:	8b c6                	mov    %esi,%eax
40a47a:	8b 8d fc fe ff ff    	mov    -0x104(%ebp),%ecx
40a480:	e8 03 9c ff ff       	call   0x404088
40a485:	5e                   	pop    %esi
40a486:	5b                   	pop    %ebx
40a487:	8b e5                	mov    %ebp,%esp
40a489:	5d                   	pop    %ebp
40a48a:	c2 08 00             	ret    $0x8
40a48d:	00 00                	add    %al,(%eax)
40a48f:	00 43 00             	add    %al,0x0(%ebx)
40a492:	00 00                	add    %al,(%eax)
40a494:	55                   	push   %ebp
40a495:	8b ec                	mov    %esp,%ebp
40a497:	ff 75 0c             	push   0xc(%ebp)
40a49a:	ff 75 08             	push   0x8(%ebp)
40a49d:	33 d2                	xor    %edx,%edx
40a49f:	e8 94 ff ff ff       	call   0x40a438
40a4a4:	5d                   	pop    %ebp
40a4a5:	c2 08 00             	ret    $0x8
40a4a8:	53                   	push   %ebx
40a4a9:	56                   	push   %esi
40a4aa:	57                   	push   %edi
40a4ab:	8b fa                	mov    %edx,%edi
40a4ad:	8b f0                	mov    %eax,%esi
40a4af:	8b 1f                	mov    (%edi),%ebx
40a4b1:	eb 01                	jmp    0x40a4b4
40a4b3:	43                   	inc    %ebx
40a4b4:	8b c6                	mov    %esi,%eax
40a4b6:	e8 9d 9d ff ff       	call   0x404258
40a4bb:	3b d8                	cmp    %eax,%ebx
40a4bd:	7f 07                	jg     0x40a4c6
40a4bf:	80 7c 1e ff 20       	cmpb   $0x20,-0x1(%esi,%ebx,1)
40a4c4:	74 ed                	je     0x40a4b3
40a4c6:	89 1f                	mov    %ebx,(%edi)
40a4c8:	5f                   	pop    %edi
40a4c9:	5e                   	pop    %esi
40a4ca:	5b                   	pop    %ebx
40a4cb:	c3                   	ret
40a4cc:	55                   	push   %ebp
40a4cd:	8b ec                	mov    %esp,%ebp
40a4cf:	83 c4 f4             	add    $0xfffffff4,%esp
40a4d2:	53                   	push   %ebx
40a4d3:	56                   	push   %esi
40a4d4:	57                   	push   %edi
40a4d5:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a4d8:	89 55 fc             	mov    %edx,-0x4(%ebp)
40a4db:	8b f8                	mov    %eax,%edi
40a4dd:	c6 45 f7 00          	movb   $0x0,-0x9(%ebp)
40a4e1:	8b 45 08             	mov    0x8(%ebp),%eax
40a4e4:	c6 00 00             	movb   $0x0,(%eax)
40a4e7:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a4ea:	8b c7                	mov    %edi,%eax
40a4ec:	e8 b7 ff ff ff       	call   0x40a4a8
40a4f1:	8b 5d fc             	mov    -0x4(%ebp),%ebx
40a4f4:	8b 1b                	mov    (%ebx),%ebx
40a4f6:	33 f6                	xor    %esi,%esi
40a4f8:	eb 17                	jmp    0x40a511
40a4fa:	8b c6                	mov    %esi,%eax
40a4fc:	03 c0                	add    %eax,%eax
40a4fe:	8d 04 80             	lea    (%eax,%eax,4),%eax
40a501:	33 d2                	xor    %edx,%edx
40a503:	8a 54 1f ff          	mov    -0x1(%edi,%ebx,1),%dl
40a507:	66 83 ea 30          	sub    $0x30,%dx
40a50b:	66 03 c2             	add    %dx,%ax
40a50e:	8b f0                	mov    %eax,%esi
40a510:	43                   	inc    %ebx
40a511:	8b c7                	mov    %edi,%eax
40a513:	e8 40 9d ff ff       	call   0x404258
40a518:	3b d8                	cmp    %eax,%ebx
40a51a:	7f 11                	jg     0x40a52d
40a51c:	8a 44 1f ff          	mov    -0x1(%edi,%ebx,1),%al
40a520:	04 d0                	add    $0xd0,%al
40a522:	2c 0a                	sub    $0xa,%al
40a524:	73 07                	jae    0x40a52d
40a526:	66 81 fe e8 03       	cmp    $0x3e8,%si
40a52b:	72 cd                	jb     0x40a4fa
40a52d:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a530:	3b 18                	cmp    (%eax),%ebx
40a532:	7e 1d                	jle    0x40a551
40a534:	8b c3                	mov    %ebx,%eax
40a536:	8b 55 fc             	mov    -0x4(%ebp),%edx
40a539:	8b 12                	mov    (%edx),%edx
40a53b:	2a c2                	sub    %dl,%al
40a53d:	8b 55 08             	mov    0x8(%ebp),%edx
40a540:	88 02                	mov    %al,(%edx)
40a542:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a545:	89 18                	mov    %ebx,(%eax)
40a547:	8b 45 f8             	mov    -0x8(%ebp),%eax
40a54a:	66 89 30             	mov    %si,(%eax)
40a54d:	c6 45 f7 01          	movb   $0x1,-0x9(%ebp)
40a551:	8a 45 f7             	mov    -0x9(%ebp),%al
40a554:	5f                   	pop    %edi
40a555:	5e                   	pop    %esi
40a556:	5b                   	pop    %ebx
40a557:	8b e5                	mov    %ebp,%esp
40a559:	5d                   	pop    %ebp
40a55a:	c2 04 00             	ret    $0x4
40a55d:	8d 40 00             	lea    0x0(%eax),%eax
40a560:	55                   	push   %ebp
40a561:	8b ec                	mov    %esp,%ebp
40a563:	83 c4 f8             	add    $0xfffffff8,%esp
40a566:	53                   	push   %ebx
40a567:	56                   	push   %esi
40a568:	57                   	push   %edi
40a569:	33 db                	xor    %ebx,%ebx
40a56b:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40a56e:	8b f9                	mov    %ecx,%edi
40a570:	8b f2                	mov    %edx,%esi
40a572:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a575:	33 c0                	xor    %eax,%eax
40a577:	55                   	push   %ebp
40a578:	68 d9 a5 40 00       	push   $0x40a5d9
40a57d:	64 ff 30             	push   %fs:(%eax)
40a580:	64 89 20             	mov    %esp,%fs:(%eax)
40a583:	33 db                	xor    %ebx,%ebx
40a585:	85 ff                	test   %edi,%edi
40a587:	74 3a                	je     0x40a5c3
40a589:	8b d6                	mov    %esi,%edx
40a58b:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a58e:	e8 15 ff ff ff       	call   0x40a4a8
40a593:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a596:	50                   	push   %eax
40a597:	8b c7                	mov    %edi,%eax
40a599:	e8 ba 9c ff ff       	call   0x404258
40a59e:	8b c8                	mov    %eax,%ecx
40a5a0:	8b 16                	mov    (%esi),%edx
40a5a2:	8b 45 fc             	mov    -0x4(%ebp),%eax
40a5a5:	e8 0e 9f ff ff       	call   0x4044b8
40a5aa:	8b 55 f8             	mov    -0x8(%ebp),%edx
40a5ad:	8b c7                	mov    %edi,%eax
40a5af:	e8 5c d7 ff ff       	call   0x407d10
40a5b4:	85 c0                	test   %eax,%eax
40a5b6:	75 0b                	jne    0x40a5c3
40a5b8:	8b c7                	mov    %edi,%eax
40a5ba:	e8 99 9c ff ff       	call   0x404258
40a5bf:	01 06                	add    %eax,(%esi)
40a5c1:	b3 01                	mov    $0x1,%bl
40a5c3:	33 c0                	xor    %eax,%eax
40a5c5:	5a                   	pop    %edx
40a5c6:	59                   	pop    %ecx
40a5c7:	59                   	pop    %ecx
40a5c8:	64 89 10             	mov    %edx,%fs:(%eax)
40a5cb:	68 e0 a5 40 00       	push   $0x40a5e0
40a5d0:	8d 45 f8             	lea    -0x8(%ebp),%eax
40a5d3:	e8 c0 99 ff ff       	call   0x403f98
40a5d8:	c3                   	ret
40a5d9:	e9 be 93 ff ff       	jmp    0x40399c
40a5de:	eb f0                	jmp    0x40a5d0
40a5e0:	8b c3                	mov    %ebx,%eax
40a5e2:	5f                   	pop    %edi
40a5e3:	5e                   	pop    %esi
40a5e4:	5b                   	pop    %ebx
40a5e5:	59                   	pop    %ecx
40a5e6:	59                   	pop    %ecx
40a5e7:	5d                   	pop    %ebp
40a5e8:	c3                   	ret
40a5e9:	8d 40 00             	lea    0x0(%eax),%eax
40a5ec:	53                   	push   %ebx
40a5ed:	56                   	push   %esi
40a5ee:	57                   	push   %edi
40a5ef:	51                   	push   %ecx
40a5f0:	88 0c 24             	mov    %cl,(%esp)
40a5f3:	8b fa                	mov    %edx,%edi
40a5f5:	8b f0                	mov    %eax,%esi
40a5f7:	33 db                	xor    %ebx,%ebx
40a5f9:	8b d7                	mov    %edi,%edx
40a5fb:	8b c6                	mov    %esi,%eax
40a5fd:	e8 a6 fe ff ff       	call   0x40a4a8
40a602:	8b c6                	mov    %esi,%eax
40a604:	e8 4f 9c ff ff       	call   0x404258
40a609:	3b 07                	cmp    (%edi),%eax
40a60b:	7c 0f                	jl     0x40a61c
40a60d:	8b 07                	mov    (%edi),%eax
40a60f:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40a613:	3a 04 24             	cmp    (%esp),%al
40a616:	75 04                	jne    0x40a61c
40a618:	ff 07                	incl   (%edi)
40a61a:	b3 01                	mov    $0x1,%bl
40a61c:	8b c3                	mov    %ebx,%eax
40a61e:	5a                   	pop    %edx
40a61f:	5f                   	pop    %edi
40a620:	5e                   	pop    %esi
40a621:	5b                   	pop    %ebx
40a622:	c3                   	ret
40a623:	90                   	nop
40a624:	53                   	push   %ebx
40a625:	56                   	push   %esi
40a626:	57                   	push   %edi
40a627:	8b f0                	mov    %eax,%esi
40a629:	33 db                	xor    %ebx,%ebx
40a62b:	bf 01 00 00 00       	mov    $0x1,%edi
40a630:	eb 29                	jmp    0x40a65b
40a632:	8a 44 3e ff          	mov    -0x1(%esi,%edi,1),%al
40a636:	24 df                	and    $0xdf,%al
40a638:	2c 44                	sub    $0x44,%al
40a63a:	74 1a                	je     0x40a656
40a63c:	fe c8                	dec    %al
40a63e:	74 0a                	je     0x40a64a
40a640:	2c 08                	sub    $0x8,%al
40a642:	74 0e                	je     0x40a652
40a644:	2c 0c                	sub    $0xc,%al
40a646:	74 06                	je     0x40a64e
40a648:	eb 10                	jmp    0x40a65a
40a64a:	b3 02                	mov    $0x2,%bl
40a64c:	eb 1a                	jmp    0x40a668
40a64e:	b3 02                	mov    $0x2,%bl
40a650:	eb 16                	jmp    0x40a668
40a652:	33 db                	xor    %ebx,%ebx
40a654:	eb 12                	jmp    0x40a668
40a656:	b3 01                	mov    $0x1,%bl
40a658:	eb 0e                	jmp    0x40a668
40a65a:	47                   	inc    %edi
40a65b:	8b c6                	mov    %esi,%eax
40a65d:	e8 f6 9b ff ff       	call   0x404258
40a662:	3b f8                	cmp    %eax,%edi
40a664:	7e cc                	jle    0x40a632
40a666:	33 db                	xor    %ebx,%ebx
40a668:	8b c3                	mov    %ebx,%eax
40a66a:	5f                   	pop    %edi
40a66b:	5e                   	pop    %esi
40a66c:	5b                   	pop    %ebx
40a66d:	c3                   	ret
40a66e:	8b c0                	mov    %eax,%eax
40a670:	53                   	push   %ebx
40a671:	56                   	push   %esi
40a672:	8b da                	mov    %edx,%ebx
40a674:	8b f0                	mov    %eax,%esi
40a676:	eb 23                	jmp    0x40a69b
40a678:	8b 03                	mov    (%ebx),%eax
40a67a:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40a67e:	25 ff 00 00 00       	and    $0xff,%eax
40a683:	0f a3 05 0c 31 46 00 	bt     %eax,0x46310c
40a68a:	73 0d                	jae    0x40a699
40a68c:	8b 13                	mov    (%ebx),%edx
40a68e:	8b c6                	mov    %esi,%eax
40a690:	e8 fb 1a 00 00       	call   0x40c190
40a695:	89 03                	mov    %eax,(%ebx)
40a697:	eb 02                	jmp    0x40a69b
40a699:	ff 03                	incl   (%ebx)
40a69b:	8b c6                	mov    %esi,%eax
40a69d:	e8 b6 9b ff ff       	call   0x404258
40a6a2:	3b 03                	cmp    (%ebx),%eax
40a6a4:	7c 0c                	jl     0x40a6b2
40a6a6:	8b 03                	mov    (%ebx),%eax
40a6a8:	8a 44 06 ff          	mov    -0x1(%esi,%eax,1),%al
40a6ac:	04 d0                	add    $0xd0,%al
40a6ae:	2c 0a                	sub    $0xa,%al
40a6b0:	73 c6                	jae    0x40a678
40a6b2:	5e                   	pop    %esi
40a6b3:	5b                   	pop    %ebx
40a6b4:	c3                   	ret
40a6b5:	8d 40 00             	lea    0x0(%eax),%eax
40a6b8:	53                   	push   %ebx
40a6b9:	56                   	push   %esi
40a6ba:	57                   	push   %edi
40a6bb:	55                   	push   %ebp
40a6bc:	51                   	push   %ecx
40a6bd:	8b e8                	mov    %eax,%ebp
40a6bf:	33 c0                	xor    %eax,%eax
40a6c1:	89 04 24             	mov    %eax,(%esp)
40a6c4:	bf 07 00 00 00       	mov    $0x7,%edi
40a6c9:	bb 50 e7 46 00       	mov    $0x46e750,%ebx
40a6ce:	be 6c e7 46 00       	mov    $0x46e76c,%esi
40a6d3:	83 3b 00             	cmpl   $0x0,(%ebx)
40a6d6:	74 29                	je     0x40a701
40a6d8:	8b c5                	mov    %ebp,%eax
40a6da:	e8 79 9d ff ff       	call   0x404458
40a6df:	50                   	push   %eax
40a6e0:	8b 03                	mov    (%ebx),%eax
40a6e2:	e8 71 9d ff ff       	call   0x404458
40a6e7:	5a                   	pop    %edx
40a6e8:	e8 1b 1c 00 00       	call   0x40c308
40a6ed:	85 c0                	test   %eax,%eax
40a6ef:	74 07                	je     0x40a6f8
40a6f1:	8b 06                	mov    (%esi),%eax
40a6f3:	89 04 24             	mov    %eax,(%esp)
40a6f6:	eb 09                	jmp    0x40a701
40a6f8:	83 c6 04             	add    $0x4,%esi
40a6fb:	83 c3 04             	add    $0x4,%ebx
40a6fe:	4f                   	dec    %edi
40a6ff:	75 d2                	jne    0x40a6d3
40a701:	8b 04 24             	mov    (%esp),%eax
40a704:	5a                   	pop    %edx
40a705:	5d                   	pop    %ebp
40a706:	5f                   	pop    %edi
40a707:	5e                   	pop    %esi
40a708:	5b                   	pop    %ebx
40a709:	c3                   	ret
40a70a:	8b c0                	mov    %eax,%eax
40a70c:	55                   	push   %ebp
40a70d:	8b ec                	mov    %esp,%ebp
40a70f:	53                   	push   %ebx
40a710:	8b d8                	mov    %eax,%ebx
40a712:	83 3d 44 e7 46 00 12 	cmpl   $0x12,0x46e744
40a719:	75 3a                	jne    0x40a755
40a71b:	83 fb 63             	cmp    $0x63,%ebx
40a71e:	7f 24                	jg     0x40a744
40a720:	e8 87 f1 ff ff       	call   0x4098ac
40a725:	0f b7 c8             	movzwl %ax,%ecx
40a728:	8b 45 08             	mov    0x8(%ebp),%eax
40a72b:	8b 40 fc             	mov    -0x4(%eax),%eax
40a72e:	99                   	cltd
40a72f:	33 c2                	xor    %edx,%eax
40a731:	2b c2                	sub    %edx,%eax
40a733:	03 c8                	add    %eax,%ecx
40a735:	8b c1                	mov    %ecx,%eax
40a737:	b9 64 00 00 00       	mov    $0x64,%ecx
40a73c:	99                   	cltd
40a73d:	f7 f9                	idiv   %ecx
40a73f:	6b c0 64             	imul   $0x64,%eax,%eax
40a742:	03 d8                	add    %eax,%ebx
40a744:	8b 45 08             	mov    0x8(%ebp),%eax
40a747:	83 78 fc 00          	cmpl   $0x0,-0x4(%eax)
40a74b:	7e 0e                	jle    0x40a75b
40a74d:	8b 45 08             	mov    0x8(%ebp),%eax
40a750:	f7 58 fc             	negl   -0x4(%eax)
40a753:	eb 06                	jmp    0x40a75b
40a755:	8b 45 08             	mov    0x8(%ebp),%eax
40a758:	ff 48 fc             	decl   -0x4(%eax)
40a75b:	8b 45 08             	mov    0x8(%ebp),%eax
40a75e:	8b 40 fc             	mov    -0x4(%eax),%eax
40a761:	03 c3                	add    %ebx,%eax
40a763:	5b                   	pop    %ebx
40a764:	5d                   	pop    %ebp
40a765:	c3                   	ret
40a766:	8b c0                	mov    %eax,%eax
40a768:	55                   	push   %ebp
40a769:	8b ec                	mov    %esp,%ebp
40a76b:	83 c4 d8             	add    $0xffffffd8,%esp
40a76e:	53                   	push   %ebx
40a76f:	56                   	push   %esi
40a770:	57                   	push   %edi
40a771:	33 db                	xor    %ebx,%ebx
40a773:	89 5d d8             	mov    %ebx,-0x28(%ebp)