whole_func_string: function checkSecond(samasa, second) {
      var beg = u.first(second);
      var clean = second;
      if (!inc([c.h, c.S, c.oM], beg)) return second;
      var position = samasa.length - second.length;
      var sym = samasa[position];
      if (beg == c.h) {
          // return second;
          if (sym == c.h) return second;
          else if (sym == c.G) {
              return [c.G, u.wofirst(second)].join('');
          } else if (sym == c.D) {
              return [c.D, u.wofirst(second)].join('');
          }
      } else if (beg == c.S) {
          if (sym == c.S) return second;
          else if (sym == c.C) {
              return [c.C, u.wofirst(second)].join('');
          }
      } else if (beg == c.oM) {
          var om = samasa.substr(position-2, 2);
          if (om == 'ोङ') {
              return [om, c.virama, u.wofirst(second)].join('');
          }
      }
  }
func_code_string: function checkSecond(samasa, second) {
      var beg = u.first(second);
      var clean = second;
      if (!inc([c.h, c.S, c.oM], beg)) return second;
      var position = samasa.length - second.length;
      var sym = samasa[position];
      if (beg == c.h) {
          // return second;
          if (sym == c.h) return second;
          else if (sym == c.G) {
              return [c.G, u.wofirst(second)].join('');
          } else if (sym == c.D) {
              return [c.D, u.wofirst(second)].join('');
          }
      } else if (beg == c.S) {
          if (sym == c.S) return second;
          else if (sym == c.C) {
              return [c.C, u.wofirst(second)].join('');
          }
      } else if (beg == c.oM) {
          var om = samasa.substr(position-2, 2);
          if (om == 'ोङ') {
              return [om, c.virama, u.wofirst(second)].join('');
          }
      }
  }
func_documentation_string: если h,S - проверка: смотрим, нет-ли варианта G,C?, и, если есть, используем его для Om пригодится. А для c.S ?