```\nfunction _createSenderIfNeeded(uint256 opIndex, UserOpInfo memory opInfo, bytes calldata initCode) internal {\n    if (initCode.length != 0) {\n        address sender = opInfo.mUserOp.sender;\n        if (sender.code.length != 0) revert FailedOp(opIndex, "AA10 sender already constructed");\n        address sender1 = senderCreator.createSender{gas : opInfo.mUserOp.verificationGasLimit}(initCode);\n        if (sender1 == address(0)) revert FailedOp(opIndex, "AA13 initCode failed or OOG");\n        if (sender1 != sender) revert FailedOp(opIndex, "AA14 initCode must return sender");\n        if (sender1.code.length == 0) revert FailedOp(opIndex, "AA15 initCode must create sender");\n        address factory = address(bytes20(initCode[0 : 20]));\n        emit AccountDeployed(opInfo.userOpHash, sender, factory, opInfo.mUserOp.paymaster);\n    }\n}\n```\n