def dis(msg, msg_nocr, section, errmsg, x=None, start_line=-<NUM_LIT:1>, end_line=None,<EOL>relative_pos = False, highlight='<STR_LIT>', start_offset=<NUM_LIT:0>, end_offset=None,<EOL>include_header=False):
lasti = -<NUM_LIT:1><EOL>if x is None:<EOL><INDENT>distb()<EOL>return None, None<EOL><DEDENT>if start_offset is None:<EOL><INDENT>start_offset = <NUM_LIT:0><EOL><DEDENT>mess = '<STR_LIT>'<EOL>if start_line > <NUM_LIT:1>:<EOL><INDENT>mess += "<STR_LIT>" % start_line<EOL><DEDENT>elif start_offset > <NUM_LIT:1>:<EOL><INDENT>mess = "<STR_LIT>" % start_offset<EOL><DEDENT>if end_line:<EOL><INDENT>mess += "<STR_LIT>" % end_line<EOL><DEDENT>elif end_offset:<EOL><INDENT>mess += "<STR_LIT>" % end_offset<EOL><DEDENT>sectioned = False<EOL>if hasattr(types, '<STR_LIT>') and isinstance(x, types.InstanceType):<EOL><INDENT>x = x.__class__<EOL><DEDENT>if inspect.ismethod(x):<EOL><INDENT>section("<STR_LIT>" % (x, mess))<EOL>sectioned = True<EOL>x = x.im_func<EOL><DEDENT>elif inspect.isfunction(x) or inspect.isgeneratorfunction(x):<EOL><INDENT>section("<STR_LIT>" % (x, mess))<EOL>x = x.func_code<EOL>sectioned = True<EOL><DEDENT>elif inspect.isgenerator(x):<EOL><INDENT>section("<STR_LIT>" % (x, mess))<EOL>frame = x.gi_frame<EOL>lasti = frame.f_last_i<EOL>x = x.gi_code<EOL>sectioned = True<EOL><DEDENT>elif inspect.isframe(x):<EOL><INDENT>section("<STR_LIT>" % (x, mess))<EOL>sectioned = True<EOL>if hasattr(x, '<STR_LIT>'):<EOL><INDENT>lasti = x.f_lasti<EOL>if lasti == -<NUM_LIT:1>: lasti = <NUM_LIT:0><EOL>pass<EOL><DEDENT>opc = get_opcode(PYTHON_VERSION, IS_PYPY)<EOL>x = x.f_code<EOL>if include_header:<EOL><INDENT>header_lines = Bytecode(x, opc).info().split("<STR_LIT:\n>")<EOL>header = '<STR_LIT:\n>'.join([format_token(Mformat.Comment, h) for h in header_lines])<EOL>msg(header)<EOL><DEDENT>pass<EOL><DEDENT>elif inspect.iscode(x):<EOL><INDENT>pass<EOL><DEDENT>if hasattr(x, '<STR_LIT>'):  <EOL><INDENT>items = sorted(x.__dict__.items())<EOL>for name, x1 in items:<EOL><INDENT>if isinstance(x1, _have_code):<EOL><INDENT>if not sectioned:<EOL><INDENT>section("<STR_LIT>" % x)<EOL><DEDENT>try:<EOL><INDENT>dis(msg, msg_nocr, section, errmsg, x1,<EOL>start_line=start_line, end_line=end_line,<EOL>relative_pos = relative_pos)<EOL>msg("<STR_LIT>")<EOL><DEDENT>except TypeError:<EOL><INDENT>_, msg, _ = sys.exc_info()<EOL>errmsg("<STR_LIT>", msg)<EOL>pass<EOL><DEDENT>pass<EOL><DEDENT>pass<EOL><DEDENT>pass<EOL><DEDENT>elif hasattr(x, '<STR_LIT>'):  <EOL><INDENT>if not sectioned:<EOL><INDENT>section("<STR_LIT>" % x)<EOL><DEDENT>return disassemble(msg, msg_nocr, section, x, lasti=lasti,<EOL>start_line=start_line, end_line=end_line,<EOL>relative_pos = relative_pos,<EOL>highlight = highlight,<EOL>start_offset = start_offset,<EOL>end_offset = end_offset)<EOL><DEDENT>elif isinstance(x, str):    <EOL><INDENT>return disassemble_string(msg, msg_nocr, x,)<EOL><DEDENT>else:<EOL><INDENT>errmsg("<STR_LIT>" %<EOL>type(x).__name__)<EOL><DEDENT>return None, None<EOL>
Disassemble classes, methods, functions, or code.

    With no argument, disassemble the last traceback.