556298:	75 1d                	jne    0x5562b7
55629a:	39 7e 74             	cmp    %edi,0x74(%esi)
55629d:	75 0c                	jne    0x5562ab
55629f:	8b 06                	mov    (%esi),%eax
5562a1:	f6 40 4c 08          	testb  $0x8,0x4c(%eax)
5562a5:	75 04                	jne    0x5562ab
5562a7:	c6 46 17 01          	movb   $0x1,0x17(%esi)
5562ab:	56                   	push   %esi
5562ac:	e8 5f c1 fe ff       	call   0x542410
5562b1:	83 c4 04             	add    $0x4,%esp
5562b4:	89 45 e8             	mov    %eax,-0x18(%ebp)
5562b7:	8b 4b 20             	mov    0x20(%ebx),%ecx
5562ba:	8b 06                	mov    (%esi),%eax
5562bc:	89 4d ec             	mov    %ecx,-0x14(%ebp)
5562bf:	8b 4b 24             	mov    0x24(%ebx),%ecx
5562c2:	89 4d d0             	mov    %ecx,-0x30(%ebp)
5562c5:	8b 4b 28             	mov    0x28(%ebx),%ecx
5562c8:	89 4d d4             	mov    %ecx,-0x2c(%ebp)
5562cb:	8b 4b 2c             	mov    0x2c(%ebx),%ecx
5562ce:	6a 00                	push   $0x0
5562d0:	89 4d d8             	mov    %ecx,-0x28(%ebp)
5562d3:	8b 4b 44             	mov    0x44(%ebx),%ecx
5562d6:	6a 50                	push   $0x50
5562d8:	50                   	push   %eax
5562d9:	89 45 f4             	mov    %eax,-0xc(%ebp)
5562dc:	89 7d fc             	mov    %edi,-0x4(%ebp)
5562df:	89 4d f8             	mov    %ecx,-0x8(%ebp)
5562e2:	e8 39 b2 fc ff       	call   0x521520
5562e7:	8b f8                	mov    %eax,%edi
5562e9:	83 c4 0c             	add    $0xc,%esp
5562ec:	89 7d f0             	mov    %edi,-0x10(%ebp)
5562ef:	85 ff                	test   %edi,%edi
5562f1:	75 27                	jne    0x55631a
5562f3:	8b 45 f4             	mov    -0xc(%ebp),%eax
5562f6:	85 c0                	test   %eax,%eax
5562f8:	74 14                	je     0x55630e
5562fa:	8b 80 f4 00 00 00    	mov    0xf4(%eax),%eax
556300:	85 c0                	test   %eax,%eax
556302:	74 0a                	je     0x55630e
556304:	ff 40 24             	incl   0x24(%eax)
556307:	c7 40 0c 07 00 00 00 	movl   $0x7,0xc(%eax)
55630e:	5f                   	pop    %edi
55630f:	5e                   	pop    %esi
556310:	b8 07 00 00 00       	mov    $0x7,%eax
556315:	5b                   	pop    %ebx
556316:	8b e5                	mov    %ebp,%esp
556318:	5d                   	pop    %ebp
556319:	c3                   	ret
55631a:	8b 43 04             	mov    0x4(%ebx),%eax
55631d:	83 e0 f7             	and    $0xfffffff7,%eax
556320:	c7 43 20 00 00 00 00 	movl   $0x0,0x20(%ebx)
556327:	0d 00 00 10 00       	or     $0x100000,%eax
55632c:	c7 43 24 00 00 00 00 	movl   $0x0,0x24(%ebx)
556333:	89 43 04             	mov    %eax,0x4(%ebx)
556336:	8b 45 f8             	mov    -0x8(%ebp),%eax
556339:	6a 01                	push   $0x1
55633b:	c7 43 28 00 00 00 00 	movl   $0x0,0x28(%ebx)
556342:	c7 43 2c 00 00 00 00 	movl   $0x0,0x2c(%ebx)
556349:	ff 70 08             	push   0x8(%eax)
55634c:	6a 00                	push   $0x0
55634e:	56                   	push   %esi
55634f:	e8 cc ab fa ff       	call   0x500f20
556354:	8b 4d f8             	mov    -0x8(%ebp),%ecx
556357:	6a 01                	push   $0x1
556359:	ff 71 0c             	push   0xc(%ecx)
55635c:	50                   	push   %eax
55635d:	56                   	push   %esi
55635e:	e8 bd ab fa ff       	call   0x500f20
556363:	8b d0                	mov    %eax,%edx
556365:	83 c4 20             	add    $0x20,%esp
556368:	89 55 e4             	mov    %edx,-0x1c(%ebp)
55636b:	85 d2                	test   %edx,%edx
55636d:	74 48                	je     0x5563b7
55636f:	8b 43 30             	mov    0x30(%ebx),%eax
556372:	85 c0                	test   %eax,%eax
556374:	74 41                	je     0x5563b7
556376:	8b 0a                	mov    (%edx),%ecx
556378:	8b 00                	mov    (%eax),%eax
55637a:	89 4d e0             	mov    %ecx,-0x20(%ebp)
55637d:	3b c1                	cmp    %ecx,%eax
55637f:	7f 36                	jg     0x5563b7
556381:	6a ff                	push   $0xffffffff
556383:	89 02                	mov    %eax,(%edx)
556385:	ff 73 30             	push   0x30(%ebx)
556388:	52                   	push   %edx
556389:	e8 a2 14 fd ff       	call   0x527830
55638e:	83 c4 0c             	add    $0xc,%esp
556391:	85 c0                	test   %eax,%eax
556393:	75 1a                	jne    0x5563af
556395:	8b 43 30             	mov    0x30(%ebx),%eax
556398:	85 c0                	test   %eax,%eax
55639a:	74 0c                	je     0x5563a8
55639c:	50                   	push   %eax
55639d:	ff 75 f4             	push   -0xc(%ebp)
5563a0:	e8 5b ac fa ff       	call   0x501000
5563a5:	83 c4 08             	add    $0x8,%esp
5563a8:	c7 43 30 00 00 00 00 	movl   $0x0,0x30(%ebx)
5563af:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
5563b2:	8b 45 e0             	mov    -0x20(%ebp),%eax
5563b5:	89 01                	mov    %eax,(%ecx)
5563b7:	8b 4d f8             	mov    -0x8(%ebp),%ecx
5563ba:	8b 46 28             	mov    0x28(%esi),%eax
5563bd:	89 41 30             	mov    %eax,0x30(%ecx)
5563c0:	8d 45 fc             	lea    -0x4(%ebp),%eax
5563c3:	83 46 28 04          	addl   $0x4,0x28(%esi)
5563c7:	50                   	push   %eax
5563c8:	57                   	push   %edi
5563c9:	ff 73 1c             	push   0x1c(%ebx)
5563cc:	ff 75 ec             	push   -0x14(%ebp)
5563cf:	51                   	push   %ecx
5563d0:	56                   	push   %esi
5563d1:	e8 9a 07 fc ff       	call   0x516b70
5563d6:	8d 45 fc             	lea    -0x4(%ebp),%eax
5563d9:	50                   	push   %eax
5563da:	57                   	push   %edi
5563db:	ff 73 30             	push   0x30(%ebx)
5563de:	8b 5d f8             	mov    -0x8(%ebp),%ebx
5563e1:	ff 75 ec             	push   -0x14(%ebp)
5563e4:	53                   	push   %ebx
5563e5:	56                   	push   %esi
5563e6:	e8 85 07 fc ff       	call   0x516b70
5563eb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
5563ee:	83 c4 30             	add    $0x30,%esp
5563f1:	85 c9                	test   %ecx,%ecx
5563f3:	74 04                	je     0x5563f9
5563f5:	8b 01                	mov    (%ecx),%eax
5563f7:	eb 02                	jmp    0x5563fb
5563f9:	33 c0                	xor    %eax,%eax
5563fb:	6a 00                	push   $0x0
5563fd:	ff 73 08             	push   0x8(%ebx)
556400:	89 43 4c             	mov    %eax,0x4c(%ebx)
556403:	51                   	push   %ecx
556404:	56                   	push   %esi
556405:	e8 16 ab fa ff       	call   0x500f20
55640a:	6a 00                	push   $0x0
55640c:	ff 73 0c             	push   0xc(%ebx)
55640f:	50                   	push   %eax
556410:	56                   	push   %esi
556411:	e8 0a ab fa ff       	call   0x500f20
556416:	8b 55 f8             	mov    -0x8(%ebp),%edx
556419:	8b d8                	mov    %eax,%ebx
55641b:	83 c4 20             	add    $0x20,%esp
55641e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
556421:	8b fa                	mov    %edx,%edi
556423:	8b 47 48             	mov    0x48(%edi),%eax
556426:	8b 48 14             	mov    0x14(%eax),%ecx
556429:	8b 47 2c             	mov    0x2c(%edi),%eax
55642c:	f7 40 04 00 00 10 00 	testl  $0x100000,0x4(%eax)
556433:	74 32                	je     0x556467
556435:	8d 45 fc             	lea    -0x4(%ebp),%eax
556438:	50                   	push   %eax
556439:	ff 75 f0             	push   -0x10(%ebp)
55643c:	51                   	push   %ecx
55643d:	ff 75 ec             	push   -0x14(%ebp)
556440:	52                   	push   %edx
556441:	56                   	push   %esi
556442:	e8 29 07 fc ff       	call   0x516b70
556447:	8b 5d fc             	mov    -0x4(%ebp),%ebx
55644a:	83 c4 18             	add    $0x18,%esp
55644d:	85 db                	test   %ebx,%ebx
55644f:	74 0b                	je     0x55645c
556451:	8b 03                	mov    (%ebx),%eax
556453:	89 47 50             	mov    %eax,0x50(%edi)
556456:	c6 47 60 01          	movb   $0x1,0x60(%edi)
55645a:	eb 2a                	jmp    0x556486
55645c:	33 c0                	xor    %eax,%eax
55645e:	c6 47 60 01          	movb   $0x1,0x60(%edi)
556462:	89 47 50             	mov    %eax,0x50(%edi)
556465:	eb 1f                	jmp    0x556486
556467:	85 db                	test   %ebx,%ebx
556469:	74 04                	je     0x55646f
55646b:	8b 03                	mov    (%ebx),%eax
55646d:	eb 02                	jmp    0x556471
55646f:	33 c0                	xor    %eax,%eax
556471:	6a 00                	push   $0x0
556473:	51                   	push   %ecx
556474:	53                   	push   %ebx
556475:	56                   	push   %esi
556476:	89 47 50             	mov    %eax,0x50(%edi)
556479:	e8 a2 aa fa ff       	call   0x500f20
55647e:	8b d8                	mov    %eax,%ebx
556480:	83 c4 10             	add    $0x10,%esp
556483:	89 5d fc             	mov    %ebx,-0x4(%ebp)
556486:	8b 47 28             	mov    0x28(%edi),%eax
556489:	85 c0                	test   %eax,%eax
55648b:	74 1d                	je     0x5564aa
55648d:	6a 00                	push   $0x0
55648f:	6a 00                	push   $0x0
556491:	50                   	push   %eax
556492:	ff 75 f4             	push   -0xc(%ebp)
556495:	e8 c6 a3 fa ff       	call   0x500860
55649a:	50                   	push   %eax
55649b:	53                   	push   %ebx
55649c:	56                   	push   %esi
55649d:	e8 de 10 fd ff       	call   0x527580
5564a2:	8b d8                	mov    %eax,%ebx
5564a4:	83 c4 1c             	add    $0x1c,%esp
5564a7:	89 5d fc             	mov    %ebx,-0x4(%ebp)
5564aa:	ff 46 2c             	incl   0x2c(%esi)
5564ad:	8b 46 2c             	mov    0x2c(%esi),%eax
5564b0:	89 47 34             	mov    %eax,0x34(%edi)
5564b3:	ff 46 2c             	incl   0x2c(%esi)
5564b6:	ff 77 34             	push   0x34(%edi)
5564b9:	8b 46 2c             	mov    0x2c(%esi),%eax
5564bc:	6a 00                	push   $0x0
5564be:	6a 48                	push   $0x48
5564c0:	ff 75 e8             	push   -0x18(%ebp)
5564c3:	89 47 38             	mov    %eax,0x38(%edi)
5564c6:	e8 15 b6 fe ff       	call   0x541ae0
5564cb:	8b 7f 24             	mov    0x24(%edi),%edi
5564ce:	83 c4 10             	add    $0x10,%esp
5564d1:	8b 55 f8             	mov    -0x8(%ebp),%edx
5564d4:	85 ff                	test   %edi,%edi
5564d6:	0f 85 47 ff ff ff    	jne    0x556423
5564dc:	85 db                	test   %ebx,%ebx
5564de:	75 2d                	jne    0x55650d
5564e0:	53                   	push   %ebx
5564e1:	8d 45 dc             	lea    -0x24(%ebp),%eax
5564e4:	c7 45 dc 9c 9b 6a 00 	movl   $0x6a9b9c,-0x24(%ebp)
5564eb:	50                   	push   %eax
5564ec:	68 98 00 00 00       	push   $0x98
5564f1:	ff 75 f4             	push   -0xc(%ebp)
5564f4:	c7 45 e0 01 00 00 00 	movl   $0x1,-0x20(%ebp)
5564fb:	e8 70 d1 fc ff       	call   0x523670
556500:	50                   	push   %eax
556501:	53                   	push   %ebx
556502:	56                   	push   %esi
556503:	e8 78 10 fd ff       	call   0x527580
556508:	83 c4 1c             	add    $0x1c,%esp
55650b:	8b d8                	mov    %eax,%ebx
55650d:	6a 00                	push   $0x0
55650f:	6a 00                	push   $0x0
556511:	ff 75 e4             	push   -0x1c(%ebp)
556514:	ff 75 d8             	push   -0x28(%ebp)
556517:	ff 75 d4             	push   -0x2c(%ebp)
55651a:	ff 75 d0             	push   -0x30(%ebp)
55651d:	ff 75 ec             	push   -0x14(%ebp)
556520:	53                   	push   %ebx
556521:	56                   	push   %esi
556522:	e8 39 5f fe ff       	call   0x53c460
556527:	6a 00                	push   $0x0
556529:	6a 50                	push   $0x50
55652b:	ff 36                	push   (%esi)
55652d:	89 45 e4             	mov    %eax,-0x1c(%ebp)
556530:	e8 ab ae fc ff       	call   0x5213e0
556535:	8b f8                	mov    %eax,%edi
556537:	83 c4 30             	add    $0x30,%esp
55653a:	85 ff                	test   %edi,%edi
55653c:	74 39                	je     0x556577
55653e:	6a 48                	push   $0x48
556540:	8d 47 08             	lea    0x8(%edi),%eax
556543:	c7 47 04 01 00 00 00 	movl   $0x1,0x4(%edi)
55654a:	6a 00                	push   $0x0
55654c:	50                   	push   %eax
55654d:	c7 07 01 00 00 00    	movl   $0x1,(%edi)
556553:	e8 a8 d4 08 00       	call   0x5e3a00
556558:	c7 47 34 ff ff ff ff 	movl   $0xffffffff,0x34(%edi)
55655f:	83 c4 0c             	add    $0xc,%esp
556562:	8b 07                	mov    (%edi),%eax
556564:	8d 04 c0             	lea    (%eax,%eax,8),%eax
556567:	c7 44 c7 c8 00 00 00 	movl   $0x0,-0x38(%edi,%eax,8)
55656e:	00
55656f:	c7 44 c7 c4 00 00 00 	movl   $0x0,-0x3c(%edi,%eax,8)
556576:	00
556577:	8b 5d 0c             	mov    0xc(%ebp),%ebx
55657a:	89 7b 20             	mov    %edi,0x20(%ebx)
55657d:	85 ff                	test   %edi,%edi
55657f:	74 61                	je     0x5565e2
556581:	8b 4d e4             	mov    -0x1c(%ebp),%ecx
556584:	89 4f 1c             	mov    %ecx,0x1c(%edi)
556587:	ff 73 20             	push   0x20(%ebx)
55658a:	56                   	push   %esi
55658b:	e8 80 67 fe ff       	call   0x53cd10
556590:	83 49 04 40          	orl    $0x40,0x4(%ecx)
556594:	6a 40                	push   $0x40
556596:	51                   	push   %ecx
556597:	56                   	push   %esi
556598:	e8 a3 1f fe ff       	call   0x538540
55659d:	8b 55 f0             	mov    -0x10(%ebp),%edx
5565a0:	8b c8                	mov    %eax,%ecx
5565a2:	83 c4 14             	add    $0x14,%esp
5565a5:	85 c9                	test   %ecx,%ecx
5565a7:	75 05                	jne    0x5565ae
5565a9:	8d 78 07             	lea    0x7(%eax),%edi
5565ac:	eb 4e                	jmp    0x5565fc
5565ae:	0f 10 01             	movups (%ecx),%xmm0
5565b1:	0f 11 02             	movups %xmm0,(%edx)
5565b4:	0f 10 41 10          	movups 0x10(%ecx),%xmm0
5565b8:	0f 11 42 10          	movups %xmm0,0x10(%edx)
5565bc:	0f 10 41 20          	movups 0x20(%ecx),%xmm0
5565c0:	0f 11 42 20          	movups %xmm0,0x20(%edx)
5565c4:	0f 10 41 30          	movups 0x30(%ecx),%xmm0
5565c8:	0f 11 42 30          	movups %xmm0,0x30(%edx)
5565cc:	0f 10 41 40          	movups 0x40(%ecx),%xmm0
5565d0:	0f 11 42 40          	movups %xmm0,0x40(%edx)
5565d4:	83 4a 24 02          	orl    $0x2,0x24(%edx)
5565d8:	8b 43 20             	mov    0x20(%ebx),%eax
5565db:	89 50 18             	mov    %edx,0x18(%eax)
5565de:	8b d1                	mov    %ecx,%edx
5565e0:	eb 18                	jmp    0x5565fa
5565e2:	8b 45 e4             	mov    -0x1c(%ebp),%eax
5565e5:	85 c0                	test   %eax,%eax
5565e7:	74 0e                	je     0x5565f7
5565e9:	6a 01                	push   $0x1
5565eb:	50                   	push   %eax
5565ec:	ff 75 f4             	push   -0xc(%ebp)
5565ef:	e8 fc 27 fa ff       	call   0x4f8df0
5565f4:	83 c4 0c             	add    $0xc,%esp
5565f7:	8b 55 f0             	mov    -0x10(%ebp),%edx
5565fa:	33 ff                	xor    %edi,%edi
5565fc:	8b 45 f4             	mov    -0xc(%ebp),%eax
5565ff:	b9 07 00 00 00       	mov    $0x7,%ecx
556604:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
556608:	0f 45 f9             	cmovne %ecx,%edi
55660b:	85 d2                	test   %edx,%edx
55660d:	74 0a                	je     0x556619
55660f:	52                   	push   %edx
556610:	50                   	push   %eax
556611:	e8 5a ad fc ff       	call   0x521370
556616:	83 c4 08             	add    $0x8,%esp
556619:	85 ff                	test   %edi,%edi
55661b:	74 2a                	je     0x556647
55661d:	83 7e 24 00          	cmpl   $0x0,0x24(%esi)
556621:	75 1a                	jne    0x55663d
556623:	8b 0e                	mov    (%esi),%ecx
556625:	85 c9                	test   %ecx,%ecx
556627:	74 14                	je     0x55663d
556629:	8b 89 f4 00 00 00    	mov    0xf4(%ecx),%ecx
55662f:	85 c9                	test   %ecx,%ecx
556631:	74 0a                	je     0x55663d
556633:	ff 41 24             	incl   0x24(%ecx)
556636:	c7 41 0c 07 00 00 00 	movl   $0x7,0xc(%ecx)
55663d:	53                   	push   %ebx
55663e:	56                   	push   %esi
55663f:	e8 8c 60 fe ff       	call   0x53c6d0
556644:	83 c4 08             	add    $0x8,%esp
556647:	8b c7                	mov    %edi,%eax
556649:	5f                   	pop    %edi
55664a:	5e                   	pop    %esi
55664b:	5b                   	pop    %ebx
55664c:	8b e5                	mov    %ebp,%esp
55664e:	5d                   	pop    %ebp
55664f:	c3                   	ret
556650:	55                   	push   %ebp
556651:	8b ec                	mov    %esp,%ebp
556653:	81 ec 90 00 00 00    	sub    $0x90,%esp
556659:	a1 d4 89 72 00       	mov    0x7289d4,%eax
55665e:	33 c5                	xor    %ebp,%eax
556660:	89 45 fc             	mov    %eax,-0x4(%ebp)
556663:	8b 45 0c             	mov    0xc(%ebp),%eax