53a563:	7d 1d                	jge    0x53a582
53a565:	8b 4c 24 20          	mov    0x20(%esp),%ecx
53a569:	b8 21 00 00 00       	mov    $0x21,%eax
53a56e:	2b c5                	sub    %ebp,%eax
53a570:	03 cd                	add    %ebp,%ecx
53a572:	03 4c 24 14          	add    0x14(%esp),%ecx
53a576:	50                   	push   %eax
53a577:	6a 00                	push   $0x0
53a579:	51                   	push   %ecx
53a57a:	e8 f1 86 09 00       	call   0x5d2c70
53a57f:	83 c4 0c             	add    $0xc,%esp
53a582:	8b 7c 24 44          	mov    0x44(%esp),%edi
53a586:	03 7c 24 24          	add    0x24(%esp),%edi
53a58a:	6a 08                	push   $0x8
53a58c:	8b 07                	mov    (%edi),%eax
53a58e:	ff 70 08             	push   0x8(%eax)
53a591:	56                   	push   %esi
53a592:	e8 d9 4e fc ff       	call   0x4ff470
53a597:	83 c4 0c             	add    $0xc,%esp
53a59a:	85 c0                	test   %eax,%eax
53a59c:	0f 84 f3 04 00 00    	je     0x53aa95
53a5a2:	8b 07                	mov    (%edi),%eax
53a5a4:	6a 08                	push   $0x8
53a5a6:	ff 70 0c             	push   0xc(%eax)
53a5a9:	8d 46 20             	lea    0x20(%esi),%eax
53a5ac:	50                   	push   %eax
53a5ad:	e8 be 4e fc ff       	call   0x4ff470
53a5b2:	83 c4 0c             	add    $0xc,%esp
53a5b5:	85 c0                	test   %eax,%eax
53a5b7:	0f 84 d8 04 00 00    	je     0x53aa95
53a5bd:	8b 07                	mov    (%edi),%eax
53a5bf:	6a 08                	push   $0x8
53a5c1:	ff 70 10             	push   0x10(%eax)
53a5c4:	8d 46 40             	lea    0x40(%esi),%eax
53a5c7:	50                   	push   %eax
53a5c8:	e8 a3 4e fc ff       	call   0x4ff470
53a5cd:	83 c4 0c             	add    $0xc,%esp
53a5d0:	85 c0                	test   %eax,%eax
53a5d2:	0f 84 bd 04 00 00    	je     0x53aa95
53a5d8:	6a 01                	push   $0x1
53a5da:	56                   	push   %esi
53a5db:	53                   	push   %ebx
53a5dc:	e8 9f 8a f0 ff       	call   0x443080
53a5e1:	8d 7e 60             	lea    0x60(%esi),%edi
53a5e4:	56                   	push   %esi
53a5e5:	57                   	push   %edi
53a5e6:	e8 75 8f f0 ff       	call   0x443560
53a5eb:	6a 02                	push   $0x2
53a5ed:	57                   	push   %edi
53a5ee:	53                   	push   %ebx
53a5ef:	e8 8c 8a f0 ff       	call   0x443080
53a5f4:	56                   	push   %esi
53a5f5:	8d ae c0 00 00 00    	lea    0xc0(%esi),%ebp
53a5fb:	57                   	push   %edi
53a5fc:	55                   	push   %ebp
53a5fd:	e8 5e 91 f0 ff       	call   0x443760
53a602:	6a 03                	push   $0x3
53a604:	55                   	push   %ebp
53a605:	53                   	push   %ebx
53a606:	e8 75 8a f0 ff       	call   0x443080
53a60b:	57                   	push   %edi
53a60c:	57                   	push   %edi
53a60d:	e8 4e 8f f0 ff       	call   0x443560
53a612:	83 c4 40             	add    $0x40,%esp
53a615:	6a 04                	push   $0x4
53a617:	57                   	push   %edi
53a618:	53                   	push   %ebx
53a619:	e8 62 8a f0 ff       	call   0x443080
53a61e:	55                   	push   %ebp
53a61f:	55                   	push   %ebp
53a620:	e8 3b 8f f0 ff       	call   0x443560
53a625:	6a 06                	push   $0x6
53a627:	55                   	push   %ebp
53a628:	53                   	push   %ebx
53a629:	e8 52 8a f0 ff       	call   0x443080
53a62e:	56                   	push   %esi
53a62f:	8d 9e 20 01 00 00    	lea    0x120(%esi),%ebx
53a635:	57                   	push   %edi
53a636:	53                   	push   %ebx
53a637:	e8 24 91 f0 ff       	call   0x443760
53a63c:	6a 05                	push   $0x5
53a63e:	53                   	push   %ebx
53a63f:	ff b4 24 90 00 00 00 	push   0x90(%esp)
53a646:	e8 35 8a f0 ff       	call   0x443080
53a64b:	56                   	push   %esi
53a64c:	8d be 80 01 00 00    	lea    0x180(%esi),%edi
53a652:	55                   	push   %ebp
53a653:	57                   	push   %edi
53a654:	e8 07 91 f0 ff       	call   0x443760
53a659:	83 c4 44             	add    $0x44,%esp
53a65c:	6a 07                	push   $0x7
53a65e:	57                   	push   %edi
53a65f:	ff 74 24 64          	push   0x64(%esp)
53a663:	e8 18 8a f0 ff       	call   0x443080
53a668:	8d 46 60             	lea    0x60(%esi),%eax
53a66b:	50                   	push   %eax
53a66c:	50                   	push   %eax
53a66d:	e8 ee 8e f0 ff       	call   0x443560
53a672:	6a 08                	push   $0x8
53a674:	8d 46 60             	lea    0x60(%esi),%eax
53a677:	50                   	push   %eax
53a678:	ff 74 24 78          	push   0x78(%esp)
53a67c:	e8 ff 89 f0 ff       	call   0x443080
53a681:	55                   	push   %ebp
53a682:	55                   	push   %ebp
53a683:	e8 d8 8e f0 ff       	call   0x443560
53a688:	6a 0c                	push   $0xc
53a68a:	55                   	push   %ebp
53a68b:	ff b4 24 8c 00 00 00 	push   0x8c(%esp)
53a692:	e8 e9 89 f0 ff       	call   0x443080
53a697:	53                   	push   %ebx
53a698:	53                   	push   %ebx
53a699:	e8 c2 8e f0 ff       	call   0x443560
53a69e:	6a 0a                	push   $0xa
53a6a0:	53                   	push   %ebx
53a6a1:	ff b4 24 a0 00 00 00 	push   0xa0(%esp)
53a6a8:	e8 d3 89 f0 ff       	call   0x443080
53a6ad:	83 c4 48             	add    $0x48,%esp
53a6b0:	57                   	push   %edi
53a6b1:	57                   	push   %edi
53a6b2:	e8 a9 8e f0 ff       	call   0x443560
53a6b7:	6a 0e                	push   $0xe
53a6b9:	57                   	push   %edi
53a6ba:	ff 74 24 6c          	push   0x6c(%esp)
53a6be:	e8 bd 89 f0 ff       	call   0x443080
53a6c3:	56                   	push   %esi
53a6c4:	55                   	push   %ebp
53a6c5:	55                   	push   %ebp
53a6c6:	e8 95 90 f0 ff       	call   0x443760
53a6cb:	6a 0d                	push   $0xd
53a6cd:	55                   	push   %ebp
53a6ce:	ff b4 24 84 00 00 00 	push   0x84(%esp)
53a6d5:	e8 a6 89 f0 ff       	call   0x443080
53a6da:	56                   	push   %esi
53a6db:	53                   	push   %ebx
53a6dc:	53                   	push   %ebx
53a6dd:	e8 7e 90 f0 ff       	call   0x443760
53a6e2:	6a 0b                	push   $0xb
53a6e4:	53                   	push   %ebx
53a6e5:	8b 9c 24 9c 00 00 00 	mov    0x9c(%esp),%ebx
53a6ec:	53                   	push   %ebx
53a6ed:	e8 8e 89 f0 ff       	call   0x443080
53a6f2:	83 c4 44             	add    $0x44,%esp
53a6f5:	56                   	push   %esi
53a6f6:	57                   	push   %edi
53a6f7:	57                   	push   %edi
53a6f8:	e8 63 90 f0 ff       	call   0x443760
53a6fd:	6a 0f                	push   $0xf
53a6ff:	57                   	push   %edi
53a700:	53                   	push   %ebx
53a701:	e8 7a 89 f0 ff       	call   0x443080
53a706:	56                   	push   %esi
53a707:	8d 5e 60             	lea    0x60(%esi),%ebx
53a70a:	53                   	push   %ebx
53a70b:	55                   	push   %ebp
53a70c:	e8 4f 90 f0 ff       	call   0x443760
53a711:	6a 09                	push   $0x9
53a713:	55                   	push   %ebp
53a714:	ff b4 24 88 00 00 00 	push   0x88(%esp)
53a71b:	e8 60 89 f0 ff       	call   0x443080
53a720:	53                   	push   %ebx
53a721:	53                   	push   %ebx
53a722:	e8 39 8e f0 ff       	call   0x443560
53a727:	6a 10                	push   $0x10
53a729:	53                   	push   %ebx
53a72a:	8b 9c 24 9c 00 00 00 	mov    0x9c(%esp),%ebx
53a731:	53                   	push   %ebx
53a732:	e8 49 89 f0 ff       	call   0x443080
53a737:	8b 6c 24 6c          	mov    0x6c(%esp),%ebp
53a73b:	81 c3 00 06 00 00    	add    $0x600,%ebx
53a741:	8b 7c 24 68          	mov    0x68(%esp),%edi
53a745:	45                   	inc    %ebp
53a746:	83 44 24 64 21       	addl   $0x21,0x64(%esp)
53a74b:	83 c7 04             	add    $0x4,%edi
53a74e:	83 c4 44             	add    $0x44,%esp
53a751:	89 6c 24 28          	mov    %ebp,0x28(%esp)
53a755:	3b 6c 24 1c          	cmp    0x1c(%esp),%ebp
53a759:	8b 6c 24 60          	mov    0x60(%esp),%ebp
53a75d:	89 5c 24 5c          	mov    %ebx,0x5c(%esp)
53a761:	89 7c 24 24          	mov    %edi,0x24(%esp)
53a765:	0f 82 15 fd ff ff    	jb     0x53a480
53a76b:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
53a76f:	8b 44 24 14          	mov    0x14(%esp),%eax
53a773:	bd ff 00 00 00       	mov    $0xff,%ebp
53a778:	89 6c 24 28          	mov    %ebp,0x28(%esp)
53a77c:	0f b6 48 1f          	movzbl 0x1f(%eax),%ecx
53a780:	c1 e9 06             	shr    $0x6,%ecx
53a783:	8b c1                	mov    %ecx,%eax
53a785:	83 e1 01             	and    $0x1,%ecx
53a788:	d1 e8                	shr    $1,%eax
53a78a:	03 c1                	add    %ecx,%eax
53a78c:	50                   	push   %eax
53a78d:	ff 74 24 1c          	push   0x1c(%esp)
53a791:	56                   	push   %esi
53a792:	e8 39 89 f0 ff       	call   0x4430d0
53a797:	0f 10 06             	movups (%esi),%xmm0
53a79a:	8b 5c 24 5c          	mov    0x5c(%esp),%ebx
53a79e:	83 c4 0c             	add    $0xc,%esp
53a7a1:	0f 11 03             	movups %xmm0,(%ebx)
53a7a4:	0f 10 46 10          	movups 0x10(%esi),%xmm0
53a7a8:	0f 11 43 10          	movups %xmm0,0x10(%ebx)
53a7ac:	0f 10 46 20          	movups 0x20(%esi),%xmm0
53a7b0:	0f 11 43 20          	movups %xmm0,0x20(%ebx)
53a7b4:	0f 10 46 30          	movups 0x30(%esi),%xmm0
53a7b8:	0f 11 43 30          	movups %xmm0,0x30(%ebx)
53a7bc:	0f 10 46 40          	movups 0x40(%esi),%xmm0
53a7c0:	0f 11 43 40          	movups %xmm0,0x40(%ebx)
53a7c4:	0f 10 46 50          	movups 0x50(%esi),%xmm0
53a7c8:	0f 11 43 50          	movups %xmm0,0x50(%ebx)
53a7cc:	0f 1f 40 00          	nopl   0x0(%eax)
53a7d0:	33 c0                	xor    %eax,%eax
53a7d2:	81 fd ff 00 00 00    	cmp    $0xff,%ebp
53a7d8:	0f 94 c0             	sete   %al
53a7db:	3b c7                	cmp    %edi,%eax
53a7dd:	0f 83 55 01 00 00    	jae    0x53a938
53a7e3:	8d 55 ff             	lea    -0x1(%ebp),%edx
53a7e6:	8b e8                	mov    %eax,%ebp
53a7e8:	8b ca                	mov    %edx,%ecx
53a7ea:	c1 e5 05             	shl    $0x5,%ebp
53a7ed:	83 e1 07             	and    $0x7,%ecx
53a7f0:	c1 ea 03             	shr    $0x3,%edx
53a7f3:	89 4c 24 44          	mov    %ecx,0x44(%esp)
53a7f7:	03 e8                	add    %eax,%ebp
53a7f9:	69 c8 00 06 00 00    	imul   $0x600,%eax,%ecx
53a7ff:	89 54 24 40          	mov    %edx,0x40(%esp)
53a803:	03 4c 24 18          	add    0x18(%esp),%ecx
53a807:	2b f8                	sub    %eax,%edi
53a809:	89 4c 24 5c          	mov    %ecx,0x5c(%esp)
53a80d:	89 7c 24 30          	mov    %edi,0x30(%esp)
53a811:	8b 4c 24 14          	mov    0x14(%esp),%ecx
53a815:	8d 04 2a             	lea    (%edx,%ebp,1),%eax
53a818:	0f b6 7c 08 01       	movzbl 0x1(%eax,%ecx,1),%edi
53a81d:	0f b6 04 08          	movzbl (%eax,%ecx,1),%eax
53a821:	8b 4c 24 44          	mov    0x44(%esp),%ecx
53a825:	c1 e7 08             	shl    $0x8,%edi
53a828:	0b f8                	or     %eax,%edi
53a82a:	d3 ef                	shr    %cl,%edi
53a82c:	b9 3f 00 00 00       	mov    $0x3f,%ecx
53a831:	83 e7 3f             	and    $0x3f,%edi
53a834:	8b c7                	mov    %edi,%eax
53a836:	2b cf                	sub    %edi,%ecx
53a838:	c1 e8 05             	shr    $0x5,%eax
53a83b:	48                   	dec    %eax
53a83c:	8b d0                	mov    %eax,%edx
53a83e:	23 c7                	and    %edi,%eax
53a840:	f7 d2                	not    %edx
53a842:	23 ca                	and    %edx,%ecx
53a844:	83 e2 01             	and    $0x1,%edx
53a847:	0b c8                	or     %eax,%ecx
53a849:	8b c1                	mov    %ecx,%eax
53a84b:	83 e1 01             	and    $0x1,%ecx
53a84e:	d1 e8                	shr    $1,%eax
53a850:	03 c1                	add    %ecx,%eax
53a852:	8d 3c 42             	lea    (%edx,%eax,2),%edi
53a855:	8b c7                	mov    %edi,%eax
53a857:	d1 e8                	shr    $1,%eax
53a859:	50                   	push   %eax
53a85a:	ff 74 24 60          	push   0x60(%esp)
53a85e:	56                   	push   %esi
53a85f:	e8 6c 88 f0 ff       	call   0x4430d0
53a864:	8d 46 20             	lea    0x20(%esi),%eax
53a867:	50                   	push   %eax
53a868:	8d 86 80 00 00 00    	lea    0x80(%esi),%eax
53a86e:	50                   	push   %eax
53a86f:	e8 2c 7b f0 ff       	call   0x4423a0
53a874:	8b 46 20             	mov    0x20(%esi),%eax
53a877:	83 e7 01             	and    $0x1,%edi
53a87a:	f7 df                	neg    %edi
53a87c:	8b d7                	mov    %edi,%edx
53a87e:	8b cf                	mov    %edi,%ecx
53a880:	23 8e 80 00 00 00    	and    0x80(%esi),%ecx
53a886:	f7 d2                	not    %edx
53a888:	23 c2                	and    %edx,%eax
53a88a:	33 c8                	xor    %eax,%ecx
53a88c:	89 4e 20             	mov    %ecx,0x20(%esi)
53a88f:	8b ca                	mov    %edx,%ecx
53a891:	23 4e 24             	and    0x24(%esi),%ecx
53a894:	8b 86 84 00 00 00    	mov    0x84(%esi),%eax
53a89a:	23 c7                	and    %edi,%eax
53a89c:	33 c8                	xor    %eax,%ecx
53a89e:	8b c2                	mov    %edx,%eax
53a8a0:	89 4e 24             	mov    %ecx,0x24(%esi)
53a8a3:	8b cf                	mov    %edi,%ecx
53a8a5:	23 8e 88 00 00 00    	and    0x88(%esi),%ecx
53a8ab:	23 46 28             	and    0x28(%esi),%eax
53a8ae:	33 c8                	xor    %eax,%ecx
53a8b0:	8b c7                	mov    %edi,%eax
53a8b2:	89 4e 28             	mov    %ecx,0x28(%esi)
53a8b5:	8b ca                	mov    %edx,%ecx
53a8b7:	23 4e 2c             	and    0x2c(%esi),%ecx
53a8ba:	23 86 8c 00 00 00    	and    0x8c(%esi),%eax
53a8c0:	33 c8                	xor    %eax,%ecx
53a8c2:	89 4e 2c             	mov    %ecx,0x2c(%esi)
53a8c5:	8b 8e 90 00 00 00    	mov    0x90(%esi),%ecx
53a8cb:	8b 46 30             	mov    0x30(%esi),%eax
53a8ce:	23 cf                	and    %edi,%ecx
53a8d0:	23 c2                	and    %edx,%eax
53a8d2:	33 c8                	xor    %eax,%ecx
53a8d4:	89 4e 30             	mov    %ecx,0x30(%esi)
53a8d7:	8b 4e 34             	mov    0x34(%esi),%ecx
53a8da:	8b 86 94 00 00 00    	mov    0x94(%esi),%eax
53a8e0:	23 ca                	and    %edx,%ecx
53a8e2:	23 c7                	and    %edi,%eax
53a8e4:	33 c8                	xor    %eax,%ecx
53a8e6:	89 4e 34             	mov    %ecx,0x34(%esi)
53a8e9:	8b 4e 38             	mov    0x38(%esi),%ecx
53a8ec:	8b 86 98 00 00 00    	mov    0x98(%esi),%eax
53a8f2:	23 ca                	and    %edx,%ecx
53a8f4:	23 c7                	and    %edi,%eax
53a8f6:	33 c8                	xor    %eax,%ecx
53a8f8:	89 4e 38             	mov    %ecx,0x38(%esi)
53a8fb:	8b 46 3c             	mov    0x3c(%esi),%eax
53a8fe:	23 be 9c 00 00 00    	and    0x9c(%esi),%edi
53a904:	23 c2                	and    %edx,%eax
53a906:	56                   	push   %esi
53a907:	33 c7                	xor    %edi,%eax
53a909:	53                   	push   %ebx
53a90a:	53                   	push   %ebx
53a90b:	89 46 3c             	mov    %eax,0x3c(%esi)
53a90e:	e8 4d 8e f0 ff       	call   0x443760
53a913:	81 44 24 7c 00 06 00 	addl   $0x600,0x7c(%esp)
53a91a:	00
53a91b:	8d 6d 21             	lea    0x21(%ebp),%ebp
53a91e:	8b 54 24 60          	mov    0x60(%esp),%edx
53a922:	83 c4 20             	add    $0x20,%esp
53a925:	83 6c 24 30 01       	subl   $0x1,0x30(%esp)
53a92a:	0f 85 e1 fe ff ff    	jne    0x53a811
53a930:	8b 6c 24 28          	mov    0x28(%esp),%ebp
53a934:	8b 7c 24 1c          	mov    0x1c(%esp),%edi
53a938:	53                   	push   %ebx
53a939:	83 ed 05             	sub    $0x5,%ebp
53a93c:	53                   	push   %ebx
53a93d:	89 6c 24 30          	mov    %ebp,0x30(%esp)
53a941:	e8 1a 8c f0 ff       	call   0x443560
53a946:	53                   	push   %ebx
53a947:	53                   	push   %ebx
53a948:	e8 13 8c f0 ff       	call   0x443560
53a94d:	53                   	push   %ebx
53a94e:	53                   	push   %ebx
53a94f:	e8 0c 8c f0 ff       	call   0x443560
53a954:	53                   	push   %ebx
53a955:	53                   	push   %ebx
53a956:	e8 05 8c f0 ff       	call   0x443560
53a95b:	53                   	push   %ebx
53a95c:	53                   	push   %ebx
53a95d:	e8 fe 8b f0 ff       	call   0x443560
53a962:	83 c4 28             	add    $0x28,%esp
53a965:	83 fd 05             	cmp    $0x5,%ebp
53a968:	0f 83 62 fe ff ff    	jae    0x53a7d0
53a96e:	85 ff                	test   %edi,%edi