5103c5:	57                   	push   %edi
5103c6:	e8 c5 0a 00 00       	call   0x510e90
5103cb:	6a 00                	push   $0x0
5103cd:	6a 00                	push   $0x0
5103cf:	6a 00                	push   $0x0
5103d1:	6a 00                	push   $0x0
5103d3:	56                   	push   %esi
5103d4:	55                   	push   %ebp
5103d5:	53                   	push   %ebx
5103d6:	e8 55 07 00 00       	call   0x510b30
5103db:	83 c4 20             	add    $0x20,%esp
5103de:	85 c0                	test   %eax,%eax
5103e0:	0f 84 6e 01 00 00    	je     0x510554
5103e6:	66 8b 4b 14          	mov    0x14(%ebx),%cx
5103ea:	b8 01 00 00 00       	mov    $0x1,%eax
5103ef:	66 83 e1 01          	and    $0x1,%cx
5103f3:	0f 45 c6             	cmovne %esi,%eax
5103f6:	89 44 24 10          	mov    %eax,0x10(%esp)
5103fa:	33 c0                	xor    %eax,%eax
5103fc:	66 85 c9             	test   %cx,%cx
5103ff:	0f 45 c5             	cmovne %ebp,%eax
510402:	8b e8                	mov    %eax,%ebp
510404:	89 6c 24 28          	mov    %ebp,0x28(%esp)
510408:	eb 08                	jmp    0x510412
51040a:	c7 44 24 10 00 00 00 	movl   $0x0,0x10(%esp)
510411:	00
510412:	8d 5f 38             	lea    0x38(%edi),%ebx
510415:	ba 10 00 00 00       	mov    $0x10,%edx
51041a:	b9 01 00 00 00       	mov    $0x1,%ecx
51041f:	90                   	nop
510420:	0f b6 44 1a ff       	movzbl -0x1(%edx,%ebx,1),%eax
510425:	4a                   	dec    %edx
510426:	03 c8                	add    %eax,%ecx
510428:	88 0c 1a             	mov    %cl,(%edx,%ebx,1)
51042b:	c1 e9 08             	shr    $0x8,%ecx
51042e:	85 d2                	test   %edx,%edx
510430:	75 ee                	jne    0x510420
510432:	8b 74 24 24          	mov    0x24(%esp),%esi
510436:	85 f6                	test   %esi,%esi
510438:	75 46                	jne    0x510480
51043a:	ba 10 00 00 00       	mov    $0x10,%edx
51043f:	b9 01 00 00 00       	mov    $0x1,%ecx
510444:	0f b6 44 1a ff       	movzbl -0x1(%edx,%ebx,1),%eax
510449:	4a                   	dec    %edx
51044a:	03 c8                	add    %eax,%ecx
51044c:	88 0c 1a             	mov    %cl,(%edx,%ebx,1)
51044f:	c1 e9 08             	shr    $0x8,%ecx
510452:	85 d2                	test   %edx,%edx
510454:	75 ee                	jne    0x510444
510456:	52                   	push   %edx
510457:	52                   	push   %edx
510458:	52                   	push   %edx
510459:	52                   	push   %edx
51045a:	ff 74 24 20          	push   0x20(%esp)
51045e:	55                   	push   %ebp
51045f:	ff 74 24 34          	push   0x34(%esp)
510463:	e8 c8 06 00 00       	call   0x510b30
510468:	83 c4 1c             	add    $0x1c,%esp
51046b:	85 c0                	test   %eax,%eax
51046d:	0f 84 e1 00 00 00    	je     0x510554
510473:	5f                   	pop    %edi
510474:	5e                   	pop    %esi
510475:	5d                   	pop    %ebp
510476:	b8 01 00 00 00       	mov    $0x1,%eax
51047b:	5b                   	pop    %ebx
51047c:	83 c4 08             	add    $0x8,%esp
51047f:	c3                   	ret
510480:	8b 6c 24 20          	mov    0x20(%esp),%ebp
510484:	56                   	push   %esi
510485:	6a 00                	push   $0x0
510487:	55                   	push   %ebp
510488:	e8 e3 27 0c 00       	call   0x5d2c70
51048d:	83 c4 0c             	add    $0xc,%esp
510490:	6a ff                	push   $0xffffffff
510492:	53                   	push   %ebx
510493:	6a 00                	push   $0x0
510495:	6a 00                	push   $0x0
510497:	6a 00                	push   $0x0
510499:	ff 77 04             	push   0x4(%edi)
51049c:	e8 4f c1 fc ff       	call   0x4dc5f0
5104a1:	83 c4 18             	add    $0x18,%esp
5104a4:	85 c0                	test   %eax,%eax
5104a6:	0f 84 a8 00 00 00    	je     0x510554
5104ac:	81 7c 24 24 00 00 00 	cmpl   $0x40000000,0x24(%esp)
5104b3:	40
5104b4:	b8 00 00 00 40       	mov    $0x40000000,%eax
5104b9:	8b 7f 44             	mov    0x44(%edi),%edi
5104bc:	0f 47 f0             	cmova  %eax,%esi
5104bf:	0f cf                	bswap  %edi
5104c1:	8d 46 0f             	lea    0xf(%esi),%eax
5104c4:	99                   	cltd
5104c5:	83 e2 0f             	and    $0xf,%edx
5104c8:	03 c2                	add    %edx,%eax
5104ca:	c1 f8 04             	sar    $0x4,%eax
5104cd:	03 f8                	add    %eax,%edi
5104cf:	3b f8                	cmp    %eax,%edi
5104d1:	73 30                	jae    0x510503
5104d3:	85 ff                	test   %edi,%edi
5104d5:	74 07                	je     0x5104de
5104d7:	8b f0                	mov    %eax,%esi
5104d9:	2b f7                	sub    %edi,%esi
5104db:	c1 e6 04             	shl    $0x4,%esi
5104de:	33 c0                	xor    %eax,%eax
5104e0:	ba 0c 00 00 00       	mov    $0xc,%edx
5104e5:	85 ff                	test   %edi,%edi
5104e7:	0f 44 c7             	cmove  %edi,%eax
5104ea:	8b f8                	mov    %eax,%edi
5104ec:	b8 01 00 00 00       	mov    $0x1,%eax
5104f1:	0f b6 4c 1a ff       	movzbl -0x1(%edx,%ebx,1),%ecx
5104f6:	4a                   	dec    %edx
5104f7:	03 c1                	add    %ecx,%eax
5104f9:	88 04 1a             	mov    %al,(%edx,%ebx,1)
5104fc:	c1 e8 08             	shr    $0x8,%eax
5104ff:	85 d2                	test   %edx,%edx
510501:	75 ee                	jne    0x5104f1
510503:	8b 44 24 1c          	mov    0x1c(%esp),%eax
510507:	8d 4c 24 14          	lea    0x14(%esp),%ecx
51050b:	56                   	push   %esi
51050c:	55                   	push   %ebp
51050d:	0f cf                	bswap  %edi
51050f:	51                   	push   %ecx
510510:	89 b8 b0 00 00 00    	mov    %edi,0xb0(%eax)
510516:	8d 78 6c             	lea    0x6c(%eax),%edi
510519:	55                   	push   %ebp
51051a:	ff 77 04             	push   0x4(%edi)
51051d:	e8 4e c4 fc ff       	call   0x4dc970
510522:	83 c4 14             	add    $0x14,%esp
510525:	85 c0                	test   %eax,%eax
510527:	74 2b                	je     0x510554
510529:	39 74 24 14          	cmp    %esi,0x14(%esp)
51052d:	75 25                	jne    0x510554
51052f:	03 ee                	add    %esi,%ebp
510531:	29 74 24 24          	sub    %esi,0x24(%esp)
510535:	8b 74 24 24          	mov    0x24(%esp),%esi
510539:	0f 85 51 ff ff ff    	jne    0x510490
51053f:	6a 00                	push   $0x0
510541:	6a 00                	push   $0x0
510543:	6a 00                	push   $0x0
510545:	6a 00                	push   $0x0
510547:	ff 74 24 20          	push   0x20(%esp)
51054b:	ff 74 24 3c          	push   0x3c(%esp)
51054f:	e9 0b ff ff ff       	jmp    0x51045f
510554:	5f                   	pop    %edi
510555:	5e                   	pop    %esi
510556:	5d                   	pop    %ebp
510557:	33 c0                	xor    %eax,%eax
510559:	5b                   	pop    %ebx
51055a:	83 c4 08             	add    $0x8,%esp
51055d:	c3                   	ret
51055e:	cc                   	int3
51055f:	cc                   	int3
510560:	56                   	push   %esi
510561:	8b 74 24 08          	mov    0x8(%esp),%esi
510565:	57                   	push   %edi
510566:	ff 76 6c             	push   0x6c(%esi)
510569:	8d 7e 6c             	lea    0x6c(%esi),%edi
51056c:	e8 7f be fc ff       	call   0x4dc3f0
510571:	ff 76 70             	push   0x70(%esi)
510574:	e8 77 be fc ff       	call   0x4dc3f0
510579:	ff 76 74             	push   0x74(%esi)
51057c:	e8 6f be fc ff       	call   0x4dc3f0
510581:	68 8c 00 00 00       	push   $0x8c
510586:	57                   	push   %edi
510587:	e8 54 14 ef ff       	call   0x4019e0
51058c:	83 c4 14             	add    $0x14,%esp
51058f:	b8 01 00 00 00       	mov    $0x1,%eax
510594:	5f                   	pop    %edi
510595:	5e                   	pop    %esi
510596:	c3                   	ret
510597:	cc                   	int3
510598:	cc                   	int3
510599:	cc                   	int3
51059a:	cc                   	int3
51059b:	cc                   	int3
51059c:	cc                   	int3
51059d:	cc                   	int3
51059e:	cc                   	int3
51059f:	cc                   	int3
5105a0:	b8 08 00 00 00       	mov    $0x8,%eax
5105a5:	e8 06 12 0c 00       	call   0x5d17b0
5105aa:	53                   	push   %ebx
5105ab:	8b 5c 24 14          	mov    0x14(%esp),%ebx
5105af:	33 c9                	xor    %ecx,%ecx
5105b1:	57                   	push   %edi
5105b2:	8b 7c 24 20          	mov    0x20(%esp),%edi
5105b6:	c7 44 24 08 10 00 00 	movl   $0x10,0x8(%esp)
5105bd:	00
5105be:	85 ff                	test   %edi,%edi
5105c0:	0f 8e ad 00 00 00    	jle    0x510673
5105c6:	56                   	push   %esi
5105c7:	8b 74 24 20          	mov    0x20(%esp),%esi
5105cb:	83 ff 40             	cmp    $0x40,%edi
5105ce:	0f 82 87 00 00 00    	jb     0x51065b
5105d4:	8d 47 ff             	lea    -0x1(%edi),%eax
5105d7:	8d 57 ff             	lea    -0x1(%edi),%edx
5105da:	03 c6                	add    %esi,%eax
5105dc:	03 d3                	add    %ebx,%edx
5105de:	3b d8                	cmp    %eax,%ebx
5105e0:	77 04                	ja     0x5105e6
5105e2:	3b d6                	cmp    %esi,%edx
5105e4:	73 75                	jae    0x51065b
5105e6:	8b c7                	mov    %edi,%eax
5105e8:	8d 56 30             	lea    0x30(%esi),%edx
5105eb:	83 e0 c0             	and    $0xffffffc0,%eax
5105ee:	8b fe                	mov    %esi,%edi
5105f0:	89 44 24 10          	mov    %eax,0x10(%esp)
5105f4:	2b fb                	sub    %ebx,%edi
5105f6:	8d 43 10             	lea    0x10(%ebx),%eax
5105f9:	55                   	push   %ebp
5105fa:	66 0f 1f 44 00 00    	nopw   0x0(%eax,%eax,1)
510600:	0f 10 40 f0          	movups -0x10(%eax),%xmm0
510604:	83 c1 40             	add    $0x40,%ecx
510607:	8d 52 40             	lea    0x40(%edx),%edx
51060a:	8d 40 40             	lea    0x40(%eax),%eax
51060d:	8b e9                	mov    %ecx,%ebp
51060f:	0f 10 4a 90          	movups -0x70(%edx),%xmm1
510613:	66 0f ef c8          	pxor   %xmm0,%xmm1
510617:	0f 11 48 b0          	movups %xmm1,-0x50(%eax)
51061b:	0f 10 40 c0          	movups -0x40(%eax),%xmm0
51061f:	0f 10 4c 07 c0       	movups -0x40(%edi,%eax,1),%xmm1
510624:	66 0f ef c8          	pxor   %xmm0,%xmm1
510628:	0f 11 48 c0          	movups %xmm1,-0x40(%eax)
51062c:	0f 10 40 d0          	movups -0x30(%eax),%xmm0
510630:	0f 10 4a b0          	movups -0x50(%edx),%xmm1
510634:	66 0f ef c8          	pxor   %xmm0,%xmm1
510638:	0f 10 42 c0          	movups -0x40(%edx),%xmm0
51063c:	0f 11 48 d0          	movups %xmm1,-0x30(%eax)
510640:	0f 10 48 e0          	movups -0x20(%eax),%xmm1
510644:	66 0f ef c8          	pxor   %xmm0,%xmm1
510648:	0f 11 48 e0          	movups %xmm1,-0x20(%eax)
51064c:	3b 4c 24 14          	cmp    0x14(%esp),%ecx
510650:	7c ae                	jl     0x510600
510652:	8b 7c 24 28          	mov    0x28(%esp),%edi
510656:	3b ef                	cmp    %edi,%ebp
510658:	5d                   	pop    %ebp
510659:	7d 17                	jge    0x510672
51065b:	8b d7                	mov    %edi,%edx
51065d:	8d 04 19             	lea    (%ecx,%ebx,1),%eax
510660:	2b f3                	sub    %ebx,%esi
510662:	2b d1                	sub    %ecx,%edx
510664:	8a 0c 30             	mov    (%eax,%esi,1),%cl
510667:	8d 40 01             	lea    0x1(%eax),%eax
51066a:	30 48 ff             	xor    %cl,-0x1(%eax)
51066d:	83 ea 01             	sub    $0x1,%edx
510670:	75 f2                	jne    0x510664
510672:	5e                   	pop    %esi
510673:	57                   	push   %edi
510674:	53                   	push   %ebx
510675:	8d 44 24 10          	lea    0x10(%esp),%eax
510679:	50                   	push   %eax
51067a:	8b 44 24 20          	mov    0x20(%esp),%eax
51067e:	53                   	push   %ebx
51067f:	ff 70 08             	push   0x8(%eax)
510682:	e8 e9 c2 fc ff       	call   0x4dc970
510687:	83 c4 14             	add    $0x14,%esp
51068a:	85 c0                	test   %eax,%eax
51068c:	74 11                	je     0x51069f
51068e:	39 7c 24 08          	cmp    %edi,0x8(%esp)
510692:	75 0b                	jne    0x51069f
510694:	5f                   	pop    %edi
510695:	b8 01 00 00 00       	mov    $0x1,%eax
51069a:	5b                   	pop    %ebx
51069b:	83 c4 08             	add    $0x8,%esp
51069e:	c3                   	ret
51069f:	5f                   	pop    %edi
5106a0:	33 c0                	xor    %eax,%eax
5106a2:	5b                   	pop    %ebx
5106a3:	83 c4 08             	add    $0x8,%esp
5106a6:	c3                   	ret
5106a7:	cc                   	int3
5106a8:	cc                   	int3
5106a9:	cc                   	int3
5106aa:	cc                   	int3
5106ab:	cc                   	int3
5106ac:	cc                   	int3
5106ad:	cc                   	int3
5106ae:	cc                   	int3
5106af:	cc                   	int3
5106b0:	b8 34 00 00 00       	mov    $0x34,%eax
5106b5:	e8 f6 10 0c 00       	call   0x5d17b0
5106ba:	a1 c0 14 69 00       	mov    0x6914c0,%eax
5106bf:	33 c4                	xor    %esp,%eax
5106c1:	89 44 24 30          	mov    %eax,0x30(%esp)
5106c5:	8b 44 24 3c          	mov    0x3c(%esp),%eax
5106c9:	8b 4c 24 38          	mov    0x38(%esp),%ecx
5106cd:	0f 10 00             	movups (%eax),%xmm0
5106d0:	83 79 14 10          	cmpl   $0x10,0x14(%ecx)
5106d4:	0f 11 04 24          	movups %xmm0,(%esp)
5106d8:	0f 10 00             	movups (%eax),%xmm0
5106db:	0f 11 44 24 10       	movups %xmm0,0x10(%esp)
5106e0:	74 08                	je     0x5106ea
5106e2:	0f 10 00             	movups (%eax),%xmm0
5106e5:	0f 11 44 24 20       	movups %xmm0,0x20(%esp)
5106ea:	56                   	push   %esi
5106eb:	b8 30 00 00 00       	mov    $0x30,%eax
5106f0:	be 20 00 00 00       	mov    $0x20,%esi
5106f5:	0f 44 c6             	cmove  %esi,%eax
5106f8:	50                   	push   %eax
5106f9:	8d 44 24 08          	lea    0x8(%esp),%eax
5106fd:	50                   	push   %eax
5106fe:	8d 41 5c             	lea    0x5c(%ecx),%eax
510701:	50                   	push   %eax
510702:	51                   	push   %ecx
510703:	e8 98 fe ff ff       	call   0x5105a0
510708:	8b 4c 24 44          	mov    0x44(%esp),%ecx
51070c:	83 c4 10             	add    $0x10,%esp
51070f:	5e                   	pop    %esi
510710:	33 cc                	xor    %esp,%ecx
510712:	e8 0f 13 0c 00       	call   0x5d1a26
510717:	83 c4 34             	add    $0x34,%esp
51071a:	c3                   	ret
51071b:	cc                   	int3
51071c:	cc                   	int3
51071d:	cc                   	int3
51071e:	cc                   	int3
51071f:	cc                   	int3
510720:	b8 34 00 00 00       	mov    $0x34,%eax
510725:	e8 86 10 0c 00       	call   0x5d17b0
51072a:	a1 c0 14 69 00       	mov    0x6914c0,%eax
51072f:	33 c4                	xor    %esp,%eax
510731:	89 44 24 30          	mov    %eax,0x30(%esp)
510735:	53                   	push   %ebx
510736:	8b 5c 24 3c          	mov    0x3c(%esp),%ebx
51073a:	55                   	push   %ebp
51073b:	56                   	push   %esi
51073c:	8b 74 24 48          	mov    0x48(%esp),%esi
510740:	57                   	push   %edi
510741:	85 f6                	test   %esi,%esi
510743:	0f 84 bc 00 00 00    	je     0x510805
510749:	8b 7c 24 50          	mov    0x50(%esp),%edi
51074d:	85 ff                	test   %edi,%edi
51074f:	0f 84 b0 00 00 00    	je     0x510805
510755:	8b 43 58             	mov    0x58(%ebx),%eax
510758:	85 c0                	test   %eax,%eax
51075a:	74 38                	je     0x510794
51075c:	bd 10 00 00 00       	mov    $0x10,%ebp
510761:	2b e8                	sub    %eax,%ebp
510763:	3b fd                	cmp    %ebp,%edi
510765:	72 2d                	jb     0x510794
510767:	55                   	push   %ebp
510768:	83 c0 48             	add    $0x48,%eax
51076b:	03 c3                	add    %ebx,%eax
51076d:	56                   	push   %esi
51076e:	50                   	push   %eax
51076f:	e8 5c 26 0c 00       	call   0x5d2dd0
510774:	8d 43 48             	lea    0x48(%ebx),%eax
510777:	50                   	push   %eax
510778:	53                   	push   %ebx
510779:	e8 32 ff ff ff       	call   0x5106b0
51077e:	83 c4 14             	add    $0x14,%esp