public static OperationResult staticOperation(final MessageFrame frame) {
    final Bytes value0 = frame.popStackItem().trimLeadingZeros();
    final Bytes value1 = Bytes32.leftPad(frame.popStackItem());

    final MutableBytes32 result = MutableBytes32.create();

    // Any value >= 31 imply an index <= 0, so no work to do (note that 0 itself is a valid index,
    // but copying the 0th byte to itself is only so useful).
    int value0size = value0.size();
    if (value0size > 1) {
      frame.pushStackItem(value1);
      return signExtendSuccess;
    }

    int value0Value = value0.toInt();
    if (value0Value >= 31) {
      frame.pushStackItem(value1);
      return signExtendSuccess;
    }

    final int byteIndex = 31 - value0.toInt();
    final byte toSet = value1.get(byteIndex) < 0 ? (byte) 0xFF : 0x00;
    result.mutableSlice(0, byteIndex).fill(toSet);
    value1.slice(byteIndex).copyTo(result, byteIndex);
    frame.pushStackItem(result);

    return signExtendSuccess;
  }
Performs Sign Extend operation.

@param frame the frame
@return the operation result
evm/src/main/java/org/hyperledger/besu/evm/operation/SignExtendOperation.java