code: def make_if(self, instr, left, and_block):
      block = [instr] + and_block[:-1]
  
      maxmax = max(
          block,
          key=lambda ins: (0, 0)
          if (ins.op not in JUMP_OPS)
          else (self.jump_map.get(ins.oparg, ins.oparg), ins.i),
      )
  
      idx = block.index(maxmax)
  
      assert idx is not None
  
      hi = self.process_logic(block[: idx + 1])
  
      if hi.right is None and hi.parent is None:
          if instr.opname == "POP_JUMP_IF_TRUE":
              cond = _ast.UnaryOp(
                  op=_ast.Not(), operand=left, lineno=0, col_offset=0
              )
          else:
              cond = left
  
      else:
          cond = self.logic_ast(instr, left, hi)
  
      jump = and_block[-1]
  
      if jump.opname == "RETURN_VALUE":
          body_block = block[idx + 1 :] + [jump]
      else:
          body_block = block[idx + 1 :]
  
      body = self.decompile_block(body_block).stmnt()
  
      if jump.is_jump:
          else_block = self.make_block(
              jump.to, inclusive=False, raise_=False
          )
      else:  # it is a return
          else_block = []
  
      if len(else_block):
          else_ = self.decompile_block(else_block).stmnt()
      #
      #            if len(else_lst) == 1 and isinstance(else_lst[0], _ast.If):
      #                elif_ = else_lst[0]
      #                tests.extend(elif_.tests)
      #                else_ = elif_.else_
      #            else:
      #                else_ = else_lst
      else:
          else_ = []
  
      if_ = _ast.If(
          test=cond,
          body=body,
          orelse=else_,
          lineno=instr.lineno,
          col_offset=0,
      )
  
      self.ast_stack.append(if_)
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  import opcode
  import _ast
  from ..bytecodetools.instruction import Instruction
  from ..asttools.visitors.print_visitor import print_ast
  from ..utils import py3op, py2op, py3
label_desc: Use image node_id 25 for calling the CtrlFlowInstructions obj's underlying member method code with example usage: obj.make_if(instr, left, and_block) without return types