40664e:	74 1f                	je     0x40666f
406650:	47                   	inc    %edi
406651:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406654:	eb 19                	jmp    0x40666f
406656:	85 db                	test   %ebx,%ebx
406658:	75 15                	jne    0x40666f
40665a:	f6 40 0c 02          	testb  $0x2,0xc(%eax)
40665e:	74 0f                	je     0x40666f
406660:	50                   	push   %eax
406661:	e8 6e fe ff ff       	call   0x4064d4
406666:	59                   	pop    %ecx
406667:	83 f8 ff             	cmp    $0xffffffff,%eax
40666a:	75 03                	jne    0x40666f
40666c:	09 45 dc             	or     %eax,-0x24(%ebp)
40666f:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
406673:	e8 0c 00 00 00       	call   0x406684
406678:	46                   	inc    %esi
406679:	eb 85                	jmp    0x406600
40667b:	8b 5d 08             	mov    0x8(%ebp),%ebx
40667e:	8b 7d e4             	mov    -0x1c(%ebp),%edi
406681:	8b 75 e0             	mov    -0x20(%ebp),%esi
406684:	a1 34 2b 42 00       	mov    0x422b34,%eax
406689:	ff 34 b0             	push   (%eax,%esi,4)
40668c:	56                   	push   %esi
40668d:	e8 32 fd ff ff       	call   0x4063c4
406692:	59                   	pop    %ecx
406693:	59                   	pop    %ecx
406694:	c3                   	ret
406695:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
40669c:	e8 16 00 00 00       	call   0x4066b7
4066a1:	83 fb 01             	cmp    $0x1,%ebx
4066a4:	8b c7                	mov    %edi,%eax
4066a6:	74 03                	je     0x4066ab
4066a8:	8b 45 dc             	mov    -0x24(%ebp),%eax
4066ab:	e8 45 47 00 00       	call   0x40adf5
4066b0:	c3                   	ret
4066b1:	8b 5d 08             	mov    0x8(%ebp),%ebx
4066b4:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4066b7:	6a 01                	push   $0x1
4066b9:	e8 4d 1f 00 00       	call   0x40860b
4066be:	59                   	pop    %ecx
4066bf:	c3                   	ret
4066c0:	6a 0c                	push   $0xc
4066c2:	68 70 e2 41 00       	push   $0x41e270
4066c7:	e8 e4 46 00 00       	call   0x40adb0
4066cc:	33 ff                	xor    %edi,%edi
4066ce:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4066d1:	33 c0                	xor    %eax,%eax
4066d3:	8b 75 08             	mov    0x8(%ebp),%esi
4066d6:	85 f6                	test   %esi,%esi
4066d8:	0f 95 c0             	setne  %al
4066db:	85 c0                	test   %eax,%eax
4066dd:	75 18                	jne    0x4066f7
4066df:	e8 99 1a 00 00       	call   0x40817d
4066e4:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4066ea:	e8 06 4f 00 00       	call   0x40b5f5
4066ef:	83 c8 ff             	or     $0xffffffff,%eax
4066f2:	e9 b7 00 00 00       	jmp    0x4067ae
4066f7:	e8 f6 6e 00 00       	call   0x40d5f2
4066fc:	85 c0                	test   %eax,%eax
4066fe:	78 ef                	js     0x4066ef
406700:	56                   	push   %esi
406701:	e8 15 fc ff ff       	call   0x40631b
406706:	59                   	pop    %ecx
406707:	89 7d fc             	mov    %edi,-0x4(%ebp)
40670a:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
40670e:	75 71                	jne    0x406781
406710:	56                   	push   %esi
406711:	e8 23 78 00 00       	call   0x40df39
406716:	59                   	pop    %ecx
406717:	8b d0                	mov    %eax,%edx
406719:	83 fa ff             	cmp    $0xffffffff,%edx
40671c:	74 19                	je     0x406737
40671e:	83 fa fe             	cmp    $0xfffffffe,%edx
406721:	74 14                	je     0x406737
406723:	8b ca                	mov    %edx,%ecx
406725:	c1 f9 05             	sar    $0x5,%ecx
406728:	83 e0 1f             	and    $0x1f,%eax
40672b:	c1 e0 06             	shl    $0x6,%eax
40672e:	03 04 8d 20 2a 42 00 	add    0x422a20(,%ecx,4),%eax
406735:	eb 05                	jmp    0x40673c
406737:	b8 18 10 42 00       	mov    $0x421018,%eax
40673c:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
406740:	75 29                	jne    0x40676b
406742:	83 fa ff             	cmp    $0xffffffff,%edx
406745:	74 19                	je     0x406760
406747:	83 fa fe             	cmp    $0xfffffffe,%edx
40674a:	74 14                	je     0x406760
40674c:	8b c2                	mov    %edx,%eax
40674e:	c1 f8 05             	sar    $0x5,%eax
406751:	83 e2 1f             	and    $0x1f,%edx
406754:	c1 e2 06             	shl    $0x6,%edx
406757:	03 14 85 20 2a 42 00 	add    0x422a20(,%eax,4),%edx
40675e:	eb 05                	jmp    0x406765
406760:	ba 18 10 42 00       	mov    $0x421018,%edx
406765:	f6 42 24 80          	testb  $0x80,0x24(%edx)
406769:	74 16                	je     0x406781
40676b:	e8 0d 1a 00 00       	call   0x40817d
406770:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406776:	e8 7a 4e 00 00       	call   0x40b5f5
40677b:	83 cf ff             	or     $0xffffffff,%edi
40677e:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406781:	85 ff                	test   %edi,%edi
406783:	75 1b                	jne    0x4067a0
406785:	ff 4e 04             	decl   0x4(%esi)
406788:	78 0a                	js     0x406794
40678a:	8b 06                	mov    (%esi),%eax
40678c:	0f b6 38             	movzbl (%eax),%edi
40678f:	40                   	inc    %eax
406790:	89 06                	mov    %eax,(%esi)
406792:	eb 09                	jmp    0x40679d
406794:	56                   	push   %esi
406795:	e8 a2 83 00 00       	call   0x40eb3c
40679a:	59                   	pop    %ecx
40679b:	8b f8                	mov    %eax,%edi
40679d:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4067a0:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4067a7:	e8 0e 00 00 00       	call   0x4067ba
4067ac:	8b c7                	mov    %edi,%eax
4067ae:	e8 42 46 00 00       	call   0x40adf5
4067b3:	c3                   	ret
4067b4:	8b 75 08             	mov    0x8(%ebp),%esi
4067b7:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4067ba:	56                   	push   %esi
4067bb:	e8 ca fb ff ff       	call   0x40638a
4067c0:	59                   	pop    %ecx
4067c1:	c3                   	ret
4067c2:	55                   	push   %ebp
4067c3:	8b ec                	mov    %esp,%ebp
4067c5:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
4067c9:	75 15                	jne    0x4067e0
4067cb:	e8 ad 19 00 00       	call   0x40817d
4067d0:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4067d6:	e8 1a 4e 00 00       	call   0x40b5f5
4067db:	83 c8 ff             	or     $0xffffffff,%eax
4067de:	5d                   	pop    %ebp
4067df:	c3                   	ret
4067e0:	56                   	push   %esi
4067e1:	8b 75 0c             	mov    0xc(%ebp),%esi
4067e4:	85 f6                	test   %esi,%esi
4067e6:	75 16                	jne    0x4067fe
4067e8:	e8 90 19 00 00       	call   0x40817d
4067ed:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4067f3:	e8 fd 4d 00 00       	call   0x40b5f5
4067f8:	83 c8 ff             	or     $0xffffffff,%eax
4067fb:	5e                   	pop    %esi
4067fc:	5d                   	pop    %ebp
4067fd:	c3                   	ret
4067fe:	ff 75 08             	push   0x8(%ebp)
406801:	e8 64 84 00 00       	call   0x40ec6a
406806:	89 06                	mov    %eax,(%esi)
406808:	23 c2                	and    %edx,%eax
40680a:	59                   	pop    %ecx
40680b:	89 56 04             	mov    %edx,0x4(%esi)
40680e:	83 f8 ff             	cmp    $0xffffffff,%eax
406811:	74 e5                	je     0x4067f8
406813:	33 c0                	xor    %eax,%eax
406815:	eb e4                	jmp    0x4067fb
406817:	6a 0c                	push   $0xc
406819:	68 90 e2 41 00       	push   $0x41e290
40681e:	e8 8d 45 00 00       	call   0x40adb0
406823:	33 ff                	xor    %edi,%edi
406825:	89 7d e4             	mov    %edi,-0x1c(%ebp)
406828:	33 c0                	xor    %eax,%eax
40682a:	8b 75 0c             	mov    0xc(%ebp),%esi
40682d:	85 f6                	test   %esi,%esi
40682f:	0f 95 c0             	setne  %al
406832:	85 c0                	test   %eax,%eax
406834:	75 18                	jne    0x40684e
406836:	e8 42 19 00 00       	call   0x40817d
40683b:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406841:	e8 af 4d 00 00       	call   0x40b5f5
406846:	83 c8 ff             	or     $0xffffffff,%eax
406849:	e9 bf 00 00 00       	jmp    0x40690d
40684e:	e8 9f 6d 00 00       	call   0x40d5f2
406853:	85 c0                	test   %eax,%eax
406855:	78 ef                	js     0x406846
406857:	56                   	push   %esi
406858:	e8 be fa ff ff       	call   0x40631b
40685d:	59                   	pop    %ecx
40685e:	89 7d fc             	mov    %edi,-0x4(%ebp)
406861:	f6 46 0c 40          	testb  $0x40,0xc(%esi)
406865:	75 71                	jne    0x4068d8
406867:	56                   	push   %esi
406868:	e8 cc 76 00 00       	call   0x40df39
40686d:	59                   	pop    %ecx
40686e:	8b d0                	mov    %eax,%edx
406870:	83 fa ff             	cmp    $0xffffffff,%edx
406873:	74 19                	je     0x40688e
406875:	83 fa fe             	cmp    $0xfffffffe,%edx
406878:	74 14                	je     0x40688e
40687a:	8b ca                	mov    %edx,%ecx
40687c:	c1 f9 05             	sar    $0x5,%ecx
40687f:	83 e0 1f             	and    $0x1f,%eax
406882:	c1 e0 06             	shl    $0x6,%eax
406885:	03 04 8d 20 2a 42 00 	add    0x422a20(,%ecx,4),%eax
40688c:	eb 05                	jmp    0x406893
40688e:	b8 18 10 42 00       	mov    $0x421018,%eax
406893:	f6 40 24 7f          	testb  $0x7f,0x24(%eax)
406897:	75 29                	jne    0x4068c2
406899:	83 fa ff             	cmp    $0xffffffff,%edx
40689c:	74 19                	je     0x4068b7
40689e:	83 fa fe             	cmp    $0xfffffffe,%edx
4068a1:	74 14                	je     0x4068b7
4068a3:	8b c2                	mov    %edx,%eax
4068a5:	c1 f8 05             	sar    $0x5,%eax
4068a8:	83 e2 1f             	and    $0x1f,%edx
4068ab:	c1 e2 06             	shl    $0x6,%edx
4068ae:	03 14 85 20 2a 42 00 	add    0x422a20(,%eax,4),%edx
4068b5:	eb 05                	jmp    0x4068bc
4068b7:	ba 18 10 42 00       	mov    $0x421018,%edx
4068bc:	f6 42 24 80          	testb  $0x80,0x24(%edx)
4068c0:	74 16                	je     0x4068d8
4068c2:	e8 b6 18 00 00       	call   0x40817d
4068c7:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
4068cd:	e8 23 4d 00 00       	call   0x40b5f5
4068d2:	83 cf ff             	or     $0xffffffff,%edi
4068d5:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4068d8:	85 ff                	test   %edi,%edi
4068da:	75 23                	jne    0x4068ff
4068dc:	ff 4e 04             	decl   0x4(%esi)
4068df:	78 0e                	js     0x4068ef
4068e1:	8b 06                	mov    (%esi),%eax
4068e3:	8b 4d 08             	mov    0x8(%ebp),%ecx
4068e6:	88 08                	mov    %cl,(%eax)
4068e8:	0f b6 f9             	movzbl %cl,%edi
4068eb:	ff 06                	incl   (%esi)
4068ed:	eb 0d                	jmp    0x4068fc
4068ef:	56                   	push   %esi
4068f0:	ff 75 08             	push   0x8(%ebp)
4068f3:	e8 38 4d 00 00       	call   0x40b630
4068f8:	59                   	pop    %ecx
4068f9:	59                   	pop    %ecx
4068fa:	8b f8                	mov    %eax,%edi
4068fc:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4068ff:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
406906:	e8 0e 00 00 00       	call   0x406919
40690b:	8b c7                	mov    %edi,%eax
40690d:	e8 e3 44 00 00       	call   0x40adf5
406912:	c3                   	ret
406913:	8b 75 0c             	mov    0xc(%ebp),%esi
406916:	8b 7d e4             	mov    -0x1c(%ebp),%edi
406919:	56                   	push   %esi
40691a:	e8 6b fa ff ff       	call   0x40638a
40691f:	59                   	pop    %ecx
406920:	c3                   	ret
406921:	55                   	push   %ebp
406922:	8b ec                	mov    %esp,%ebp
406924:	83 7d 08 00          	cmpl   $0x0,0x8(%ebp)
406928:	75 15                	jne    0x40693f
40692a:	e8 4e 18 00 00       	call   0x40817d
40692f:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
406935:	e8 bb 4c 00 00       	call   0x40b5f5
40693a:	83 c8 ff             	or     $0xffffffff,%eax
40693d:	5d                   	pop    %ebp
40693e:	c3                   	ret
40693f:	8b 45 0c             	mov    0xc(%ebp),%eax
406942:	85 c0                	test   %eax,%eax
406944:	74 e4                	je     0x40692a
406946:	6a 00                	push   $0x0
406948:	ff 70 04             	push   0x4(%eax)
40694b:	ff 30                	push   (%eax)
40694d:	ff 75 08             	push   0x8(%ebp)
406950:	e8 05 00 00 00       	call   0x40695a
406955:	83 c4 10             	add    $0x10,%esp
406958:	5d                   	pop    %ebp
406959:	c3                   	ret
40695a:	6a 0c                	push   $0xc
40695c:	68 b0 e2 41 00       	push   $0x41e2b0
406961:	e8 4a 44 00 00       	call   0x40adb0
406966:	33 c0                	xor    %eax,%eax
406968:	8b 75 08             	mov    0x8(%ebp),%esi
40696b:	85 f6                	test   %esi,%esi
40696d:	0f 95 c0             	setne  %al
406970:	85 c0                	test   %eax,%eax
406972:	75 15                	jne    0x406989
406974:	e8 04 18 00 00       	call   0x40817d
406979:	c7 00 16 00 00 00    	movl   $0x16,(%eax)
40697f:	e8 71 4c 00 00       	call   0x40b5f5
406984:	83 c8 ff             	or     $0xffffffff,%eax
406987:	eb 3f                	jmp    0x4069c8
406989:	8b 7d 14             	mov    0x14(%ebp),%edi
40698c:	85 ff                	test   %edi,%edi
40698e:	74 0a                	je     0x40699a
406990:	83 ff 01             	cmp    $0x1,%edi
406993:	74 05                	je     0x40699a
406995:	83 ff 02             	cmp    $0x2,%edi
406998:	75 da                	jne    0x406974
40699a:	56                   	push   %esi
40699b:	e8 7b f9 ff ff       	call   0x40631b
4069a0:	59                   	pop    %ecx
4069a1:	83 65 fc 00          	andl   $0x0,-0x4(%ebp)
4069a5:	57                   	push   %edi
4069a6:	ff 75 10             	push   0x10(%ebp)
4069a9:	ff 75 0c             	push   0xc(%ebp)
4069ac:	56                   	push   %esi
4069ad:	e8 2a 00 00 00       	call   0x4069dc
4069b2:	83 c4 10             	add    $0x10,%esp
4069b5:	8b f8                	mov    %eax,%edi
4069b7:	89 7d e4             	mov    %edi,-0x1c(%ebp)
4069ba:	c7 45 fc fe ff ff ff 	movl   $0xfffffffe,-0x4(%ebp)
4069c1:	e8 0e 00 00 00       	call   0x4069d4
4069c6:	8b c7                	mov    %edi,%eax
4069c8:	e8 28 44 00 00       	call   0x40adf5
4069cd:	c3                   	ret
4069ce:	8b 75 08             	mov    0x8(%ebp),%esi
4069d1:	8b 7d e4             	mov    -0x1c(%ebp),%edi
4069d4:	56                   	push   %esi
4069d5:	e8 b0 f9 ff ff       	call   0x40638a
4069da:	59                   	pop    %ecx
4069db:	c3                   	ret
4069dc:	55                   	push   %ebp
4069dd:	8b ec                	mov    %esp,%ebp
4069df:	56                   	push   %esi
4069e0:	8b 75 08             	mov    0x8(%ebp),%esi
4069e3:	57                   	push   %edi
4069e4:	8b 46 0c             	mov    0xc(%esi),%eax
4069e7:	a8 83                	test   $0x83,%al
4069e9:	0f 84 8c 00 00 00    	je     0x406a7b
4069ef:	8b 7d 14             	mov    0x14(%ebp),%edi
4069f2:	85 ff                	test   %edi,%edi
4069f4:	74 0a                	je     0x406a00
4069f6:	83 ff 01             	cmp    $0x1,%edi
4069f9:	74 05                	je     0x406a00
4069fb:	83 ff 02             	cmp    $0x2,%edi
4069fe:	75 7b                	jne    0x406a7b
406a00:	83 e0 ef             	and    $0xffffffef,%eax
406a03:	53                   	push   %ebx
406a04:	89 46 0c             	mov    %eax,0xc(%esi)
406a07:	83 ff 01             	cmp    $0x1,%edi
406a0a:	75 15                	jne    0x406a21
406a0c:	56                   	push   %esi
406a0d:	e8 d5 82 00 00       	call   0x40ece7
406a12:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406a15:	03 d8                	add    %eax,%ebx
406a17:	8b 45 10             	mov    0x10(%ebp),%eax
406a1a:	13 c2                	adc    %edx,%eax
406a1c:	59                   	pop    %ecx
406a1d:	33 ff                	xor    %edi,%edi
406a1f:	eb 06                	jmp    0x406a27
406a21:	8b 45 10             	mov    0x10(%ebp),%eax
406a24:	8b 5d 0c             	mov    0xc(%ebp),%ebx
406a27:	56                   	push   %esi
406a28:	89 45 08             	mov    %eax,0x8(%ebp)
406a2b:	e8 ea fa ff ff       	call   0x40651a
406a30:	8b 46 0c             	mov    0xc(%esi),%eax
406a33:	59                   	pop    %ecx
406a34:	84 c0                	test   %al,%al
406a36:	79 08                	jns    0x406a40
406a38:	83 e0 fc             	and    $0xfffffffc,%eax