41a7ec:	8b cf                	mov    %edi,%ecx
41a7ee:	89 b5 60 ff ff ff    	mov    %esi,-0xa0(%ebp)
41a7f4:	e8 fb 63 00 00       	call   0x420bf4
41a7f9:	84 c0                	test   %al,%al
41a7fb:	75 43                	jne    0x41a840
41a7fd:	38 47 04             	cmp    %al,0x4(%edi)
41a800:	75 07                	jne    0x41a809
41a802:	8b cf                	mov    %edi,%ecx
41a804:	e8 8c 1c 00 00       	call   0x41c495
41a809:	0f b7 47 06          	movzwl 0x6(%edi),%eax
41a80d:	66 3b 45 e2          	cmp    -0x1e(%ebp),%ax
41a811:	75 05                	jne    0x41a818
41a813:	c6 03 2b             	movb   $0x2b,(%ebx)
41a816:	eb 1a                	jmp    0x41a832
41a818:	80 7f 04 00          	cmpb   $0x0,0x4(%edi)
41a81c:	75 0b                	jne    0x41a829
41a81e:	8b cf                	mov    %edi,%ecx
41a820:	e8 70 1c 00 00       	call   0x41c495
41a825:	0f b7 47 06          	movzwl 0x6(%edi),%eax
41a829:	66 3b 45 e0          	cmp    -0x20(%ebp),%ax
41a82d:	75 11                	jne    0x41a840
41a82f:	c6 03 2d             	movb   $0x2d,(%ebx)
41a832:	43                   	inc    %ebx
41a833:	8b cf                	mov    %edi,%ecx
41a835:	89 9d 74 ff ff ff    	mov    %ebx,-0x8c(%ebp)
41a83b:	e8 8f 05 00 00       	call   0x41adcf
41a840:	ff b5 7c ff ff ff    	push   -0x84(%ebp)
41a846:	8b cf                	mov    %edi,%ecx
41a848:	e8 a7 63 00 00       	call   0x420bf4
41a84d:	84 c0                	test   %al,%al
41a84f:	75 4c                	jne    0x41a89d
41a851:	8b b5 7c ff ff ff    	mov    -0x84(%ebp),%esi
41a857:	8a 5d 83             	mov    -0x7d(%ebp),%bl
41a85a:	80 7f 04 00          	cmpb   $0x0,0x4(%edi)
41a85e:	75 07                	jne    0x41a867
41a860:	8b cf                	mov    %edi,%ecx
41a862:	e8 2e 1c 00 00       	call   0x41c495
41a867:	0f b7 47 06          	movzwl 0x6(%edi),%eax
41a86b:	66 3b 45 b4          	cmp    -0x4c(%ebp),%ax
41a86f:	75 15                	jne    0x41a886
41a871:	8b cf                	mov    %edi,%ecx
41a873:	b3 01                	mov    $0x1,%bl
41a875:	e8 55 05 00 00       	call   0x41adcf
41a87a:	56                   	push   %esi
41a87b:	8b cf                	mov    %edi,%ecx
41a87d:	e8 72 63 00 00       	call   0x420bf4
41a882:	84 c0                	test   %al,%al
41a884:	74 d4                	je     0x41a85a
41a886:	8b b5 60 ff ff ff    	mov    -0xa0(%ebp),%esi
41a88c:	84 db                	test   %bl,%bl
41a88e:	88 5d 83             	mov    %bl,-0x7d(%ebp)
41a891:	8b 9d 74 ff ff ff    	mov    -0x8c(%ebp),%ebx
41a897:	74 04                	je     0x41a89d
41a899:	c6 03 30             	movb   $0x30,(%ebx)
41a89c:	43                   	inc    %ebx
41a89d:	ff b5 7c ff ff ff    	push   -0x84(%ebp)
41a8a3:	8b cf                	mov    %edi,%ecx
41a8a5:	e8 4a 63 00 00       	call   0x420bf4
41a8aa:	84 c0                	test   %al,%al
41a8ac:	75 4a                	jne    0x41a8f8
41a8ae:	38 47 04             	cmp    %al,0x4(%edi)
41a8b1:	75 07                	jne    0x41a8ba
41a8b3:	8b cf                	mov    %edi,%ecx
41a8b5:	e8 db 1b 00 00       	call   0x41c495
41a8ba:	0f b7 4f 06          	movzwl 0x6(%edi),%ecx
41a8be:	8d 45 b4             	lea    -0x4c(%ebp),%eax
41a8c1:	66 39 08             	cmp    %cx,(%eax)
41a8c4:	74 0a                	je     0x41a8d0
41a8c6:	83 c0 02             	add    $0x2,%eax
41a8c9:	8d 55 ec             	lea    -0x14(%ebp),%edx
41a8cc:	3b c2                	cmp    %edx,%eax
41a8ce:	75 f1                	jne    0x41a8c1
41a8d0:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
41a8d3:	2b c1                	sub    %ecx,%eax
41a8d5:	d1 f8                	sar    $1,%eax
41a8d7:	83 f8 16             	cmp    $0x16,%eax
41a8da:	73 1c                	jae    0x41a8f8
41a8dc:	83 fe 08             	cmp    $0x8,%esi
41a8df:	7d 0a                	jge    0x41a8eb
41a8e1:	8a 80 c4 64 49 00    	mov    0x4964c4(%eax),%al
41a8e7:	88 03                	mov    %al,(%ebx)
41a8e9:	43                   	inc    %ebx
41a8ea:	46                   	inc    %esi
41a8eb:	8b cf                	mov    %edi,%ecx
41a8ed:	c6 45 83 01          	movb   $0x1,-0x7d(%ebp)
41a8f1:	e8 d9 04 00 00       	call   0x41adcf
41a8f6:	eb a5                	jmp    0x41a89d
41a8f8:	8a 45 83             	mov    -0x7d(%ebp),%al
41a8fb:	80 bd 7b ff ff ff 00 	cmpb   $0x0,-0x85(%ebp)
41a902:	75 04                	jne    0x41a908
41a904:	84 c0                	test   %al,%al
41a906:	75 06                	jne    0x41a90e
41a908:	8b 9d 54 ff ff ff    	mov    -0xac(%ebp),%ebx
41a90e:	8b 8d 50 ff ff ff    	mov    -0xb0(%ebp),%ecx
41a914:	8b 85 70 ff ff ff    	mov    -0x90(%ebp),%eax
41a91a:	c6 03 00             	movb   $0x0,(%ebx)
41a91d:	89 01                	mov    %eax,(%ecx)
41a91f:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
41a923:	8d 4d 84             	lea    -0x7c(%ebp),%ecx
41a926:	e8 a9 29 00 00       	call   0x41d2d4
41a92b:	33 c0                	xor    %eax,%eax
41a92d:	e8 f6 50 02 00       	call   0x43fa28
41a932:	c3                   	ret
41a933:	68 88 00 00 00       	push   $0x88
41a938:	b8 a7 f7 48 00       	mov    $0x48f7a7,%eax
41a93d:	e8 3c 51 02 00       	call   0x43fa7e
41a942:	8b 45 0c             	mov    0xc(%ebp),%eax
41a945:	8b 5d 1c             	mov    0x1c(%ebp),%ebx
41a948:	8b 75 10             	mov    0x10(%ebp),%esi
41a94b:	89 85 6c ff ff ff    	mov    %eax,-0x94(%ebp)
41a951:	8b 45 14             	mov    0x14(%ebp),%eax
41a954:	53                   	push   %ebx
41a955:	89 85 7c ff ff ff    	mov    %eax,-0x84(%ebp)
41a95b:	e8 4e e5 fe ff       	call   0x408eae
41a960:	8b f8                	mov    %eax,%edi
41a962:	8d 45 88             	lea    -0x78(%ebp),%eax
41a965:	59                   	pop    %ecx
41a966:	50                   	push   %eax
41a967:	8b cf                	mov    %edi,%ecx
41a969:	e8 de 73 00 00       	call   0x421d4c
41a96e:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
41a972:	83 7d 98 00          	cmpl   $0x0,-0x68(%ebp)
41a976:	75 09                	jne    0x41a981
41a978:	83 a5 70 ff ff ff 00 	andl   $0x0,-0x90(%ebp)
41a97f:	eb 10                	jmp    0x41a991
41a981:	8b 07                	mov    (%edi),%eax
41a983:	8b cf                	mov    %edi,%ecx
41a985:	ff 50 10             	call   *0x10(%eax)
41a988:	0f b7 c0             	movzwl %ax,%eax
41a98b:	89 85 70 ff ff ff    	mov    %eax,-0x90(%ebp)
41a991:	53                   	push   %ebx
41a992:	e8 cb e3 fe ff       	call   0x408d62
41a997:	59                   	pop    %ecx
41a998:	8b 08                	mov    (%eax),%ecx
41a99a:	8b 51 2c             	mov    0x2c(%ecx),%edx
41a99d:	8d 4d b8             	lea    -0x48(%ebp),%ecx
41a9a0:	51                   	push   %ecx
41a9a1:	68 c3 64 49 00       	push   $0x4964c3
41a9a6:	68 a8 64 49 00       	push   $0x4964a8
41a9ab:	8b c8                	mov    %eax,%ecx
41a9ad:	ff d2                	call   *%edx
41a9af:	ff b5 7c ff ff ff    	push   -0x84(%ebp)
41a9b5:	8b 9d 6c ff ff ff    	mov    -0x94(%ebp),%ebx
41a9bb:	8b ce                	mov    %esi,%ecx
41a9bd:	89 5d 80             	mov    %ebx,-0x80(%ebp)
41a9c0:	e8 2f 62 00 00       	call   0x420bf4
41a9c5:	84 c0                	test   %al,%al
41a9c7:	75 42                	jne    0x41aa0b
41a9c9:	38 46 04             	cmp    %al,0x4(%esi)
41a9cc:	75 07                	jne    0x41a9d5
41a9ce:	8b ce                	mov    %esi,%ecx
41a9d0:	e8 c0 1a 00 00       	call   0x41c495
41a9d5:	0f b7 46 06          	movzwl 0x6(%esi),%eax
41a9d9:	66 3b 45 e6          	cmp    -0x1a(%ebp),%ax
41a9dd:	75 05                	jne    0x41a9e4
41a9df:	c6 03 2b             	movb   $0x2b,(%ebx)
41a9e2:	eb 1a                	jmp    0x41a9fe
41a9e4:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
41a9e8:	75 0b                	jne    0x41a9f5
41a9ea:	8b ce                	mov    %esi,%ecx
41a9ec:	e8 a4 1a 00 00       	call   0x41c495
41a9f1:	0f b7 46 06          	movzwl 0x6(%esi),%eax
41a9f5:	66 3b 45 e4          	cmp    -0x1c(%ebp),%ax
41a9f9:	75 10                	jne    0x41aa0b
41a9fb:	c6 03 2d             	movb   $0x2d,(%ebx)
41a9fe:	8d 43 01             	lea    0x1(%ebx),%eax
41aa01:	8b ce                	mov    %esi,%ecx
41aa03:	89 45 80             	mov    %eax,-0x80(%ebp)
41aa06:	e8 c4 03 00 00       	call   0x41adcf
41aa0b:	8b 45 18             	mov    0x18(%ebp),%eax
41aa0e:	25 00 0e 00 00       	and    $0xe00,%eax
41aa13:	6a 0a                	push   $0xa
41aa15:	8b d8                	mov    %eax,%ebx
41aa17:	f7 db                	neg    %ebx
41aa19:	5f                   	pop    %edi
41aa1a:	1b db                	sbb    %ebx,%ebx
41aa1c:	89 bd 74 ff ff ff    	mov    %edi,-0x8c(%ebp)
41aa22:	6a 10                	push   $0x10
41aa24:	23 df                	and    %edi,%ebx
41aa26:	3d 00 08 00 00       	cmp    $0x800,%eax
41aa2b:	59                   	pop    %ecx
41aa2c:	0f 44 d9             	cmove  %ecx,%ebx
41aa2f:	3d 00 04 00 00       	cmp    $0x400,%eax
41aa34:	6a 08                	push   $0x8
41aa36:	59                   	pop    %ecx
41aa37:	ff b5 7c ff ff ff    	push   -0x84(%ebp)
41aa3d:	0f 44 d9             	cmove  %ecx,%ebx
41aa40:	32 c0                	xor    %al,%al
41aa42:	8b ce                	mov    %esi,%ecx
41aa44:	88 45 87             	mov    %al,-0x79(%ebp)
41aa47:	88 85 78 ff ff ff    	mov    %al,-0x88(%ebp)
41aa4d:	88 45 86             	mov    %al,-0x7a(%ebp)
41aa50:	e8 9f 61 00 00       	call   0x420bf4
41aa55:	84 c0                	test   %al,%al
41aa57:	0f 85 93 00 00 00    	jne    0x41aaf0
41aa5d:	38 46 04             	cmp    %al,0x4(%esi)
41aa60:	75 07                	jne    0x41aa69
41aa62:	8b ce                	mov    %esi,%ecx
41aa64:	e8 2c 1a 00 00       	call   0x41c495
41aa69:	0f b7 46 06          	movzwl 0x6(%esi),%eax
41aa6d:	66 3b 45 b8          	cmp    -0x48(%ebp),%ax
41aa71:	75 7d                	jne    0x41aaf0
41aa73:	b0 01                	mov    $0x1,%al
41aa75:	8b ce                	mov    %esi,%ecx
41aa77:	88 45 87             	mov    %al,-0x79(%ebp)
41aa7a:	88 85 78 ff ff ff    	mov    %al,-0x88(%ebp)
41aa80:	e8 4a 03 00 00       	call   0x41adcf
41aa85:	ff b5 7c ff ff ff    	push   -0x84(%ebp)
41aa8b:	8b ce                	mov    %esi,%ecx
41aa8d:	e8 62 61 00 00       	call   0x420bf4
41aa92:	84 c0                	test   %al,%al
41aa94:	75 50                	jne    0x41aae6
41aa96:	38 46 04             	cmp    %al,0x4(%esi)
41aa99:	75 07                	jne    0x41aaa2
41aa9b:	8b ce                	mov    %esi,%ecx
41aa9d:	e8 f3 19 00 00       	call   0x41c495
41aaa2:	0f b7 46 06          	movzwl 0x6(%esi),%eax
41aaa6:	66 3b 45 ea          	cmp    -0x16(%ebp),%ax
41aaaa:	74 17                	je     0x41aac3
41aaac:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
41aab0:	75 0b                	jne    0x41aabd
41aab2:	8b ce                	mov    %esi,%ecx
41aab4:	e8 dc 19 00 00       	call   0x41c495
41aab9:	0f b7 46 06          	movzwl 0x6(%esi),%eax
41aabd:	66 3b 45 e8          	cmp    -0x18(%ebp),%ax
41aac1:	75 23                	jne    0x41aae6
41aac3:	85 db                	test   %ebx,%ebx
41aac5:	74 05                	je     0x41aacc
41aac7:	83 fb 10             	cmp    $0x10,%ebx
41aaca:	75 1a                	jne    0x41aae6
41aacc:	6a 10                	push   $0x10
41aace:	32 c0                	xor    %al,%al
41aad0:	8b ce                	mov    %esi,%ecx
41aad2:	5b                   	pop    %ebx
41aad3:	88 45 87             	mov    %al,-0x79(%ebp)
41aad6:	88 85 78 ff ff ff    	mov    %al,-0x88(%ebp)
41aadc:	e8 ee 02 00 00       	call   0x41adcf
41aae1:	6a 08                	push   $0x8
41aae3:	59                   	pop    %ecx
41aae4:	eb 15                	jmp    0x41aafb
41aae6:	6a 08                	push   $0x8
41aae8:	85 db                	test   %ebx,%ebx
41aaea:	59                   	pop    %ecx
41aaeb:	0f 44 d9             	cmove  %ecx,%ebx
41aaee:	eb 03                	jmp    0x41aaf3
41aaf0:	6a 08                	push   $0x8
41aaf2:	59                   	pop    %ecx
41aaf3:	85 db                	test   %ebx,%ebx
41aaf5:	74 12                	je     0x41ab09
41aaf7:	3b df                	cmp    %edi,%ebx
41aaf9:	74 0e                	je     0x41ab09
41aafb:	6a 16                	push   $0x16
41aafd:	3b d9                	cmp    %ecx,%ebx
41aaff:	58                   	pop    %eax
41ab00:	0f 44 c1             	cmove  %ecx,%eax
41ab03:	89 85 74 ff ff ff    	mov    %eax,-0x8c(%ebp)
41ab09:	ff b5 78 ff ff ff    	push   -0x88(%ebp)
41ab0f:	33 c0                	xor    %eax,%eax
41ab11:	8d 4d a0             	lea    -0x60(%ebp),%ecx
41ab14:	89 45 b0             	mov    %eax,-0x50(%ebp)
41ab17:	89 45 b4             	mov    %eax,-0x4c(%ebp)
41ab1a:	6a 01                	push   $0x1
41ab1c:	89 45 b0             	mov    %eax,-0x50(%ebp)
41ab1f:	c7 45 b4 0f 00 00 00 	movl   $0xf,-0x4c(%ebp)
41ab26:	88 45 a0             	mov    %al,-0x60(%ebp)
41ab29:	e8 10 4c 00 00       	call   0x41f73e
41ab2e:	c6 45 fc 01          	movb   $0x1,-0x4(%ebp)
41ab32:	8b ce                	mov    %esi,%ecx
41ab34:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
41ab3a:	33 ff                	xor    %edi,%edi
41ab3c:	ff b5 7c ff ff ff    	push   -0x84(%ebp)
41ab42:	83 c0 1f             	add    $0x1f,%eax
41ab45:	89 85 78 ff ff ff    	mov    %eax,-0x88(%ebp)
41ab4b:	e8 a4 60 00 00       	call   0x420bf4
41ab50:	84 c0                	test   %al,%al
41ab52:	0f 85 fe 00 00 00    	jne    0x41ac56
41ab58:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
41ab5c:	75 07                	jne    0x41ab65
41ab5e:	8b ce                	mov    %esi,%ecx
41ab60:	e8 30 19 00 00       	call   0x41c495
41ab65:	0f b7 4e 06          	movzwl 0x6(%esi),%ecx
41ab69:	8d 45 b8             	lea    -0x48(%ebp),%eax
41ab6c:	66 39 08             	cmp    %cx,(%eax)
41ab6f:	74 0a                	je     0x41ab7b
41ab71:	83 c0 02             	add    $0x2,%eax
41ab74:	8d 55 ec             	lea    -0x14(%ebp),%edx
41ab77:	3b c2                	cmp    %edx,%eax
41ab79:	75 f1                	jne    0x41ab6c
41ab7b:	8d 4d b8             	lea    -0x48(%ebp),%ecx
41ab7e:	2b c1                	sub    %ecx,%eax
41ab80:	d1 f8                	sar    $1,%eax
41ab82:	3b 85 74 ff ff ff    	cmp    -0x8c(%ebp),%eax
41ab88:	73 4b                	jae    0x41abd5
41ab8a:	80 7d 86 00          	cmpb   $0x0,-0x7a(%ebp)
41ab8e:	8a 88 a8 64 49 00    	mov    0x4964a8(%eax),%cl
41ab94:	8b 45 80             	mov    -0x80(%ebp),%eax
41ab97:	88 08                	mov    %cl,(%eax)
41ab99:	75 05                	jne    0x41aba0
41ab9b:	80 f9 30             	cmp    $0x30,%cl
41ab9e:	74 10                	je     0x41abb0
41aba0:	3b 85 78 ff ff ff    	cmp    -0x88(%ebp),%eax
41aba6:	73 08                	jae    0x41abb0
41aba8:	40                   	inc    %eax
41aba9:	c6 45 86 01          	movb   $0x1,-0x7a(%ebp)
41abad:	89 45 80             	mov    %eax,-0x80(%ebp)
41abb0:	83 7d b4 10          	cmpl   $0x10,-0x4c(%ebp)
41abb4:	8d 45 a0             	lea    -0x60(%ebp),%eax
41abb7:	c6 45 87 01          	movb   $0x1,-0x79(%ebp)
41abbb:	0f 43 45 a0          	cmovae -0x60(%ebp),%eax
41abbf:	80 3c 38 7f          	cmpb   $0x7f,(%eax,%edi,1)
41abc3:	74 55                	je     0x41ac1a
41abc5:	83 7d b4 10          	cmpl   $0x10,-0x4c(%ebp)
41abc9:	8d 45 a0             	lea    -0x60(%ebp),%eax
41abcc:	0f 43 45 a0          	cmovae -0x60(%ebp),%eax
41abd0:	fe 04 38             	incb   (%eax,%edi,1)
41abd3:	eb 45                	jmp    0x41ac1a
41abd5:	8b 55 b4             	mov    -0x4c(%ebp),%edx
41abd8:	8d 45 a0             	lea    -0x60(%ebp),%eax
41abdb:	83 fa 10             	cmp    $0x10,%edx
41abde:	0f 43 45 a0          	cmovae -0x60(%ebp),%eax
41abe2:	80 3c 38 00          	cmpb   $0x0,(%eax,%edi,1)
41abe6:	74 51                	je     0x41ac39
41abe8:	66 83 bd 70 ff ff ff 	cmpw   $0x0,-0x90(%ebp)
41abef:	00
41abf0:	74 47                	je     0x41ac39
41abf2:	80 7e 04 00          	cmpb   $0x0,0x4(%esi)
41abf6:	75 0a                	jne    0x41ac02
41abf8:	8b ce                	mov    %esi,%ecx
41abfa:	e8 96 18 00 00       	call   0x41c495
41abff:	8b 55 b4             	mov    -0x4c(%ebp),%edx
41ac02:	0f b7 46 06          	movzwl 0x6(%esi),%eax
41ac06:	66 3b 85 70 ff ff ff 	cmp    -0x90(%ebp),%ax
41ac0d:	75 2a                	jne    0x41ac39
41ac0f:	6a 00                	push   $0x0
41ac11:	8d 4d a0             	lea    -0x60(%ebp),%ecx
41ac14:	e8 79 7a 00 00       	call   0x422692
41ac19:	47                   	inc    %edi
41ac1a:	8b ce                	mov    %esi,%ecx
41ac1c:	e8 ae 01 00 00       	call   0x41adcf
41ac21:	ff b5 7c ff ff ff    	push   -0x84(%ebp)
41ac27:	8b ce                	mov    %esi,%ecx
41ac29:	e8 c6 5f 00 00       	call   0x420bf4
41ac2e:	84 c0                	test   %al,%al
41ac30:	0f 84 22 ff ff ff    	je     0x41ab58
41ac36:	8b 55 b4             	mov    -0x4c(%ebp),%edx
41ac39:	8b 75 a0             	mov    -0x60(%ebp),%esi
41ac3c:	85 ff                	test   %edi,%edi
41ac3e:	74 1c                	je     0x41ac5c
41ac40:	83 fa 10             	cmp    $0x10,%edx
41ac43:	8d 45 a0             	lea    -0x60(%ebp),%eax