public final void run() {
	anInt2710++;
	for (;;) {
	    int i;
	    synchronized (this) {
		for (;;) {
		    if (anIOException2704 != null)
			return;
		    if ((anInt2713 ^ 0xffffffff) > (anInt2705 ^ 0xffffffff))
			i = -anInt2705 + bufferSize - -anInt2713;
		    else
			i = anInt2713 - anInt2705;
		    if ((i ^ 0xffffffff) < -1)
			break;
		    try {
			this.wait();
		    } catch (InterruptedException interruptedexception) {
			/* empty */
		    }
		}
	    }
	    try {
		if (bufferSize >= anInt2705 - -i)
		    anOutputStream2712.write(aByteArray2706, anInt2705, i);
		else {
		    int i_0_ = -anInt2705 + bufferSize;
		    anOutputStream2712.write(aByteArray2706, anInt2705, i_0_);
		    anOutputStream2712.write(aByteArray2706, 0, -i_0_ + i);
		}
	    } catch (IOException ioexception) {
		synchronized (this) {
		    anIOException2704 = ioexception;
		    break;
		}
	    }
	    synchronized (this) {
		anInt2705 = (anInt2705 + i) % bufferSize;
	    }
	}
    }