I'm sorry this isn't more detailed, but if you ask me some questions about this I can fill it out more. Any specific memory addresses mentioned are in relation to the MBox B5 S4 bin file which is also attached to this post for reference.
1) Find the DTC in the DTC table. The DTC is the Pxxxx value, and it is stored in hexadecimal, since all Pxxxx codes are actually already in hexadecimal.
2) Get the address of the DTC block: (address of the first of the four DTCs in the group).
3) Compute the DTC index: (address of DTC block - address of DTC table) / 8.
4) Find the value containing the DTC error code class for the DTC index: (DTC error code class table address + DTC index).
DTC Table:
There are two versions of the DTC table at addresses 0x812CC4 and 0x81324C, in blocks of four words (8 bytes). 0x812CC4 contains the manufacturer specific P-codes DTCs, 0x81324C contains the universal CARB p-codes. If you are reading DTCs with VCDS or NefMoto, then you are using the manufacturer specific P-code DTCs at 0x812CC4.
DTC Error Code Class Table:
DTC error code class table is at address 0x8106AD, in blocks of one byte.
For example, to find the error class that generates bank 1 post cat O2 sensor heater DTC:
1) 0x812CC4 is the address of the DTC table.
2) The first occurrence of DTC P1114 Bank 1 post cat O2 sensor heater is at address 0x812EDC in the DTC table. (0x812EDC - 0x812CC4) / 8 gives us 0x43 which is the DTC index in the DTC error class table.
3) 0x8106AD is the address of the DTC error code class table.
4) 0x43 is the DTC index of the post cat heater DTC.
5) 0x8106AD + 0x43 = 0x8106F0 => address of the byte value containing the bank 1 post cat O2 sensor heater error class.
An equation I wrote that means something:
( ( ( (DTC index) * 4 ) + [0 to 3] ) * 2 ) + ( DTC Table Address ) => DTC OBD Code
DO NOT BLINDLY ZERO ERROR CLASSES! Almost every DTC can be prevented by editing the appropriate maps. This is a last resort, or, alternately, if you wish to generate a DTC which is already disabled.