They're automatically ordered by their reception time. You get timer readings a1, a2, a3, a4 from one microphone and b1, b2, b3, b4 from the second one. You mix these values together in the order they were received.
To compare, you calculate (b1 - a1) and compare to 0. Timer rollovers won't matter unless b1 and a1 are spaced apart by more than half a period of the timer. For example b1 = 0x0500 and a1 = 0xf300. You calculate (b1 - a1) = 0x1200 > 0. The timer rolled over, but it didn't hurt your calculations.
When you get them sorted, you get the reception order such as a1,b1,a2,b2 etc. Since high frequencies are removed, the numbers will be interleaved most of the time. You then get your triplets (b1-a1)/(a2 - a1), (b2-a2)/(a3-a1).
You roll along until you get two in a row for either a or b, say you've got
a1,b1,a2,b2,a3,b3,a4,a5,b4,a6,b5,a7,b6,a8,b7,a9
Either a4 or a5 is spurious. Now you need to re-synchronize. For that, you throw away numbers from around this anomaly. Your last good calculation was (b2-a2)/(a3-a1). Then you skip some and continue after the disturbance (b5-a6)/(a7-a6), then (b6-a7)/(a8-a7). See how the indices shifted. You now get b[n] paired with a[n+1].
Note that you cannot be sure that the next one (b7-a8)/(a9-a8) is correct until you receive b8. If, instead, you receive a10 before b8 then you've got two a-s (a9 and a10) in a row, so either a9 or a10 is spurious and needs to be excluded.
You do similar when you get two b-s in a row.