52c645:	66 83 fa fe          	cmp    $0xfffe,%dx
52c649:	75 5d                	jne    0x52c6a8
52c64b:	8d 04 1e             	lea    (%esi,%ebx,1),%eax
52c64e:	50                   	push   %eax
52c64f:	56                   	push   %esi
52c650:	ff 75 10             	push   0x10(%ebp)
52c653:	ff 75 0c             	push   0xc(%ebp)
52c656:	57                   	push   %edi
52c657:	e8 04 8b ff ff       	call   0x525160
52c65c:	8b 55 fc             	mov    -0x4(%ebp),%edx
52c65f:	83 c4 14             	add    $0x14,%esp
52c662:	8b 42 6c             	mov    0x6c(%edx),%eax
52c665:	85 c0                	test   %eax,%eax
52c667:	7e 3c                	jle    0x52c6a5
52c669:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
52c66c:	8b 42 68             	mov    0x68(%edx),%eax
52c66f:	8d 04 88             	lea    (%eax,%ecx,4),%eax
52c672:	83 c0 ec             	add    $0xffffffec,%eax
52c675:	89 45 18             	mov    %eax,0x18(%ebp)
52c678:	80 38 53             	cmpb   $0x53,(%eax)
52c67b:	75 28                	jne    0x52c6a5
52c67d:	8b 0a                	mov    (%edx),%ecx
52c67f:	80 79 51 00          	cmpb   $0x0,0x51(%ecx)
52c683:	75 20                	jne    0x52c6a5
52c685:	ff 70 10             	push   0x10(%eax)
52c688:	0f be 40 01          	movsbl 0x1(%eax),%eax
52c68c:	50                   	push   %eax
52c68d:	51                   	push   %ecx
52c68e:	e8 1d 76 fd ff       	call   0x503cb0
52c693:	8b 45 18             	mov    0x18(%ebp),%eax
52c696:	83 c4 0c             	add    $0xc,%esp
52c699:	66 c7 00 ad 00       	movw   $0xad,(%eax)
52c69e:	c7 40 10 00 00 00 00 	movl   $0x0,0x10(%eax)
52c6a5:	8b 4d 0c             	mov    0xc(%ebp),%ecx
52c6a8:	8b 45 1c             	mov    0x1c(%ebp),%eax
52c6ab:	46                   	inc    %esi
52c6ac:	0f b7 d0             	movzwl %ax,%edx
52c6af:	8b 45 20             	mov    0x20(%ebp),%eax
52c6b2:	3b f2                	cmp    %edx,%esi
52c6b4:	0f 8c 77 ff ff ff    	jl     0x52c631
52c6ba:	8b 45 14             	mov    0x14(%ebp),%eax
52c6bd:	85 c0                	test   %eax,%eax
52c6bf:	0f 84 8e 00 00 00    	je     0x52c753
52c6c5:	8b 75 fc             	mov    -0x4(%ebp),%esi
52c6c8:	8b 4e 6c             	mov    0x6c(%esi),%ecx
52c6cb:	39 4e 70             	cmp    %ecx,0x70(%esi)
52c6ce:	7f 10                	jg     0x52c6e0
52c6d0:	50                   	push   %eax
52c6d1:	52                   	push   %edx
52c6d2:	53                   	push   %ebx
52c6d3:	6a 5b                	push   $0x5b
52c6d5:	56                   	push   %esi
52c6d6:	e8 25 9e fd ff       	call   0x506500
52c6db:	83 c4 14             	add    $0x14,%esp
52c6de:	eb 2a                	jmp    0x52c70a
52c6e0:	8d 41 01             	lea    0x1(%ecx),%eax
52c6e3:	89 46 6c             	mov    %eax,0x6c(%esi)
52c6e6:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
52c6e9:	8b 46 68             	mov    0x68(%esi),%eax
52c6ec:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
52c6f0:	8b 55 14             	mov    0x14(%ebp),%edx
52c6f3:	c7 04 88 5b 00 00 00 	movl   $0x5b,(%eax,%ecx,4)
52c6fa:	89 5c 88 04          	mov    %ebx,0x4(%eax,%ecx,4)
52c6fe:	89 54 88 0c          	mov    %edx,0xc(%eax,%ecx,4)
52c702:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
52c709:	00
52c70a:	8b 4d 0c             	mov    0xc(%ebp),%ecx
52c70d:	8b 41 0c             	mov    0xc(%ecx),%eax
52c710:	83 78 0c 00          	cmpl   $0x0,0xc(%eax)
52c714:	74 3d                	je     0x52c753
52c716:	51                   	push   %ecx
52c717:	ff 37                	push   (%edi)
52c719:	e8 b2 18 00 00       	call   0x52dfd0
52c71e:	8b 0e                	mov    (%esi),%ecx
52c720:	83 c4 08             	add    $0x8,%esp
52c723:	8b d0                	mov    %eax,%edx
52c725:	80 79 51 00          	cmpb   $0x0,0x51(%ecx)
52c729:	74 0e                	je     0x52c739
52c72b:	52                   	push   %edx
52c72c:	6a 00                	push   $0x0
52c72e:	51                   	push   %ecx
52c72f:	e8 7c 75 fd ff       	call   0x503cb0
52c734:	83 c4 0c             	add    $0xc,%esp
52c737:	eb 1a                	jmp    0x52c753
52c739:	8b 46 6c             	mov    0x6c(%esi),%eax
52c73c:	48                   	dec    %eax
52c73d:	6a 00                	push   $0x0
52c73f:	52                   	push   %edx
52c740:	8d 0c 80             	lea    (%eax,%eax,4),%ecx
52c743:	8b 46 68             	mov    0x68(%esi),%eax
52c746:	8d 04 88             	lea    (%eax,%ecx,4),%eax
52c749:	50                   	push   %eax
52c74a:	56                   	push   %esi
52c74b:	e8 f0 d4 02 00       	call   0x559c40
52c750:	83 c4 10             	add    $0x10,%esp
52c753:	8b 4d 1c             	mov    0x1c(%ebp),%ecx
52c756:	0f b7 c1             	movzwl %cx,%eax
52c759:	83 f8 01             	cmp    $0x1,%eax
52c75c:	75 21                	jne    0x52c77f
52c75e:	85 db                	test   %ebx,%ebx
52c760:	74 28                	je     0x52c78a
52c762:	8a 47 13             	mov    0x13(%edi),%al
52c765:	3c 08                	cmp    $0x8,%al
52c767:	73 21                	jae    0x52c78a
52c769:	0f b6 c0             	movzbl %al,%eax
52c76c:	89 9c 87 94 00 00 00 	mov    %ebx,0x94(%edi,%eax,4)
52c773:	8b c3                	mov    %ebx,%eax
52c775:	fe 47 13             	incb   0x13(%edi)
52c778:	5f                   	pop    %edi
52c779:	5e                   	pop    %esi
52c77a:	5b                   	pop    %ebx
52c77b:	8b e5                	mov    %ebp,%esp
52c77d:	5d                   	pop    %ebp
52c77e:	c3                   	ret
52c77f:	3b 47 1c             	cmp    0x1c(%edi),%eax
52c782:	7e 06                	jle    0x52c78a
52c784:	89 47 1c             	mov    %eax,0x1c(%edi)
52c787:	89 5f 20             	mov    %ebx,0x20(%edi)
52c78a:	5f                   	pop    %edi
52c78b:	5e                   	pop    %esi
52c78c:	8b c3                	mov    %ebx,%eax
52c78e:	5b                   	pop    %ebx
52c78f:	8b e5                	mov    %ebp,%esp
52c791:	5d                   	pop    %ebp
52c792:	c3                   	ret
52c793:	cc                   	int3
52c794:	cc                   	int3
52c795:	cc                   	int3
52c796:	cc                   	int3
52c797:	cc                   	int3
52c798:	cc                   	int3
52c799:	cc                   	int3
52c79a:	cc                   	int3
52c79b:	cc                   	int3
52c79c:	cc                   	int3
52c79d:	cc                   	int3
52c79e:	cc                   	int3
52c79f:	cc                   	int3
52c7a0:	55                   	push   %ebp
52c7a1:	8b ec                	mov    %esp,%ebp
52c7a3:	83 ec 14             	sub    $0x14,%esp
52c7a6:	53                   	push   %ebx
52c7a7:	8b 5d 0c             	mov    0xc(%ebp),%ebx
52c7aa:	56                   	push   %esi
52c7ab:	8b 75 08             	mov    0x8(%ebp),%esi
52c7ae:	57                   	push   %edi
52c7af:	c7 45 fc 00 00 00 00 	movl   $0x0,-0x4(%ebp)
52c7b6:	ff 4e 38             	decl   0x38(%esi)
52c7b9:	8b 4b 24             	mov    0x24(%ebx),%ecx
52c7bc:	8b 7e 08             	mov    0x8(%esi),%edi
52c7bf:	80 e1 80             	and    $0x80,%cl
52c7c2:	8b 56 38             	mov    0x38(%esi),%edx
52c7c5:	f6 d9                	neg    %cl
52c7c7:	89 7d f0             	mov    %edi,-0x10(%ebp)
52c7ca:	1a c9                	sbb    %cl,%cl
52c7cc:	89 55 f4             	mov    %edx,-0xc(%ebp)
52c7cf:	80 e1 fd             	and    $0xfd,%cl
52c7d2:	80 c1 20             	add    $0x20,%cl
52c7d5:	80 7d 2c 00          	cmpb   $0x0,0x2c(%ebp)
52c7d9:	89 4d ec             	mov    %ecx,-0x14(%ebp)
52c7dc:	75 1a                	jne    0x52c7f8
52c7de:	66 8b 45 20          	mov    0x20(%ebp),%ax
52c7e2:	98                   	cwtl
52c7e3:	50                   	push   %eax
52c7e4:	ff 75 1c             	push   0x1c(%ebp)
52c7e7:	0f b6 c1             	movzbl %cl,%eax
52c7ea:	52                   	push   %edx
52c7eb:	ff 75 14             	push   0x14(%ebp)
52c7ee:	50                   	push   %eax
52c7ef:	57                   	push   %edi
52c7f0:	e8 1b 54 01 00       	call   0x541c10
52c7f5:	83 c4 18             	add    $0x18,%esp
52c7f8:	6a 00                	push   $0x0
52c7fa:	6a 00                	push   $0x0
52c7fc:	53                   	push   %ebx
52c7fd:	56                   	push   %esi
52c7fe:	e8 5d da ff ff       	call   0x52a260
52c803:	83 c4 10             	add    $0x10,%esp
52c806:	85 c0                	test   %eax,%eax
52c808:	8b 45 10             	mov    0x10(%ebp),%eax
52c80b:	75 0f                	jne    0x52c81c
52c80d:	85 c0                	test   %eax,%eax
52c80f:	75 0b                	jne    0x52c81c
52c811:	8b 45 30             	mov    0x30(%ebp),%eax
52c814:	89 45 f8             	mov    %eax,-0x8(%ebp)
52c817:	e9 7f 01 00 00       	jmp    0x52c99b
52c81c:	c7 45 f8 00 00 00 00 	movl   $0x0,-0x8(%ebp)
52c823:	8b f0                	mov    %eax,%esi
52c825:	85 c0                	test   %eax,%eax
52c827:	74 4b                	je     0x52c874
52c829:	8b 7d 08             	mov    0x8(%ebp),%edi
52c82c:	0f 1f 40 00          	nopl   0x0(%eax)
52c830:	80 7e 08 7e          	cmpb   $0x7e,0x8(%esi)
52c834:	75 34                	jne    0x52c86a
52c836:	f6 46 09 03          	testb  $0x3,0x9(%esi)
52c83a:	74 2e                	je     0x52c86a
52c83c:	6a 00                	push   $0x0
52c83e:	ff 76 10             	push   0x10(%esi)
52c841:	e8 7a b7 fc ff       	call   0x4f7fc0
52c846:	83 c4 08             	add    $0x8,%esp
52c849:	85 c0                	test   %eax,%eax
52c84b:	74 1d                	je     0x52c86a
52c84d:	0f b6 45 28          	movzbl 0x28(%ebp),%eax
52c851:	50                   	push   %eax
52c852:	53                   	push   %ebx
52c853:	56                   	push   %esi
52c854:	57                   	push   %edi
52c855:	e8 f6 9a fd ff       	call   0x506350
52c85a:	83 c4 10             	add    $0x10,%esp
52c85d:	85 c0                	test   %eax,%eax
52c85f:	74 09                	je     0x52c86a
52c861:	8b 4d f8             	mov    -0x8(%ebp),%ecx
52c864:	0b 48 10             	or     0x10(%eax),%ecx
52c867:	89 4d f8             	mov    %ecx,-0x8(%ebp)
52c86a:	8b 76 20             	mov    0x20(%esi),%esi
52c86d:	85 f6                	test   %esi,%esi
52c86f:	75 bf                	jne    0x52c830
52c871:	8b 7d f0             	mov    -0x10(%ebp),%edi
52c874:	8b 75 08             	mov    0x8(%ebp),%esi
52c877:	53                   	push   %ebx
52c878:	56                   	push   %esi
52c879:	e8 02 d9 ff ff       	call   0x52a180
52c87e:	0f bf 4b 2a          	movswl 0x2a(%ebx),%ecx
52c882:	83 c4 08             	add    $0x8,%esp
52c885:	8b 56 2c             	mov    0x2c(%esi),%edx
52c888:	41                   	inc    %ecx
52c889:	09 45 f8             	or     %eax,-0x8(%ebp)
52c88c:	03 ca                	add    %edx,%ecx
52c88e:	89 4e 2c             	mov    %ecx,0x2c(%esi)
52c891:	8b 4f 6c             	mov    0x6c(%edi),%ecx
52c894:	8d 42 01             	lea    0x1(%edx),%eax
52c897:	89 45 fc             	mov    %eax,-0x4(%ebp)
52c89a:	39 4f 70             	cmp    %ecx,0x70(%edi)
52c89d:	7f 13                	jg     0x52c8b2
52c89f:	6a 00                	push   $0x0
52c8a1:	50                   	push   %eax
52c8a2:	ff 75 1c             	push   0x1c(%ebp)
52c8a5:	6a 4d                	push   $0x4d
52c8a7:	57                   	push   %edi
52c8a8:	e8 53 9c fd ff       	call   0x506500
52c8ad:	83 c4 14             	add    $0x14,%esp
52c8b0:	eb 31                	jmp    0x52c8e3
52c8b2:	8b 55 1c             	mov    0x1c(%ebp),%edx
52c8b5:	8d 41 01             	lea    0x1(%ecx),%eax
52c8b8:	89 47 6c             	mov    %eax,0x6c(%edi)
52c8bb:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
52c8be:	8b 47 68             	mov    0x68(%edi),%eax
52c8c1:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
52c8c5:	8b 55 fc             	mov    -0x4(%ebp),%edx
52c8c8:	c7 04 88 4d 00 00 00 	movl   $0x4d,(%eax,%ecx,4)
52c8cf:	89 54 88 08          	mov    %edx,0x8(%eax,%ecx,4)
52c8d3:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
52c8da:	00
52c8db:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
52c8e2:	00
52c8e3:	33 c0                	xor    %eax,%eax
52c8e5:	33 f6                	xor    %esi,%esi
52c8e7:	66 3b 43 2a          	cmp    0x2a(%ebx),%ax
52c8eb:	7d 43                	jge    0x52c930
52c8ed:	8b 55 f8             	mov    -0x8(%ebp),%edx
52c8f0:	83 fa ff             	cmp    $0xffffffff,%edx
52c8f3:	74 12                	je     0x52c907
52c8f5:	83 fe 1f             	cmp    $0x1f,%esi
52c8f8:	7f 2d                	jg     0x52c927
52c8fa:	b8 01 00 00 00       	mov    $0x1,%eax
52c8ff:	8b ce                	mov    %esi,%ecx
52c901:	d3 e0                	shl    %cl,%eax
52c903:	85 c2                	test   %eax,%edx
52c905:	74 20                	je     0x52c927
52c907:	56                   	push   %esi
52c908:	53                   	push   %ebx
52c909:	e8 42 15 01 00       	call   0x53de50
52c90e:	8b 4d fc             	mov    -0x4(%ebp),%ecx
52c911:	98                   	cwtl
52c912:	41                   	inc    %ecx
52c913:	03 c1                	add    %ecx,%eax
52c915:	50                   	push   %eax
52c916:	56                   	push   %esi
52c917:	ff 75 14             	push   0x14(%ebp)
52c91a:	53                   	push   %ebx
52c91b:	57                   	push   %edi
52c91c:	e8 9f 77 ff ff       	call   0x5240c0
52c921:	8b 55 f8             	mov    -0x8(%ebp),%edx
52c924:	83 c4 1c             	add    $0x1c,%esp
52c927:	0f bf 43 2a          	movswl 0x2a(%ebx),%eax
52c92b:	46                   	inc    %esi
52c92c:	3b f0                	cmp    %eax,%esi
52c92e:	7c c0                	jl     0x52c8f0
52c930:	ff 75 f4             	push   -0xc(%ebp)
52c933:	0f b6 45 28          	movzbl 0x28(%ebp),%eax
52c937:	8b 77 6c             	mov    0x6c(%edi),%esi
52c93a:	50                   	push   %eax
52c93b:	ff 75 fc             	push   -0x4(%ebp)
52c93e:	53                   	push   %ebx
52c93f:	6a 01                	push   $0x1
52c941:	6a 00                	push   $0x0
52c943:	6a 7e                	push   $0x7e
52c945:	ff 75 10             	push   0x10(%ebp)
52c948:	ff 75 08             	push   0x8(%ebp)
52c94b:	e8 a0 24 ff ff       	call   0x51edf0
52c950:	83 c4 24             	add    $0x24,%esp
52c953:	3b 77 6c             	cmp    0x6c(%edi),%esi
52c956:	7d 24                	jge    0x52c97c
52c958:	66 8b 45 20          	mov    0x20(%ebp),%ax
52c95c:	98                   	cwtl
52c95d:	50                   	push   %eax
52c95e:	ff 75 1c             	push   0x1c(%ebp)
52c961:	8b 45 ec             	mov    -0x14(%ebp),%eax
52c964:	ff 75 f4             	push   -0xc(%ebp)
52c967:	0f b6 c0             	movzbl %al,%eax
52c96a:	ff 75 14             	push   0x14(%ebp)
52c96d:	50                   	push   %eax
52c96e:	57                   	push   %edi
52c96f:	e8 9c 52 01 00       	call   0x541c10
52c974:	83 c4 18             	add    $0x18,%esp
52c977:	83 c8 ff             	or     $0xffffffff,%eax
52c97a:	eb 03                	jmp    0x52c97f
52c97c:	8b 45 30             	mov    0x30(%ebp),%eax
52c97f:	8b 75 08             	mov    0x8(%ebp),%esi
52c982:	6a 00                	push   $0x0
52c984:	6a 00                	push   $0x0
52c986:	6a 00                	push   $0x0
52c988:	ff 75 fc             	push   -0x4(%ebp)
52c98b:	89 45 f8             	mov    %eax,-0x8(%ebp)
52c98e:	53                   	push   %ebx
52c98f:	56                   	push   %esi
52c990:	e8 4b cb ff ff       	call   0x5294e0
52c995:	8b 45 f8             	mov    -0x8(%ebp),%eax
52c998:	83 c4 18             	add    $0x18,%esp
52c99b:	83 7b 0c 00          	cmpl   $0x0,0xc(%ebx)
52c99f:	0f 85 41 01 00 00    	jne    0x52cae6
52c9a5:	50                   	push   %eax
52c9a6:	6a 00                	push   $0x0
52c9a8:	ff 75 18             	push   0x18(%ebp)
52c9ab:	ff 75 14             	push   0x14(%ebp)
52c9ae:	53                   	push   %ebx
52c9af:	56                   	push   %esi
52c9b0:	e8 9b 01 00 00       	call   0x52cb50
52c9b5:	8b 4f 6c             	mov    0x6c(%edi),%ecx
52c9b8:	33 d2                	xor    %edx,%edx
52c9ba:	83 c4 18             	add    $0x18,%esp
52c9bd:	38 55 24             	cmp    %dl,0x24(%ebp)
52c9c0:	0f 95 c2             	setne  %dl
52c9c3:	39 4f 70             	cmp    %ecx,0x70(%edi)
52c9c6:	7f 13                	jg     0x52c9db
52c9c8:	6a 00                	push   $0x0
52c9ca:	52                   	push   %edx
52c9cb:	ff 75 14             	push   0x14(%ebp)
52c9ce:	6a 7a                	push   $0x7a
52c9d0:	57                   	push   %edi