def assign_quality_flags_l2(input):
    flag_code = {'INVALID': 1, 'WATER':2, 'LAND':4, 'CLOUD':8, 'CLOUD_AMBIGUOUS':8388608,
    			'CLOUD_MARGIN':16777216, 'SNOW_ICE':16, 'INLAND_WATER':32, 'TIDAL':64,
    			'COSMETIC': 128, 'SUSPECT':256, 'HISOLZEN':512, 'SATURATED':1024, 
    			'MEGLINT':2048, 'HIGHGLINT':4096, 'WHITECAPS':8192, 'ADJAC':16384, 'WV_FAIL':32768,
    			'PAR_FAIL':65536, 'AC_FAIL':131072, 'OC4ME_FAIL':262144, 'OCNN_FAIL':524288,
    			'KDM_FAIL':2097152, 'BPAC_ON':33554432, 'WHITE_SCATT':67108864,
    			'LOWRW':134217728, 'HIGHROW':268435456,'ANNOT_ANGSTROM': 4294967296, 
    			'ANNOT_AERO_B': 8589934592,'ANNOT_ABSO_D':17179869184, 'ANNOT_ACLIM':34359738368,
    			'ANNOT_ABSOA':68719476736, 'ANNOT_MIXR1':137438953472, 'ANNOT_DROUT':274877906944,
    			'ANNOT_TAU06':549755813888,'RWNEG_O1':1099511627776, 'RWNEG_O2':219902325555,
    			'RWNEG_O3':4398046511104,'RWNEG_O4':8796093022208,'RWNEG_O5': 17592186044416,
    			'RWNEG_O6':35184372088832,'RWNEG_O7':70368744177664,'RWNEG_O8':140737488355328,
    			'RWNEG_O9':281474976710656,'RWNEG_O10':562949953421312,'RWNEG_O11':1125899906842624,
    			'RWNEG_O12':2251799813685248,'RWNEG_O16':4503599627370496,
    			'RWNEG_O17':9007199254740992,'RWNEG_O18':18014398509481984, 
    			'RWNEG_O21':36028797018963968}


    flagListValues = list(flag_code.values())


    i = 0
    for names in flag_code.keys():
        value = flagListValues[i]
        sat_df_flagged[names] = (sat_df_flagged['satellite_WQSF'].astype(int) & value) > 0
        i += 1  