Advice needed for separating 3-channel signals
I understand that you receive A, B, and C and you want to separate it into A1, A2; B1, B2; C1, C2. 

From this, you can do the following: Model your expected signal A1 as some pulse shape (here, I assume its a tanh function, which is close to your example). Then, normally you can perform matched filtering on the received signal to find peaks at the position of your two pulses. However, since your pulses are non-finite (i.e. they remain constant non-zero), I decided to use their derivative as the signal of interest. Then, you can find something like this:

n = -10:0.01:40;

noise = 0.5;

ntest = -5:0.01:5;
testpulse = tanh(ntest);
testpulse_diff = diff(testpulse);

% Amplitude of first pulse
A1 = -4;
start1 = 0;
% Amplitude of second pulse
A2 = 11;
start2 = 3;
% The input signal (sum + some noise)
sumOfBoth = A1*tanh(n-start1) + A2*tanh(n-start2) + sqrt(noise)*randn(1, length(n));

subplot(2,2,1);
plot(n, sumOfBoth)
title('sum signal');

subplot(2,2,2);
plot(testpulse_diff);
title('Diff of required pulse');

subplot(2,2,3);
plot(diff(sumOfBoth));
title('1st derivative of input');

subplot(2,2,4);
metric = xcorr(diff(sumOfBoth), testpulse_diff);
plot(metric);
hold on;
[peaks,locs] = findpeaks(abs(metric),'MinPeakHeight',0.01,'MinPeakDistance',100);

plot(locs, metric(locs), 'or');
hold off;

title('Metric with the detected peaks that correspond to the two signals');


Which gives you the following output:



From the two detected peaks you can derive both the amplitude and the time position of the both peaks. Note that, even though the first derivative of your input signal looks like pure noise, it contains all the information that is needed. This information is extracted by means of the cross-correlation between the expected and the received peak.