def _get_instructions_bytes(code, varnames=None, names=None, constants=None,<EOL>cells=None, linestarts=None, line_offset=<NUM_LIT:0>):
labels = dis.findlabels(code)<EOL>extended_arg = <NUM_LIT:0><EOL>starts_line = None<EOL>free = None<EOL>n = len(code)<EOL>i = <NUM_LIT:0><EOL>while i < n:<EOL><INDENT>op = code[i]<EOL>offset = i<EOL>if linestarts is not None:<EOL><INDENT>starts_line = linestarts.get(i, None)<EOL>if starts_line is not None:<EOL><INDENT>starts_line += line_offset<EOL><DEDENT><DEDENT>is_jump_target = i in labels<EOL>i = i + <NUM_LIT:1><EOL>arg = None<EOL>argval = None<EOL>argrepr = '<STR_LIT>'<EOL>if op >= dis.HAVE_ARGUMENT:<EOL><INDENT>arg = code[i] + code[i + <NUM_LIT:1>] * <NUM_LIT> + extended_arg<EOL>extended_arg = <NUM_LIT:0><EOL>i = i + <NUM_LIT:2><EOL>if op == dis.EXTENDED_ARG:<EOL><INDENT>extended_arg = arg * <NUM_LIT><EOL><DEDENT>argval = arg<EOL>if op in dis.hasconst:<EOL><INDENT>argval, argrepr = dis._get_const_info(arg, constants)<EOL><DEDENT>elif op in dis.hasname:<EOL><INDENT>argval, argrepr = dis._get_name_info(arg, names)<EOL><DEDENT>elif op in dis.hasjrel:<EOL><INDENT>argval = i + arg<EOL>argrepr = "<STR_LIT>" + repr(argval)<EOL><DEDENT>elif op in dis.haslocal:<EOL><INDENT>argval, argrepr = dis._get_name_info(arg, varnames)<EOL><DEDENT>elif op in dis.hascompare:<EOL><INDENT>argval = dis.cmp_op[arg]<EOL>argrepr = argval<EOL><DEDENT>elif op in dis.hasfree:<EOL><INDENT>argval, argrepr = dis._get_name_info(arg, cells)<EOL><DEDENT>elif op in dis.hasnargs:<EOL><INDENT>argrepr = "<STR_LIT>" % (code[i - <NUM_LIT:2>], code[i - <NUM_LIT:1>])<EOL><DEDENT><DEDENT>yield dis.Instruction(dis.opname[op], op,<EOL>arg, argval, argrepr,<EOL>offset, starts_line, is_jump_target)<EOL><DEDENT>
Iterate over the instructions in a bytecode string.

    Generates a sequence of Instruction namedtuples giving the details of each
    opcode.  Additional information about the code's runtime environment
    (e.g. variable names, constants) can be specified using optional
    arguments.