## `assumeNotPrecompile`

### Signature

```solidity
function assumeNotPrecompile(address addr) public;
```

```solidity
function assumeNotPrecompile(address addr, uint256 chainid) public;
```

### Description

Uses [`assume`](/reference/cheatcodes/assume.mdx) to filter precompile addresses from the fuzz tests.

Optionally, a `chainid` may be specified to filter known precompiles on the respective chain.

### Registry

These are all the precompile addresses known to the `assumeNotPrecompile` functions.

| Chain ID      | Address                                      | Name                             |
| ------------- | -------------------------------------------- | -------------------------------- |
| ALL           | `0x01`                                       | ECRecover                        |
| ALL           | `0x02`                                       | SHA-256                          |
| ALL           | `0x03`                                       | RIPEMD-160                       |
| ALL           | `0x04`                                       | Identity                         |
| ALL           | `0x05`                                       | ModExp                           |
| ALL           | `0x06`                                       | ECAdd                            |
| ALL           | `0x07`                                       | ECMul                            |
| ALL           | `0x08`                                       | ECPairing                        |
| ALL           | `0x09`                                       | Blake2F                          |
| ALL           | `0x0a`                                       | PointEvaluation                  |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000016` | L2ToL1MessagePasser              |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000002` | DeployerWhitelist                |
| 10, 420, 11155420 | `0xDeadDeAddeAddEAddeadDEaDDEAdDeaDDeAD0000` | LegacyERC20ETH                   |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000006` | WETH9                            |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000007` | L2CrossDomainMessenger           |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000010` | L2StandardBridge                 |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000011` | SequencerFeeVault                |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000012` | OptimismMintableERC20Factory     |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000013` | L1BlockNumber                    |
| 10, 420, 11155420 | `0x420000000000000000000000000000000000000F` | GasPriceOracle                   |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000015` | L1Block                          |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000042` | GovernanceToken                  |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000000` | LegacyMessagePasser              |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000014` | L2ERC721Bridge                   |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000017` | OptimismMintableERC721Factory    |
| 10, 420, 11155420 | `0x4200000000000000000000000000000000000018` | ProxyAdmin                       |
| 42161, 421613 | `0x0000000000000000000000000000000000000064` | ArbSys                           |
| 42161, 421613 | `0x000000000000000000000000000000000000006E` | ArbRetryableTx                   |
| 42161, 421613 | `0x000000000000000000000000000000000000006C` | ArbGasInfo                       |
| 42161, 421613 | `0x0000000000000000000000000000000000000066` | ArbAddressTable                  |
| 42161, 421613 | `0x000000000000000000000000000000000000006F` | ArbStatistics                    |
| 42161, 421613 | `0x00000000000000000000000000000000000000C8` | NodeInterface                    |
| 42161, 421613 | `0x0000000000000000000000000000000000000067` | ArbBLS                           |
| 42161, 421613 | `0x0000000000000000000000000000000000000065` | ArbInfo                          |
| 42161, 421613 | `0x000000000000000000000000000000000000006D` | ArbAggregator                    |
| 42161, 421613 | `0x0000000000000000000000000000000000000068` | ArbFunctionTable                 |
| 433114, 43113 | `0x0200000000000000000000000000000000000000` | ContractDeployerAllowListAddress |
| 433114, 43113 | `0x0200000000000000000000000000000000000001` | ContractNativeMinterAddress      |
| 433114, 43113 | `0x0200000000000000000000000000000000000002` | TxAllowListAddress               |
| 433114, 43113 | `0x0200000000000000000000000000000000000003` | FeeConfigManagerAddress          |
| ALL           | `0x4e59b44847b379578588920cA78FbF26c0B4956C` | (Foundry) Create2Deployer        |
| ALL           | `0x7109709ECfa91a80626fF3989D68f67F5b1DD12D` | (Foundry) VM                     |
| ALL           | `0x000000000000000000636F6e736F6c652e6c6f67` | (Foundry) Console                |

### Reserved Ranges

Some chains also include reserved ranges for precompile contracts.

| Chain ID      | Start                                        | Stop                                         |
| ------------- | -------------------------------------------- | -------------------------------------------- |
| ALL           | `0x00`                                       | `0xff`                                       |
| 433114, 43113 | `0x0100000000000000000000000000000000000000` | `0x01000000000000000000000000000000000000ff` |
| 433114, 43113 | `0x0200000000000000000000000000000000000000` | `0x02000000000000000000000000000000000000ff` |
| 433114, 43113 | `0x0300000000000000000000000000000000000000` | `0x03000000000000000000000000000000000000ff` |
