4095a1:	33 c0                	xor    %eax,%eax
4095a3:	66 89 41 fe          	mov    %ax,-0x2(%ecx)
4095a7:	eb 02                	jmp    0x4095ab
4095a9:	8b d7                	mov    %edi,%edx
4095ab:	c6 45 ff 00          	movb   $0x0,-0x1(%ebp)
4095af:	0f b7 02             	movzwl (%edx),%eax
4095b2:	8b f8                	mov    %eax,%edi
4095b4:	66 85 c0             	test   %ax,%ax
4095b7:	74 19                	je     0x4095d2
4095b9:	6a 20                	push   $0x20
4095bb:	5b                   	pop    %ebx
4095bc:	66 3b c3             	cmp    %bx,%ax
4095bf:	74 09                	je     0x4095ca
4095c1:	0f b7 f8             	movzwl %ax,%edi
4095c4:	66 3b 45 f4          	cmp    -0xc(%ebp),%ax
4095c8:	75 08                	jne    0x4095d2
4095ca:	83 c2 02             	add    $0x2,%edx
4095cd:	0f b7 02             	movzwl (%edx),%eax
4095d0:	eb ea                	jmp    0x4095bc
4095d2:	66 85 ff             	test   %di,%di
4095d5:	0f 84 ca 00 00 00    	je     0x4096a5
4095db:	85 f6                	test   %esi,%esi
4095dd:	74 08                	je     0x4095e7
4095df:	89 0e                	mov    %ecx,(%esi)
4095e1:	83 c6 04             	add    $0x4,%esi
4095e4:	89 75 0c             	mov    %esi,0xc(%ebp)
4095e7:	8b 45 14             	mov    0x14(%ebp),%eax
4095ea:	6a 5c                	push   $0x5c
4095ec:	5e                   	pop    %esi
4095ed:	ff 00                	incl   (%eax)
4095ef:	0f b7 02             	movzwl (%edx),%eax
4095f2:	33 db                	xor    %ebx,%ebx
4095f4:	c7 45 f8 01 00 00 00 	movl   $0x1,-0x8(%ebp)
4095fb:	8b f8                	mov    %eax,%edi
4095fd:	66 3b c6             	cmp    %si,%ax
409600:	75 0e                	jne    0x409610
409602:	83 c2 02             	add    $0x2,%edx
409605:	43                   	inc    %ebx
409606:	0f b7 02             	movzwl (%edx),%eax
409609:	66 3b c6             	cmp    %si,%ax
40960c:	74 f4                	je     0x409602
40960e:	8b f8                	mov    %eax,%edi
409610:	6a 22                	push   $0x22
409612:	58                   	pop    %eax
409613:	66 3b f8             	cmp    %ax,%di
409616:	75 29                	jne    0x409641
409618:	f6 c3 01             	test   $0x1,%bl
40961b:	75 22                	jne    0x40963f
40961d:	8a 45 ff             	mov    -0x1(%ebp),%al
409620:	84 c0                	test   %al,%al
409622:	74 11                	je     0x409635
409624:	6a 22                	push   $0x22
409626:	5f                   	pop    %edi
409627:	66 39 7a 02          	cmp    %di,0x2(%edx)
40962b:	75 05                	jne    0x409632
40962d:	83 c2 02             	add    $0x2,%edx
409630:	eb 0d                	jmp    0x40963f
409632:	8a 45 ff             	mov    -0x1(%ebp),%al
409635:	83 65 f8 00          	andl   $0x0,-0x8(%ebp)
409639:	84 c0                	test   %al,%al
40963b:	0f 94 45 ff          	sete   -0x1(%ebp)
40963f:	d1 eb                	shr    $1,%ebx
409641:	8b 7d 18             	mov    0x18(%ebp),%edi
409644:	85 db                	test   %ebx,%ebx
409646:	74 0f                	je     0x409657
409648:	4b                   	dec    %ebx
409649:	85 c9                	test   %ecx,%ecx
40964b:	74 06                	je     0x409653
40964d:	66 89 31             	mov    %si,(%ecx)
409650:	83 c1 02             	add    $0x2,%ecx
409653:	ff 07                	incl   (%edi)
409655:	eb ed                	jmp    0x409644
409657:	0f b7 02             	movzwl (%edx),%eax
40965a:	66 85 c0             	test   %ax,%ax
40965d:	74 30                	je     0x40968f
40965f:	80 7d ff 00          	cmpb   $0x0,-0x1(%ebp)
409663:	75 10                	jne    0x409675
409665:	6a 20                	push   $0x20
409667:	5b                   	pop    %ebx
409668:	66 3b c3             	cmp    %bx,%ax
40966b:	74 22                	je     0x40968f
40966d:	6a 09                	push   $0x9
40966f:	5b                   	pop    %ebx
409670:	66 3b c3             	cmp    %bx,%ax
409673:	74 1a                	je     0x40968f
409675:	83 7d f8 00          	cmpl   $0x0,-0x8(%ebp)
409679:	74 0c                	je     0x409687
40967b:	85 c9                	test   %ecx,%ecx
40967d:	74 06                	je     0x409685
40967f:	66 89 01             	mov    %ax,(%ecx)
409682:	83 c1 02             	add    $0x2,%ecx
409685:	ff 07                	incl   (%edi)
409687:	83 c2 02             	add    $0x2,%edx
40968a:	e9 60 ff ff ff       	jmp    0x4095ef
40968f:	8b 75 0c             	mov    0xc(%ebp),%esi
409692:	85 c9                	test   %ecx,%ecx
409694:	74 08                	je     0x40969e
409696:	33 c0                	xor    %eax,%eax
409698:	66 89 01             	mov    %ax,(%ecx)
40969b:	83 c1 02             	add    $0x2,%ecx
40969e:	ff 07                	incl   (%edi)
4096a0:	e9 0a ff ff ff       	jmp    0x4095af
4096a5:	5f                   	pop    %edi
4096a6:	5b                   	pop    %ebx
4096a7:	85 f6                	test   %esi,%esi
4096a9:	74 03                	je     0x4096ae
4096ab:	83 26 00             	andl   $0x0,(%esi)
4096ae:	8b 45 14             	mov    0x14(%ebp),%eax
4096b1:	5e                   	pop    %esi
4096b2:	ff 00                	incl   (%eax)
4096b4:	c9                   	leave
4096b5:	c3                   	ret
4096b6:	8b ff                	mov    %edi,%edi
4096b8:	55                   	push   %ebp
4096b9:	8b ec                	mov    %esp,%ebp
4096bb:	56                   	push   %esi
4096bc:	8b 75 08             	mov    0x8(%ebp),%esi
4096bf:	81 fe ff ff ff 3f    	cmp    $0x3fffffff,%esi
4096c5:	73 39                	jae    0x409700
4096c7:	83 c8 ff             	or     $0xffffffff,%eax
4096ca:	8b 4d 0c             	mov    0xc(%ebp),%ecx
4096cd:	33 d2                	xor    %edx,%edx
4096cf:	f7 75 10             	divl   0x10(%ebp)
4096d2:	3b c8                	cmp    %eax,%ecx
4096d4:	73 2a                	jae    0x409700
4096d6:	0f af 4d 10          	imul   0x10(%ebp),%ecx
4096da:	c1 e6 02             	shl    $0x2,%esi
4096dd:	8b c6                	mov    %esi,%eax
4096df:	f7 d0                	not    %eax
4096e1:	3b c1                	cmp    %ecx,%eax
4096e3:	76 1b                	jbe    0x409700
4096e5:	8d 04 0e             	lea    (%esi,%ecx,1),%eax
4096e8:	6a 01                	push   $0x1
4096ea:	50                   	push   %eax
4096eb:	e8 52 10 00 00       	call   0x40a742
4096f0:	6a 00                	push   $0x0
4096f2:	8b f0                	mov    %eax,%esi
4096f4:	e8 a6 10 00 00       	call   0x40a79f
4096f9:	83 c4 0c             	add    $0xc,%esp
4096fc:	8b c6                	mov    %esi,%eax
4096fe:	eb 02                	jmp    0x409702
409700:	33 c0                	xor    %eax,%eax
409702:	5e                   	pop    %esi
409703:	5d                   	pop    %ebp
409704:	c3                   	ret
409705:	8b ff                	mov    %edi,%edi
409707:	55                   	push   %ebp
409708:	8b ec                	mov    %esp,%ebp
40970a:	5d                   	pop    %ebp
40970b:	e9 cf fc ff ff       	jmp    0x4093df
409710:	a1 68 20 42 00       	mov    0x422068,%eax
409715:	85 c0                	test   %eax,%eax
409717:	75 22                	jne    0x40973b
409719:	39 05 64 20 42 00    	cmp    %eax,0x422064
40971f:	74 18                	je     0x409739
409721:	e8 16 00 00 00       	call   0x40973c
409726:	85 c0                	test   %eax,%eax
409728:	74 09                	je     0x409733
40972a:	e8 af 01 00 00       	call   0x4098de
40972f:	85 c0                	test   %eax,%eax
409731:	75 06                	jne    0x409739
409733:	a1 68 20 42 00       	mov    0x422068,%eax
409738:	c3                   	ret
409739:	33 c0                	xor    %eax,%eax
40973b:	c3                   	ret
40973c:	83 3d 68 20 42 00 00 	cmpl   $0x0,0x422068
409743:	74 03                	je     0x409748
409745:	33 c0                	xor    %eax,%eax
409747:	c3                   	ret
409748:	56                   	push   %esi
409749:	e8 83 59 00 00       	call   0x40f0d1
40974e:	8b f0                	mov    %eax,%esi
409750:	85 f6                	test   %esi,%esi
409752:	75 0c                	jne    0x409760
409754:	50                   	push   %eax
409755:	e8 45 10 00 00       	call   0x40a79f
40975a:	59                   	pop    %ecx
40975b:	83 c8 ff             	or     $0xffffffff,%eax
40975e:	5e                   	pop    %esi
40975f:	c3                   	ret
409760:	57                   	push   %edi
409761:	56                   	push   %esi
409762:	e8 2a 00 00 00       	call   0x409791
409767:	59                   	pop    %ecx
409768:	85 c0                	test   %eax,%eax
40976a:	75 05                	jne    0x409771
40976c:	83 cf ff             	or     $0xffffffff,%edi
40976f:	eb 0c                	jmp    0x40977d
409771:	a3 6c 20 42 00       	mov    %eax,0x42206c
409776:	33 ff                	xor    %edi,%edi
409778:	a3 68 20 42 00       	mov    %eax,0x422068
40977d:	6a 00                	push   $0x0
40977f:	e8 1b 10 00 00       	call   0x40a79f
409784:	56                   	push   %esi
409785:	e8 15 10 00 00       	call   0x40a79f
40978a:	59                   	pop    %ecx
40978b:	59                   	pop    %ecx
40978c:	8b c7                	mov    %edi,%eax
40978e:	5f                   	pop    %edi
40978f:	5e                   	pop    %esi
409790:	c3                   	ret
409791:	8b ff                	mov    %edi,%edi
409793:	55                   	push   %ebp
409794:	8b ec                	mov    %esp,%ebp
409796:	83 ec 0c             	sub    $0xc,%esp
409799:	53                   	push   %ebx
40979a:	8b 5d 08             	mov    0x8(%ebp),%ebx
40979d:	56                   	push   %esi
40979e:	57                   	push   %edi
40979f:	33 ff                	xor    %edi,%edi
4097a1:	8b f3                	mov    %ebx,%esi
4097a3:	0f b7 03             	movzwl (%ebx),%eax
4097a6:	8b d7                	mov    %edi,%edx
4097a8:	89 7d fc             	mov    %edi,-0x4(%ebp)
4097ab:	66 85 c0             	test   %ax,%ax
4097ae:	74 35                	je     0x4097e5
4097b0:	6a 3d                	push   $0x3d
4097b2:	8b c8                	mov    %eax,%ecx
4097b4:	5b                   	pop    %ebx
4097b5:	66 3b cb             	cmp    %bx,%cx
4097b8:	74 01                	je     0x4097bb
4097ba:	42                   	inc    %edx
4097bb:	8b ce                	mov    %esi,%ecx
4097bd:	8d 79 02             	lea    0x2(%ecx),%edi
4097c0:	66 8b 01             	mov    (%ecx),%ax
4097c3:	83 c1 02             	add    $0x2,%ecx
4097c6:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
4097ca:	75 f4                	jne    0x4097c0
4097cc:	2b cf                	sub    %edi,%ecx
4097ce:	d1 f9                	sar    $1,%ecx
4097d0:	8d 34 4e             	lea    (%esi,%ecx,2),%esi
4097d3:	83 c6 02             	add    $0x2,%esi
4097d6:	0f b7 06             	movzwl (%esi),%eax
4097d9:	8b c8                	mov    %eax,%ecx
4097db:	66 85 c0             	test   %ax,%ax
4097de:	75 d5                	jne    0x4097b5
4097e0:	8b 5d 08             	mov    0x8(%ebp),%ebx
4097e3:	33 ff                	xor    %edi,%edi
4097e5:	8d 42 01             	lea    0x1(%edx),%eax
4097e8:	6a 04                	push   $0x4
4097ea:	50                   	push   %eax
4097eb:	e8 52 0f 00 00       	call   0x40a742
4097f0:	8b f0                	mov    %eax,%esi
4097f2:	59                   	pop    %ecx
4097f3:	59                   	pop    %ecx
4097f4:	85 f6                	test   %esi,%esi
4097f6:	75 0a                	jne    0x409802
4097f8:	57                   	push   %edi
4097f9:	e8 a1 0f 00 00       	call   0x40a79f
4097fe:	33 c0                	xor    %eax,%eax
409800:	eb 7f                	jmp    0x409881
409802:	0f b7 03             	movzwl (%ebx),%eax
409805:	89 75 f8             	mov    %esi,-0x8(%ebp)
409808:	66 85 c0             	test   %ax,%ax
40980b:	74 6a                	je     0x409877
40980d:	8b d0                	mov    %eax,%edx
40980f:	8b cb                	mov    %ebx,%ecx
409811:	8d 79 02             	lea    0x2(%ecx),%edi
409814:	66 8b 01             	mov    (%ecx),%ax
409817:	83 c1 02             	add    $0x2,%ecx
40981a:	66 3b 45 fc          	cmp    -0x4(%ebp),%ax
40981e:	75 f4                	jne    0x409814
409820:	2b cf                	sub    %edi,%ecx
409822:	d1 f9                	sar    $1,%ecx
409824:	6a 3d                	push   $0x3d
409826:	8d 41 01             	lea    0x1(%ecx),%eax
409829:	59                   	pop    %ecx
40982a:	89 45 f4             	mov    %eax,-0xc(%ebp)
40982d:	66 3b d1             	cmp    %cx,%dx
409830:	74 38                	je     0x40986a
409832:	6a 02                	push   $0x2
409834:	50                   	push   %eax
409835:	e8 08 0f 00 00       	call   0x40a742
40983a:	8b f8                	mov    %eax,%edi
40983c:	59                   	pop    %ecx
40983d:	59                   	pop    %ecx
40983e:	85 ff                	test   %edi,%edi
409840:	74 45                	je     0x409887
409842:	53                   	push   %ebx
409843:	ff 75 f4             	push   -0xc(%ebp)
409846:	57                   	push   %edi
409847:	e8 9f 47 00 00       	call   0x40dfeb
40984c:	83 c4 0c             	add    $0xc,%esp
40984f:	85 c0                	test   %eax,%eax
409851:	75 4f                	jne    0x4098a2
409853:	8b 45 f8             	mov    -0x8(%ebp),%eax
409856:	89 38                	mov    %edi,(%eax)
409858:	83 c0 04             	add    $0x4,%eax
40985b:	89 45 f8             	mov    %eax,-0x8(%ebp)
40985e:	33 c0                	xor    %eax,%eax
409860:	50                   	push   %eax
409861:	e8 39 0f 00 00       	call   0x40a79f
409866:	8b 45 f4             	mov    -0xc(%ebp),%eax
409869:	59                   	pop    %ecx
40986a:	8d 1c 43             	lea    (%ebx,%eax,2),%ebx
40986d:	0f b7 03             	movzwl (%ebx),%eax
409870:	8b d0                	mov    %eax,%edx
409872:	66 85 c0             	test   %ax,%ax
409875:	75 98                	jne    0x40980f
409877:	33 c0                	xor    %eax,%eax
409879:	50                   	push   %eax
40987a:	e8 20 0f 00 00       	call   0x40a79f
40987f:	8b c6                	mov    %esi,%eax
409881:	59                   	pop    %ecx
409882:	5f                   	pop    %edi
409883:	5e                   	pop    %esi
409884:	5b                   	pop    %ebx
409885:	c9                   	leave
409886:	c3                   	ret
409887:	56                   	push   %esi
409888:	e8 22 00 00 00       	call   0x4098af
40988d:	33 db                	xor    %ebx,%ebx
40988f:	53                   	push   %ebx
409890:	e8 0a 0f 00 00       	call   0x40a79f
409895:	53                   	push   %ebx
409896:	e8 04 0f 00 00       	call   0x40a79f
40989b:	83 c4 0c             	add    $0xc,%esp
40989e:	33 c0                	xor    %eax,%eax
4098a0:	eb e0                	jmp    0x409882
4098a2:	33 c0                	xor    %eax,%eax
4098a4:	50                   	push   %eax
4098a5:	50                   	push   %eax
4098a6:	50                   	push   %eax
4098a7:	50                   	push   %eax
4098a8:	50                   	push   %eax
4098a9:	e8 48 dc ff ff       	call   0x4074f6
4098ae:	cc                   	int3
4098af:	8b ff                	mov    %edi,%edi
4098b1:	55                   	push   %ebp
4098b2:	8b ec                	mov    %esp,%ebp
4098b4:	56                   	push   %esi
4098b5:	8b 75 08             	mov    0x8(%ebp),%esi
4098b8:	85 f6                	test   %esi,%esi
4098ba:	74 1f                	je     0x4098db
4098bc:	8b 06                	mov    (%esi),%eax
4098be:	57                   	push   %edi
4098bf:	8b fe                	mov    %esi,%edi
4098c1:	eb 0c                	jmp    0x4098cf
4098c3:	50                   	push   %eax
4098c4:	e8 d6 0e 00 00       	call   0x40a79f
4098c9:	8d 7f 04             	lea    0x4(%edi),%edi
4098cc:	8b 07                	mov    (%edi),%eax
4098ce:	59                   	pop    %ecx
4098cf:	85 c0                	test   %eax,%eax
4098d1:	75 f0                	jne    0x4098c3
4098d3:	56                   	push   %esi
4098d4:	e8 c6 0e 00 00       	call   0x40a79f
4098d9:	59                   	pop    %ecx
4098da:	5f                   	pop    %edi
4098db:	5e                   	pop    %esi