54038a:	85 c0                	test   %eax,%eax
54038c:	0f 88 a0 00 00 00    	js     0x540432
540392:	8b 4d 88             	mov    -0x78(%ebp),%ecx
540395:	8d 04 80             	lea    (%eax,%eax,4),%eax
540398:	8b 7d 9c             	mov    -0x64(%ebp),%edi
54039b:	56                   	push   %esi
54039c:	8b 44 81 04          	mov    0x4(%ecx,%eax,4),%eax
5403a0:	50                   	push   %eax
5403a1:	57                   	push   %edi
5403a2:	89 85 f0 fe ff ff    	mov    %eax,-0x110(%ebp)
5403a8:	e8 a3 4e fe ff       	call   0x525250
5403ad:	83 c4 0c             	add    $0xc,%esp
5403b0:	89 85 34 ff ff ff    	mov    %eax,-0xcc(%ebp)
5403b6:	3b c6                	cmp    %esi,%eax
5403b8:	0f 84 ea 00 00 00    	je     0x5404a8
5403be:	8b 7f 08             	mov    0x8(%edi),%edi
5403c1:	85 ff                	test   %edi,%edi
5403c3:	0f 84 df 00 00 00    	je     0x5404a8
5403c9:	8b 95 f0 fe ff ff    	mov    -0x110(%ebp),%edx
5403cf:	8b 4f 6c             	mov    0x6c(%edi),%ecx
5403d2:	8b 52 04             	mov    0x4(%edx),%edx
5403d5:	81 e2 00 00 20 00    	and    $0x200000,%edx
5403db:	f7 da                	neg    %edx
5403dd:	1b d2                	sbb    %edx,%edx
5403df:	83 c2 4e             	add    $0x4e,%edx
5403e2:	39 4f 70             	cmp    %ecx,0x70(%edi)
5403e5:	7f 10                	jg     0x5403f7
5403e7:	6a 00                	push   $0x0
5403e9:	56                   	push   %esi
5403ea:	50                   	push   %eax
5403eb:	52                   	push   %edx
5403ec:	57                   	push   %edi
5403ed:	e8 0e 61 fc ff       	call   0x506500
5403f2:	e9 ae 00 00 00       	jmp    0x5404a5
5403f7:	8d 41 01             	lea    0x1(%ecx),%eax
5403fa:	89 47 6c             	mov    %eax,0x6c(%edi)
5403fd:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
540400:	8b 47 68             	mov    0x68(%edi),%eax
540403:	88 14 88             	mov    %dl,(%eax,%ecx,4)
540406:	33 d2                	xor    %edx,%edx
540408:	66 89 54 88 02       	mov    %dx,0x2(%eax,%ecx,4)
54040d:	8b 95 34 ff ff ff    	mov    -0xcc(%ebp),%edx
540413:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
540417:	89 74 88 08          	mov    %esi,0x8(%eax,%ecx,4)
54041b:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
540422:	00
540423:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
54042a:	00
54042b:	c6 44 88 01 00       	movb   $0x0,0x1(%eax,%ecx,4)
540430:	eb 76                	jmp    0x5404a8
540432:	f7 85 ec fe ff ff 01 	testl  $0x1,-0x114(%ebp)
540439:	00 00 00
54043c:	74 4f                	je     0x54048d
54043e:	83 fb 1f             	cmp    $0x1f,%ebx
540441:	7f 4a                	jg     0x54048d
540443:	b8 01 00 00 00       	mov    $0x1,%eax
540448:	8b cb                	mov    %ebx,%ecx
54044a:	d3 e0                	shl    %cl,%eax
54044c:	85 c2                	test   %eax,%edx
54044e:	75 3d                	jne    0x54048d
540450:	8b 4f 6c             	mov    0x6c(%edi),%ecx
540453:	39 4f 70             	cmp    %ecx,0x70(%edi)
540456:	0f 8e f8 fe ff ff    	jle    0x540354
54045c:	8d 41 01             	lea    0x1(%ecx),%eax
54045f:	89 47 6c             	mov    %eax,0x6c(%edi)
540462:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
540465:	8b 47 68             	mov    0x68(%edi),%eax
540468:	c7 04 88 48 00 00 00 	movl   $0x48,(%eax,%ecx,4)
54046f:	c7 44 88 04 00 00 00 	movl   $0x0,0x4(%eax,%ecx,4)
540476:	00
540477:	89 74 88 08          	mov    %esi,0x8(%eax,%ecx,4)
54047b:	c7 44 88 0c 00 00 00 	movl   $0x0,0xc(%eax,%ecx,4)
540482:	00
540483:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
54048a:	00
54048b:	eb 21                	jmp    0x5404ae
54048d:	56                   	push   %esi
54048e:	53                   	push   %ebx
54048f:	ff 75 8c             	push   -0x74(%ebp)
540492:	ff 75 90             	push   -0x70(%ebp)
540495:	57                   	push   %edi
540496:	e8 25 3c fe ff       	call   0x5240c0
54049b:	c7 85 18 ff ff ff 00 	movl   $0x0,-0xe8(%ebp)
5404a2:	00 00 00
5404a5:	83 c4 14             	add    $0x14,%esp
5404a8:	8b 95 64 ff ff ff    	mov    -0x9c(%ebp),%edx
5404ae:	8b 45 90             	mov    -0x70(%ebp),%eax
5404b1:	43                   	inc    %ebx
5404b2:	83 85 44 ff ff ff 14 	addl   $0x14,-0xbc(%ebp)
5404b9:	46                   	inc    %esi
5404ba:	8b 8d 44 ff ff ff    	mov    -0xbc(%ebp),%ecx
5404c0:	8b 7d 98             	mov    -0x68(%ebp),%edi
5404c3:	0f bf 40 2a          	movswl 0x2a(%eax),%eax
5404c7:	3b d8                	cmp    %eax,%ebx
5404c9:	8b 45 90             	mov    -0x70(%ebp),%eax
5404cc:	0f 8c 6e fe ff ff    	jl     0x540340
5404d2:	8b 8d 24 ff ff ff    	mov    -0xdc(%ebp),%ecx
5404d8:	f6 40 24 60          	testb  $0x60,0x24(%eax)
5404dc:	74 10                	je     0x5404ee
5404de:	50                   	push   %eax
5404df:	51                   	push   %ecx
5404e0:	ff 75 9c             	push   -0x64(%ebp)
5404e3:	e8 d8 f6 fd ff       	call   0x51fbc0
5404e8:	8b 45 90             	mov    -0x70(%ebp),%eax
5404eb:	83 c4 0c             	add    $0xc,%esp
5404ee:	f6 85 ec fe ff ff 01 	testb  $0x1,-0x114(%ebp)
5404f5:	0f 84 b1 01 00 00    	je     0x5406ac
5404fb:	ff b5 24 ff ff ff    	push   -0xdc(%ebp)
540501:	8b 5d 98             	mov    -0x68(%ebp),%ebx
540504:	50                   	push   %eax
540505:	53                   	push   %ebx
540506:	e8 35 d8 ff ff       	call   0x53dd40
54050b:	8b 85 6c ff ff ff    	mov    -0x94(%ebp),%eax
540511:	83 c4 0c             	add    $0xc,%esp
540514:	8b bd 54 ff ff ff    	mov    -0xac(%ebp),%edi
54051a:	8b f0                	mov    %eax,%esi
54051c:	85 c0                	test   %eax,%eax
54051e:	74 3f                	je     0x54055f
540520:	8b 5d 90             	mov    -0x70(%ebp),%ebx
540523:	80 7e 08 7f          	cmpb   $0x7f,0x8(%esi)
540527:	75 2c                	jne    0x540555
540529:	80 7e 09 01          	cmpb   $0x1,0x9(%esi)
54052d:	75 26                	jne    0x540555
54052f:	ff 75 88             	push   -0x78(%ebp)
540532:	ff 76 10             	push   0x10(%esi)
540535:	e8 86 7a fb ff       	call   0x4f7fc0
54053a:	83 c4 08             	add    $0x8,%esp
54053d:	85 c0                	test   %eax,%eax
54053f:	74 14                	je     0x540555
540541:	57                   	push   %edi
540542:	ff 75 18             	push   0x18(%ebp)
540545:	ff 75 80             	push   -0x80(%ebp)
540548:	53                   	push   %ebx
540549:	56                   	push   %esi
54054a:	ff 75 9c             	push   -0x64(%ebp)
54054d:	e8 fe e8 fd ff       	call   0x51ee50
540552:	83 c4 18             	add    $0x18,%esp
540555:	8b 76 20             	mov    0x20(%esi),%esi
540558:	85 f6                	test   %esi,%esi
54055a:	75 c7                	jne    0x540523
54055c:	8b 5d 98             	mov    -0x68(%ebp),%ebx
54055f:	83 bd 68 ff ff ff 00 	cmpl   $0x0,-0x98(%ebp)
540566:	0f 84 a2 00 00 00    	je     0x54060e
54056c:	8b 53 6c             	mov    0x6c(%ebx),%edx
54056f:	39 53 70             	cmp    %edx,0x70(%ebx)
540572:	7f 19                	jg     0x54058d
540574:	ff b5 70 ff ff ff    	push   -0x90(%ebp)
54057a:	57                   	push   %edi
54057b:	ff 75 8c             	push   -0x74(%ebp)
54057e:	6a 1d                	push   $0x1d
540580:	53                   	push   %ebx
540581:	e8 7a 5f fc ff       	call   0x506500
540586:	83 c4 14             	add    $0x14,%esp
540589:	8b d0                	mov    %eax,%edx
54058b:	eb 30                	jmp    0x5405bd
54058d:	8b 75 8c             	mov    -0x74(%ebp),%esi
540590:	8d 42 01             	lea    0x1(%edx),%eax
540593:	89 43 6c             	mov    %eax,0x6c(%ebx)
540596:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
540599:	8b 43 68             	mov    0x68(%ebx),%eax
54059c:	89 74 88 04          	mov    %esi,0x4(%eax,%ecx,4)
5405a0:	8b b5 70 ff ff ff    	mov    -0x90(%ebp),%esi
5405a6:	c7 04 88 1d 00 00 00 	movl   $0x1d,(%eax,%ecx,4)
5405ad:	89 7c 88 08          	mov    %edi,0x8(%eax,%ecx,4)
5405b1:	89 74 88 0c          	mov    %esi,0xc(%eax,%ecx,4)
5405b5:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
5405bc:	00
5405bd:	8b 03                	mov    (%ebx),%eax
5405bf:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
5405c3:	75 15                	jne    0x5405da
5405c5:	8b 43 68             	mov    0x68(%ebx),%eax
5405c8:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
5405cb:	8b 95 fc fe ff ff    	mov    -0x104(%ebp),%edx
5405d1:	c6 44 88 01 fd       	movb   $0xfd,0x1(%eax,%ecx,4)
5405d6:	89 54 88 10          	mov    %edx,0x10(%eax,%ecx,4)
5405da:	8b 55 8c             	mov    -0x74(%ebp),%edx
5405dd:	8b 4d 90             	mov    -0x70(%ebp),%ecx
5405e0:	33 db                	xor    %ebx,%ebx
5405e2:	8b 85 24 ff ff ff    	mov    -0xdc(%ebp),%eax
5405e8:	33 f6                	xor    %esi,%esi
5405ea:	8b f8                	mov    %eax,%edi
5405ec:	66 3b 59 2a          	cmp    0x2a(%ecx),%bx
5405f0:	0f 8d a0 00 00 00    	jge    0x540696
5405f6:	8b 41 04             	mov    0x4(%ecx),%eax
5405f9:	0f b7 44 03 10       	movzwl 0x10(%ebx,%eax,1),%eax
5405fe:	a8 60                	test   $0x60,%al
540600:	74 57                	je     0x540659
540602:	a8 20                	test   $0x20,%al
540604:	8d 47 ff             	lea    -0x1(%edi),%eax
540607:	0f 44 c7             	cmove  %edi,%eax
54060a:	8b f8                	mov    %eax,%edi
54060c:	eb 6e                	jmp    0x54067c
54060e:	8b 4b 6c             	mov    0x6c(%ebx),%ecx
540611:	39 4b 70             	cmp    %ecx,0x70(%ebx)
540614:	7f 14                	jg     0x54062a
540616:	ff 75 80             	push   -0x80(%ebp)
540619:	57                   	push   %edi
54061a:	ff 75 8c             	push   -0x74(%ebp)
54061d:	6a 20                	push   $0x20
54061f:	53                   	push   %ebx
540620:	e8 db 5e fc ff       	call   0x506500
540625:	83 c4 14             	add    $0x14,%esp
540628:	eb b0                	jmp    0x5405da
54062a:	8b 55 8c             	mov    -0x74(%ebp),%edx
54062d:	8d 41 01             	lea    0x1(%ecx),%eax
540630:	8b 75 80             	mov    -0x80(%ebp),%esi
540633:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
540636:	89 43 6c             	mov    %eax,0x6c(%ebx)
540639:	8b 43 68             	mov    0x68(%ebx),%eax
54063c:	c7 04 88 20 00 00 00 	movl   $0x20,(%eax,%ecx,4)
540643:	89 54 88 04          	mov    %edx,0x4(%eax,%ecx,4)
540647:	89 7c 88 08          	mov    %edi,0x8(%eax,%ecx,4)
54064b:	89 74 88 0c          	mov    %esi,0xc(%eax,%ecx,4)
54064f:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
540656:	00
540657:	eb 84                	jmp    0x5405dd
540659:	8b 45 84             	mov    -0x7c(%ebp),%eax
54065c:	83 3c b0 00          	cmpl   $0x0,(%eax,%esi,4)
540660:	7d 1a                	jge    0x54067c
540662:	0f bf 41 28          	movswl 0x28(%ecx),%eax
540666:	3b f0                	cmp    %eax,%esi
540668:	74 12                	je     0x54067c
54066a:	57                   	push   %edi
54066b:	56                   	push   %esi
54066c:	52                   	push   %edx
54066d:	51                   	push   %ecx
54066e:	ff 75 98             	push   -0x68(%ebp)
540671:	e8 4a 3a fe ff       	call   0x5240c0
540676:	8b 4d 90             	mov    -0x70(%ebp),%ecx
540679:	83 c4 14             	add    $0x14,%esp
54067c:	0f bf 41 2a          	movswl 0x2a(%ecx),%eax
540680:	46                   	inc    %esi
540681:	8b 55 8c             	mov    -0x74(%ebp),%edx
540684:	83 c3 14             	add    $0x14,%ebx
540687:	47                   	inc    %edi
540688:	3b f0                	cmp    %eax,%esi
54068a:	0f 8c 66 ff ff ff    	jl     0x5405f6
540690:	8b 85 24 ff ff ff    	mov    -0xdc(%ebp),%eax
540696:	f6 41 24 60          	testb  $0x60,0x24(%ecx)
54069a:	8b 75 9c             	mov    -0x64(%ebp),%esi
54069d:	74 13                	je     0x5406b2
54069f:	51                   	push   %ecx
5406a0:	50                   	push   %eax
5406a1:	56                   	push   %esi
5406a2:	e8 19 f5 fd ff       	call   0x51fbc0
5406a7:	83 c4 0c             	add    $0xc,%esp
5406aa:	eb 03                	jmp    0x5406af
5406ac:	8b 75 9c             	mov    -0x64(%ebp),%esi
5406af:	8b 4d 90             	mov    -0x70(%ebp),%ecx
5406b2:	83 bd 04 ff ff ff 00 	cmpl   $0x0,-0xfc(%ebp)
5406b9:	8b 9d 54 ff ff ff    	mov    -0xac(%ebp),%ebx
5406bf:	0f 85 8e 02 00 00    	jne    0x540953
5406c5:	6a 00                	push   $0x0
5406c7:	ff 75 84             	push   -0x7c(%ebp)
5406ca:	8b 7d 8c             	mov    -0x74(%ebp),%edi
5406cd:	8d 45 f8             	lea    -0x8(%ebp),%eax
5406d0:	50                   	push   %eax
5406d1:	53                   	push   %ebx
5406d2:	ff 75 18             	push   0x18(%ebp)
5406d5:	ff b5 38 ff ff ff    	push   -0xc8(%ebp)
5406db:	ff 75 80             	push   -0x80(%ebp)
5406de:	ff b5 5c ff ff ff    	push   -0xa4(%ebp)
5406e4:	ff b5 20 ff ff ff    	push   -0xe0(%ebp)
5406ea:	57                   	push   %edi
5406eb:	ff b5 30 ff ff ff    	push   -0xd0(%ebp)
5406f1:	51                   	push   %ecx
5406f2:	56                   	push   %esi
5406f3:	e8 e8 9d fe ff       	call   0x52a4e0
5406f8:	83 c4 34             	add    $0x34,%esp
5406fb:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
5406ff:	75 0d                	jne    0x54070e
540701:	80 bd 38 ff ff ff 00 	cmpb   $0x0,-0xc8(%ebp)
540708:	0f 84 c3 00 00 00    	je     0x5407d1
54070e:	83 bd 68 ff ff ff 00 	cmpl   $0x0,-0x98(%ebp)
540715:	8b 75 98             	mov    -0x68(%ebp),%esi
540718:	74 71                	je     0x54078b
54071a:	8b 56 6c             	mov    0x6c(%esi),%edx
54071d:	39 56 70             	cmp    %edx,0x70(%esi)
540720:	7f 17                	jg     0x540739
540722:	ff b5 70 ff ff ff    	push   -0x90(%ebp)
540728:	53                   	push   %ebx
540729:	57                   	push   %edi
54072a:	6a 1d                	push   $0x1d
54072c:	56                   	push   %esi
54072d:	e8 ce 5d fc ff       	call   0x506500
540732:	83 c4 14             	add    $0x14,%esp
540735:	8b d0                	mov    %eax,%edx
540737:	eb 33                	jmp    0x54076c
540739:	8b 9d 54 ff ff ff    	mov    -0xac(%ebp),%ebx
54073f:	8d 42 01             	lea    0x1(%edx),%eax
540742:	89 46 6c             	mov    %eax,0x6c(%esi)
540745:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
540748:	8b 46 68             	mov    0x68(%esi),%eax
54074b:	89 7c 88 04          	mov    %edi,0x4(%eax,%ecx,4)
54074f:	8b bd 70 ff ff ff    	mov    -0x90(%ebp),%edi
540755:	c7 04 88 1d 00 00 00 	movl   $0x1d,(%eax,%ecx,4)
54075c:	89 5c 88 08          	mov    %ebx,0x8(%eax,%ecx,4)
540760:	89 7c 88 0c          	mov    %edi,0xc(%eax,%ecx,4)
540764:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
54076b:	00
54076c:	8b 06                	mov    (%esi),%eax
54076e:	80 78 51 00          	cmpb   $0x0,0x51(%eax)
540772:	75 60                	jne    0x5407d4
540774:	8b 46 68             	mov    0x68(%esi),%eax
540777:	8d 0c 92             	lea    (%edx,%edx,4),%ecx
54077a:	8b 95 fc fe ff ff    	mov    -0x104(%ebp),%edx
540780:	c6 44 88 01 fd       	movb   $0xfd,0x1(%eax,%ecx,4)
540785:	89 54 88 10          	mov    %edx,0x10(%eax,%ecx,4)
540789:	eb 49                	jmp    0x5407d4
54078b:	8b 4e 6c             	mov    0x6c(%esi),%ecx
54078e:	39 4e 70             	cmp    %ecx,0x70(%esi)
540791:	7f 12                	jg     0x5407a5
540793:	ff 75 80             	push   -0x80(%ebp)
540796:	53                   	push   %ebx
540797:	57                   	push   %edi
540798:	6a 20                	push   $0x20
54079a:	56                   	push   %esi
54079b:	e8 60 5d fc ff       	call   0x506500
5407a0:	83 c4 14             	add    $0x14,%esp
5407a3:	eb 2f                	jmp    0x5407d4
5407a5:	8b 55 80             	mov    -0x80(%ebp),%edx
5407a8:	8d 41 01             	lea    0x1(%ecx),%eax
5407ab:	89 46 6c             	mov    %eax,0x6c(%esi)
5407ae:	8d 0c 89             	lea    (%ecx,%ecx,4),%ecx
5407b1:	8b 46 68             	mov    0x68(%esi),%eax
5407b4:	c7 04 88 20 00 00 00 	movl   $0x20,(%eax,%ecx,4)
5407bb:	89 7c 88 04          	mov    %edi,0x4(%eax,%ecx,4)
5407bf:	89 5c 88 08          	mov    %ebx,0x8(%eax,%ecx,4)
5407c3:	89 54 88 0c          	mov    %edx,0xc(%eax,%ecx,4)
5407c7:	c7 44 88 10 00 00 00 	movl   $0x0,0x10(%eax,%ecx,4)
5407ce:	00
5407cf:	eb 06                	jmp    0x5407d7
5407d1:	8b 75 98             	mov    -0x68(%ebp),%esi
5407d4:	8b 55 80             	mov    -0x80(%ebp),%edx
5407d7:	8b bd 74 ff ff ff    	mov    -0x8c(%ebp),%edi
5407dd:	85 ff                	test   %edi,%edi
5407df:	74 1a                	je     0x5407fb
5407e1:	ff b5 f4 fe ff ff    	push   -0x10c(%ebp)
5407e7:	ff 75 84             	push   -0x7c(%ebp)
5407ea:	6a 00                	push   $0x0
5407ec:	52                   	push   %edx
5407ed:	ff 75 90             	push   -0x70(%ebp)
5407f0:	ff 75 9c             	push   -0x64(%ebp)
5407f3:	e8 e8 8c fe ff       	call   0x5294e0
5407f8:	83 c4 18             	add    $0x18,%esp
5407fb:	6a ff                	push   $0xffffffff
5407fd:	ff b5 30 ff ff ff    	push   -0xd0(%ebp)
540803:	ff b5 20 ff ff ff    	push   -0xe0(%ebp)
540809:	ff 75 8c             	push   -0x74(%ebp)
54080c:	ff 75 90             	push   -0x70(%ebp)