code: def _add32(ins):
      
      op1, op2 = tuple(ins.quad[2:])
  
      if _int_ops(op1, op2) is not None:
          o1, o2 = _int_ops(op1, op2)
  
          if int(o2) == 0:  # A + 0 = 0 + A = A => Do Nothing
              output = _32bit_oper(o1)
              output.append('push de')
              output.append('push hl')
              return output
  
      if op1[0] == '_' and op2[0] != '_':
          op1, op2 = op2, op1  # swap them
  
      if op2[0] == '_':
          output = _32bit_oper(op1)
          output.append('ld bc, (%s)' % op2)
          output.append('add hl, bc')
          output.append('ex de, hl')
          output.append('ld bc, (%s + 2)' % op2)
          output.append('adc hl, bc')
          output.append('push hl')
          output.append('push de')
          return output
  
      output = _32bit_oper(op1, op2)
      output.append('pop bc')
      output.append('add hl, bc')
      output.append('ex de, hl')
      output.append('pop bc')
      output.append('adc hl, bc')
      output.append('push hl')  # High and low parts are reversed
      output.append('push de')
  
      return output
docs: Pops last 2 bytes from the stack and adds them.
      Then push the result onto the stack.
  
      Optimizations:
        * If any of the operands is ZERO,
          then do NOTHING: A + 0 = 0 + A = A