40965e:	d3 e0                	shl    %cl,%eax
409660:	21 03                	and    %eax,(%ebx)
409662:	8b 45 f4             	mov    -0xc(%ebp),%eax
409665:	40                   	inc    %eax
409666:	83 f8 03             	cmp    $0x3,%eax
409669:	7d 0d                	jge    0x409678
40966b:	6a 03                	push   $0x3
40966d:	59                   	pop    %ecx
40966e:	8d 7c 85 e0          	lea    -0x20(%ebp,%eax,4),%edi
409672:	2b c8                	sub    %eax,%ecx
409674:	33 c0                	xor    %eax,%eax
409676:	f3 ab                	rep stos %eax,%es:(%edi)
409678:	8b 0d 44 fd 41 00    	mov    0x41fd44,%ecx
40967e:	41                   	inc    %ecx
40967f:	8b c1                	mov    %ecx,%eax
409681:	99                   	cltd
409682:	83 e2 1f             	and    $0x1f,%edx
409685:	03 c2                	add    %edx,%eax
409687:	8b d1                	mov    %ecx,%edx
409689:	c1 f8 05             	sar    $0x5,%eax
40968c:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
409692:	79 05                	jns    0x409699
409694:	4a                   	dec    %edx
409695:	83 ca e0             	or     $0xffffffe0,%edx
409698:	42                   	inc    %edx
409699:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
40969d:	83 65 08 00          	andl   $0x0,0x8(%ebp)
4096a1:	83 cf ff             	or     $0xffffffff,%edi
4096a4:	8b ca                	mov    %edx,%ecx
4096a6:	d3 e7                	shl    %cl,%edi
4096a8:	c7 45 fc 20 00 00 00 	movl   $0x20,-0x4(%ebp)
4096af:	29 55 fc             	sub    %edx,-0x4(%ebp)
4096b2:	f7 d7                	not    %edi
4096b4:	8b 5d 08             	mov    0x8(%ebp),%ebx
4096b7:	8d 5c 9d e0          	lea    -0x20(%ebp,%ebx,4),%ebx
4096bb:	8b 33                	mov    (%ebx),%esi
4096bd:	8b ce                	mov    %esi,%ecx
4096bf:	23 cf                	and    %edi,%ecx
4096c1:	89 4d f0             	mov    %ecx,-0x10(%ebp)
4096c4:	8b ca                	mov    %edx,%ecx
4096c6:	d3 ee                	shr    %cl,%esi
4096c8:	8b 4d fc             	mov    -0x4(%ebp),%ecx
4096cb:	0b 75 f4             	or     -0xc(%ebp),%esi
4096ce:	89 33                	mov    %esi,(%ebx)
4096d0:	8b 75 f0             	mov    -0x10(%ebp),%esi
4096d3:	d3 e6                	shl    %cl,%esi
4096d5:	ff 45 08             	incl   0x8(%ebp)
4096d8:	83 7d 08 03          	cmpl   $0x3,0x8(%ebp)
4096dc:	89 75 f4             	mov    %esi,-0xc(%ebp)
4096df:	7c d3                	jl     0x4096b4
4096e1:	8b f0                	mov    %eax,%esi
4096e3:	6a 02                	push   $0x2
4096e5:	c1 e6 02             	shl    $0x2,%esi
4096e8:	8d 4d e8             	lea    -0x18(%ebp),%ecx
4096eb:	5a                   	pop    %edx
4096ec:	2b ce                	sub    %esi,%ecx
4096ee:	3b d0                	cmp    %eax,%edx
4096f0:	7c 08                	jl     0x4096fa
4096f2:	8b 31                	mov    (%ecx),%esi
4096f4:	89 74 95 e0          	mov    %esi,-0x20(%ebp,%edx,4)
4096f8:	eb 05                	jmp    0x4096ff
4096fa:	83 64 95 e0 00       	andl   $0x0,-0x20(%ebp,%edx,4)
4096ff:	4a                   	dec    %edx
409700:	83 e9 04             	sub    $0x4,%ecx
409703:	85 d2                	test   %edx,%edx
409705:	7d e7                	jge    0x4096ee
409707:	6a 02                	push   $0x2
409709:	33 db                	xor    %ebx,%ebx
40970b:	58                   	pop    %eax
40970c:	e9 5a 01 00 00       	jmp    0x40986b
409711:	3b 1d 38 fd 41 00    	cmp    0x41fd38,%ebx
409717:	8b 0d 44 fd 41 00    	mov    0x41fd44,%ecx
40971d:	0f 8c ad 00 00 00    	jl     0x4097d0
409723:	33 c0                	xor    %eax,%eax
409725:	8d 7d e0             	lea    -0x20(%ebp),%edi
409728:	ab                   	stos   %eax,%es:(%edi)
409729:	ab                   	stos   %eax,%es:(%edi)
40972a:	ab                   	stos   %eax,%es:(%edi)
40972b:	81 4d e0 00 00 00 80 	orl    $0x80000000,-0x20(%ebp)
409732:	8b c1                	mov    %ecx,%eax
409734:	99                   	cltd
409735:	83 e2 1f             	and    $0x1f,%edx
409738:	03 c2                	add    %edx,%eax
40973a:	8b d1                	mov    %ecx,%edx
40973c:	c1 f8 05             	sar    $0x5,%eax
40973f:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
409745:	79 05                	jns    0x40974c
409747:	4a                   	dec    %edx
409748:	83 ca e0             	or     $0xffffffe0,%edx
40974b:	42                   	inc    %edx
40974c:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
409750:	83 65 08 00          	andl   $0x0,0x8(%ebp)
409754:	83 cf ff             	or     $0xffffffff,%edi
409757:	8b ca                	mov    %edx,%ecx
409759:	d3 e7                	shl    %cl,%edi
40975b:	c7 45 fc 20 00 00 00 	movl   $0x20,-0x4(%ebp)
409762:	29 55 fc             	sub    %edx,-0x4(%ebp)
409765:	f7 d7                	not    %edi
409767:	8b 5d 08             	mov    0x8(%ebp),%ebx
40976a:	8d 5c 9d e0          	lea    -0x20(%ebp,%ebx,4),%ebx
40976e:	8b 33                	mov    (%ebx),%esi
409770:	8b ce                	mov    %esi,%ecx
409772:	23 cf                	and    %edi,%ecx
409774:	89 4d f0             	mov    %ecx,-0x10(%ebp)
409777:	8b ca                	mov    %edx,%ecx
409779:	d3 ee                	shr    %cl,%esi
40977b:	8b 4d fc             	mov    -0x4(%ebp),%ecx
40977e:	0b 75 f4             	or     -0xc(%ebp),%esi
409781:	89 33                	mov    %esi,(%ebx)
409783:	8b 75 f0             	mov    -0x10(%ebp),%esi
409786:	d3 e6                	shl    %cl,%esi
409788:	ff 45 08             	incl   0x8(%ebp)
40978b:	83 7d 08 03          	cmpl   $0x3,0x8(%ebp)
40978f:	89 75 f4             	mov    %esi,-0xc(%ebp)
409792:	7c d3                	jl     0x409767
409794:	8b f0                	mov    %eax,%esi
409796:	6a 02                	push   $0x2
409798:	c1 e6 02             	shl    $0x2,%esi
40979b:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40979e:	5a                   	pop    %edx
40979f:	2b ce                	sub    %esi,%ecx
4097a1:	3b d0                	cmp    %eax,%edx
4097a3:	7c 08                	jl     0x4097ad
4097a5:	8b 31                	mov    (%ecx),%esi
4097a7:	89 74 95 e0          	mov    %esi,-0x20(%ebp,%edx,4)
4097ab:	eb 05                	jmp    0x4097b2
4097ad:	83 64 95 e0 00       	andl   $0x0,-0x20(%ebp,%edx,4)
4097b2:	4a                   	dec    %edx
4097b3:	83 e9 04             	sub    $0x4,%ecx
4097b6:	85 d2                	test   %edx,%edx
4097b8:	7d e7                	jge    0x4097a1
4097ba:	a1 38 fd 41 00       	mov    0x41fd38,%eax
4097bf:	8b 0d 4c fd 41 00    	mov    0x41fd4c,%ecx
4097c5:	8d 1c 01             	lea    (%ecx,%eax,1),%ebx
4097c8:	33 c0                	xor    %eax,%eax
4097ca:	40                   	inc    %eax
4097cb:	e9 9b 00 00 00       	jmp    0x40986b
4097d0:	a1 4c fd 41 00       	mov    0x41fd4c,%eax
4097d5:	81 65 e0 ff ff ff 7f 	andl   $0x7fffffff,-0x20(%ebp)
4097dc:	03 d8                	add    %eax,%ebx
4097de:	8b c1                	mov    %ecx,%eax
4097e0:	99                   	cltd
4097e1:	83 e2 1f             	and    $0x1f,%edx
4097e4:	03 c2                	add    %edx,%eax
4097e6:	8b d1                	mov    %ecx,%edx
4097e8:	c1 f8 05             	sar    $0x5,%eax
4097eb:	81 e2 1f 00 00 80    	and    $0x8000001f,%edx
4097f1:	79 05                	jns    0x4097f8
4097f3:	4a                   	dec    %edx
4097f4:	83 ca e0             	or     $0xffffffe0,%edx
4097f7:	42                   	inc    %edx
4097f8:	83 65 f4 00          	andl   $0x0,-0xc(%ebp)
4097fc:	83 65 08 00          	andl   $0x0,0x8(%ebp)
409800:	83 ce ff             	or     $0xffffffff,%esi
409803:	8b ca                	mov    %edx,%ecx
409805:	d3 e6                	shl    %cl,%esi
409807:	c7 45 fc 20 00 00 00 	movl   $0x20,-0x4(%ebp)
40980e:	29 55 fc             	sub    %edx,-0x4(%ebp)
409811:	f7 d6                	not    %esi
409813:	8b 4d 08             	mov    0x8(%ebp),%ecx
409816:	8b 7c 8d e0          	mov    -0x20(%ebp,%ecx,4),%edi
40981a:	8b cf                	mov    %edi,%ecx
40981c:	23 ce                	and    %esi,%ecx
40981e:	89 4d f0             	mov    %ecx,-0x10(%ebp)
409821:	8b ca                	mov    %edx,%ecx
409823:	d3 ef                	shr    %cl,%edi
409825:	8b 4d 08             	mov    0x8(%ebp),%ecx
409828:	0b 7d f4             	or     -0xc(%ebp),%edi
40982b:	89 7c 8d e0          	mov    %edi,-0x20(%ebp,%ecx,4)
40982f:	8b 7d f0             	mov    -0x10(%ebp),%edi
409832:	8b 4d fc             	mov    -0x4(%ebp),%ecx
409835:	d3 e7                	shl    %cl,%edi
409837:	ff 45 08             	incl   0x8(%ebp)
40983a:	83 7d 08 03          	cmpl   $0x3,0x8(%ebp)
40983e:	89 7d f4             	mov    %edi,-0xc(%ebp)
409841:	7c d0                	jl     0x409813
409843:	8b f0                	mov    %eax,%esi
409845:	6a 02                	push   $0x2
409847:	c1 e6 02             	shl    $0x2,%esi
40984a:	8d 4d e8             	lea    -0x18(%ebp),%ecx
40984d:	5a                   	pop    %edx
40984e:	2b ce                	sub    %esi,%ecx
409850:	3b d0                	cmp    %eax,%edx
409852:	7c 08                	jl     0x40985c
409854:	8b 31                	mov    (%ecx),%esi
409856:	89 74 95 e0          	mov    %esi,-0x20(%ebp,%edx,4)
40985a:	eb 05                	jmp    0x409861
40985c:	83 64 95 e0 00       	andl   $0x0,-0x20(%ebp,%edx,4)
409861:	4a                   	dec    %edx
409862:	83 e9 04             	sub    $0x4,%ecx
409865:	85 d2                	test   %edx,%edx
409867:	7d e7                	jge    0x409850
409869:	33 c0                	xor    %eax,%eax
40986b:	5e                   	pop    %esi
40986c:	6a 1f                	push   $0x1f
40986e:	59                   	pop    %ecx
40986f:	2b 0d 44 fd 41 00    	sub    0x41fd44,%ecx
409875:	d3 e3                	shl    %cl,%ebx
409877:	8b 4d ec             	mov    -0x14(%ebp),%ecx
40987a:	f7 d9                	neg    %ecx
40987c:	1b c9                	sbb    %ecx,%ecx
40987e:	81 e1 00 00 00 80    	and    $0x80000000,%ecx
409884:	0b d9                	or     %ecx,%ebx
409886:	8b 0d 48 fd 41 00    	mov    0x41fd48,%ecx
40988c:	0b 5d e0             	or     -0x20(%ebp),%ebx
40988f:	83 f9 40             	cmp    $0x40,%ecx
409892:	75 0d                	jne    0x4098a1
409894:	8b 4d 0c             	mov    0xc(%ebp),%ecx
409897:	8b 55 e4             	mov    -0x1c(%ebp),%edx
40989a:	89 59 04             	mov    %ebx,0x4(%ecx)
40989d:	89 11                	mov    %edx,(%ecx)
40989f:	eb 0a                	jmp    0x4098ab
4098a1:	83 f9 20             	cmp    $0x20,%ecx
4098a4:	75 05                	jne    0x4098ab
4098a6:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4098a9:	89 19                	mov    %ebx,(%ecx)
4098ab:	5f                   	pop    %edi
4098ac:	5b                   	pop    %ebx
4098ad:	c9                   	leave
4098ae:	c3                   	ret
4098af:	8b ff                	mov    %edi,%edi
4098b1:	55                   	push   %ebp
4098b2:	8b ec                	mov    %esp,%ebp
4098b4:	83 ec 7c             	sub    $0x7c,%esp
4098b7:	a1 04 f0 41 00       	mov    0x41f004,%eax
4098bc:	33 c5                	xor    %ebp,%eax
4098be:	89 45 fc             	mov    %eax,-0x4(%ebp)
4098c1:	8b 45 08             	mov    0x8(%ebp),%eax
4098c4:	53                   	push   %ebx
4098c5:	33 db                	xor    %ebx,%ebx
4098c7:	56                   	push   %esi
4098c8:	33 f6                	xor    %esi,%esi
4098ca:	89 45 88             	mov    %eax,-0x78(%ebp)
4098cd:	8b 45 0c             	mov    0xc(%ebp),%eax
4098d0:	46                   	inc    %esi
4098d1:	33 c9                	xor    %ecx,%ecx
4098d3:	57                   	push   %edi
4098d4:	89 45 90             	mov    %eax,-0x70(%ebp)
4098d7:	8d 7d e0             	lea    -0x20(%ebp),%edi
4098da:	89 5d 8c             	mov    %ebx,-0x74(%ebp)
4098dd:	89 75 98             	mov    %esi,-0x68(%ebp)
4098e0:	89 5d b4             	mov    %ebx,-0x4c(%ebp)
4098e3:	89 5d a8             	mov    %ebx,-0x58(%ebp)
4098e6:	89 5d a4             	mov    %ebx,-0x5c(%ebp)
4098e9:	89 5d a0             	mov    %ebx,-0x60(%ebp)
4098ec:	89 5d 9c             	mov    %ebx,-0x64(%ebp)
4098ef:	89 5d b0             	mov    %ebx,-0x50(%ebp)
4098f2:	89 5d 94             	mov    %ebx,-0x6c(%ebp)
4098f5:	39 5d 24             	cmp    %ebx,0x24(%ebp)
4098f8:	75 1f                	jne    0x409919
4098fa:	e8 4d 95 ff ff       	call   0x402e4c
4098ff:	53                   	push   %ebx
409900:	53                   	push   %ebx
409901:	53                   	push   %ebx
409902:	53                   	push   %ebx
409903:	53                   	push   %ebx
409904:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40990a:	e8 32 a3 ff ff       	call   0x403c41
40990f:	83 c4 14             	add    $0x14,%esp
409912:	33 c0                	xor    %eax,%eax
409914:	e9 4e 06 00 00       	jmp    0x409f67
409919:	8b 55 10             	mov    0x10(%ebp),%edx
40991c:	89 55 ac             	mov    %edx,-0x54(%ebp)
40991f:	8a 02                	mov    (%edx),%al
409921:	3c 20                	cmp    $0x20,%al
409923:	74 0c                	je     0x409931
409925:	3c 09                	cmp    $0x9,%al
409927:	74 08                	je     0x409931
409929:	3c 0a                	cmp    $0xa,%al
40992b:	74 04                	je     0x409931
40992d:	3c 0d                	cmp    $0xd,%al
40992f:	75 03                	jne    0x409934
409931:	42                   	inc    %edx
409932:	eb eb                	jmp    0x40991f
409934:	b3 30                	mov    $0x30,%bl
409936:	8a 02                	mov    (%edx),%al
409938:	42                   	inc    %edx
409939:	83 f9 0b             	cmp    $0xb,%ecx
40993c:	0f 87 2f 02 00 00    	ja     0x409b71
409942:	ff 24 8d 77 9f 40 00 	jmp    *0x409f77(,%ecx,4)
409949:	8a c8                	mov    %al,%cl
40994b:	80 e9 31             	sub    $0x31,%cl
40994e:	80 f9 08             	cmp    $0x8,%cl
409951:	77 06                	ja     0x409959
409953:	6a 03                	push   $0x3
409955:	59                   	pop    %ecx
409956:	4a                   	dec    %edx
409957:	eb dd                	jmp    0x409936
409959:	8b 4d 24             	mov    0x24(%ebp),%ecx
40995c:	8b 09                	mov    (%ecx),%ecx
40995e:	8b 89 bc 00 00 00    	mov    0xbc(%ecx),%ecx
409964:	8b 09                	mov    (%ecx),%ecx
409966:	3a 01                	cmp    (%ecx),%al
409968:	75 05                	jne    0x40996f
40996a:	6a 05                	push   $0x5
40996c:	59                   	pop    %ecx
40996d:	eb c7                	jmp    0x409936
40996f:	0f be c0             	movsbl %al,%eax
409972:	83 e8 2b             	sub    $0x2b,%eax
409975:	74 1d                	je     0x409994
409977:	48                   	dec    %eax
409978:	48                   	dec    %eax
409979:	74 0d                	je     0x409988
40997b:	83 e8 03             	sub    $0x3,%eax
40997e:	0f 85 8b 01 00 00    	jne    0x409b0f
409984:	8b ce                	mov    %esi,%ecx
409986:	eb ae                	jmp    0x409936
409988:	6a 02                	push   $0x2
40998a:	59                   	pop    %ecx
40998b:	c7 45 8c 00 80 00 00 	movl   $0x8000,-0x74(%ebp)
409992:	eb a2                	jmp    0x409936
409994:	83 65 8c 00          	andl   $0x0,-0x74(%ebp)
409998:	6a 02                	push   $0x2
40999a:	59                   	pop    %ecx
40999b:	eb 99                	jmp    0x409936
40999d:	8a c8                	mov    %al,%cl
40999f:	80 e9 31             	sub    $0x31,%cl
4099a2:	89 75 a8             	mov    %esi,-0x58(%ebp)
4099a5:	80 f9 08             	cmp    $0x8,%cl
4099a8:	76 a9                	jbe    0x409953
4099aa:	8b 4d 24             	mov    0x24(%ebp),%ecx
4099ad:	8b 09                	mov    (%ecx),%ecx
4099af:	8b 89 bc 00 00 00    	mov    0xbc(%ecx),%ecx
4099b5:	8b 09                	mov    (%ecx),%ecx
4099b7:	3a 01                	cmp    (%ecx),%al
4099b9:	75 04                	jne    0x4099bf
4099bb:	6a 04                	push   $0x4
4099bd:	eb ad                	jmp    0x40996c
4099bf:	3c 2b                	cmp    $0x2b,%al
4099c1:	74 28                	je     0x4099eb
4099c3:	3c 2d                	cmp    $0x2d,%al
4099c5:	74 24                	je     0x4099eb
4099c7:	3a c3                	cmp    %bl,%al
4099c9:	74 b9                	je     0x409984
4099cb:	3c 43                	cmp    $0x43,%al
4099cd:	0f 8e 3c 01 00 00    	jle    0x409b0f
4099d3:	3c 45                	cmp    $0x45,%al
4099d5:	7e 10                	jle    0x4099e7
4099d7:	3c 63                	cmp    $0x63,%al
4099d9:	0f 8e 30 01 00 00    	jle    0x409b0f
4099df:	3c 65                	cmp    $0x65,%al
4099e1:	0f 8f 28 01 00 00    	jg     0x409b0f
4099e7:	6a 06                	push   $0x6
4099e9:	eb 81                	jmp    0x40996c
4099eb:	4a                   	dec    %edx
4099ec:	6a 0b                	push   $0xb
4099ee:	e9 79 ff ff ff       	jmp    0x40996c
4099f3:	8a c8                	mov    %al,%cl
4099f5:	80 e9 31             	sub    $0x31,%cl
4099f8:	80 f9 08             	cmp    $0x8,%cl