public class psiprobe.tools.BackwardsFileStream extends java.io.InputStream
{
private final java.io.RandomAccessFile raf;
private long seekPos;
public void <init>(java.io.File) throws java.io.IOException
{
java.io.RandomAccessFile v, v;
psiprobe.tools.BackwardsFileStream v;
long v;
java.io.File v;
v := @this: psiprobe.tools.BackwardsFileStream;
v := @parameter: java.io.File;
specialinvoke v.<java.io.InputStream: void <init>()>();
v = new java.io.RandomAccessFile;
specialinvoke v.<java.io.RandomAccessFile: void <init>(java.io.File,java.lang.String)>(v, "r");
v.<psiprobe.tools.BackwardsFileStream: java.io.RandomAccessFile raf> = v;
v = v.<psiprobe.tools.BackwardsFileStream: java.io.RandomAccessFile raf>;
v = virtualinvoke v.<java.io.RandomAccessFile: long length()>();
v.<psiprobe.tools.BackwardsFileStream: long seekPos> = v;
return;
}
public void <init>(java.io.File, long) throws java.io.IOException
{
java.io.RandomAccessFile v;
psiprobe.tools.BackwardsFileStream v;
long v;
java.io.File v;
v := @this: psiprobe.tools.BackwardsFileStream;
v := @parameter: java.io.File;
v := @parameter: long;
specialinvoke v.<java.io.InputStream: void <init>()>();
v = new java.io.RandomAccessFile;
specialinvoke v.<java.io.RandomAccessFile: void <init>(java.io.File,java.lang.String)>(v, "r");
v.<psiprobe.tools.BackwardsFileStream: java.io.RandomAccessFile raf> = v;
v.<psiprobe.tools.BackwardsFileStream: long seekPos> = v;
return;
}
public int read() throws java.io.IOException
{
java.io.RandomAccessFile v, v;
long v, v, v;
byte v;
psiprobe.tools.BackwardsFileStream v;
int v, v;
v := @this: psiprobe.tools.BackwardsFileStream;
v = v.<psiprobe.tools.BackwardsFileStream: long seekPos>;
v = v cmp 0L;
if v <= 0 goto label;
v = v.<psiprobe.tools.BackwardsFileStream: java.io.RandomAccessFile raf>;
v = v.<psiprobe.tools.BackwardsFileStream: long seekPos>;
v = v - 1L;
v.<psiprobe.tools.BackwardsFileStream: long seekPos> = v;
virtualinvoke v.<java.io.RandomAccessFile: void seek(long)>(v);
v = v.<psiprobe.tools.BackwardsFileStream: java.io.RandomAccessFile raf>;
v = virtualinvoke v.<java.io.RandomAccessFile: int read()>();
return v;
label:
v = (int) -1;
return v;
}
public void close() throws java.io.IOException
{
java.io.RandomAccessFile v, v;
psiprobe.tools.BackwardsFileStream v;
v := @this: psiprobe.tools.BackwardsFileStream;
v = v.<psiprobe.tools.BackwardsFileStream: java.io.RandomAccessFile raf>;
if v == null goto label;
v = v.<psiprobe.tools.BackwardsFileStream: java.io.RandomAccessFile raf>;
virtualinvoke v.<java.io.RandomAccessFile: void close()>();
label:
return;
}
}