500332:	ba 01 00 00 00       	mov    $0x1,%edx
500337:	8b 78 04             	mov    0x4(%eax),%edi
50033a:	ff 17                	call   *(%edi)
50033c:	89 43 18             	mov    %eax,0x18(%ebx)
50033f:	8b c6                	mov    %esi,%eax
500341:	b9 00 04 00 00       	mov    $0x400,%ecx
500346:	ba 01 00 00 00       	mov    $0x1,%edx
50034b:	8b 70 04             	mov    0x4(%eax),%esi
50034e:	ff 16                	call   *(%esi)
500350:	89 43 1c             	mov    %eax,0x1c(%ebx)
500353:	33 c0                	xor    %eax,%eax
500355:	ba 80 ff ff ff       	mov    $0xffffff80,%edx
50035a:	69 ca e9 66 01 00    	imul   $0x166e9,%edx,%ecx
500360:	81 c1 00 80 00 00    	add    $0x8000,%ecx
500366:	8b 73 10             	mov    0x10(%ebx),%esi
500369:	c1 f9 10             	sar    $0x10,%ecx
50036c:	89 0c 86             	mov    %ecx,(%esi,%eax,4)
50036f:	69 ca a2 c5 01 00    	imul   $0x1c5a2,%edx,%ecx
500375:	81 c1 00 80 00 00    	add    $0x8000,%ecx
50037b:	8b 73 14             	mov    0x14(%ebx),%esi
50037e:	c1 f9 10             	sar    $0x10,%ecx
500381:	89 0c 86             	mov    %ecx,(%esi,%eax,4)
500384:	69 ca 2e 49 ff ff    	imul   $0xffff492e,%edx,%ecx
50038a:	8b 73 18             	mov    0x18(%ebx),%esi
50038d:	89 0c 86             	mov    %ecx,(%esi,%eax,4)
500390:	69 ca e6 a7 ff ff    	imul   $0xffffa7e6,%edx,%ecx
500396:	8b 73 1c             	mov    0x1c(%ebx),%esi
500399:	81 c1 00 80 00 00    	add    $0x8000,%ecx
50039f:	42                   	inc    %edx
5003a0:	89 0c 86             	mov    %ecx,(%esi,%eax,4)
5003a3:	40                   	inc    %eax
5003a4:	3d ff 00 00 00       	cmp    $0xff,%eax
5003a9:	7e af                	jle    0x50035a
5003ab:	5f                   	pop    %edi
5003ac:	5e                   	pop    %esi
5003ad:	5b                   	pop    %ebx
5003ae:	c3                   	ret
5003af:	90                   	nop
5003b0:	8b 90 bc 01 00 00    	mov    0x1bc(%eax),%edx
5003b6:	33 c9                	xor    %ecx,%ecx
5003b8:	89 4a 24             	mov    %ecx,0x24(%edx)
5003bb:	8b 40 70             	mov    0x70(%eax),%eax
5003be:	89 42 2c             	mov    %eax,0x2c(%edx)
5003c1:	c3                   	ret
5003c2:	90                   	nop
5003c3:	90                   	nop
5003c4:	55                   	push   %ebp
5003c5:	8b ec                	mov    %esp,%ebp
5003c7:	83 c4 ec             	add    $0xffffffec,%esp
5003ca:	53                   	push   %ebx
5003cb:	56                   	push   %esi
5003cc:	89 4d f4             	mov    %ecx,-0xc(%ebp)
5003cf:	89 55 f8             	mov    %edx,-0x8(%ebp)
5003d2:	89 45 fc             	mov    %eax,-0x4(%ebp)
5003d5:	8b 45 fc             	mov    -0x4(%ebp),%eax
5003d8:	8b 4d 08             	mov    0x8(%ebp),%ecx
5003db:	8b 55 10             	mov    0x10(%ebp),%edx
5003de:	8b 98 bc 01 00 00    	mov    0x1bc(%eax),%ebx
5003e4:	83 7b 24 00          	cmpl   $0x0,0x24(%ebx)
5003e8:	74 28                	je     0x500412
5003ea:	6a 00                	push   $0x0
5003ec:	6a 01                	push   $0x1
5003ee:	8b 43 28             	mov    0x28(%ebx),%eax
5003f1:	50                   	push   %eax
5003f2:	8b 4d 0c             	mov    0xc(%ebp),%ecx
5003f5:	8b 09                	mov    (%ecx),%ecx
5003f7:	c1 e1 02             	shl    $0x2,%ecx
5003fa:	03 ca                	add    %edx,%ecx
5003fc:	8d 43 20             	lea    0x20(%ebx),%eax
5003ff:	33 d2                	xor    %edx,%edx
500401:	e8 8e 77 00 00       	call   0x507b94
500406:	be 01 00 00 00       	mov    $0x1,%esi
50040b:	33 c0                	xor    %eax,%eax
50040d:	89 43 24             	mov    %eax,0x24(%ebx)
500410:	eb 4e                	jmp    0x500460
500412:	be 02 00 00 00       	mov    $0x2,%esi
500417:	8b 43 2c             	mov    0x2c(%ebx),%eax
50041a:	3b f0                	cmp    %eax,%esi
50041c:	76 02                	jbe    0x500420
50041e:	8b f0                	mov    %eax,%esi
500420:	8b 45 0c             	mov    0xc(%ebp),%eax
500423:	8b 00                	mov    (%eax),%eax
500425:	2b c8                	sub    %eax,%ecx
500427:	3b ce                	cmp    %esi,%ecx
500429:	73 02                	jae    0x50042d
50042b:	8b f1                	mov    %ecx,%esi
50042d:	8b 0c 82             	mov    (%edx,%eax,4),%ecx
500430:	83 fe 01             	cmp    $0x1,%esi
500433:	89 4d ec             	mov    %ecx,-0x14(%ebp)
500436:	76 09                	jbe    0x500441
500438:	8b 44 82 04          	mov    0x4(%edx,%eax,4),%eax
50043c:	89 45 f0             	mov    %eax,-0x10(%ebp)
50043f:	eb 0d                	jmp    0x50044e
500441:	8b 53 20             	mov    0x20(%ebx),%edx
500444:	89 55 f0             	mov    %edx,-0x10(%ebp)
500447:	c7 43 24 01 00 00 00 	movl   $0x1,0x24(%ebx)
50044e:	8d 45 ec             	lea    -0x14(%ebp),%eax
500451:	50                   	push   %eax
500452:	8b 55 f4             	mov    -0xc(%ebp),%edx
500455:	8b 45 fc             	mov    -0x4(%ebp),%eax
500458:	8b 0a                	mov    (%edx),%ecx
50045a:	8b 55 f8             	mov    -0x8(%ebp),%edx
50045d:	ff 53 0c             	call   *0xc(%ebx)
500460:	8b 4d 0c             	mov    0xc(%ebp),%ecx
500463:	01 31                	add    %esi,(%ecx)
500465:	29 73 2c             	sub    %esi,0x2c(%ebx)
500468:	83 7b 24 00          	cmpl   $0x0,0x24(%ebx)
50046c:	75 05                	jne    0x500473
50046e:	8b 45 f4             	mov    -0xc(%ebp),%eax
500471:	ff 00                	incl   (%eax)
500473:	5e                   	pop    %esi
500474:	5b                   	pop    %ebx
500475:	8b e5                	mov    %ebp,%esp
500477:	5d                   	pop    %ebp
500478:	c2 10 00             	ret    $0x10
50047b:	90                   	nop
50047c:	55                   	push   %ebp
50047d:	8b ec                	mov    %esp,%ebp
50047f:	51                   	push   %ecx
500480:	53                   	push   %ebx
500481:	56                   	push   %esi
500482:	89 55 fc             	mov    %edx,-0x4(%ebp)
500485:	8b d9                	mov    %ecx,%ebx
500487:	8b 4d 0c             	mov    0xc(%ebp),%ecx
50048a:	8b 90 bc 01 00 00    	mov    0x1bc(%eax),%edx
500490:	8b f2                	mov    %edx,%esi
500492:	8b 09                	mov    (%ecx),%ecx
500494:	c1 e1 02             	shl    $0x2,%ecx
500497:	03 4d 10             	add    0x10(%ebp),%ecx
50049a:	51                   	push   %ecx
50049b:	8b 0b                	mov    (%ebx),%ecx
50049d:	8b 55 fc             	mov    -0x4(%ebp),%edx
5004a0:	ff 56 0c             	call   *0xc(%esi)
5004a3:	8b 45 0c             	mov    0xc(%ebp),%eax
5004a6:	ff 00                	incl   (%eax)
5004a8:	ff 03                	incl   (%ebx)
5004aa:	5e                   	pop    %esi
5004ab:	5b                   	pop    %ebx
5004ac:	59                   	pop    %ecx
5004ad:	5d                   	pop    %ebp
5004ae:	c2 10 00             	ret    $0x10
5004b1:	90                   	nop
5004b2:	90                   	nop
5004b3:	90                   	nop
5004b4:	55                   	push   %ebp
5004b5:	8b ec                	mov    %esp,%ebp
5004b7:	83 c4 d0             	add    $0xffffffd0,%esp
5004ba:	53                   	push   %ebx
5004bb:	56                   	push   %esi
5004bc:	57                   	push   %edi
5004bd:	89 45 fc             	mov    %eax,-0x4(%ebp)
5004c0:	8b 45 fc             	mov    -0x4(%ebp),%eax
5004c3:	8b 98 bc 01 00 00    	mov    0x1bc(%eax),%ebx
5004c9:	8b 45 fc             	mov    -0x4(%ebp),%eax
5004cc:	8b 73 10             	mov    0x10(%ebx),%esi
5004cf:	8b 80 3c 01 00 00    	mov    0x13c(%eax),%eax
5004d5:	89 75 dc             	mov    %esi,-0x24(%ebp)
5004d8:	8b 73 14             	mov    0x14(%ebx),%esi
5004db:	89 75 d8             	mov    %esi,-0x28(%ebp)
5004de:	8b 73 18             	mov    0x18(%ebx),%esi
5004e1:	89 75 d4             	mov    %esi,-0x2c(%ebp)
5004e4:	8b 5b 1c             	mov    0x1c(%ebx),%ebx
5004e7:	89 5d d0             	mov    %ebx,-0x30(%ebp)
5004ea:	8b 1a                	mov    (%edx),%ebx
5004ec:	8b 1c 8b             	mov    (%ebx,%ecx,4),%ebx
5004ef:	89 5d ec             	mov    %ebx,-0x14(%ebp)
5004f2:	8b 5a 04             	mov    0x4(%edx),%ebx
5004f5:	8b 1c 8b             	mov    (%ebx,%ecx,4),%ebx
5004f8:	89 5d e8             	mov    %ebx,-0x18(%ebp)
5004fb:	8b 52 08             	mov    0x8(%edx),%edx
5004fe:	8b 0c 8a             	mov    (%edx,%ecx,4),%ecx
500501:	89 4d e4             	mov    %ecx,-0x1c(%ebp)
500504:	8b 4d fc             	mov    -0x4(%ebp),%ecx
500507:	8b 55 08             	mov    0x8(%ebp),%edx
50050a:	8b 49 6c             	mov    0x6c(%ecx),%ecx
50050d:	8b 12                	mov    (%edx),%edx
50050f:	d1 e9                	shr    $1,%ecx
500511:	89 4d e0             	mov    %ecx,-0x20(%ebp)
500514:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
500518:	0f 86 a1 00 00 00    	jbe    0x5005bf
50051e:	8b 4d e8             	mov    -0x18(%ebp),%ecx
500521:	0f b6 09             	movzbl (%ecx),%ecx
500524:	ff 45 e8             	incl   -0x18(%ebp)
500527:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
50052a:	0f b6 1b             	movzbl (%ebx),%ebx
50052d:	89 5d f0             	mov    %ebx,-0x10(%ebp)
500530:	ff 45 e4             	incl   -0x1c(%ebp)
500533:	8b 5d dc             	mov    -0x24(%ebp),%ebx
500536:	8b 75 f0             	mov    -0x10(%ebp),%esi
500539:	8b 1c b3             	mov    (%ebx,%esi,4),%ebx
50053c:	89 5d f8             	mov    %ebx,-0x8(%ebp)
50053f:	8b 5d d0             	mov    -0x30(%ebp),%ebx
500542:	8b 7d f0             	mov    -0x10(%ebp),%edi
500545:	8b 34 8b             	mov    (%ebx,%ecx,4),%esi
500548:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
50054b:	03 34 bb             	add    (%ebx,%edi,4),%esi
50054e:	8b 5d d8             	mov    -0x28(%ebp),%ebx
500551:	c1 fe 10             	sar    $0x10,%esi
500554:	8b 0c 8b             	mov    (%ebx,%ecx,4),%ecx
500557:	89 4d f4             	mov    %ecx,-0xc(%ebp)
50055a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
50055d:	0f b6 09             	movzbl (%ecx),%ecx
500560:	ff 45 ec             	incl   -0x14(%ebp)
500563:	8b 7d f8             	mov    -0x8(%ebp),%edi
500566:	8d 1c 08             	lea    (%eax,%ecx,1),%ebx
500569:	8a 1c 3b             	mov    (%ebx,%edi,1),%bl
50056c:	88 5a 02             	mov    %bl,0x2(%edx)
50056f:	8d 1c 08             	lea    (%eax,%ecx,1),%ebx
500572:	8d 0c 08             	lea    (%eax,%ecx,1),%ecx
500575:	8a 1c 33             	mov    (%ebx,%esi,1),%bl
500578:	88 5a 01             	mov    %bl,0x1(%edx)
50057b:	8b 5d f4             	mov    -0xc(%ebp),%ebx
50057e:	8a 0c 19             	mov    (%ecx,%ebx,1),%cl
500581:	88 0a                	mov    %cl,(%edx)
500583:	83 c2 03             	add    $0x3,%edx
500586:	8b 4d ec             	mov    -0x14(%ebp),%ecx
500589:	0f b6 09             	movzbl (%ecx),%ecx
50058c:	ff 45 ec             	incl   -0x14(%ebp)
50058f:	8b 7d f8             	mov    -0x8(%ebp),%edi
500592:	8d 1c 08             	lea    (%eax,%ecx,1),%ebx
500595:	8a 1c 3b             	mov    (%ebx,%edi,1),%bl
500598:	88 5a 02             	mov    %bl,0x2(%edx)
50059b:	8d 1c 08             	lea    (%eax,%ecx,1),%ebx
50059e:	8d 0c 08             	lea    (%eax,%ecx,1),%ecx
5005a1:	8a 1c 33             	mov    (%ebx,%esi,1),%bl
5005a4:	88 5a 01             	mov    %bl,0x1(%edx)
5005a7:	8b 5d f4             	mov    -0xc(%ebp),%ebx
5005aa:	8a 0c 19             	mov    (%ecx,%ebx,1),%cl
5005ad:	88 0a                	mov    %cl,(%edx)
5005af:	83 c2 03             	add    $0x3,%edx
5005b2:	ff 4d e0             	decl   -0x20(%ebp)
5005b5:	83 7d e0 00          	cmpl   $0x0,-0x20(%ebp)
5005b9:	0f 87 5f ff ff ff    	ja     0x50051e
5005bf:	8b 4d fc             	mov    -0x4(%ebp),%ecx
5005c2:	f6 41 6c 01          	testb  $0x1,0x6c(%ecx)
5005c6:	74 5b                	je     0x500623
5005c8:	8b 4d e8             	mov    -0x18(%ebp),%ecx
5005cb:	8b 5d e4             	mov    -0x1c(%ebp),%ebx
5005ce:	0f b6 09             	movzbl (%ecx),%ecx
5005d1:	0f b6 1b             	movzbl (%ebx),%ebx
5005d4:	89 5d f0             	mov    %ebx,-0x10(%ebp)
5005d7:	8b 5d dc             	mov    -0x24(%ebp),%ebx
5005da:	8b 75 f0             	mov    -0x10(%ebp),%esi
5005dd:	8b 1c b3             	mov    (%ebx,%esi,4),%ebx
5005e0:	89 5d f8             	mov    %ebx,-0x8(%ebp)
5005e3:	8b 5d d0             	mov    -0x30(%ebp),%ebx
5005e6:	8b 7d f0             	mov    -0x10(%ebp),%edi
5005e9:	8b 34 8b             	mov    (%ebx,%ecx,4),%esi
5005ec:	8b 5d d4             	mov    -0x2c(%ebp),%ebx
5005ef:	03 34 bb             	add    (%ebx,%edi,4),%esi
5005f2:	8b 5d d8             	mov    -0x28(%ebp),%ebx
5005f5:	c1 fe 10             	sar    $0x10,%esi
5005f8:	8b 0c 8b             	mov    (%ebx,%ecx,4),%ecx
5005fb:	89 4d f4             	mov    %ecx,-0xc(%ebp)
5005fe:	8b 4d ec             	mov    -0x14(%ebp),%ecx
500601:	8b 7d f8             	mov    -0x8(%ebp),%edi
500604:	0f b6 09             	movzbl (%ecx),%ecx
500607:	8d 1c 08             	lea    (%eax,%ecx,1),%ebx
50060a:	8a 1c 3b             	mov    (%ebx,%edi,1),%bl
50060d:	88 5a 02             	mov    %bl,0x2(%edx)
500610:	8d 1c 08             	lea    (%eax,%ecx,1),%ebx
500613:	03 c1                	add    %ecx,%eax
500615:	8a 1c 33             	mov    (%ebx,%esi,1),%bl
500618:	88 5a 01             	mov    %bl,0x1(%edx)
50061b:	8b 4d f4             	mov    -0xc(%ebp),%ecx
50061e:	8a 04 08             	mov    (%eax,%ecx,1),%al
500621:	88 02                	mov    %al,(%edx)
500623:	5f                   	pop    %edi
500624:	5e                   	pop    %esi
500625:	5b                   	pop    %ebx
500626:	8b e5                	mov    %ebp,%esp
500628:	5d                   	pop    %ebp
500629:	c2 04 00             	ret    $0x4
50062c:	55                   	push   %ebp
50062d:	8b ec                	mov    %esp,%ebp
50062f:	83 c4 c4             	add    $0xffffffc4,%esp
500632:	53                   	push   %ebx
500633:	56                   	push   %esi
500634:	57                   	push   %edi
500635:	89 4d f8             	mov    %ecx,-0x8(%ebp)
500638:	89 45 fc             	mov    %eax,-0x4(%ebp)
50063b:	8b 5d 08             	mov    0x8(%ebp),%ebx
50063e:	8b 45 fc             	mov    -0x4(%ebp),%eax
500641:	8b 80 bc 01 00 00    	mov    0x1bc(%eax),%eax
500647:	8b 4d fc             	mov    -0x4(%ebp),%ecx
50064a:	8b 89 3c 01 00 00    	mov    0x13c(%ecx),%ecx
500650:	8b 70 10             	mov    0x10(%eax),%esi
500653:	89 75 d0             	mov    %esi,-0x30(%ebp)
500656:	8b 70 14             	mov    0x14(%eax),%esi
500659:	89 75 cc             	mov    %esi,-0x34(%ebp)
50065c:	8b 70 18             	mov    0x18(%eax),%esi
50065f:	89 75 c8             	mov    %esi,-0x38(%ebp)
500662:	8b 40 1c             	mov    0x1c(%eax),%eax
500665:	89 45 c4             	mov    %eax,-0x3c(%ebp)
500668:	8b 45 f8             	mov    -0x8(%ebp),%eax
50066b:	03 c0                	add    %eax,%eax
50066d:	8b 32                	mov    (%edx),%esi
50066f:	8b 34 86             	mov    (%esi,%eax,4),%esi
500672:	89 75 e4             	mov    %esi,-0x1c(%ebp)
500675:	8b 32                	mov    (%edx),%esi
500677:	8b 44 86 04          	mov    0x4(%esi,%eax,4),%eax
50067b:	89 45 e0             	mov    %eax,-0x20(%ebp)
50067e:	8b 42 04             	mov    0x4(%edx),%eax
500681:	8b 75 f8             	mov    -0x8(%ebp),%esi
500684:	8b 04 b0             	mov    (%eax,%esi,4),%eax
500687:	89 45 dc             	mov    %eax,-0x24(%ebp)
50068a:	8b 52 08             	mov    0x8(%edx),%edx
50068d:	8b 45 f8             	mov    -0x8(%ebp),%eax
500690:	8b 14 82             	mov    (%edx,%eax,4),%edx
500693:	89 55 d8             	mov    %edx,-0x28(%ebp)
500696:	8b 03                	mov    (%ebx),%eax
500698:	8b 53 04             	mov    0x4(%ebx),%edx
50069b:	89 55 e8             	mov    %edx,-0x18(%ebp)
50069e:	8b 55 fc             	mov    -0x4(%ebp),%edx
5006a1:	8b 52 6c             	mov    0x6c(%edx),%edx
5006a4:	d1 ea                	shr    $1,%edx
5006a6:	89 55 d4             	mov    %edx,-0x2c(%ebp)
5006a9:	83 7d d4 00          	cmpl   $0x0,-0x2c(%ebp)
5006ad:	0f 86 0d 01 00 00    	jbe    0x5007c0
5006b3:	8b 55 dc             	mov    -0x24(%ebp),%edx
5006b6:	0f b6 12             	movzbl (%edx),%edx
5006b9:	ff 45 dc             	incl   -0x24(%ebp)
5006bc:	8b 5d d8             	mov    -0x28(%ebp),%ebx
5006bf:	0f b6 1b             	movzbl (%ebx),%ebx
5006c2:	89 5d ec             	mov    %ebx,-0x14(%ebp)
5006c5:	ff 45 d8             	incl   -0x28(%ebp)
5006c8:	8b 5d d0             	mov    -0x30(%ebp),%ebx
5006cb:	8b 75 ec             	mov    -0x14(%ebp),%esi
5006ce:	8b 1c b3             	mov    (%ebx,%esi,4),%ebx
5006d1:	89 5d f4             	mov    %ebx,-0xc(%ebp)
5006d4:	8b 5d c4             	mov    -0x3c(%ebp),%ebx
5006d7:	8b 7d ec             	mov    -0x14(%ebp),%edi
5006da:	8b 34 93             	mov    (%ebx,%edx,4),%esi
5006dd:	8b 5d c8             	mov    -0x38(%ebp),%ebx
5006e0:	03 34 bb             	add    (%ebx,%edi,4),%esi
5006e3:	8b 5d cc             	mov    -0x34(%ebp),%ebx
5006e6:	c1 fe 10             	sar    $0x10,%esi
5006e9:	8b 14 93             	mov    (%ebx,%edx,4),%edx
5006ec:	89 55 f0             	mov    %edx,-0x10(%ebp)
5006ef:	8b 55 e4             	mov    -0x1c(%ebp),%edx
5006f2:	0f b6 12             	movzbl (%edx),%edx
5006f5:	ff 45 e4             	incl   -0x1c(%ebp)
5006f8:	8b 5d f4             	mov    -0xc(%ebp),%ebx
5006fb:	8d 3c 11             	lea    (%ecx,%edx,1),%edi
5006fe:	8a 1c 1f             	mov    (%edi,%ebx,1),%bl
500701:	88 58 02             	mov    %bl,0x2(%eax)
500704:	8d 1c 11             	lea    (%ecx,%edx,1),%ebx
500707:	8d 14 11             	lea    (%ecx,%edx,1),%edx
50070a:	8a 1c 33             	mov    (%ebx,%esi,1),%bl
50070d:	88 58 01             	mov    %bl,0x1(%eax)