54c554:	8b 45 10             	mov    0x10(%ebp),%eax
54c557:	53                   	push   %ebx
54c558:	56                   	push   %esi
54c559:	8b 75 0c             	mov    0xc(%ebp),%esi
54c55c:	57                   	push   %edi
54c55d:	8b 78 04             	mov    0x4(%eax),%edi
54c560:	89 75 b0             	mov    %esi,-0x50(%ebp)
54c563:	89 45 c4             	mov    %eax,-0x3c(%ebp)
54c566:	89 7d d0             	mov    %edi,-0x30(%ebp)
54c569:	74 67                	je     0x54c5d2
54c56b:	8a 46 01             	mov    0x1(%esi),%al
54c56e:	8d 4e 01             	lea    0x1(%esi),%ecx
54c571:	3c 80                	cmp    $0x80,%al
54c573:	73 0a                	jae    0x54c57f
54c575:	0f b6 c0             	movzbl %al,%eax
54c578:	b9 01 00 00 00       	mov    $0x1,%ecx
54c57d:	eb 13                	jmp    0x54c592
54c57f:	8d 45 c0             	lea    -0x40(%ebp),%eax
54c582:	50                   	push   %eax
54c583:	51                   	push   %ecx
54c584:	e8 b7 12 fe ff       	call   0x52d840
54c589:	0f b6 c8             	movzbl %al,%ecx
54c58c:	83 c4 08             	add    $0x8,%esp
54c58f:	8b 45 c0             	mov    -0x40(%ebp),%eax
54c592:	0f b6 d9             	movzbl %cl,%ebx
54c595:	0f b6 0e             	movzbl (%esi),%ecx
54c598:	43                   	inc    %ebx
54c599:	89 5d b4             	mov    %ebx,-0x4c(%ebp)
54c59c:	89 4d c0             	mov    %ecx,-0x40(%ebp)
54c59f:	3d 80 00 00 00       	cmp    $0x80,%eax
54c5a4:	72 15                	jb     0x54c5bb
54c5a6:	83 c0 f4             	add    $0xfffffff4,%eax
54c5a9:	d1 e8                	shr    $1,%eax
54c5ab:	83 c7 28             	add    $0x28,%edi
54c5ae:	89 7d d0             	mov    %edi,-0x30(%ebp)
54c5b1:	8d 14 08             	lea    (%eax,%ecx,1),%edx
54c5b4:	b8 01 00 00 00       	mov    $0x1,%eax
54c5b9:	eb 47                	jmp    0x54c602
54c5bb:	0f b6 80 d8 2f 6b 00 	movzbl 0x6b2fd8(%eax),%eax
54c5c2:	83 c7 28             	add    $0x28,%edi
54c5c5:	89 7d d0             	mov    %edi,-0x30(%ebp)
54c5c8:	8d 14 08             	lea    (%eax,%ecx,1),%edx
54c5cb:	b8 01 00 00 00       	mov    $0x1,%eax
54c5d0:	eb 30                	jmp    0x54c602
54c5d2:	8a 06                	mov    (%esi),%al
54c5d4:	3c 80                	cmp    $0x80,%al
54c5d6:	73 0a                	jae    0x54c5e2
54c5d8:	0f b6 c8             	movzbl %al,%ecx
54c5db:	b8 01 00 00 00       	mov    $0x1,%eax
54c5e0:	eb 13                	jmp    0x54c5f5
54c5e2:	8d 45 c0             	lea    -0x40(%ebp),%eax
54c5e5:	50                   	push   %eax
54c5e6:	56                   	push   %esi
54c5e7:	e8 54 12 fe ff       	call   0x52d840
54c5ec:	8b 4d c0             	mov    -0x40(%ebp),%ecx
54c5ef:	83 c4 08             	add    $0x8,%esp
54c5f2:	0f b6 c0             	movzbl %al,%eax
54c5f5:	0f b6 d8             	movzbl %al,%ebx
54c5f8:	8b d1                	mov    %ecx,%edx
54c5fa:	89 4d c0             	mov    %ecx,-0x40(%ebp)
54c5fd:	33 c0                	xor    %eax,%eax
54c5ff:	89 5d b4             	mov    %ebx,-0x4c(%ebp)
54c602:	89 45 bc             	mov    %eax,-0x44(%ebp)
54c605:	89 55 c8             	mov    %edx,-0x38(%ebp)
54c608:	3b 55 08             	cmp    0x8(%ebp),%edx
54c60b:	76 38                	jbe    0x54c645
54c60d:	68 fc c4 6b 00       	push   $0x6bc4fc
54c612:	68 70 3f 01 00       	push   $0x13f70
54c617:	68 94 c4 6b 00       	push   $0x6bc494
54c61c:	68 78 c4 6b 00       	push   $0x6bc478
54c621:	6a 0b                	push   $0xb
54c623:	e8 b8 39 f9 ff       	call   0x4dffe0
54c628:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
54c62b:	83 c4 14             	add    $0x14,%esp
54c62e:	33 c0                	xor    %eax,%eax
54c630:	5f                   	pop    %edi
54c631:	5e                   	pop    %esi
54c632:	c6 41 0b 0b          	movb   $0xb,0xb(%ecx)
54c636:	5b                   	pop    %ebx
54c637:	8b 4d fc             	mov    -0x4(%ebp),%ecx
54c63a:	33 cd                	xor    %ebp,%ecx
54c63c:	e8 99 4e 09 00       	call   0x5e14da
54c641:	8b e5                	mov    %ebp,%esp
54c643:	5d                   	pop    %ebp
54c644:	c3                   	ret
54c645:	8d 04 85 14 00 00 00 	lea    0x14(,%eax,4),%eax
54c64c:	89 45 b8             	mov    %eax,-0x48(%ebp)
54c64f:	90                   	nop
54c650:	0f b7 4f 08          	movzwl 0x8(%edi),%ecx
54c654:	89 4d ac             	mov    %ecx,-0x54(%ebp)
54c657:	f6 c1 24             	test   $0x24,%cl
54c65a:	0f 84 c0 00 00 00    	je     0x54c720
54c660:	0f b6 1c 1e          	movzbl (%esi,%ebx,1),%ebx
54c664:	89 5d cc             	mov    %ebx,-0x34(%ebp)
54c667:	83 fb 0a             	cmp    $0xa,%ebx
54c66a:	73 74                	jae    0x54c6e0
54c66c:	85 db                	test   %ebx,%ebx
54c66e:	0f 84 8f 03 00 00    	je     0x54ca03
54c674:	83 fb 07             	cmp    $0x7,%ebx
54c677:	75 31                	jne    0x54c6aa
54c679:	8d 45 d4             	lea    -0x2c(%ebp),%eax
54c67c:	50                   	push   %eax
54c67d:	8d 04 16             	lea    (%esi,%edx,1),%eax
54c680:	53                   	push   %ebx
54c681:	50                   	push   %eax
54c682:	e8 89 06 00 00       	call   0x54cd10
54c687:	f2 0f 10 45 d4       	movsd  -0x2c(%ebp),%xmm0
54c68c:	83 c4 04             	add    $0x4,%esp
54c68f:	f2 0f 11 04 24       	movsd  %xmm0,(%esp)
54c694:	ff 77 04             	push   0x4(%edi)
54c697:	ff 37                	push   (%edi)
54c699:	e8 32 31 fe ff       	call   0x52f7d0
54c69e:	8b c8                	mov    %eax,%ecx
54c6a0:	83 c4 10             	add    $0x10,%esp
54c6a3:	f7 d9                	neg    %ecx
54c6a5:	e9 d3 02 00 00       	jmp    0x54c97d
54c6aa:	8d 04 16             	lea    (%esi,%edx,1),%eax
54c6ad:	50                   	push   %eax
54c6ae:	53                   	push   %ebx
54c6af:	e8 bc fb 00 00       	call   0x55c270
54c6b4:	8b 77 04             	mov    0x4(%edi),%esi
54c6b7:	83 c4 08             	add    $0x8,%esp
54c6ba:	8b 0f                	mov    (%edi),%ecx
54c6bc:	3b d6                	cmp    %esi,%edx
54c6be:	0f 8c 3f 03 00 00    	jl     0x54ca03
54c6c4:	7f 1a                	jg     0x54c6e0
54c6c6:	3b c1                	cmp    %ecx,%eax
54c6c8:	0f 82 35 03 00 00    	jb     0x54ca03
54c6ce:	3b d6                	cmp    %esi,%edx
54c6d0:	7f 0e                	jg     0x54c6e0
54c6d2:	0f 8c ad 02 00 00    	jl     0x54c985
54c6d8:	3b c1                	cmp    %ecx,%eax
54c6da:	0f 86 a5 02 00 00    	jbe    0x54c985
54c6e0:	b9 01 00 00 00       	mov    $0x1,%ecx
54c6e5:	8b 45 c4             	mov    -0x3c(%ebp),%eax
54c6e8:	8b 55 bc             	mov    -0x44(%ebp),%edx
54c6eb:	8b 00                	mov    (%eax),%eax
54c6ed:	8b 40 10             	mov    0x10(%eax),%eax
54c6f0:	0f b6 04 10          	movzbl (%eax,%edx,1),%eax
54c6f4:	85 c0                	test   %eax,%eax
54c6f6:	0f 84 a6 03 00 00    	je     0x54caa2
54c6fc:	a8 02                	test   $0x2,%al
54c6fe:	0f 84 9c 03 00 00    	je     0x54caa0
54c704:	85 db                	test   %ebx,%ebx
54c706:	0f 84 88 03 00 00    	je     0x54ca94
54c70c:	8b 55 d0             	mov    -0x30(%ebp),%edx
54c70f:	f6 42 08 01          	testb  $0x1,0x8(%edx)
54c713:	0f 85 7b 03 00 00    	jne    0x54ca94
54c719:	33 d2                	xor    %edx,%edx
54c71b:	e9 79 03 00 00       	jmp    0x54ca99
54c720:	f6 c1 08             	test   $0x8,%cl
54c723:	74 69                	je     0x54c78e
54c725:	0f b6 1c 1e          	movzbl (%esi,%ebx,1),%ebx
54c729:	89 5d cc             	mov    %ebx,-0x34(%ebp)
54c72c:	83 fb 0a             	cmp    $0xa,%ebx
54c72f:	73 af                	jae    0x54c6e0
54c731:	85 db                	test   %ebx,%ebx
54c733:	0f 84 ca 02 00 00    	je     0x54ca03
54c739:	8d 45 d4             	lea    -0x2c(%ebp),%eax
54c73c:	50                   	push   %eax
54c73d:	8d 04 16             	lea    (%esi,%edx,1),%eax
54c740:	53                   	push   %ebx
54c741:	50                   	push   %eax
54c742:	e8 c9 05 00 00       	call   0x54cd10
54c747:	f2 0f 10 07          	movsd  (%edi),%xmm0
54c74b:	83 c4 0c             	add    $0xc,%esp
54c74e:	83 fb 07             	cmp    $0x7,%ebx
54c751:	75 1e                	jne    0x54c771
54c753:	f2 0f 10 4d d4       	movsd  -0x2c(%ebp),%xmm1
54c758:	66 0f 2f c1          	comisd %xmm1,%xmm0
54c75c:	0f 87 a1 02 00 00    	ja     0x54ca03
54c762:	66 0f 2f c8          	comisd %xmm0,%xmm1
54c766:	0f 87 74 ff ff ff    	ja     0x54c6e0
54c76c:	e9 14 02 00 00       	jmp    0x54c985
54c771:	83 ec 08             	sub    $0x8,%esp
54c774:	f2 0f 11 04 24       	movsd  %xmm0,(%esp)
54c779:	ff 75 d8             	push   -0x28(%ebp)
54c77c:	ff 75 d4             	push   -0x2c(%ebp)
54c77f:	e8 4c 30 fe ff       	call   0x52f7d0
54c784:	83 c4 10             	add    $0x10,%esp
54c787:	8b c8                	mov    %eax,%ecx
54c789:	e9 ef 01 00 00       	jmp    0x54c97d
54c78e:	f6 c1 02             	test   $0x2,%cl
54c791:	0f 84 e3 00 00 00    	je     0x54c87a
54c797:	8a 0c 1e             	mov    (%esi,%ebx,1),%cl
54c79a:	8d 04 1e             	lea    (%esi,%ebx,1),%eax
54c79d:	80 f9 80             	cmp    $0x80,%cl
54c7a0:	73 08                	jae    0x54c7aa
54c7a2:	0f b6 d9             	movzbl %cl,%ebx
54c7a5:	89 5d cc             	mov    %ebx,-0x34(%ebp)
54c7a8:	eb 13                	jmp    0x54c7bd
54c7aa:	8d 4d cc             	lea    -0x34(%ebp),%ecx
54c7ad:	51                   	push   %ecx
54c7ae:	50                   	push   %eax
54c7af:	e8 8c 10 fe ff       	call   0x52d840
54c7b4:	8b 5d cc             	mov    -0x34(%ebp),%ebx
54c7b7:	83 c4 08             	add    $0x8,%esp
54c7ba:	8b 55 c8             	mov    -0x38(%ebp),%edx
54c7bd:	83 fb 0c             	cmp    $0xc,%ebx
54c7c0:	0f 82 3d 02 00 00    	jb     0x54ca03
54c7c6:	f6 c3 01             	test   $0x1,%bl
54c7c9:	0f 84 11 ff ff ff    	je     0x54c6e0
54c7cf:	8d 7b f4             	lea    -0xc(%ebx),%edi
54c7d2:	d1 ef                	shr    $1,%edi
54c7d4:	89 7d e0             	mov    %edi,-0x20(%ebp)
54c7d7:	8d 04 17             	lea    (%edi,%edx,1),%eax
54c7da:	3b 45 08             	cmp    0x8(%ebp),%eax
54c7dd:	0f 87 28 02 00 00    	ja     0x54ca0b
54c7e3:	8b 4d c4             	mov    -0x3c(%ebp),%ecx
54c7e6:	8b 09                	mov    (%ecx),%ecx
54c7e8:	0f b7 41 08          	movzwl 0x8(%ecx),%eax
54c7ec:	3b 45 bc             	cmp    -0x44(%ebp),%eax
54c7ef:	0f 8e 16 02 00 00    	jle    0x54ca0b
54c7f5:	8b 45 b8             	mov    -0x48(%ebp),%eax
54c7f8:	83 3c 08 00          	cmpl   $0x0,(%eax,%ecx,1)
54c7fc:	74 3f                	je     0x54c83d
54c7fe:	8a 41 04             	mov    0x4(%ecx),%al
54c801:	8b 7d d0             	mov    -0x30(%ebp),%edi
54c804:	88 45 de             	mov    %al,-0x22(%ebp)
54c807:	8b 41 0c             	mov    0xc(%ecx),%eax
54c80a:	89 45 f4             	mov    %eax,-0xc(%ebp)
54c80d:	b8 02 00 00 00       	mov    $0x2,%eax
54c812:	66 89 45 dc          	mov    %ax,-0x24(%ebp)
54c816:	8d 04 16             	lea    (%esi,%edx,1),%eax
54c819:	89 45 e4             	mov    %eax,-0x1c(%ebp)
54c81c:	8b 45 c4             	mov    -0x3c(%ebp),%eax
54c81f:	83 c0 0b             	add    $0xb,%eax
54c822:	50                   	push   %eax
54c823:	8b 45 b8             	mov    -0x48(%ebp),%eax
54c826:	ff 34 08             	push   (%eax,%ecx,1)
54c829:	8d 45 d4             	lea    -0x2c(%ebp),%eax
54c82c:	57                   	push   %edi
54c82d:	50                   	push   %eax
54c82e:	e8 0d de 00 00       	call   0x55a640
54c833:	83 c4 10             	add    $0x10,%esp
54c836:	8b c8                	mov    %eax,%ecx
54c838:	e9 40 01 00 00       	jmp    0x54c97d
54c83d:	8b 55 d0             	mov    -0x30(%ebp),%edx
54c840:	8b 4d c8             	mov    -0x38(%ebp),%ecx
54c843:	8b 72 0c             	mov    0xc(%edx),%esi
54c846:	3b fe                	cmp    %esi,%edi
54c848:	8b 52 10             	mov    0x10(%edx),%edx
54c84b:	0f 4c f7             	cmovl  %edi,%esi
54c84e:	03 4d b0             	add    -0x50(%ebp),%ecx
54c851:	83 ee 04             	sub    $0x4,%esi
54c854:	0f 82 c8 00 00 00    	jb     0x54c922
54c85a:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
54c860:	8b 01                	mov    (%ecx),%eax
54c862:	3b 02                	cmp    (%edx),%eax
54c864:	0f 85 bd 00 00 00    	jne    0x54c927
54c86a:	83 c1 04             	add    $0x4,%ecx
54c86d:	83 c2 04             	add    $0x4,%edx
54c870:	83 ee 04             	sub    $0x4,%esi
54c873:	73 eb                	jae    0x54c860
54c875:	e9 a8 00 00 00       	jmp    0x54c922
54c87a:	f6 c1 10             	test   $0x10,%cl
54c87d:	0f 84 ec 00 00 00    	je     0x54c96f
54c883:	8a 14 1e             	mov    (%esi,%ebx,1),%dl
54c886:	8d 04 1e             	lea    (%esi,%ebx,1),%eax
54c889:	80 fa 80             	cmp    $0x80,%dl
54c88c:	73 08                	jae    0x54c896
54c88e:	0f b6 da             	movzbl %dl,%ebx
54c891:	89 5d cc             	mov    %ebx,-0x34(%ebp)
54c894:	eb 13                	jmp    0x54c8a9
54c896:	8d 4d cc             	lea    -0x34(%ebp),%ecx
54c899:	51                   	push   %ecx
54c89a:	50                   	push   %eax
54c89b:	e8 a0 0f fe ff       	call   0x52d840
54c8a0:	8b 5d cc             	mov    -0x34(%ebp),%ebx
54c8a3:	83 c4 08             	add    $0x8,%esp
54c8a6:	8b 4d ac             	mov    -0x54(%ebp),%ecx
54c8a9:	83 fb 0c             	cmp    $0xc,%ebx
54c8ac:	0f 82 51 01 00 00    	jb     0x54ca03
54c8b2:	f6 c3 01             	test   $0x1,%bl
54c8b5:	0f 85 48 01 00 00    	jne    0x54ca03
54c8bb:	8b 55 c8             	mov    -0x38(%ebp),%edx
54c8be:	8d 7b f4             	lea    -0xc(%ebx),%edi
54c8c1:	d1 ef                	shr    $1,%edi
54c8c3:	8d 04 17             	lea    (%edi,%edx,1),%eax
54c8c6:	3b 45 08             	cmp    0x8(%ebp),%eax
54c8c9:	0f 87 74 01 00 00    	ja     0x54ca43
54c8cf:	f7 c1 00 40 00 00    	test   $0x4000,%ecx
54c8d5:	74 21                	je     0x54c8f8
54c8d7:	8d 04 16             	lea    (%esi,%edx,1),%eax
54c8da:	57                   	push   %edi
54c8db:	50                   	push   %eax
54c8dc:	e8 3f ad fb ff       	call   0x507620
54c8e1:	83 c4 08             	add    $0x8,%esp
54c8e4:	85 c0                	test   %eax,%eax
54c8e6:	0f 84 f4 fd ff ff    	je     0x54c6e0
54c8ec:	8b cf                	mov    %edi,%ecx
54c8ee:	8b 7d d0             	mov    -0x30(%ebp),%edi
54c8f1:	2b 0f                	sub    (%edi),%ecx
54c8f3:	e9 85 00 00 00       	jmp    0x54c97d
54c8f8:	8b 55 d0             	mov    -0x30(%ebp),%edx
54c8fb:	8b 4d c8             	mov    -0x38(%ebp),%ecx
54c8fe:	8b 72 0c             	mov    0xc(%edx),%esi
54c901:	3b fe                	cmp    %esi,%edi
54c903:	8b 52 10             	mov    0x10(%edx),%edx
54c906:	0f 4c f7             	cmovl  %edi,%esi
54c909:	03 4d b0             	add    -0x50(%ebp),%ecx
54c90c:	83 ee 04             	sub    $0x4,%esi
54c90f:	72 11                	jb     0x54c922
54c911:	8b 01                	mov    (%ecx),%eax
54c913:	3b 02                	cmp    (%edx),%eax
54c915:	75 10                	jne    0x54c927
54c917:	83 c1 04             	add    $0x4,%ecx
54c91a:	83 c2 04             	add    $0x4,%edx
54c91d:	83 ee 04             	sub    $0x4,%esi
54c920:	73 ef                	jae    0x54c911
54c922:	83 fe fc             	cmp    $0xfffffffc,%esi
54c925:	74 34                	je     0x54c95b
54c927:	8a 01                	mov    (%ecx),%al
54c929:	3a 02                	cmp    (%edx),%al
54c92b:	75 27                	jne    0x54c954
54c92d:	83 fe fd             	cmp    $0xfffffffd,%esi
54c930:	74 29                	je     0x54c95b
54c932:	8a 41 01             	mov    0x1(%ecx),%al
54c935:	3a 42 01             	cmp    0x1(%edx),%al
54c938:	75 1a                	jne    0x54c954
54c93a:	83 fe fe             	cmp    $0xfffffffe,%esi
54c93d:	74 1c                	je     0x54c95b
54c93f:	8a 41 02             	mov    0x2(%ecx),%al
54c942:	3a 42 02             	cmp    0x2(%edx),%al
54c945:	75 0d                	jne    0x54c954
54c947:	83 fe ff             	cmp    $0xffffffff,%esi
54c94a:	74 0f                	je     0x54c95b
54c94c:	8a 41 03             	mov    0x3(%ecx),%al
54c94f:	3a 42 03             	cmp    0x3(%edx),%al
54c952:	74 07                	je     0x54c95b
54c954:	1b c9                	sbb    %ecx,%ecx
54c956:	83 c9 01             	or     $0x1,%ecx
54c959:	eb 02                	jmp    0x54c95d
54c95b:	33 c9                	xor    %ecx,%ecx
54c95d:	85 c9                	test   %ecx,%ecx
54c95f:	0f 85 80 fd ff ff    	jne    0x54c6e5
54c965:	8b cf                	mov    %edi,%ecx
54c967:	8b 7d d0             	mov    -0x30(%ebp),%edi
54c96a:	2b 4f 0c             	sub    0xc(%edi),%ecx
54c96d:	eb 0e                	jmp    0x54c97d
54c96f:	0f b6 1c 1e          	movzbl (%esi,%ebx,1),%ebx
54c973:	33 c9                	xor    %ecx,%ecx
54c975:	85 db                	test   %ebx,%ebx
54c977:	89 5d cc             	mov    %ebx,-0x34(%ebp)
54c97a:	0f 95 c1             	setne  %cl
54c97d:	85 c9                	test   %ecx,%ecx
54c97f:	0f 85 60 fd ff ff    	jne    0x54c6e5
54c985:	8b 75 c4             	mov    -0x3c(%ebp),%esi
54c988:	8b 4d bc             	mov    -0x44(%ebp),%ecx
54c98b:	83 45 b8 04          	addl   $0x4,-0x48(%ebp)