40654c:	2b d9                	sub    %ecx,%ebx
40654e:	53                   	push   %ebx
40654f:	50                   	push   %eax
406550:	e8 65 5b 00 00       	call   0x40c0ba
406555:	83 c4 14             	add    $0x14,%esp
406558:	85 c0                	test   %eax,%eax
40655a:	75 bd                	jne    0x406519
40655c:	68 bc ff 40 00       	push   $0x40ffbc
406561:	be 14 03 00 00       	mov    $0x314,%esi
406566:	56                   	push   %esi
406567:	57                   	push   %edi
406568:	e8 d8 5a 00 00       	call   0x40c045
40656d:	83 c4 0c             	add    $0xc,%esp
406570:	85 c0                	test   %eax,%eax
406572:	75 a5                	jne    0x406519
406574:	ff b5 04 fe ff ff    	push   -0x1fc(%ebp)
40657a:	56                   	push   %esi
40657b:	57                   	push   %edi
40657c:	e8 c4 5a 00 00       	call   0x40c045
406581:	83 c4 0c             	add    $0xc,%esp
406584:	85 c0                	test   %eax,%eax
406586:	75 91                	jne    0x406519
406588:	68 10 20 01 00       	push   $0x12010
40658d:	68 70 ff 40 00       	push   $0x40ff70
406592:	57                   	push   %edi
406593:	e8 41 59 00 00       	call   0x40bed9
406598:	83 c4 0c             	add    $0xc,%esp
40659b:	eb 5e                	jmp    0x4065fb
40659d:	53                   	push   %ebx
40659e:	53                   	push   %ebx
40659f:	53                   	push   %ebx
4065a0:	53                   	push   %ebx
4065a1:	53                   	push   %ebx
4065a2:	e9 79 ff ff ff       	jmp    0x406520
4065a7:	6a f4                	push   $0xfffffff4
4065a9:	ff 15 40 f0 40 00    	call   *0x40f040
4065af:	8b f0                	mov    %eax,%esi
4065b1:	3b f3                	cmp    %ebx,%esi
4065b3:	74 46                	je     0x4065fb
4065b5:	83 fe ff             	cmp    $0xffffffff,%esi
4065b8:	74 41                	je     0x4065fb
4065ba:	33 c0                	xor    %eax,%eax
4065bc:	8a 0c 47             	mov    (%edi,%eax,2),%cl
4065bf:	88 8c 05 08 fe ff ff 	mov    %cl,-0x1f8(%ebp,%eax,1)
4065c6:	66 39 1c 47          	cmp    %bx,(%edi,%eax,2)
4065ca:	74 08                	je     0x4065d4
4065cc:	40                   	inc    %eax
4065cd:	3d f4 01 00 00       	cmp    $0x1f4,%eax
4065d2:	72 e8                	jb     0x4065bc
4065d4:	53                   	push   %ebx
4065d5:	8d 85 04 fe ff ff    	lea    -0x1fc(%ebp),%eax
4065db:	50                   	push   %eax
4065dc:	8d 85 08 fe ff ff    	lea    -0x1f8(%ebp),%eax
4065e2:	50                   	push   %eax
4065e3:	88 5d fb             	mov    %bl,-0x5(%ebp)
4065e6:	e8 75 45 00 00       	call   0x40ab60
4065eb:	59                   	pop    %ecx
4065ec:	50                   	push   %eax
4065ed:	8d 85 08 fe ff ff    	lea    -0x1f8(%ebp),%eax
4065f3:	50                   	push   %eax
4065f4:	56                   	push   %esi
4065f5:	ff 15 e8 f0 40 00    	call   *0x40f0e8
4065fb:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4065fe:	5f                   	pop    %edi
4065ff:	5e                   	pop    %esi
406600:	33 cd                	xor    %ebp,%ecx
406602:	5b                   	pop    %ebx
406603:	e8 9c b7 ff ff       	call   0x401da4
406608:	c9                   	leave
406609:	c3                   	ret
40660a:	6a 03                	push   $0x3
40660c:	e8 76 5b 00 00       	call   0x40c187
406611:	59                   	pop    %ecx
406612:	83 f8 01             	cmp    $0x1,%eax
406615:	74 15                	je     0x40662c
406617:	6a 03                	push   $0x3
406619:	e8 69 5b 00 00       	call   0x40c187
40661e:	59                   	pop    %ecx
40661f:	85 c0                	test   %eax,%eax
406621:	75 1f                	jne    0x406642
406623:	83 3d 80 22 41 00 01 	cmpl   $0x1,0x412280
40662a:	75 16                	jne    0x406642
40662c:	68 fc 00 00 00       	push   $0xfc
406631:	e8 25 fe ff ff       	call   0x40645b
406636:	68 ff 00 00 00       	push   $0xff
40663b:	e8 1b fe ff ff       	call   0x40645b
406640:	59                   	pop    %ecx
406641:	59                   	pop    %ecx
406642:	c3                   	ret
406643:	8b ff                	mov    %edi,%edi
406645:	55                   	push   %ebp
406646:	8b ec                	mov    %esp,%ebp
406648:	8b 45 08             	mov    0x8(%ebp),%eax
40664b:	a3 b8 38 41 00       	mov    %eax,0x4138b8
406650:	5d                   	pop    %ebp
406651:	c3                   	ret
406652:	8b ff                	mov    %edi,%edi
406654:	55                   	push   %ebp
406655:	8b ec                	mov    %esp,%ebp
406657:	ff 35 b8 38 41 00    	push   0x4138b8
40665d:	ff 15 90 f0 40 00    	call   *0x40f090
406663:	85 c0                	test   %eax,%eax
406665:	74 0f                	je     0x406676
406667:	ff 75 08             	push   0x8(%ebp)
40666a:	ff d0                	call   *%eax
40666c:	59                   	pop    %ecx
40666d:	85 c0                	test   %eax,%eax
40666f:	74 05                	je     0x406676
406671:	33 c0                	xor    %eax,%eax
406673:	40                   	inc    %eax
406674:	5d                   	pop    %ebp
406675:	c3                   	ret
406676:	33 c0                	xor    %eax,%eax
406678:	5d                   	pop    %ebp
406679:	c3                   	ret
40667a:	8b ff                	mov    %edi,%edi
40667c:	55                   	push   %ebp
40667d:	8b ec                	mov    %esp,%ebp
40667f:	83 ec 4c             	sub    $0x4c,%esp
406682:	56                   	push   %esi
406683:	8d 45 b4             	lea    -0x4c(%ebp),%eax
406686:	50                   	push   %eax
406687:	ff 15 34 f0 40 00    	call   *0x40f034
40668d:	6a 40                	push   $0x40
40668f:	6a 20                	push   $0x20
406691:	5e                   	pop    %esi
406692:	56                   	push   %esi
406693:	e8 6c 02 00 00       	call   0x406904
406698:	59                   	pop    %ecx
406699:	59                   	pop    %ecx
40669a:	33 c9                	xor    %ecx,%ecx
40669c:	3b c1                	cmp    %ecx,%eax
40669e:	75 08                	jne    0x4066a8
4066a0:	83 c8 ff             	or     $0xffffffff,%eax
4066a3:	e9 0f 02 00 00       	jmp    0x4068b7
4066a8:	8d 90 00 08 00 00    	lea    0x800(%eax),%edx
4066ae:	a3 20 46 41 00       	mov    %eax,0x414620
4066b3:	89 35 00 46 41 00    	mov    %esi,0x414600
4066b9:	3b c2                	cmp    %edx,%eax
4066bb:	73 36                	jae    0x4066f3
4066bd:	83 c0 05             	add    $0x5,%eax
4066c0:	83 48 fb ff          	orl    $0xffffffff,-0x5(%eax)
4066c4:	66 c7 40 ff 00 0a    	movw   $0xa00,-0x1(%eax)
4066ca:	89 48 03             	mov    %ecx,0x3(%eax)
4066cd:	66 c7 40 1f 00 0a    	movw   $0xa00,0x1f(%eax)
4066d3:	c6 40 21 0a          	movb   $0xa,0x21(%eax)
4066d7:	89 48 33             	mov    %ecx,0x33(%eax)
4066da:	88 48 2f             	mov    %cl,0x2f(%eax)
4066dd:	8b 35 20 46 41 00    	mov    0x414620,%esi
4066e3:	83 c0 40             	add    $0x40,%eax
4066e6:	8d 50 fb             	lea    -0x5(%eax),%edx
4066e9:	81 c6 00 08 00 00    	add    $0x800,%esi
4066ef:	3b d6                	cmp    %esi,%edx
4066f1:	72 cd                	jb     0x4066c0
4066f3:	53                   	push   %ebx
4066f4:	57                   	push   %edi
4066f5:	66 39 4d e6          	cmp    %cx,-0x1a(%ebp)
4066f9:	0f 84 0e 01 00 00    	je     0x40680d
4066ff:	8b 45 e8             	mov    -0x18(%ebp),%eax
406702:	3b c1                	cmp    %ecx,%eax
406704:	0f 84 03 01 00 00    	je     0x40680d
40670a:	8b 18                	mov    (%eax),%ebx
40670c:	83 c0 04             	add    $0x4,%eax
40670f:	89 45 fc             	mov    %eax,-0x4(%ebp)
406712:	03 c3                	add    %ebx,%eax
406714:	be 00 08 00 00       	mov    $0x800,%esi
406719:	89 45 f8             	mov    %eax,-0x8(%ebp)
40671c:	3b de                	cmp    %esi,%ebx
40671e:	7c 02                	jl     0x406722
406720:	8b de                	mov    %esi,%ebx
406722:	39 1d 00 46 41 00    	cmp    %ebx,0x414600
406728:	7d 6b                	jge    0x406795
40672a:	bf 24 46 41 00       	mov    $0x414624,%edi
40672f:	6a 40                	push   $0x40
406731:	6a 20                	push   $0x20
406733:	e8 cc 01 00 00       	call   0x406904
406738:	59                   	pop    %ecx
406739:	59                   	pop    %ecx
40673a:	85 c0                	test   %eax,%eax
40673c:	74 51                	je     0x40678f
40673e:	83 05 00 46 41 00 20 	addl   $0x20,0x414600
406745:	8d 88 00 08 00 00    	lea    0x800(%eax),%ecx
40674b:	89 07                	mov    %eax,(%edi)
40674d:	3b c1                	cmp    %ecx,%eax
40674f:	73 31                	jae    0x406782
406751:	83 c0 05             	add    $0x5,%eax
406754:	83 48 fb ff          	orl    $0xffffffff,-0x5(%eax)
406758:	83 60 03 00          	andl   $0x0,0x3(%eax)
40675c:	80 60 1f 80          	andb   $0x80,0x1f(%eax)
406760:	83 60 33 00          	andl   $0x0,0x33(%eax)
406764:	66 c7 40 ff 00 0a    	movw   $0xa00,-0x1(%eax)
40676a:	66 c7 40 20 0a 0a    	movw   $0xa0a,0x20(%eax)
406770:	c6 40 2f 00          	movb   $0x0,0x2f(%eax)
406774:	8b 0f                	mov    (%edi),%ecx
406776:	83 c0 40             	add    $0x40,%eax
406779:	03 ce                	add    %esi,%ecx
40677b:	8d 50 fb             	lea    -0x5(%eax),%edx
40677e:	3b d1                	cmp    %ecx,%edx
406780:	72 d2                	jb     0x406754
406782:	83 c7 04             	add    $0x4,%edi
406785:	39 1d 00 46 41 00    	cmp    %ebx,0x414600
40678b:	7c a2                	jl     0x40672f
40678d:	eb 06                	jmp    0x406795
40678f:	8b 1d 00 46 41 00    	mov    0x414600,%ebx
406795:	33 ff                	xor    %edi,%edi
406797:	85 db                	test   %ebx,%ebx
406799:	7e 72                	jle    0x40680d
40679b:	8b 45 f8             	mov    -0x8(%ebp),%eax
40679e:	8b 00                	mov    (%eax),%eax
4067a0:	83 f8 ff             	cmp    $0xffffffff,%eax
4067a3:	74 5c                	je     0x406801
4067a5:	83 f8 fe             	cmp    $0xfffffffe,%eax
4067a8:	74 57                	je     0x406801
4067aa:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4067ad:	8a 09                	mov    (%ecx),%cl
4067af:	f6 c1 01             	test   $0x1,%cl
4067b2:	74 4d                	je     0x406801
4067b4:	f6 c1 08             	test   $0x8,%cl
4067b7:	75 0b                	jne    0x4067c4
4067b9:	50                   	push   %eax
4067ba:	ff 15 4c f0 40 00    	call   *0x40f04c
4067c0:	85 c0                	test   %eax,%eax
4067c2:	74 3d                	je     0x406801
4067c4:	8b f7                	mov    %edi,%esi
4067c6:	83 e6 1f             	and    $0x1f,%esi
4067c9:	8b c7                	mov    %edi,%eax
4067cb:	c1 f8 05             	sar    $0x5,%eax
4067ce:	c1 e6 06             	shl    $0x6,%esi
4067d1:	03 34 85 20 46 41 00 	add    0x414620(,%eax,4),%esi
4067d8:	8b 45 f8             	mov    -0x8(%ebp),%eax
4067db:	8b 00                	mov    (%eax),%eax
4067dd:	89 06                	mov    %eax,(%esi)
4067df:	8b 45 fc             	mov    -0x4(%ebp),%eax
4067e2:	8a 00                	mov    (%eax),%al
4067e4:	88 46 04             	mov    %al,0x4(%esi)
4067e7:	68 a0 0f 00 00       	push   $0xfa0
4067ec:	8d 46 0c             	lea    0xc(%esi),%eax
4067ef:	50                   	push   %eax
4067f0:	ff 15 9c f0 40 00    	call   *0x40f09c
4067f6:	85 c0                	test   %eax,%eax
4067f8:	0f 84 bc 00 00 00    	je     0x4068ba
4067fe:	ff 46 08             	incl   0x8(%esi)
406801:	83 45 f8 04          	addl   $0x4,-0x8(%ebp)
406805:	47                   	inc    %edi
406806:	ff 45 fc             	incl   -0x4(%ebp)
406809:	3b fb                	cmp    %ebx,%edi
40680b:	7c 8e                	jl     0x40679b
40680d:	33 db                	xor    %ebx,%ebx
40680f:	8b f3                	mov    %ebx,%esi
406811:	c1 e6 06             	shl    $0x6,%esi
406814:	03 35 20 46 41 00    	add    0x414620,%esi
40681a:	8b 06                	mov    (%esi),%eax
40681c:	83 f8 ff             	cmp    $0xffffffff,%eax
40681f:	74 0b                	je     0x40682c
406821:	83 f8 fe             	cmp    $0xfffffffe,%eax
406824:	74 06                	je     0x40682c
406826:	80 4e 04 80          	orb    $0x80,0x4(%esi)
40682a:	eb 71                	jmp    0x40689d
40682c:	c6 46 04 81          	movb   $0x81,0x4(%esi)
406830:	85 db                	test   %ebx,%ebx
406832:	75 05                	jne    0x406839
406834:	6a f6                	push   $0xfffffff6
406836:	58                   	pop    %eax
406837:	eb 0a                	jmp    0x406843
406839:	8d 43 ff             	lea    -0x1(%ebx),%eax
40683c:	f7 d8                	neg    %eax
40683e:	1b c0                	sbb    %eax,%eax
406840:	83 c0 f5             	add    $0xfffffff5,%eax
406843:	50                   	push   %eax
406844:	ff 15 40 f0 40 00    	call   *0x40f040
40684a:	8b f8                	mov    %eax,%edi
40684c:	83 ff ff             	cmp    $0xffffffff,%edi
40684f:	74 42                	je     0x406893
406851:	85 ff                	test   %edi,%edi
406853:	74 3e                	je     0x406893
406855:	57                   	push   %edi
406856:	ff 15 4c f0 40 00    	call   *0x40f04c
40685c:	85 c0                	test   %eax,%eax
40685e:	74 33                	je     0x406893
406860:	25 ff 00 00 00       	and    $0xff,%eax
406865:	89 3e                	mov    %edi,(%esi)
406867:	83 f8 02             	cmp    $0x2,%eax
40686a:	75 06                	jne    0x406872
40686c:	80 4e 04 40          	orb    $0x40,0x4(%esi)
406870:	eb 09                	jmp    0x40687b
406872:	83 f8 03             	cmp    $0x3,%eax
406875:	75 04                	jne    0x40687b
406877:	80 4e 04 08          	orb    $0x8,0x4(%esi)
40687b:	68 a0 0f 00 00       	push   $0xfa0
406880:	8d 46 0c             	lea    0xc(%esi),%eax
406883:	50                   	push   %eax
406884:	ff 15 9c f0 40 00    	call   *0x40f09c
40688a:	85 c0                	test   %eax,%eax
40688c:	74 2c                	je     0x4068ba
40688e:	ff 46 08             	incl   0x8(%esi)
406891:	eb 0a                	jmp    0x40689d
406893:	80 4e 04 40          	orb    $0x40,0x4(%esi)
406897:	c7 06 fe ff ff ff    	movl   $0xfffffffe,(%esi)
40689d:	43                   	inc    %ebx
40689e:	83 fb 03             	cmp    $0x3,%ebx
4068a1:	0f 8c 68 ff ff ff    	jl     0x40680f
4068a7:	ff 35 00 46 41 00    	push   0x414600
4068ad:	ff 15 ec f0 40 00    	call   *0x40f0ec
4068b3:	33 c0                	xor    %eax,%eax
4068b5:	5f                   	pop    %edi
4068b6:	5b                   	pop    %ebx
4068b7:	5e                   	pop    %esi
4068b8:	c9                   	leave
4068b9:	c3                   	ret
4068ba:	83 c8 ff             	or     $0xffffffff,%eax
4068bd:	eb f6                	jmp    0x4068b5
4068bf:	8b ff                	mov    %edi,%edi
4068c1:	55                   	push   %ebp
4068c2:	8b ec                	mov    %esp,%ebp
4068c4:	56                   	push   %esi
4068c5:	57                   	push   %edi
4068c6:	33 f6                	xor    %esi,%esi
4068c8:	ff 75 08             	push   0x8(%ebp)
4068cb:	e8 1f b9 ff ff       	call   0x4021ef
4068d0:	8b f8                	mov    %eax,%edi
4068d2:	59                   	pop    %ecx
4068d3:	85 ff                	test   %edi,%edi
4068d5:	75 27                	jne    0x4068fe
4068d7:	39 05 c0 38 41 00    	cmp    %eax,0x4138c0
4068dd:	76 1f                	jbe    0x4068fe
4068df:	56                   	push   %esi
4068e0:	ff 15 f4 f0 40 00    	call   *0x40f0f4
4068e6:	8d 86 e8 03 00 00    	lea    0x3e8(%esi),%eax
4068ec:	3b 05 c0 38 41 00    	cmp    0x4138c0,%eax
4068f2:	76 03                	jbe    0x4068f7
4068f4:	83 c8 ff             	or     $0xffffffff,%eax
4068f7:	8b f0                	mov    %eax,%esi
4068f9:	83 f8 ff             	cmp    $0xffffffff,%eax
4068fc:	75 ca                	jne    0x4068c8
4068fe:	8b c7                	mov    %edi,%eax
406900:	5f                   	pop    %edi
406901:	5e                   	pop    %esi
406902:	5d                   	pop    %ebp
406903:	c3                   	ret
406904:	8b ff                	mov    %edi,%edi
406906:	55                   	push   %ebp
406907:	8b ec                	mov    %esp,%ebp
406909:	56                   	push   %esi
40690a:	57                   	push   %edi
40690b:	33 f6                	xor    %esi,%esi
40690d:	6a 00                	push   $0x0
40690f:	ff 75 0c             	push   0xc(%ebp)
406912:	ff 75 08             	push   0x8(%ebp)
406915:	e8 7d e8 ff ff       	call   0x405197
40691a:	8b f8                	mov    %eax,%edi