-
Notifications
You must be signed in to change notification settings - Fork 8
/
needles.c
2861 lines (2535 loc) · 167 KB
/
needles.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
/*
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
IN THE SOFTWARE.
*/
#include "needles.h"
/* TODO: Replace these mask/needles with config */
unsigned char needle_TVKUP[] =
{
0xE1, 0x28, // movb rl4, #2
0xF7, 0xF8, XXXX, XXXX, // movb byte_XXXX, rl4
0xE1, 0x2A, // movb rl5, #2
0xF7, 0xFA, XXXX, XXXX, // movb byte_XXXX, rl5
0xE1, 0x26, // movb rl3, #2
0xF7, 0xF6, XXXX, XXXX, // movb byte_XXXX, rl3
0xD7, 0x40, XXXX, XXXX, // extp #XXXXh, #1
0xF3, 0xF4, XXXX, XXXX, // movb rl2, TVERBR
0xF7, 0xF4, XXXX, XXXX, // movb byte_XXXX, rl2
0xF3, 0xF2, XXXX, XXXX, // movb rl1, TVKUP
0xF7, 0xF2, XXXX, XXXX, // movb ram_TVKUP, rl1
0xDB, 0x00 // rets
};
unsigned char mask_TVKUP[] =
{
MASK, MASK, // movb rl4, #2
MASK, MASK, XXXX, XXXX, // movb byte_XXXX, rl4
MASK, MASK, // movb rl5, #2
MASK, MASK, XXXX, XXXX, // movb byte_XXXX, rl5
MASK, MASK, // movb rl3, #2
MASK, MASK, XXXX, XXXX, // movb byte_XXXX, rl3
MASK, MASK, XXXX, XXXX, // extp #XXXXh, #1 +24
MASK, MASK, XXXX, XXXX, // movb rl2, TVERBR +28
MASK, MASK, XXXX, XXXX, // movb byte_XXXX, rl2
MASK, MASK, XXXX, XXXX, // movb rl1, TVKUP +36
MASK, MASK, XXXX, XXXX, // movb ram_TVKUP, rl1
MASK, MASK // rets
};
unsigned int needle_TVKUP_len = sizeof(needle_TVKUP);
unsigned char needle_LRSTPZA[] =
{
0x0D, 0x1D,
0xF2, 0xF4, XXXX, XXXX, // mov r4, LRSTPZA
0x7C, 0x14, // shr r4, #1
0x42, 0xF4, XXXX, XXXX, // cmp r4, word_XXXX
0x8D, 0x06, // jmpr cc_C, loc_XXXX
0xC2, 0xF4, XXXX, XXXX, // movbz r4, byte_XXXX
0x5C, 0x54, // shl r4, #5
0xF6, 0xF4, XXXX, XXXX, // mov word_XXXX, r4
0x0D, 0x06 // jmpr cc_UC, loc_XXXX
};
unsigned char mask_LRSTPZA[] =
{
MASK, MASK,
MASK, MASK, XXXX, XXXX, // mov r4, LRSTPZA
MASK, MASK, // shr r4, #1
MASK, MASK, XXXX, XXXX, // cmp r4, word_XXXX
MASK, MASK, // jmpr cc_C, loc_XXXX
MASK, MASK, XXXX, XXXX, // movbz r4, byte_XXXX
MASK, MASK, // shl r4, #5
MASK, MASK, XXXX, XXXX, // mov word_XXXX, r4
MASK, MASK // jmpr cc_UC, loc_XXXX
};
unsigned int needle_LRSTPZA_len = sizeof(needle_LRSTPZA);
unsigned char needle_ESKONF[] =
{
// 0x9A, 0x23, XXXX, XXXX, // jnb word_FD46.14, Get_ESKONF_L
0xE6, 0xF4, XXXX, XXXX, // mov r4, #prokon_tbl_1
0xF6, 0xF4, XXXX, XXXX, // mov dekon_v, r4
0xE6, 0xF5, XXXX, XXXX, // mov r5, #ESKONF_R ; ESKONF_R : Undefined [DEKON]
0xF6, 0xF5, XXXX, XXXX, // mov ram_ESKONF_p, r5
0xDB, 0x00, // rets
0xE6, 0xF4, XXXX, XXXX, // mov r4, #prokon_tbl_2
0xF6, 0xF4, XXXX, XXXX, // mov dekon_v, r4
0xE6, 0xF5, XXXX, XXXX, // mov r5, #ESKONF_L ; ESKONF_L : Undefined [DEKON]
0xF6, 0xF5, XXXX, XXXX, // mov ram_ESKONF_p, r5
0xDB, 0x00 // rets
};
unsigned char mask_ESKONF[] =
{
// MASK, MASK, XXXX, XXXX, // jnb word_FD46.14, Get_ESKONF_L
MASK, MASK, XXXX, XXXX, // mov r4, #prokon_tbl_1
MASK, MASK, XXXX, XXXX, // mov dekon_v, r4
MASK, MASK, XXXX, XXXX, // mov r5, #ESKONF_R ; ESKONF_R : Undefined [DEKON]
MASK, MASK, XXXX, XXXX, // mov ram_ESKONF_p, r5
MASK, MASK, // rets
MASK, MASK, XXXX, XXXX, // mov r4, #prokon_tbl_2
MASK, MASK, XXXX, XXXX, // mov dekon_v, r4
MASK, MASK, XXXX, XXXX, // mov r5, #ESKONF_L ; ESKONF_L : Undefined [DEKON]
MASK, MASK, XXXX, XXXX, // mov ram_ESKONF_p, r5
MASK, MASK // rets
};
unsigned int needle_ESKONF_len = sizeof(needle_ESKONF);
unsigned char needle_CWKONFZ1[] =
{
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONFZ1 <---- CWKONFZ1
0x69, 0x81, // andb rl4, #1
0x3A, XXXX, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov CWKONFZ1_0.3, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONFZ1
0x69, 0x82, // andb rl4, #2
0x3A, XXXX, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov CWKONLS_0.6, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONFZ1
0x69, 0x84, // andb rl4, #4
0x3A, XXXX, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov CWKONFZ1_0.4, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONFZ1
0x67, 0xF8, 0x08, 0x00, // andb rl4, #8h
0x3A, XXXX, XXXX, XXXX, // bmovn USR0, Z
0x4A, XXXX, XXXX, XXXX, // bmov CWKONFZ1_0.8, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONFZ1
0x67, 0xF8, 0x40, 0x00, // andb rl4, #40h
0x3A, XXXX, XXXX, XXXX, // bmovn USR0, Z
0x4A, XXXX, XXXX, XXXX, // bmov CWKONFZ1_0.2, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONFZ1
0x67, 0xF8, 0x80, 0x00, // andb rl4, #80h
0x3A, XXXX, XXXX, XXXX, // bmovn USR0, Z
0x4A, XXXX, XXXX, XXXX, // bmov CWKONFZ1_0.0, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x69, 0x81, // andb rl4, #1
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.4, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x69, 0x82, // andb rl4, #2
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.2, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x69, 0x84, // andb rl4, #4
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD00.14, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x67, 0xF8, 0x08, 0x00, // andb rl4, #8
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.0, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x67, 0xF8, 0x10, 0x00, // andb rl4, #10h
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.5, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x67, 0xF8, 0x20, 0x00, // andb rl4, #20h ; ' '
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.3, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x67, 0xF8, 0x40, 0x00, // andb rl4, #40h ; '@'
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD00.15, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
0x67, 0xF8, 0x80, 0x00, // andb rl4, #80h ; 'Ç'
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.1, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWTF ; CWTF : Codewort fnr Konfiguration Temperaturfnhler [PROKON]
0x69, 0x81, // andb rl4, #1
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.10, USR0
};
unsigned char needle_CWKONABG[] =
{
0xF3, 0xF8, XXXX, XXXX, // movb rl4, CWERFIL ; CWERFIL : Codewort zur Auswahl Filtervar. fnr die Ausgabe von AS.-Fehler an das Scan Tool [PROKON]
0xF7, 0xF8, XXXX, XXXX, // movb cw_erfil, rl4 ; cw_erfil : Status Codewort Filtervariante fnr Ausgabe der AS-Fehler an GST [PROKON DTIP TCSORT]
0xF3, 0xFA, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
0x69, 0xA1, // andb rl5, #1
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD00.11, USR0
0xF3, 0xFA, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
0x69, 0xA2, // andb rl5, #2
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD00.12, USR0
0xF3, 0xFA, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
0x69, 0xA4, // andb rl5, #4
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.9, USR0
0xF3, 0xFA, XXXX, XXXX, // movb rl5, CWUHR ; CWUHR : Codewort fnr Uhr [PROKON]
0x69, 0xA1, // andb rl5, #1
0x3A, 0x88, XXXX, XXXX, // bmovn USR0, Z
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.12, USR0
};
unsigned char mask_CWKONABG[] =
{
MASK, MASK, XXXX, XXXX, // movb rl4, CWERFIL ; CWERFIL : Codewort zur Auswahl Filtervar. fnr die Ausgabe von AS.-Fehler an das Scan Tool [PROKON]
MASK, MASK, XXXX, XXXX, // movb cw_erfil, rl4 ; cw_erfil : Status Codewort Filtervariante fnr Ausgabe der AS-Fehler an GST [PROKON DTIP TCSORT]
MASK, MASK, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
MASK, MASK, // andb rl5, #1
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD00.11, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
MASK, MASK, // andb rl5, #2
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD00.12, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
MASK, MASK, // andb rl5, #4
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.9, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWUHR ; CWUHR : Codewort fnr Uhr [PROKON]
MASK, MASK, // andb rl5, #1
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.12, USR0
};
unsigned int needle_CWKONABG_len = sizeof(needle_CWKONABG);
unsigned char mask_CWKONFZ1[] =
{
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONFZ1
MASK, MASK, // andb rl4, #1
MASK, XXXX, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov CWKONFZ1_0.3, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONFZ1
MASK, MASK, // andb rl4, #2
MASK, XXXX, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov CWKONLS_0.6, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONFZ1
MASK, MASK, // andb rl4, #4h
MASK, XXXX, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov CWKONFZ1_0.4, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONFZ1
MASK, MASK, MASK, MASK, // andb rl4, #8h
MASK, XXXX, XXXX, XXXX, // bmovn USR0, Z
MASK, XXXX, XXXX, XXXX, // bmov CWKONFZ1_0.8, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONFZ1
MASK, MASK, MASK, MASK, // andb rl4, #40h
MASK, XXXX, XXXX, XXXX, // bmovn USR0, Z
MASK, XXXX, XXXX, XXXX, // bmov CWKONFZ1_0.8, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONFZ1
MASK, MASK, MASK, MASK, // andb rl4, #80h
MASK, XXXX, XXXX, XXXX, // bmovn USR0, Z
MASK, XXXX, XXXX, XXXX, // bmov CWKONFZ1_0.8, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, // andb rl4, #1
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.4, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, // andb rl4, #2
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.2, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, // andb rl4, #4
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD00.14, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, MASK, MASK, // andb rl4, #8
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.0, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, MASK, MASK, // andb rl4, #10h
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.5, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, MASK, MASK, // andb rl4, #20h ; ' '
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.3, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, MASK, MASK, // andb rl4, #40h ; '@'
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD00.15, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWKONLS ; CWKONLS : Codewort fnr Konfiguration Lambda Sonden [PROKON]
MASK, MASK, MASK, MASK, // andb rl4, #80h ; 'Ç'
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.1, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWTF ; CWTF : Codewort fnr Konfiguration Temperaturfnhler [PROKON]
MASK, MASK, // andb rl4, #1
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.10, USR0
MASK, MASK, XXXX, XXXX, // extp #206h, #1
MASK, MASK, XXXX, XXXX, // movb rl4, CWTKAT ; CWTKAT : [PROKON]
MASK, MASK, // andb rl4, #1
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.11, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, CWERFIL ; CWERFIL : Codewort zur Auswahl Filtervar. fnr die Ausgabe von AS.-Fehler an das Scan Tool [PROKON]
MASK, MASK, XXXX, XXXX, // movb cw_erfil, rl4 ; cw_erfil : Status Codewort Filtervariante fnr Ausgabe der AS-Fehler an GST [PROKON DTIP TCSORT]
MASK, MASK, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
MASK, MASK, // andb rl5, #1
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD00.11, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
MASK, MASK, // andb rl5, #2
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD00.12, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWKONABG ; CWKONABG : Codewort fnr Konfiguration Abgasbehandlung [PROKON]
MASK, MASK, // andb rl5, #4
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.9, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWUHR ; CWUHR : Codewort fnr Uhr [PROKON]
MASK, MASK, // andb rl5, #1
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.12, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWUHR ; CWUHR : Codewort fnr Uhr [PROKON]
MASK, MASK, // andb rl5, #2
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD02.13, USR0
MASK, MASK, XXXX, XXXX, // movb rl5, CWUHR ; CWUHR : Codewort fnr Uhr [PROKON]
MASK, MASK, // andb rl5, #4
MASK, MASK, XXXX, XXXX, // bmovn USR0, Z
MASK, MASK, XXXX, XXXX, // bmov word_FD00.1, USR0
MASK, MASK, XXXX, XXXX // movbz r4, CDSWE ; CDSWE : Codewort DSWE abschalten (EURO-Codierung), CD..=0 -> keine Diagnose [PROKON]
};
unsigned int needle_CWKONFZ1_len = sizeof(needle_CWKONFZ1);
unsigned char me75x_needle[] =
{
0xF6, XXXX, XXXX, XXXX, // mov EntryTable_lkup_var1, r4
0xF6, XXXX, XXXX, XXXX, // mov EntryTable_lkup_var2, r5
0xE6, XXXX, XXXX, XXXX, // mov r4, #HugeEntryTable ; Probable Lookup Table
// 0xE6, XXXX, XXXX, XXXX, // mov r5, #206h
// 0xF6, XXXX, XXXX, XXXX, // mov idx_table_addr_dynamic, r4
// 0xF6, XXXX, XXXX, XXXX, // mov EntryTable_lkup_var3, r5
// 0x9A, XXXX, XXXX, XXXX, // jnb PROKON.14, loc_82E774
};
unsigned int me75x_needle_len = sizeof( me75x_needle);
unsigned char me75x_mask[] =
{
MASK, XXXX, MASK, MASK, // mov EntryTable_lkup_var1, r4 [+2]
MASK, XXXX, MASK, MASK, // mov EntryTable_lkup_var2, r5 [+6]
MASK, XXXX, XXXX, XXXX, // mov r4, #HugeEntryTable ; Probable Lookup Table//
// MASK, XXXX, XXXX, XXXX, // mov r5, #206h
// MASK, XXXX, MASK, MASK, // mov idx_table_addr_dynamic, r4 [+18]
// MASK, XXXX, MASK, MASK, // mov EntryTable_lkup_var3, r5 [+22]
// MASK, XXXX, XXXX, XXXX, // jnb PROKON.14, loc_82E774
};
const unsigned char meinfo_needle[] =
{
0xF6, 0xF0, // mov
0x40, 0xE2,
0xF6, 0xF0, // mov
0x40, 0xE2 //
// 0xF6, 0xF4, XXXX, XXXX, // mov EntryTable_lkup_var1, r4
// 0xF6, 0xF5, XXXX, XXXX, // mov EntryTable_lkup_var2, r5
// 0xE6, 0xF4, XXXX, XXXX, // mov r4, #HugeEntryTable ; Probable Lookup Table
// 0xE6, 0xF5, XXXX, XXXX, // mov r5, #206h
// 0xF6, 0xF4, XXXX, XXXX, // mov idx_table_addr_dynamic, r4
// 0xF6, 0xF5, XXXX, XXXX, // mov EntryTable_lkup_var3, r5
// 0x9A, 0x23, XXXX, XXXX, // jnb PROKON.14, loc_82E774
// 0xE7, 0xF8, 0x00, 0x00, // movb rl4, #11h
// 0xF7, 0xF8, XXXX, XXXX, // movb byte_E20A, rl4
// 0x0D, XXXX, // jmpr cc_UC, loc_82E77C
// 0xE7, 0xF8, 0x14, 0x00, // movb rl4, #14h
// 0xF7, 0xF8, XXXX, XXXX, // movb byte_E20A, rl4
// 0xE6, 0xF4, XXXX, XXXX, // mov r4, #0E922h
// 0xE6, 0xF5, 0x82, 0x00, // mov r5, #82h ; 'é'
// 0xF6, 0xF4, XXXX, XXXX, // mov word_E232, r4
// 0xF6, 0xF5, XXXX, XXXX, // mov word_E234, r5
// 0xDB, 0x00, // rets
};
unsigned int meinfo_needle_len = sizeof( meinfo_needle);
const unsigned char meinfo_mask[] = {
0xFF, 0xF0,
0xF0, 0xFF,
0xFF, 0xF0,
0xF0, 0xFF
// MASK, MASK, XXXX, XXXX, // mov EntryTable_lkup_var1, r4
// MASK, MASK, XXXX, XXXX, // mov EntryTable_lkup_var2, r5
// MASK, MASK, XXXX, XXXX, // mov r4, #HugeEntryTable ; Probable Lookup Table//
// MASK, MASK, XXXX, XXXX, // mov r5, #206h
// MASK, MASK, XXXX, XXXX, // mov idx_table_addr_dynamic, r4
// MASK, MASK, XXXX, XXXX, // mov EntryTable_lkup_var3, r5
// MASK, MASK, XXXX, XXXX, // jnb PROKON.14, loc_82E774
// MASK, MASK, XXXX, XXXX, // movb rl4, #11h
// MASK, MASK, XXXX, XXXX, // movb byte_E20A, rl4
//MASK, XXXX, // jmpr cc_UC, loc_82E77C
// MASK, MASK, XXXX, XXXX, // movb rl4, #14h
// MASK, MASK, XXXX, XXXX, // movb byte_E20A, rl4
// MASK, MASK, XXXX, XXXX, // mov r4, #0E922h
// MASK, MASK, XXXX, XXXX, // mov r5, #82h ; 'é'
// MASK, MASK, XXXX, XXXX, // mov word_E232, r4
// MASK, MASK, XXXX, XXXX, // mov word_E234, r5
// MASK, MASK, // rets
};
unsigned char needle_NWS[] =
{
0xE6, 0xFC, XXXX, XXXX, // mov r12, #KFNWWL ; +2 Val : Map fur Kennfeld Nockenwellensteuerung im Warmlauf
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h ; +4 Seg :
0xC2, 0xFE, XXXX, XXXX, // movbz r14, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
0xC2, 0xFF, XXXX, XXXX, // movbz r15, rlsnwtm ; rlsnwtm : rel.Sollfnllung zur Adressierung von KFNWS gewichtet mit tmot [NWS]
0xDA, XXXX, XXXX, XXXX, // calls 82h, Lookup_map ; References a lookupM table
0xF7, 0xF8, XXXX, XXXX, // movb nwskf, rl4 ; nwskf : Ergebniss der KFNW-Interpolation [NWS]
0x0D, XXXX, // jmpr cc_UC, nws_func
0xE6, 0xFC, XXXX, XXXX, // mov r12, #KFNW ; Map fur Kennfeld Nockenwellensteuerung
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h
0xC2, 0xFE, XXXX, XXXX, // movbz r14, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
0xC2, 0xFF, XXXX, XXXX, // movbz r15, rlsnwtm ; rlsnwtm : rel.Sollfnllung zur Adressierung von KFNWS gewichtet mit tmot [NWS]
0xDA, XXXX, XXXX, XXXX, // calls 82h, Lookup_map ; References a lookupM table
0xF7, 0xF8, XXXX, XXXX, // movb nwskf, rl4 ; nwskf : Ergebniss der KFNW-Interpolation [NWS]
0xF3, 0xF8, XXXX, XXXX, // movb rl4, nwskf ; nwskf : Ergebniss der KFNW-Interpolation [NWS]
0xD7, 0x40, XXXX, XXXX, // extp #206h, #1
0x43, 0xF8, XXXX, XXXX // cmpb rl4, NWSOS ; NWSOS : Nockenwellensteuerung obere Schaltschwelle [NWS]
};
unsigned char mask_NWS[] =
{
MASK, MASK, XXXX, XXXX, // mov r12, #KFNWWL ; Map fur Kennfeld Nockenwellensteuerung im Warmlauf
MASK, MASK, XXXX, XXXX, // mov r13, #206h
MASK, MASK, XXXX, XXXX, // movbz r14, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
MASK, MASK, XXXX, XXXX, // movbz r15, rlsnwtm ; rlsnwtm : rel.Sollfnllung zur Adressierung von KFNWS gewichtet mit tmot [NWS]
MASK, XXXX, XXXX, XXXX, // calls 82h, Lookup_map ; References a lookupM table
MASK, MASK, XXXX, XXXX, // movb nwskf, rl4 ; nwskf : Ergebniss der KFNW-Interpolation [NWS]
MASK, XXXX, // jmpr cc_UC, nws_func
MASK, MASK, XXXX, XXXX, // mov r12, #KFNW ; Map fur Kennfeld Nockenwellensteuerung
MASK, MASK, XXXX, XXXX, // mov r13, #206h
MASK, MASK, XXXX, XXXX, // movbz r14, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
MASK, MASK, XXXX, XXXX, // movbz r15, rlsnwtm ; rlsnwtm : rel.Sollfnllung zur Adressierung von KFNWS gewichtet mit tmot [NWS]
MASK, XXXX, XXXX, XXXX, // calls 82h, Lookup_map ; References a lookupM table
MASK, MASK, XXXX, XXXX, // movb nwskf, rl4 ; nwskf : Ergebniss der KFNW-Interpolation [NWS]
MASK, MASK, XXXX, XXXX, // movb rl4, nwskf ; nwskf : Ergebniss der KFNW-Interpolation [NWS]
MASK, MASK, XXXX, XXXX, // extp #206h, #1
MASK, MASK, XXXX, XXXX, // cmpb rl4, NWSOS ; NWSOS : Nockenwellensteuerung obere Schaltschwelle [NWS]
};
unsigned int needle_NWS_len = sizeof(needle_NWS);
unsigned char needle_PROKON[] =
{
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.14, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
0x43, 0xF8, XXXX, XXXX, // cmpb rl4, NSWO1 ; NSWO1 : Drehzahlschwelle 1 Umschaltg. zur Rechenzeitersparnis [PROKON]
0xFD, 0x02, // jmpr cc_ULE, loc_xxxxx
0x6F, 0x88, // bset USR0
0x0D, 0x01, // jmpr cc_UC, loc_xxxxx
0x6E, 0x88, // bclr USR0
0x4A, 0x88, XXXX, XXXX, // bmov word_FD02.7, USR0
0xF3, 0xF8, XXXX, XXXX, // movb rl4, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
0x43, 0xF8, XXXX, XXXX, // cmpb rl4, NSWO2 ; NSWO2 : Drehzahlschwelle 2 Umschaltg. zur Rechenzeitersparnis [PROKON]
0xFD, 0x02, // jmpr cc_ULE, loc_xxxxx
0x6F, 0x88, // bset USR0
0x0D, 0x01 // jmpr cc_UC, loc_xxxxx
};
unsigned char mask_PROKON[] =
{
MASK, MASK, XXXX, XXXX, // bmov word_FD02.14, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
MASK, MASK, XXXX, XXXX, // cmpb rl4, NSWO1 ; NSWO1 : Drehzahlschwelle 1 Umschaltg. zur Rechenzeitersparnis [PROKON]
MASK, MASK, // jmpr cc_ULE, loc_xxxxx
MASK, MASK, // bset USR0
MASK, MASK, // jmpr cc_UC, loc_xxxxx
MASK, MASK, // bclr USR0
MASK, MASK, XXXX, XXXX, // bmov word_FD02.7, USR0
MASK, MASK, XXXX, XXXX, // movb rl4, nmot ; nmot : Motordrehzahl [BGNMOT ACIFI ADVE AEVABU AGK ARMD ATEV ATM BBFGR BBSAWE BBSTT BGAGR BGMSZS BGPU BGTABST BGTEMPK BGTEV DECJ DFFT DFFTK DFPM DKATLRS DKRNT DKRS DLSU DMDDLU DMDFON DMDLU DMDLUA DMDMIL DMDSTP DMDUE DNWS DTKAT DVFZ ESGRU ESNST ESSTT ESUK ESUKAS ESVW ESWL F1MD FUEDK FUEREG GGDPG GGDVE GGHFM GGKS GGLSU GGPED GK KOS KRDY KRKE KRRA KWP2000F KWPIOC LAKH LAMBTS LAMFAW LLRBB LLRNS LLRRM LRA LRAEB LRS LRSEB LRSHK LRSKA MDBAS MDFUE MDKOL MDMAX MDVERB MDZUL NWS PROKON RKTI RUNTIME SLS SSTB STADAP SU TEB UFNC VMAXMD WANWKW WFS ZUE ZUESZ ZWGRU ZWMIN ZWSTT ZWWL]
MASK, MASK, XXXX, XXXX, // cmpb rl4, NSWO2 ; NSWO2 : Drehzahlschwelle 2 Umschaltg. zur Rechenzeitersparnis [PROKON]
MASK, MASK, // jmpr cc_ULE, loc_xxxxx
MASK, MASK, // bset USR0
MASK, MASK // jmpr cc_UC, loc_xxxxx
};
unsigned int needle_PROKON_len = sizeof(needle_PROKON);
unsigned char needle_SSTB[] =
{
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_8100F4
0xC2, 0xFD, XXXX, XXXX, // movbz r13, rl
0xDA, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da
0xF6, 0xF4, XXXX, XXXX, // mov esst_srl08dmub, r4 ; esst_srl08dmub : [SSTB DMDDLU DMDLU DMDLUA DMDSTP]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_8100C2
0xC2, 0xFD, XXXX, XXXX, // movbz r13, nmot
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_snm12feub ; esst_snm12feub : [SSTB BGMSZS FUEDK MDFUE]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_snm12feub, r4 ; esst_snm12feub : [SSTB BGMSZS FUEDK MDFUE]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_8100B5
0xC2, 0xFD, XXXX, XXXX, // movbz r13, nmot
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_snm12esub ; esst_snm12esub : [SSTB ESWL ZWWL]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_snm12esub, r4 ; esst_snm12esub : [SSTB ESWL ZWWL]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_810106
0xC2, 0xFD, XXXX, XXXX, // movbz r13, rl ; rl : relative Luftfnllung
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_srl12esub ; esst_srl12esub : [SSTB ESWL]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_srl12esub, r4 ; esst_srl12esub : [SSTB ESWL]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #Y_AXIS_12_CELLS
0xF2, 0xFD, XXXX, XXXX, // mov r13, anztib_w ; anztib_w : ti-EinspritzzShler mit Begrenzung [ESNST ESWL MDFUE SSTB]
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_san12esuw ; esst_san12esuw : [SSTB ESNST]
0xDA, XXXX, XXXX, XXXX, // calls 0, sub_7642
0xF6, 0xF4, XXXX, XXXX, // mov esst_san12esuw, r4 ; esst_san12esuw : [SSTB ESNST]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #Y_AXIS_CELLS
0xF2, 0xFD, XXXX, XXXX, // mov r13, nmot_w ; nmot_w :
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_snm16opuw ; esst_snm16opuw : [SSTB MDBAS MDMAX]
0xDA, XXXX, XXXX, XXXX, // calls 0, sub_7642
0xF6, 0xF4, XXXX, XXXX, // mov esst_snm16opuw, r4 ; esst_snm16opuw : [SSTB MDBAS MDMAX]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_8100A3
0xC2, 0xFD, XXXX, XXXX, // movbz r13, nmot ; nmot
0xDA, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
0xF6, 0xF4, XXXX, XXXX, // mov esst_snm08opub, r4 ; esst_snm08opub : [SSTB MDKOL MDZUL]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_810162
0xC2, 0xFD, XXXX, XXXX, // movbz r13, wped ; wped : Normierter Fahrpedalwinkel [GGPED ADVE BGDVE DFFT KOS MDKOL MDZUL NMAXMD RUNTIME SSTB]
0xDA, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
0xF6, 0xF4, XXXX, XXXX, // mov esst_swp08opub, r4 ; esst_swp08opub : [SSTB MDZUL]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #Y_AXIS_UPM16_NUM <--------------------------------------------- *This is Y_AXIS fields for swp08opub (as referenced by KFZW table!)
0xC2, 0xFD, XXXX, XXXX, // movbz r13, nmot ; nmot
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_snm16zuub ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_snm16zuub, r4 ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #KFZW_Y_AXIS
0xC2, 0xFD, XXXX, XXXX, // movbz r13, rl ;
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_srl12zuub ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_srl12zuub, r4 ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #byte_81008A
0xC2, 0xFD, XXXX, XXXX, // movbz r13, nmot ;
0xDA, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
0xF6, 0xF4, XXXX, XXXX, // mov esst_snm06lsub, r4 ; esst_snm06lsub : [SSTB LRS]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #byte_8100ED
0xC2, 0xFD, XXXX, XXXX, // movbz r13, rl
0xDA, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
0xF6, 0xF4, XXXX, XXXX, // mov esst_srl06lsub, r4 ; esst_srl06lsub : [SSTB LRS]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_810064
0xC2, 0xFD, XXXX, XXXX, // movbz r13, kstaa ; kstaa : Aktueller Startmengenadaptionsfaktor [STADAP ESNST ESSTT SSTB]
0xDA, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da
0xF6, 0xF4, XXXX, XXXX, // mov esst_sks06esub, r4 ; esst_sks06esub : [SSTB ESNST]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #unk_812B12
0xF2, 0xFD, XXXX, XXXX, // mov r13, mkfanb_w ; mkfanb_w : Kupplungsmoment aus begrenztem Fahrerwunsch [MDFAW SSTB]
0xDA, XXXX, XXXX, XXXX, // calls 0, sub_7590
0xF6, 0xF4, XXXX, XXXX, // mov esst_smk206mdsw, r4 ; esst_smk206mdsw : [SSTB MDFAW]
0xF3, 0xF8, XXXX, XXXX, // movb rl4, gangi ; gangi : Ist-Gang [BBGANG AGK ARMD BBFGR BBSAWE F1MD FGRAUS FGRMD KOS KWPDATR LLRBB MDFAW MDMIN MDWAN NMAXMD SSTB ZWMIN]
0x3D, XXXX, // jmpr cc_NZ, loc_82B184
0xF6, 0x8E, XXXX, XXXX, // mov esst_sga08mdub, ZEROS ; esst_sga08mdub : [SSTB MDFAW NMAXMD]
0xDB, 0x00 // rets
};
unsigned char mask_SSTB[] =
{
MASK, MASK, XXXX, XXXX, // mov r12, #SRL08DMUB
MASK, MASK, XXXX, XXXX, // movbz r13, rl
MASK, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da
MASK, MASK, XXXX, XXXX, // mov esst_srl08dmub, r4 ; esst_srl08dmub : [SSTB DMDDLU DMDLU DMDLUA DMDSTP]
MASK, MASK, XXXX, XXXX, // mov r12, #SNM12FEUB
MASK, MASK, XXXX, XXXX, // movbz r13, nmot
MASK, MASK, XXXX, XXXX, // mov r14, esst_snm12feub ; esst_snm12feub : [SSTB BGMSZS FUEDK MDFUE]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_snm12feub, r4 ; esst_snm12feub : [SSTB BGMSZS FUEDK MDFUE]
MASK, MASK, XXXX, XXXX, // mov r12, #SNM12ESUB
MASK, MASK, XXXX, XXXX, // movbz r13, nmot
MASK, MASK, XXXX, XXXX, // mov r14, esst_snm12esub ; esst_snm12esub : [SSTB ESWL ZWWL]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_snm12esub, r4 ; esst_snm12esub : [SSTB ESWL ZWWL]
MASK, MASK, XXXX, XXXX, // mov r12, #SRL12ESUB
MASK, MASK, XXXX, XXXX, // movbz r13, rl ; rl : relative Luftfnllung
MASK, MASK, XXXX, XXXX, // mov r14, esst_srl12esub ; esst_srl12esub : [SSTB ESWL]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_srl12esub, r4 ; esst_srl12esub : [SSTB ESWL]
MASK, MASK, XXXX, XXXX, // mov r12, #SAN12ESUW
MASK, MASK, XXXX, XXXX, // mov r13, anztib_w ; anztib_w : ti-EinspritzzShler mit Begrenzung [ESNST ESWL MDFUE SSTB]
MASK, MASK, XXXX, XXXX, // mov r14, esst_san12esuw ; esst_san12esuw : [SSTB ESNST]
MASK, XXXX, XXXX, XXXX, // calls 0, sub_7642
MASK, MASK, XXXX, XXXX, // mov esst_san12esuw, r4 ; esst_san12esuw : [SSTB ESNST]
MASK, MASK, XXXX, XXXX, // mov r12, #SNM16OPUW
MASK, MASK, XXXX, XXXX, // mov r13, nmot_w ; nmot_w :
MASK, MASK, XXXX, XXXX, // mov r14, esst_snm16opuw ; esst_snm16opuw : [SSTB MDBAS MDMAX]
MASK, XXXX, XXXX, XXXX, // calls 0, sub_7642
MASK, MASK, XXXX, XXXX, // mov esst_snm16opuw, r4 ; esst_snm16opuw : [SSTB MDBAS MDMAX]
MASK, MASK, XXXX, XXXX, // mov r12, #SNM08OPUB
MASK, MASK, XXXX, XXXX, // movbz r13, nmot ; nmot
MASK, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
MASK, MASK, XXXX, XXXX, // mov esst_snm08opub, r4 ; esst_snm08opub : [SSTB MDKOL MDZUL]
MASK, MASK, XXXX, XXXX, // mov r12, #SWP08OPUB
MASK, MASK, XXXX, XXXX, // movbz r13, wped ; wped : Normierter Fahrpedalwinkel [GGPED ADVE BGDVE DFFT KOS MDKOL MDZUL NMAXMD RUNTIME SSTB]
MASK, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
MASK, MASK, XXXX, XXXX, // mov esst_swp08opub, r4 ; esst_swp08opub : [SSTB MDZUL]
MASK, MASK, XXXX, XXXX, // mov r12, #SNM16ZUUB <--------------------------------------------- *This is Y_AXIS fields for SNM16ZUUB (as referenced by KFZW table!)
MASK, MASK, XXXX, XXXX, // movbz r13, nmot ; nmot
MASK, MASK, XXXX, XXXX, // mov r14, esst_snm16zuub ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_snm16zuub, r4 ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
MASK, MASK, XXXX, XXXX, // mov r12, #SRL12ZUUB <--------------------------------------------- *This is X_AXIS fild for SRL12ZUBB (as referenced by KFZW table!)
MASK, MASK, XXXX, XXXX, // movbz r13, rl ;
MASK, MASK, XXXX, XXXX, // mov r14, esst_srl12zuub ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_srl12zuub, r4 ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
MASK, MASK, XXXX, XXXX, // mov r12, #SNM06LSUB
MASK, MASK, XXXX, XXXX, // movbz r13, nmot ;
MASK, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
MASK, MASK, XXXX, XXXX, // mov esst_snm06lsub, r4 ; esst_snm06lsub : [SSTB LRS]
MASK, MASK, XXXX, XXXX, // mov r12, #SRL06LSUB
MASK, MASK, XXXX, XXXX, // movbz r13, rl
MASK, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da ; 1D Lookup Word Arguments usually CTS related
MASK, MASK, XXXX, XXXX, // mov esst_srl06lsub, r4 ; esst_srl06lsub : [SSTB LRS]
MASK, MASK, XXXX, XXXX, // mov r12, #SKS06ESUB
MASK, MASK, XXXX, XXXX, // movbz r13, kstaa ; kstaa : Aktueller Startmengenadaptionsfaktor [STADAP ESNST ESSTT SSTB]
MASK, XXXX, XXXX, XXXX, // calls 0, WLookup1D_CTS_74da
MASK, MASK, XXXX, XXXX, // mov esst_sks06esub, r4 ; esst_sks06esub : [SSTB ESNST]
MASK, MASK, XXXX, XXXX, // mov r12, #SMK206MDSW
MASK, MASK, XXXX, XXXX, // mov r13, mkfanb_w ; mkfanb_w : Kupplungsmoment aus begrenztem Fahrerwunsch [MDFAW SSTB]
MASK, XXXX, XXXX, XXXX, // calls 0, sub_7590
MASK, MASK, XXXX, XXXX, // mov esst_smk206mdsw, r4 ; esst_smk206mdsw : [SSTB MDFAW]
MASK, MASK, XXXX, XXXX, // movb rl4, gangi ; gangi : Ist-Gang [BBGANG AGK ARMD BBFGR BBSAWE F1MD FGRAUS FGRMD KOS KWPDATR LLRBB MDFAW MDMIN MDWAN NMAXMD SSTB ZWMIN]
MASK, XXXX, // jmpr cc_NZ, loc_ZZZZ
MASK, MASK, XXXX, XXXX, // mov esst_sga08mdub, ZEROS ; esst_sga08mdub : [SSTB MDFAW NMAXMD]
MASK, MASK // rets
};
unsigned int needle_SSTB_len = sizeof(needle_SSTB);
unsigned char needle_SSTB2[] =
{
0xE6, 0xFC, XXXX, XXXX, // mov r12, #STM06__UB ; Probable Lookup Table
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h
0xC2, 0xFE, XXXX, XXXX, // movbz r14, tmot ; tmot : Motor-Temperatur [GGTFM ACIFI AGK ARMD ATM BBKHZ BBSAWE BBSTT BGDVE BGTEMPK DFFT DFFTK DFPM DLLR DLSH DMDLU DMDMIL DNWS DSLSLRS DTKAT DVFZ DWUC ESUK ESUKAS ESVW ESWL GGDPG GGKS HLSHK HLSU KHMD KOS KRDY KRRA KWPDATR LAKH LAMKO LLRBB LLRMR LLRNS LLRRM LRAEB LRS LRSEB MDBAS MDFAW MDFUE MDMIN MDRED MDVER MDVERAD MDZUL NMAXMD NWS SLS SSTB STADAP SU TEB TEBEB UFEING WANWKW ZUESZ ZWMIN ZWWL]
0xDA, XXXX, XXXX, XXXX, // calls 82h, LookupO_829b88 ; References a lookupO table
0xF6, 0xF4, XXXX, XXXX, // mov esst_stm06__ub, r4 ; esst_stm06__ub : [SSTB MDFUE MDVER ZWMIN]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #STM05SAUB ; Probable Lookup Table <------------------- Y-Axis for KFTVSA
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h
0xC2, 0xFE, XXXX, XXXX, // movbz r14, tmot ; tmot : Motor-Temperatur [GGTFM ACIFI AGK ARMD ATM BBKHZ BBSAWE BBSTT BGDVE BGTEMPK DFFT DFFTK DFPM DLLR DLSH DMDLU DMDMIL DNWS DSLSLRS DTKAT DVFZ DWUC ESUK ESUKAS ESVW ESWL GGDPG GGKS HLSHK HLSU KHMD KOS KRDY KRRA KWPDATR LAKH LAMKO LLRBB LLRMR LLRNS LLRRM LRAEB LRS LRSEB MDBAS MDFAW MDFUE MDMIN MDRED MDVER MDVERAD MDZUL NMAXMD NWS SLS SSTB STADAP SU TEB TEBEB UFEING WANWKW ZUESZ ZWMIN ZWWL]
0xDA, XXXX, XXXX, XXXX, // calls 82h, LookupO_829b88 ; References a lookupO table
0xF6, 0xF4, XXXX, XXXX, // mov esst_stm05saub, r4 ; esst_stm05saub : [SSTB BBSAWE]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #STW06MDUB ; Probable Lookup Table
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h
0xC2, 0xFE, XXXX, XXXX, // movbz r14, twan ; twan : +ltemperatur im Wandler [DUMMY MDWAN SSTB]
0xDA, XXXX, XXXX, XXXX, // calls 82h, LookupO_829b88 ; References a lookupO table
0xF6, 0xF4, XXXX, XXXX, // mov esst_stw06mdub, r4 ; esst_stw06mdub : [SSTB MDWAN]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #STS12ESUB ; Probable Lookup Table
0xC2, 0xFD, XXXX, XXXX, // movbz r13, tmst ; tmst : Motorstarttemperatur [GGTFM ATM BBKHZ BBSAWE BBTEGA BGTABST DDST DKATLRS DSLSLRS DTESK ESNST ESSTT ESUK ESVW ESWL KOS LLRNS LRSEB SLS SSTB STADAP ZWMIN ZWSTT]
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_sts12esub ; esst_sts12esub : [SSTB ESNST ESWL]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_sts12esub, r4 ; esst_sts12esub : [SSTB ESNST ESWL]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #STA06ESUB ; Probable Lookup Table
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h
0xC2, 0xFE, XXXX, XXXX, // movbz r14, tans ; tans : Ansaugluft - Temperatur [GGTFA AGK ATM BBKHZ BBSTT BBTEGA BGAGR BGDVE BGTABST BGTEMPK DFFT DFPM DLLR DSLSLRS DTESK ESNST ESSTT GGHFM GGTFM HLSU KOS KWPDATR LLRNS LRAEB LRSEB MDVERB MDZUL NWS SLS SSTB SU TEB UFEING ZWSTT ZWWL]
0xF2, 0xFF, XXXX, XXXX, // mov r15, esst_sta06esub ; esst_sta06esub : [SSTB ESNST]
0xDA, XXXX, XXXX, XXXX, // calls 82h, LookupE_82956c ; References a lookupE table
#if 0
0xF6, 0xF4, XXXX, XXXX, // mov esst_sta06esub, r4 ; esst_sta06esub : [SSTB ESNST]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #STM12ESUB
0xC2, 0xFD, XXXX, XXXX, // movbz r13, tmot ; tmot : Motor-Temperatur [GGTFM ACIFI AGK ARMD ATM BBKHZ BBSAWE BBSTT BGDVE BGTEMPK DFFT DFFTK DFPM DLLR DLSH DMDLU DMDMIL DNWS DSLSLRS DTKAT DVFZ DWUC ESUK ESUKAS ESVW ESWL GGDPG GGKS HLSHK HLSU KHMD KOS KRDY KRRA KWPDATR LAKH LAMKO LLRBB LLRMR LLRNS LLRRM LRAEB LRS LRSEB MDBAS MDFAW MDFUE MDMIN MDRED MDVER MDVERAD MDZUL NMAXMD NWS SLS SSTB STADAP SU TEB TEBEB UFEING WANWKW ZUESZ ZWMIN ZWWL]
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_stm12esub ; esst_stm12esub : [SSTB ESWL LAMKO ZWWL]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_stm12esub, r4 ; esst_stm12esub : [SSTB ESWL LAMKO ZWWL]
0xE6, 0xFC, XXXX, XXXX, // mov r12, #STA12WLUB
0xC2, 0xFD, XXXX, XXXX, // movbz r13, tans ; tans : Ansaugluft - Temperatur [GGTFA AGK ATM BBKHZ BBSTT BBTEGA BGAGR BGDVE BGTABST BGTEMPK DFFT DFPM DLLR DSLSLRS DTESK ESNST ESSTT GGHFM GGTFM HLSU KOS KWPDATR LLRNS LRAEB LRSEB MDVERB MDZUL NWS SLS SSTB SU TEB UFEING ZWSTT ZWWL]
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_sta12wlub ; esst_sta12wlub : [SSTB ZWWL]
0xDA, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
0xF6, 0xF4, XXXX, XXXX, // mov esst_sta12wlub, r4 ; esst_sta12wlub : [SSTB ZWWL]
0xDB, 0x00 // rets
#endif
};
//stm05saub
unsigned char mask_SSTB2[] =
{
MASK, MASK, XXXX, XXXX, // mov r12, #STM06__UB ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r13, #206h
MASK, MASK, XXXX, XXXX, // movbz r14, tmot ; tmot : Motor-Temperatur [GGTFM ACIFI AGK ARMD ATM BBKHZ BBSAWE BBSTT BGDVE BGTEMPK DFFT DFFTK DFPM DLLR DLSH DMDLU DMDMIL DNWS DSLSLRS DTKAT DVFZ DWUC ESUK ESUKAS ESVW ESWL GGDPG GGKS HLSHK HLSU KHMD KOS KRDY KRRA KWPDATR LAKH LAMKO LLRBB LLRMR LLRNS LLRRM LRAEB LRS LRSEB MDBAS MDFAW MDFUE MDMIN MDRED MDVER MDVERAD MDZUL NMAXMD NWS SLS SSTB STADAP SU TEB TEBEB UFEING WANWKW ZUESZ ZWMIN ZWWL]
MASK, XXXX, XXXX, XXXX, // calls 82h, LookupO_829b88 ; References a lookupO table
MASK, MASK, XXXX, XXXX, // mov esst_stm06__ub, r4 ; esst_stm06__ub : [SSTB MDFUE MDVER ZWMIN]
MASK, MASK, XXXX, XXXX, // mov r12, #STM05SAUB ; Probable Lookup Table <---------------------------
MASK, MASK, XXXX, XXXX, // mov r13, #206h
MASK, MASK, XXXX, XXXX, // movbz r14, tmot ; tmot : Motor-Temperatur [GGTFM ACIFI AGK ARMD ATM BBKHZ BBSAWE BBSTT BGDVE BGTEMPK DFFT DFFTK DFPM DLLR DLSH DMDLU DMDMIL DNWS DSLSLRS DTKAT DVFZ DWUC ESUK ESUKAS ESVW ESWL GGDPG GGKS HLSHK HLSU KHMD KOS KRDY KRRA KWPDATR LAKH LAMKO LLRBB LLRMR LLRNS LLRRM LRAEB LRS LRSEB MDBAS MDFAW MDFUE MDMIN MDRED MDVER MDVERAD MDZUL NMAXMD NWS SLS SSTB STADAP SU TEB TEBEB UFEING WANWKW ZUESZ ZWMIN ZWWL]
MASK, XXXX, XXXX, XXXX, // calls 82h, LookupO_829b88 ; References a lookupO table
MASK, MASK, XXXX, XXXX, // mov esst_stm05saub, r4 ; esst_stm05saub : [SSTB BBSAWE]
MASK, MASK, XXXX, XXXX, // mov r12, #STW06MDUB ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r13, #206h
MASK, MASK, XXXX, XXXX, // movbz r14, twan ; twan : +ltemperatur im Wandler [DUMMY MDWAN SSTB]
MASK, XXXX, XXXX, XXXX, // calls 82h, LookupO_829b88 ; References a lookupO table
MASK, MASK, XXXX, XXXX, // mov esst_stw06mdub, r4 ; esst_stw06mdub : [SSTB MDWAN]
MASK, MASK, XXXX, XXXX, // mov r12, #STS12ESUB ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // movbz r13, tmst ; tmst : Motorstarttemperatur [GGTFM ATM BBKHZ BBSAWE BBTEGA BGTABST DDST DKATLRS DSLSLRS DTESK ESNST ESSTT ESUK ESVW ESWL KOS LLRNS LRSEB SLS SSTB STADAP ZWMIN ZWSTT]
MASK, MASK, XXXX, XXXX, // mov r14, esst_sts12esub ; esst_sts12esub : [SSTB ESNST ESWL]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_sts12esub, r4 ; esst_sts12esub : [SSTB ESNST ESWL]
MASK, MASK, XXXX, XXXX, // mov r12, #STA06ESUB ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r13, #206h
MASK, MASK, XXXX, XXXX, // movbz r14, tans ; tans : Ansaugluft - Temperatur [GGTFA AGK ATM BBKHZ BBSTT BBTEGA BGAGR BGDVE BGTABST BGTEMPK DFFT DFPM DLLR DSLSLRS DTESK ESNST ESSTT GGHFM GGTFM HLSU KOS KWPDATR LLRNS LRAEB LRSEB MDVERB MDZUL NWS SLS SSTB SU TEB UFEING ZWSTT ZWWL]
MASK, MASK, XXXX, XXXX, // mov r15, esst_sta06esub ; esst_sta06esub : [SSTB ESNST]
MASK, XXXX, XXXX, XXXX, // calls 82h, LookupE_82956c ; References a lookupE table
MASK, MASK, XXXX, XXXX, // mov esst_sta06esub, r4 ; esst_sta06esub : [SSTB ESNST]
MASK, MASK, XXXX, XXXX, // mov r12, #STM12ESUB
MASK, MASK, XXXX, XXXX, // movbz r13, tmot ; tmot : Motor-Temperatur [GGTFM ACIFI AGK ARMD ATM BBKHZ BBSAWE BBSTT BGDVE BGTEMPK DFFT DFFTK DFPM DLLR DLSH DMDLU DMDMIL DNWS DSLSLRS DTKAT DVFZ DWUC ESUK ESUKAS ESVW ESWL GGDPG GGKS HLSHK HLSU KHMD KOS KRDY KRRA KWPDATR LAKH LAMKO LLRBB LLRMR LLRNS LLRRM LRAEB LRS LRSEB MDBAS MDFAW MDFUE MDMIN MDRED MDVER MDVERAD MDZUL NMAXMD NWS SLS SSTB STADAP SU TEB TEBEB UFEING WANWKW ZUESZ ZWMIN ZWWL]
MASK, MASK, XXXX, XXXX, // mov r14, esst_stm12esub ; esst_stm12esub : [SSTB ESWL LAMKO ZWWL]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_stm12esub, r4 ; esst_stm12esub : [SSTB ESWL LAMKO ZWWL]
MASK, MASK, XXXX, XXXX, // mov r12, #STA12WLUB
MASK, MASK, XXXX, XXXX, // movbz r13, tans ; tans : Ansaugluft - Temperatur [GGTFA AGK ATM BBKHZ BBSTT BBTEGA BGAGR BGDVE BGTABST BGTEMPK DFFT DFPM DLLR DSLSLRS DTESK ESNST ESSTT GGHFM GGTFM HLSU KOS KWPDATR LLRNS LRAEB LRSEB MDVERB MDZUL NWS SLS SSTB SU TEB UFEING ZWSTT ZWWL]
MASK, MASK, XXXX, XXXX, // mov r14, esst_sta12wlub ; esst_sta12wlub : [SSTB ZWWL]
MASK, XXXX, XXXX, XXXX, // calls 0, rom_cpy_lookup
MASK, MASK, XXXX, XXXX, // mov esst_sta12wlub, r4 ; esst_sta12wlub : [SSTB ZWWL]
MASK, MASK // rets
};
unsigned int needle_SSTB2_len = sizeof(needle_SSTB2);
unsigned char needle_ZWGRU[] = {
0x88, 0x90, // mov [-r0], r9
0x88, 0x70, // mov [-r0], r7
0x88, 0x60, // mov [-r0], r6
0x28, 0x02, // sub r0, #2
0xF3, 0xF8, XXXX, XXXX, // movb rl4, fnwue
0x47, 0xF8, 0xFF, 0x00, // cmpb rl4, #0FFh
0x3D, 0x10, // jmpr cc_NZ, lookup_KFZW
0xE6, 0xFC, XXXX, XXXX, // mov r12, #KFZW2_CELLS ; KFZW2 : Znndwinkelkennfeld Variante 2 [ZWGRU]
0xE6, 0xFD, XXXX, XXXX, // mov r13, #SRL12ZUUB
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_snm16zuub ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
0xF2, 0xFF, XXXX, XXXX, // mov r15, esst_srl12zuub ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
0xDA, XXXX, XXXX, XXXX, // calls 0, Map_Lookup2D ; 2D Lookup Word Arguments usually Spark related
0xF1, 0xE8, // movb rl7, rl4
0xF7, 0xF8, XXXX, XXXX, // movb zwnws, rl4 ; zwnws : Grundznndwinkel mit Berncksichtigung von Nockenwellensteuerung [ZWGRU]
0xE1, 0x0C, // movb rl6, #0
0xEA, XXXX, XXXX, XXXX, // jmpa cc_UC, loc_XXXX
0xF3, 0xF8, XXXX, XXXX, // movb rl4, fnwue ; fnwue ZWGRU]
0x3D, 0x0F, // jmpr cc_NZ, lookup_KFZW2
0xE6, 0xFC, XXXX, XXXX, // mov r12, #KFZW_CELLS ; KFZW : Znndwinkelkennfeld [ZWGRU]
0xE6, 0xFD, XXXX, XXXX, // mov r13, #SRL12ZUUB
0xF2, 0xFE, XXXX, XXXX, // mov r14, esst_snm16zuub ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
0xF2, 0xFF, XXXX, XXXX, // mov r15, esst_srl12zuub ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
0xDA, XXXX, XXXX, XXXX, // calls 0, Map_Lookup2D ; 2D Lookup Word Arguments usually Spark related
0xF1, 0xC8, // movb rl6, rl4
0xF7, 0xF8, XXXX, XXXX, // movb zwnws, rl4 ; zwnws : Grundznndwinkel mit Berncksichtigung von Nockenwellensteuerung [ZWGRU]
0xE1, 0x0E // movb rl7, #0
};
unsigned char mask_ZWGRU[] = {
MASK, MASK, // mov [-r0], r9
MASK, MASK, // mov [-r0], r7
MASK, MASK, // mov [-r0], r6
MASK, MASK, // sub r0, #2
MASK, MASK, XXXX, XXXX, // movb rl4, fnwue
MASK, MASK, MASK, MASK, // cmpb rl4, #0FFh
MASK, MASK, // jmpr cc_NZ, lookup_KFZW
MASK, MASK, XXXX, XXXX, // mov r12, #KFZW2_CELLS ; KFZW2 : Znndwinkelkennfeld Variante 2 [ZWGRU]
MASK, MASK, XXXX, XXXX, // mov r13, #SRL12ZUUB
MASK, MASK, XXXX, XXXX, // mov r14, esst_snm16zuub ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
MASK, MASK, XXXX, XXXX, // mov r15, esst_srl12zuub ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
MASK, XXXX, XXXX, XXXX, // calls 0, Map_Lookup2D ; 2D Lookup Word Arguments usually Spark related
MASK, MASK, // movb rl7, rl4
MASK, MASK, XXXX, XXXX, // movb zwnws, rl4 ; zwnws : Grundznndwinkel mit Berncksichtigung von Nockenwellensteuerung [ZWGRU]
MASK, MASK, // movb rl6, #0
MASK, XXXX, XXXX, XXXX, // jmpa cc_UC, loc_XXXX
MASK, MASK, XXXX, XXXX, // movb rl4, fnwue ; fnwue ZWGRU]
MASK, MASK, // jmpr cc_NZ, lookup_KFZW2
MASK, MASK, XXXX, XXXX, // mov r12, #KFZW_CELLS ; KFZW : Znndwinkelkennfeld [ZWGRU]
MASK, MASK, XXXX, XXXX, // mov r13, #SRL12ZUUB
MASK, MASK, XXXX, XXXX, // mov r14, esst_snm16zuub ; esst_snm16zuub : [SSTB ZWGRU ZWMIN]
MASK, MASK, XXXX, XXXX, // mov r15, esst_srl12zuub ; esst_srl12zuub : [SSTB ZWGRU ZWMIN]
MASK, XXXX, XXXX, XXXX, // calls 0, Map_Lookup2D ; 2D Lookup Word Arguments usually Spark related
MASK, MASK, // movb rl6, rl4
MASK, MASK, XXXX, XXXX, // movb zwnws, rl4 ; zwnws : Grundznndwinkel mit Berncksichtigung von Nockenwellensteuerung [ZWGRU]
MASK, MASK // movb rl7, #0
};
unsigned int needle_ZWGRU_len = sizeof(needle_ZWGRU);
unsigned char needle_BBSAWE[] = {
0xF2, 0xF4, XXXX, XXXX, // mov r4, esst_snm08__ub ; esst_snm08__ub : [SSTB BBSAWE ZUE]
0x88, 0x40, // mov [-r0], r4
0xF2, 0xF5, XXXX, XXXX, // mov r5, esst_stm05saub ; esst_stm05saub : [SSTB BBSAWE]
0x88, 0x50, // mov [-r0], r5
0xE6, 0xFC, XXXX, XXXX, // mov r12, #KFTVSA ; Probable Lookup Table +14
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h ; Segment +18
0xE6, 0xFE, XXXX, XXXX, // mov r14, #SNM08__UB ; Probable Lookup Table +22
0xE6, 0xFF, XXXX, XXXX, // mov r15, #204h ; Segment +26
0xDA, XXXX, XXXX, XXXX, // calls 82h, Lookup_map ; References a lookupZ table
0x08, 0x04, // add r0, #4
0xF7, 0xF8, XXXX, XXXX, // movb byte_XXXX, rl4
0xF2, 0xF4, XXXX, XXXX, // mov r4, esst_snm08__ub ; esst_snm08__ub : [SSTB BBSAWE ZUE]
0x88, 0x40, // mov [-r0], r4
0xF2, 0xF5, XXXX, XXXX, // mov r5, esst_stm05saub ; esst_stm05saub : [SSTB BBSAWE]
0x88, 0x50, // mov [-r0], r5
0xE6, 0xFC, XXXX, XXXX, // mov r12, #KFTVSA0 ; Probable Lookup Table +52
0xE6, 0xFD, XXXX, XXXX, // mov r13, #206h
0xE6, 0xFE, XXXX, XXXX, // mov r14, #SNM08__UB ;
0xE6, 0xFF, XXXX, XXXX, // mov r15, #204h
0xDA, 0x82, XXXX, XXXX, // calls 82h, Lookup_map ; References a lookupZ table
0x08, 0x04, // add r0, #4
0xF7, 0xF8, XXXX, XXXX, // movb byte_XXXX, rl4
0xDB, 0x00 // rets
};
unsigned char mask_BBSAWE[] = {
MASK, MASK, XXXX, XXXX, // mov r4, esst_snm08__ub ; esst_snm08__ub : [SSTB BBSAWE ZUE]
MASK, MASK, // mov [-r0], r4
MASK, MASK, XXXX, XXXX, // mov r5, esst_stm05saub ; esst_stm05saub : [SSTB BBSAWE]
MASK, MASK, // mov [-r0], r5
MASK, MASK, XXXX, XXXX, // mov r12, #KFTVSA ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r13, #206h ; Segment
MASK, MASK, XXXX, XXXX, // mov r14, #SNM08__UB ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r15, #204h ; Segment
MASK, XXXX, XXXX, XXXX, // calls 82h, LookupZ_829d9c ; References a lookupZ table
MASK, MASK, // add r0, #4
MASK, MASK, XXXX, XXXX, // movb byte_3821B2, rl4
MASK, MASK, XXXX, XXXX, // mov r4, esst_snm08__ub ; esst_snm08__ub : [SSTB BBSAWE ZUE]
MASK, MASK, // mov [-r0], r4
MASK, MASK, XXXX, XXXX, // mov r5, esst_stm05saub ; esst_stm05saub : [SSTB BBSAWE]
MASK, MASK, // mov [-r0], r5
MASK, MASK, XXXX, XXXX, // mov r12, #KFTVSA0 ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r13, #206h
MASK, MASK, XXXX, XXXX, // mov r14, #SNM08__UB ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r15, #204h
MASK, MASK, XXXX, XXXX, // calls 82h, LookupZ_829d9c ; References a lookupZ table
MASK, MASK, // add r0, #4
MASK, MASK, XXXX, XXXX, // movb byte_3821B4, rl4
MASK, MASK // rets
};
unsigned int needle_BBSAWE_len = sizeof(needle_BBSAWE);
unsigned char needle_RKTI[] = {
0x9A, XXXX, XXXX, XXXX, // jnb word_FD74.2, skip_fkkvs_correction
0xF2, 0xF4, XXXX, XXXX, // mov r4, tevfa_w ; tevfa_w : effektive Einspritzzeit vor Feinabgleich (word) [RKTI]
0xF6, 0xF4, XXXX, XXXX, // mov tevfa_w_kge, r4 ; tevfa_w_kge : [RKTI]
0x88, 0x40, // mov [-r0], r4
0xC2, 0xF5, XXXX, XXXX, // movbz r5, nmot ; nmot
0x88, 0x50, // mov [-r0], r5
0xE6, 0xF4, XXXX, XXXX, // mov r4, #FKKVS_CELLS ; Probable Lookup Table
0xE6, 0xF5, XXXX, XXXX, // mov r5, #206h
0x88, 0x50, // mov [-r0], r5
0x88, 0x40, // mov [-r0], r4
0xE6, 0xF4, XXXX, XXXX, // mov r4, #FKKVS_Y_AXIS ; Probable Lookup Table
0xE6, 0xF5, XXXX, XXXX, // mov r5, #206h
0x88, 0x50, // mov [-r0], r5
0x88, 0x40, // mov [-r0], r4
0xD7, 0x40, XXXX, XXXX, // extp #206h, #1
0xC2, 0xFC, XXXX, XXXX, // movbz r12, FKKVS ; FKKVS : Korrekturfaktor Kraftstoffversorgungssystem [RKTI]
0xE6, 0xFD, XXXX, XXXX, // mov r13, #FKKVS_X_AXIS ; Probable Lookup Table
0xE6, 0xFE, XXXX, XXXX, // mov r14, #206h
0xD7, 0x40, XXXX, XXXX, // extp #206h, #1
0xC2, 0xFF, XXXX, XXXX, // movbz r15, FKKVS+1 ; FKKVS : Korrekturfaktor Kraftstoffversorgungssystem [RKTI]
0xDA, XXXX, XXXX, XXXX, // calls 82h, Lookup_map_x8y16c16
0x06, 0xF0, 0x0C, 0x00, // add r0, #0Ch
0xF6, 0xF4, XXXX, XXXX, // mov ftek_w, r4 ; ftek_w : Korrekturfaktor fnr effektive Einspritzzeit [RKTI]
0xDB, 0x00 // rets
};
unsigned char mask_RKTI[] = {
MASK, XXXX, XXXX, XXXX, // jnb word_FD74.2, skip_fkkvs_correction
MASK, MASK, XXXX, XXXX, // mov r4, tevfa_w ; tevfa_w : effektive Einspritzzeit vor Feinabgleich (word) [RKTI]
MASK, MASK, XXXX, XXXX, // mov tevfa_w_kge, r4 ; tevfa_w_kge : [RKTI]
MASK, MASK, // mov [-r0], r4
MASK, MASK, XXXX, XXXX, // movbz r5, nmot ; nmot
MASK, MASK, // mov [-r0], r5
MASK, MASK, XXXX, XXXX, // mov r4, #FKKVS_CELLS ; Probable Lookup Table +22
MASK, MASK, XXXX, XXXX, // mov r5, #206h +26
MASK, MASK, // mov [-r0], r5
MASK, MASK, // mov [-r0], r4
MASK, MASK, XXXX, XXXX, // mov r4, #FKKVS_Y_AXIS ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r5, #206h
MASK, MASK, // mov [-r0], r5
MASK, MASK, // mov [-r0], r4
MASK, MASK, XXXX, XXXX, // extp #206h, #1
MASK, MASK, XXXX, XXXX, // movbz r12, FKKVS ; FKKVS : Korrekturfaktor Kraftstoffversorgungssystem [RKTI]
MASK, MASK, XXXX, XXXX, // mov r13, #FKKVS_X_AXIS ; Probable Lookup Table
MASK, MASK, XXXX, XXXX, // mov r14, #206h
MASK, MASK, XXXX, XXXX, // extp #206h, #1
MASK, MASK, XXXX, XXXX, // movbz r15, FKKVS+1 ; FKKVS : Korrekturfaktor Kraftstoffversorgungssystem [RKTI]
MASK, XXXX, XXXX, XXXX, // calls 82h, Lookup_map_x8y16c16
MASK, MASK, MASK, MASK, // add r0, #0Ch
MASK, MASK, XXXX, XXXX, // mov ftek_w, r4 ; ftek_w : Korrekturfaktor fnr effektive Einspritzzeit [RKTI]
MASK, MASK // rets
};
unsigned int needle_RKTI_len = sizeof(needle_RKTI);
unsigned char needle_DFFTCNV[] = {
0x88, 0x90, // mov [-r0], r9
0x88, 0x60, // mov [-r0], r6
0x28, 0x02, // sub r0, #2
0xE6, 0xFC, 0xFF, 0x00, // mov r12, #0FFh
0xF2, 0xFD, XXXX, XXXX, // mov r13, rl_w ; rl_w : relative Luftfnllung (Word) [BGSRM BGRLG BGRLP DFFTCNV DSLSLRS FUEREG KRDY KWPDATR LRS MDBAS MDVER SSTB UFRLC VMAXMD]
0xF2, 0xFE, XXXX, XXXX, // mov r14, rlugd_w ; rlugd_w : Fnllung im ungedrosselten Zustand [MDMAX DFFTCNV]
0xDA, XXXX, XXXX, XXXX, // calls 0, TableScaler32by16bit_16bitRes_6c9c ; Table Scaler 32bit by 16bit Unsigned Divide - 16 bit result
0xF0, 0xC4, // mov r12, r4
0xF2, 0xFD, XXXX, XXXX, // mov r13, nmot_w ; nmot_w : Motordrehzahl [BGNMOT ACIFI ARMD BBGANG BGMSZS BGNG BGRLP BGSRM CAN DFFTCNV DHFM ESUK FUEDK GGDPG KHMD KWPDATR LLRRM LRS MDBAS MDFAW MDFUE MDKOL MDMIN MDNSTAB MDRED MDVER MDZW NMAXMD SSTB TC1MOD TEB]
0xF2, 0xFE, XXXX, XXXX, // mov r14, NMAX ; NMAX : Drehzahlbegrenzung [NMAXMD, DFFTCNV]
0xDA, XXXX, XXXX, XXXX, // calls 0, TableScaler32by16bit_16bitRes_6c9c ; Table Scaler 32bit by 16bit Unsigned Divide - 16 bit result
0xF0, 0x94, // mov r9, r4
0x46, 0xF9, 0xFF, 0x00, // cmp r9, #0FFh
0xFD, 0x03, // jmpr cc_ULE, loc_XXXX
0xE6, 0xF4, 0xFF, 0x00, // mov r4, #0FFh
0x0D, 0x01, // jmpr cc_UC, loc_XXX
0xF0, 0x49 // mov r4, r9
};
unsigned char mask_DFFTCNV[] = {
MASK, MASK, // mov [-r0], r9