def METHOD_NAME(ir, *args, **kwargs):
    ir = IRnode.from_list(ir)
    if optimize != OptimizationLevel.NONE:
        ir = optimizer.optimize(ir)
    bytecode, _ = compile_ir.assembly_to_evm(
        compile_ir.compile_to_assembly(ir, optimize=optimize)
    )
    abi = kwargs.get("abi") or []
    c = w3.eth.contract(abi=abi, bytecode=bytecode)
    deploy_transaction = c.constructor()
    tx_hash = deploy_transaction.transact()
    address = w3.eth.get_transaction_receipt(tx_hash)["contractAddress"]
    contract = w3.eth.contract(
        address, abi=abi, bytecode=bytecode, ContractFactoryClass=VyperContract
    )
    return contract