40a5eb:	8b f0                	mov    %eax,%esi
40a5ed:	eb 19                	jmp    0x40a608
40a5ef:	6a 30                	push   $0x30
40a5f1:	58                   	pop    %eax
40a5f2:	66 89 06             	mov    %ax,(%esi)
40a5f5:	4e                   	dec    %esi
40a5f6:	4e                   	dec    %esi
40a5f7:	3b f3                	cmp    %ebx,%esi
40a5f9:	72 1b                	jb     0x40a616
40a5fb:	0f b7 06             	movzwl (%esi),%eax
40a5fe:	50                   	push   %eax
40a5ff:	e8 ec 62 00 00       	call   0x4108f0
40a604:	84 c0                	test   %al,%al
40a606:	74 0e                	je     0x40a616
40a608:	66 ff 06             	incw   (%esi)
40a60b:	0f b7 06             	movzwl (%esi),%eax
40a60e:	66 83 f8 3a          	cmp    $0x3a,%ax
40a612:	74 db                	je     0x40a5ef
40a614:	eb 7a                	jmp    0x40a690
40a616:	53                   	push   %ebx
40a617:	e8 6f fb 00 00       	call   0x41a18b
40a61c:	59                   	pop    %ecx
40a61d:	8d 04 43             	lea    (%ebx,%eax,2),%eax
40a620:	eb 09                	jmp    0x40a62b
40a622:	66 8b 08             	mov    (%eax),%cx
40a625:	66 89 48 02          	mov    %cx,0x2(%eax)
40a629:	48                   	dec    %eax
40a62a:	48                   	dec    %eax
40a62b:	3b c6                	cmp    %esi,%eax
40a62d:	75 f3                	jne    0x40a622
40a62f:	6a 31                	push   $0x31
40a631:	58                   	pop    %eax
40a632:	66 89 46 02          	mov    %ax,0x2(%esi)
40a636:	eb 58                	jmp    0x40a690
40a638:	8d 7e 04             	lea    0x4(%esi),%edi
40a63b:	0f b7 07             	movzwl (%edi),%eax
40a63e:	50                   	push   %eax
40a63f:	e8 ac 62 00 00       	call   0x4108f0
40a644:	84 c0                	test   %al,%al
40a646:	74 3b                	je     0x40a683
40a648:	83 c6 06             	add    $0x6,%esi
40a64b:	0f b7 06             	movzwl (%esi),%eax
40a64e:	50                   	push   %eax
40a64f:	e8 9c 62 00 00       	call   0x4108f0
40a654:	84 c0                	test   %al,%al
40a656:	74 2b                	je     0x40a683
40a658:	8b c6                	mov    %esi,%eax
40a65a:	eb 11                	jmp    0x40a66d
40a65c:	8d 48 fe             	lea    -0x2(%eax),%ecx
40a65f:	66 83 39 2e          	cmpw   $0x2e,(%ecx)
40a663:	74 16                	je     0x40a67b
40a665:	6a 30                	push   $0x30
40a667:	5a                   	pop    %edx
40a668:	66 89 10             	mov    %dx,(%eax)
40a66b:	8b c1                	mov    %ecx,%eax
40a66d:	66 ff 00             	incw   (%eax)
40a670:	0f b7 08             	movzwl (%eax),%ecx
40a673:	66 83 f9 3a          	cmp    $0x3a,%cx
40a677:	74 e3                	je     0x40a65c
40a679:	eb 15                	jmp    0x40a690
40a67b:	6a 41                	push   $0x41
40a67d:	59                   	pop    %ecx
40a67e:	66 89 08             	mov    %cx,(%eax)
40a681:	eb 0d                	jmp    0x40a690
40a683:	68 78 a6 42 00       	push   $0x42a678
40a688:	57                   	push   %edi
40a689:	e8 45 fb 00 00       	call   0x41a1d3
40a68e:	59                   	pop    %ecx
40a68f:	59                   	pop    %ecx
40a690:	5f                   	pop    %edi
40a691:	5e                   	pop    %esi
40a692:	5b                   	pop    %ebx
40a693:	c2 0c 00             	ret    $0xc
40a696:	56                   	push   %esi
40a697:	8b 74 24 08          	mov    0x8(%esp),%esi
40a69b:	66 83 3e 5c          	cmpw   $0x5c,(%esi)
40a69f:	75 07                	jne    0x40a6a8
40a6a1:	66 83 7e 02 5c       	cmpw   $0x5c,0x2(%esi)
40a6a6:	74 18                	je     0x40a6c0
40a6a8:	56                   	push   %esi
40a6a9:	e8 41 fb ff ff       	call   0x40a1ef
40a6ae:	84 c0                	test   %al,%al
40a6b0:	74 13                	je     0x40a6c5
40a6b2:	0f b7 46 04          	movzwl 0x4(%esi),%eax
40a6b6:	50                   	push   %eax
40a6b7:	e8 1b f9 ff ff       	call   0x409fd7
40a6bc:	84 c0                	test   %al,%al
40a6be:	74 05                	je     0x40a6c5
40a6c0:	33 c0                	xor    %eax,%eax
40a6c2:	40                   	inc    %eax
40a6c3:	eb 02                	jmp    0x40a6c7
40a6c5:	33 c0                	xor    %eax,%eax
40a6c7:	5e                   	pop    %esi
40a6c8:	c2 04 00             	ret    $0x4
40a6cb:	53                   	push   %ebx
40a6cc:	8b 5c 24 0c          	mov    0xc(%esp),%ebx
40a6d0:	56                   	push   %esi
40a6d1:	8b 74 24 0c          	mov    0xc(%esp),%esi
40a6d5:	33 c0                	xor    %eax,%eax
40a6d7:	56                   	push   %esi
40a6d8:	66 89 03             	mov    %ax,(%ebx)
40a6db:	e8 0f fb ff ff       	call   0x40a1ef
40a6e0:	84 c0                	test   %al,%al
40a6e2:	74 18                	je     0x40a6fc
40a6e4:	0f b7 06             	movzwl (%esi),%eax
40a6e7:	50                   	push   %eax
40a6e8:	68 9c a6 42 00       	push   $0x42a69c
40a6ed:	ff 74 24 1c          	push   0x1c(%esp)
40a6f1:	53                   	push   %ebx
40a6f2:	e8 eb 2e 00 00       	call   0x40d5e2
40a6f7:	83 c4 10             	add    $0x10,%esp
40a6fa:	eb 59                	jmp    0x40a755
40a6fc:	57                   	push   %edi
40a6fd:	6a 5c                	push   $0x5c
40a6ff:	5f                   	pop    %edi
40a700:	66 39 3e             	cmp    %di,(%esi)
40a703:	75 4f                	jne    0x40a754
40a705:	66 39 7e 02          	cmp    %di,0x2(%esi)
40a709:	75 49                	jne    0x40a754
40a70b:	8d 46 04             	lea    0x4(%esi),%eax
40a70e:	57                   	push   %edi
40a70f:	50                   	push   %eax
40a710:	e8 34 1d 01 00       	call   0x41c449
40a715:	59                   	pop    %ecx
40a716:	59                   	pop    %ecx
40a717:	85 c0                	test   %eax,%eax
40a719:	74 39                	je     0x40a754
40a71b:	83 c0 02             	add    $0x2,%eax
40a71e:	57                   	push   %edi
40a71f:	50                   	push   %eax
40a720:	e8 24 1d 01 00       	call   0x41c449
40a725:	59                   	pop    %ecx
40a726:	59                   	pop    %ecx
40a727:	85 c0                	test   %eax,%eax
40a729:	74 07                	je     0x40a732
40a72b:	2b c6                	sub    %esi,%eax
40a72d:	d1 f8                	sar    $1,%eax
40a72f:	40                   	inc    %eax
40a730:	eb 07                	jmp    0x40a739
40a732:	56                   	push   %esi
40a733:	e8 53 fa 00 00       	call   0x41a18b
40a738:	59                   	pop    %ecx
40a739:	8b f8                	mov    %eax,%edi
40a73b:	3b 7c 24 18          	cmp    0x18(%esp),%edi
40a73f:	72 02                	jb     0x40a743
40a741:	33 ff                	xor    %edi,%edi
40a743:	57                   	push   %edi
40a744:	56                   	push   %esi
40a745:	53                   	push   %ebx
40a746:	e8 66 1c 01 00       	call   0x41c3b1
40a74b:	83 c4 0c             	add    $0xc,%esp
40a74e:	33 c0                	xor    %eax,%eax
40a750:	66 89 04 7b          	mov    %ax,(%ebx,%edi,2)
40a754:	5f                   	pop    %edi
40a755:	5e                   	pop    %esi
40a756:	5b                   	pop    %ebx
40a757:	c2 0c 00             	ret    $0xc
40a75a:	55                   	push   %ebp
40a75b:	8b ec                	mov    %esp,%ebp
40a75d:	b8 00 10 00 00       	mov    $0x1000,%eax
40a762:	e8 69 fd 00 00       	call   0x41a4d0
40a767:	56                   	push   %esi
40a768:	8b 75 08             	mov    0x8(%ebp),%esi
40a76b:	66 83 3e 00          	cmpw   $0x0,(%esi)
40a76f:	75 07                	jne    0x40a778
40a771:	32 c0                	xor    %al,%al
40a773:	e9 8a 01 00 00       	jmp    0x40a902
40a778:	53                   	push   %ebx
40a779:	57                   	push   %edi
40a77a:	56                   	push   %esi
40a77b:	e8 6f fa ff ff       	call   0x40a1ef
40a780:	56                   	push   %esi
40a781:	e8 05 fa 00 00       	call   0x41a18b
40a786:	59                   	pop    %ecx
40a787:	56                   	push   %esi
40a788:	8b d8                	mov    %eax,%ebx
40a78a:	e8 07 ff ff ff       	call   0x40a696
40a78f:	84 c0                	test   %al,%al
40a791:	0f 84 8b 00 00 00    	je     0x40a822
40a797:	56                   	push   %esi
40a798:	e8 52 fa ff ff       	call   0x40a1ef
40a79d:	84 c0                	test   %al,%al
40a79f:	74 2e                	je     0x40a7cf
40a7a1:	83 c3 04             	add    $0x4,%ebx
40a7a4:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a7a7:	0f 86 51 01 00 00    	jbe    0x40a8fe
40a7ad:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a7b0:	6a 04                	push   $0x4
40a7b2:	68 b0 a6 42 00       	push   $0x42a6b0
40a7b7:	57                   	push   %edi
40a7b8:	e8 f4 1b 01 00       	call   0x41c3b1
40a7bd:	56                   	push   %esi
40a7be:	83 c7 08             	add    $0x8,%edi
40a7c1:	57                   	push   %edi
40a7c2:	e8 0c fa 00 00       	call   0x41a1d3
40a7c7:	83 c4 14             	add    $0x14,%esp
40a7ca:	e9 2b 01 00 00       	jmp    0x40a8fa
40a7cf:	66 83 3e 5c          	cmpw   $0x5c,(%esi)
40a7d3:	0f 85 25 01 00 00    	jne    0x40a8fe
40a7d9:	83 c6 02             	add    $0x2,%esi
40a7dc:	66 83 3e 5c          	cmpw   $0x5c,(%esi)
40a7e0:	0f 85 18 01 00 00    	jne    0x40a8fe
40a7e6:	83 c3 06             	add    $0x6,%ebx
40a7e9:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a7ec:	0f 86 0c 01 00 00    	jbe    0x40a8fe
40a7f2:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a7f5:	6a 04                	push   $0x4
40a7f7:	68 b0 a6 42 00       	push   $0x42a6b0
40a7fc:	57                   	push   %edi
40a7fd:	e8 af 1b 01 00       	call   0x41c3b1
40a802:	8d 47 08             	lea    0x8(%edi),%eax
40a805:	68 a8 a6 42 00       	push   $0x42a6a8
40a80a:	50                   	push   %eax
40a80b:	e8 c3 f9 00 00       	call   0x41a1d3
40a810:	56                   	push   %esi
40a811:	83 c7 0e             	add    $0xe,%edi
40a814:	57                   	push   %edi
40a815:	e8 b9 f9 00 00       	call   0x41a1d3
40a81a:	83 c4 1c             	add    $0x1c,%esp
40a81d:	e9 d8 00 00 00       	jmp    0x40a8fa
40a822:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a828:	50                   	push   %eax
40a829:	bf ff 07 00 00       	mov    $0x7ff,%edi
40a82e:	57                   	push   %edi
40a82f:	ff 15 70 a0 42 00    	call   *0x42a070
40a835:	85 c0                	test   %eax,%eax
40a837:	0f 84 c1 00 00 00    	je     0x40a8fe
40a83d:	3b c7                	cmp    %edi,%eax
40a83f:	0f 87 b9 00 00 00    	ja     0x40a8fe
40a845:	0f b7 06             	movzwl (%esi),%eax
40a848:	50                   	push   %eax
40a849:	e8 89 f7 ff ff       	call   0x409fd7
40a84e:	84 c0                	test   %al,%al
40a850:	74 3d                	je     0x40a88f
40a852:	83 c3 06             	add    $0x6,%ebx
40a855:	39 5d 10             	cmp    %ebx,0x10(%ebp)
40a858:	0f 86 a0 00 00 00    	jbe    0x40a8fe
40a85e:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a861:	6a 04                	push   $0x4
40a863:	68 b0 a6 42 00       	push   $0x42a6b0
40a868:	57                   	push   %edi
40a869:	e8 43 1b 01 00       	call   0x41c3b1
40a86e:	6a 02                	push   $0x2
40a870:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a876:	50                   	push   %eax
40a877:	8d 47 08             	lea    0x8(%edi),%eax
40a87a:	50                   	push   %eax
40a87b:	e8 31 1b 01 00       	call   0x41c3b1
40a880:	56                   	push   %esi
40a881:	83 c7 0c             	add    $0xc,%edi
40a884:	57                   	push   %edi
40a885:	e8 49 f9 00 00       	call   0x41a1d3
40a88a:	83 c4 20             	add    $0x20,%esp
40a88d:	eb 6b                	jmp    0x40a8fa
40a88f:	68 00 08 00 00       	push   $0x800
40a894:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a89a:	50                   	push   %eax
40a89b:	e8 5c f7 ff ff       	call   0x409ffc
40a8a0:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a8a6:	50                   	push   %eax
40a8a7:	e8 df f8 00 00       	call   0x41a18b
40a8ac:	8d 44 18 04          	lea    0x4(%eax,%ebx,1),%eax
40a8b0:	59                   	pop    %ecx
40a8b1:	39 45 10             	cmp    %eax,0x10(%ebp)
40a8b4:	76 48                	jbe    0x40a8fe
40a8b6:	8b 7d 0c             	mov    0xc(%ebp),%edi
40a8b9:	6a 04                	push   $0x4
40a8bb:	68 b0 a6 42 00       	push   $0x42a6b0
40a8c0:	57                   	push   %edi
40a8c1:	e8 eb 1a 01 00       	call   0x41c3b1
40a8c6:	8d 85 00 f0 ff ff    	lea    -0x1000(%ebp),%eax
40a8cc:	50                   	push   %eax
40a8cd:	8d 47 08             	lea    0x8(%edi),%eax
40a8d0:	50                   	push   %eax
40a8d1:	e8 fd f8 00 00       	call   0x41a1d3
40a8d6:	83 c4 14             	add    $0x14,%esp
40a8d9:	66 83 3e 2e          	cmpw   $0x2e,(%esi)
40a8dd:	75 11                	jne    0x40a8f0
40a8df:	0f b7 46 02          	movzwl 0x2(%esi),%eax
40a8e3:	50                   	push   %eax
40a8e4:	e8 ee f6 ff ff       	call   0x409fd7
40a8e9:	84 c0                	test   %al,%al
40a8eb:	74 03                	je     0x40a8f0
40a8ed:	83 c6 04             	add    $0x4,%esi
40a8f0:	ff 75 10             	push   0x10(%ebp)
40a8f3:	56                   	push   %esi
40a8f4:	57                   	push   %edi
40a8f5:	e8 52 60 00 00       	call   0x41094c
40a8fa:	b0 01                	mov    $0x1,%al
40a8fc:	eb 02                	jmp    0x40a900
40a8fe:	32 c0                	xor    %al,%al
40a900:	5f                   	pop    %edi
40a901:	5b                   	pop    %ebx
40a902:	5e                   	pop    %esi
40a903:	c9                   	leave
40a904:	c2 0c 00             	ret    $0xc
40a907:	55                   	push   %ebp
40a908:	8b ec                	mov    %esp,%ebp
40a90a:	b8 04 20 00 00       	mov    $0x2004,%eax
40a90f:	e8 bc fb 00 00       	call   0x41a4d0
40a914:	8b 45 08             	mov    0x8(%ebp),%eax
40a917:	53                   	push   %ebx
40a918:	56                   	push   %esi
40a919:	85 c0                	test   %eax,%eax
40a91b:	0f 84 84 00 00 00    	je     0x40a9a5
40a921:	66 83 38 00          	cmpw   $0x0,(%eax)
40a925:	74 7e                	je     0x40a9a5
40a927:	57                   	push   %edi
40a928:	8b 3d 74 a0 42 00    	mov    0x42a074,%edi
40a92e:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40a931:	51                   	push   %ecx
40a932:	8d 8d fc ef ff ff    	lea    -0x1004(%ebp),%ecx
40a938:	51                   	push   %ecx
40a939:	be 00 08 00 00       	mov    $0x800,%esi
40a93e:	56                   	push   %esi
40a93f:	50                   	push   %eax
40a940:	ff d7                	call   *%edi
40a942:	8b d8                	mov    %eax,%ebx
40a944:	85 db                	test   %ebx,%ebx
40a946:	74 04                	je     0x40a94c
40a948:	3b de                	cmp    %esi,%ebx
40a94a:	76 2b                	jbe    0x40a977
40a94c:	56                   	push   %esi
40a94d:	8d 85 fc df ff ff    	lea    -0x2004(%ebp),%eax
40a953:	50                   	push   %eax
40a954:	ff 75 08             	push   0x8(%ebp)
40a957:	e8 fe fd ff ff       	call   0x40a75a
40a95c:	84 c0                	test   %al,%al
40a95e:	74 17                	je     0x40a977
40a960:	8d 45 fc             	lea    -0x4(%ebp),%eax
40a963:	50                   	push   %eax
40a964:	8d 85 fc ef ff ff    	lea    -0x1004(%ebp),%eax
40a96a:	50                   	push   %eax
40a96b:	56                   	push   %esi
40a96c:	8d 85 fc df ff ff    	lea    -0x2004(%ebp),%eax
40a972:	50                   	push   %eax
40a973:	ff d7                	call   *%edi
40a975:	8b d8                	mov    %eax,%ebx
40a977:	5f                   	pop    %edi
40a978:	85 db                	test   %ebx,%ebx
40a97a:	74 13                	je     0x40a98f
40a97c:	3b de                	cmp    %esi,%ebx
40a97e:	73 0f                	jae    0x40a98f
40a980:	ff 75 10             	push   0x10(%ebp)
40a983:	8d 85 fc ef ff ff    	lea    -0x1004(%ebp),%eax
40a989:	50                   	push   %eax
40a98a:	ff 75 0c             	push   0xc(%ebp)
40a98d:	eb 0f                	jmp    0x40a99e
40a98f:	8b 45 0c             	mov    0xc(%ebp),%eax
40a992:	39 45 08             	cmp    %eax,0x8(%ebp)