The 2 batch fire events are likely the first and second prime pulse widths. The are calculated by fuel mass needed to soak the cylinders with fuel. I looked at the code and on first and second low res pulse the inj are triggered by special crank fuel tables], after that it uses fuel based on airflow[ sequential, based on your observation. For spark, the est line goes low and high, charging and firing the coil[high time=charge the coil, low=fire the coil]. It will beneficial to know the relation between est pulsing and low res pulse number at crank. There might be some syncro needed for tpu to get the pattern.