comefrom: <gouthampradhan>stack_LargestRectangleInHistogram_1.java
code: public int largestRectangleArea(int[] heights) {
      if (heights.length == 0) return 0;
      int maxArea = Integer.MIN_VALUE;
      Stack<Integer> stack = new Stack<>();
      int i = 0;
      for (; i < heights.length; i++) {
        while (!stack.isEmpty() && heights[stack.peek()] >= heights[i]) {
          int top = stack.pop();
          int base = stack.isEmpty() ? i : i - stack.peek() - 1;
          maxArea = Math.max(maxArea, base * heights[top]);
        }
        stack.push(i);
      }
      while (!stack.isEmpty()) {
        int top = stack.pop();
        int base = stack.isEmpty() ? i : i - stack.peek() - 1;
        maxArea = Math.max(maxArea, base * heights[top]);
      }
      return maxArea;
    }
masked: public int sample_funcname ( int [ ] var_0 ) {
    if ( var_0 . length == 0 ) return 0 ;
    int var_5 = Integer . MIN_VALUE ;
    Stack < Integer > var_7 = new Stack < > ( ) ;
    int var_8 = 0 ;
    for ( ;
    var_8 < var_0 . length ;
    var_8 ++ ) {
      while ( ! var_7 . isEmpty ( ) && var_0 [ var_7 . peek ( ) ] >= var_0 [ var_8 ] ) {
        int var_12 = var_7 . pop ( ) ;
        int var_14 = var_7 . isEmpty ( ) ? var_8 : var_8 - var_7 . peek ( ) - 1 ;
        var_5 = Math . max ( var_5 , var_14 * var_0 [ var_12 ] ) ;
      }
      var_7 . push ( var_8 ) ;
    }
    while ( ! var_7 . isEmpty ( ) ) {
      int var_12 = var_7 . pop ( ) ;
      int var_14 = var_7 . isEmpty ( ) ? var_8 : var_8 - var_7 . peek ( ) - 1 ;
      var_5 = Math . max ( var_5 , var_14 * var_0 [ var_12 ] ) ;
    }
    return var_5 ;
  }
  