whole_func_string: function StringPad(thisString, maxLength, fillString) {
    maxLength = TO_LENGTH(maxLength);
    var stringLength = thisString.length;
  
    if (maxLength <= stringLength) return "";
  
    if (IS_UNDEFINED(fillString)) {
      fillString = " ";
    } else {
      fillString = TO_STRING(fillString);
      if (fillString === "") {
        // If filler is the empty String, return S.
        return "";
      }
    }
  
    var fillLength = maxLength - stringLength;
    var repetitions = (fillLength / fillString.length) | 0;
    var remainingChars = (fillLength - fillString.length * repetitions) | 0;
  
    var filler = "";
    while (true) {
      if (repetitions & 1) filler += fillString;
      repetitions >>= 1;
      if (repetitions === 0) break;
      fillString += fillString;
    }
  
    if (remainingChars) {
      filler += %_SubString(fillString, 0, remainingChars);
    }
  
    return filler;
  }
func_code_string: function StringPad(thisString, maxLength, fillString) {
    maxLength = TO_LENGTH(maxLength);
    var stringLength = thisString.length;
  
    if (maxLength <= stringLength) return "";
  
    if (IS_UNDEFINED(fillString)) {
      fillString = " ";
    } else {
      fillString = TO_STRING(fillString);
      if (fillString === "") {
        // If filler is the empty String, return S.
        return "";
      }
    }
  
    var fillLength = maxLength - stringLength;
    var repetitions = (fillLength / fillString.length) | 0;
    var remainingChars = (fillLength - fillString.length * repetitions) | 0;
  
    var filler = "";
    while (true) {
      if (repetitions & 1) filler += fillString;
      repetitions >>= 1;
      if (repetitions === 0) break;
      fillString += fillString;
    }
  
    if (remainingChars) {
      filler += %_SubString(fillString, 0, remainingChars);
    }
  
    return filler;
  }
func_documentation_string: ------------------------------------------------------------------- http://tc39.github.io/proposal-string-pad-start-end/