def decode(in_file, out_file=None, mode=None, quiet=0):
    """Decode uuencoded file"""

    close_in_file = False
    close_out_file = False

    #
    # Open the input file, if needed.
    #
    if in_file == '-':
        in_file = sys.stdin
    elif isinstance(in_file, basestring):
        close_in_file = True
        in_file = open(in_file)
    #
    # Read until a begin is encountered or we've exhausted the file
    #
    while True:
        hdr = in_file.readline()
        if not hdr:
            raise Error('No valid begin line found in input file')
        if not hdr.startswith('begin'):
            continue
        hdrfields = hdr.split(' ', 2)
        if len(hdrfields) == 3 and hdrfields[0] == 'begin':
            try:
                int(hdrfields[1], 8)
                break
            except ValueError:
                pass
    if out_file is None:
        out_file = hdrfields[2].rstrip()
        if os.path.exists(out_file):
            raise Error(out_file % 'Cannot overwrite existing file: %s')
    if mode is None:
        mode = int(hdrfields[1], 8)
    #
    # Open the output file
    #
    opened = False
    if out_file == '-':
        out_file = sys.stdout
    elif isinstance(out_file, basestring):
        close_out_file = True
        fp = open(out_file, 'wb')
        try:
            os.path.chmod(out_file, mode)
        except AttributeError:
            pass
        out_file = fp
        opened = True
    #
    # Main decoding loop
    #
    s = in_file.readline()
    while s and s.strip() != 'end':
        try:
            data = binascii.a2b_uu(s)
        except binascii.Error, v:
            # Workaround for broken uuencoders by /Fredrik Lundh
            nbytes = (((ord(s[0])-32) & 63) * 4 + 5) // 3
            data = binascii.a2b_uu(s[:nbytes])
            if not quiet:
                sys.stderr.write("Warning: %s\n" % v)
        out_file.write(data)
        s = in_file.readline()
    if not s:
        raise Error('Truncated input file')
    if opened:
        out_file.close()

    # Jython and other implementations requires files to be explicitly
    # closed if we don't want to wait for GC
    if close_in_file:
        in_file.close()
    if close_out_file:
        out_file.close()
dataset/ETHPy150Open azoft-dev-team/imagrium/env/Lib/uu.py/decode/swapped operands of `%`