def disco(bytecode_version, co, timestamp, out=sys.stdout,
          is_pypy=False, magic_int=None, source_size=None,
          header=True, asm_format=False, show_bytes=False,
          dup_lines=False):
    """
    diassembles and deparses a given code block 'co'
    """

    assert iscode(co)

    show_module_header(bytecode_version, co, timestamp, out,
                       is_pypy, magic_int, source_size, header,
                        show_filename=False)

    # store final output stream for case of error
    real_out = out or sys.stdout

    if co.co_filename and not asm_format:
        real_out.write(format_code_info(co, bytecode_version) + "\n")
        pass

    opc = get_opcode(bytecode_version, is_pypy)

    if asm_format:
        disco_loop_asm_format(opc, bytecode_version, co, real_out,
                              {}, set([]))
    else:
        queue = deque([co])
        disco_loop(opc, bytecode_version, queue, real_out,
                   show_bytes=show_bytes)
diassembles and deparses a given code block 'co'