52c4ee:	7d 11                	jge    0x52c501
52c4f0:	0f b7 3b             	movzwl (%ebx),%edi
52c4f3:	03 cf                	add    %edi,%ecx
52c4f5:	42                   	inc    %edx
52c4f6:	83 c3 04             	add    $0x4,%ebx
52c4f9:	81 fa 00 01 00 00    	cmp    $0x100,%edx
52c4ff:	7c ef                	jl     0x52c4f0
52c501:	c1 ee 02             	shr    $0x2,%esi
52c504:	3b ce                	cmp    %esi,%ecx
52c506:	76 04                	jbe    0x52c50c
52c508:	33 d2                	xor    %edx,%edx
52c50a:	eb 02                	jmp    0x52c50e
52c50c:	b2 01                	mov    $0x1,%dl
52c50e:	88 50 1c             	mov    %dl,0x1c(%eax)
52c511:	5f                   	pop    %edi
52c512:	5e                   	pop    %esi
52c513:	5b                   	pop    %ebx
52c514:	c3                   	ret
52c515:	90                   	nop
52c516:	90                   	nop
52c517:	90                   	nop
52c518:	53                   	push   %ebx
52c519:	33 c9                	xor    %ecx,%ecx
52c51b:	8b d8                	mov    %eax,%ebx
52c51d:	4a                   	dec    %edx
52c51e:	83 e3 01             	and    $0x1,%ebx
52c521:	0b cb                	or     %ebx,%ecx
52c523:	d1 e8                	shr    $1,%eax
52c525:	03 c9                	add    %ecx,%ecx
52c527:	85 d2                	test   %edx,%edx
52c529:	7f f0                	jg     0x52c51b
52c52b:	8b c1                	mov    %ecx,%eax
52c52d:	d1 e8                	shr    $1,%eax
52c52f:	5b                   	pop    %ebx
52c530:	c3                   	ret
52c531:	90                   	nop
52c532:	90                   	nop
52c533:	90                   	nop
52c534:	53                   	push   %ebx
52c535:	83 b8 b4 16 00 00 10 	cmpl   $0x10,0x16b4(%eax)
52c53c:	75 3e                	jne    0x52c57c
52c53e:	8b 50 14             	mov    0x14(%eax),%edx
52c541:	ff 40 14             	incl   0x14(%eax)
52c544:	8b 48 08             	mov    0x8(%eax),%ecx
52c547:	8a 98 b0 16 00 00    	mov    0x16b0(%eax),%bl
52c54d:	80 e3 ff             	and    $0xff,%bl
52c550:	88 1c 11             	mov    %bl,(%ecx,%edx,1)
52c553:	8b 50 14             	mov    0x14(%eax),%edx
52c556:	ff 40 14             	incl   0x14(%eax)
52c559:	0f b7 98 b0 16 00 00 	movzwl 0x16b0(%eax),%ebx
52c560:	8b 48 08             	mov    0x8(%eax),%ecx
52c563:	c1 fb 08             	sar    $0x8,%ebx
52c566:	88 1c 11             	mov    %bl,(%ecx,%edx,1)
52c569:	33 d2                	xor    %edx,%edx
52c56b:	66 c7 80 b0 16 00 00 	movw   $0x0,0x16b0(%eax)
52c572:	00 00
52c574:	89 90 b4 16 00 00    	mov    %edx,0x16b4(%eax)
52c57a:	5b                   	pop    %ebx
52c57b:	c3                   	ret
52c57c:	83 b8 b4 16 00 00 08 	cmpl   $0x8,0x16b4(%eax)
52c583:	7c 21                	jl     0x52c5a6
52c585:	8b 48 14             	mov    0x14(%eax),%ecx
52c588:	ff 40 14             	incl   0x14(%eax)
52c58b:	8b 50 08             	mov    0x8(%eax),%edx
52c58e:	8a 98 b0 16 00 00    	mov    0x16b0(%eax),%bl
52c594:	88 1c 0a             	mov    %bl,(%edx,%ecx,1)
52c597:	66 c1 a8 b0 16 00 00 	shrw   $0x8,0x16b0(%eax)
52c59e:	08
52c59f:	83 a8 b4 16 00 00 08 	subl   $0x8,0x16b4(%eax)
52c5a6:	5b                   	pop    %ebx
52c5a7:	c3                   	ret
52c5a8:	53                   	push   %ebx
52c5a9:	83 b8 b4 16 00 00 08 	cmpl   $0x8,0x16b4(%eax)
52c5b0:	7e 2d                	jle    0x52c5df
52c5b2:	8b 50 14             	mov    0x14(%eax),%edx
52c5b5:	ff 40 14             	incl   0x14(%eax)
52c5b8:	8b 48 08             	mov    0x8(%eax),%ecx
52c5bb:	8a 98 b0 16 00 00    	mov    0x16b0(%eax),%bl
52c5c1:	80 e3 ff             	and    $0xff,%bl
52c5c4:	88 1c 11             	mov    %bl,(%ecx,%edx,1)
52c5c7:	8b 50 14             	mov    0x14(%eax),%edx
52c5ca:	ff 40 14             	incl   0x14(%eax)
52c5cd:	8b 48 08             	mov    0x8(%eax),%ecx
52c5d0:	0f b7 98 b0 16 00 00 	movzwl 0x16b0(%eax),%ebx
52c5d7:	c1 fb 08             	sar    $0x8,%ebx
52c5da:	88 1c 11             	mov    %bl,(%ecx,%edx,1)
52c5dd:	eb 1b                	jmp    0x52c5fa
52c5df:	83 b8 b4 16 00 00 00 	cmpl   $0x0,0x16b4(%eax)
52c5e6:	7e 12                	jle    0x52c5fa
52c5e8:	8b 50 14             	mov    0x14(%eax),%edx
52c5eb:	ff 40 14             	incl   0x14(%eax)
52c5ee:	8b 48 08             	mov    0x8(%eax),%ecx
52c5f1:	8a 98 b0 16 00 00    	mov    0x16b0(%eax),%bl
52c5f7:	88 1c 11             	mov    %bl,(%ecx,%edx,1)
52c5fa:	66 c7 80 b0 16 00 00 	movw   $0x0,0x16b0(%eax)
52c601:	00 00
52c603:	33 d2                	xor    %edx,%edx
52c605:	89 90 b4 16 00 00    	mov    %edx,0x16b4(%eax)
52c60b:	5b                   	pop    %ebx
52c60c:	c3                   	ret
52c60d:	90                   	nop
52c60e:	90                   	nop
52c60f:	90                   	nop
52c610:	55                   	push   %ebp
52c611:	8b ec                	mov    %esp,%ebp
52c613:	53                   	push   %ebx
52c614:	56                   	push   %esi
52c615:	57                   	push   %edi
52c616:	8b f9                	mov    %ecx,%edi
52c618:	8b f2                	mov    %edx,%esi
52c61a:	8b d8                	mov    %eax,%ebx
52c61c:	8b c3                	mov    %ebx,%eax
52c61e:	e8 85 ff ff ff       	call   0x52c5a8
52c623:	c7 83 ac 16 00 00 08 	movl   $0x8,0x16ac(%ebx)
52c62a:	00 00 00
52c62d:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
52c631:	74 69                	je     0x52c69c
52c633:	8b 53 14             	mov    0x14(%ebx),%edx
52c636:	8b c7                	mov    %edi,%eax
52c638:	ff 43 14             	incl   0x14(%ebx)
52c63b:	8b 4b 08             	mov    0x8(%ebx),%ecx
52c63e:	8d 14 11             	lea    (%ecx,%edx,1),%edx
52c641:	8b c8                	mov    %eax,%ecx
52c643:	52                   	push   %edx
52c644:	80 e1 ff             	and    $0xff,%cl
52c647:	5a                   	pop    %edx
52c648:	f6 d0                	not    %al
52c64a:	88 0a                	mov    %cl,(%edx)
52c64c:	24 ff                	and    $0xff,%al
52c64e:	8b 4b 14             	mov    0x14(%ebx),%ecx
52c651:	ff 43 14             	incl   0x14(%ebx)
52c654:	8b 53 08             	mov    0x8(%ebx),%edx
52c657:	8d 0c 0a             	lea    (%edx,%ecx,1),%ecx
52c65a:	0f b7 d7             	movzwl %di,%edx
52c65d:	51                   	push   %ecx
52c65e:	59                   	pop    %ecx
52c65f:	c1 fa 08             	sar    $0x8,%edx
52c662:	88 11                	mov    %dl,(%ecx)
52c664:	8b 53 14             	mov    0x14(%ebx),%edx
52c667:	ff 43 14             	incl   0x14(%ebx)
52c66a:	8b 4b 08             	mov    0x8(%ebx),%ecx
52c66d:	8d 14 11             	lea    (%ecx,%edx,1),%edx
52c670:	52                   	push   %edx
52c671:	59                   	pop    %ecx
52c672:	88 01                	mov    %al,(%ecx)
52c674:	8b cf                	mov    %edi,%ecx
52c676:	66 f7 d1             	not    %cx
52c679:	0f b7 c9             	movzwl %cx,%ecx
52c67c:	8b 43 14             	mov    0x14(%ebx),%eax
52c67f:	ff 43 14             	incl   0x14(%ebx)
52c682:	8b 53 08             	mov    0x8(%ebx),%edx
52c685:	c1 f9 08             	sar    $0x8,%ecx
52c688:	88 0c 02             	mov    %cl,(%edx,%eax,1)
52c68b:	eb 0f                	jmp    0x52c69c
52c68d:	8b 43 14             	mov    0x14(%ebx),%eax
52c690:	ff 43 14             	incl   0x14(%ebx)
52c693:	8b 53 08             	mov    0x8(%ebx),%edx
52c696:	8a 0e                	mov    (%esi),%cl
52c698:	88 0c 02             	mov    %cl,(%edx,%eax,1)
52c69b:	46                   	inc    %esi
52c69c:	8b c7                	mov    %edi,%eax
52c69e:	83 c7 ff             	add    $0xffffffff,%edi
52c6a1:	85 c0                	test   %eax,%eax
52c6a3:	75 e8                	jne    0x52c68d
52c6a5:	5f                   	pop    %edi
52c6a6:	5e                   	pop    %esi
52c6a7:	5b                   	pop    %ebx
52c6a8:	5d                   	pop    %ebp
52c6a9:	c2 04 00             	ret    $0x4
52c6ac:	53                   	push   %ebx
52c6ad:	56                   	push   %esi
52c6ae:	57                   	push   %edi
52c6af:	8b f8                	mov    %eax,%edi
52c6b1:	c1 ef 10             	shr    $0x10,%edi
52c6b4:	8b d8                	mov    %eax,%ebx
52c6b6:	81 e3 ff ff 00 00    	and    $0xffff,%ebx
52c6bc:	81 e7 ff ff 00 00    	and    $0xffff,%edi
52c6c2:	55                   	push   %ebp
52c6c3:	8b f2                	mov    %edx,%esi
52c6c5:	85 f6                	test   %esi,%esi
52c6c7:	8b e9                	mov    %ecx,%ebp
52c6c9:	75 0a                	jne    0x52c6d5
52c6cb:	b8 01 00 00 00       	mov    $0x1,%eax
52c6d0:	e9 fb 00 00 00       	jmp    0x52c7d0
52c6d5:	85 ed                	test   %ebp,%ebp
52c6d7:	0f 86 ec 00 00 00    	jbe    0x52c7c9
52c6dd:	81 fd b0 15 00 00    	cmp    $0x15b0,%ebp
52c6e3:	73 04                	jae    0x52c6e9
52c6e5:	8b c5                	mov    %ebp,%eax
52c6e7:	eb 05                	jmp    0x52c6ee
52c6e9:	b8 b0 15 00 00       	mov    $0x15b0,%eax
52c6ee:	2b e8                	sub    %eax,%ebp
52c6f0:	83 f8 10             	cmp    $0x10,%eax
52c6f3:	0f 8c 9e 00 00 00    	jl     0x52c797
52c6f9:	33 d2                	xor    %edx,%edx
52c6fb:	33 c9                	xor    %ecx,%ecx
52c6fd:	8a 16                	mov    (%esi),%dl
52c6ff:	8a 4e 01             	mov    0x1(%esi),%cl
52c702:	03 da                	add    %edx,%ebx
52c704:	33 d2                	xor    %edx,%edx
52c706:	03 fb                	add    %ebx,%edi
52c708:	03 d9                	add    %ecx,%ebx
52c70a:	8a 56 02             	mov    0x2(%esi),%dl
52c70d:	03 fb                	add    %ebx,%edi
52c70f:	03 da                	add    %edx,%ebx
52c711:	33 c9                	xor    %ecx,%ecx
52c713:	8a 4e 03             	mov    0x3(%esi),%cl
52c716:	03 fb                	add    %ebx,%edi
52c718:	03 d9                	add    %ecx,%ebx
52c71a:	33 d2                	xor    %edx,%edx
52c71c:	8a 56 04             	mov    0x4(%esi),%dl
52c71f:	03 fb                	add    %ebx,%edi
52c721:	03 da                	add    %edx,%ebx
52c723:	33 c9                	xor    %ecx,%ecx
52c725:	8a 4e 05             	mov    0x5(%esi),%cl
52c728:	03 fb                	add    %ebx,%edi
52c72a:	03 d9                	add    %ecx,%ebx
52c72c:	33 d2                	xor    %edx,%edx
52c72e:	8a 56 06             	mov    0x6(%esi),%dl
52c731:	03 fb                	add    %ebx,%edi
52c733:	03 da                	add    %edx,%ebx
52c735:	33 c9                	xor    %ecx,%ecx
52c737:	8a 4e 07             	mov    0x7(%esi),%cl
52c73a:	03 fb                	add    %ebx,%edi
52c73c:	03 d9                	add    %ecx,%ebx
52c73e:	33 d2                	xor    %edx,%edx
52c740:	8a 56 08             	mov    0x8(%esi),%dl
52c743:	03 fb                	add    %ebx,%edi
52c745:	03 da                	add    %edx,%ebx
52c747:	33 c9                	xor    %ecx,%ecx
52c749:	8a 4e 09             	mov    0x9(%esi),%cl
52c74c:	03 fb                	add    %ebx,%edi
52c74e:	03 d9                	add    %ecx,%ebx
52c750:	33 d2                	xor    %edx,%edx
52c752:	8a 56 0a             	mov    0xa(%esi),%dl
52c755:	03 fb                	add    %ebx,%edi
52c757:	03 da                	add    %edx,%ebx
52c759:	33 c9                	xor    %ecx,%ecx
52c75b:	8a 4e 0b             	mov    0xb(%esi),%cl
52c75e:	03 fb                	add    %ebx,%edi
52c760:	03 d9                	add    %ecx,%ebx
52c762:	33 d2                	xor    %edx,%edx
52c764:	8a 56 0c             	mov    0xc(%esi),%dl
52c767:	03 fb                	add    %ebx,%edi
52c769:	03 da                	add    %edx,%ebx
52c76b:	33 c9                	xor    %ecx,%ecx
52c76d:	8a 4e 0d             	mov    0xd(%esi),%cl
52c770:	03 fb                	add    %ebx,%edi
52c772:	03 d9                	add    %ecx,%ebx
52c774:	33 d2                	xor    %edx,%edx
52c776:	8a 56 0e             	mov    0xe(%esi),%dl
52c779:	03 fb                	add    %ebx,%edi
52c77b:	03 da                	add    %edx,%ebx
52c77d:	33 c9                	xor    %ecx,%ecx
52c77f:	8a 4e 0f             	mov    0xf(%esi),%cl
52c782:	03 fb                	add    %ebx,%edi
52c784:	03 d9                	add    %ecx,%ebx
52c786:	83 c6 10             	add    $0x10,%esi
52c789:	03 fb                	add    %ebx,%edi
52c78b:	83 e8 10             	sub    $0x10,%eax
52c78e:	83 f8 10             	cmp    $0x10,%eax
52c791:	0f 8d 62 ff ff ff    	jge    0x52c6f9
52c797:	85 c0                	test   %eax,%eax
52c799:	74 0c                	je     0x52c7a7
52c79b:	33 d2                	xor    %edx,%edx
52c79d:	8a 16                	mov    (%esi),%dl
52c79f:	03 da                	add    %edx,%ebx
52c7a1:	46                   	inc    %esi
52c7a2:	03 fb                	add    %ebx,%edi
52c7a4:	48                   	dec    %eax
52c7a5:	75 f4                	jne    0x52c79b
52c7a7:	b9 f1 ff 00 00       	mov    $0xfff1,%ecx
52c7ac:	8b c3                	mov    %ebx,%eax
52c7ae:	33 d2                	xor    %edx,%edx
52c7b0:	f7 f1                	div    %ecx
52c7b2:	89 d3                	mov    %edx,%ebx
52c7b4:	b9 f1 ff 00 00       	mov    $0xfff1,%ecx
52c7b9:	8b c7                	mov    %edi,%eax
52c7bb:	33 d2                	xor    %edx,%edx
52c7bd:	f7 f1                	div    %ecx
52c7bf:	89 d7                	mov    %edx,%edi
52c7c1:	85 ed                	test   %ebp,%ebp
52c7c3:	0f 87 14 ff ff ff    	ja     0x52c6dd
52c7c9:	8b c7                	mov    %edi,%eax
52c7cb:	c1 e0 10             	shl    $0x10,%eax
52c7ce:	0b c3                	or     %ebx,%eax
52c7d0:	5d                   	pop    %ebp
52c7d1:	5f                   	pop    %edi
52c7d2:	5e                   	pop    %esi
52c7d3:	5b                   	pop    %ebx
52c7d4:	c3                   	ret
52c7d5:	8d 40 00             	lea    0x0(%eax),%eax
52c7d8:	b8 a8 9c 69 00       	mov    $0x699ca8,%eax
52c7dd:	c3                   	ret
52c7de:	90                   	nop
52c7df:	90                   	nop
52c7e0:	53                   	push   %ebx
52c7e1:	56                   	push   %esi
52c7e2:	bb a8 9c 69 00       	mov    $0x699ca8,%ebx
52c7e7:	85 d2                	test   %edx,%edx
52c7e9:	75 05                	jne    0x52c7f0
52c7eb:	33 c0                	xor    %eax,%eax
52c7ed:	5e                   	pop    %esi
52c7ee:	5b                   	pop    %ebx
52c7ef:	c3                   	ret
52c7f0:	83 f0 ff             	xor    $0xffffffff,%eax
52c7f3:	83 f9 08             	cmp    $0x8,%ecx
52c7f6:	0f 82 bc 00 00 00    	jb     0x52c8b8
52c7fc:	0f b6 32             	movzbl (%edx),%esi
52c7ff:	33 f0                	xor    %eax,%esi
52c801:	42                   	inc    %edx
52c802:	81 e6 ff 00 00 00    	and    $0xff,%esi
52c808:	83 e9 08             	sub    $0x8,%ecx
52c80b:	c1 e8 08             	shr    $0x8,%eax
52c80e:	8b 34 b3             	mov    (%ebx,%esi,4),%esi
52c811:	33 f0                	xor    %eax,%esi
52c813:	8b c6                	mov    %esi,%eax
52c815:	0f b6 32             	movzbl (%edx),%esi
52c818:	33 f0                	xor    %eax,%esi
52c81a:	42                   	inc    %edx
52c81b:	81 e6 ff 00 00 00    	and    $0xff,%esi
52c821:	c1 e8 08             	shr    $0x8,%eax
52c824:	8b 34 b3             	mov    (%ebx,%esi,4),%esi
52c827:	33 f0                	xor    %eax,%esi
52c829:	8b c6                	mov    %esi,%eax
52c82b:	0f b6 32             	movzbl (%edx),%esi
52c82e:	33 f0                	xor    %eax,%esi
52c830:	42                   	inc    %edx
52c831:	81 e6 ff 00 00 00    	and    $0xff,%esi
52c837:	c1 e8 08             	shr    $0x8,%eax
52c83a:	8b 34 b3             	mov    (%ebx,%esi,4),%esi
52c83d:	33 f0                	xor    %eax,%esi
52c83f:	8b c6                	mov    %esi,%eax
52c841:	0f b6 32             	movzbl (%edx),%esi
52c844:	33 f0                	xor    %eax,%esi
52c846:	42                   	inc    %edx
52c847:	81 e6 ff 00 00 00    	and    $0xff,%esi
52c84d:	c1 e8 08             	shr    $0x8,%eax
52c850:	8b 34 b3             	mov    (%ebx,%esi,4),%esi
52c853:	33 f0                	xor    %eax,%esi
52c855:	8b c6                	mov    %esi,%eax
52c857:	0f b6 32             	movzbl (%edx),%esi
52c85a:	33 f0                	xor    %eax,%esi
52c85c:	42                   	inc    %edx
52c85d:	81 e6 ff 00 00 00    	and    $0xff,%esi
52c863:	c1 e8 08             	shr    $0x8,%eax
52c866:	8b 34 b3             	mov    (%ebx,%esi,4),%esi
52c869:	33 f0                	xor    %eax,%esi
52c86b:	8b c6                	mov    %esi,%eax
52c86d:	0f b6 32             	movzbl (%edx),%esi