pragma solidity ^0.8.13; contract CapabilityLocator { address private immutable factory; bytes32 private immutable initCodeHash; constructor(address factory_, bytes32 initCodeHash_) { factory = factory_; initCodeHash = initCodeHash_; } function locate(bytes32 capabilityId) external view returns (address result) { address f = factory; bytes32 h = initCodeHash; assembly { let p := mload(0x40) mstore8(p, 0xff) mstore(add(p, 1), shl(96, f)) mstore(add(p, 21), capabilityId) mstore(add(p, 53), h) let hash := keccak256(p, 85) result := and(hash, 0xffffffffffffffffffffffffffffffffffffffff) result := mul(result, gt(extcodesize(result), 0)) } } }