40f5fb:	5d                   	pop    %ebp
40f5fc:	c3                   	ret
40f5fd:	8b ff                	mov    %edi,%edi
40f5ff:	55                   	push   %ebp
40f600:	8b ec                	mov    %esp,%ebp
40f602:	56                   	push   %esi
40f603:	8b 35 8c ba 42 00    	mov    0x42ba8c,%esi
40f609:	85 f6                	test   %esi,%esi
40f60b:	75 1d                	jne    0x40f62a
40f60d:	68 88 25 40 00       	push   $0x402588
40f612:	e8 63 eb ff ff       	call   0x40e17a
40f617:	50                   	push   %eax
40f618:	ff 15 84 c1 42 00    	call   *0x42c184
40f61e:	8b f0                	mov    %eax,%esi
40f620:	89 35 8c ba 42 00    	mov    %esi,0x42ba8c
40f626:	85 f6                	test   %esi,%esi
40f628:	74 0d                	je     0x40f637
40f62a:	ff 75 08             	push   0x8(%ebp)
40f62d:	8b ce                	mov    %esi,%ecx
40f62f:	ff 15 d4 c4 42 00    	call   *0x42c4d4
40f635:	ff d6                	call   *%esi
40f637:	5e                   	pop    %esi
40f638:	5d                   	pop    %ebp
40f639:	c2 04 00             	ret    $0x4
40f63c:	8b ff                	mov    %edi,%edi
40f63e:	55                   	push   %ebp
40f63f:	8b ec                	mov    %esp,%ebp
40f641:	56                   	push   %esi
40f642:	8b 35 84 ba 42 00    	mov    0x42ba84,%esi
40f648:	85 f6                	test   %esi,%esi
40f64a:	75 1d                	jne    0x40f669
40f64c:	68 e8 24 40 00       	push   $0x4024e8
40f651:	e8 24 eb ff ff       	call   0x40e17a
40f656:	50                   	push   %eax
40f657:	ff 15 84 c1 42 00    	call   *0x42c184
40f65d:	8b f0                	mov    %eax,%esi
40f65f:	89 35 84 ba 42 00    	mov    %esi,0x42ba84
40f665:	85 f6                	test   %esi,%esi
40f667:	74 0d                	je     0x40f676
40f669:	ff 75 08             	push   0x8(%ebp)
40f66c:	8b ce                	mov    %esi,%ecx
40f66e:	ff 15 d4 c4 42 00    	call   *0x42c4d4
40f674:	ff d6                	call   *%esi
40f676:	5e                   	pop    %esi
40f677:	5d                   	pop    %ebp
40f678:	c2 04 00             	ret    $0x4
40f67b:	8b ff                	mov    %edi,%edi
40f67d:	55                   	push   %ebp
40f67e:	8b ec                	mov    %esp,%ebp
40f680:	0f b7 51 08          	movzwl 0x8(%ecx),%edx
40f684:	8b 45 0c             	mov    0xc(%ebp),%eax
40f687:	3b c2                	cmp    %edx,%eax
40f689:	75 11                	jne    0x40f69c
40f68b:	50                   	push   %eax
40f68c:	ff 71 10             	push   0x10(%ecx)
40f68f:	ff 75 08             	push   0x8(%ebp)
40f692:	e8 04 8d 01 00       	call   0x42839b
40f697:	83 c4 0c             	add    $0xc,%esp
40f69a:	eb 02                	jmp    0x40f69e
40f69c:	2b c2                	sub    %edx,%eax
40f69e:	5d                   	pop    %ebp
40f69f:	c2 08 00             	ret    $0x8
40f6a2:	8b ff                	mov    %edi,%edi
40f6a4:	55                   	push   %ebp
40f6a5:	8b ec                	mov    %esp,%ebp
40f6a7:	51                   	push   %ecx
40f6a8:	8b 55 08             	mov    0x8(%ebp),%edx
40f6ab:	8d 41 04             	lea    0x4(%ecx),%eax
40f6ae:	39 10                	cmp    %edx,(%eax)
40f6b0:	74 31                	je     0x40f6e3
40f6b2:	89 10                	mov    %edx,(%eax)
40f6b4:	8a 51 02             	mov    0x2(%ecx),%dl
40f6b7:	80 fa 01             	cmp    $0x1,%dl
40f6ba:	75 11                	jne    0x40f6cd
40f6bc:	66 8b 00             	mov    (%eax),%ax
40f6bf:	66 89 45 fc          	mov    %ax,-0x4(%ebp)
40f6c3:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f6c6:	6a 02                	push   $0x2
40f6c8:	50                   	push   %eax
40f6c9:	6a 02                	push   $0x2
40f6cb:	eb 0a                	jmp    0x40f6d7
40f6cd:	80 fa 02             	cmp    $0x2,%dl
40f6d0:	75 11                	jne    0x40f6e3
40f6d2:	6a 04                	push   $0x4
40f6d4:	50                   	push   %eax
40f6d5:	6a 04                	push   $0x4
40f6d7:	ff 71 0c             	push   0xc(%ecx)
40f6da:	ff 15 60 c3 42 00    	call   *0x42c360
40f6e0:	83 c4 10             	add    $0x10,%esp
40f6e3:	c9                   	leave
40f6e4:	c2 04 00             	ret    $0x4
40f6e7:	0f b7 01             	movzwl (%ecx),%eax
40f6ea:	66 85 c0             	test   %ax,%ax
40f6ed:	75 07                	jne    0x40f6f6
40f6ef:	0f b7 41 08          	movzwl 0x8(%ecx),%eax
40f6f3:	83 c0 02             	add    $0x2,%eax
40f6f6:	8a 49 02             	mov    0x2(%ecx),%cl
40f6f9:	80 f9 01             	cmp    $0x1,%cl
40f6fc:	75 04                	jne    0x40f702
40f6fe:	83 c0 02             	add    $0x2,%eax
40f701:	c3                   	ret
40f702:	80 f9 02             	cmp    $0x2,%cl
40f705:	75 03                	jne    0x40f70a
40f707:	83 c0 04             	add    $0x4,%eax
40f70a:	c3                   	ret
40f70b:	8b ff                	mov    %edi,%edi
40f70d:	55                   	push   %ebp
40f70e:	8b ec                	mov    %esp,%ebp
40f710:	51                   	push   %ecx
40f711:	51                   	push   %ecx
40f712:	8b 45 08             	mov    0x8(%ebp),%eax
40f715:	53                   	push   %ebx
40f716:	8b d9                	mov    %ecx,%ebx
40f718:	56                   	push   %esi
40f719:	8b 30                	mov    (%eax),%esi
40f71b:	57                   	push   %edi
40f71c:	8a 43 02             	mov    0x2(%ebx),%al
40f71f:	8b 7d 0c             	mov    0xc(%ebp),%edi
40f722:	3c 01                	cmp    $0x1,%al
40f724:	75 26                	jne    0x40f74c
40f726:	8d 46 02             	lea    0x2(%esi),%eax
40f729:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f72c:	3b c7                	cmp    %edi,%eax
40f72e:	77 72                	ja     0x40f7a2
40f730:	66 8b 43 04          	mov    0x4(%ebx),%ax
40f734:	66 89 45 fc          	mov    %ax,-0x4(%ebp)
40f738:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f73b:	6a 02                	push   $0x2
40f73d:	50                   	push   %eax
40f73e:	6a 02                	push   $0x2
40f740:	56                   	push   %esi
40f741:	ff 15 60 c3 42 00    	call   *0x42c360
40f747:	8b 75 f8             	mov    -0x8(%ebp),%esi
40f74a:	eb 20                	jmp    0x40f76c
40f74c:	3c 02                	cmp    $0x2,%al
40f74e:	75 1f                	jne    0x40f76f
40f750:	8d 46 04             	lea    0x4(%esi),%eax
40f753:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f756:	3b c7                	cmp    %edi,%eax
40f758:	77 48                	ja     0x40f7a2
40f75a:	6a 04                	push   $0x4
40f75c:	8d 43 04             	lea    0x4(%ebx),%eax
40f75f:	50                   	push   %eax
40f760:	6a 04                	push   $0x4
40f762:	56                   	push   %esi
40f763:	ff 15 60 c3 42 00    	call   *0x42c360
40f769:	8b 75 f8             	mov    -0x8(%ebp),%esi
40f76c:	83 c4 10             	add    $0x10,%esp
40f76f:	66 83 3b 00          	cmpw   $0x0,(%ebx)
40f773:	75 22                	jne    0x40f797
40f775:	8d 46 02             	lea    0x2(%esi),%eax
40f778:	89 45 f8             	mov    %eax,-0x8(%ebp)
40f77b:	3b c7                	cmp    %edi,%eax
40f77d:	77 23                	ja     0x40f7a2
40f77f:	6a 02                	push   $0x2
40f781:	8d 43 08             	lea    0x8(%ebx),%eax
40f784:	50                   	push   %eax
40f785:	8b c7                	mov    %edi,%eax
40f787:	2b c6                	sub    %esi,%eax
40f789:	50                   	push   %eax
40f78a:	56                   	push   %esi
40f78b:	ff 15 60 c3 42 00    	call   *0x42c360
40f791:	8b 75 f8             	mov    -0x8(%ebp),%esi
40f794:	83 c4 10             	add    $0x10,%esp
40f797:	0f b7 4b 08          	movzwl 0x8(%ebx),%ecx
40f79b:	8d 04 31             	lea    (%ecx,%esi,1),%eax
40f79e:	3b c7                	cmp    %edi,%eax
40f7a0:	76 04                	jbe    0x40f7a6
40f7a2:	32 c0                	xor    %al,%al
40f7a4:	eb 1e                	jmp    0x40f7c4
40f7a6:	51                   	push   %ecx
40f7a7:	ff 73 10             	push   0x10(%ebx)
40f7aa:	2b fe                	sub    %esi,%edi
40f7ac:	57                   	push   %edi
40f7ad:	56                   	push   %esi
40f7ae:	ff 15 60 c3 42 00    	call   *0x42c360
40f7b4:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f7b7:	83 c4 10             	add    $0x10,%esp
40f7ba:	0f b7 43 08          	movzwl 0x8(%ebx),%eax
40f7be:	03 c6                	add    %esi,%eax
40f7c0:	89 01                	mov    %eax,(%ecx)
40f7c2:	b0 01                	mov    $0x1,%al
40f7c4:	5f                   	pop    %edi
40f7c5:	5e                   	pop    %esi
40f7c6:	5b                   	pop    %ebx
40f7c7:	c9                   	leave
40f7c8:	c2 08 00             	ret    $0x8
40f7cb:	8b ff                	mov    %edi,%edi
40f7cd:	55                   	push   %ebp
40f7ce:	8b ec                	mov    %esp,%ebp
40f7d0:	51                   	push   %ecx
40f7d1:	8b 45 08             	mov    0x8(%ebp),%eax
40f7d4:	53                   	push   %ebx
40f7d5:	56                   	push   %esi
40f7d6:	8b f1                	mov    %ecx,%esi
40f7d8:	8b 10                	mov    (%eax),%edx
40f7da:	8a 46 02             	mov    0x2(%esi),%al
40f7dd:	3c 01                	cmp    $0x1,%al
40f7df:	75 23                	jne    0x40f804
40f7e1:	8d 5a 02             	lea    0x2(%edx),%ebx
40f7e4:	3b 5d 0c             	cmp    0xc(%ebp),%ebx
40f7e7:	77 78                	ja     0x40f861
40f7e9:	6a 02                	push   $0x2
40f7eb:	52                   	push   %edx
40f7ec:	8d 45 fc             	lea    -0x4(%ebp),%eax
40f7ef:	89 56 0c             	mov    %edx,0xc(%esi)
40f7f2:	6a 02                	push   $0x2
40f7f4:	50                   	push   %eax
40f7f5:	ff 15 60 c3 42 00    	call   *0x42c360
40f7fb:	0f b7 45 fc          	movzwl -0x4(%ebp),%eax
40f7ff:	89 46 04             	mov    %eax,0x4(%esi)
40f802:	eb 1e                	jmp    0x40f822
40f804:	3c 02                	cmp    $0x2,%al
40f806:	75 1f                	jne    0x40f827
40f808:	8d 5a 04             	lea    0x4(%edx),%ebx
40f80b:	3b 5d 0c             	cmp    0xc(%ebp),%ebx
40f80e:	77 51                	ja     0x40f861
40f810:	6a 04                	push   $0x4
40f812:	52                   	push   %edx
40f813:	8d 46 04             	lea    0x4(%esi),%eax
40f816:	89 56 0c             	mov    %edx,0xc(%esi)
40f819:	6a 04                	push   $0x4
40f81b:	50                   	push   %eax
40f81c:	ff 15 60 c3 42 00    	call   *0x42c360
40f822:	8b d3                	mov    %ebx,%edx
40f824:	83 c4 10             	add    $0x10,%esp
40f827:	0f b7 06             	movzwl (%esi),%eax
40f82a:	8d 5e 08             	lea    0x8(%esi),%ebx
40f82d:	66 89 03             	mov    %ax,(%ebx)
40f830:	8b c8                	mov    %eax,%ecx
40f832:	66 85 c0             	test   %ax,%ax
40f835:	75 20                	jne    0x40f857
40f837:	8d 42 02             	lea    0x2(%edx),%eax
40f83a:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f83d:	3b 45 0c             	cmp    0xc(%ebp),%eax
40f840:	77 1f                	ja     0x40f861
40f842:	6a 02                	push   $0x2
40f844:	52                   	push   %edx
40f845:	6a 02                	push   $0x2
40f847:	53                   	push   %ebx
40f848:	ff 15 60 c3 42 00    	call   *0x42c360
40f84e:	8b 55 fc             	mov    -0x4(%ebp),%edx
40f851:	83 c4 10             	add    $0x10,%esp
40f854:	0f b7 0b             	movzwl (%ebx),%ecx
40f857:	0f b7 c1             	movzwl %cx,%eax
40f85a:	03 c2                	add    %edx,%eax
40f85c:	3b 45 0c             	cmp    0xc(%ebp),%eax
40f85f:	76 04                	jbe    0x40f865
40f861:	32 c0                	xor    %al,%al
40f863:	eb 0a                	jmp    0x40f86f
40f865:	8b 4d 08             	mov    0x8(%ebp),%ecx
40f868:	89 56 10             	mov    %edx,0x10(%esi)
40f86b:	89 01                	mov    %eax,(%ecx)
40f86d:	b0 01                	mov    $0x1,%al
40f86f:	5e                   	pop    %esi
40f870:	5b                   	pop    %ebx
40f871:	c9                   	leave
40f872:	c2 08 00             	ret    $0x8
40f875:	8b ff                	mov    %edi,%edi
40f877:	55                   	push   %ebp
40f878:	8b ec                	mov    %esp,%ebp
40f87a:	66 8b 45 08          	mov    0x8(%ebp),%ax
40f87e:	8b d1                	mov    %ecx,%edx
40f880:	8a 4d 18             	mov    0x18(%ebp),%cl
40f883:	83 ec 14             	sub    $0x14,%esp
40f886:	66 89 02             	mov    %ax,(%edx)
40f889:	66 8b 45 0c          	mov    0xc(%ebp),%ax
40f88d:	66 89 42 02          	mov    %ax,0x2(%edx)
40f891:	8a 45 10             	mov    0x10(%ebp),%al
40f894:	88 42 04             	mov    %al,0x4(%edx)
40f897:	66 8b 45 14          	mov    0x14(%ebp),%ax
40f89b:	53                   	push   %ebx
40f89c:	33 db                	xor    %ebx,%ebx
40f89e:	66 89 42 06          	mov    %ax,0x6(%edx)
40f8a2:	88 4a 08             	mov    %cl,0x8(%edx)
40f8a5:	66 85 c0             	test   %ax,%ax
40f8a8:	74 20                	je     0x40f8ca
40f8aa:	66 89 45 ec          	mov    %ax,-0x14(%ebp)
40f8ae:	33 c0                	xor    %eax,%eax
40f8b0:	88 4d ee             	mov    %cl,-0x12(%ebp)
40f8b3:	8d 4d ec             	lea    -0x14(%ebp),%ecx
40f8b6:	89 5d f0             	mov    %ebx,-0x10(%ebp)
40f8b9:	66 89 45 f4          	mov    %ax,-0xc(%ebp)
40f8bd:	89 5d f8             	mov    %ebx,-0x8(%ebp)
40f8c0:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40f8c3:	e8 1f fe ff ff       	call   0x40f6e7
40f8c8:	eb 02                	jmp    0x40f8cc
40f8ca:	8b c3                	mov    %ebx,%eax
40f8cc:	89 42 0c             	mov    %eax,0xc(%edx)
40f8cf:	8b c2                	mov    %edx,%eax
40f8d1:	89 5a 10             	mov    %ebx,0x10(%edx)
40f8d4:	89 5a 14             	mov    %ebx,0x14(%edx)
40f8d7:	89 5a 18             	mov    %ebx,0x18(%edx)
40f8da:	89 5a 1c             	mov    %ebx,0x1c(%edx)
40f8dd:	88 5a 22             	mov    %bl,0x22(%edx)
40f8e0:	66 c7 42 20 00 00    	movw   $0x0,0x20(%edx)
40f8e6:	5b                   	pop    %ebx
40f8e7:	c9                   	leave
40f8e8:	c2 14 00             	ret    $0x14
40f8eb:	8b ff                	mov    %edi,%edi
40f8ed:	55                   	push   %ebp
40f8ee:	8b ec                	mov    %esp,%ebp
40f8f0:	83 ec 18             	sub    $0x18,%esp
40f8f3:	53                   	push   %ebx
40f8f4:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f8f7:	8d 41 10             	lea    0x10(%ecx),%eax
40f8fa:	56                   	push   %esi
40f8fb:	57                   	push   %edi
40f8fc:	8b f0                	mov    %eax,%esi
40f8fe:	89 4d f8             	mov    %ecx,-0x8(%ebp)
40f901:	8d 7d e8             	lea    -0x18(%ebp),%edi
40f904:	8d 48 0c             	lea    0xc(%eax),%ecx
40f907:	8b 11                	mov    (%ecx),%edx
40f909:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f90a:	89 55 fc             	mov    %edx,-0x4(%ebp)
40f90d:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f90e:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f90f:	83 21 00             	andl   $0x0,(%ecx)
40f912:	8d 73 10             	lea    0x10(%ebx),%esi
40f915:	8b f8                	mov    %eax,%edi
40f917:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f918:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f919:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f91a:	8b 43 1c             	mov    0x1c(%ebx),%eax
40f91d:	83 63 1c 00          	andl   $0x0,0x1c(%ebx)
40f921:	50                   	push   %eax
40f922:	e8 32 30 00 00       	call   0x412959
40f927:	ff 75 fc             	push   -0x4(%ebp)
40f92a:	8b fb                	mov    %ebx,%edi
40f92c:	8d 75 e8             	lea    -0x18(%ebp),%esi
40f92f:	8d 4b 1c             	lea    0x1c(%ebx),%ecx
40f932:	8d 7f 10             	lea    0x10(%edi),%edi
40f935:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f936:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f937:	a5                   	movsl  %ds:(%esi),%es:(%edi)
40f938:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40f93c:	e8 18 30 00 00       	call   0x412959
40f941:	8d 4d f4             	lea    -0xc(%ebp),%ecx
40f944:	e8 34 30 00 00       	call   0x41297d
40f949:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40f94c:	8b 55 08             	mov    0x8(%ebp),%edx
40f94f:	5f                   	pop    %edi
40f950:	5e                   	pop    %esi
40f951:	8a 4b 20             	mov    0x20(%ebx),%cl
40f954:	8a 42 20             	mov    0x20(%edx),%al
40f957:	88 43 20             	mov    %al,0x20(%ebx)
40f95a:	8a 42 21             	mov    0x21(%edx),%al
40f95d:	88 4a 20             	mov    %cl,0x20(%edx)
40f960:	8a 4b 21             	mov    0x21(%ebx),%cl
40f963:	88 43 21             	mov    %al,0x21(%ebx)