def disco_loop(opc, version, queue, real_out, dup_lines=False,<EOL>show_bytes=False):
while len(queue) > <NUM_LIT:0>:<EOL><INDENT>co = queue.popleft()<EOL>if co.co_name not in ('<STR_LIT>', '<STR_LIT:?>'):<EOL><INDENT>real_out.write("<STR_LIT:\n>" + format_code_info(co, version) + "<STR_LIT:\n>")<EOL><DEDENT>bytecode = Bytecode(co, opc, dup_lines=dup_lines)<EOL>real_out.write(bytecode.dis(show_bytes=show_bytes) + "<STR_LIT:\n>")<EOL>for c in co.co_consts:<EOL><INDENT>if iscode(c):<EOL><INDENT>queue.append(c)<EOL><DEDENT>pass<EOL><DEDENT>pass<EOL><DEDENT>
Disassembles a queue of code objects. If we discover
    another code object which will be found in co_consts, we add
    the new code to the list. Note that the order of code discovery
    is in the order of first encountered which is not amenable for
    the format used by a disassembler where code objects should
    be defined before using them in other functions.
    However this is not recursive and will overall lead to less
    memory consumption at run time.