Hi all,
in case anyone was wondering, this is what I came up with:
%% Data Processing
    %  This reads the TTTR event records
    outfile = [filename(1:length(filename)-4),'.txt'];
    fprintf(1,'Analyzing data from %s\n', outfile);
    fprintf(1,'This may take a few seconds...');
    Ofltime = 0;
    Counts = 0;
    TTTRData = fread(fid, [1 NumberOfRecords], 'uint32');
    TTTRProcessed = zeros(NumberOfRecords,5);
    %read values out of bitrecord for each photon and assimilate
    %accordinlgy
    position = ftell(fid)
    ValidA = bitand(bitshift(TTTRData(:),-30),ones(length(TTTRData),1)) == 1;
    CountsA = cumsum(ValidA);
    ChannelA = bitand(bitshift(TTTRData(:),-16),ones(length(TTTRData),1).*4095);
    %special record
    OfltimeA = cumsum(bitand(ChannelA(:),ones(length(TTTRData),1).*2048)./2048.*65536.*(~ValidA));
    TimeTagA = bitand(TTTRData(:),ones(length(TTTRData),1).*65535);
    TrueTimeA = (OfltimeA + TimeTagA).*TTTRGlobclock.*1e-9;
    RouteA = bitand(bitshift(TTTRData(:),-28),ones(length(TTTRData),1).*3);
    %zero unimportant data tags reduction
    ChannelA = ChannelA.*ValidA;
    TimeTagA = TimeTagA.*ValidA;
    RouteA = RouteA.*ValidA;
    TrueTimeA = TrueTimeA.*ValidA;
    CountsA = CountsA.*ValidA;
    %concatenate values for single matrix printing/saving
    TTTRProcessed = horzcat(CountsA,TimeTagA,TrueTimeA,ChannelA,RouteA);
    %removes non-data rows
    TTTRProcessed = TTTRProcessed(any(TTTRProcessed,2),:);
    if printTXT == 1
        fprintf(1,'Writing data to %s\n', outfile);
        fpout = fopen(outfile,'W');
        fprintf(fpout,'%7u\t%7u\t%11.7f\t%5u\t%2u\n',TTTRProcessed.');
        fclose(fid);
        fclose(fpout);
        fprintf(1,'\n%u photon records written to %s\n\n',max(CountsA),outfile);
    end
