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)
40a776:	89 5d dc             	mov    %ebx,-0x24(%ebp)
40a779:	89 5d e0             	mov    %ebx,-0x20(%ebp)
40a77c:	89 5d e4             	mov    %ebx,-0x1c(%ebp)
40a77f:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40a782:	8b da                	mov    %edx,%ebx
40a784:	8b f0                	mov    %eax,%esi
40a786:	33 c0                	xor    %eax,%eax
40a788:	55                   	push   %ebp
40a789:	68 83 aa 40 00       	push   $0x40aa83
40a78e:	64 ff 30             	push   %fs:(%eax)
40a791:	64 89 20             	mov    %esp,%fs:(%eax)
40a794:	33 ff                	xor    %edi,%edi
40a796:	66 c7 45 ee 00 00    	movw   $0x0,-0x12(%ebp)
40a79c:	66 c7 45 ec 00 00    	movw   $0x0,-0x14(%ebp)
40a7a2:	c6 45 e8 00          	movb   $0x0,-0x18(%ebp)
40a7a6:	c6 45 f7 00          	movb   $0x0,-0x9(%ebp)
40a7aa:	a1 8c e6 46 00       	mov    0x46e68c,%eax
40a7af:	e8 70 fe ff ff       	call   0x40a624
40a7b4:	88 45 f6             	mov    %al,-0xa(%ebp)
40a7b7:	33 c0                	xor    %eax,%eax
40a7b9:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a7bc:	83 3d 8c e6 46 00 00 	cmpl   $0x0,0x46e68c
40a7c3:	74 3e                	je     0x40a803
40a7c5:	a1 8c e6 46 00       	mov    0x46e68c,%eax
40a7ca:	80 38 67             	cmpb   $0x67,(%eax)
40a7cd:	75 34                	jne    0x40a803
40a7cf:	8b d3                	mov    %ebx,%edx
40a7d1:	8b c6                	mov    %esi,%eax
40a7d3:	e8 98 fe ff ff       	call   0x40a670
40a7d8:	8d 45 e0             	lea    -0x20(%ebp),%eax
40a7db:	50                   	push   %eax
40a7dc:	8b 0b                	mov    (%ebx),%ecx
40a7de:	49                   	dec    %ecx
40a7df:	ba 01 00 00 00       	mov    $0x1,%edx
40a7e4:	8b c6                	mov    %esi,%eax
40a7e6:	e8 cd 9c ff ff       	call   0x4044b8
40a7eb:	8b 45 e0             	mov    -0x20(%ebp),%eax
40a7ee:	8d 55 e4             	lea    -0x1c(%ebp),%edx
40a7f1:	e8 8a d5 ff ff       	call   0x407d80
40a7f6:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40a7f9:	e8 ba fe ff ff       	call   0x40a6b8
40a7fe:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a801:	eb 1c                	jmp    0x40a81f
40a803:	8b 15 8c e6 46 00    	mov    0x46e68c,%edx
40a809:	b8 9c aa 40 00       	mov    $0x40aa9c,%eax
40a80e:	e8 31 1a 00 00       	call   0x40c244
40a813:	85 c0                	test   %eax,%eax
40a815:	7e 08                	jle    0x40a81f
40a817:	a1 6c e7 46 00       	mov    0x46e76c,%eax
40a81c:	89 45 fc             	mov    %eax,-0x4(%ebp)
40a81f:	8d 45 eb             	lea    -0x15(%ebp),%eax
40a822:	50                   	push   %eax
40a823:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40a826:	8b d3                	mov    %ebx,%edx
40a828:	8b c6                	mov    %esi,%eax
40a82a:	e8 9d fc ff ff       	call   0x40a4cc
40a82f:	84 c0                	test   %al,%al
40a831:	0f 84 31 02 00 00    	je     0x40aa68
40a837:	8b d3                	mov    %ebx,%edx
40a839:	8a 0d 89 e6 46 00    	mov    0x46e689,%cl
40a83f:	8b c6                	mov    %esi,%eax
40a841:	e8 a6 fd ff ff       	call   0x40a5ec
40a846:	84 c0                	test   %al,%al
40a848:	0f 84 1a 02 00 00    	je     0x40aa68
40a84e:	8d 45 ea             	lea    -0x16(%ebp),%eax
40a851:	50                   	push   %eax
40a852:	8d 4d f2             	lea    -0xe(%ebp),%ecx
40a855:	8b d3                	mov    %ebx,%edx
40a857:	8b c6                	mov    %esi,%eax
40a859:	e8 6e fc ff ff       	call   0x40a4cc
40a85e:	84 c0                	test   %al,%al
40a860:	0f 84 02 02 00 00    	je     0x40aa68
40a866:	8b d3                	mov    %ebx,%edx
40a868:	8a 0d 89 e6 46 00    	mov    0x46e689,%cl
40a86e:	8b c6                	mov    %esi,%eax
40a870:	e8 77 fd ff ff       	call   0x40a5ec
40a875:	84 c0                	test   %al,%al
40a877:	0f 84 ce 00 00 00    	je     0x40a94b
40a87d:	8d 45 e9             	lea    -0x17(%ebp),%eax
40a880:	50                   	push   %eax
40a881:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40a884:	8b d3                	mov    %ebx,%edx
40a886:	8b c6                	mov    %esi,%eax
40a888:	e8 3f fc ff ff       	call   0x40a4cc
40a88d:	84 c0                	test   %al,%al
40a88f:	0f 84 d3 01 00 00    	je     0x40aa68
40a895:	8a 45 f6             	mov    -0xa(%ebp),%al
40a898:	2c 01                	sub    $0x1,%al
40a89a:	72 08                	jb     0x40a8a4
40a89c:	74 22                	je     0x40a8c0
40a89e:	fe c8                	dec    %al
40a8a0:	74 3a                	je     0x40a8dc
40a8a2:	eb 52                	jmp    0x40a8f6
40a8a4:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40a8a8:	8a 45 e9             	mov    -0x17(%ebp),%al
40a8ab:	88 45 e8             	mov    %al,-0x18(%ebp)
40a8ae:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40a8b2:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40a8b6:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40a8ba:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40a8be:	eb 36                	jmp    0x40a8f6
40a8c0:	66 8b 7d f0          	mov    -0x10(%ebp),%di
40a8c4:	8a 45 e9             	mov    -0x17(%ebp),%al
40a8c7:	88 45 e8             	mov    %al,-0x18(%ebp)
40a8ca:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40a8ce:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40a8d2:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40a8d6:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40a8da:	eb 1a                	jmp    0x40a8f6
40a8dc:	66 8b 7d f4          	mov    -0xc(%ebp),%di
40a8e0:	8a 45 eb             	mov    -0x15(%ebp),%al
40a8e3:	88 45 e8             	mov    %al,-0x18(%ebp)
40a8e6:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40a8ea:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40a8ee:	66 8b 45 f0          	mov    -0x10(%ebp),%ax
40a8f2:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40a8f6:	83 7d fc 00          	cmpl   $0x0,-0x4(%ebp)
40a8fa:	7e 0e                	jle    0x40a90a
40a8fc:	55                   	push   %ebp
40a8fd:	0f b7 c7             	movzwl %di,%eax
40a900:	e8 07 fe ff ff       	call   0x40a70c
40a905:	59                   	pop    %ecx
40a906:	8b f8                	mov    %eax,%edi
40a908:	eb 70                	jmp    0x40a97a
40a90a:	80 7d e8 02          	cmpb   $0x2,-0x18(%ebp)
40a90e:	77 6a                	ja     0x40a97a
40a910:	e8 97 ef ff ff       	call   0x4098ac
40a915:	0f b7 c8             	movzwl %ax,%ecx
40a918:	0f b7 05 d8 30 46 00 	movzwl 0x4630d8,%eax
40a91f:	2b c8                	sub    %eax,%ecx
40a921:	8b c1                	mov    %ecx,%eax
40a923:	51                   	push   %ecx
40a924:	b9 64 00 00 00       	mov    $0x64,%ecx
40a929:	99                   	cltd
40a92a:	f7 f9                	idiv   %ecx
40a92c:	59                   	pop    %ecx
40a92d:	66 6b c0 64          	imul   $0x64,%ax,%ax
40a931:	66 03 f8             	add    %ax,%di
40a934:	66 83 3d d8 30 46 00 	cmpw   $0x0,0x4630d8
40a93b:	00
40a93c:	76 3c                	jbe    0x40a97a
40a93e:	0f b7 c7             	movzwl %di,%eax
40a941:	3b c8                	cmp    %eax,%ecx
40a943:	7e 35                	jle    0x40a97a
40a945:	66 83 c7 64          	add    $0x64,%di
40a949:	eb 2f                	jmp    0x40a97a
40a94b:	e8 5c ef ff ff       	call   0x4098ac
40a950:	8b f8                	mov    %eax,%edi
40a952:	80 7d f6 01          	cmpb   $0x1,-0xa(%ebp)
40a956:	75 12                	jne    0x40a96a
40a958:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40a95c:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40a960:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40a964:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40a968:	eb 10                	jmp    0x40a97a
40a96a:	66 8b 45 f4          	mov    -0xc(%ebp),%ax
40a96e:	66 89 45 ee          	mov    %ax,-0x12(%ebp)
40a972:	66 8b 45 f2          	mov    -0xe(%ebp),%ax
40a976:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40a97a:	8b d3                	mov    %ebx,%edx
40a97c:	8a 0d 89 e6 46 00    	mov    0x46e689,%cl
40a982:	8b c6                	mov    %esi,%eax
40a984:	e8 63 fc ff ff       	call   0x40a5ec
40a989:	8b d3                	mov    %ebx,%edx
40a98b:	8b c6                	mov    %esi,%eax
40a98d:	e8 16 fb ff ff       	call   0x40a4a8
40a992:	80 3d 4c e7 46 00 00 	cmpb   $0x0,0x46e74c
40a999:	0f 84 b3 00 00 00    	je     0x40aa52
40a99f:	8b 15 8c e6 46 00    	mov    0x46e68c,%edx
40a9a5:	b8 a8 aa 40 00       	mov    $0x40aaa8,%eax
40a9aa:	e8 ed 9b ff ff       	call   0x40459c
40a9af:	85 c0                	test   %eax,%eax
40a9b1:	0f 84 9b 00 00 00    	je     0x40aa52
40a9b7:	a1 a0 e6 46 00       	mov    0x46e6a0,%eax
40a9bc:	8a 00                	mov    (%eax),%al