51c6e5:	89 b5 7c ff ff ff    	mov    %esi,-0x84(%ebp)
51c6eb:	80 7f 09 00          	cmpb   $0x0,0x9(%edi)
51c6ef:	74 15                	je     0x51c706
51c6f1:	83 47 0c ff          	addl   $0xffffffff,0xc(%edi)
51c6f5:	75 0f                	jne    0x51c706
51c6f7:	57                   	push   %edi
51c6f8:	e8 d3 c2 03 00       	call   0x5589d0
51c6fd:	8b b5 7c ff ff ff    	mov    -0x84(%ebp),%esi
51c703:	83 c4 04             	add    $0x4,%esp
51c706:	85 f6                	test   %esi,%esi
51c708:	74 39                	je     0x51c743
51c70a:	8b 45 88             	mov    -0x78(%ebp),%eax
51c70d:	c6 04 30 00          	movb   $0x0,(%eax,%esi,1)
51c711:	83 7d 84 00          	cmpl   $0x0,-0x7c(%ebp)
51c715:	76 26                	jbe    0x51c73d
51c717:	f6 45 8d 04          	testb  $0x4,-0x73(%ebp)
51c71b:	75 20                	jne    0x51c73d
51c71d:	8d 85 78 ff ff ff    	lea    -0x88(%ebp),%eax
51c723:	50                   	push   %eax
51c724:	e8 37 b2 03 00       	call   0x557960
51c729:	83 c4 04             	add    $0x4,%esp
51c72c:	5f                   	pop    %edi
51c72d:	5e                   	pop    %esi
51c72e:	5b                   	pop    %ebx
51c72f:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51c732:	33 cd                	xor    %ebp,%ecx
51c734:	e8 a1 4d 0c 00       	call   0x5e14da
51c739:	8b e5                	mov    %ebp,%esp
51c73b:	5d                   	pop    %ebp
51c73c:	c3                   	ret
51c73d:	8b b5 7c ff ff ff    	mov    -0x84(%ebp),%esi
51c743:	8b 4d fc             	mov    -0x4(%ebp),%ecx
51c746:	8b c6                	mov    %esi,%eax
51c748:	5f                   	pop    %edi
51c749:	5e                   	pop    %esi
51c74a:	33 cd                	xor    %ebp,%ecx
51c74c:	5b                   	pop    %ebx
51c74d:	e8 88 4d 0c 00       	call   0x5e14da
51c752:	8b e5                	mov    %ebp,%esp
51c754:	5d                   	pop    %ebp
51c755:	c3                   	ret
51c756:	cc                   	int3
51c757:	cc                   	int3
51c758:	cc                   	int3
51c759:	cc                   	int3
51c75a:	cc                   	int3
51c75b:	cc                   	int3
51c75c:	cc                   	int3
51c75d:	cc                   	int3
51c75e:	cc                   	int3
51c75f:	cc                   	int3
51c760:	55                   	push   %ebp
51c761:	8b ec                	mov    %esp,%ebp
51c763:	56                   	push   %esi
51c764:	8b 75 08             	mov    0x8(%ebp),%esi
51c767:	80 3e 00             	cmpb   $0x0,(%esi)
51c76a:	75 14                	jne    0x51c780
51c76c:	f6 46 01 08          	testb  $0x8,0x1(%esi)
51c770:	74 0e                	je     0x51c780
51c772:	8b 45 0c             	mov    0xc(%ebp),%eax
51c775:	5e                   	pop    %esi
51c776:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
51c77c:	33 c0                	xor    %eax,%eax
51c77e:	5d                   	pop    %ebp
51c77f:	c3                   	ret
51c780:	56                   	push   %esi
51c781:	e8 aa d4 fe ff       	call   0x509c30
51c786:	83 c4 04             	add    $0x4,%esp
51c789:	85 c0                	test   %eax,%eax
51c78b:	75 24                	jne    0x51c7b1
51c78d:	8b 45 0c             	mov    0xc(%ebp),%eax
51c790:	56                   	push   %esi
51c791:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
51c797:	e8 d4 d3 fe ff       	call   0x509b70
51c79c:	83 c4 04             	add    $0x4,%esp
51c79f:	85 c0                	test   %eax,%eax
51c7a1:	75 07                	jne    0x51c7aa
51c7a3:	80 4e 01 08          	orb    $0x8,0x1(%esi)
51c7a7:	5e                   	pop    %esi
51c7a8:	5d                   	pop    %ebp
51c7a9:	c3                   	ret
51c7aa:	80 66 01 f7          	andb   $0xf7,0x1(%esi)
51c7ae:	5e                   	pop    %esi
51c7af:	5d                   	pop    %ebp
51c7b0:	c3                   	ret
51c7b1:	83 f8 10             	cmp    $0x10,%eax
51c7b4:	75 0b                	jne    0x51c7c1
51c7b6:	8b 45 0c             	mov    0xc(%ebp),%eax
51c7b9:	c7 00 01 00 00 00    	movl   $0x1,(%eax)
51c7bf:	33 c0                	xor    %eax,%eax
51c7c1:	5e                   	pop    %esi
51c7c2:	5d                   	pop    %ebp
51c7c3:	c3                   	ret
51c7c4:	cc                   	int3
51c7c5:	cc                   	int3
51c7c6:	cc                   	int3
51c7c7:	cc                   	int3
51c7c8:	cc                   	int3
51c7c9:	cc                   	int3
51c7ca:	cc                   	int3
51c7cb:	cc                   	int3
51c7cc:	cc                   	int3
51c7cd:	cc                   	int3
51c7ce:	cc                   	int3
51c7cf:	cc                   	int3
51c7d0:	55                   	push   %ebp
51c7d1:	8b ec                	mov    %esp,%ebp
51c7d3:	8b 45 08             	mov    0x8(%ebp),%eax
51c7d6:	80 78 09 00          	cmpb   $0x0,0x9(%eax)
51c7da:	74 0f                	je     0x51c7eb
51c7dc:	83 40 0c ff          	addl   $0xffffffff,0xc(%eax)
51c7e0:	75 09                	jne    0x51c7eb
51c7e2:	89 45 08             	mov    %eax,0x8(%ebp)
51c7e5:	5d                   	pop    %ebp
51c7e6:	e9 e5 c1 03 00       	jmp    0x5589d0
51c7eb:	5d                   	pop    %ebp
51c7ec:	c3                   	ret
51c7ed:	cc                   	int3
51c7ee:	cc                   	int3
51c7ef:	cc                   	int3
51c7f0:	55                   	push   %ebp
51c7f1:	8b ec                	mov    %esp,%ebp
51c7f3:	56                   	push   %esi
51c7f4:	8b 75 08             	mov    0x8(%ebp),%esi
51c7f7:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
51c7fb:	74 5c                	je     0x51c859
51c7fd:	8a 45 10             	mov    0x10(%ebp),%al
51c800:	ff 46 0c             	incl   0xc(%esi)
51c803:	fe c0                	inc    %al
51c805:	80 7e 0a 00          	cmpb   $0x0,0xa(%esi)
51c809:	88 45 08             	mov    %al,0x8(%ebp)
51c80c:	75 09                	jne    0x51c817
51c80e:	56                   	push   %esi
51c80f:	e8 bc a7 fd ff       	call   0x4f6fd0
51c814:	83 c4 04             	add    $0x4,%esp
51c817:	57                   	push   %edi
51c818:	ff 75 08             	push   0x8(%ebp)
51c81b:	ff 75 0c             	push   0xc(%ebp)
51c81e:	56                   	push   %esi
51c81f:	e8 0c 4b ff ff       	call   0x511330
51c824:	8b f8                	mov    %eax,%edi
51c826:	83 c4 0c             	add    $0xc,%esp
51c829:	85 ff                	test   %edi,%edi
51c82b:	75 11                	jne    0x51c83e
51c82d:	ff 75 08             	push   0x8(%ebp)
51c830:	ff 75 0c             	push   0xc(%ebp)
51c833:	56                   	push   %esi
51c834:	e8 67 ab ff ff       	call   0x5173a0
51c839:	83 c4 0c             	add    $0xc,%esp
51c83c:	8b f8                	mov    %eax,%edi
51c83e:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
51c842:	74 0f                	je     0x51c853
51c844:	83 46 0c ff          	addl   $0xffffffff,0xc(%esi)
51c848:	75 09                	jne    0x51c853
51c84a:	56                   	push   %esi
51c84b:	e8 80 c1 03 00       	call   0x5589d0
51c850:	83 c4 04             	add    $0x4,%esp
51c853:	8b c7                	mov    %edi,%eax
51c855:	5f                   	pop    %edi
51c856:	5e                   	pop    %esi
51c857:	5d                   	pop    %ebp
51c858:	c3                   	ret
51c859:	33 c0                	xor    %eax,%eax
51c85b:	5e                   	pop    %esi
51c85c:	5d                   	pop    %ebp
51c85d:	c3                   	ret
51c85e:	cc                   	int3
51c85f:	cc                   	int3
51c860:	55                   	push   %ebp
51c861:	8b ec                	mov    %esp,%ebp
51c863:	56                   	push   %esi
51c864:	8b 75 08             	mov    0x8(%ebp),%esi
51c867:	57                   	push   %edi
51c868:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
51c86c:	74 12                	je     0x51c880
51c86e:	ff 46 0c             	incl   0xc(%esi)
51c871:	80 7e 0a 00          	cmpb   $0x0,0xa(%esi)
51c875:	75 09                	jne    0x51c880
51c877:	56                   	push   %esi
51c878:	e8 53 a7 fd ff       	call   0x4f6fd0
51c87d:	83 c4 04             	add    $0x4,%esp
51c880:	8b 46 04             	mov    0x4(%esi),%eax
51c883:	8b 38                	mov    (%eax),%edi
51c885:	8b 45 0c             	mov    0xc(%ebp),%eax
51c888:	85 c0                	test   %eax,%eax
51c88a:	7e 06                	jle    0x51c892
51c88c:	89 87 9c 00 00 00    	mov    %eax,0x9c(%edi)
51c892:	80 7e 09 00          	cmpb   $0x0,0x9(%esi)
51c896:	8b bf 9c 00 00 00    	mov    0x9c(%edi),%edi
51c89c:	74 0f                	je     0x51c8ad
51c89e:	83 46 0c ff          	addl   $0xffffffff,0xc(%esi)
51c8a2:	75 09                	jne    0x51c8ad
51c8a4:	56                   	push   %esi
51c8a5:	e8 26 c1 03 00       	call   0x5589d0
51c8aa:	83 c4 04             	add    $0x4,%esp
51c8ad:	8b c7                	mov    %edi,%eax
51c8af:	5f                   	pop    %edi
51c8b0:	5e                   	pop    %esi
51c8b1:	5d                   	pop    %ebp
51c8b2:	c3                   	ret
51c8b3:	cc                   	int3
51c8b4:	cc                   	int3
51c8b5:	cc                   	int3
51c8b6:	cc                   	int3
51c8b7:	cc                   	int3
51c8b8:	cc                   	int3
51c8b9:	cc                   	int3
51c8ba:	cc                   	int3
51c8bb:	cc                   	int3
51c8bc:	cc                   	int3
51c8bd:	cc                   	int3
51c8be:	cc                   	int3
51c8bf:	cc                   	int3
51c8c0:	55                   	push   %ebp
51c8c1:	8b ec                	mov    %esp,%ebp
51c8c3:	83 ec 24             	sub    $0x24,%esp
51c8c6:	53                   	push   %ebx
51c8c7:	8b 5d 0c             	mov    0xc(%ebp),%ebx
51c8ca:	56                   	push   %esi
51c8cb:	57                   	push   %edi
51c8cc:	85 db                	test   %ebx,%ebx
51c8ce:	0f 85 a1 00 00 00    	jne    0x51c975
51c8d4:	8b 5d 08             	mov    0x8(%ebp),%ebx
51c8d7:	80 3b 00             	cmpb   $0x0,(%ebx)
51c8da:	0f 85 8c 00 00 00    	jne    0x51c96c
51c8e0:	8a 53 01             	mov    0x1(%ebx),%dl
51c8e3:	f6 c2 02             	test   $0x2,%dl
51c8e6:	0f 84 80 00 00 00    	je     0x51c96c
51c8ec:	8b 4b 20             	mov    0x20(%ebx),%ecx
51c8ef:	8b 75 10             	mov    0x10(%ebp),%esi
51c8f2:	8b 43 24             	mov    0x24(%ebx),%eax
51c8f5:	8b 7d 14             	mov    0x14(%ebp),%edi
51c8f8:	3b ce                	cmp    %esi,%ecx
51c8fa:	75 16                	jne    0x51c912
51c8fc:	3b c7                	cmp    %edi,%eax
51c8fe:	75 14                	jne    0x51c914
51c900:	8b 45 1c             	mov    0x1c(%ebp),%eax
51c903:	5f                   	pop    %edi
51c904:	5e                   	pop    %esi
51c905:	5b                   	pop    %ebx
51c906:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
51c90c:	33 c0                	xor    %eax,%eax
51c90e:	8b e5                	mov    %ebp,%esp
51c910:	5d                   	pop    %ebp
51c911:	c3                   	ret
51c912:	3b c7                	cmp    %edi,%eax
51c914:	7f 56                	jg     0x51c96c
51c916:	7c 04                	jl     0x51c91c
51c918:	3b ce                	cmp    %esi,%ecx
51c91a:	73 50                	jae    0x51c96c
51c91c:	f6 c2 08             	test   $0x8,%dl
51c91f:	75 7d                	jne    0x51c99e
51c921:	83 c1 01             	add    $0x1,%ecx
51c924:	83 d0 00             	adc    $0x0,%eax
51c927:	3b ce                	cmp    %esi,%ecx
51c929:	75 41                	jne    0x51c96c
51c92b:	3b c7                	cmp    %edi,%eax
51c92d:	75 3d                	jne    0x51c96c
51c92f:	8b 45 1c             	mov    0x1c(%ebp),%eax
51c932:	6a 00                	push   $0x0
51c934:	53                   	push   %ebx
51c935:	c7 00 00 00 00 00    	movl   $0x0,(%eax)
51c93b:	e8 30 04 00 00       	call   0x51cd70
51c940:	83 c4 08             	add    $0x8,%esp
51c943:	85 c0                	test   %eax,%eax
51c945:	75 1c                	jne    0x51c963
51c947:	53                   	push   %ebx
51c948:	e8 63 92 fe ff       	call   0x505bb0
51c94d:	83 c4 04             	add    $0x4,%esp
51c950:	39 73 20             	cmp    %esi,0x20(%ebx)
51c953:	75 17                	jne    0x51c96c
51c955:	39 7b 24             	cmp    %edi,0x24(%ebx)
51c958:	75 12                	jne    0x51c96c
51c95a:	5f                   	pop    %edi
51c95b:	5e                   	pop    %esi
51c95c:	33 c0                	xor    %eax,%eax
51c95e:	5b                   	pop    %ebx
51c95f:	8b e5                	mov    %ebp,%esp
51c961:	5d                   	pop    %ebp
51c962:	c3                   	ret
51c963:	83 f8 65             	cmp    $0x65,%eax
51c966:	0f 85 f9 03 00 00    	jne    0x51cd65
51c96c:	c7 45 f4 00 00 00 00 	movl   $0x0,-0xc(%ebp)
51c973:	eb 13                	jmp    0x51c988
51c975:	53                   	push   %ebx
51c976:	e8 85 d3 02 00       	call   0x549d00
51c97b:	c6 43 0b 00          	movb   $0x0,0xb(%ebx)
51c97f:	83 c4 04             	add    $0x4,%esp
51c982:	8b 5d 08             	mov    0x8(%ebp),%ebx
51c985:	89 45 f4             	mov    %eax,-0xc(%ebp)
51c988:	53                   	push   %ebx
51c989:	e8 a2 d2 fe ff       	call   0x509c30
51c98e:	83 c4 04             	add    $0x4,%esp
51c991:	85 c0                	test   %eax,%eax
51c993:	74 1b                	je     0x51c9b0
51c995:	83 f8 10             	cmp    $0x10,%eax
51c998:	0f 85 c7 03 00 00    	jne    0x51cd65
51c99e:	8b 45 1c             	mov    0x1c(%ebp),%eax
51c9a1:	5f                   	pop    %edi
51c9a2:	5e                   	pop    %esi
51c9a3:	5b                   	pop    %ebx
51c9a4:	c7 00 ff ff ff ff    	movl   $0xffffffff,(%eax)
51c9aa:	33 c0                	xor    %eax,%eax
51c9ac:	8b e5                	mov    %ebp,%esp
51c9ae:	5d                   	pop    %ebp
51c9af:	c3                   	ret
51c9b0:	b8 01 00 00 00       	mov    $0x1,%eax
51c9b5:	8d 7b 74             	lea    0x74(%ebx),%edi
51c9b8:	2b 45 18             	sub    0x18(%ebp),%eax
51c9bb:	89 45 e8             	mov    %eax,-0x18(%ebp)
51c9be:	66 90                	xchg   %ax,%ax
51c9c0:	8b 37                	mov    (%edi),%esi
51c9c2:	33 c9                	xor    %ecx,%ecx
51c9c4:	89 4d f8             	mov    %ecx,-0x8(%ebp)
51c9c7:	8b c8                	mov    %eax,%ecx
51c9c9:	8b 45 08             	mov    0x8(%ebp),%eax
51c9cc:	89 75 f0             	mov    %esi,-0x10(%ebp)
51c9cf:	0f b7 5e 18          	movzwl 0x18(%esi),%ebx
51c9d3:	4b                   	dec    %ebx
51c9d4:	8b fb                	mov    %ebx,%edi
51c9d6:	89 5d ec             	mov    %ebx,-0x14(%ebp)
51c9d9:	d3 ff                	sar    %cl,%edi
51c9db:	83 7d f4 00          	cmpl   $0x0,-0xc(%ebp)
51c9df:	66 89 78 46          	mov    %di,0x46(%eax)
51c9e3:	0f 85 da 00 00 00    	jne    0x51cac3
51c9e9:	8a 4e 03             	mov    0x3(%esi),%cl
51c9ec:	88 4d ff             	mov    %cl,-0x1(%ebp)
51c9ef:	8b 46 40             	mov    0x40(%esi),%eax
51c9f2:	0f b7 56 1a          	movzwl 0x1a(%esi),%edx
51c9f6:	66 8b 04 78          	mov    (%eax,%edi,2),%ax
51c9fa:	8a e8                	mov    %al,%ch
51c9fc:	8a cc                	mov    %ah,%cl
51c9fe:	0f b7 c1             	movzwl %cx,%eax
51ca01:	0f b7 ca             	movzwl %dx,%ecx
51ca04:	23 c1                	and    %ecx,%eax
51ca06:	03 46 44             	add    0x44(%esi),%eax
51ca09:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
51ca0d:	74 17                	je     0x51ca26
51ca0f:	80 38 80             	cmpb   $0x80,(%eax)
51ca12:	72 11                	jb     0x51ca25
51ca14:	8b 4e 3c             	mov    0x3c(%esi),%ecx
51ca17:	40                   	inc    %eax
51ca18:	3b c1                	cmp    %ecx,%eax
51ca1a:	0f 83 52 02 00 00    	jae    0x51cc72
51ca20:	80 38 80             	cmpb   $0x80,(%eax)
51ca23:	73 f2                	jae    0x51ca17
51ca25:	40                   	inc    %eax
51ca26:	8d 4d dc             	lea    -0x24(%ebp),%ecx
51ca29:	51                   	push   %ecx
51ca2a:	50                   	push   %eax