Let me first ask when scanning DTC I might see P1103
008 vs P1103
035.
How do I follow the disassembly to determine how the 008 is set vs the 035?
And logic to set DTCs in general:
I can find WHERE (in which func) P1103 is set:
mov r12, #45h
calls 84h, SetDTCME75_846b3e
But I don't understand WHY it's set solely based on the disassembled code.
I get that the setDTC func uses the r12 and [r0+2]:

And that r12 is set right before calling the setDTC func, but the [r0xxx] statements confuse me. They're different before each setDTC func call:

And I get how to follow the decision tree to get to where [r0xxx] are set, but I can't match when/where/which [r0xxxx] is set to which [r0xxxx] is used for each setDTC func call. And what are the
bfldh r2, #DTCFieldA_H0|DTCFieldB_H1|DTCFieldC_H2|DTCFieldD_H3, #DTCFieldD_H3
bfldl r4, #DTCBit_L1, #DTCBit_L1
calls doing exactly?


Where #45h Error Class is used, what do I look for to find what is being passed into the setDTC func as [r0+2] ?
snippet from first img:
mov r4, [r0+2]
mov [-r0], r4
mov r12, #45h
calls 84h, SetDTCME75_846b3e
Thanks in advance. I know I'm asking for a lot.
Rey