OPT_Register ESP = ir.regpool.getPhysicalRegisterSet().getESP();
  private void rewriteMoveInstruction(OPT_Instruction s) {    // first attempt to mutate the move into a noop    if (mutateMoveToNop(s)) return;    OPT_Register ESP = ir.regpool.getPhysicalRegisterSet().getESP();    OPT_Operand result = MIR_Move.getResult(s);    OPT_Operand val = MIR_Move.getValue(s);    if (result instanceof OPT_StackLocationOperand) {      if (val instanceof OPT_MemoryOperand ||           val instanceof OPT_StackLocationOperand) {        int offset = ((OPT_StackLocationOperand)result).getOffset();        byte size = ((OPT_StackLocationOperand)result).getSize();        offset = FPOffset2SPOffset(offset) + size;        moveESPBefore(s,offset);        MIR_UnaryNoRes.mutate(s,IA32_PUSH,val);      }    } else {      if (result instanceof OPT_MemoryOperand) {        if (val instanceof OPT_StackLocationOperand) {          int offset = ((OPT_StackLocationOperand)val).getOffset();          offset = FPOffset2SPOffset(offset);          moveESPBefore(s,offset);          MIR_Nullary.mutate(s,IA32_POP,result);        }      }    }  }