import java.nio.ByteBuffer;
import diStorm3.distorm3.*;
import diStorm3.CodeInfo;
import diStorm3.DecodedInst;
import diStorm3.OpcodeEnum;
import diStorm3.distorm3;
import diStorm3.DecodedResult;
import diStorm3.DecomposedResult;
import diStorm3.DecomposedInst;
public class Main {
public static void main(String[] args) {
byte[] buf = new byte[4];
buf[0] = (byte)0xc3;
buf[1] = (byte)0x33;
buf[2] = (byte)0xc0;
buf[3] = (byte)0xc3;
CodeInfo ci = new CodeInfo((long)0x1000, buf, DecodeType.Decode32Bits, 0);
DecodedResult dr = new DecodedResult(10);
distorm3.Decode(ci, dr);
for (DecodedInst x : dr.mInstructions) {
String s = String.format("%x %s %s", x.getOffset(), x.getMnemonic(), x.getOperands());
System.out.println(s);
}
DecomposedResult dr2 = new DecomposedResult(10);
distorm3.Decompose(ci, dr2);
for (DecomposedInst y: dr2.mInstructions) {
if (y.getOpcode() != OpcodeEnum.RET) {
DecodedInst x = distorm3.Format(ci, y);
String s = String.format("%x %s %s", x.getOffset(), x.getMnemonic(), x.getOperands());
System.out.println(s);
}
}
}
}