I'm guessing you could use a 'simple' python script to do this update but it would be no-turning-back sort of deal (no undo button).
Maybe something like this (and I'm sure there's a way to make this more efficient.. I'm just not the most python savvy)
import arcpy
from time import strftime
print 'Start Script: ' + strftime('%Y-%m-%d %H:%M:%S')
workspace = 'C:/Users/Name/Documents/GISData.gdb'
fc = 'FeatureClassName'
tbl = 'C:/Users/Name/Documents/TableName.csv'
arcpy.env.workspace = workspace
fieldsFC = ['Field1', 'Field2', 'Field3',
                'Field4', 'Field5', 'Field6',
                'Field7', 'Field8',
                'Field9', 'Field10']
fcrow = ['','','','','','','','','','']
tblrow = ['','','','','','','','','','']
counter = 0
try:
    with arcpy.da.SearchCursor(tbl, fieldsFC) as tblCursor:
        for tblrow in tblCursor:
            with arcpy.da.UpdateCursor(fc, fieldsFC) as fcCursor:
                fcrow = ['','','','','','','','','','']
                
                
                
                
                
                for fcrow in fcCursor:
                    if (str(tblrow[0]) == str(fcrow[0])
                        and str(tblrow[3]) == str(fcrow[3])):
                        fcrow[1] = tblrow[1]
                        fcrow[2] = tblrow[2]
                        fcrow[4] = tblrow[4]
                        fcrow[5] = tblrow[5]
                        fcrow[6] = tblrow[6]
                        fcrow[7] = tblrow[7]
                        fcrow[8] = tblrow[8]
                        fcrow[9] = tblrow[9]
                        print('Row number ' + str(fcrow[0]) + ' was updated.')
                        fcCursor.updateRow(fcrow)
                        counter = counter + 1
                        continue
except Exception:
    e =sys.exc_info()[1]
    print(e.args[0])
    arcpy.AddError(e.args[0])
except arcpy.ExcecuteError:
    print(arcpy.GetMessages(2))
print 'Updated ' + str(counter) + ' rows.'
print 'Finshed Script: ' + strftime('%Y-%m-%d %H:%M:%S')