def METHOD_NAME(message: Message, env: Environment) -> Evm:
    """
    Executes a call to create a smart contract.
    Parameters
    ----------
    message :
        Transaction specific items.
    env :
        External items required for EVM execution.
    Returns
    -------
    evm: :py:class:`~ethereum.dao_fork.vm.Evm`
        Items containing execution specific objects.
    """
    # take snapshot of state before processing the message
    begin_transaction(env.state)
    evm = process_message(message, env)
    if not evm.has_erred:
        contract_code = evm.output
        contract_code_gas = len(contract_code) * GAS_CODE_DEPOSIT
        try:
            charge_gas(evm, contract_code_gas)
        except ExceptionalHalt:
            rollback_transaction(env.state)
            evm.gas_left = Uint(0)
            evm.has_erred = True
        else:
            set_code(env.state, message.current_target, contract_code)
            commit_transaction(env.state)
    else:
        rollback_transaction(env.state)
    return evm