private IEnumerator WaitResponse_DownLoad(AB_DownLoadInfo abdlI, string AB_ROOT_PATH, bool forceDL = false)
	{
		string allPath = AB_ROOT_PATH + abdlI.abPath + abdlI.abInfo.abName;
		uint crc = abdlI.abInfo.crc;
		allPath = allPath + ".unity3d?" + AssetDataMng.assetVersion;
		while (this.isWaitDiskSpaceCheck)
		{
			yield return null;
		}
		this.isWaitDiskSpaceCheck = true;
		yield return base.StartCoroutine(AssetBundleDiskSpaceCheck.CheckDiskSpace(abdlI.abInfo, this));
		this.isWaitDiskSpaceCheck = false;
		this.countDownloadProcess++;
		long assetbundleFileSize = long.Parse(abdlI.abInfo.size);
		this.downloadFileSize += AssetBundleDiskSpaceCheck.GetFileSize(assetbundleFileSize);
		while (!Caching.ready)
		{
			yield return null;
		}
		WWWHelper wwwHelper = WWWHelper.LoadFromCacheOrDownload(allPath, abdlI.ver, crc, 60f);
		bool startDownload = true;
		while (startDownload)
		{
			yield return base.StartCoroutine(wwwHelper.StartDownloadAssetBundle(delegate(WWW www)
			{
				if (abdlI.www != null)
				{
					abdlI.www.Dispose();
				}
				abdlI.www = www;
			}, delegate(WWW resultWWW)
			{
				if (resultWWW == null)
				{
					if (!forceDL)
					{
						this.OpenAlert();
					}
				}
				else if (!string.IsNullOrEmpty(resultWWW.error))
				{
					if (!forceDL && this.isOpenAlert(resultWWW.error))
					{
						this.OpenAlert();
					}
					abdlI.www = resultWWW;
				}
				else
				{
					abdlI.www = resultWWW;
					startDownload = false;
				}
			}));
			while (this.IsStopDownload())
			{
				yield return null;
			}
		}
		this.countDownloadProcess--;
		this.downloadFileSize -= AssetBundleDiskSpaceCheck.GetFileSize(assetbundleFileSize);
		if (!forceDL)
		{
			this.Add_OR_SetRecord(abdlI.abPath, abdlI.abInfo.abName, crc, abdlI.ver);
		}
		if (abdlI.actEndCallBack != null)
		{
			abdlI.actEndCallBack(abdlI.www.assetBundle, abdlI);
		}
		yield break;
	}