4093e7:	57                   	push   %edi
4093e8:	8b 7d 08             	mov    0x8(%ebp),%edi
4093eb:	85 ff                	test   %edi,%edi
4093ed:	75 07                	jne    0x4093f6
4093ef:	33 c0                	xor    %eax,%eax
4093f1:	e9 1c 01 00 00       	jmp    0x409512
4093f6:	56                   	push   %esi
4093f7:	83 ff 02             	cmp    $0x2,%edi
4093fa:	74 1b                	je     0x409417
4093fc:	83 ff 01             	cmp    $0x1,%edi
4093ff:	74 16                	je     0x409417
409401:	e8 29 13 00 00       	call   0x40a72f
409406:	6a 16                	push   $0x16
409408:	5e                   	pop    %esi
409409:	89 30                	mov    %esi,(%eax)
40940b:	e8 b9 e0 ff ff       	call   0x4074c9
409410:	8b c6                	mov    %esi,%eax
409412:	e9 fa 00 00 00       	jmp    0x409511
409417:	53                   	push   %ebx
409418:	68 04 01 00 00       	push   $0x104
40941d:	bb 58 1e 42 00       	mov    $0x421e58,%ebx
409422:	33 f6                	xor    %esi,%esi
409424:	53                   	push   %ebx
409425:	56                   	push   %esi
409426:	ff 15 14 90 41 00    	call   *0x419014
40942c:	89 1d 80 20 42 00    	mov    %ebx,0x422080
409432:	8b 1d 94 20 42 00    	mov    0x422094,%ebx
409438:	85 db                	test   %ebx,%ebx
40943a:	74 05                	je     0x409441
40943c:	66 39 33             	cmp    %si,(%ebx)
40943f:	75 05                	jne    0x409446
409441:	bb 58 1e 42 00       	mov    $0x421e58,%ebx
409446:	8d 45 f4             	lea    -0xc(%ebp),%eax
409449:	89 75 fc             	mov    %esi,-0x4(%ebp)
40944c:	50                   	push   %eax
40944d:	8d 45 fc             	lea    -0x4(%ebp),%eax
409450:	89 75 f4             	mov    %esi,-0xc(%ebp)
409453:	50                   	push   %eax
409454:	56                   	push   %esi
409455:	56                   	push   %esi
409456:	53                   	push   %ebx
409457:	e8 b9 00 00 00       	call   0x409515
40945c:	6a 02                	push   $0x2
40945e:	ff 75 f4             	push   -0xc(%ebp)
409461:	ff 75 fc             	push   -0x4(%ebp)
409464:	e8 4d 02 00 00       	call   0x4096b6
409469:	8b f0                	mov    %eax,%esi
40946b:	83 c4 20             	add    $0x20,%esp
40946e:	85 f6                	test   %esi,%esi
409470:	75 0c                	jne    0x40947e
409472:	e8 b8 12 00 00       	call   0x40a72f
409477:	6a 0c                	push   $0xc
409479:	5e                   	pop    %esi
40947a:	89 30                	mov    %esi,(%eax)
40947c:	eb 2f                	jmp    0x4094ad
40947e:	8d 45 f4             	lea    -0xc(%ebp),%eax
409481:	50                   	push   %eax
409482:	8d 45 fc             	lea    -0x4(%ebp),%eax
409485:	50                   	push   %eax
409486:	8b 45 fc             	mov    -0x4(%ebp),%eax
409489:	8d 04 86             	lea    (%esi,%eax,4),%eax
40948c:	50                   	push   %eax
40948d:	56                   	push   %esi
40948e:	53                   	push   %ebx
40948f:	e8 81 00 00 00       	call   0x409515
409494:	83 c4 14             	add    $0x14,%esp
409497:	83 ff 01             	cmp    $0x1,%edi
40949a:	75 1c                	jne    0x4094b8
40949c:	8b 45 fc             	mov    -0x4(%ebp),%eax
40949f:	48                   	dec    %eax
4094a0:	89 35 8c 20 42 00    	mov    %esi,0x42208c
4094a6:	a3 84 20 42 00       	mov    %eax,0x422084
4094ab:	33 f6                	xor    %esi,%esi
4094ad:	6a 00                	push   $0x0
4094af:	e8 eb 12 00 00       	call   0x40a79f
4094b4:	8b c6                	mov    %esi,%eax
4094b6:	eb 57                	jmp    0x40950f
4094b8:	8d 45 f8             	lea    -0x8(%ebp),%eax
4094bb:	33 db                	xor    %ebx,%ebx
4094bd:	50                   	push   %eax
4094be:	56                   	push   %esi
4094bf:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4094c2:	e8 ad 51 00 00       	call   0x40e674
4094c7:	8b f8                	mov    %eax,%edi
4094c9:	59                   	pop    %ecx
4094ca:	59                   	pop    %ecx
4094cb:	85 ff                	test   %edi,%edi
4094cd:	74 0a                	je     0x4094d9
4094cf:	ff 75 f8             	push   -0x8(%ebp)
4094d2:	e8 c8 12 00 00       	call   0x40a79f
4094d7:	eb 2a                	jmp    0x409503
4094d9:	8b 55 f8             	mov    -0x8(%ebp),%edx
4094dc:	8b cb                	mov    %ebx,%ecx
4094de:	8b c2                	mov    %edx,%eax
4094e0:	39 1a                	cmp    %ebx,(%edx)
4094e2:	74 08                	je     0x4094ec
4094e4:	8d 40 04             	lea    0x4(%eax),%eax
4094e7:	41                   	inc    %ecx
4094e8:	39 18                	cmp    %ebx,(%eax)
4094ea:	75 f8                	jne    0x4094e4
4094ec:	53                   	push   %ebx
4094ed:	89 0d 84 20 42 00    	mov    %ecx,0x422084
4094f3:	89 5d f8             	mov    %ebx,-0x8(%ebp)
4094f6:	89 15 8c 20 42 00    	mov    %edx,0x42208c
4094fc:	e8 9e 12 00 00       	call   0x40a79f
409501:	8b fb                	mov    %ebx,%edi
409503:	59                   	pop    %ecx
409504:	56                   	push   %esi
409505:	89 5d f8             	mov    %ebx,-0x8(%ebp)
409508:	e8 92 12 00 00       	call   0x40a79f
40950d:	8b c7                	mov    %edi,%eax
40950f:	59                   	pop    %ecx
409510:	5b                   	pop    %ebx
409511:	5e                   	pop    %esi
409512:	5f                   	pop    %edi
409513:	c9                   	leave
409514:	c3                   	ret
409515:	8b ff                	mov    %edi,%edi
409517:	55                   	push   %ebp
409518:	8b ec                	mov    %esp,%ebp
40951a:	8b 45 18             	mov    0x18(%ebp),%eax
40951d:	83 ec 0c             	sub    $0xc,%esp
409520:	8b 4d 14             	mov    0x14(%ebp),%ecx
409523:	8b 55 08             	mov    0x8(%ebp),%edx
409526:	83 20 00             	andl   $0x0,(%eax)
409529:	56                   	push   %esi
40952a:	8b 75 0c             	mov    0xc(%ebp),%esi
40952d:	c7 01 01 00 00 00    	movl   $0x1,(%ecx)
409533:	8b 4d 10             	mov    0x10(%ebp),%ecx
409536:	85 f6                	test   %esi,%esi
409538:	74 08                	je     0x409542
40953a:	89 0e                	mov    %ecx,(%esi)
40953c:	83 c6 04             	add    $0x4,%esi
40953f:	89 75 0c             	mov    %esi,0xc(%ebp)
409542:	53                   	push   %ebx
409543:	57                   	push   %edi
409544:	32 db                	xor    %bl,%bl
409546:	c7 45 f4 09 00 00 00 	movl   $0x9,-0xc(%ebp)
40954d:	eb 03                	jmp    0x409552
40954f:	8b 45 18             	mov    0x18(%ebp),%eax
409552:	6a 22                	push   $0x22
409554:	5e                   	pop    %esi
409555:	66 39 32             	cmp    %si,(%edx)
409558:	8b fa                	mov    %edx,%edi
40955a:	8b 75 0c             	mov    0xc(%ebp),%esi
40955d:	75 0d                	jne    0x40956c
40955f:	84 db                	test   %bl,%bl
409561:	6a 22                	push   $0x22
409563:	0f 94 c3             	sete   %bl
409566:	83 c2 02             	add    $0x2,%edx
409569:	58                   	pop    %eax
40956a:	eb 1a                	jmp    0x409586
40956c:	ff 00                	incl   (%eax)
40956e:	85 c9                	test   %ecx,%ecx
409570:	74 09                	je     0x40957b
409572:	66 8b 02             	mov    (%edx),%ax
409575:	66 89 01             	mov    %ax,(%ecx)
409578:	83 c1 02             	add    $0x2,%ecx
40957b:	0f b7 02             	movzwl (%edx),%eax
40957e:	83 c2 02             	add    $0x2,%edx
409581:	66 85 c0             	test   %ax,%ax
409584:	74 23                	je     0x4095a9
409586:	84 db                	test   %bl,%bl
409588:	75 c5                	jne    0x40954f
40958a:	6a 20                	push   $0x20
40958c:	5f                   	pop    %edi
40958d:	66 3b c7             	cmp    %di,%ax
409590:	74 0b                	je     0x40959d
409592:	6a 09                	push   $0x9
409594:	5f                   	pop    %edi
409595:	66 3b c7             	cmp    %di,%ax
409598:	8b 45 18             	mov    0x18(%ebp),%eax
40959b:	75 b5                	jne    0x409552
40959d:	85 c9                	test   %ecx,%ecx
40959f:	74 0a                	je     0x4095ab
4095a1:	33 c0                	xor    %eax,%eax
4095a3:	66 89 41 fe          	mov    %ax,-0x2(%ecx)
4095a7:	eb 02                	jmp    0x4095ab
4095a9:	8b d7                	mov    %edi,%edx
4095ab:	c6 45 ff 00          	movb   $0x0,-0x1(%ebp)
4095af:	0f b7 02             	movzwl (%edx),%eax
4095b2:	8b f8                	mov    %eax,%edi
4095b4:	66 85 c0             	test   %ax,%ax
4095b7:	74 19                	je     0x4095d2
4095b9:	6a 20                	push   $0x20
4095bb:	5b                   	pop    %ebx
4095bc:	66 3b c3             	cmp    %bx,%ax
4095bf:	74 09                	je     0x4095ca
4095c1:	0f b7 f8             	movzwl %ax,%edi
4095c4:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
4095c8:	75 08                	jne    0x4095d2
4095ca:	83 c2 02             	add    $0x2,%edx
4095cd:	0f b7 02             	movzwl (%edx),%eax
4095d0:	eb ea                	jmp    0x4095bc
4095d2:	66 85 ff             	test   %di,%di
4095d5:	0f 84 ca 00 00 00    	je     0x4096a5
4095db:	85 f6                	test   %esi,%esi
4095dd:	74 08                	je     0x4095e7
4095df:	89 0e                	mov    %ecx,(%esi)
4095e1:	83 c6 04             	add    $0x4,%esi
4095e4:	89 75 0c             	mov    %esi,0xc(%ebp)
4095e7:	8b 45 14             	mov    0x14(%ebp),%eax
4095ea:	6a 5c                	push   $0x5c
4095ec:	5e                   	pop    %esi
4095ed:	ff 00                	incl   (%eax)
4095ef:	0f b7 02             	movzwl (%edx),%eax
4095f2:	33 db                	xor    %ebx,%ebx
4095f4:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
4095fb:	8b f8                	mov    %eax,%edi
4095fd:	66 3b c6             	cmp    %si,%ax
409600:	75 0e                	jne    0x409610
409602:	83 c2 02             	add    $0x2,%edx
409605:	43                   	inc    %ebx
409606:	0f b7 02             	movzwl (%edx),%eax
409609:	66 3b c6             	cmp    %si,%ax
40960c:	74 f4                	je     0x409602
40960e:	8b f8                	mov    %eax,%edi
409610:	6a 22                	push   $0x22
409612:	58                   	pop    %eax
409613:	66 3b f8             	cmp    %ax,%di
409616:	75 29                	jne    0x409641
409618:	f6 c3 01             	test   $0x1,%bl
40961b:	75 22                	jne    0x40963f
40961d:	8a 45 ff             	mov    -0x1(%ebp),%al
409620:	84 c0                	test   %al,%al
409622:	74 11                	je     0x409635
409624:	6a 22                	push   $0x22
409626:	5f                   	pop    %edi
409627:	66 39 7a 02          	cmp    %di,0x2(%edx)
40962b:	75 05                	jne    0x409632
40962d:	83 c2 02             	add    $0x2,%edx
409630:	eb 0d                	jmp    0x40963f
409632:	8a 45 ff             	mov    -0x1(%ebp),%al
409635:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
409639:	84 c0                	test   %al,%al
40963b:	0f 94 45 ff          	sete   -0x1(%ebp)
40963f:	d1 eb                	shr    $1,%ebx
409641:	8b 7d 18             	mov    0x18(%ebp),%edi
409644:	85 db                	test   %ebx,%ebx
409646:	74 0f                	je     0x409657
409648:	4b                   	dec    %ebx
409649:	85 c9                	test   %ecx,%ecx
40964b:	74 06                	je     0x409653
40964d:	66 89 31             	mov    %si,(%ecx)
409650:	83 c1 02             	add    $0x2,%ecx
409653:	ff 07                	incl   (%edi)
409655:	eb ed                	jmp    0x409644
409657:	0f b7 02             	movzwl (%edx),%eax
40965a:	66 85 c0             	test   %ax,%ax
40965d:	74 30                	je     0x40968f
40965f:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
409663:	75 10                	jne    0x409675
409665:	6a 20                	push   $0x20
409667:	5b                   	pop    %ebx
409668:	66 3b c3             	cmp    %bx,%ax
40966b:	74 22                	je     0x40968f
40966d:	6a 09                	push   $0x9
40966f:	5b                   	pop    %ebx
409670:	66 3b c3             	cmp    %bx,%ax
409673:	74 1a                	je     0x40968f
409675:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
409679:	74 0c                	je     0x409687
40967b:	85 c9                	test   %ecx,%ecx
40967d:	74 06                	je     0x409685
40967f:	66 89 01             	mov    %ax,(%ecx)
409682:	83 c1 02             	add    $0x2,%ecx
409685:	ff 07                	incl   (%edi)
409687:	83 c2 02             	add    $0x2,%edx
40968a:	e9 60 ff ff ff       	jmp    0x4095ef
40968f:	8b 75 0c             	mov    0xc(%ebp),%esi
409692:	85 c9                	test   %ecx,%ecx
409694:	74 08                	je     0x40969e
409696:	33 c0                	xor    %eax,%eax
409698:	66 89 01             	mov    %ax,(%ecx)
40969b:	83 c1 02             	add    $0x2,%ecx
40969e:	ff 07                	incl   (%edi)
4096a0:	e9 0a ff ff ff       	jmp    0x4095af
4096a5:	5f                   	pop    %edi
4096a6:	5b                   	pop    %ebx
4096a7:	85 f6                	test   %esi,%esi
4096a9:	74 03                	je     0x4096ae
4096ab:	83 26 00             	andl   $0x0,(%esi)
4096ae:	8b 45 14             	mov    0x14(%ebp),%eax
4096b1:	5e                   	pop    %esi
4096b2:	ff 00                	incl   (%eax)
4096b4:	c9                   	leave
4096b5:	c3                   	ret
4096b6:	8b ff                	mov    %edi,%edi
4096b8:	55                   	push   %ebp
4096b9:	8b ec                	mov    %esp,%ebp
4096bb:	56                   	push   %esi
4096bc:	8b 75 08             	mov    0x8(%ebp),%esi
4096bf:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
4096c5:	73 39                	jae    0x409700
4096c7:	83 c8 ff             	or     $0xffffffff,%eax
4096ca:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4096cd:	33 d2                	xor    %edx,%edx
4096cf:	f7 75 10             	divl   0x10(%ebp)
4096d2:	3b c8                	cmp    %eax,%ecx
4096d4:	73 2a                	jae    0x409700
4096d6:	0f af 4d 10          	imul   0x10(%ebp),%ecx
4096da:	c1 e6 02             	shl    $0x2,%esi
4096dd:	8b c6                	mov    %esi,%eax
4096df:	f7 d0                	not    %eax
4096e1:	3b c1                	cmp    %ecx,%eax
4096e3:	76 1b                	jbe    0x409700
4096e5:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
4096e8:	6a 01                	push   $0x1
4096ea:	50                   	push   %eax
4096eb:	e8 52 10 00 00       	call   0x40a742
4096f0:	6a 00                	push   $0x0
4096f2:	8b f0                	mov    %eax,%esi
4096f4:	e8 a6 10 00 00       	call   0x40a79f
4096f9:	83 c4 0c             	add    $0xc,%esp
4096fc:	8b c6                	mov    %esi,%eax
4096fe:	eb 02                	jmp    0x409702
409700:	33 c0                	xor    %eax,%eax
409702:	5e                   	pop    %esi
409703:	5d                   	pop    %ebp
409704:	c3                   	ret
409705:	8b ff                	mov    %edi,%edi
409707:	55                   	push   %ebp
409708:	8b ec                	mov    %esp,%ebp
40970a:	5d                   	pop    %ebp
40970b:	e9 cf fc ff ff       	jmp    0x4093df
409710:	a1 68 20 42 00       	mov    0x422068,%eax
409715:	85 c0                	test   %eax,%eax
409717:	75 22                	jne    0x40973b
409719:	39 05 64 20 42 00    	cmp    %eax,0x422064
40971f:	74 18                	je     0x409739
409721:	e8 16 00 00 00       	call   0x40973c
409726:	85 c0                	test   %eax,%eax
409728:	74 09                	je     0x409733
40972a:	e8 af 01 00 00       	call   0x4098de
40972f:	85 c0                	test   %eax,%eax
409731:	75 06                	jne    0x409739
409733:	a1 68 20 42 00       	mov    0x422068,%eax
409738:	c3                   	ret
409739:	33 c0                	xor    %eax,%eax
40973b:	c3                   	ret
40973c:	83 3d 68 20 42 00 00 	cmpl   $0x0,0x422068
409743:	74 03                	je     0x409748
409745:	33 c0                	xor    %eax,%eax
409747:	c3                   	ret
409748:	56                   	push   %esi
409749:	e8 83 59 00 00       	call   0x40f0d1
40974e:	8b f0                	mov    %eax,%esi
409750:	85 f6                	test   %esi,%esi
409752:	75 0c                	jne    0x409760
409754:	50                   	push   %eax