407389:	50                   	push   %eax
40738a:	e8 31 af ff ff       	call   0x4022c0
40738f:	c6 45 fc 12          	movb   $0x12,-0x4(%ebp)
407393:	8d bd 78 ff ff ff    	lea    -0x88(%ebp),%edi
407399:	83 7d 8c 08          	cmpl   $0x8,-0x74(%ebp)
40739d:	8d 55 a8             	lea    -0x58(%ebp),%edx
4073a0:	8b 45 b8             	mov    -0x48(%ebp),%eax
4073a3:	0f 43 bd 78 ff ff ff 	cmovae -0x88(%ebp),%edi
4073aa:	83 7d bc 08          	cmpl   $0x8,-0x44(%ebp)
4073ae:	8b 75 88             	mov    -0x78(%ebp),%esi
4073b1:	0f 43 55 a8          	cmovae -0x58(%ebp),%edx
4073b5:	0f 93 85 5e fc ff ff 	setae  -0x3a2(%ebp)
4073bc:	89 bd 54 fc ff ff    	mov    %edi,-0x3ac(%ebp)
4073c2:	89 95 48 fc ff ff    	mov    %edx,-0x3b8(%ebp)
4073c8:	3b f0                	cmp    %eax,%esi
4073ca:	0f 87 3d 01 00 00    	ja     0x40750d
4073d0:	2b c6                	sub    %esi,%eax
4073d2:	85 f6                	test   %esi,%esi
4073d4:	74 6d                	je     0x407443
4073d6:	40                   	inc    %eax
4073d7:	8d 0c 42             	lea    (%edx,%eax,2),%ecx
4073da:	8b c2                	mov    %edx,%eax
4073dc:	89 8d 40 fc ff ff    	mov    %ecx,-0x3c0(%ebp)
4073e2:	2b c8                	sub    %eax,%ecx
4073e4:	d1 f9                	sar    $1,%ecx
4073e6:	0f 84 21 01 00 00    	je     0x40750d
4073ec:	0f b7 17             	movzwl (%edi),%edx
4073ef:	90                   	nop
4073f0:	66 39 10             	cmp    %dx,(%eax)
4073f3:	74 0d                	je     0x407402
4073f5:	83 c0 02             	add    $0x2,%eax
4073f8:	83 e9 01             	sub    $0x1,%ecx
4073fb:	75 f3                	jne    0x4073f0
4073fd:	e9 0b 01 00 00       	jmp    0x40750d
407402:	85 c0                	test   %eax,%eax
407404:	0f 84 03 01 00 00    	je     0x40750d
40740a:	8b d7                	mov    %edi,%edx
40740c:	85 f6                	test   %esi,%esi
40740e:	74 25                	je     0x407435
407410:	8b f8                	mov    %eax,%edi
407412:	2b bd 54 fc ff ff    	sub    -0x3ac(%ebp),%edi
407418:	0f 1f 84 00 00 00 00 	nopl   0x0(%eax,%eax,1)
40741f:	00
407420:	66 8b 0c 17          	mov    (%edi,%edx,1),%cx
407424:	66 3b 0a             	cmp    (%edx),%cx
407427:	0f 85 8a 02 00 00    	jne    0x4076b7
40742d:	83 c2 02             	add    $0x2,%edx
407430:	83 ee 01             	sub    $0x1,%esi
407433:	75 eb                	jne    0x407420
407435:	2b 85 48 fc ff ff    	sub    -0x3b8(%ebp),%eax
40743b:	d1 f8                	sar    $1,%eax
40743d:	0f 85 ca 00 00 00    	jne    0x40750d
407443:	8b 4d e8             	mov    -0x18(%ebp),%ecx
407446:	8d 45 a8             	lea    -0x58(%ebp),%eax
407449:	39 4d b8             	cmp    %ecx,-0x48(%ebp)
40744c:	c6 85 5f fc ff ff 01 	movb   $0x1,-0x3a1(%ebp)
407453:	0f 42 4d b8          	cmovb  -0x48(%ebp),%ecx
407457:	80 bd 5e fc ff ff 00 	cmpb   $0x0,-0x3a2(%ebp)
40745e:	51                   	push   %ecx
40745f:	0f 45 45 a8          	cmovne -0x58(%ebp),%eax
407463:	8d 8d 28 ff ff ff    	lea    -0xd8(%ebp),%ecx
407469:	50                   	push   %eax
40746a:	c7 85 28 ff ff ff 00 	movl   $0x0,-0xd8(%ebp)
407471:	00 00 00
407474:	c7 85 38 ff ff ff 00 	movl   $0x0,-0xc8(%ebp)
40747b:	00 00 00
40747e:	c7 85 3c ff ff ff 00 	movl   $0x0,-0xc4(%ebp)
407485:	00 00 00
407488:	e8 83 b0 ff ff       	call   0x402510
40748d:	83 bd 3c ff ff ff 08 	cmpl   $0x8,-0xc4(%ebp)
407494:	8d 8d 28 ff ff ff    	lea    -0xd8(%ebp),%ecx
40749a:	8d 45 d8             	lea    -0x28(%ebp),%eax
40749d:	0f 43 8d 28 ff ff ff 	cmovae -0xd8(%ebp),%ecx
4074a4:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
4074a8:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
4074ac:	50                   	push   %eax
4074ad:	51                   	push   %ecx
4074ae:	ff 15 6c f0 43 00    	call   *0x43f06c
4074b4:	8b 8d 3c ff ff ff    	mov    -0xc4(%ebp),%ecx
4074ba:	85 c0                	test   %eax,%eax
4074bc:	0f 94 c0             	sete   %al
4074bf:	88 85 5e fc ff ff    	mov    %al,-0x3a2(%ebp)
4074c5:	83 f9 08             	cmp    $0x8,%ecx
4074c8:	72 3b                	jb     0x407505
4074ca:	8b 95 28 ff ff ff    	mov    -0xd8(%ebp),%edx
4074d0:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4074d7:	8b c2                	mov    %edx,%eax
4074d9:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4074df:	72 14                	jb     0x4074f5
4074e1:	8b 50 fc             	mov    -0x4(%eax),%edx
4074e4:	83 c1 23             	add    $0x23,%ecx
4074e7:	2b c2                	sub    %edx,%eax
4074e9:	83 c0 fc             	add    $0xfffffffc,%eax
4074ec:	83 f8 1f             	cmp    $0x1f,%eax
4074ef:	0f 87 d0 07 00 00    	ja     0x407cc5
4074f5:	51                   	push   %ecx
4074f6:	52                   	push   %edx
4074f7:	e8 12 44 01 00       	call   0x41b90e
4074fc:	8a 85 5e fc ff ff    	mov    -0x3a2(%ebp),%al
407502:	83 c4 08             	add    $0x8,%esp
407505:	84 c0                	test   %al,%al
407507:	0f 85 c1 01 00 00    	jne    0x4076ce
40750d:	c6 45 fc 11          	movb   $0x11,-0x4(%ebp)
407511:	8b 4d ec             	mov    -0x14(%ebp),%ecx
407514:	83 f9 08             	cmp    $0x8,%ecx
407517:	72 32                	jb     0x40754b
407519:	8b 55 d8             	mov    -0x28(%ebp),%edx
40751c:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407523:	8b c2                	mov    %edx,%eax
407525:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40752b:	72 14                	jb     0x407541
40752d:	8b 50 fc             	mov    -0x4(%eax),%edx
407530:	83 c1 23             	add    $0x23,%ecx
407533:	2b c2                	sub    %edx,%eax
407535:	83 c0 fc             	add    $0xfffffffc,%eax
407538:	83 f8 1f             	cmp    $0x1f,%eax
40753b:	0f 87 84 07 00 00    	ja     0x407cc5
407541:	51                   	push   %ecx
407542:	52                   	push   %edx
407543:	e8 c6 43 01 00       	call   0x41b90e
407548:	83 c4 08             	add    $0x8,%esp
40754b:	8b 75 c4             	mov    -0x3c(%ebp),%esi
40754e:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
407553:	8b 7d c0             	mov    -0x40(%ebp),%edi
407556:	8b ce                	mov    %esi,%ecx
407558:	ff 85 50 fc ff ff    	incl   -0x3b0(%ebp)
40755e:	2b cf                	sub    %edi,%ecx
407560:	83 85 58 fc ff ff 18 	addl   $0x18,-0x3a8(%ebp)
407567:	f7 e9                	imul   %ecx
407569:	8b 8d 50 fc ff ff    	mov    -0x3b0(%ebp),%ecx
40756f:	c1 fa 02             	sar    $0x2,%edx
407572:	8b c2                	mov    %edx,%eax
407574:	c1 e8 1f             	shr    $0x1f,%eax
407577:	03 c2                	add    %edx,%eax
407579:	3b c8                	cmp    %eax,%ecx
40757b:	0f 82 e2 fd ff ff    	jb     0x407363
407581:	8a 85 5f fc ff ff    	mov    -0x3a1(%ebp),%al
407587:	3c 01                	cmp    $0x1,%al
407589:	0f 85 a9 02 00 00    	jne    0x407838
40758f:	83 bd 24 ff ff ff 08 	cmpl   $0x8,-0xdc(%ebp)
407596:	8d 8d 10 ff ff ff    	lea    -0xf0(%ebp),%ecx
40759c:	8d 45 a8             	lea    -0x58(%ebp),%eax
40759f:	0f 43 8d 10 ff ff ff 	cmovae -0xf0(%ebp),%ecx
4075a6:	83 7d bc 08          	cmpl   $0x8,-0x44(%ebp)
4075aa:	51                   	push   %ecx
4075ab:	0f 43 45 a8          	cmovae -0x58(%ebp),%eax
4075af:	50                   	push   %eax
4075b0:	ff 15 6c f0 43 00    	call   *0x43f06c
4075b6:	85 c0                	test   %eax,%eax
4075b8:	0f 84 4e 01 00 00    	je     0x40770c
4075be:	8b 8d 50 ff ff ff    	mov    -0xb0(%ebp),%ecx
4075c4:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
4075c9:	2b c1                	sub    %ecx,%eax
4075cb:	83 f8 01             	cmp    $0x1,%eax
4075ce:	0f 82 ec 06 00 00    	jb     0x407cc0
4075d4:	83 bd 54 ff ff ff 08 	cmpl   $0x8,-0xac(%ebp)
4075db:	8d 85 40 ff ff ff    	lea    -0xc0(%ebp),%eax
4075e1:	6a 01                	push   $0x1
4075e3:	0f 43 85 40 ff ff ff 	cmovae -0xc0(%ebp),%eax
4075ea:	68 0c dc 44 00       	push   $0x44dc0c
4075ef:	51                   	push   %ecx
4075f0:	50                   	push   %eax
4075f1:	51                   	push   %ecx
4075f2:	ff b5 4c fc ff ff    	push   -0x3b4(%ebp)
4075f8:	8d 8d 28 ff ff ff    	lea    -0xd8(%ebp),%ecx
4075fe:	e8 6d 58 00 00       	call   0x40ce70
407603:	c6 45 fc 13          	movb   $0x13,-0x4(%ebp)
407607:	8d 45 a8             	lea    -0x58(%ebp),%eax
40760a:	83 7d bc 08          	cmpl   $0x8,-0x44(%ebp)
40760e:	8d 95 28 ff ff ff    	lea    -0xd8(%ebp),%edx
407614:	8d 4d d8             	lea    -0x28(%ebp),%ecx
407617:	0f 43 45 a8          	cmovae -0x58(%ebp),%eax
40761b:	50                   	push   %eax
40761c:	e8 af ad ff ff       	call   0x4023d0
407621:	c6 45 fc 11          	movb   $0x11,-0x4(%ebp)
407625:	83 c4 04             	add    $0x4,%esp
407628:	8b 8d 3c ff ff ff    	mov    -0xc4(%ebp),%ecx
40762e:	83 f9 08             	cmp    $0x8,%ecx
407631:	72 35                	jb     0x407668
407633:	8b 95 28 ff ff ff    	mov    -0xd8(%ebp),%edx
407639:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407640:	8b c2                	mov    %edx,%eax
407642:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
407648:	72 14                	jb     0x40765e
40764a:	8b 50 fc             	mov    -0x4(%eax),%edx
40764d:	83 c1 23             	add    $0x23,%ecx
407650:	2b c2                	sub    %edx,%eax
407652:	83 c0 fc             	add    $0xfffffffc,%eax
407655:	83 f8 1f             	cmp    $0x1f,%eax
407658:	0f 87 67 06 00 00    	ja     0x407cc5
40765e:	51                   	push   %ecx
40765f:	52                   	push   %edx
407660:	e8 a9 42 01 00       	call   0x41b90e
407665:	83 c4 08             	add    $0x8,%esp
407668:	83 7d ec 08          	cmpl   $0x8,-0x14(%ebp)
40766c:	8d 45 d8             	lea    -0x28(%ebp),%eax
40766f:	0f 43 45 d8          	cmovae -0x28(%ebp),%eax
407673:	50                   	push   %eax
407674:	ff 15 64 f0 43 00    	call   *0x43f064
40767a:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40767d:	83 f9 08             	cmp    $0x8,%ecx
407680:	0f 82 b2 01 00 00    	jb     0x407838
407686:	8b 55 d8             	mov    -0x28(%ebp),%edx
407689:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407690:	8b c2                	mov    %edx,%eax
407692:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
407698:	0f 82 90 01 00 00    	jb     0x40782e
40769e:	8b 50 fc             	mov    -0x4(%eax),%edx
4076a1:	83 c1 23             	add    $0x23,%ecx
4076a4:	2b c2                	sub    %edx,%eax
4076a6:	83 c0 fc             	add    $0xfffffffc,%eax
4076a9:	83 f8 1f             	cmp    $0x1f,%eax
4076ac:	0f 87 13 06 00 00    	ja     0x407cc5
4076b2:	e9 77 01 00 00       	jmp    0x40782e
4076b7:	8b bd 54 fc ff ff    	mov    -0x3ac(%ebp),%edi
4076bd:	83 c0 02             	add    $0x2,%eax
4076c0:	8b 8d 40 fc ff ff    	mov    -0x3c0(%ebp),%ecx
4076c6:	8b 75 88             	mov    -0x78(%ebp),%esi
4076c9:	e9 14 fd ff ff       	jmp    0x4073e2
4076ce:	c6 45 fc 11          	movb   $0x11,-0x4(%ebp)
4076d2:	8b 4d ec             	mov    -0x14(%ebp),%ecx
4076d5:	83 f9 08             	cmp    $0x8,%ecx
4076d8:	72 32                	jb     0x40770c
4076da:	8b 55 d8             	mov    -0x28(%ebp),%edx
4076dd:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
4076e4:	8b c2                	mov    %edx,%eax
4076e6:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
4076ec:	72 14                	jb     0x407702
4076ee:	8b 50 fc             	mov    -0x4(%eax),%edx
4076f1:	83 c1 23             	add    $0x23,%ecx
4076f4:	2b c2                	sub    %edx,%eax
4076f6:	83 c0 fc             	add    $0xfffffffc,%eax
4076f9:	83 f8 1f             	cmp    $0x1f,%eax
4076fc:	0f 87 c3 05 00 00    	ja     0x407cc5
407702:	51                   	push   %ecx
407703:	52                   	push   %edx
407704:	e8 05 42 01 00       	call   0x41b90e
407709:	83 c4 08             	add    $0x8,%esp
40770c:	8a 85 5f fc ff ff    	mov    -0x3a1(%ebp),%al
407712:	3c 01                	cmp    $0x1,%al
407714:	0f 85 1e 01 00 00    	jne    0x407838
40771a:	8b 8d 50 ff ff ff    	mov    -0xb0(%ebp),%ecx
407720:	b8 fe ff ff 7f       	mov    $0x7ffffffe,%eax
407725:	2b c1                	sub    %ecx,%eax
407727:	83 f8 01             	cmp    $0x1,%eax
40772a:	0f 82 90 05 00 00    	jb     0x407cc0
407730:	83 bd 54 ff ff ff 08 	cmpl   $0x8,-0xac(%ebp)
407737:	8d 85 40 ff ff ff    	lea    -0xc0(%ebp),%eax
40773d:	6a 01                	push   $0x1
40773f:	0f 43 85 40 ff ff ff 	cmovae -0xc0(%ebp),%eax
407746:	68 0c dc 44 00       	push   $0x44dc0c
40774b:	51                   	push   %ecx
40774c:	50                   	push   %eax
40774d:	51                   	push   %ecx
40774e:	ff b5 4c fc ff ff    	push   -0x3b4(%ebp)
407754:	8d 4d d8             	lea    -0x28(%ebp),%ecx
407757:	e8 14 57 00 00       	call   0x40ce70
40775c:	c6 45 fc 14          	movb   $0x14,-0x4(%ebp)
407760:	8d 45 a8             	lea    -0x58(%ebp),%eax
407763:	83 7d bc 08          	cmpl   $0x8,-0x44(%ebp)
407767:	8d 55 d8             	lea    -0x28(%ebp),%edx
40776a:	8d 8d 28 ff ff ff    	lea    -0xd8(%ebp),%ecx
407770:	0f 43 45 a8          	cmovae -0x58(%ebp),%eax
407774:	50                   	push   %eax
407775:	e8 56 ac ff ff       	call   0x4023d0
40777a:	83 c4 04             	add    $0x4,%esp
40777d:	c6 45 fc 16          	movb   $0x16,-0x4(%ebp)
407781:	8b 4d ec             	mov    -0x14(%ebp),%ecx
407784:	83 f9 08             	cmp    $0x8,%ecx
407787:	72 32                	jb     0x4077bb
407789:	8b 55 d8             	mov    -0x28(%ebp),%edx
40778c:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407793:	8b c2                	mov    %edx,%eax
407795:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
40779b:	72 14                	jb     0x4077b1
40779d:	8b 50 fc             	mov    -0x4(%eax),%edx
4077a0:	83 c1 23             	add    $0x23,%ecx
4077a3:	2b c2                	sub    %edx,%eax
4077a5:	83 c0 fc             	add    $0xfffffffc,%eax
4077a8:	83 f8 1f             	cmp    $0x1f,%eax
4077ab:	0f 87 14 05 00 00    	ja     0x407cc5
4077b1:	51                   	push   %ecx
4077b2:	52                   	push   %edx
4077b3:	e8 56 41 01 00       	call   0x41b90e
4077b8:	83 c4 08             	add    $0x8,%esp
4077bb:	33 c0                	xor    %eax,%eax
4077bd:	c7 45 e8 00 00 00 00 	movl   $0x0,-0x18(%ebp)
4077c4:	66 89 45 d8          	mov    %ax,-0x28(%ebp)
4077c8:	8d 8d 28 ff ff ff    	lea    -0xd8(%ebp),%ecx
4077ce:	8b 45 d0             	mov    -0x30(%ebp),%eax
4077d1:	c7 45 ec 07 00 00 00 	movl   $0x7,-0x14(%ebp)
4077d8:	51                   	push   %ecx
4077d9:	3b 45 d4             	cmp    -0x2c(%ebp),%eax
4077dc:	74 0d                	je     0x4077eb
4077de:	8b c8                	mov    %eax,%ecx
4077e0:	e8 db aa ff ff       	call   0x4022c0
4077e5:	83 45 d0 18          	addl   $0x18,-0x30(%ebp)
4077e9:	eb 09                	jmp    0x4077f4
4077eb:	50                   	push   %eax
4077ec:	8d 4d cc             	lea    -0x34(%ebp),%ecx
4077ef:	e8 5c 58 00 00       	call   0x40d050
4077f4:	c6 45 fc 11          	movb   $0x11,-0x4(%ebp)
4077f8:	8b 8d 3c ff ff ff    	mov    -0xc4(%ebp),%ecx
4077fe:	83 f9 08             	cmp    $0x8,%ecx
407801:	72 35                	jb     0x407838
407803:	8b 95 28 ff ff ff    	mov    -0xd8(%ebp),%edx
407809:	8d 0c 4d 02 00 00 00 	lea    0x2(,%ecx,2),%ecx
407810:	8b c2                	mov    %edx,%eax
407812:	81 f9 00 10 00 00    	cmp    $0x1000,%ecx
407818:	72 14                	jb     0x40782e
40781a:	8b 50 fc             	mov    -0x4(%eax),%edx
40781d:	83 c1 23             	add    $0x23,%ecx
407820:	2b c2                	sub    %edx,%eax
407822:	83 c0 fc             	add    $0xfffffffc,%eax
407825:	83 f8 1f             	cmp    $0x1f,%eax
407828:	0f 87 9c 04 00 00    	ja     0x407cca
40782e:	51                   	push   %ecx
40782f:	52                   	push   %edx
407830:	e8 d9 40 01 00       	call   0x41b90e
407835:	83 c4 08             	add    $0x8,%esp
407838:	8d 85 60 fc ff ff    	lea    -0x3a0(%ebp),%eax
40783e:	50                   	push   %eax
40783f:	ff b5 4c fc ff ff    	push   -0x3b4(%ebp)
407845:	ff 15 48 f0 43 00    	call   *0x43f048
40784b:	85 c0                	test   %eax,%eax
40784d:	0f 85 ed f9 ff ff    	jne    0x407240
407853:	8b 75 d0             	mov    -0x30(%ebp),%esi
407856:	8b 4d cc             	mov    -0x34(%ebp),%ecx
407859:	2b f1                	sub    %ecx,%esi
40785b:	88 85 4c fc ff ff    	mov    %al,-0x3b4(%ebp)
407861:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
407866:	ff b5 4c fc ff ff    	push   -0x3b4(%ebp)
40786c:	f7 ee                	imul   %esi
40786e:	c1 fa 02             	sar    $0x2,%edx
407871:	8b c2                	mov    %edx,%eax
407873:	c1 e8 1f             	shr    $0x1f,%eax
407876:	03 c2                	add    %edx,%eax
407878:	8b 55 d0             	mov    -0x30(%ebp),%edx
40787b:	50                   	push   %eax
40787c:	e8 9f 5b 00 00       	call   0x40d420
407881:	8b 4d d0             	mov    -0x30(%ebp),%ecx
407884:	b8 ab aa aa 2a       	mov    $0x2aaaaaab,%eax
407889:	2b 4d cc             	sub    -0x34(%ebp),%ecx
40788c:	be 05 00 00 00       	mov    $0x5,%esi
407891:	f7 e9                	imul   %ecx
407893:	83 c4 08             	add    $0x8,%esp
407896:	c1 fa 02             	sar    $0x2,%edx
407899:	8b c2                	mov    %edx,%eax
40789b:	c1 e8 1f             	shr    $0x1f,%eax
40789e:	03 c2                	add    %edx,%eax