:- module('Combinatory_perm_pe',[perm/2],[]).

:- discontiguous bytecode/5, class/2.

perm(In,Out) :- main(In,Out).

bytecode(0,'0',0,aload(0),1).
bytecode(1,'0',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'0',0,return,1).
bytecode(0,'0',1,iload(0),1).
bytecode(1,'0',1,iload(1),1).
bytecode(2,'0',1,if_icmp(ltInt,28),3).
bytecode(5,'0',1,iload(1),1).
bytecode(6,'0',1,if0(ltInt,24),3).
bytecode(9,'0',1,const(primitiveType(int),1),1).
bytecode(10,'0',1,istore(2),1).
bytecode(11,'0',1,iload(1),1).
bytecode(12,'0',1,if0(leInt,16),3).
bytecode(15,'0',1,iload(2),1).
bytecode(16,'0',1,iload(0),1).
bytecode(17,'0',1,ibinop(mulInt),1).
bytecode(18,'0',1,istore(2),1).
bytecode(19,'0',1,iinc(1,-1),3).
bytecode(22,'0',1,iinc(0,-1),3).
bytecode(25,'0',1,goto(-14),3).
bytecode(28,'0',1,iload(2),1).
bytecode(29,'0',1,ireturn,1).
bytecode(30,'0',1,const(primitiveType(int),-1),1).
bytecode(31,'0',1,ireturn,1).
bytecode(0,'0',2,iload(0),1).
bytecode(1,'0',2,iload(1),1).
bytecode(2,'0',2,if_icmp(ltInt,25),3).
bytecode(5,'0',2,iload(1),1).
bytecode(6,'0',2,if0(ltInt,21),3).
bytecode(9,'0',2,const(primitiveType(int),1),1).
bytecode(10,'0',2,istore(2),1).
bytecode(11,'0',2,iload(1),1).
bytecode(12,'0',2,if0(leInt,13),3).
bytecode(15,'0',2,iload(2),1).
bytecode(16,'0',2,iload(0),1).
bytecode(17,'0',2,ibinop(mulInt),1).
bytecode(18,'0',2,istore(2),1).
bytecode(19,'0',2,iinc(1,-1),3).
bytecode(22,'0',2,goto(-11),3).
bytecode(25,'0',2,iload(2),1).
bytecode(26,'0',2,ireturn,1).
bytecode(27,'0',2,const(primitiveType(int),-1),1).
bytecode(28,'0',2,ireturn,1).
bytecode(0,'0',3,iload(0),1).
bytecode(1,'0',3,iload(1),1).
bytecode(2,'0',3,if_icmp(ltInt,36),3).
bytecode(5,'0',3,iload(1),1).
bytecode(6,'0',3,if0(ltInt,32),3).
bytecode(9,'0',3,const(primitiveType(int),1),1).
bytecode(10,'0',3,istore(2),1).
bytecode(11,'0',3,const(primitiveType(int),1),1).
bytecode(12,'0',3,istore(3),1).
bytecode(13,'0',3,iload(1),1).
bytecode(14,'0',3,if0(leInt,20),3).
bytecode(17,'0',3,iload(3),1).
bytecode(18,'0',3,iload(1),1).
bytecode(19,'0',3,ibinop(mulInt),1).
bytecode(20,'0',3,istore(3),1).
bytecode(21,'0',3,iload(2),1).
bytecode(22,'0',3,iload(0),1).
bytecode(23,'0',3,ibinop(mulInt),1).
bytecode(24,'0',3,istore(2),1).
bytecode(25,'0',3,iinc(1,-1),3).
bytecode(28,'0',3,iinc(0,-1),3).
bytecode(31,'0',3,goto(-18),3).
bytecode(34,'0',3,iload(2),1).
bytecode(35,'0',3,iload(3),1).
bytecode(36,'0',3,ibinop(divInt),1).
bytecode(37,'0',3,ireturn,1).
bytecode(38,'0',3,const(primitiveType(int),-1),1).
bytecode(39,'0',3,ireturn,1).
bytecode(0,'0',4,iload(0),1).
bytecode(1,'0',4,iload(1),1).
bytecode(2,'0',4,ibinop(addInt),1).
bytecode(3,'0',4,const(primitiveType(int),1),1).
bytecode(4,'0',4,ibinop(subInt),1).
bytecode(5,'0',4,iload(1),1).
bytecode(6,'0',4,invokestatic(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(combNoRep)),[primitiveType(int),primitiveType(int)],primitiveType(int))),3).
bytecode(9,'0',4,ireturn,1).
bytecode(0,'0',5,iload(0),1).
bytecode(1,'0',5,if0(ltInt,21),3).
bytecode(4,'0',5,const(primitiveType(int),1),1).
bytecode(5,'0',5,istore(1),1).
bytecode(6,'0',5,iload(0),1).
bytecode(7,'0',5,if0(leInt,13),3).
bytecode(10,'0',5,iload(1),1).
bytecode(11,'0',5,iload(0),1).
bytecode(12,'0',5,ibinop(mulInt),1).
bytecode(13,'0',5,istore(1),1).
bytecode(14,'0',5,iinc(0,-1),3).
bytecode(17,'0',5,goto(-11),3).
bytecode(20,'0',5,iload(1),1).
bytecode(21,'0',5,ireturn,1).
bytecode(22,'0',5,const(primitiveType(int),-1),1).
bytecode(23,'0',5,ireturn,1).
class('0',class(className(packageName(''),shortClassName('Combinatory')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('0',0),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(varNoRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(3,2,0,methodId('0',1),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(varRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(3,2,0,methodId('0',2),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(combNoRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('0',3),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(combRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(2,2,0,methodId('0',4),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(perm)),[primitiveType(int)],primitiveType(int)),bytecodeMethod(2,2,0,methodId('0',5),[]),final(false),static(true),public)])).

bytecode(0,'Object',0,return,1).
class('Object',class(className(packageName('java/lang/'),shortClassName('Object')),final(false),public(false),abstract(false),none,[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('Object',0),[]),final(false),static(false),public)])).

bytecode(0,'String',0,aload(0),1).
bytecode(1,'String',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'String',0,return,1).
class('String',class(className(packageName('java/lang/'),shortClassName('String')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('String')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('String',0),[]),final(false),static(false),private)])).

bytecode(0,'NullPointerException',0,aload(0),1).
bytecode(1,'NullPointerException',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'NullPointerException',0,return,1).
class('NullPointerException',class(className(packageName('java/lang/'),shortClassName('NullPointerException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NullPointerException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NullPointerException',0),[]),final(false),static(false),private)])).

bytecode(0,'ArrayStoreException',0,aload(0),1).
bytecode(1,'ArrayStoreException',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'ArrayStoreException',0,return,1).
class('ArrayStoreException',class(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayStoreException',0),[]),final(false),static(false),private)])).

bytecode(0,'ArrayIndexOutOfBoundsException',0,aload(0),1).
bytecode(1,'ArrayIndexOutOfBoundsException',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'ArrayIndexOutOfBoundsException',0,return,1).
class('ArrayIndexOutOfBoundsException',class(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayIndexOutOfBoundsException',0),[]),final(false),static(false),private)])).

bytecode(0,'NegativeArraySizeException',0,aload(0),1).
bytecode(1,'NegativeArraySizeException',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'NegativeArraySizeException',0,return,1).
class('NegativeArraySizeException',class(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NegativeArraySizeException',0),[]),final(false),static(false),private)])).

bytecode(0,'ClassCastException',0,aload(0),1).
bytecode(1,'ClassCastException',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'ClassCastException',0,return,1).
class('ClassCastException',class(className(packageName('java/lang/'),shortClassName('ClassCastException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ClassCastException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ClassCastException',0),[]),final(false),static(false),private)])).

bytecode(0,'ArithmeticException',0,aload(0),1).
bytecode(1,'ArithmeticException',0,invokespecial(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none)),3).
bytecode(4,'ArithmeticException',0,return,1).
class('ArithmeticException',class(className(packageName('java/lang/'),shortClassName('ArithmeticException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArithmeticException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArithmeticException',0),[]),final(false),static(false),private)])).

source_program(program([class(className(packageName(''),shortClassName('Combinatory')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('0',0),[]),final(false),static(false),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(varNoRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(3,2,0,methodId('0',1),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(varRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(3,2,0,methodId('0',2),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(combNoRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(4,2,0,methodId('0',3),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(combRep)),[primitiveType(int),primitiveType(int)],primitiveType(int)),bytecodeMethod(2,2,0,methodId('0',4),[]),final(false),static(true),public),method(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(perm)),[primitiveType(int)],primitiveType(int)),bytecodeMethod(2,2,0,methodId('0',5),[]),final(false),static(true),public)]),class(className(packageName('java/lang/'),shortClassName('Object')),final(false),public(false),abstract(false),none,[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('Object')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('Object',0),[]),final(false),static(false),public)]),class(className(packageName('java/lang/'),shortClassName('String')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('String')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('String',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('NullPointerException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NullPointerException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NullPointerException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayStoreException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayStoreException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArrayIndexOutOfBoundsException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArrayIndexOutOfBoundsException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('NegativeArraySizeException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('NegativeArraySizeException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ClassCastException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ClassCastException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ClassCastException',0),[]),final(false),static(false),private)]),class(className(packageName('java/lang/'),shortClassName('ArithmeticException')),final(false),public(false),abstract(false),className(packageName('java/lang/'),shortClassName('Object')),[],[],[method(methodSignature(methodName(className(packageName('java/lang/'),shortClassName('ArithmeticException')),shortMethodName('<init>')),[],none),bytecodeMethod(1,1,0,methodId('ArithmeticException',0),[]),final(false),static(false),private)])],[])).

:- include(library('jvm_in_ciao/interpreter/pe_i.pl')).

current_mis(mis(methodSignature(methodName(className(packageName(''),shortClassName('Combinatory')),shortMethodName(perm)),[primitiveType(int)],primitiveType(int)),[num(int(_))],heap(dynamicHeap([]),staticHeap([])))).
options([top]).
