```\nfunction innerHandleOp(bytes memory callData, UserOpInfo memory opInfo, bytes calldata context) external returns (uint256 actualGasCost) {\n    uint256 preGas = gasleft();\n    require(msg.sender == address(this), "AA92 internal call only");\n    MemoryUserOp memory mUserOp = opInfo.mUserOp;\n\n    uint callGasLimit = mUserOp.callGasLimit;\nunchecked {\n    // handleOps was called with gas limit too low. abort entire bundle.\n    if (gasleft() < callGasLimit + mUserOp.verificationGasLimit + 5000) {\n        assembly {\n            mstore(0, INNER_OUT_OF_GAS)\n            revert(0, 32)\n        }\n    }\n}\n\n    IPaymaster.PostOpMode mode = IPaymaster.PostOpMode.opSucceeded;\n    if (callData.length > 0) {\n        bool success = Exec.call(mUserOp.sender, 0, callData, callGasLimit);\n        if (!success) {\n            bytes memory result = Exec.getReturnData(REVERT_REASON_MAX_LEN);\n            if (result.length > 0) {\n                emit UserOperationRevertReason(opInfo.userOpHash, mUserOp.sender, mUserOp.nonce, result);\n            }\n            mode = IPaymaster.PostOpMode.opReverted;\n        }\n    }\n\nunchecked {\n    uint256 actualGas = preGas - gasleft() + opInfo.preOpGas;\n    //note: opIndex is ignored (relevant only if mode==postOpReverted, which is only possible outside of innerHandleOp)\n    return _handlePostOp(0, mode, opInfo, context, actualGas);\n}\n}\n```\n