public static boolean analysisVMXM(AnalysisOutput o, List<AnalysisOutput> candidates) throws MorphException {

    int idxXVerb = VerbUtil.endsWithXVerb(o.getStem());

    if(idxXVerb==-1) return false;
      
    o.setXverb(o.getStem().substring(idxXVerb));
    
    String eogan = o.getStem().substring(0,idxXVerb);

    String[] stomis = null;
    if(eogan.endsWith("아")||eogan.endsWith("어")) {
      stomis = EomiUtil.splitEomi(eogan.substring(0,eogan.length()-1),eogan.substring(eogan.length()-1));
      if(stomis[0]==null) return false;
    }else {
      stomis =  EomiUtil.splitEomi(eogan, "");      
      if(stomis[0]==null||!(stomis[1].startsWith("아")||stomis[1].startsWith("어"))) return false;
    }

    String[] irrs = IrregularUtil.restoreIrregularVerb(stomis[0], stomis[1]);
    if(irrs!=null) {
      o.setStem(irrs[0]);
      o.addElist(irrs[1]);
    } else {
      o.setStem(stomis[0]);
      o.addElist(stomis[1]);
    }

    if(DictionaryUtil.getVerb(o.getStem())!=null) {
      o.setPos(PatternConstants.POS_VERB);
      o.setPatn(PatternConstants.PTN_VMXM);
      o.setScore(AnalysisOutput.SCORE_CORRECT);
      candidates.add(o);
    }  

    return (o.getScore()==AnalysisOutput.SCORE_CORRECT);     
  }