409561:	74 3c                	je     0x40959f
409563:	6a 03                	push   $0x3
409565:	5a                   	pop    %edx
409566:	e8 5b f8 ff ff       	call   0x408dc6
40956b:	3b c6                	cmp    %esi,%eax
40956d:	76 30                	jbe    0x40959f
40956f:	56                   	push   %esi
409570:	e8 d4 fd ff ff       	call   0x409349
409575:	85 c0                	test   %eax,%eax
409577:	74 26                	je     0x40959f
409579:	56                   	push   %esi
40957a:	e8 bb fa ff ff       	call   0x40903a
40957f:	8b f0                	mov    %eax,%esi
409581:	85 f6                	test   %esi,%esi
409583:	74 1a                	je     0x40959f
409585:	6a 07                	push   $0x7
409587:	68 84 18 40 00       	push   $0x401884
40958c:	56                   	push   %esi
40958d:	ff 15 d8 22 41 00    	call   *0x4122d8
409593:	83 c4 0c             	add    $0xc,%esp
409596:	85 c0                	test   %eax,%eax
409598:	75 05                	jne    0x40959f
40959a:	8b 46 0c             	mov    0xc(%esi),%eax
40959d:	5e                   	pop    %esi
40959e:	c3                   	ret
40959f:	33 c0                	xor    %eax,%eax
4095a1:	5e                   	pop    %esi
4095a2:	c3                   	ret
4095a3:	8b ff                	mov    %edi,%edi
4095a5:	55                   	push   %ebp
4095a6:	8b ec                	mov    %esp,%ebp
4095a8:	51                   	push   %ecx
4095a9:	51                   	push   %ecx
4095aa:	89 55 f8             	mov    %edx,-0x8(%ebp)
4095ad:	53                   	push   %ebx
4095ae:	8b d9                	mov    %ecx,%ebx
4095b0:	56                   	push   %esi
4095b1:	57                   	push   %edi
4095b2:	8b 7d 08             	mov    0x8(%ebp),%edi
4095b5:	85 d2                	test   %edx,%edx
4095b7:	75 04                	jne    0x4095bd
4095b9:	85 ff                	test   %edi,%edi
4095bb:	74 50                	je     0x40960d
4095bd:	e8 c9 fe ff ff       	call   0x40948b
4095c2:	85 c0                	test   %eax,%eax
4095c4:	74 47                	je     0x40960d
4095c6:	6a 03                	push   $0x3
4095c8:	5a                   	pop    %edx
4095c9:	e8 f8 f7 ff ff       	call   0x408dc6
4095ce:	8b f0                	mov    %eax,%esi
4095d0:	3b f3                	cmp    %ebx,%esi
4095d2:	77 23                	ja     0x4095f7
4095d4:	8b 0d b0 14 41 00    	mov    0x4114b0,%ecx
4095da:	6a 03                	push   $0x3
4095dc:	5a                   	pop    %edx
4095dd:	e8 09 f8 ff ff       	call   0x408deb
4095e2:	85 c0                	test   %eax,%eax
4095e4:	74 27                	je     0x40960d
4095e6:	8b d3                	mov    %ebx,%edx
4095e8:	8b c8                	mov    %eax,%ecx
4095ea:	2b d6                	sub    %esi,%edx
4095ec:	42                   	inc    %edx
4095ed:	e8 0e f7 ff ff       	call   0x408d00
4095f2:	83 f8 ff             	cmp    $0xffffffff,%eax
4095f5:	74 16                	je     0x40960d
4095f7:	53                   	push   %ebx
4095f8:	e8 4c fd ff ff       	call   0x409349
4095fd:	85 c0                	test   %eax,%eax
4095ff:	74 15                	je     0x409616
409601:	53                   	push   %ebx
409602:	e8 33 fa ff ff       	call   0x40903a
409607:	8b f0                	mov    %eax,%esi
409609:	85 f6                	test   %esi,%esi
40960b:	75 45                	jne    0x409652
40960d:	33 c0                	xor    %eax,%eax
40960f:	5f                   	pop    %edi
409610:	5e                   	pop    %esi
409611:	5b                   	pop    %ebx
409612:	c9                   	leave
409613:	c2 08 00             	ret    $0x8
409616:	6a 10                	push   $0x10
409618:	59                   	pop    %ecx
409619:	e8 4c 16 00 00       	call   0x40ac6a
40961e:	8b f0                	mov    %eax,%esi
409620:	89 75 fc             	mov    %esi,-0x4(%ebp)
409623:	85 f6                	test   %esi,%esi
409625:	74 e6                	je     0x40960d
409627:	83 66 08 00          	andl   $0x0,0x8(%esi)
40962b:	ba 84 18 40 00       	mov    $0x401884,%edx
409630:	83 66 0c 00          	andl   $0x0,0xc(%esi)
409634:	8b ce                	mov    %esi,%ecx
409636:	6a 07                	push   $0x7
409638:	e8 5b 0d 00 00       	call   0x40a398
40963d:	56                   	push   %esi
40963e:	53                   	push   %ebx
40963f:	e8 46 fc ff ff       	call   0x40928a
409644:	85 c0                	test   %eax,%eax
409646:	75 0a                	jne    0x409652
409648:	8d 4d fc             	lea    -0x4(%ebp),%ecx
40964b:	e8 76 15 00 00       	call   0x40abc6
409650:	eb bb                	jmp    0x40960d
409652:	6a 07                	push   $0x7
409654:	68 84 18 40 00       	push   $0x401884
409659:	56                   	push   %esi
40965a:	ff 15 d8 22 41 00    	call   *0x4122d8
409660:	83 c4 0c             	add    $0xc,%esp
409663:	85 c0                	test   %eax,%eax
409665:	75 a6                	jne    0x40960d
409667:	8b 5d f8             	mov    -0x8(%ebp),%ebx
40966a:	85 db                	test   %ebx,%ebx
40966c:	74 0a                	je     0x409678
40966e:	8b cb                	mov    %ebx,%ecx
409670:	e8 16 0e 00 00       	call   0x40a48b
409675:	8d 78 01             	lea    0x1(%eax),%edi
409678:	8b 46 08             	mov    0x8(%esi),%eax
40967b:	3b f8                	cmp    %eax,%edi
40967d:	77 11                	ja     0x409690
40967f:	81 ff 00 01 00 00    	cmp    $0x100,%edi
409685:	76 25                	jbe    0x4096ac
409687:	8d 14 3f             	lea    (%edi,%edi,1),%edx
40968a:	3b d0                	cmp    %eax,%edx
40968c:	73 1e                	jae    0x4096ac
40968e:	eb 03                	jmp    0x409693
409690:	8d 14 3f             	lea    (%edi,%edi,1),%edx
409693:	85 c0                	test   %eax,%eax
409695:	75 2e                	jne    0x4096c5
409697:	8b ca                	mov    %edx,%ecx
409699:	e8 cc 15 00 00       	call   0x40ac6a
40969e:	89 46 0c             	mov    %eax,0xc(%esi)
4096a1:	85 c0                	test   %eax,%eax
4096a3:	0f 84 64 ff ff ff    	je     0x40960d
4096a9:	89 7e 08             	mov    %edi,0x8(%esi)
4096ac:	8b 4e 0c             	mov    0xc(%esi),%ecx
4096af:	85 c9                	test   %ecx,%ecx
4096b1:	0f 84 56 ff ff ff    	je     0x40960d
4096b7:	85 db                	test   %ebx,%ebx
4096b9:	74 14                	je     0x4096cf
4096bb:	57                   	push   %edi
4096bc:	8b d3                	mov    %ebx,%edx
4096be:	e8 33 0d 00 00       	call   0x40a3f6
4096c3:	eb 1f                	jmp    0x4096e4
4096c5:	8d 4e 0c             	lea    0xc(%esi),%ecx
4096c8:	e8 47 16 00 00       	call   0x40ad14
4096cd:	eb d2                	jmp    0x4096a1
4096cf:	83 7d 0c 01          	cmpl   $0x1,0xc(%ebp)
4096d3:	75 0f                	jne    0x4096e4
4096d5:	8d 04 3f             	lea    (%edi,%edi,1),%eax
4096d8:	50                   	push   %eax
4096d9:	6a 00                	push   $0x0
4096db:	51                   	push   %ecx
4096dc:	e8 e3 5c 00 00       	call   0x40f3c4
4096e1:	83 c4 0c             	add    $0xc,%esp
4096e4:	8b 46 0c             	mov    0xc(%esi),%eax
4096e7:	e9 23 ff ff ff       	jmp    0x40960f
4096ec:	8b 0d b0 14 41 00    	mov    0x4114b0,%ecx
4096f2:	85 c9                	test   %ecx,%ecx
4096f4:	74 10                	je     0x409706
4096f6:	e8 6f f3 ff ff       	call   0x408a6a
4096fb:	85 c0                	test   %eax,%eax
4096fd:	74 07                	je     0x409706
4096ff:	33 d2                	xor    %edx,%edx
409701:	e9 09 f7 ff ff       	jmp    0x408e0f
409706:	b8 8c 18 40 00       	mov    $0x40188c,%eax
40970b:	c3                   	ret
40970c:	8b ff                	mov    %edi,%edi
40970e:	56                   	push   %esi
40970f:	57                   	push   %edi
409710:	8b f1                	mov    %ecx,%esi
409712:	ff 15 48 20 41 00    	call   *0x412048
409718:	8b f8                	mov    %eax,%edi
40971a:	85 f6                	test   %esi,%esi
40971c:	75 17                	jne    0x409735
40971e:	ff 15 48 20 41 00    	call   *0x412048
409724:	85 c0                	test   %eax,%eax
409726:	75 08                	jne    0x409730
409728:	6a 57                	push   $0x57
40972a:	ff 15 74 20 41 00    	call   *0x412074
409730:	33 c0                	xor    %eax,%eax
409732:	5f                   	pop    %edi
409733:	5e                   	pop    %esi
409734:	c3                   	ret
409735:	e8 51 fd ff ff       	call   0x40948b
40973a:	85 c0                	test   %eax,%eax
40973c:	74 f2                	je     0x409730
40973e:	51                   	push   %ecx
40973f:	8b 0d b0 14 41 00    	mov    0x4114b0,%ecx
409745:	33 d2                	xor    %edx,%edx
409747:	56                   	push   %esi
409748:	e8 b3 f9 ff ff       	call   0x409100
40974d:	85 c0                	test   %eax,%eax
40974f:	75 0e                	jne    0x40975f
409751:	ff 15 48 20 41 00    	call   *0x412048
409757:	85 c0                	test   %eax,%eax
409759:	75 d5                	jne    0x409730
40975b:	6a 08                	push   $0x8
40975d:	eb cb                	jmp    0x40972a
40975f:	57                   	push   %edi
409760:	ff 15 74 20 41 00    	call   *0x412074
409766:	33 c0                	xor    %eax,%eax
409768:	40                   	inc    %eax
409769:	eb c7                	jmp    0x409732
40976b:	8b ff                	mov    %edi,%edi
40976d:	55                   	push   %ebp
40976e:	8b ec                	mov    %esp,%ebp
409770:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409773:	56                   	push   %esi
409774:	33 f6                	xor    %esi,%esi
409776:	57                   	push   %edi
409777:	85 c9                	test   %ecx,%ecx
409779:	75 0e                	jne    0x409789
40977b:	ff 15 48 20 41 00    	call   *0x412048
409781:	85 c0                	test   %eax,%eax
409783:	75 69                	jne    0x4097ee
409785:	6a 57                	push   $0x57
409787:	eb 5f                	jmp    0x4097e8
409789:	39 75 08             	cmp    %esi,0x8(%ebp)
40978c:	75 0a                	jne    0x409798
40978e:	e8 79 ff ff ff       	call   0x40970c
409793:	33 c0                	xor    %eax,%eax
409795:	40                   	inc    %eax
409796:	eb 58                	jmp    0x4097f0
409798:	6a 01                	push   $0x1
40979a:	81 c6 00 01 00 00    	add    $0x100,%esi
4097a0:	33 d2                	xor    %edx,%edx
4097a2:	56                   	push   %esi
4097a3:	6a 05                	push   $0x5
4097a5:	59                   	pop    %ecx
4097a6:	e8 f8 fd ff ff       	call   0x4095a3
4097ab:	8b f8                	mov    %eax,%edi
4097ad:	85 ff                	test   %edi,%edi
4097af:	74 2b                	je     0x4097dc
4097b1:	8d 45 10             	lea    0x10(%ebp),%eax
4097b4:	8b d6                	mov    %esi,%edx
4097b6:	50                   	push   %eax
4097b7:	ff 75 0c             	push   0xc(%ebp)
4097ba:	8b cf                	mov    %edi,%ecx
4097bc:	e8 7d 17 00 00       	call   0x40af3e
4097c1:	3d 7a 00 07 80       	cmp    $0x8007007a,%eax
4097c6:	74 d0                	je     0x409798
4097c8:	85 c0                	test   %eax,%eax
4097ca:	79 06                	jns    0x4097d2
4097cc:	0f b7 c0             	movzwl %ax,%eax
4097cf:	50                   	push   %eax
4097d0:	eb 16                	jmp    0x4097e8
4097d2:	8b cf                	mov    %edi,%ecx
4097d4:	5f                   	pop    %edi
4097d5:	5e                   	pop    %esi
4097d6:	5d                   	pop    %ebp
4097d7:	e9 30 ff ff ff       	jmp    0x40970c
4097dc:	ff 15 48 20 41 00    	call   *0x412048
4097e2:	85 c0                	test   %eax,%eax
4097e4:	75 08                	jne    0x4097ee
4097e6:	6a 08                	push   $0x8
4097e8:	ff 15 74 20 41 00    	call   *0x412074
4097ee:	33 c0                	xor    %eax,%eax
4097f0:	5f                   	pop    %edi
4097f1:	5e                   	pop    %esi
4097f2:	5d                   	pop    %ebp
4097f3:	c3                   	ret
4097f4:	8b ff                	mov    %edi,%edi
4097f6:	55                   	push   %ebp
4097f7:	8b ec                	mov    %esp,%ebp
4097f9:	51                   	push   %ecx
4097fa:	56                   	push   %esi
4097fb:	33 f6                	xor    %esi,%esi
4097fd:	89 75 fc             	mov    %esi,-0x4(%ebp)
409800:	e8 86 fc ff ff       	call   0x40948b
409805:	85 c0                	test   %eax,%eax
409807:	74 6b                	je     0x409874
409809:	56                   	push   %esi
40980a:	56                   	push   %esi
40980b:	8d 45 fc             	lea    -0x4(%ebp),%eax
40980e:	50                   	push   %eax
40980f:	56                   	push   %esi
409810:	ff 15 48 20 41 00    	call   *0x412048
409816:	50                   	push   %eax
409817:	56                   	push   %esi
409818:	68 00 13 00 00       	push   $0x1300
40981d:	ff 15 60 20 41 00    	call   *0x412060
409823:	85 c0                	test   %eax,%eax
409825:	74 1b                	je     0x409842
409827:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40982a:	85 c9                	test   %ecx,%ecx
40982c:	74 34                	je     0x409862
40982e:	e8 d9 fe ff ff       	call   0x40970c
409833:	ff 75 fc             	push   -0x4(%ebp)
409836:	8b f0                	mov    %eax,%esi
409838:	ff 15 ec 20 41 00    	call   *0x4120ec
40983e:	8b c6                	mov    %esi,%eax
409840:	eb 34                	jmp    0x409876
409842:	39 75 fc             	cmp    %esi,-0x4(%ebp)
409845:	74 1b                	je     0x409862
409847:	ff 75 fc             	push   -0x4(%ebp)
40984a:	ff 15 ec 20 41 00    	call   *0x4120ec
409850:	ff 15 48 20 41 00    	call   *0x412048
409856:	85 c0                	test   %eax,%eax
409858:	75 08                	jne    0x409862
40985a:	6a 08                	push   $0x8
40985c:	ff 15 74 20 41 00    	call   *0x412074
409862:	ff 15 48 20 41 00    	call   *0x412048
409868:	85 c0                	test   %eax,%eax
40986a:	75 08                	jne    0x409874
40986c:	6a 08                	push   $0x8
40986e:	ff 15 74 20 41 00    	call   *0x412074
409874:	33 c0                	xor    %eax,%eax
409876:	5e                   	pop    %esi
409877:	c9                   	leave
409878:	c3                   	ret
409879:	8b ff                	mov    %edi,%edi
40987b:	55                   	push   %ebp
40987c:	8b ec                	mov    %esp,%ebp
40987e:	51                   	push   %ecx
40987f:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
409883:	33 d2                	xor    %edx,%edx
409885:	56                   	push   %esi
409886:	57                   	push   %edi
409887:	6a 01                	push   $0x1
409889:	bf 00 01 00 00       	mov    $0x100,%edi
40988e:	33 c9                	xor    %ecx,%ecx
409890:	57                   	push   %edi
409891:	e8 0d fd ff ff       	call   0x4095a3
409896:	8b f0                	mov    %eax,%esi
409898:	85 f6                	test   %esi,%esi
40989a:	74 49                	je     0x4098e5
40989c:	6a 01                	push   $0x1
40989e:	33 c9                	xor    %ecx,%ecx
4098a0:	33 d2                	xor    %edx,%edx
4098a2:	57                   	push   %edi
4098a3:	41                   	inc    %ecx
4098a4:	e8 fa fc ff ff       	call   0x4095a3
4098a9:	8b f8                	mov    %eax,%edi
4098ab:	85 ff                	test   %edi,%edi
4098ad:	74 36                	je     0x4098e5
4098af:	8b cf                	mov    %edi,%ecx
4098b1:	e8 44 15 00 00       	call   0x40adfa
4098b6:	d1 e8                	shr    $1,%eax
4098b8:	8b ce                	mov    %esi,%ecx
4098ba:	48                   	dec    %eax
4098bb:	50                   	push   %eax
4098bc:	57                   	push   %edi
4098bd:	e8 38 15 00 00       	call   0x40adfa
4098c2:	d1 e8                	shr    $1,%eax
4098c4:	48                   	dec    %eax
4098c5:	50                   	push   %eax
4098c6:	56                   	push   %esi
4098c7:	8d 45 fc             	lea    -0x4(%ebp),%eax
4098ca:	50                   	push   %eax
4098cb:	ff 15 08 21 41 00    	call   *0x412108
4098d1:	85 c0                	test   %eax,%eax
4098d3:	75 13                	jne    0x4098e8