code: def _shl32(ins):
      
      op1, op2 = tuple(ins.quad[2:])
  
      if is_int(op2):
          output = _32bit_oper(op1)
  
          if int(op2) == 0:
              output.append('push de')
              output.append('push hl')
              return output
  
          if int(op2) > 1:
              label = tmp_label()
              output.append('ld b, %s' % op2)
              output.append('%s:' % label)
              output.append('call __SHL32')
              output.append('djnz %s' % label)
          else:
              output.append('call __SHL32')
  
          output.append('push de')
          output.append('push hl')
          REQUIRES.add('shl32.asm')
          return output
  
      output = _8bit_oper(op2)
      output.append('ld b, a')
      output.extend(_32bit_oper(op1))
      label = tmp_label()
      output.append('%s:' % label)
      output.append('call __SHL32')
      output.append('djnz %s' % label)
      output.append('push de')
      output.append('push hl')
      REQUIRES.add('shl32.asm')
      return output
docs: Logical Left shift 32bit unsigned integers.
      The result is pushed onto the stack.
  
          Optimizations:
  
           * If 2nd operand is 0, do nothing