// Decompiled by Jad v1.5.8f. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://www.kpdus.com/jad.html
// Decompiler options: packimports(3) 

final class Sounds {

	private Sounds() {
		aClass6Array329 = new Class6[10];
	}

	public static void unpack(Stream stream) {
		aByteArray327 = new byte[0x6baa8];
		aStream_328 = new Stream(aByteArray327);
		Class6.method166();
		do {
			int j = stream.readUnsignedWord();
			if (j == 65535) {
				return;
			}
			aSoundsArray325s[j] = new Sounds();
			aSoundsArray325s[j].method242(stream);
			anIntArray326[j] = aSoundsArray325s[j].method243();
		} while (true);
	}

	public static Stream method241(int i, int j) {
		if (aSoundsArray325s[j] != null) {
			Sounds sounds = aSoundsArray325s[j];
			return sounds.method244(i);
		} else {
			return null;
		}
	}

	private void method242(Stream stream) {
		for (int i = 0; i < 10; i++) {
			int j = stream.readUnsignedByte();
			if (j != 0) {
				stream.currentOffset--;
				aClass6Array329[i] = new Class6();
				aClass6Array329[i].method169(stream);
			}
		}
		anInt330 = stream.readUnsignedWord();
		anInt331 = stream.readUnsignedWord();
	}

	private int method243() {
		int j = 0x98967f;
		for (int k = 0; k < 10; k++) {
			if (aClass6Array329[k] != null && aClass6Array329[k].anInt114 / 20 < j) {
				j = aClass6Array329[k].anInt114 / 20;
			}
		}

		if (anInt330 < anInt331 && anInt330 / 20 < j) {
			j = anInt330 / 20;
		}
		if (j == 0x98967f || j == 0) {
			return 0;
		}
		for (int l = 0; l < 10; l++) {
			if (aClass6Array329[l] != null) {
				aClass6Array329[l].anInt114 -= j * 20;
			}
		}

		if (anInt330 < anInt331) {
			anInt330 -= j * 20;
			anInt331 -= j * 20;
		}
		return j;
	}

	private Stream method244(int i) {
		int k = method245(i);
		aStream_328.currentOffset = 0;
		aStream_328.writeDWord(0x52494646);
		aStream_328.method403(36 + k);
		aStream_328.writeDWord(0x57415645);
		aStream_328.writeDWord(0x666d7420);
		aStream_328.method403(16);
		aStream_328.method400(1);
		aStream_328.method400(1);
		aStream_328.method403(22050);
		aStream_328.method403(22050);
		aStream_328.method400(1);
		aStream_328.method400(8);
		aStream_328.writeDWord(0x64617461);
		aStream_328.method403(k);
		aStream_328.currentOffset += k;
		return aStream_328;
	}

	private int method245(int i) {
		int j = 0;
		for (int k = 0; k < 10; k++) {
			if (aClass6Array329[k] != null && aClass6Array329[k].anInt113 + aClass6Array329[k].anInt114 > j) {
				j = aClass6Array329[k].anInt113 + aClass6Array329[k].anInt114;
			}
		}

		if (j == 0) {
			return 0;
		}
		int l = 22050 * j / 1000;
		int i1 = 22050 * anInt330 / 1000;
		int j1 = 22050 * anInt331 / 1000;
		if (i1 < 0 || i1 > l || j1 < 0 || j1 > l || i1 >= j1) {
			i = 0;
		}
		int k1 = l + (j1 - i1) * (i - 1);
		for (int l1 = 44; l1 < k1 + 44; l1++) {
			aByteArray327[l1] = -128;
		}

		for (int i2 = 0; i2 < 10; i2++) {
			if (aClass6Array329[i2] != null) {
				int j2 = aClass6Array329[i2].anInt113 * 22050 / 1000;
				int i3 = aClass6Array329[i2].anInt114 * 22050 / 1000;
				int ai[] = aClass6Array329[i2].method167(j2, aClass6Array329[i2].anInt113);
				for (int l3 = 0; l3 < j2; l3++) {
					aByteArray327[l3 + i3 + 44] += (byte) (ai[l3] >> 8);
				}

			}
		}

		if (i > 1) {
			i1 += 44;
			j1 += 44;
			l += 44;
			int k2 = (k1 += 44) - l;
			for (int j3 = l - 1; j3 >= j1; j3--) {
				aByteArray327[j3 + k2] = aByteArray327[j3];
			}

			for (int k3 = 1; k3 < i; k3++) {
				int l2 = (j1 - i1) * k3;
				System.arraycopy(aByteArray327, i1, aByteArray327, i1 + l2, j1 - i1);

			}

			k1 -= 44;
		}
		return k1;
	}

	private static final Sounds[] aSoundsArray325s = new Sounds[5000];
	public static final int[] anIntArray326 = new int[5000];
	private static byte[] aByteArray327;
	private static Stream aStream_328;
	private final Class6[] aClass6Array329;
	private int anInt330;
	private int anInt331;

}
