50650a:	3b f2                	cmp    %edx,%esi
50650c:	75 0e                	jne    0x50651c
50650e:	83 7c 24 04 01       	cmpl   $0x1,0x4(%esp)
506513:	7c 07                	jl     0x50651c
506515:	83 7c 24 04 04       	cmpl   $0x4,0x4(%esp)
50651a:	7e 0f                	jle    0x50652b
50651c:	8b 0b                	mov    (%ebx),%ecx
50651e:	8b c3                	mov    %ebx,%eax
506520:	c7 41 14 09 00 00 00 	movl   $0x9,0x14(%ecx)
506527:	8b 10                	mov    (%eax),%edx
506529:	ff 12                	call   *(%edx)
50652b:	8b 03                	mov    (%ebx),%eax
50652d:	c7 40 14 66 00 00 00 	movl   $0x66,0x14(%eax)
506534:	8b 54 24 04          	mov    0x4(%esp),%edx
506538:	89 50 18             	mov    %edx,0x18(%eax)
50653b:	8b c3                	mov    %ebx,%eax
50653d:	ba 01 00 00 00       	mov    $0x1,%edx
506542:	8b 08                	mov    (%eax),%ecx
506544:	ff 51 04             	call   *0x4(%ecx)
506547:	8b 44 24 04          	mov    0x4(%esp),%eax
50654b:	89 83 40 01 00 00    	mov    %eax,0x140(%ebx)
506551:	33 d2                	xor    %edx,%edx
506553:	89 14 24             	mov    %edx,(%esp)
506556:	8d 8b 44 01 00 00    	lea    0x144(%ebx),%ecx
50655c:	89 4c 24 14          	mov    %ecx,0x14(%esp)
506560:	8b 04 24             	mov    (%esp),%eax
506563:	3b 44 24 04          	cmp    0x4(%esp),%eax
506567:	0f 8d ed 00 00 00    	jge    0x50665a
50656d:	85 ed                	test   %ebp,%ebp
50656f:	75 21                	jne    0x506592
506571:	8b 74 24 10          	mov    0x10(%esp),%esi
506575:	8b c3                	mov    %ebx,%eax
506577:	ff 56 0c             	call   *0xc(%esi)
50657a:	85 c0                	test   %eax,%eax
50657c:	75 07                	jne    0x506585
50657e:	33 c0                	xor    %eax,%eax
506580:	e9 f3 01 00 00       	jmp    0x506778
506585:	8b 54 24 10          	mov    0x10(%esp),%edx
506589:	8b 44 24 10          	mov    0x10(%esp),%eax
50658d:	8b 68 04             	mov    0x4(%eax),%ebp
506590:	8b 3a                	mov    (%edx),%edi
506592:	4d                   	dec    %ebp
506593:	33 c0                	xor    %eax,%eax
506595:	8a 07                	mov    (%edi),%al
506597:	89 44 24 0c          	mov    %eax,0xc(%esp)
50659b:	47                   	inc    %edi
50659c:	85 ed                	test   %ebp,%ebp
50659e:	75 21                	jne    0x5065c1
5065a0:	8b 74 24 10          	mov    0x10(%esp),%esi
5065a4:	8b c3                	mov    %ebx,%eax
5065a6:	ff 56 0c             	call   *0xc(%esi)
5065a9:	85 c0                	test   %eax,%eax
5065ab:	75 07                	jne    0x5065b4
5065ad:	33 c0                	xor    %eax,%eax
5065af:	e9 c4 01 00 00       	jmp    0x506778
5065b4:	8b 54 24 10          	mov    0x10(%esp),%edx
5065b8:	8b 44 24 10          	mov    0x10(%esp),%eax
5065bc:	8b 68 04             	mov    0x4(%eax),%ebp
5065bf:	8b 3a                	mov    (%edx),%edi
5065c1:	33 c0                	xor    %eax,%eax
5065c3:	4d                   	dec    %ebp
5065c4:	8a 07                	mov    (%edi),%al
5065c6:	47                   	inc    %edi
5065c7:	89 44 24 08          	mov    %eax,0x8(%esp)
5065cb:	33 c0                	xor    %eax,%eax
5065cd:	8b b3 d4 00 00 00    	mov    0xd4(%ebx),%esi
5065d3:	eb 0c                	jmp    0x5065e1
5065d5:	8b 54 24 0c          	mov    0xc(%esp),%edx
5065d9:	3b 16                	cmp    (%esi),%edx
5065db:	74 1f                	je     0x5065fc
5065dd:	40                   	inc    %eax
5065de:	83 c6 54             	add    $0x54,%esi
5065e1:	3b 43 20             	cmp    0x20(%ebx),%eax
5065e4:	7c ef                	jl     0x5065d5
5065e6:	8b 03                	mov    (%ebx),%eax
5065e8:	c7 40 14 05 00 00 00 	movl   $0x5,0x14(%eax)
5065ef:	8b 4c 24 0c          	mov    0xc(%esp),%ecx
5065f3:	89 48 18             	mov    %ecx,0x18(%eax)
5065f6:	8b c3                	mov    %ebx,%eax
5065f8:	8b 10                	mov    (%eax),%edx
5065fa:	ff 12                	call   *(%edx)
5065fc:	8b 4c 24 14          	mov    0x14(%esp),%ecx
506600:	89 31                	mov    %esi,(%ecx)
506602:	8b 44 24 08          	mov    0x8(%esp),%eax
506606:	c1 f8 04             	sar    $0x4,%eax
506609:	83 e0 0f             	and    $0xf,%eax
50660c:	89 46 14             	mov    %eax,0x14(%esi)
50660f:	8b 54 24 08          	mov    0x8(%esp),%edx
506613:	83 e2 0f             	and    $0xf,%edx
506616:	89 56 18             	mov    %edx,0x18(%esi)
506619:	8b 03                	mov    (%ebx),%eax
50661b:	83 c0 18             	add    $0x18,%eax
50661e:	8b 54 24 0c          	mov    0xc(%esp),%edx
506622:	89 10                	mov    %edx,(%eax)
506624:	8b 4e 14             	mov    0x14(%esi),%ecx
506627:	89 48 04             	mov    %ecx,0x4(%eax)
50662a:	8b 56 18             	mov    0x18(%esi),%edx
50662d:	89 50 08             	mov    %edx,0x8(%eax)
506630:	8b 03                	mov    (%ebx),%eax
506632:	c7 40 14 67 00 00 00 	movl   $0x67,0x14(%eax)
506639:	ba 01 00 00 00       	mov    $0x1,%edx
50663e:	8b c3                	mov    %ebx,%eax
506640:	8b 08                	mov    (%eax),%ecx
506642:	ff 51 04             	call   *0x4(%ecx)
506645:	ff 04 24             	incl   (%esp)
506648:	83 44 24 14 04       	addl   $0x4,0x14(%esp)
50664d:	8b 04 24             	mov    (%esp),%eax
506650:	3b 44 24 04          	cmp    0x4(%esp),%eax
506654:	0f 8c 13 ff ff ff    	jl     0x50656d
50665a:	85 ed                	test   %ebp,%ebp
50665c:	75 21                	jne    0x50667f
50665e:	8b 74 24 10          	mov    0x10(%esp),%esi
506662:	8b c3                	mov    %ebx,%eax
506664:	ff 56 0c             	call   *0xc(%esi)
506667:	85 c0                	test   %eax,%eax
506669:	75 07                	jne    0x506672
50666b:	33 c0                	xor    %eax,%eax
50666d:	e9 06 01 00 00       	jmp    0x506778
506672:	8b 54 24 10          	mov    0x10(%esp),%edx
506676:	8b 44 24 10          	mov    0x10(%esp),%eax
50667a:	8b 68 04             	mov    0x4(%eax),%ebp
50667d:	8b 3a                	mov    (%edx),%edi
50667f:	33 c0                	xor    %eax,%eax
506681:	4d                   	dec    %ebp
506682:	8a 07                	mov    (%edi),%al
506684:	47                   	inc    %edi
506685:	89 44 24 08          	mov    %eax,0x8(%esp)
506689:	85 ed                	test   %ebp,%ebp
50668b:	8b 54 24 08          	mov    0x8(%esp),%edx
50668f:	89 93 88 01 00 00    	mov    %edx,0x188(%ebx)
506695:	75 21                	jne    0x5066b8
506697:	8b 74 24 10          	mov    0x10(%esp),%esi
50669b:	8b c3                	mov    %ebx,%eax
50669d:	ff 56 0c             	call   *0xc(%esi)
5066a0:	85 c0                	test   %eax,%eax
5066a2:	75 07                	jne    0x5066ab
5066a4:	33 c0                	xor    %eax,%eax
5066a6:	e9 cd 00 00 00       	jmp    0x506778
5066ab:	8b 54 24 10          	mov    0x10(%esp),%edx
5066af:	8b 44 24 10          	mov    0x10(%esp),%eax
5066b3:	8b 68 04             	mov    0x4(%eax),%ebp
5066b6:	8b 3a                	mov    (%edx),%edi
5066b8:	33 c0                	xor    %eax,%eax
5066ba:	4d                   	dec    %ebp
5066bb:	8a 07                	mov    (%edi),%al
5066bd:	47                   	inc    %edi
5066be:	89 44 24 08          	mov    %eax,0x8(%esp)
5066c2:	85 ed                	test   %ebp,%ebp
5066c4:	8b 54 24 08          	mov    0x8(%esp),%edx
5066c8:	89 93 8c 01 00 00    	mov    %edx,0x18c(%ebx)
5066ce:	75 21                	jne    0x5066f1
5066d0:	8b 74 24 10          	mov    0x10(%esp),%esi
5066d4:	8b c3                	mov    %ebx,%eax
5066d6:	ff 56 0c             	call   *0xc(%esi)
5066d9:	85 c0                	test   %eax,%eax
5066db:	75 07                	jne    0x5066e4
5066dd:	33 c0                	xor    %eax,%eax
5066df:	e9 94 00 00 00       	jmp    0x506778
5066e4:	8b 54 24 10          	mov    0x10(%esp),%edx
5066e8:	8b 44 24 10          	mov    0x10(%esp),%eax
5066ec:	8b 68 04             	mov    0x4(%eax),%ebp
5066ef:	8b 3a                	mov    (%edx),%edi
5066f1:	4d                   	dec    %ebp
5066f2:	33 c0                	xor    %eax,%eax
5066f4:	8a 07                	mov    (%edi),%al
5066f6:	89 44 24 08          	mov    %eax,0x8(%esp)
5066fa:	47                   	inc    %edi
5066fb:	8b 54 24 08          	mov    0x8(%esp),%edx
5066ff:	c1 fa 04             	sar    $0x4,%edx
506702:	83 e2 0f             	and    $0xf,%edx
506705:	89 93 90 01 00 00    	mov    %edx,0x190(%ebx)
50670b:	8b 4c 24 08          	mov    0x8(%esp),%ecx
50670f:	83 e1 0f             	and    $0xf,%ecx
506712:	89 8b 94 01 00 00    	mov    %ecx,0x194(%ebx)
506718:	8b 03                	mov    (%ebx),%eax
50671a:	83 c0 18             	add    $0x18,%eax
50671d:	8b 93 88 01 00 00    	mov    0x188(%ebx),%edx
506723:	89 10                	mov    %edx,(%eax)
506725:	8b 8b 8c 01 00 00    	mov    0x18c(%ebx),%ecx
50672b:	89 48 04             	mov    %ecx,0x4(%eax)
50672e:	8b 93 90 01 00 00    	mov    0x190(%ebx),%edx
506734:	89 50 08             	mov    %edx,0x8(%eax)
506737:	8b 8b 94 01 00 00    	mov    0x194(%ebx),%ecx
50673d:	89 48 0c             	mov    %ecx,0xc(%eax)
506740:	8b 03                	mov    (%ebx),%eax
506742:	c7 40 14 68 00 00 00 	movl   $0x68,0x14(%eax)
506749:	ba 01 00 00 00       	mov    $0x1,%edx
50674e:	8b c3                	mov    %ebx,%eax
506750:	8b 08                	mov    (%eax),%ecx
506752:	ff 51 04             	call   *0x4(%ecx)
506755:	8b 83 b0 01 00 00    	mov    0x1b0(%ebx),%eax
50675b:	33 d2                	xor    %edx,%edx
50675d:	89 50 58             	mov    %edx,0x58(%eax)
506760:	ff 83 8c 00 00 00    	incl   0x8c(%ebx)
506766:	8b 4c 24 10          	mov    0x10(%esp),%ecx
50676a:	89 39                	mov    %edi,(%ecx)
50676c:	8b 44 24 10          	mov    0x10(%esp),%eax
506770:	89 68 04             	mov    %ebp,0x4(%eax)
506773:	b8 01 00 00 00       	mov    $0x1,%eax
506778:	83 c4 18             	add    $0x18,%esp
50677b:	5d                   	pop    %ebp
50677c:	5f                   	pop    %edi
50677d:	5e                   	pop    %esi
50677e:	5b                   	pop    %ebx
50677f:	c3                   	ret
506780:	53                   	push   %ebx
506781:	8b d8                	mov    %eax,%ebx
506783:	56                   	push   %esi
506784:	57                   	push   %edi
506785:	55                   	push   %ebp
506786:	83 c4 e4             	add    $0xffffffe4,%esp
506789:	8b 6b 14             	mov    0x14(%ebx),%ebp
50678c:	8b 7d 04             	mov    0x4(%ebp),%edi
50678f:	8b 75 00             	mov    0x0(%ebp),%esi
506792:	85 ff                	test   %edi,%edi
506794:	75 16                	jne    0x5067ac
506796:	8b c3                	mov    %ebx,%eax
506798:	ff 55 0c             	call   *0xc(%ebp)
50679b:	85 c0                	test   %eax,%eax
50679d:	75 07                	jne    0x5067a6
50679f:	33 c0                	xor    %eax,%eax
5067a1:	e9 54 02 00 00       	jmp    0x5069fa
5067a6:	8b 75 00             	mov    0x0(%ebp),%esi
5067a9:	8b 7d 04             	mov    0x4(%ebp),%edi
5067ac:	33 c0                	xor    %eax,%eax
5067ae:	4f                   	dec    %edi
5067af:	8a 06                	mov    (%esi),%al
5067b1:	46                   	inc    %esi
5067b2:	c1 e0 08             	shl    $0x8,%eax
5067b5:	85 ff                	test   %edi,%edi
5067b7:	89 04 24             	mov    %eax,(%esp)
5067ba:	75 16                	jne    0x5067d2
5067bc:	8b c3                	mov    %ebx,%eax
5067be:	ff 55 0c             	call   *0xc(%ebp)
5067c1:	85 c0                	test   %eax,%eax
5067c3:	75 07                	jne    0x5067cc
5067c5:	33 c0                	xor    %eax,%eax
5067c7:	e9 2e 02 00 00       	jmp    0x5069fa
5067cc:	8b 75 00             	mov    0x0(%ebp),%esi
5067cf:	8b 7d 04             	mov    0x4(%ebp),%edi
5067d2:	4f                   	dec    %edi
5067d3:	33 c0                	xor    %eax,%eax
5067d5:	8a 06                	mov    (%esi),%al
5067d7:	01 04 24             	add    %eax,(%esp)
5067da:	46                   	inc    %esi
5067db:	83 2c 24 02          	subl   $0x2,(%esp)
5067df:	83 3c 24 0e          	cmpl   $0xe,(%esp)
5067e3:	0f 8c da 01 00 00    	jl     0x5069c3
5067e9:	33 d2                	xor    %edx,%edx
5067eb:	8d 4c 24 0c          	lea    0xc(%esp),%ecx
5067ef:	89 54 24 04          	mov    %edx,0x4(%esp)
5067f3:	89 4c 24 08          	mov    %ecx,0x8(%esp)
5067f7:	85 ff                	test   %edi,%edi
5067f9:	75 16                	jne    0x506811
5067fb:	8b c3                	mov    %ebx,%eax
5067fd:	ff 55 0c             	call   *0xc(%ebp)
506800:	85 c0                	test   %eax,%eax
506802:	75 07                	jne    0x50680b
506804:	33 c0                	xor    %eax,%eax
506806:	e9 ef 01 00 00       	jmp    0x5069fa
50680b:	8b 75 00             	mov    0x0(%ebp),%esi
50680e:	8b 7d 04             	mov    0x4(%ebp),%edi
506811:	4f                   	dec    %edi
506812:	8b 44 24 08          	mov    0x8(%esp),%eax
506816:	8a 16                	mov    (%esi),%dl
506818:	88 10                	mov    %dl,(%eax)
50681a:	46                   	inc    %esi
50681b:	ff 44 24 04          	incl   0x4(%esp)
50681f:	ff 44 24 08          	incl   0x8(%esp)
506823:	83 7c 24 04 0e       	cmpl   $0xe,0x4(%esp)
506828:	7c cd                	jl     0x5067f7
50682a:	83 2c 24 0e          	subl   $0xe,(%esp)
50682e:	80 7c 24 0c 4a       	cmpb   $0x4a,0xc(%esp)
506833:	0f 85 6a 01 00 00    	jne    0x5069a3
506839:	80 7c 24 0d 46       	cmpb   $0x46,0xd(%esp)
50683e:	0f 85 5f 01 00 00    	jne    0x5069a3
506844:	80 7c 24 0e 49       	cmpb   $0x49,0xe(%esp)
506849:	0f 85 54 01 00 00    	jne    0x5069a3
50684f:	80 7c 24 0f 46       	cmpb   $0x46,0xf(%esp)
506854:	0f 85 49 01 00 00    	jne    0x5069a3
50685a:	80 7c 24 10 00       	cmpb   $0x0,0x10(%esp)
50685f:	0f 85 3e 01 00 00    	jne    0x5069a3
506865:	80 7c 24 11 01       	cmpb   $0x1,0x11(%esp)
50686a:	74 27                	je     0x506893
50686c:	8b 03                	mov    (%ebx),%eax
50686e:	33 d2                	xor    %edx,%edx
506870:	33 c9                	xor    %ecx,%ecx
506872:	c7 40 14 73 00 00 00 	movl   $0x73,0x14(%eax)
506879:	8a 54 24 11          	mov    0x11(%esp),%dl
50687d:	89 50 18             	mov    %edx,0x18(%eax)
506880:	83 ca ff             	or     $0xffffffff,%edx
506883:	8a 4c 24 12          	mov    0x12(%esp),%cl
506887:	89 48 1c             	mov    %ecx,0x1c(%eax)
50688a:	8b c3                	mov    %ebx,%eax
50688c:	8b 08                	mov    (%eax),%ecx
50688e:	ff 51 04             	call   *0x4(%ecx)
506891:	eb 2e                	jmp    0x5068c1
506893:	80 7c 24 12 02       	cmpb   $0x2,0x12(%esp)
506898:	76 27                	jbe    0x5068c1
50689a:	8b 03                	mov    (%ebx),%eax
50689c:	33 d2                	xor    %edx,%edx
50689e:	33 c9                	xor    %ecx,%ecx
5068a0:	c7 40 14 58 00 00 00 	movl   $0x58,0x14(%eax)
5068a7:	8a 54 24 11          	mov    0x11(%esp),%dl
5068ab:	89 50 18             	mov    %edx,0x18(%eax)
5068ae:	ba 01 00 00 00       	mov    $0x1,%edx
5068b3:	8a 4c 24 12          	mov    0x12(%esp),%cl
5068b7:	89 48 1c             	mov    %ecx,0x1c(%eax)
5068ba:	8b c3                	mov    %ebx,%eax
5068bc:	8b 08                	mov    (%eax),%ecx
5068be:	ff 51 04             	call   *0x4(%ecx)
5068c1:	c7 83 14 01 00 00 01 	movl   $0x1,0x114(%ebx)
5068c8:	00 00 00
5068cb:	8a 44 24 13          	mov    0x13(%esp),%al
5068cf:	33 d2                	xor    %edx,%edx
5068d1:	88 83 18 01 00 00    	mov    %al,0x118(%ebx)
5068d7:	33 c9                	xor    %ecx,%ecx
5068d9:	8a 54 24 14          	mov    0x14(%esp),%dl
5068dd:	8a 4c 24 15          	mov    0x15(%esp),%cl
5068e1:	c1 e2 08             	shl    $0x8,%edx
5068e4:	33 c0                	xor    %eax,%eax
5068e6:	66 03 d1             	add    %cx,%dx
5068e9:	66 89 93 1a 01 00 00 	mov    %dx,0x11a(%ebx)
5068f0:	33 d2                	xor    %edx,%edx
5068f2:	8a 44 24 16          	mov    0x16(%esp),%al
5068f6:	8a 54 24 17          	mov    0x17(%esp),%dl
5068fa:	c1 e0 08             	shl    $0x8,%eax
5068fd:	66 03 c2             	add    %dx,%ax
506900:	66 89 83 1c 01 00 00 	mov    %ax,0x11c(%ebx)
506907:	8b 03                	mov    (%ebx),%eax
506909:	83 c0 18             	add    $0x18,%eax
50690c:	0f b7 93 1a 01 00 00 	movzwl 0x11a(%ebx),%edx
506913:	89 10                	mov    %edx,(%eax)
506915:	0f b7 8b 1c 01 00 00 	movzwl 0x11c(%ebx),%ecx
50691c:	89 48 04             	mov    %ecx,0x4(%eax)
50691f:	33 d2                	xor    %edx,%edx
506921:	8a 93 18 01 00 00    	mov    0x118(%ebx),%dl
506927:	89 50 08             	mov    %edx,0x8(%eax)
50692a:	8b 03                	mov    (%ebx),%eax
50692c:	c7 40 14 56 00 00 00 	movl   $0x56,0x14(%eax)
506933:	ba 01 00 00 00       	mov    $0x1,%edx
506938:	8b c3                	mov    %ebx,%eax
50693a:	8b 08                	mov    (%eax),%ecx
50693c:	ff 51 04             	call   *0x4(%ecx)
50693f:	8a 44 24 18          	mov    0x18(%esp),%al
506943:	0a 44 24 19          	or     0x19(%esp),%al
506947:	74 27                	je     0x506970
506949:	8b 03                	mov    (%ebx),%eax
50694b:	33 d2                	xor    %edx,%edx
50694d:	33 c9                	xor    %ecx,%ecx