40f7b4:	4e                   	dec    %esi
40f7b5:	e9 05 01 00 00       	jmp    0x40f8bf
40f7ba:	8d 55 f0             	lea    -0x10(%ebp),%edx
40f7bd:	52                   	push   %edx
40f7be:	56                   	push   %esi
40f7bf:	53                   	push   %ebx
40f7c0:	51                   	push   %ecx
40f7c1:	6a ff                	push   $0xffffffff
40f7c3:	57                   	push   %edi
40f7c4:	56                   	push   %esi
40f7c5:	ff 70 04             	push   0x4(%eax)
40f7c8:	ff 15 4c 90 41 00    	call   *0x41904c
40f7ce:	8b f8                	mov    %eax,%edi
40f7d0:	85 ff                	test   %edi,%edi
40f7d2:	74 11                	je     0x40f7e5
40f7d4:	39 75 f0             	cmp    %esi,-0x10(%ebp)
40f7d7:	0f 85 ac 00 00 00    	jne    0x40f889
40f7dd:	8d 77 ff             	lea    -0x1(%edi),%esi
40f7e0:	e9 da 00 00 00       	jmp    0x40f8bf
40f7e5:	39 75 f0             	cmp    %esi,-0x10(%ebp)
40f7e8:	0f 85 9b 00 00 00    	jne    0x40f889
40f7ee:	ff 15 18 90 41 00    	call   *0x419018
40f7f4:	83 f8 7a             	cmp    $0x7a,%eax
40f7f7:	0f 85 8c 00 00 00    	jne    0x40f889
40f7fd:	85 db                	test   %ebx,%ebx
40f7ff:	0f 84 ee 00 00 00    	je     0x40f8f3
40f805:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f808:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f80b:	51                   	push   %ecx
40f80c:	8b 4d d4             	mov    -0x2c(%ebp),%ecx
40f80f:	56                   	push   %esi
40f810:	ff 71 74             	push   0x74(%ecx)
40f813:	8d 55 f4             	lea    -0xc(%ebp),%edx
40f816:	52                   	push   %edx
40f817:	6a 01                	push   $0x1
40f819:	50                   	push   %eax
40f81a:	56                   	push   %esi
40f81b:	ff 71 04             	push   0x4(%ecx)
40f81e:	ff 15 4c 90 41 00    	call   *0x41904c
40f824:	8b d0                	mov    %eax,%edx
40f826:	85 d2                	test   %edx,%edx
40f828:	0f 84 b7 00 00 00    	je     0x40f8e5
40f82e:	39 75 f0             	cmp    %esi,-0x10(%ebp)
40f831:	0f 85 ae 00 00 00    	jne    0x40f8e5
40f837:	85 d2                	test   %edx,%edx
40f839:	0f 88 a6 00 00 00    	js     0x40f8e5
40f83f:	83 fa 05             	cmp    $0x5,%edx
40f842:	0f 87 9d 00 00 00    	ja     0x40f8e5
40f848:	8d 04 3a             	lea    (%edx,%edi,1),%eax
40f84b:	3b c3                	cmp    %ebx,%eax
40f84d:	0f 87 a0 00 00 00    	ja     0x40f8f3
40f853:	8b c6                	mov    %esi,%eax
40f855:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f858:	85 d2                	test   %edx,%edx
40f85a:	7e 1e                	jle    0x40f87a
40f85c:	8b 4d e8             	mov    -0x18(%ebp),%ecx
40f85f:	8a 44 05 f4          	mov    -0xc(%ebp,%eax,1),%al
40f863:	88 04 39             	mov    %al,(%ecx,%edi,1)
40f866:	84 c0                	test   %al,%al
40f868:	0f 84 85 00 00 00    	je     0x40f8f3
40f86e:	8b 45 e4             	mov    -0x1c(%ebp),%eax
40f871:	40                   	inc    %eax
40f872:	47                   	inc    %edi
40f873:	89 45 e4             	mov    %eax,-0x1c(%ebp)
40f876:	3b c2                	cmp    %edx,%eax
40f878:	7c e5                	jl     0x40f85f
40f87a:	8b 45 ec             	mov    -0x14(%ebp),%eax
40f87d:	83 c0 02             	add    $0x2,%eax
40f880:	89 45 ec             	mov    %eax,-0x14(%ebp)
40f883:	3b fb                	cmp    %ebx,%edi
40f885:	72 81                	jb     0x40f808
40f887:	eb 6a                	jmp    0x40f8f3
40f889:	e8 ef 88 ff ff       	call   0x40817d
40f88e:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40f894:	83 ce ff             	or     $0xffffffff,%esi
40f897:	eb 26                	jmp    0x40f8bf
40f899:	39 b0 a8 00 00 00    	cmp    %esi,0xa8(%eax)
40f89f:	75 22                	jne    0x40f8c3
40f8a1:	0f b7 07             	movzwl (%edi),%eax
40f8a4:	66 85 c0             	test   %ax,%ax
40f8a7:	74 16                	je     0x40f8bf
40f8a9:	ba ff 00 00 00       	mov    $0xff,%edx
40f8ae:	66 3b c2             	cmp    %dx,%ax
40f8b1:	77 32                	ja     0x40f8e5
40f8b3:	83 c7 02             	add    $0x2,%edi
40f8b6:	46                   	inc    %esi
40f8b7:	0f b7 07             	movzwl (%edi),%eax
40f8ba:	66 85 c0             	test   %ax,%ax
40f8bd:	75 ef                	jne    0x40f8ae
40f8bf:	8b fe                	mov    %esi,%edi
40f8c1:	eb 30                	jmp    0x40f8f3
40f8c3:	8d 4d f0             	lea    -0x10(%ebp),%ecx
40f8c6:	51                   	push   %ecx
40f8c7:	56                   	push   %esi
40f8c8:	56                   	push   %esi
40f8c9:	56                   	push   %esi
40f8ca:	6a ff                	push   $0xffffffff
40f8cc:	57                   	push   %edi
40f8cd:	56                   	push   %esi
40f8ce:	ff 70 04             	push   0x4(%eax)
40f8d1:	ff 15 4c 90 41 00    	call   *0x41904c
40f8d7:	85 c0                	test   %eax,%eax
40f8d9:	74 0a                	je     0x40f8e5
40f8db:	39 75 f0             	cmp    %esi,-0x10(%ebp)
40f8de:	75 05                	jne    0x40f8e5
40f8e0:	8d 78 ff             	lea    -0x1(%eax),%edi
40f8e3:	eb 0e                	jmp    0x40f8f3
40f8e5:	e8 93 88 ff ff       	call   0x40817d
40f8ea:	c7 00 2a 00 00 00    	movl   $0x2a,(%eax)
40f8f0:	83 cf ff             	or     $0xffffffff,%edi
40f8f3:	80 7d e0 00          	cmpb   $0x0,-0x20(%ebp)
40f8f7:	74 07                	je     0x40f900
40f8f9:	8b 4d dc             	mov    -0x24(%ebp),%ecx
40f8fc:	83 61 70 fd          	andl   $0xfffffffd,0x70(%ecx)
40f900:	8b c7                	mov    %edi,%eax
40f902:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f905:	5f                   	pop    %edi
40f906:	5e                   	pop    %esi
40f907:	33 cd                	xor    %ebp,%ecx
40f909:	5b                   	pop    %ebx
40f90a:	e8 2a 4e ff ff       	call   0x404739
40f90f:	c9                   	leave
40f910:	c3                   	ret
40f911:	55                   	push   %ebp
40f912:	8b ec                	mov    %esp,%ebp
40f914:	51                   	push   %ecx
40f915:	56                   	push   %esi
40f916:	8b 75 0c             	mov    0xc(%ebp),%esi
40f919:	33 c0                	xor    %eax,%eax
40f91b:	57                   	push   %edi
40f91c:	8b 7d 10             	mov    0x10(%ebp),%edi
40f91f:	89 45 fc             	mov    %eax,-0x4(%ebp)
40f922:	85 f6                	test   %esi,%esi
40f924:	74 2e                	je     0x40f954
40f926:	85 ff                	test   %edi,%edi
40f928:	74 2e                	je     0x40f958
40f92a:	85 f6                	test   %esi,%esi
40f92c:	74 02                	je     0x40f930
40f92e:	88 06                	mov    %al,(%esi)
40f930:	53                   	push   %ebx
40f931:	8b 5d 08             	mov    0x8(%ebp),%ebx
40f934:	85 db                	test   %ebx,%ebx
40f936:	74 02                	je     0x40f93a
40f938:	89 03                	mov    %eax,(%ebx)
40f93a:	8b c7                	mov    %edi,%eax
40f93c:	39 7d 18             	cmp    %edi,0x18(%ebp)
40f93f:	77 03                	ja     0x40f944
40f941:	8b 45 18             	mov    0x18(%ebp),%eax
40f944:	3d ff ff ff 7f       	cmp    $0x7fffffff,%eax
40f949:	76 20                	jbe    0x40f96b
40f94b:	e8 2d 88 ff ff       	call   0x40817d
40f950:	6a 16                	push   $0x16
40f952:	eb 59                	jmp    0x40f9ad
40f954:	85 ff                	test   %edi,%edi
40f956:	74 d2                	je     0x40f92a
40f958:	e8 20 88 ff ff       	call   0x40817d
40f95d:	6a 16                	push   $0x16
40f95f:	5e                   	pop    %esi
40f960:	89 30                	mov    %esi,(%eax)
40f962:	e8 8e bc ff ff       	call   0x40b5f5
40f967:	8b c6                	mov    %esi,%eax
40f969:	eb 6b                	jmp    0x40f9d6
40f96b:	ff 75 1c             	push   0x1c(%ebp)
40f96e:	50                   	push   %eax
40f96f:	ff 75 14             	push   0x14(%ebp)
40f972:	56                   	push   %esi
40f973:	e8 34 fd ff ff       	call   0x40f6ac
40f978:	83 c4 10             	add    $0x10,%esp
40f97b:	83 f8 ff             	cmp    $0xffffffff,%eax
40f97e:	75 10                	jne    0x40f990
40f980:	85 f6                	test   %esi,%esi
40f982:	74 03                	je     0x40f987
40f984:	c6 06 00             	movb   $0x0,(%esi)
40f987:	e8 f1 87 ff ff       	call   0x40817d
40f98c:	8b 00                	mov    (%eax),%eax
40f98e:	eb 45                	jmp    0x40f9d5
40f990:	40                   	inc    %eax
40f991:	85 f6                	test   %esi,%esi
40f993:	74 35                	je     0x40f9ca
40f995:	3b c7                	cmp    %edi,%eax
40f997:	76 27                	jbe    0x40f9c0
40f999:	83 7d 18 ff          	cmpl   $0xffffffff,0x18(%ebp)
40f99d:	74 1a                	je     0x40f9b9
40f99f:	c6 06 00             	movb   $0x0,(%esi)
40f9a2:	3b f8                	cmp    %eax,%edi
40f9a4:	77 13                	ja     0x40f9b9
40f9a6:	e8 d2 87 ff ff       	call   0x40817d
40f9ab:	6a 22                	push   $0x22
40f9ad:	5e                   	pop    %esi
40f9ae:	89 30                	mov    %esi,(%eax)
40f9b0:	e8 40 bc ff ff       	call   0x40b5f5
40f9b5:	8b c6                	mov    %esi,%eax
40f9b7:	eb 1c                	jmp    0x40f9d5
40f9b9:	6a 50                	push   $0x50
40f9bb:	8b c7                	mov    %edi,%eax
40f9bd:	59                   	pop    %ecx
40f9be:	eb 03                	jmp    0x40f9c3
40f9c0:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f9c3:	c6 44 30 ff 00       	movb   $0x0,-0x1(%eax,%esi,1)
40f9c8:	eb 03                	jmp    0x40f9cd
40f9ca:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40f9cd:	85 db                	test   %ebx,%ebx
40f9cf:	74 02                	je     0x40f9d3
40f9d1:	89 03                	mov    %eax,(%ebx)
40f9d3:	8b c1                	mov    %ecx,%eax
40f9d5:	5b                   	pop    %ebx
40f9d6:	5f                   	pop    %edi
40f9d7:	5e                   	pop    %esi
40f9d8:	c9                   	leave
40f9d9:	c3                   	ret
40f9da:	55                   	push   %ebp
40f9db:	8b ec                	mov    %esp,%ebp
40f9dd:	ff 75 08             	push   0x8(%ebp)
40f9e0:	ff 15 0c 91 41 00    	call   *0x41910c
40f9e6:	5d                   	pop    %ebp
40f9e7:	c3                   	ret
40f9e8:	55                   	push   %ebp
40f9e9:	8b ec                	mov    %esp,%ebp
40f9eb:	ff 75 08             	push   0x8(%ebp)
40f9ee:	ff 15 18 91 41 00    	call   *0x419118
40f9f4:	5d                   	pop    %ebp
40f9f5:	c3                   	ret
40f9f6:	55                   	push   %ebp
40f9f7:	8b ec                	mov    %esp,%ebp
40f9f9:	ff 75 08             	push   0x8(%ebp)
40f9fc:	ff 15 10 91 41 00    	call   *0x419110
40fa02:	5d                   	pop    %ebp
40fa03:	c3                   	ret
40fa04:	55                   	push   %ebp
40fa05:	8b ec                	mov    %esp,%ebp
40fa07:	ff 75 0c             	push   0xc(%ebp)
40fa0a:	ff 75 08             	push   0x8(%ebp)
40fa0d:	ff 15 14 91 41 00    	call   *0x419114
40fa13:	5d                   	pop    %ebp
40fa14:	c3                   	ret
40fa15:	55                   	push   %ebp
40fa16:	8b ec                	mov    %esp,%ebp
40fa18:	51                   	push   %ecx
40fa19:	56                   	push   %esi
40fa1a:	8b 35 60 10 42 00    	mov    0x421060,%esi
40fa20:	85 f6                	test   %esi,%esi
40fa22:	79 33                	jns    0x40fa57
40fa24:	68 08 bc 41 00       	push   $0x41bc08
40fa29:	33 f6                	xor    %esi,%esi
40fa2b:	68 1c bc 41 00       	push   $0x41bc1c
40fa30:	89 75 fc             	mov    %esi,-0x4(%ebp)
40fa33:	ff 15 1c 91 41 00    	call   *0x41911c
40fa39:	50                   	push   %eax
40fa3a:	ff 15 2c 90 41 00    	call   *0x41902c
40fa40:	85 c0                	test   %eax,%eax
40fa42:	74 0d                	je     0x40fa51
40fa44:	56                   	push   %esi
40fa45:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40fa48:	51                   	push   %ecx
40fa49:	ff d0                	call   *%eax
40fa4b:	83 f8 7a             	cmp    $0x7a,%eax
40fa4e:	75 01                	jne    0x40fa51
40fa50:	46                   	inc    %esi
40fa51:	89 35 60 10 42 00    	mov    %esi,0x421060
40fa57:	33 c0                	xor    %eax,%eax
40fa59:	85 f6                	test   %esi,%esi
40fa5b:	0f 9f c0             	setg   %al
40fa5e:	5e                   	pop    %esi
40fa5f:	c9                   	leave
40fa60:	c3                   	ret
40fa61:	55                   	push   %ebp
40fa62:	8b ec                	mov    %esp,%ebp
40fa64:	ff 75 08             	push   0x8(%ebp)
40fa67:	ff 15 08 91 41 00    	call   *0x419108
40fa6d:	5d                   	pop    %ebp
40fa6e:	c3                   	ret
40fa6f:	55                   	push   %ebp
40fa70:	8b ec                	mov    %esp,%ebp
40fa72:	ff 75 08             	push   0x8(%ebp)
40fa75:	ff 15 04 90 41 00    	call   *0x419004
40fa7b:	50                   	push   %eax
40fa7c:	ff 15 30 90 41 00    	call   *0x419030
40fa82:	5d                   	pop    %ebp
40fa83:	c3                   	ret
40fa84:	55                   	push   %ebp
40fa85:	8b ec                	mov    %esp,%ebp
40fa87:	6a 00                	push   $0x0
40fa89:	ff 15 08 91 41 00    	call   *0x419108
40fa8f:	ff 75 08             	push   0x8(%ebp)
40fa92:	ff 15 04 91 41 00    	call   *0x419104
40fa98:	5d                   	pop    %ebp
40fa99:	c3                   	ret
40fa9a:	55                   	push   %ebp
40fa9b:	8b ec                	mov    %esp,%ebp
40fa9d:	51                   	push   %ecx
40fa9e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
40faa2:	56                   	push   %esi
40faa3:	8d 45 fc             	lea    -0x4(%ebp),%eax
40faa6:	50                   	push   %eax
40faa7:	ff 75 0c             	push   0xc(%ebp)
40faaa:	ff 75 08             	push   0x8(%ebp)
40faad:	e8 d5 01 00 00       	call   0x40fc87
40fab2:	8b f0                	mov    %eax,%esi
40fab4:	83 c4 0c             	add    $0xc,%esp
40fab7:	85 f6                	test   %esi,%esi
40fab9:	75 18                	jne    0x40fad3
40fabb:	39 45 fc             	cmp    %eax,-0x4(%ebp)
40fabe:	74 13                	je     0x40fad3
40fac0:	e8 b8 86 ff ff       	call   0x40817d
40fac5:	85 c0                	test   %eax,%eax
40fac7:	74 0a                	je     0x40fad3
40fac9:	e8 af 86 ff ff       	call   0x40817d
40face:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40fad1:	89 08                	mov    %ecx,(%eax)
40fad3:	8b c6                	mov    %esi,%eax
40fad5:	5e                   	pop    %esi
40fad6:	c9                   	leave
40fad7:	c3                   	ret
40fad8:	55                   	push   %ebp
40fad9:	8b ec                	mov    %esp,%ebp
40fadb:	56                   	push   %esi
40fadc:	8b 75 08             	mov    0x8(%ebp),%esi
40fadf:	85 f6                	test   %esi,%esi
40fae1:	74 13                	je     0x40faf6
40fae3:	8b 55 0c             	mov    0xc(%ebp),%edx
40fae6:	85 d2                	test   %edx,%edx
40fae8:	74 0c                	je     0x40faf6
40faea:	8b 4d 10             	mov    0x10(%ebp),%ecx
40faed:	85 c9                	test   %ecx,%ecx
40faef:	75 19                	jne    0x40fb0a
40faf1:	33 c0                	xor    %eax,%eax
40faf3:	66 89 06             	mov    %ax,(%esi)
40faf6:	e8 82 86 ff ff       	call   0x40817d
40fafb:	6a 16                	push   $0x16
40fafd:	5e                   	pop    %esi
40fafe:	89 30                	mov    %esi,(%eax)
40fb00:	e8 f0 ba ff ff       	call   0x40b5f5
40fb05:	8b c6                	mov    %esi,%eax
40fb07:	5e                   	pop    %esi
40fb08:	5d                   	pop    %ebp
40fb09:	c3                   	ret
40fb0a:	57                   	push   %edi
40fb0b:	8b fe                	mov    %esi,%edi
40fb0d:	2b f9                	sub    %ecx,%edi
40fb0f:	0f b7 01             	movzwl (%ecx),%eax
40fb12:	66 89 04 0f          	mov    %ax,(%edi,%ecx,1)
40fb16:	8d 49 02             	lea    0x2(%ecx),%ecx
40fb19:	66 85 c0             	test   %ax,%ax
40fb1c:	74 03                	je     0x40fb21
40fb1e:	4a                   	dec    %edx
40fb1f:	75 ee                	jne    0x40fb0f
40fb21:	33 c0                	xor    %eax,%eax
40fb23:	5f                   	pop    %edi
40fb24:	85 d2                	test   %edx,%edx
40fb26:	75 df                	jne    0x40fb07