405412:	89 45 0c             	mov    %eax,0xc(%ebp)
405415:	eb 03                	jmp    0x40541a
405417:	8b 45 0c             	mov    0xc(%ebp),%eax
40541a:	83 7e 14 08          	cmpl   $0x8,0x14(%esi)
40541e:	8b d6                	mov    %esi,%edx
405420:	72 02                	jb     0x405424
405422:	8b 16                	mov    (%esi),%edx
405424:	8b 4e 10             	mov    0x10(%esi),%ecx
405427:	8d 14 4a             	lea    (%edx,%ecx,2),%edx
40542a:	8b ce                	mov    %esi,%ecx
40542c:	72 02                	jb     0x405430
40542e:	8b 0e                	mov    (%esi),%ecx
405430:	53                   	push   %ebx
405431:	52                   	push   %edx
405432:	51                   	push   %ecx
405433:	50                   	push   %eax
405434:	8d 45 e4             	lea    -0x1c(%ebp),%eax
405437:	50                   	push   %eax
405438:	8d 4d ac             	lea    -0x54(%ebp),%ecx
40543b:	e8 70 e7 ff ff       	call   0x403bb0
405440:	6a 0c                	push   $0xc
405442:	59                   	pop    %ecx
405443:	8b 18                	mov    (%eax),%ebx
405445:	8b 45 b8             	mov    -0x48(%ebp),%eax
405448:	2b 45 b4             	sub    -0x4c(%ebp),%eax
40544b:	99                   	cltd
40544c:	f7 f9                	idiv   %ecx
40544e:	8d 4d d8             	lea    -0x28(%ebp),%ecx
405451:	89 5d 0c             	mov    %ebx,0xc(%ebp)
405454:	8b d0                	mov    %eax,%edx
405456:	85 d2                	test   %edx,%edx
405458:	0f 45 4d b4          	cmovne -0x4c(%ebp),%ecx
40545c:	8b 41 04             	mov    0x4(%ecx),%eax
40545f:	89 45 10             	mov    %eax,0x10(%ebp)
405462:	3b 45 14             	cmp    0x14(%ebp),%eax
405465:	74 69                	je     0x4054d0
405467:	f7 c7 00 10 00 00    	test   $0x1000,%edi
40546d:	75 61                	jne    0x4054d0
40546f:	8b 5d 20             	mov    0x20(%ebp),%ebx
405472:	8d 4d d8             	lea    -0x28(%ebp),%ecx
405475:	85 d2                	test   %edx,%edx
405477:	8d 45 d8             	lea    -0x28(%ebp),%eax
40547a:	0f 45 45 b4          	cmovne -0x4c(%ebp),%eax
40547e:	0f 45 4d b4          	cmovne -0x4c(%ebp),%ecx
405482:	8b 11                	mov    (%ecx),%edx
405484:	8b 48 04             	mov    0x4(%eax),%ecx
405487:	8b c3                	mov    %ebx,%eax
405489:	0d 00 01 00 00       	or     $0x100,%eax
40548e:	3b d1                	cmp    %ecx,%edx
405490:	0f 45 d8             	cmovne %eax,%ebx
405493:	83 65 f0 00          	andl   $0x0,-0x10(%ebp)
405497:	3b d1                	cmp    %ecx,%edx
405499:	89 5d 20             	mov    %ebx,0x20(%ebp)
40549c:	8b 4d 10             	mov    0x10(%ebp),%ecx
40549f:	b8 00 20 00 00       	mov    $0x2000,%eax
4054a4:	0f 45 45 f0          	cmovne -0x10(%ebp),%eax
4054a8:	51                   	push   %ecx
4054a9:	0b c3                	or     %ebx,%eax
4054ab:	50                   	push   %eax
4054ac:	ff 75 18             	push   0x18(%ebp)
4054af:	8d 45 ac             	lea    -0x54(%ebp),%eax
4054b2:	50                   	push   %eax
4054b3:	ff 75 14             	push   0x14(%ebp)
4054b6:	51                   	push   %ecx
4054b7:	e8 48 00 00 00       	call   0x405504
4054bc:	83 c4 18             	add    $0x18,%esp
4054bf:	84 c0                	test   %al,%al
4054c1:	8b 45 ec             	mov    -0x14(%ebp),%eax
4054c4:	0f 85 2d ff ff ff    	jne    0x4053f7
4054ca:	8b 5d 0c             	mov    0xc(%ebp),%ebx
4054cd:	8b 45 10             	mov    0x10(%ebp),%eax
4054d0:	f7 c7 00 08 00 00    	test   $0x800,%edi
4054d6:	75 13                	jne    0x4054eb
4054d8:	53                   	push   %ebx
4054d9:	ff 75 14             	push   0x14(%ebp)
4054dc:	50                   	push   %eax
4054dd:	8d 45 10             	lea    0x10(%ebp),%eax
4054e0:	50                   	push   %eax
4054e1:	e8 f3 df ff ff       	call   0x4034d9
4054e6:	83 c4 10             	add    $0x10,%esp
4054e9:	8b 18                	mov    (%eax),%ebx
4054eb:	8b 75 08             	mov    0x8(%ebp),%esi
4054ee:	89 1e                	mov    %ebx,(%esi)
4054f0:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
4054f4:	8d 4d b4             	lea    -0x4c(%ebp),%ecx
4054f7:	e8 2e 7d 01 00       	call   0x41d22a
4054fc:	8b c6                	mov    %esi,%eax
4054fe:	e8 10 a5 03 00       	call   0x43fa13
405503:	c3                   	ret
405504:	68 80 00 00 00       	push   $0x80
405509:	b8 20 a3 48 00       	mov    $0x48a320,%eax
40550e:	e8 37 a5 03 00       	call   0x43fa4a
405513:	8b 45 14             	mov    0x14(%ebp),%eax
405516:	8b 08                	mov    (%eax),%ecx
405518:	85 c9                	test   %ecx,%ecx
40551a:	75 07                	jne    0x405523
40551c:	32 c0                	xor    %al,%al
40551e:	e9 c4 00 00 00       	jmp    0x4055e7
405523:	ff 75 18             	push   0x18(%ebp)
405526:	8b 7d 0c             	mov    0xc(%ebp),%edi
405529:	83 c0 04             	add    $0x4,%eax
40552c:	ff 71 14             	push   0x14(%ecx)
40552f:	33 db                	xor    %ebx,%ebx
405531:	ff 71 1c             	push   0x1c(%ecx)
405534:	51                   	push   %ecx
405535:	50                   	push   %eax
405536:	57                   	push   %edi
405537:	ff 75 08             	push   0x8(%ebp)
40553a:	8d 8d 74 ff ff ff    	lea    -0x8c(%ebp),%ecx
405540:	e8 09 54 00 00       	call   0x40a94e
405545:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405548:	8d 8d 74 ff ff ff    	lea    -0x8c(%ebp),%ecx
40554e:	8b 75 10             	mov    0x10(%ebp),%esi
405551:	53                   	push   %ebx
405552:	56                   	push   %esi
405553:	e8 53 f1 ff ff       	call   0x4046ab
405558:	84 c0                	test   %al,%al
40555a:	75 60                	jne    0x4055bc
40555c:	8b 4d 08             	mov    0x8(%ebp),%ecx
40555f:	3b cf                	cmp    %edi,%ecx
405561:	74 73                	je     0x4055d6
405563:	f6 45 18 40          	testb  $0x40,0x18(%ebp)
405567:	75 6d                	jne    0x4055d6
405569:	8b 45 d4             	mov    -0x2c(%ebp),%eax
40556c:	0d 00 01 00 00       	or     $0x100,%eax
405571:	89 45 d4             	mov    %eax,-0x2c(%ebp)
405574:	25 ff df ff ff       	and    $0xffffdfff,%eax
405579:	89 45 d4             	mov    %eax,-0x2c(%ebp)
40557c:	8d 41 02             	lea    0x2(%ecx),%eax
40557f:	eb 12                	jmp    0x405593
405581:	89 45 c8             	mov    %eax,-0x38(%ebp)
405584:	e8 22 f1 ff ff       	call   0x4046ab
405589:	84 c0                	test   %al,%al
40558b:	75 2f                	jne    0x4055bc
40558d:	8b 45 14             	mov    0x14(%ebp),%eax
405590:	83 c0 02             	add    $0x2,%eax
405593:	53                   	push   %ebx
405594:	57                   	push   %edi
405595:	50                   	push   %eax
405596:	8d 8d 74 ff ff ff    	lea    -0x8c(%ebp),%ecx
40559c:	e8 b8 70 01 00       	call   0x41c659
4055a1:	89 45 14             	mov    %eax,0x14(%ebp)
4055a4:	8d 8d 74 ff ff ff    	lea    -0x8c(%ebp),%ecx
4055aa:	53                   	push   %ebx
4055ab:	56                   	push   %esi
4055ac:	3b c7                	cmp    %edi,%eax
4055ae:	75 d1                	jne    0x405581
4055b0:	89 7d c8             	mov    %edi,-0x38(%ebp)
4055b3:	e8 f3 f0 ff ff       	call   0x4046ab
4055b8:	84 c0                	test   %al,%al
4055ba:	74 1a                	je     0x4055d6
4055bc:	b3 01                	mov    $0x1,%bl
4055be:	85 f6                	test   %esi,%esi
4055c0:	74 14                	je     0x4055d6
4055c2:	8b 45 1c             	mov    0x1c(%ebp),%eax
4055c5:	89 06                	mov    %eax,(%esi)
4055c7:	8b 45 08             	mov    0x8(%ebp),%eax
4055ca:	3b 46 18             	cmp    0x18(%esi),%eax
4055cd:	89 46 14             	mov    %eax,0x14(%esi)
4055d0:	0f 95 c0             	setne  %al
4055d3:	88 46 1c             	mov    %al,0x1c(%esi)
4055d6:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
4055da:	8d 8d 74 ff ff ff    	lea    -0x8c(%ebp),%ecx
4055e0:	e8 b8 7f 00 00       	call   0x40d59d
4055e5:	8a c3                	mov    %bl,%al
4055e7:	e8 27 a4 03 00       	call   0x43fa13
4055ec:	c3                   	ret
4055ed:	68 84 00 00 00       	push   $0x84
4055f2:	b8 49 a3 48 00       	mov    $0x48a349,%eax
4055f7:	e8 4e a4 03 00       	call   0x43fa4a
4055fc:	8b 45 14             	mov    0x14(%ebp),%eax
4055ff:	8b 08                	mov    (%eax),%ecx
405601:	85 c9                	test   %ecx,%ecx
405603:	75 07                	jne    0x40560c
405605:	32 c0                	xor    %al,%al
405607:	e9 06 01 00 00       	jmp    0x405712
40560c:	ff 75 18             	push   0x18(%ebp)
40560f:	8b 75 08             	mov    0x8(%ebp),%esi
405612:	83 c0 04             	add    $0x4,%eax
405615:	ff 71 14             	push   0x14(%ecx)
405618:	33 db                	xor    %ebx,%ebx
40561a:	ff 71 1c             	push   0x1c(%ecx)
40561d:	51                   	push   %ecx
40561e:	50                   	push   %eax
40561f:	ff 75 0c             	push   0xc(%ebp)
405622:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405628:	56                   	push   %esi
405629:	e8 ad 53 00 00       	call   0x40a9db
40562e:	89 5d fc             	mov    %ebx,-0x4(%ebp)
405631:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405637:	8b 7d 10             	mov    0x10(%ebp),%edi
40563a:	53                   	push   %ebx
40563b:	57                   	push   %edi
40563c:	e8 a6 f1 ff ff       	call   0x4047e7
405641:	84 c0                	test   %al,%al
405643:	0f 85 a1 00 00 00    	jne    0x4056ea
405649:	8b 45 08             	mov    0x8(%ebp),%eax
40564c:	3b 45 0c             	cmp    0xc(%ebp),%eax
40564f:	0f 84 ac 00 00 00    	je     0x405701
405655:	f6 45 18 40          	testb  $0x40,0x18(%ebp)
405659:	0f 85 a2 00 00 00    	jne    0x405701
40565f:	8b 4d d0             	mov    -0x30(%ebp),%ecx
405662:	81 c9 00 01 00 00    	or     $0x100,%ecx
405668:	89 4d d0             	mov    %ecx,-0x30(%ebp)
40566b:	81 e1 ff df ff ff    	and    $0xffffdfff,%ecx
405671:	53                   	push   %ebx
405672:	ff 75 0c             	push   0xc(%ebp)
405675:	40                   	inc    %eax
405676:	89 4d d0             	mov    %ecx,-0x30(%ebp)
405679:	50                   	push   %eax
40567a:	89 45 08             	mov    %eax,0x8(%ebp)
40567d:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405683:	8d 45 f0             	lea    -0x10(%ebp),%eax
405686:	50                   	push   %eax
405687:	e8 2e 72 01 00       	call   0x41c8ba
40568c:	8b 08                	mov    (%eax),%ecx
40568e:	8b 45 0c             	mov    0xc(%ebp),%eax
405691:	89 4d 08             	mov    %ecx,0x8(%ebp)
405694:	3b c8                	cmp    %eax,%ecx
405696:	74 3e                	je     0x4056d6
405698:	89 45 14             	mov    %eax,0x14(%ebp)
40569b:	53                   	push   %ebx
40569c:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
40569f:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4056a5:	57                   	push   %edi
4056a6:	e8 3c f1 ff ff       	call   0x4047e7
4056ab:	84 c0                	test   %al,%al
4056ad:	75 3b                	jne    0x4056ea
4056af:	8b 45 08             	mov    0x8(%ebp),%eax
4056b2:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4056b8:	53                   	push   %ebx
4056b9:	ff 75 14             	push   0x14(%ebp)
4056bc:	40                   	inc    %eax
4056bd:	50                   	push   %eax
4056be:	89 45 08             	mov    %eax,0x8(%ebp)
4056c1:	8d 45 f0             	lea    -0x10(%ebp),%eax
4056c4:	50                   	push   %eax
4056c5:	e8 f0 71 01 00       	call   0x41c8ba
4056ca:	8b 08                	mov    (%eax),%ecx
4056cc:	8b 45 0c             	mov    0xc(%ebp),%eax
4056cf:	89 4d 08             	mov    %ecx,0x8(%ebp)
4056d2:	3b c8                	cmp    %eax,%ecx
4056d4:	75 c5                	jne    0x40569b
4056d6:	53                   	push   %ebx
4056d7:	57                   	push   %edi
4056d8:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4056de:	89 45 c4             	mov    %eax,-0x3c(%ebp)
4056e1:	e8 01 f1 ff ff       	call   0x4047e7
4056e6:	84 c0                	test   %al,%al
4056e8:	74 17                	je     0x405701
4056ea:	b3 01                	mov    $0x1,%bl
4056ec:	85 ff                	test   %edi,%edi
4056ee:	74 11                	je     0x405701
4056f0:	8b 45 1c             	mov    0x1c(%ebp),%eax
4056f3:	89 07                	mov    %eax,(%edi)
4056f5:	89 77 14             	mov    %esi,0x14(%edi)
4056f8:	3b 77 18             	cmp    0x18(%edi),%esi
4056fb:	0f 95 c0             	setne  %al
4056fe:	88 47 1c             	mov    %al,0x1c(%edi)
405701:	83 4d fc ff          	orl    $0xffffffff,-0x4(%ebp)
405705:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
40570b:	e8 ea 7e 00 00       	call   0x40d5fa
405710:	8a c3                	mov    %bl,%al
405712:	e8 fc a2 03 00       	call   0x43fa13
405717:	c3                   	ret
405718:	68 84 00 00 00       	push   $0x84
40571d:	b8 72 a3 48 00       	mov    $0x48a372,%eax
405722:	e8 23 a3 03 00       	call   0x43fa4a
405727:	8b 45 14             	mov    0x14(%ebp),%eax
40572a:	8b 08                	mov    (%eax),%ecx
40572c:	85 c9                	test   %ecx,%ecx
40572e:	75 07                	jne    0x405737
405730:	32 c0                	xor    %al,%al
405732:	e9 0a 01 00 00       	jmp    0x405841
405737:	ff 75 18             	push   0x18(%ebp)
40573a:	8b 75 08             	mov    0x8(%ebp),%esi
40573d:	83 c0 04             	add    $0x4,%eax
405740:	ff 71 14             	push   0x14(%ecx)
405743:	33 db                	xor    %ebx,%ebx
405745:	ff 71 1c             	push   0x1c(%ecx)
405748:	51                   	push   %ecx
405749:	50                   	push   %eax
40574a:	ff 75 0c             	push   0xc(%ebp)
40574d:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405753:	56                   	push   %esi
405754:	e8 12 53 00 00       	call   0x40aa6b
405759:	89 5d fc             	mov    %ebx,-0x4(%ebp)
40575c:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
405762:	8b 7d 10             	mov    0x10(%ebp),%edi
405765:	53                   	push   %ebx
405766:	57                   	push   %edi
405767:	e8 b7 f1 ff ff       	call   0x404923
40576c:	84 c0                	test   %al,%al
40576e:	0f 85 a5 00 00 00    	jne    0x405819
405774:	8b 45 08             	mov    0x8(%ebp),%eax
405777:	3b 45 0c             	cmp    0xc(%ebp),%eax
40577a:	0f 84 b0 00 00 00    	je     0x405830
405780:	f6 45 18 40          	testb  $0x40,0x18(%ebp)
405784:	0f 85 a6 00 00 00    	jne    0x405830
40578a:	8b 4d d0             	mov    -0x30(%ebp),%ecx
40578d:	83 c0 02             	add    $0x2,%eax
405790:	81 c9 00 01 00 00    	or     $0x100,%ecx
405796:	89 4d d0             	mov    %ecx,-0x30(%ebp)
405799:	81 e1 ff df ff ff    	and    $0xffffdfff,%ecx
40579f:	53                   	push   %ebx
4057a0:	ff 75 0c             	push   0xc(%ebp)
4057a3:	89 45 08             	mov    %eax,0x8(%ebp)
4057a6:	50                   	push   %eax
4057a7:	8d 45 f0             	lea    -0x10(%ebp),%eax
4057aa:	89 4d d0             	mov    %ecx,-0x30(%ebp)
4057ad:	50                   	push   %eax
4057ae:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4057b4:	e8 16 73 01 00       	call   0x41cacf
4057b9:	8b 08                	mov    (%eax),%ecx
4057bb:	8b 45 0c             	mov    0xc(%ebp),%eax
4057be:	89 4d 08             	mov    %ecx,0x8(%ebp)
4057c1:	3b c8                	cmp    %eax,%ecx
4057c3:	74 40                	je     0x405805
4057c5:	89 45 14             	mov    %eax,0x14(%ebp)
4057c8:	53                   	push   %ebx
4057c9:	89 4d c4             	mov    %ecx,-0x3c(%ebp)
4057cc:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4057d2:	57                   	push   %edi
4057d3:	e8 4b f1 ff ff       	call   0x404923
4057d8:	84 c0                	test   %al,%al
4057da:	75 3d                	jne    0x405819
4057dc:	8b 45 08             	mov    0x8(%ebp),%eax
4057df:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
4057e5:	53                   	push   %ebx
4057e6:	ff 75 14             	push   0x14(%ebp)
4057e9:	83 c0 02             	add    $0x2,%eax
4057ec:	50                   	push   %eax
4057ed:	89 45 08             	mov    %eax,0x8(%ebp)
4057f0:	8d 45 f0             	lea    -0x10(%ebp),%eax
4057f3:	50                   	push   %eax
4057f4:	e8 d6 72 01 00       	call   0x41cacf
4057f9:	8b 08                	mov    (%eax),%ecx
4057fb:	8b 45 0c             	mov    0xc(%ebp),%eax
4057fe:	89 4d 08             	mov    %ecx,0x8(%ebp)
405801:	3b c8                	cmp    %eax,%ecx
405803:	75 c3                	jne    0x4057c8
405805:	53                   	push   %ebx
405806:	57                   	push   %edi
405807:	8d 8d 70 ff ff ff    	lea    -0x90(%ebp),%ecx
40580d:	89 45 c4             	mov    %eax,-0x3c(%ebp)
405810:	e8 0e f1 ff ff       	call   0x404923
405815:	84 c0                	test   %al,%al
405817:	74 17                	je     0x405830
405819:	b3 01                	mov    $0x1,%bl
40581b:	85 ff                	test   %edi,%edi