human
What is a the Python program you requested given the following:
Complete the below
def _loop_lift_prepare_loop_func(loopinfo, blocks):

    ''''Inplace transform loop blocks for use as lifted loop.'
    '''
assistant
#Here is the Python program you requested.
    def make_prologue():
        '\n                                Make    a    new    block    that    unwraps    the    argument    and    jump    to    the    loop    entry.\n                                This    block    is    the    entry    block    of    the    function.\n                                '
        entry_block = blocks[loopinfo.callfrom]
        scope = entry_block.scope
        loc = entry_block.loc
        block = ir.Block(scope=scope, loc=loc)
        args = [ir.Arg(name=k, index=i, loc=loc) for (i, k) in enumerate(loopinfo.inputs)]
        for (aname, aval) in zip(loopinfo.inputs, args):
            tmp = ir.Var(scope=scope, name=aname, loc=loc)
            block.append(ir.Assign(target=tmp, value=aval, loc=loc))
        block.append(ir.Jump(target=loopinfo.callfrom, loc=loc))
        return block
    def make_epilogue():
        '\n                                Make    a    new    block    to    prepare    the    return    values.\n                                This    block    is    the    last    block    of    the    function.\n                                '
        entry_block = blocks[loopinfo.callfrom]
        scope = entry_block.scope
        loc = entry_block.loc
        block = ir.Block(scope=scope, loc=loc)
        vals = [scope.get_exact(name=name) for name in loopinfo.outputs]
        tupexpr = ir.Expr.build_tuple(items=vals, loc=loc)
        tup = scope.make_temp(loc=loc)
        block.append(ir.Assign(target=tup, value=tupexpr, loc=loc))
        block.append(ir.Return(value=tup, loc=loc))
        return block
    firstblk = (min(blocks) - 1)
    blocks[firstblk] = make_prologue()
    blocks[loopinfo.returnto] = make_epilogue()