a1 = engine.aregs[1];
a2 = engine.aregs[2];
a3 = engine.aregs[3];
cont = engine.cont;
// hash_map([A|B],[(A,C)|D],E):-[hash_get(E,A,C),hash_map(B,D,E)]
a1 = a1.dereference();
if (a1.isList()){
Term[] args = {((ListTerm)a1).car(), ((ListTerm)a1).cdr()};
a4 = args[0];
a5 = args[1];
} else if (a1.isVariable()){