507349:	89 04 24             	mov    %eax,(%esp)
50734c:	75 15                	jne    0x507363
50734e:	8b c5                	mov    %ebp,%eax
507350:	ff 57 0c             	call   *0xc(%edi)
507353:	85 c0                	test   %eax,%eax
507355:	75 07                	jne    0x50735e
507357:	33 c0                	xor    %eax,%eax
507359:	e9 98 00 00 00       	jmp    0x5073f6
50735e:	8b 1f                	mov    (%edi),%ebx
507360:	8b 77 04             	mov    0x4(%edi),%esi
507363:	4e                   	dec    %esi
507364:	33 c0                	xor    %eax,%eax
507366:	8a 03                	mov    (%ebx),%al
507368:	01 04 24             	add    %eax,(%esp)
50736b:	43                   	inc    %ebx
50736c:	83 3c 24 04          	cmpl   $0x4,(%esp)
507370:	74 10                	je     0x507382
507372:	8b 55 00             	mov    0x0(%ebp),%edx
507375:	8b c5                	mov    %ebp,%eax
507377:	c7 42 14 09 00 00 00 	movl   $0x9,0x14(%edx)
50737e:	8b 10                	mov    (%eax),%edx
507380:	ff 12                	call   *(%edx)
507382:	85 f6                	test   %esi,%esi
507384:	75 12                	jne    0x507398
507386:	8b c5                	mov    %ebp,%eax
507388:	ff 57 0c             	call   *0xc(%edi)
50738b:	85 c0                	test   %eax,%eax
50738d:	75 04                	jne    0x507393
50738f:	33 c0                	xor    %eax,%eax
507391:	eb 63                	jmp    0x5073f6
507393:	8b 1f                	mov    (%edi),%ebx
507395:	8b 77 04             	mov    0x4(%edi),%esi
507398:	33 c0                	xor    %eax,%eax
50739a:	4e                   	dec    %esi
50739b:	8a 03                	mov    (%ebx),%al
50739d:	43                   	inc    %ebx
50739e:	c1 e0 08             	shl    $0x8,%eax
5073a1:	85 f6                	test   %esi,%esi
5073a3:	89 44 24 04          	mov    %eax,0x4(%esp)
5073a7:	75 12                	jne    0x5073bb
5073a9:	8b c5                	mov    %ebp,%eax
5073ab:	ff 57 0c             	call   *0xc(%edi)
5073ae:	85 c0                	test   %eax,%eax
5073b0:	75 04                	jne    0x5073b6
5073b2:	33 c0                	xor    %eax,%eax
5073b4:	eb 40                	jmp    0x5073f6
5073b6:	8b 1f                	mov    (%edi),%ebx
5073b8:	8b 77 04             	mov    0x4(%edi),%esi
5073bb:	33 c0                	xor    %eax,%eax
5073bd:	4e                   	dec    %esi
5073be:	8a 03                	mov    (%ebx),%al
5073c0:	01 44 24 04          	add    %eax,0x4(%esp)
5073c4:	43                   	inc    %ebx
5073c5:	8b 45 00             	mov    0x0(%ebp),%eax
5073c8:	c7 40 14 51 00 00 00 	movl   $0x51,0x14(%eax)
5073cf:	8b 54 24 04          	mov    0x4(%esp),%edx
5073d3:	89 50 18             	mov    %edx,0x18(%eax)
5073d6:	8b c5                	mov    %ebp,%eax
5073d8:	ba 01 00 00 00       	mov    $0x1,%edx
5073dd:	8b 08                	mov    (%eax),%ecx
5073df:	ff 51 04             	call   *0x4(%ecx)
5073e2:	8b 44 24 04          	mov    0x4(%esp),%eax
5073e6:	89 85 10 01 00 00    	mov    %eax,0x110(%ebp)
5073ec:	89 1f                	mov    %ebx,(%edi)
5073ee:	89 77 04             	mov    %esi,0x4(%edi)
5073f1:	b8 01 00 00 00       	mov    $0x1,%eax
5073f6:	59                   	pop    %ecx
5073f7:	5a                   	pop    %edx
5073f8:	5d                   	pop    %ebp
5073f9:	5f                   	pop    %edi
5073fa:	5e                   	pop    %esi
5073fb:	5b                   	pop    %ebx
5073fc:	c3                   	ret
5073fd:	90                   	nop
5073fe:	90                   	nop
5073ff:	90                   	nop
507400:	53                   	push   %ebx
507401:	56                   	push   %esi
507402:	57                   	push   %edi
507403:	8b f0                	mov    %eax,%esi
507405:	55                   	push   %ebp
507406:	51                   	push   %ecx
507407:	8b 5e 14             	mov    0x14(%esi),%ebx
50740a:	8b 6b 04             	mov    0x4(%ebx),%ebp
50740d:	8b 3b                	mov    (%ebx),%edi
50740f:	85 ed                	test   %ebp,%ebp
507411:	75 12                	jne    0x507425
507413:	8b c6                	mov    %esi,%eax
507415:	ff 53 0c             	call   *0xc(%ebx)
507418:	85 c0                	test   %eax,%eax
50741a:	75 04                	jne    0x507420
50741c:	33 c0                	xor    %eax,%eax
50741e:	eb 6c                	jmp    0x50748c
507420:	8b 3b                	mov    (%ebx),%edi
507422:	8b 6b 04             	mov    0x4(%ebx),%ebp
507425:	33 c0                	xor    %eax,%eax
507427:	4d                   	dec    %ebp
507428:	8a 07                	mov    (%edi),%al
50742a:	47                   	inc    %edi
50742b:	c1 e0 08             	shl    $0x8,%eax
50742e:	85 ed                	test   %ebp,%ebp
507430:	89 04 24             	mov    %eax,(%esp)
507433:	75 12                	jne    0x507447
507435:	8b c6                	mov    %esi,%eax
507437:	ff 53 0c             	call   *0xc(%ebx)
50743a:	85 c0                	test   %eax,%eax
50743c:	75 04                	jne    0x507442
50743e:	33 c0                	xor    %eax,%eax
507440:	eb 4a                	jmp    0x50748c
507442:	8b 3b                	mov    (%ebx),%edi
507444:	8b 6b 04             	mov    0x4(%ebx),%ebp
507447:	33 c0                	xor    %eax,%eax
507449:	4d                   	dec    %ebp
50744a:	8a 07                	mov    (%edi),%al
50744c:	01 04 24             	add    %eax,(%esp)
50744f:	47                   	inc    %edi
507450:	8b 06                	mov    (%esi),%eax
507452:	c7 40 14 5a 00 00 00 	movl   $0x5a,0x14(%eax)
507459:	8b 96 98 01 00 00    	mov    0x198(%esi),%edx
50745f:	89 50 18             	mov    %edx,0x18(%eax)
507462:	ba 01 00 00 00       	mov    $0x1,%edx
507467:	8b 0c 24             	mov    (%esp),%ecx
50746a:	89 48 1c             	mov    %ecx,0x1c(%eax)
50746d:	8b c6                	mov    %esi,%eax
50746f:	8b 08                	mov    (%eax),%ecx
507471:	ff 51 04             	call   *0x4(%ecx)
507474:	8b c6                	mov    %esi,%eax
507476:	89 3b                	mov    %edi,(%ebx)
507478:	89 6b 04             	mov    %ebp,0x4(%ebx)
50747b:	8b 48 14             	mov    0x14(%eax),%ecx
50747e:	8b 14 24             	mov    (%esp),%edx
507481:	83 c2 fe             	add    $0xfffffffe,%edx
507484:	ff 51 10             	call   *0x10(%ecx)
507487:	b8 01 00 00 00       	mov    $0x1,%eax
50748c:	5a                   	pop    %edx
50748d:	5d                   	pop    %ebp
50748e:	5f                   	pop    %edi
50748f:	5e                   	pop    %esi
507490:	5b                   	pop    %ebx
507491:	c3                   	ret
507492:	90                   	nop
507493:	90                   	nop
507494:	53                   	push   %ebx
507495:	56                   	push   %esi
507496:	57                   	push   %edi
507497:	55                   	push   %ebp
507498:	51                   	push   %ecx
507499:	89 04 24             	mov    %eax,(%esp)
50749c:	8b 04 24             	mov    (%esp),%eax
50749f:	8b 78 14             	mov    0x14(%eax),%edi
5074a2:	8b 1f                	mov    (%edi),%ebx
5074a4:	8b 77 04             	mov    0x4(%edi),%esi
5074a7:	85 f6                	test   %esi,%esi
5074a9:	75 16                	jne    0x5074c1
5074ab:	8b 04 24             	mov    (%esp),%eax
5074ae:	ff 57 0c             	call   *0xc(%edi)
5074b1:	85 c0                	test   %eax,%eax
5074b3:	75 07                	jne    0x5074bc
5074b5:	33 c0                	xor    %eax,%eax
5074b7:	e9 e5 00 00 00       	jmp    0x5075a1
5074bc:	8b 1f                	mov    (%edi),%ebx
5074be:	8b 77 04             	mov    0x4(%edi),%esi
5074c1:	0f b6 2b             	movzbl (%ebx),%ebp
5074c4:	43                   	inc    %ebx
5074c5:	4e                   	dec    %esi
5074c6:	81 fd ff 00 00 00    	cmp    $0xff,%ebp
5074cc:	74 38                	je     0x507506
5074ce:	8b 04 24             	mov    (%esp),%eax
5074d1:	8b 90 b0 01 00 00    	mov    0x1b0(%eax),%edx
5074d7:	ff 42 5c             	incl   0x5c(%edx)
5074da:	89 1f                	mov    %ebx,(%edi)
5074dc:	89 77 04             	mov    %esi,0x4(%edi)
5074df:	85 f6                	test   %esi,%esi
5074e1:	75 16                	jne    0x5074f9
5074e3:	8b 04 24             	mov    (%esp),%eax
5074e6:	ff 57 0c             	call   *0xc(%edi)
5074e9:	85 c0                	test   %eax,%eax
5074eb:	75 07                	jne    0x5074f4
5074ed:	33 c0                	xor    %eax,%eax
5074ef:	e9 ad 00 00 00       	jmp    0x5075a1
5074f4:	8b 1f                	mov    (%edi),%ebx
5074f6:	8b 77 04             	mov    0x4(%edi),%esi
5074f9:	0f b6 2b             	movzbl (%ebx),%ebp
5074fc:	43                   	inc    %ebx
5074fd:	4e                   	dec    %esi
5074fe:	81 fd ff 00 00 00    	cmp    $0xff,%ebp
507504:	75 c8                	jne    0x5074ce
507506:	85 f6                	test   %esi,%esi
507508:	75 16                	jne    0x507520
50750a:	8b 04 24             	mov    (%esp),%eax
50750d:	ff 57 0c             	call   *0xc(%edi)
507510:	85 c0                	test   %eax,%eax
507512:	75 07                	jne    0x50751b
507514:	33 c0                	xor    %eax,%eax
507516:	e9 86 00 00 00       	jmp    0x5075a1
50751b:	8b 1f                	mov    (%edi),%ebx
50751d:	8b 77 04             	mov    0x4(%edi),%esi
507520:	0f b6 2b             	movzbl (%ebx),%ebp
507523:	43                   	inc    %ebx
507524:	4e                   	dec    %esi
507525:	81 fd ff 00 00 00    	cmp    $0xff,%ebp
50752b:	74 d9                	je     0x507506
50752d:	85 ed                	test   %ebp,%ebp
50752f:	75 17                	jne    0x507548
507531:	8b 04 24             	mov    (%esp),%eax
507534:	8b 90 b0 01 00 00    	mov    0x1b0(%eax),%edx
50753a:	83 42 5c 02          	addl   $0x2,0x5c(%edx)
50753e:	89 1f                	mov    %ebx,(%edi)
507540:	89 77 04             	mov    %esi,0x4(%edi)
507543:	e9 5f ff ff ff       	jmp    0x5074a7
507548:	8b 0c 24             	mov    (%esp),%ecx
50754b:	8b 81 b0 01 00 00    	mov    0x1b0(%ecx),%eax
507551:	83 78 5c 00          	cmpl   $0x0,0x5c(%eax)
507555:	74 37                	je     0x50758e
507557:	8b 14 24             	mov    (%esp),%edx
50755a:	8b 02                	mov    (%edx),%eax
50755c:	c7 40 14 70 00 00 00 	movl   $0x70,0x14(%eax)
507563:	8b 14 24             	mov    (%esp),%edx
507566:	8b 8a b0 01 00 00    	mov    0x1b0(%edx),%ecx
50756c:	8b 51 5c             	mov    0x5c(%ecx),%edx
50756f:	89 50 18             	mov    %edx,0x18(%eax)
507572:	89 68 1c             	mov    %ebp,0x1c(%eax)
507575:	83 ca ff             	or     $0xffffffff,%edx
507578:	8b 04 24             	mov    (%esp),%eax
50757b:	8b 08                	mov    (%eax),%ecx
50757d:	ff 51 04             	call   *0x4(%ecx)
507580:	8b 04 24             	mov    (%esp),%eax
507583:	8b 90 b0 01 00 00    	mov    0x1b0(%eax),%edx
507589:	33 c9                	xor    %ecx,%ecx
50758b:	89 4a 5c             	mov    %ecx,0x5c(%edx)
50758e:	8b 04 24             	mov    (%esp),%eax
507591:	89 a8 98 01 00 00    	mov    %ebp,0x198(%eax)
507597:	89 1f                	mov    %ebx,(%edi)
507599:	89 77 04             	mov    %esi,0x4(%edi)
50759c:	b8 01 00 00 00       	mov    $0x1,%eax
5075a1:	5a                   	pop    %edx
5075a2:	5d                   	pop    %ebp
5075a3:	5f                   	pop    %edi
5075a4:	5e                   	pop    %esi
5075a5:	5b                   	pop    %ebx
5075a6:	c3                   	ret
5075a7:	90                   	nop
5075a8:	53                   	push   %ebx
5075a9:	56                   	push   %esi
5075aa:	57                   	push   %edi
5075ab:	55                   	push   %ebp
5075ac:	83 c4 f8             	add    $0xfffffff8,%esp
5075af:	8b e8                	mov    %eax,%ebp
5075b1:	8b 5d 14             	mov    0x14(%ebp),%ebx
5075b4:	8b 33                	mov    (%ebx),%esi
5075b6:	8b 7b 04             	mov    0x4(%ebx),%edi
5075b9:	85 ff                	test   %edi,%edi
5075bb:	75 12                	jne    0x5075cf
5075bd:	8b c5                	mov    %ebp,%eax
5075bf:	ff 53 0c             	call   *0xc(%ebx)
5075c2:	85 c0                	test   %eax,%eax
5075c4:	75 04                	jne    0x5075ca
5075c6:	33 c0                	xor    %eax,%eax
5075c8:	eb 72                	jmp    0x50763c
5075ca:	8b 33                	mov    (%ebx),%esi
5075cc:	8b 7b 04             	mov    0x4(%ebx),%edi
5075cf:	4f                   	dec    %edi
5075d0:	33 c0                	xor    %eax,%eax
5075d2:	8a 06                	mov    (%esi),%al
5075d4:	89 04 24             	mov    %eax,(%esp)
5075d7:	46                   	inc    %esi
5075d8:	85 ff                	test   %edi,%edi
5075da:	75 12                	jne    0x5075ee
5075dc:	8b c5                	mov    %ebp,%eax
5075de:	ff 53 0c             	call   *0xc(%ebx)
5075e1:	85 c0                	test   %eax,%eax
5075e3:	75 04                	jne    0x5075e9
5075e5:	33 c0                	xor    %eax,%eax
5075e7:	eb 53                	jmp    0x50763c
5075e9:	8b 33                	mov    (%ebx),%esi
5075eb:	8b 7b 04             	mov    0x4(%ebx),%edi
5075ee:	4f                   	dec    %edi
5075ef:	33 c0                	xor    %eax,%eax
5075f1:	8a 06                	mov    (%esi),%al
5075f3:	89 44 24 04          	mov    %eax,0x4(%esp)
5075f7:	46                   	inc    %esi
5075f8:	81 3c 24 ff 00 00 00 	cmpl   $0xff,(%esp)
5075ff:	75 0a                	jne    0x50760b
507601:	81 7c 24 04 d8 00 00 	cmpl   $0xd8,0x4(%esp)
507608:	00
507609:	74 1d                	je     0x507628
50760b:	8b 45 00             	mov    0x0(%ebp),%eax
50760e:	c7 40 14 34 00 00 00 	movl   $0x34,0x14(%eax)
507615:	8b 14 24             	mov    (%esp),%edx
507618:	89 50 18             	mov    %edx,0x18(%eax)
50761b:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50761f:	89 48 1c             	mov    %ecx,0x1c(%eax)
507622:	8b c5                	mov    %ebp,%eax
507624:	8b 10                	mov    (%eax),%edx
507626:	ff 12                	call   *(%edx)
507628:	8b 4c 24 04          	mov    0x4(%esp),%ecx
50762c:	b8 01 00 00 00       	mov    $0x1,%eax
507631:	89 8d 98 01 00 00    	mov    %ecx,0x198(%ebp)
507637:	89 33                	mov    %esi,(%ebx)
507639:	89 7b 04             	mov    %edi,0x4(%ebx)
50763c:	59                   	pop    %ecx
50763d:	5a                   	pop    %edx
50763e:	5d                   	pop    %ebp
50763f:	5f                   	pop    %edi
507640:	5e                   	pop    %esi
507641:	5b                   	pop    %ebx
507642:	c3                   	ret
507643:	90                   	nop
507644:	53                   	push   %ebx
507645:	56                   	push   %esi
507646:	8b d8                	mov    %eax,%ebx
507648:	83 bb 98 01 00 00 00 	cmpl   $0x0,0x198(%ebx)
50764f:	75 2c                	jne    0x50767d
507651:	8b 83 b0 01 00 00    	mov    0x1b0(%ebx),%eax
507657:	83 78 50 00          	cmpl   $0x0,0x50(%eax)
50765b:	75 10                	jne    0x50766d
50765d:	8b c3                	mov    %ebx,%eax
50765f:	e8 44 ff ff ff       	call   0x5075a8
507664:	85 c0                	test   %eax,%eax
507666:	75 15                	jne    0x50767d
507668:	33 c0                	xor    %eax,%eax
50766a:	5e                   	pop    %esi
50766b:	5b                   	pop    %ebx
50766c:	c3                   	ret
50766d:	8b c3                	mov    %ebx,%eax
50766f:	e8 20 fe ff ff       	call   0x507494
507674:	85 c0                	test   %eax,%eax
507676:	75 05                	jne    0x50767d
507678:	33 c0                	xor    %eax,%eax
50767a:	5e                   	pop    %esi
50767b:	5b                   	pop    %ebx
50767c:	c3                   	ret
50767d:	8b 93 98 01 00 00    	mov    0x198(%ebx),%edx
507683:	81 fa cd 00 00 00    	cmp    $0xcd,%edx
507689:	7d 7f                	jge    0x50770a
50768b:	81 fa c5 00 00 00    	cmp    $0xc5,%edx
507691:	7d 41                	jge    0x5076d4
507693:	81 fa c2 00 00 00    	cmp    $0xc2,%edx
507699:	7f 21                	jg     0x5076bc
50769b:	0f 84 1e 01 00 00    	je     0x5077bf
5076a1:	4a                   	dec    %edx
5076a2:	0f 84 51 02 00 00    	je     0x5078f9
5076a8:	81 c2 41 ff ff ff    	add    $0xffffff41,%edx
5076ae:	83 ea 02             	sub    $0x2,%edx
5076b1:	0f 82 f0 00 00 00    	jb     0x5077a7
5076b7:	e9 6d 02 00 00       	jmp    0x507929
5076bc:	81 ea c3 00 00 00    	sub    $0xc3,%edx
5076c2:	0f 84 4b 01 00 00    	je     0x507813
5076c8:	4a                   	dec    %edx
5076c9:	0f 84 ba 01 00 00    	je     0x507889