charm 0.0.1

ARM assembler & disassembler generated from the ARM exploration tools.
Documentation
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
#![allow(non_snake_case)]
#![allow(unused)]
use std::collections::HashMap;
use crate::error::Result;
use super::super::consts::*;
use super::super::instructions::*;
use super::super::instruction::Instruction;

pub fn encode(instr: &Instruction, buf: &mut Vec<u8>) -> Result<usize> {
    match instr.code {
        Code::Invalid => todo!(),
        Code::RSBS_r_A1_RRX => RsbsRA1Rrx::encode(instr, buf),
        Code::SETEND_A1 => SetendA1::encode(instr, buf),
        Code::USAT_A1_LSL => UsatA1Lsl::encode(instr, buf),
        Code::UXTH_A1 => UxthA1::encode(instr, buf),
        Code::LDRB_l_A1_post => LdrbLA1Post::encode(instr, buf),
        Code::RSC_r_A1 => RscRA1::encode(instr, buf),
        Code::PLI_r_A1_RRX => PliRA1Rrx::encode(instr, buf),
        Code::SUBS_i_A1 => SubsIA1::encode(instr, buf),
        Code::CRC32H_A1 => Crc32hA1::encode(instr, buf),
        Code::SHADD16_A1 => Shadd16A1::encode(instr, buf),
        Code::STC_A1_unind => StcA1Unind::encode(instr, buf),
        Code::UBFX_A1 => UbfxA1::encode(instr, buf),
        Code::USUB16_A1 => Usub16A1::encode(instr, buf),
        Code::LSR_MOV_r_A1 => LsrMovRA1::encode(instr, buf),
        Code::ASRS_MOVS_rr_A1 => AsrsMovsRrA1::encode(instr, buf),
        Code::LDC_l_A1_post => LdcLA1Post::encode(instr, buf),
        Code::SMLALTB_A1 => SmlaltbA1::encode(instr, buf),
        Code::SBCS_r_A1_RRX => SbcsRA1Rrx::encode(instr, buf),
        Code::LDMDA_A1 => LdmdaA1::encode(instr, buf),
        Code::MVN_rr_A1 => MvnRrA1::encode(instr, buf),
        Code::CLZ_A1 => ClzA1::encode(instr, buf),
        Code::LDMDB_A1 => LdmdbA1::encode(instr, buf),
        Code::LDRSB_i_A1_off => LdrsbIA1Off::encode(instr, buf),
        Code::SSAT_A1_LSL => SsatA1Lsl::encode(instr, buf),
        Code::LDRB_l_A1_off => LdrbLA1Off::encode(instr, buf),
        Code::LDC_l_A1_off => LdcLA1Off::encode(instr, buf),
        Code::ORR_r_A1_RRX => OrrRA1Rrx::encode(instr, buf),
        Code::BIC_r_A1_RRX => BicRA1Rrx::encode(instr, buf),
        Code::SVC_A1 => SvcA1::encode(instr, buf),
        Code::LDRSB_r_A1_pre => LdrsbRA1Pre::encode(instr, buf),
        Code::SMLADX_A1 => SmladxA1::encode(instr, buf),
        Code::SMLALS_A1 => SmlalsA1::encode(instr, buf),
        Code::ORRS_r_A1 => OrrsRA1::encode(instr, buf),
        Code::BL_i_A2 => BlIA2::encode(instr, buf),
        Code::LDRB_i_A1_post => LdrbIA1Post::encode(instr, buf),
        Code::B_A1 => BA1::encode(instr, buf),
        Code::CSDB_A1 => CsdbA1::encode(instr, buf),
        Code::CMP_rr_A1 => CmpRrA1::encode(instr, buf),
        Code::LDRSB_l_A1_off => LdrsbLA1Off::encode(instr, buf),
        Code::SBCS_rr_A1 => SbcsRrA1::encode(instr, buf),
        Code::UXTAH_A1 => UxtahA1::encode(instr, buf),
        Code::ADR_A1 => AdrA1::encode(instr, buf),
        Code::MLA_A1 => MlaA1::encode(instr, buf),
        Code::RSC_rr_A1 => RscRrA1::encode(instr, buf),
        Code::ESB_A1 => EsbA1::encode(instr, buf),
        Code::SEVL_A1 => SevlA1::encode(instr, buf),
        Code::STRBT_A2 => StrbtA2::encode(instr, buf),
        Code::LDC_i_A1_post => LdcIA1Post::encode(instr, buf),
        Code::ORRS_r_A1_RRX => OrrsRA1Rrx::encode(instr, buf),
        Code::UQSUB16_A1 => Uqsub16A1::encode(instr, buf),
        Code::EORS_rr_A1 => EorsRrA1::encode(instr, buf),
        Code::LDRH_i_A1_pre => LdrhIA1Pre::encode(instr, buf),
        Code::LDC_l_A1_pre => LdcLA1Pre::encode(instr, buf),
        Code::SMUSD_A1 => SmusdA1::encode(instr, buf),
        Code::RFEIA_A1_AS => RfeiaA1As::encode(instr, buf),
        Code::STR_i_A1_pre => StrIA1Pre::encode(instr, buf),
        Code::ADCS_r_A1_RRX => AdcsRA1Rrx::encode(instr, buf),
        Code::MVN_r_A1 => MvnRA1::encode(instr, buf),
        Code::LDA_A1 => LdaA1::encode(instr, buf),
        Code::SB_A1 => SbA1::encode(instr, buf),
        Code::CPS_A1_AS => CpsA1As::encode(instr, buf),
        Code::RSB_i_A1 => RsbIA1::encode(instr, buf),
        Code::STRT_A1 => StrtA1::encode(instr, buf),
        Code::MVNS_rr_A1 => MvnsRrA1::encode(instr, buf),
        Code::SASX_A1 => SasxA1::encode(instr, buf),
        Code::STRD_i_A1_pre => StrdIA1Pre::encode(instr, buf),
        Code::LDC_i_A1_off => LdcIA1Off::encode(instr, buf),
        Code::LDAH_A1 => LdahA1::encode(instr, buf),
        Code::SMULBT_A1 => SmulbtA1::encode(instr, buf),
        Code::SXTAB_A1 => SxtabA1::encode(instr, buf),
        Code::LDRH_l_A1_post => LdrhLA1Post::encode(instr, buf),
        Code::MOV_r_A1_RRX => MovRA1Rrx::encode(instr, buf),
        Code::ASR_MOV_rr_A1 => AsrMovRrA1::encode(instr, buf),
        Code::STR_r_A1_pre => StrRA1Pre::encode(instr, buf),
        Code::STRH_r_A1_off => StrhRA1Off::encode(instr, buf),
        Code::UMULLS_A1 => UmullsA1::encode(instr, buf),
        Code::LDR_l_A1_post => LdrLA1Post::encode(instr, buf),
        Code::RSBS_i_A1 => RsbsIA1::encode(instr, buf),
        Code::SUB_rr_A1 => SubRrA1::encode(instr, buf),
        Code::ADD_SP_i_A1 => AddSpIA1::encode(instr, buf),
        Code::SETPAN_A1 => SetpanA1::encode(instr, buf),
        Code::CLRBHB_A1 => ClrbhbA1::encode(instr, buf),
        Code::MOVS_rr_A1 => MovsRrA1::encode(instr, buf),
        Code::UHSAX_A1 => UhsaxA1::encode(instr, buf),
        Code::LDRHT_A2 => LdrhtA2::encode(instr, buf),
        Code::MVNS_i_A1 => MvnsIA1::encode(instr, buf),
        Code::PLD_r_A1_RRX => PldRA1Rrx::encode(instr, buf),
        Code::LSRS_MOVS_r_A1 => LsrsMovsRA1::encode(instr, buf),
        Code::STM_A1 => StmA1::encode(instr, buf),
        Code::LSL_MOV_r_A1 => LslMovRA1::encode(instr, buf),
        Code::SMLATT_A1 => SmlattA1::encode(instr, buf),
        Code::LDR_r_A1_post => LdrRA1Post::encode(instr, buf),
        Code::UXTB_A1 => UxtbA1::encode(instr, buf),
        Code::LDC_i_A1_unind => LdcIA1Unind::encode(instr, buf),
        Code::BKPT_A1 => BkptA1::encode(instr, buf),
        Code::LDRD_l_A1_pre => LdrdLA1Pre::encode(instr, buf),
        Code::STC_A1_post => StcA1Post::encode(instr, buf),
        Code::TST_r_A1_RRX => TstRA1Rrx::encode(instr, buf),
        Code::MVNS_r_A1_RRX => MvnsRA1Rrx::encode(instr, buf),
        Code::STR_r_A1_off => StrRA1Off::encode(instr, buf),
        Code::LDRHT_A1 => LdrhtA1::encode(instr, buf),
        Code::STM_u_A1_AS => StmUA1As::encode(instr, buf),
        Code::LDRD_r_A1_post => LdrdRA1Post::encode(instr, buf),
        Code::STRB_i_A1_post => StrbIA1Post::encode(instr, buf),
        Code::SUB_SP_r_A1 => SubSpRA1::encode(instr, buf),
        Code::LDR_r_A1_off => LdrRA1Off::encode(instr, buf),
        Code::SADD16_A1 => Sadd16A1::encode(instr, buf),
        Code::STLB_A1 => StlbA1::encode(instr, buf),
        Code::ADC_i_A1 => AdcIA1::encode(instr, buf),
        Code::SMULWB_A1 => SmulwbA1::encode(instr, buf),
        Code::SRSIB_A1_AS => SrsibA1As::encode(instr, buf),
        Code::STRH_i_A1_post => StrhIA1Post::encode(instr, buf),
        Code::SDIV_A1 => SdivA1::encode(instr, buf),
        Code::STLH_A1 => StlhA1::encode(instr, buf),
        Code::ADD_r_A1_RRX => AddRA1Rrx::encode(instr, buf),
        Code::SHASX_A1 => ShasxA1::encode(instr, buf),
        Code::RSB_r_A1 => RsbRA1::encode(instr, buf),
        Code::SMMLS_A1 => SmmlsA1::encode(instr, buf),
        Code::DSB_A1 => DsbA1::encode(instr, buf),
        Code::STRB_r_A1_off => StrbRA1Off::encode(instr, buf),
        Code::STR_r_A1_post => StrRA1Post::encode(instr, buf),
        Code::QSAX_A1 => QsaxA1::encode(instr, buf),
        Code::ADC_r_A1 => AdcRA1::encode(instr, buf),
        Code::LDRSB_i_A1_post => LdrsbIA1Post::encode(instr, buf),
        Code::MSR_r_A1_AS => MsrRA1As::encode(instr, buf),
        Code::LDREXH_A1 => LdrexhA1::encode(instr, buf),
        Code::SBC_rr_A1 => SbcRrA1::encode(instr, buf),
        Code::LSL_MOV_rr_A1 => LslMovRrA1::encode(instr, buf),
        Code::AND_r_A1 => AndRA1::encode(instr, buf),
        Code::RSCS_rr_A1 => RscsRrA1::encode(instr, buf),
        Code::EOR_rr_A1 => EorRrA1::encode(instr, buf),
        Code::LDRH_i_A1_post => LdrhIA1Post::encode(instr, buf),
        Code::SUBS_r_A1 => SubsRA1::encode(instr, buf),
        Code::DMB_A1 => DmbA1::encode(instr, buf),
        Code::SRSDA_A1_AS => SrsdaA1As::encode(instr, buf),
        Code::PLDW_i_A1 => PldwIA1::encode(instr, buf),
        Code::STR_i_A1_post => StrIA1Post::encode(instr, buf),
        Code::MSR_br_A1_AS => MsrBrA1As::encode(instr, buf),
        Code::SUB_i_A1 => SubIA1::encode(instr, buf),
        Code::UMLALS_A1 => UmlalsA1::encode(instr, buf),
        Code::QDADD_A1 => QdaddA1::encode(instr, buf),
        Code::USAT16_A1 => Usat16A1::encode(instr, buf),
        Code::LDR_l_A1_off => LdrLA1Off::encode(instr, buf),
        Code::UQASX_A1 => UqasxA1::encode(instr, buf),
        Code::LDRSB_l_A1_post => LdrsbLA1Post::encode(instr, buf),
        Code::MOV_r_A1 => MovRA1::encode(instr, buf),
        Code::LDM_A1 => LdmA1::encode(instr, buf),
        Code::MRC_A1 => MrcA1::encode(instr, buf),
        Code::EOR_i_A1 => EorIA1::encode(instr, buf),
        Code::MOV_i_A2 => MovIA2::encode(instr, buf),
        Code::LDRSH_r_A1_off => LdrshRA1Off::encode(instr, buf),
        Code::MUL_A1 => MulA1::encode(instr, buf),
        Code::SMUAD_A1 => SmuadA1::encode(instr, buf),
        Code::LDRSBT_A1 => LdrsbtA1::encode(instr, buf),
        Code::LDRSH_r_A1_pre => LdrshRA1Pre::encode(instr, buf),
        Code::LDREX_A1 => LdrexA1::encode(instr, buf),
        Code::MCRR_A1 => McrrA1::encode(instr, buf),
        Code::STL_A1 => StlA1::encode(instr, buf),
        Code::LSLS_MOVS_rr_A1 => LslsMovsRrA1::encode(instr, buf),
        Code::HLT_A1 => HltA1::encode(instr, buf),
        Code::RSCS_r_A1_RRX => RscsRA1Rrx::encode(instr, buf),
        Code::LDRH_l_A1_off => LdrhLA1Off::encode(instr, buf),
        Code::UMULL_A1 => UmullA1::encode(instr, buf),
        Code::MOV_rr_A1 => MovRrA1::encode(instr, buf),
        Code::ROR_MOV_rr_A1 => RorMovRrA1::encode(instr, buf),
        Code::SRSIA_A1_AS => SrsiaA1As::encode(instr, buf),
        Code::SXTH_A1 => SxthA1::encode(instr, buf),
        Code::BL_i_A1 => BlIA1::encode(instr, buf),
        Code::LDRSHT_A1 => LdrshtA1::encode(instr, buf),
        Code::ADDS_r_A1_RRX => AddsRA1Rrx::encode(instr, buf),
        Code::QSUB_A1 => QsubA1::encode(instr, buf),
        Code::ANDS_r_A1_RRX => AndsRA1Rrx::encode(instr, buf),
        Code::BICS_r_A1 => BicsRA1::encode(instr, buf),
        Code::SMLSDX_A1 => SmlsdxA1::encode(instr, buf),
        Code::RORS_MOVS_r_A1 => RorsMovsRA1::encode(instr, buf),
        Code::UADD16_A1 => Uadd16A1::encode(instr, buf),
        Code::LDRH_i_A1_off => LdrhIA1Off::encode(instr, buf),
        Code::CMP_r_A1 => CmpRA1::encode(instr, buf),
        Code::RFEIB_A1_AS => RfeibA1As::encode(instr, buf),
        Code::PSSBB_A1 => PssbbA1::encode(instr, buf),
        Code::USAX_A1 => UsaxA1::encode(instr, buf),
        Code::RFEDA_A1_AS => RfedaA1As::encode(instr, buf),
        Code::LDAB_A1 => LdabA1::encode(instr, buf),
        Code::LDRB_i_A1_pre => LdrbIA1Pre::encode(instr, buf),
        Code::QADD16_A1 => Qadd16A1::encode(instr, buf),
        Code::STREXD_A1 => StrexdA1::encode(instr, buf),
        Code::SHSUB8_A1 => Shsub8A1::encode(instr, buf),
        Code::CPSIE_A1_ASM => CpsieA1Asm::encode(instr, buf),
        Code::CPSID_A1_ASM => CpsidA1Asm::encode(instr, buf),
        Code::STRD_i_A1_off => StrdIA1Off::encode(instr, buf),
        Code::EOR_r_A1_RRX => EorRA1Rrx::encode(instr, buf),
        Code::CMP_i_A1 => CmpIA1::encode(instr, buf),
        Code::EORS_r_A1 => EorsRA1::encode(instr, buf),
        Code::REV16_A1 => Rev16A1::encode(instr, buf),
        Code::LDM_u_A1_AS => LdmUA1As::encode(instr, buf),
        Code::CMN_r_A1 => CmnRA1::encode(instr, buf),
        Code::RFEDB_A1_AS => RfedbA1As::encode(instr, buf),
        Code::CPSIE_A1_AS => CpsieA1As::encode(instr, buf),
        Code::BXJ_A1 => BxjA1::encode(instr, buf),
        Code::SMULTB_A1 => SmultbA1::encode(instr, buf),
        Code::RSBS_rr_A1 => RsbsRrA1::encode(instr, buf),
        Code::LDRSHT_A2 => LdrshtA2::encode(instr, buf),
        Code::CMP_r_A1_RRX => CmpRA1Rrx::encode(instr, buf),
        Code::SMLALTT_A1 => SmlalttA1::encode(instr, buf),
        Code::CRC32CH_A1 => Crc32chA1::encode(instr, buf),
        Code::LDRSH_r_A1_post => LdrshRA1Post::encode(instr, buf),
        Code::ADD_r_A1 => AddRA1::encode(instr, buf),
        Code::POP_LDM_A1 => PopLdmA1::encode(instr, buf),
        Code::SUBS_SP_r_A1 => SubsSpRA1::encode(instr, buf),
        Code::RSB_r_A1_RRX => RsbRA1Rrx::encode(instr, buf),
        Code::QADD8_A1 => Qadd8A1::encode(instr, buf),
        Code::EOR_r_A1 => EorRA1::encode(instr, buf),
        Code::ADC_r_A1_RRX => AdcRA1Rrx::encode(instr, buf),
        Code::ADCS_rr_A1 => AdcsRrA1::encode(instr, buf),
        Code::ISB_A1 => IsbA1::encode(instr, buf),
        Code::SMMUL_A1 => SmmulA1::encode(instr, buf),
        Code::BLX_r_A1 => BlxRA1::encode(instr, buf),
        Code::SMLAL_A1 => SmlalA1::encode(instr, buf),
        Code::SADD8_A1 => Sadd8A1::encode(instr, buf),
        Code::SUB_ADR_A2 => SubAdrA2::encode(instr, buf),
        Code::LDRSH_l_A1_pre => LdrshLA1Pre::encode(instr, buf),
        Code::MCR_A1 => McrA1::encode(instr, buf),
        Code::BICS_i_A1 => BicsIA1::encode(instr, buf),
        Code::ANDS_r_A1 => AndsRA1::encode(instr, buf),
        Code::RSB_rr_A1 => RsbRrA1::encode(instr, buf),
        Code::CRC32CB_A1 => Crc32cbA1::encode(instr, buf),
        Code::SXTB16_A1 => Sxtb16A1::encode(instr, buf),
        Code::MOVS_r_A1 => MovsRA1::encode(instr, buf),
        Code::TSB_A1 => TsbA1::encode(instr, buf),
        Code::REVSH_A1 => RevshA1::encode(instr, buf),
        Code::LDRH_r_A1_post => LdrhRA1Post::encode(instr, buf),
        Code::BFC_A1 => BfcA1::encode(instr, buf),
        Code::USAD8_A1 => Usad8A1::encode(instr, buf),
        Code::SXTAB16_A1 => Sxtab16A1::encode(instr, buf),
        Code::ADDS_r_A1 => AddsRA1::encode(instr, buf),
        Code::ADCS_i_A1 => AdcsIA1::encode(instr, buf),
        Code::SUB_r_A1 => SubRA1::encode(instr, buf),
        Code::UMAAL_A1 => UmaalA1::encode(instr, buf),
        Code::TEQ_i_A1 => TeqIA1::encode(instr, buf),
        Code::RRXS_MOVS_r_A1_RRX => RrxsMovsRA1Rrx::encode(instr, buf),
        Code::ADDS_SP_r_A1 => AddsSpRA1::encode(instr, buf),
        Code::ROR_MOV_r_A1 => RorMovRA1::encode(instr, buf),
        Code::STR_i_A1_off => StrIA1Off::encode(instr, buf),
        Code::STRB_i_A1_off => StrbIA1Off::encode(instr, buf),
        Code::LDRSH_i_A1_post => LdrshIA1Post::encode(instr, buf),
        Code::LDR_i_A1_post => LdrIA1Post::encode(instr, buf),
        Code::LDAEX_A1 => LdaexA1::encode(instr, buf),
        Code::LDAEXH_A1 => LdaexhA1::encode(instr, buf),
        Code::SBC_r_A1_RRX => SbcRA1Rrx::encode(instr, buf),
        Code::ADR_A2 => AdrA2::encode(instr, buf),
        Code::ADDS_i_A1 => AddsIA1::encode(instr, buf),
        Code::UDIV_A1 => UdivA1::encode(instr, buf),
        Code::SUB_SP_i_A1 => SubSpIA1::encode(instr, buf),
        Code::BFI_A1 => BfiA1::encode(instr, buf),
        Code::SUBS_rr_A1 => SubsRrA1::encode(instr, buf),
        Code::SXTAH_A1 => SxtahA1::encode(instr, buf),
        Code::BICS_rr_A1 => BicsRrA1::encode(instr, buf),
        Code::CMN_i_A1 => CmnIA1::encode(instr, buf),
        Code::AND_i_A1 => AndIA1::encode(instr, buf),
        Code::STRBT_A1 => StrbtA1::encode(instr, buf),
        Code::QADD_A1 => QaddA1::encode(instr, buf),
        Code::RSBS_r_A1 => RsbsRA1::encode(instr, buf),
        Code::CRC32W_A1 => Crc32wA1::encode(instr, buf),
        Code::RORS_MOVS_rr_A1 => RorsMovsRrA1::encode(instr, buf),
        Code::UXTAB_A1 => UxtabA1::encode(instr, buf),
        Code::MRRC_A1 => MrrcA1::encode(instr, buf),
        Code::LDRB_r_A1_pre => LdrbRA1Pre::encode(instr, buf),
        Code::SEV_A1 => SevA1::encode(instr, buf),
        Code::SMLALBT_A1 => SmlalbtA1::encode(instr, buf),
        Code::LDRD_l_A1_post => LdrdLA1Post::encode(instr, buf),
        Code::LDREXD_A1 => LdrexdA1::encode(instr, buf),
        Code::SMLABB_A1 => SmlabbA1::encode(instr, buf),
        Code::EORS_r_A1_RRX => EorsRA1Rrx::encode(instr, buf),
        Code::RSCS_i_A1 => RscsIA1::encode(instr, buf),
        Code::SSUB16_A1 => Ssub16A1::encode(instr, buf),
        Code::CRC32CW_A1 => Crc32cwA1::encode(instr, buf),
        Code::LDAEXB_A1 => LdaexbA1::encode(instr, buf),
        Code::UDF_A1 => UdfA1::encode(instr, buf),
        Code::STMDA_A1 => StmdaA1::encode(instr, buf),
        Code::SMLSLDX_A1 => SmlsldxA1::encode(instr, buf),
        Code::SMULTT_A1 => SmulttA1::encode(instr, buf),
        Code::STMDB_A1 => StmdbA1::encode(instr, buf),
        Code::SMMULR_A1 => SmmulrA1::encode(instr, buf),
        Code::LDRT_A2 => LdrtA2::encode(instr, buf),
        Code::UASX_A1 => UasxA1::encode(instr, buf),
        Code::PLI_i_A1 => PliIA1::encode(instr, buf),
        Code::LDRH_l_A1_pre => LdrhLA1Pre::encode(instr, buf),
        Code::SMULL_A1 => SmullA1::encode(instr, buf),
        Code::STC_A1_pre => StcA1Pre::encode(instr, buf),
        Code::SEL_A1 => SelA1::encode(instr, buf),
        Code::SMLALBB_A1 => SmlalbbA1::encode(instr, buf),
        Code::ADD_SP_r_A1 => AddSpRA1::encode(instr, buf),
        Code::TEQ_r_A1 => TeqRA1::encode(instr, buf),
        Code::LDRSH_l_A1_off => LdrshLA1Off::encode(instr, buf),
        Code::SBC_i_A1 => SbcIA1::encode(instr, buf),
        Code::SRSDB_A1_AS => SrsdbA1As::encode(instr, buf),
        Code::PLI_r_A1 => PliRA1::encode(instr, buf),
        Code::STRB_i_A1_pre => StrbIA1Pre::encode(instr, buf),
        Code::SMULWT_A1 => SmulwtA1::encode(instr, buf),
        Code::ORR_rr_A1 => OrrRrA1::encode(instr, buf),
        Code::CRC32B_A1 => Crc32bA1::encode(instr, buf),
        Code::TEQ_rr_A1 => TeqRrA1::encode(instr, buf),
        Code::LDC_l_A1_unind => LdcLA1Unind::encode(instr, buf),
        Code::LDRSB_i_A1_pre => LdrsbIA1Pre::encode(instr, buf),
        Code::LDR_r_A1_pre => LdrRA1Pre::encode(instr, buf),
        Code::UXTAB16_A1 => Uxtab16A1::encode(instr, buf),
        Code::STREX_A1 => StrexA1::encode(instr, buf),
        Code::UQSUB8_A1 => Uqsub8A1::encode(instr, buf),
        Code::YIELD_A1 => YieldA1::encode(instr, buf),
        Code::LDRB_r_A1_off => LdrbRA1Off::encode(instr, buf),
        Code::USAT_A1_ASR => UsatA1Asr::encode(instr, buf),
        Code::CLREX_A1 => ClrexA1::encode(instr, buf),
        Code::USADA8_A1 => Usada8A1::encode(instr, buf),
        Code::RSC_i_A1 => RscIA1::encode(instr, buf),
        Code::CMN_rr_A1 => CmnRrA1::encode(instr, buf),
        Code::SMUSDX_A1 => SmusdxA1::encode(instr, buf),
        Code::STRHT_A2 => StrhtA2::encode(instr, buf),
        Code::RSC_r_A1_RRX => RscRA1Rrx::encode(instr, buf),
        Code::MOVT_A1 => MovtA1::encode(instr, buf),
        Code::UXTB16_A1 => Uxtb16A1::encode(instr, buf),
        Code::LDRD_r_A1_off => LdrdRA1Off::encode(instr, buf),
        Code::LDREXB_A1 => LdrexbA1::encode(instr, buf),
        Code::SMLATB_A1 => SmlatbA1::encode(instr, buf),
        Code::LDM_e_A1_AS => LdmEA1As::encode(instr, buf),
        Code::ERET_A1 => EretA1::encode(instr, buf),
        Code::REV_A1 => RevA1::encode(instr, buf),
        Code::SSAT_A1_ASR => SsatA1Asr::encode(instr, buf),
        Code::LDR_l_A1_pre => LdrLA1Pre::encode(instr, buf),
        Code::LSLS_MOVS_r_A1 => LslsMovsRA1::encode(instr, buf),
        Code::SMLABT_A1 => SmlabtA1::encode(instr, buf),
        Code::BIC_rr_A1 => BicRrA1::encode(instr, buf),
        Code::MRS_br_A1_AS => MrsBrA1As::encode(instr, buf),
        Code::SBCS_i_A1 => SbcsIA1::encode(instr, buf),
        Code::AND_r_A1_RRX => AndRA1Rrx::encode(instr, buf),
        Code::PLD_r_A1 => PldRA1::encode(instr, buf),
        Code::ORR_i_A1 => OrrIA1::encode(instr, buf),
        Code::LDRD_i_A1_pre => LdrdIA1Pre::encode(instr, buf),
        Code::STC_A1_off => StcA1Off::encode(instr, buf),
        Code::STREXH_A1 => StrexhA1::encode(instr, buf),
        Code::SSUB8_A1 => Ssub8A1::encode(instr, buf),
        Code::SUBS_SP_r_A1_RRX => SubsSpRA1Rrx::encode(instr, buf),
        Code::ORRS_i_A1 => OrrsIA1::encode(instr, buf),
        Code::UHSUB8_A1 => Uhsub8A1::encode(instr, buf),
        Code::STRD_r_A1_post => StrdRA1Post::encode(instr, buf),
        Code::STRH_i_A1_pre => StrhIA1Pre::encode(instr, buf),
        Code::LDRT_A1 => LdrtA1::encode(instr, buf),
        Code::SMLALDX_A1 => SmlaldxA1::encode(instr, buf),
        Code::UHASX_A1 => UhasxA1::encode(instr, buf),
        Code::ADD_rr_A1 => AddRrA1::encode(instr, buf),
        Code::LDRD_l_A1_off => LdrdLA1Off::encode(instr, buf),
        Code::UADD8_A1 => Uadd8A1::encode(instr, buf),
        Code::SUB_SP_r_A1_RRX => SubSpRA1Rrx::encode(instr, buf),
        Code::LDRSH_l_A1_post => LdrshLA1Post::encode(instr, buf),
        Code::SHADD8_A1 => Shadd8A1::encode(instr, buf),
        Code::ANDS_rr_A1 => AndsRrA1::encode(instr, buf),
        Code::LDR_i_A1_pre => LdrIA1Pre::encode(instr, buf),
        Code::STRH_r_A1_pre => StrhRA1Pre::encode(instr, buf),
        Code::TST_r_A1 => TstRA1::encode(instr, buf),
        Code::MOV_i_A1 => MovIA1::encode(instr, buf),
        Code::MSR_i_A1_AS => MsrIA1As::encode(instr, buf),
        Code::SBCS_r_A1 => SbcsRA1::encode(instr, buf),
        Code::STRB_r_A1_post => StrbRA1Post::encode(instr, buf),
        Code::STREXB_A1 => StrexbA1::encode(instr, buf),
        Code::STLEXD_A1 => StlexdA1::encode(instr, buf),
        Code::LDRH_r_A1_off => LdrhRA1Off::encode(instr, buf),
        Code::LDR_i_A1_off => LdrIA1Off::encode(instr, buf),
        Code::SMLAD_A1 => SmladA1::encode(instr, buf),
        Code::MVN_i_A1 => MvnIA1::encode(instr, buf),
        Code::NOP_A1 => NopA1::encode(instr, buf),
        Code::MRS_A1_AS => MrsA1As::encode(instr, buf),
        Code::SBC_r_A1 => SbcRA1::encode(instr, buf),
        Code::ADD_i_A1 => AddIA1::encode(instr, buf),
        Code::TST_i_A1 => TstIA1::encode(instr, buf),
        Code::TST_rr_A1 => TstRrA1::encode(instr, buf),
        Code::PKHBT_A1 => PkhbtA1::encode(instr, buf),
        Code::UMLAL_A1 => UmlalA1::encode(instr, buf),
        Code::PLDW_l_A1 => PldwLA1::encode(instr, buf),
        Code::PLD_l_A1 => PldLA1::encode(instr, buf),
        Code::MOVS_i_A1 => MovsIA1::encode(instr, buf),
        Code::SMLAWT_A1 => SmlawtA1::encode(instr, buf),
        Code::LDRSH_i_A1_off => LdrshIA1Off::encode(instr, buf),
        Code::UHADD16_A1 => Uhadd16A1::encode(instr, buf),
        Code::ADC_rr_A1 => AdcRrA1::encode(instr, buf),
        Code::QSUB8_A1 => Qsub8A1::encode(instr, buf),
        Code::SSAT16_A1 => Ssat16A1::encode(instr, buf),
        Code::SUBS_r_A1_RRX => SubsRA1Rrx::encode(instr, buf),
        Code::LDRB_l_A1_pre => LdrbLA1Pre::encode(instr, buf),
        Code::STRB_r_A1_pre => StrbRA1Pre::encode(instr, buf),
        Code::ASRS_MOVS_r_A1 => AsrsMovsRA1::encode(instr, buf),
        Code::BX_A1 => BxA1::encode(instr, buf),
        Code::SMMLSR_A1 => SmmlsrA1::encode(instr, buf),
        Code::ORRS_rr_A1 => OrrsRrA1::encode(instr, buf),
        Code::SUB_r_A1_RRX => SubRA1Rrx::encode(instr, buf),
        Code::LDRSBT_A2 => LdrsbtA2::encode(instr, buf),
        Code::LDRH_r_A1_pre => LdrhRA1Pre::encode(instr, buf),
        Code::UHADD8_A1 => Uhadd8A1::encode(instr, buf),
        Code::LDC_i_A1_pre => LdcIA1Pre::encode(instr, buf),
        Code::QASX_A1 => QasxA1::encode(instr, buf),
        Code::WFI_A1 => WfiA1::encode(instr, buf),
        Code::SMULLS_A1 => SmullsA1::encode(instr, buf),
        Code::LSRS_MOVS_rr_A1 => LsrsMovsRrA1::encode(instr, buf),
        Code::ADDS_rr_A1 => AddsRrA1::encode(instr, buf),
        Code::SMMLAR_A1 => SmmlarA1::encode(instr, buf),
        Code::LSR_MOV_rr_A1 => LsrMovRrA1::encode(instr, buf),
        Code::ORR_r_A1 => OrrRA1::encode(instr, buf),
        Code::SMUADX_A1 => SmuadxA1::encode(instr, buf),
        Code::LDRD_i_A1_post => LdrdIA1Post::encode(instr, buf),
        Code::ADDS_SP_r_A1_RRX => AddsSpRA1Rrx::encode(instr, buf),
        Code::ANDS_i_A1 => AndsIA1::encode(instr, buf),
        Code::EORS_i_A1 => EorsIA1::encode(instr, buf),
        Code::WFE_A1 => WfeA1::encode(instr, buf),
        Code::STMIB_A1 => StmibA1::encode(instr, buf),
        Code::LDRBT_A2 => LdrbtA2::encode(instr, buf),
        Code::LDRSB_r_A1_off => LdrsbRA1Off::encode(instr, buf),
        Code::LDRB_i_A1_off => LdrbIA1Off::encode(instr, buf),
        Code::SSBB_A1 => SsbbA1::encode(instr, buf),
        Code::STRD_i_A1_post => StrdIA1Post::encode(instr, buf),
        Code::STLEXH_A1 => StlexhA1::encode(instr, buf),
        Code::MOVS_r_A1_RRX => MovsRA1Rrx::encode(instr, buf),
        Code::LDRSB_l_A1_pre => LdrsbLA1Pre::encode(instr, buf),
        Code::RRX_MOV_r_A1_RRX => RrxMovRA1Rrx::encode(instr, buf),
        Code::TEQ_r_A1_RRX => TeqRA1Rrx::encode(instr, buf),
        Code::MLS_A1 => MlsA1::encode(instr, buf),
        Code::LDRBT_A1 => LdrbtA1::encode(instr, buf),
        Code::PKHTB_A1 => PkhtbA1::encode(instr, buf),
        Code::SHSUB16_A1 => Shsub16A1::encode(instr, buf),
        Code::SMLSD_A1 => SmlsdA1::encode(instr, buf),
        Code::SSAX_A1 => SsaxA1::encode(instr, buf),
        Code::SMULBB_A1 => SmulbbA1::encode(instr, buf),
        Code::STRH_i_A1_off => StrhIA1Off::encode(instr, buf),
        Code::BICS_r_A1_RRX => BicsRA1Rrx::encode(instr, buf),
        Code::MVN_r_A1_RRX => MvnRA1Rrx::encode(instr, buf),
        Code::MLAS_A1 => MlasA1::encode(instr, buf),
        Code::LDAEXD_A1 => LdaexdA1::encode(instr, buf),
        Code::BIC_r_A1 => BicRA1::encode(instr, buf),
        Code::LDRSB_r_A1_post => LdrsbRA1Post::encode(instr, buf),
        Code::RBIT_A1 => RbitA1::encode(instr, buf),
        Code::PLD_i_A1 => PldIA1::encode(instr, buf),
        Code::SMLSLD_A1 => SmlsldA1::encode(instr, buf),
        Code::DBG_A1 => DbgA1::encode(instr, buf),
        Code::LDRB_r_A1_post => LdrbRA1Post::encode(instr, buf),
        Code::LDRD_r_A1_pre => LdrdRA1Pre::encode(instr, buf),
        Code::LDMIB_A1 => LdmibA1::encode(instr, buf),
        Code::ASR_MOV_r_A1 => AsrMovRA1::encode(instr, buf),
        Code::ADCS_r_A1 => AdcsRA1::encode(instr, buf),
        Code::SMLALD_A1 => SmlaldA1::encode(instr, buf),
        Code::STLEX_A1 => StlexA1::encode(instr, buf),
        Code::AND_rr_A1 => AndRrA1::encode(instr, buf),
        Code::SMMLA_A1 => SmmlaA1::encode(instr, buf),
        Code::QDSUB_A1 => QdsubA1::encode(instr, buf),
        Code::UHSUB16_A1 => Uhsub16A1::encode(instr, buf),
        Code::STRHT_A1 => StrhtA1::encode(instr, buf),
        Code::ADDS_SP_i_A1 => AddsSpIA1::encode(instr, buf),
        Code::QSUB16_A1 => Qsub16A1::encode(instr, buf),
        Code::STRT_A2 => StrtA2::encode(instr, buf),
        Code::ADD_ADR_A1 => AddAdrA1::encode(instr, buf),
        Code::ADD_SP_r_A1_RRX => AddSpRA1Rrx::encode(instr, buf),
        Code::PLDW_r_A1_RRX => PldwRA1Rrx::encode(instr, buf),
        Code::MVNS_r_A1 => MvnsRA1::encode(instr, buf),
        Code::UQADD8_A1 => Uqadd8A1::encode(instr, buf),
        Code::SXTB_A1 => SxtbA1::encode(instr, buf),
        Code::LDRSH_i_A1_pre => LdrshIA1Pre::encode(instr, buf),
        Code::MULS_A1 => MulsA1::encode(instr, buf),
        Code::STRD_r_A1_pre => StrdRA1Pre::encode(instr, buf),
        Code::SHSAX_A1 => ShsaxA1::encode(instr, buf),
        Code::SUBS_SP_i_A1 => SubsSpIA1::encode(instr, buf),
        Code::CMN_r_A1_RRX => CmnRA1Rrx::encode(instr, buf),
        Code::LDRD_i_A1_off => LdrdIA1Off::encode(instr, buf),
        Code::UQSAX_A1 => UqsaxA1::encode(instr, buf),
        Code::SBFX_A1 => SbfxA1::encode(instr, buf),
        Code::UQADD16_A1 => Uqadd16A1::encode(instr, buf),
        Code::PUSH_STR_i_A1_pre => PushStrIA1Pre::encode(instr, buf),
        Code::BIC_i_A1 => BicIA1::encode(instr, buf),
        Code::PUSH_STMDB_A1 => PushStmdbA1::encode(instr, buf),
        Code::STLEXB_A1 => StlexbA1::encode(instr, buf),
        Code::RSCS_r_A1 => RscsRA1::encode(instr, buf),
        Code::SMLAWB_A1 => SmlawbA1::encode(instr, buf),
        Code::STRH_r_A1_post => StrhRA1Post::encode(instr, buf),
        Code::POP_LDR_i_A1_post => PopLdrIA1Post::encode(instr, buf),
        Code::HVC_A1 => HvcA1::encode(instr, buf),
        Code::STRD_r_A1_off => StrdRA1Off::encode(instr, buf),
        Code::CPSID_A1_AS => CpsidA1As::encode(instr, buf),
        Code::SMC_A1_AS => SmcA1As::encode(instr, buf),
        Code::USUB8_A1 => Usub8A1::encode(instr, buf),
        Code::PLDW_r_A1 => PldwRA1::encode(instr, buf),
    }
}

pub fn encode_block(instr: &mut Instruction, buf: &mut Vec<u8>, labels: &HashMap<u64, u64>) -> Result<usize> {
    match instr.code {
        Code::Invalid => todo!(),
        Code::RSBS_r_A1_RRX => RsbsRA1Rrx::encode_block(instr, buf, labels),
        Code::SETEND_A1 => SetendA1::encode_block(instr, buf, labels),
        Code::USAT_A1_LSL => UsatA1Lsl::encode_block(instr, buf, labels),
        Code::UXTH_A1 => UxthA1::encode_block(instr, buf, labels),
        Code::LDRB_l_A1_post => LdrbLA1Post::encode_block(instr, buf, labels),
        Code::RSC_r_A1 => RscRA1::encode_block(instr, buf, labels),
        Code::PLI_r_A1_RRX => PliRA1Rrx::encode_block(instr, buf, labels),
        Code::SUBS_i_A1 => SubsIA1::encode_block(instr, buf, labels),
        Code::CRC32H_A1 => Crc32hA1::encode_block(instr, buf, labels),
        Code::SHADD16_A1 => Shadd16A1::encode_block(instr, buf, labels),
        Code::STC_A1_unind => StcA1Unind::encode_block(instr, buf, labels),
        Code::UBFX_A1 => UbfxA1::encode_block(instr, buf, labels),
        Code::USUB16_A1 => Usub16A1::encode_block(instr, buf, labels),
        Code::LSR_MOV_r_A1 => LsrMovRA1::encode_block(instr, buf, labels),
        Code::ASRS_MOVS_rr_A1 => AsrsMovsRrA1::encode_block(instr, buf, labels),
        Code::LDC_l_A1_post => LdcLA1Post::encode_block(instr, buf, labels),
        Code::SMLALTB_A1 => SmlaltbA1::encode_block(instr, buf, labels),
        Code::SBCS_r_A1_RRX => SbcsRA1Rrx::encode_block(instr, buf, labels),
        Code::LDMDA_A1 => LdmdaA1::encode_block(instr, buf, labels),
        Code::MVN_rr_A1 => MvnRrA1::encode_block(instr, buf, labels),
        Code::CLZ_A1 => ClzA1::encode_block(instr, buf, labels),
        Code::LDMDB_A1 => LdmdbA1::encode_block(instr, buf, labels),
        Code::LDRSB_i_A1_off => LdrsbIA1Off::encode_block(instr, buf, labels),
        Code::SSAT_A1_LSL => SsatA1Lsl::encode_block(instr, buf, labels),
        Code::LDRB_l_A1_off => LdrbLA1Off::encode_block(instr, buf, labels),
        Code::LDC_l_A1_off => LdcLA1Off::encode_block(instr, buf, labels),
        Code::ORR_r_A1_RRX => OrrRA1Rrx::encode_block(instr, buf, labels),
        Code::BIC_r_A1_RRX => BicRA1Rrx::encode_block(instr, buf, labels),
        Code::SVC_A1 => SvcA1::encode_block(instr, buf, labels),
        Code::LDRSB_r_A1_pre => LdrsbRA1Pre::encode_block(instr, buf, labels),
        Code::SMLADX_A1 => SmladxA1::encode_block(instr, buf, labels),
        Code::SMLALS_A1 => SmlalsA1::encode_block(instr, buf, labels),
        Code::ORRS_r_A1 => OrrsRA1::encode_block(instr, buf, labels),
        Code::BL_i_A2 => BlIA2::encode_block(instr, buf, labels),
        Code::LDRB_i_A1_post => LdrbIA1Post::encode_block(instr, buf, labels),
        Code::B_A1 => BA1::encode_block(instr, buf, labels),
        Code::CSDB_A1 => CsdbA1::encode_block(instr, buf, labels),
        Code::CMP_rr_A1 => CmpRrA1::encode_block(instr, buf, labels),
        Code::LDRSB_l_A1_off => LdrsbLA1Off::encode_block(instr, buf, labels),
        Code::SBCS_rr_A1 => SbcsRrA1::encode_block(instr, buf, labels),
        Code::UXTAH_A1 => UxtahA1::encode_block(instr, buf, labels),
        Code::ADR_A1 => AdrA1::encode_block(instr, buf, labels),
        Code::MLA_A1 => MlaA1::encode_block(instr, buf, labels),
        Code::RSC_rr_A1 => RscRrA1::encode_block(instr, buf, labels),
        Code::ESB_A1 => EsbA1::encode_block(instr, buf, labels),
        Code::SEVL_A1 => SevlA1::encode_block(instr, buf, labels),
        Code::STRBT_A2 => StrbtA2::encode_block(instr, buf, labels),
        Code::LDC_i_A1_post => LdcIA1Post::encode_block(instr, buf, labels),
        Code::ORRS_r_A1_RRX => OrrsRA1Rrx::encode_block(instr, buf, labels),
        Code::UQSUB16_A1 => Uqsub16A1::encode_block(instr, buf, labels),
        Code::EORS_rr_A1 => EorsRrA1::encode_block(instr, buf, labels),
        Code::LDRH_i_A1_pre => LdrhIA1Pre::encode_block(instr, buf, labels),
        Code::LDC_l_A1_pre => LdcLA1Pre::encode_block(instr, buf, labels),
        Code::SMUSD_A1 => SmusdA1::encode_block(instr, buf, labels),
        Code::RFEIA_A1_AS => RfeiaA1As::encode_block(instr, buf, labels),
        Code::STR_i_A1_pre => StrIA1Pre::encode_block(instr, buf, labels),
        Code::ADCS_r_A1_RRX => AdcsRA1Rrx::encode_block(instr, buf, labels),
        Code::MVN_r_A1 => MvnRA1::encode_block(instr, buf, labels),
        Code::LDA_A1 => LdaA1::encode_block(instr, buf, labels),
        Code::SB_A1 => SbA1::encode_block(instr, buf, labels),
        Code::CPS_A1_AS => CpsA1As::encode_block(instr, buf, labels),
        Code::RSB_i_A1 => RsbIA1::encode_block(instr, buf, labels),
        Code::STRT_A1 => StrtA1::encode_block(instr, buf, labels),
        Code::MVNS_rr_A1 => MvnsRrA1::encode_block(instr, buf, labels),
        Code::SASX_A1 => SasxA1::encode_block(instr, buf, labels),
        Code::STRD_i_A1_pre => StrdIA1Pre::encode_block(instr, buf, labels),
        Code::LDC_i_A1_off => LdcIA1Off::encode_block(instr, buf, labels),
        Code::LDAH_A1 => LdahA1::encode_block(instr, buf, labels),
        Code::SMULBT_A1 => SmulbtA1::encode_block(instr, buf, labels),
        Code::SXTAB_A1 => SxtabA1::encode_block(instr, buf, labels),
        Code::LDRH_l_A1_post => LdrhLA1Post::encode_block(instr, buf, labels),
        Code::MOV_r_A1_RRX => MovRA1Rrx::encode_block(instr, buf, labels),
        Code::ASR_MOV_rr_A1 => AsrMovRrA1::encode_block(instr, buf, labels),
        Code::STR_r_A1_pre => StrRA1Pre::encode_block(instr, buf, labels),
        Code::STRH_r_A1_off => StrhRA1Off::encode_block(instr, buf, labels),
        Code::UMULLS_A1 => UmullsA1::encode_block(instr, buf, labels),
        Code::LDR_l_A1_post => LdrLA1Post::encode_block(instr, buf, labels),
        Code::RSBS_i_A1 => RsbsIA1::encode_block(instr, buf, labels),
        Code::SUB_rr_A1 => SubRrA1::encode_block(instr, buf, labels),
        Code::ADD_SP_i_A1 => AddSpIA1::encode_block(instr, buf, labels),
        Code::SETPAN_A1 => SetpanA1::encode_block(instr, buf, labels),
        Code::CLRBHB_A1 => ClrbhbA1::encode_block(instr, buf, labels),
        Code::MOVS_rr_A1 => MovsRrA1::encode_block(instr, buf, labels),
        Code::UHSAX_A1 => UhsaxA1::encode_block(instr, buf, labels),
        Code::LDRHT_A2 => LdrhtA2::encode_block(instr, buf, labels),
        Code::MVNS_i_A1 => MvnsIA1::encode_block(instr, buf, labels),
        Code::PLD_r_A1_RRX => PldRA1Rrx::encode_block(instr, buf, labels),
        Code::LSRS_MOVS_r_A1 => LsrsMovsRA1::encode_block(instr, buf, labels),
        Code::STM_A1 => StmA1::encode_block(instr, buf, labels),
        Code::LSL_MOV_r_A1 => LslMovRA1::encode_block(instr, buf, labels),
        Code::SMLATT_A1 => SmlattA1::encode_block(instr, buf, labels),
        Code::LDR_r_A1_post => LdrRA1Post::encode_block(instr, buf, labels),
        Code::UXTB_A1 => UxtbA1::encode_block(instr, buf, labels),
        Code::LDC_i_A1_unind => LdcIA1Unind::encode_block(instr, buf, labels),
        Code::BKPT_A1 => BkptA1::encode_block(instr, buf, labels),
        Code::LDRD_l_A1_pre => LdrdLA1Pre::encode_block(instr, buf, labels),
        Code::STC_A1_post => StcA1Post::encode_block(instr, buf, labels),
        Code::TST_r_A1_RRX => TstRA1Rrx::encode_block(instr, buf, labels),
        Code::MVNS_r_A1_RRX => MvnsRA1Rrx::encode_block(instr, buf, labels),
        Code::STR_r_A1_off => StrRA1Off::encode_block(instr, buf, labels),
        Code::LDRHT_A1 => LdrhtA1::encode_block(instr, buf, labels),
        Code::STM_u_A1_AS => StmUA1As::encode_block(instr, buf, labels),
        Code::LDRD_r_A1_post => LdrdRA1Post::encode_block(instr, buf, labels),
        Code::STRB_i_A1_post => StrbIA1Post::encode_block(instr, buf, labels),
        Code::SUB_SP_r_A1 => SubSpRA1::encode_block(instr, buf, labels),
        Code::LDR_r_A1_off => LdrRA1Off::encode_block(instr, buf, labels),
        Code::SADD16_A1 => Sadd16A1::encode_block(instr, buf, labels),
        Code::STLB_A1 => StlbA1::encode_block(instr, buf, labels),
        Code::ADC_i_A1 => AdcIA1::encode_block(instr, buf, labels),
        Code::SMULWB_A1 => SmulwbA1::encode_block(instr, buf, labels),
        Code::SRSIB_A1_AS => SrsibA1As::encode_block(instr, buf, labels),
        Code::STRH_i_A1_post => StrhIA1Post::encode_block(instr, buf, labels),
        Code::SDIV_A1 => SdivA1::encode_block(instr, buf, labels),
        Code::STLH_A1 => StlhA1::encode_block(instr, buf, labels),
        Code::ADD_r_A1_RRX => AddRA1Rrx::encode_block(instr, buf, labels),
        Code::SHASX_A1 => ShasxA1::encode_block(instr, buf, labels),
        Code::RSB_r_A1 => RsbRA1::encode_block(instr, buf, labels),
        Code::SMMLS_A1 => SmmlsA1::encode_block(instr, buf, labels),
        Code::DSB_A1 => DsbA1::encode_block(instr, buf, labels),
        Code::STRB_r_A1_off => StrbRA1Off::encode_block(instr, buf, labels),
        Code::STR_r_A1_post => StrRA1Post::encode_block(instr, buf, labels),
        Code::QSAX_A1 => QsaxA1::encode_block(instr, buf, labels),
        Code::ADC_r_A1 => AdcRA1::encode_block(instr, buf, labels),
        Code::LDRSB_i_A1_post => LdrsbIA1Post::encode_block(instr, buf, labels),
        Code::MSR_r_A1_AS => MsrRA1As::encode_block(instr, buf, labels),
        Code::LDREXH_A1 => LdrexhA1::encode_block(instr, buf, labels),
        Code::SBC_rr_A1 => SbcRrA1::encode_block(instr, buf, labels),
        Code::LSL_MOV_rr_A1 => LslMovRrA1::encode_block(instr, buf, labels),
        Code::AND_r_A1 => AndRA1::encode_block(instr, buf, labels),
        Code::RSCS_rr_A1 => RscsRrA1::encode_block(instr, buf, labels),
        Code::EOR_rr_A1 => EorRrA1::encode_block(instr, buf, labels),
        Code::LDRH_i_A1_post => LdrhIA1Post::encode_block(instr, buf, labels),
        Code::SUBS_r_A1 => SubsRA1::encode_block(instr, buf, labels),
        Code::DMB_A1 => DmbA1::encode_block(instr, buf, labels),
        Code::SRSDA_A1_AS => SrsdaA1As::encode_block(instr, buf, labels),
        Code::PLDW_i_A1 => PldwIA1::encode_block(instr, buf, labels),
        Code::STR_i_A1_post => StrIA1Post::encode_block(instr, buf, labels),
        Code::MSR_br_A1_AS => MsrBrA1As::encode_block(instr, buf, labels),
        Code::SUB_i_A1 => SubIA1::encode_block(instr, buf, labels),
        Code::UMLALS_A1 => UmlalsA1::encode_block(instr, buf, labels),
        Code::QDADD_A1 => QdaddA1::encode_block(instr, buf, labels),
        Code::USAT16_A1 => Usat16A1::encode_block(instr, buf, labels),
        Code::LDR_l_A1_off => LdrLA1Off::encode_block(instr, buf, labels),
        Code::UQASX_A1 => UqasxA1::encode_block(instr, buf, labels),
        Code::LDRSB_l_A1_post => LdrsbLA1Post::encode_block(instr, buf, labels),
        Code::MOV_r_A1 => MovRA1::encode_block(instr, buf, labels),
        Code::LDM_A1 => LdmA1::encode_block(instr, buf, labels),
        Code::MRC_A1 => MrcA1::encode_block(instr, buf, labels),
        Code::EOR_i_A1 => EorIA1::encode_block(instr, buf, labels),
        Code::MOV_i_A2 => MovIA2::encode_block(instr, buf, labels),
        Code::LDRSH_r_A1_off => LdrshRA1Off::encode_block(instr, buf, labels),
        Code::MUL_A1 => MulA1::encode_block(instr, buf, labels),
        Code::SMUAD_A1 => SmuadA1::encode_block(instr, buf, labels),
        Code::LDRSBT_A1 => LdrsbtA1::encode_block(instr, buf, labels),
        Code::LDRSH_r_A1_pre => LdrshRA1Pre::encode_block(instr, buf, labels),
        Code::LDREX_A1 => LdrexA1::encode_block(instr, buf, labels),
        Code::MCRR_A1 => McrrA1::encode_block(instr, buf, labels),
        Code::STL_A1 => StlA1::encode_block(instr, buf, labels),
        Code::LSLS_MOVS_rr_A1 => LslsMovsRrA1::encode_block(instr, buf, labels),
        Code::HLT_A1 => HltA1::encode_block(instr, buf, labels),
        Code::RSCS_r_A1_RRX => RscsRA1Rrx::encode_block(instr, buf, labels),
        Code::LDRH_l_A1_off => LdrhLA1Off::encode_block(instr, buf, labels),
        Code::UMULL_A1 => UmullA1::encode_block(instr, buf, labels),
        Code::MOV_rr_A1 => MovRrA1::encode_block(instr, buf, labels),
        Code::ROR_MOV_rr_A1 => RorMovRrA1::encode_block(instr, buf, labels),
        Code::SRSIA_A1_AS => SrsiaA1As::encode_block(instr, buf, labels),
        Code::SXTH_A1 => SxthA1::encode_block(instr, buf, labels),
        Code::BL_i_A1 => BlIA1::encode_block(instr, buf, labels),
        Code::LDRSHT_A1 => LdrshtA1::encode_block(instr, buf, labels),
        Code::ADDS_r_A1_RRX => AddsRA1Rrx::encode_block(instr, buf, labels),
        Code::QSUB_A1 => QsubA1::encode_block(instr, buf, labels),
        Code::ANDS_r_A1_RRX => AndsRA1Rrx::encode_block(instr, buf, labels),
        Code::BICS_r_A1 => BicsRA1::encode_block(instr, buf, labels),
        Code::SMLSDX_A1 => SmlsdxA1::encode_block(instr, buf, labels),
        Code::RORS_MOVS_r_A1 => RorsMovsRA1::encode_block(instr, buf, labels),
        Code::UADD16_A1 => Uadd16A1::encode_block(instr, buf, labels),
        Code::LDRH_i_A1_off => LdrhIA1Off::encode_block(instr, buf, labels),
        Code::CMP_r_A1 => CmpRA1::encode_block(instr, buf, labels),
        Code::RFEIB_A1_AS => RfeibA1As::encode_block(instr, buf, labels),
        Code::PSSBB_A1 => PssbbA1::encode_block(instr, buf, labels),
        Code::USAX_A1 => UsaxA1::encode_block(instr, buf, labels),
        Code::RFEDA_A1_AS => RfedaA1As::encode_block(instr, buf, labels),
        Code::LDAB_A1 => LdabA1::encode_block(instr, buf, labels),
        Code::LDRB_i_A1_pre => LdrbIA1Pre::encode_block(instr, buf, labels),
        Code::QADD16_A1 => Qadd16A1::encode_block(instr, buf, labels),
        Code::STREXD_A1 => StrexdA1::encode_block(instr, buf, labels),
        Code::SHSUB8_A1 => Shsub8A1::encode_block(instr, buf, labels),
        Code::CPSIE_A1_ASM => CpsieA1Asm::encode_block(instr, buf, labels),
        Code::CPSID_A1_ASM => CpsidA1Asm::encode_block(instr, buf, labels),
        Code::STRD_i_A1_off => StrdIA1Off::encode_block(instr, buf, labels),
        Code::EOR_r_A1_RRX => EorRA1Rrx::encode_block(instr, buf, labels),
        Code::CMP_i_A1 => CmpIA1::encode_block(instr, buf, labels),
        Code::EORS_r_A1 => EorsRA1::encode_block(instr, buf, labels),
        Code::REV16_A1 => Rev16A1::encode_block(instr, buf, labels),
        Code::LDM_u_A1_AS => LdmUA1As::encode_block(instr, buf, labels),
        Code::CMN_r_A1 => CmnRA1::encode_block(instr, buf, labels),
        Code::RFEDB_A1_AS => RfedbA1As::encode_block(instr, buf, labels),
        Code::CPSIE_A1_AS => CpsieA1As::encode_block(instr, buf, labels),
        Code::BXJ_A1 => BxjA1::encode_block(instr, buf, labels),
        Code::SMULTB_A1 => SmultbA1::encode_block(instr, buf, labels),
        Code::RSBS_rr_A1 => RsbsRrA1::encode_block(instr, buf, labels),
        Code::LDRSHT_A2 => LdrshtA2::encode_block(instr, buf, labels),
        Code::CMP_r_A1_RRX => CmpRA1Rrx::encode_block(instr, buf, labels),
        Code::SMLALTT_A1 => SmlalttA1::encode_block(instr, buf, labels),
        Code::CRC32CH_A1 => Crc32chA1::encode_block(instr, buf, labels),
        Code::LDRSH_r_A1_post => LdrshRA1Post::encode_block(instr, buf, labels),
        Code::ADD_r_A1 => AddRA1::encode_block(instr, buf, labels),
        Code::POP_LDM_A1 => PopLdmA1::encode_block(instr, buf, labels),
        Code::SUBS_SP_r_A1 => SubsSpRA1::encode_block(instr, buf, labels),
        Code::RSB_r_A1_RRX => RsbRA1Rrx::encode_block(instr, buf, labels),
        Code::QADD8_A1 => Qadd8A1::encode_block(instr, buf, labels),
        Code::EOR_r_A1 => EorRA1::encode_block(instr, buf, labels),
        Code::ADC_r_A1_RRX => AdcRA1Rrx::encode_block(instr, buf, labels),
        Code::ADCS_rr_A1 => AdcsRrA1::encode_block(instr, buf, labels),
        Code::ISB_A1 => IsbA1::encode_block(instr, buf, labels),
        Code::SMMUL_A1 => SmmulA1::encode_block(instr, buf, labels),
        Code::BLX_r_A1 => BlxRA1::encode_block(instr, buf, labels),
        Code::SMLAL_A1 => SmlalA1::encode_block(instr, buf, labels),
        Code::SADD8_A1 => Sadd8A1::encode_block(instr, buf, labels),
        Code::SUB_ADR_A2 => SubAdrA2::encode_block(instr, buf, labels),
        Code::LDRSH_l_A1_pre => LdrshLA1Pre::encode_block(instr, buf, labels),
        Code::MCR_A1 => McrA1::encode_block(instr, buf, labels),
        Code::BICS_i_A1 => BicsIA1::encode_block(instr, buf, labels),
        Code::ANDS_r_A1 => AndsRA1::encode_block(instr, buf, labels),
        Code::RSB_rr_A1 => RsbRrA1::encode_block(instr, buf, labels),
        Code::CRC32CB_A1 => Crc32cbA1::encode_block(instr, buf, labels),
        Code::SXTB16_A1 => Sxtb16A1::encode_block(instr, buf, labels),
        Code::MOVS_r_A1 => MovsRA1::encode_block(instr, buf, labels),
        Code::TSB_A1 => TsbA1::encode_block(instr, buf, labels),
        Code::REVSH_A1 => RevshA1::encode_block(instr, buf, labels),
        Code::LDRH_r_A1_post => LdrhRA1Post::encode_block(instr, buf, labels),
        Code::BFC_A1 => BfcA1::encode_block(instr, buf, labels),
        Code::USAD8_A1 => Usad8A1::encode_block(instr, buf, labels),
        Code::SXTAB16_A1 => Sxtab16A1::encode_block(instr, buf, labels),
        Code::ADDS_r_A1 => AddsRA1::encode_block(instr, buf, labels),
        Code::ADCS_i_A1 => AdcsIA1::encode_block(instr, buf, labels),
        Code::SUB_r_A1 => SubRA1::encode_block(instr, buf, labels),
        Code::UMAAL_A1 => UmaalA1::encode_block(instr, buf, labels),
        Code::TEQ_i_A1 => TeqIA1::encode_block(instr, buf, labels),
        Code::RRXS_MOVS_r_A1_RRX => RrxsMovsRA1Rrx::encode_block(instr, buf, labels),
        Code::ADDS_SP_r_A1 => AddsSpRA1::encode_block(instr, buf, labels),
        Code::ROR_MOV_r_A1 => RorMovRA1::encode_block(instr, buf, labels),
        Code::STR_i_A1_off => StrIA1Off::encode_block(instr, buf, labels),
        Code::STRB_i_A1_off => StrbIA1Off::encode_block(instr, buf, labels),
        Code::LDRSH_i_A1_post => LdrshIA1Post::encode_block(instr, buf, labels),
        Code::LDR_i_A1_post => LdrIA1Post::encode_block(instr, buf, labels),
        Code::LDAEX_A1 => LdaexA1::encode_block(instr, buf, labels),
        Code::LDAEXH_A1 => LdaexhA1::encode_block(instr, buf, labels),
        Code::SBC_r_A1_RRX => SbcRA1Rrx::encode_block(instr, buf, labels),
        Code::ADR_A2 => AdrA2::encode_block(instr, buf, labels),
        Code::ADDS_i_A1 => AddsIA1::encode_block(instr, buf, labels),
        Code::UDIV_A1 => UdivA1::encode_block(instr, buf, labels),
        Code::SUB_SP_i_A1 => SubSpIA1::encode_block(instr, buf, labels),
        Code::BFI_A1 => BfiA1::encode_block(instr, buf, labels),
        Code::SUBS_rr_A1 => SubsRrA1::encode_block(instr, buf, labels),
        Code::SXTAH_A1 => SxtahA1::encode_block(instr, buf, labels),
        Code::BICS_rr_A1 => BicsRrA1::encode_block(instr, buf, labels),
        Code::CMN_i_A1 => CmnIA1::encode_block(instr, buf, labels),
        Code::AND_i_A1 => AndIA1::encode_block(instr, buf, labels),
        Code::STRBT_A1 => StrbtA1::encode_block(instr, buf, labels),
        Code::QADD_A1 => QaddA1::encode_block(instr, buf, labels),
        Code::RSBS_r_A1 => RsbsRA1::encode_block(instr, buf, labels),
        Code::CRC32W_A1 => Crc32wA1::encode_block(instr, buf, labels),
        Code::RORS_MOVS_rr_A1 => RorsMovsRrA1::encode_block(instr, buf, labels),
        Code::UXTAB_A1 => UxtabA1::encode_block(instr, buf, labels),
        Code::MRRC_A1 => MrrcA1::encode_block(instr, buf, labels),
        Code::LDRB_r_A1_pre => LdrbRA1Pre::encode_block(instr, buf, labels),
        Code::SEV_A1 => SevA1::encode_block(instr, buf, labels),
        Code::SMLALBT_A1 => SmlalbtA1::encode_block(instr, buf, labels),
        Code::LDRD_l_A1_post => LdrdLA1Post::encode_block(instr, buf, labels),
        Code::LDREXD_A1 => LdrexdA1::encode_block(instr, buf, labels),
        Code::SMLABB_A1 => SmlabbA1::encode_block(instr, buf, labels),
        Code::EORS_r_A1_RRX => EorsRA1Rrx::encode_block(instr, buf, labels),
        Code::RSCS_i_A1 => RscsIA1::encode_block(instr, buf, labels),
        Code::SSUB16_A1 => Ssub16A1::encode_block(instr, buf, labels),
        Code::CRC32CW_A1 => Crc32cwA1::encode_block(instr, buf, labels),
        Code::LDAEXB_A1 => LdaexbA1::encode_block(instr, buf, labels),
        Code::UDF_A1 => UdfA1::encode_block(instr, buf, labels),
        Code::STMDA_A1 => StmdaA1::encode_block(instr, buf, labels),
        Code::SMLSLDX_A1 => SmlsldxA1::encode_block(instr, buf, labels),
        Code::SMULTT_A1 => SmulttA1::encode_block(instr, buf, labels),
        Code::STMDB_A1 => StmdbA1::encode_block(instr, buf, labels),
        Code::SMMULR_A1 => SmmulrA1::encode_block(instr, buf, labels),
        Code::LDRT_A2 => LdrtA2::encode_block(instr, buf, labels),
        Code::UASX_A1 => UasxA1::encode_block(instr, buf, labels),
        Code::PLI_i_A1 => PliIA1::encode_block(instr, buf, labels),
        Code::LDRH_l_A1_pre => LdrhLA1Pre::encode_block(instr, buf, labels),
        Code::SMULL_A1 => SmullA1::encode_block(instr, buf, labels),
        Code::STC_A1_pre => StcA1Pre::encode_block(instr, buf, labels),
        Code::SEL_A1 => SelA1::encode_block(instr, buf, labels),
        Code::SMLALBB_A1 => SmlalbbA1::encode_block(instr, buf, labels),
        Code::ADD_SP_r_A1 => AddSpRA1::encode_block(instr, buf, labels),
        Code::TEQ_r_A1 => TeqRA1::encode_block(instr, buf, labels),
        Code::LDRSH_l_A1_off => LdrshLA1Off::encode_block(instr, buf, labels),
        Code::SBC_i_A1 => SbcIA1::encode_block(instr, buf, labels),
        Code::SRSDB_A1_AS => SrsdbA1As::encode_block(instr, buf, labels),
        Code::PLI_r_A1 => PliRA1::encode_block(instr, buf, labels),
        Code::STRB_i_A1_pre => StrbIA1Pre::encode_block(instr, buf, labels),
        Code::SMULWT_A1 => SmulwtA1::encode_block(instr, buf, labels),
        Code::ORR_rr_A1 => OrrRrA1::encode_block(instr, buf, labels),
        Code::CRC32B_A1 => Crc32bA1::encode_block(instr, buf, labels),
        Code::TEQ_rr_A1 => TeqRrA1::encode_block(instr, buf, labels),
        Code::LDC_l_A1_unind => LdcLA1Unind::encode_block(instr, buf, labels),
        Code::LDRSB_i_A1_pre => LdrsbIA1Pre::encode_block(instr, buf, labels),
        Code::LDR_r_A1_pre => LdrRA1Pre::encode_block(instr, buf, labels),
        Code::UXTAB16_A1 => Uxtab16A1::encode_block(instr, buf, labels),
        Code::STREX_A1 => StrexA1::encode_block(instr, buf, labels),
        Code::UQSUB8_A1 => Uqsub8A1::encode_block(instr, buf, labels),
        Code::YIELD_A1 => YieldA1::encode_block(instr, buf, labels),
        Code::LDRB_r_A1_off => LdrbRA1Off::encode_block(instr, buf, labels),
        Code::USAT_A1_ASR => UsatA1Asr::encode_block(instr, buf, labels),
        Code::CLREX_A1 => ClrexA1::encode_block(instr, buf, labels),
        Code::USADA8_A1 => Usada8A1::encode_block(instr, buf, labels),
        Code::RSC_i_A1 => RscIA1::encode_block(instr, buf, labels),
        Code::CMN_rr_A1 => CmnRrA1::encode_block(instr, buf, labels),
        Code::SMUSDX_A1 => SmusdxA1::encode_block(instr, buf, labels),
        Code::STRHT_A2 => StrhtA2::encode_block(instr, buf, labels),
        Code::RSC_r_A1_RRX => RscRA1Rrx::encode_block(instr, buf, labels),
        Code::MOVT_A1 => MovtA1::encode_block(instr, buf, labels),
        Code::UXTB16_A1 => Uxtb16A1::encode_block(instr, buf, labels),
        Code::LDRD_r_A1_off => LdrdRA1Off::encode_block(instr, buf, labels),
        Code::LDREXB_A1 => LdrexbA1::encode_block(instr, buf, labels),
        Code::SMLATB_A1 => SmlatbA1::encode_block(instr, buf, labels),
        Code::LDM_e_A1_AS => LdmEA1As::encode_block(instr, buf, labels),
        Code::ERET_A1 => EretA1::encode_block(instr, buf, labels),
        Code::REV_A1 => RevA1::encode_block(instr, buf, labels),
        Code::SSAT_A1_ASR => SsatA1Asr::encode_block(instr, buf, labels),
        Code::LDR_l_A1_pre => LdrLA1Pre::encode_block(instr, buf, labels),
        Code::LSLS_MOVS_r_A1 => LslsMovsRA1::encode_block(instr, buf, labels),
        Code::SMLABT_A1 => SmlabtA1::encode_block(instr, buf, labels),
        Code::BIC_rr_A1 => BicRrA1::encode_block(instr, buf, labels),
        Code::MRS_br_A1_AS => MrsBrA1As::encode_block(instr, buf, labels),
        Code::SBCS_i_A1 => SbcsIA1::encode_block(instr, buf, labels),
        Code::AND_r_A1_RRX => AndRA1Rrx::encode_block(instr, buf, labels),
        Code::PLD_r_A1 => PldRA1::encode_block(instr, buf, labels),
        Code::ORR_i_A1 => OrrIA1::encode_block(instr, buf, labels),
        Code::LDRD_i_A1_pre => LdrdIA1Pre::encode_block(instr, buf, labels),
        Code::STC_A1_off => StcA1Off::encode_block(instr, buf, labels),
        Code::STREXH_A1 => StrexhA1::encode_block(instr, buf, labels),
        Code::SSUB8_A1 => Ssub8A1::encode_block(instr, buf, labels),
        Code::SUBS_SP_r_A1_RRX => SubsSpRA1Rrx::encode_block(instr, buf, labels),
        Code::ORRS_i_A1 => OrrsIA1::encode_block(instr, buf, labels),
        Code::UHSUB8_A1 => Uhsub8A1::encode_block(instr, buf, labels),
        Code::STRD_r_A1_post => StrdRA1Post::encode_block(instr, buf, labels),
        Code::STRH_i_A1_pre => StrhIA1Pre::encode_block(instr, buf, labels),
        Code::LDRT_A1 => LdrtA1::encode_block(instr, buf, labels),
        Code::SMLALDX_A1 => SmlaldxA1::encode_block(instr, buf, labels),
        Code::UHASX_A1 => UhasxA1::encode_block(instr, buf, labels),
        Code::ADD_rr_A1 => AddRrA1::encode_block(instr, buf, labels),
        Code::LDRD_l_A1_off => LdrdLA1Off::encode_block(instr, buf, labels),
        Code::UADD8_A1 => Uadd8A1::encode_block(instr, buf, labels),
        Code::SUB_SP_r_A1_RRX => SubSpRA1Rrx::encode_block(instr, buf, labels),
        Code::LDRSH_l_A1_post => LdrshLA1Post::encode_block(instr, buf, labels),
        Code::SHADD8_A1 => Shadd8A1::encode_block(instr, buf, labels),
        Code::ANDS_rr_A1 => AndsRrA1::encode_block(instr, buf, labels),
        Code::LDR_i_A1_pre => LdrIA1Pre::encode_block(instr, buf, labels),
        Code::STRH_r_A1_pre => StrhRA1Pre::encode_block(instr, buf, labels),
        Code::TST_r_A1 => TstRA1::encode_block(instr, buf, labels),
        Code::MOV_i_A1 => MovIA1::encode_block(instr, buf, labels),
        Code::MSR_i_A1_AS => MsrIA1As::encode_block(instr, buf, labels),
        Code::SBCS_r_A1 => SbcsRA1::encode_block(instr, buf, labels),
        Code::STRB_r_A1_post => StrbRA1Post::encode_block(instr, buf, labels),
        Code::STREXB_A1 => StrexbA1::encode_block(instr, buf, labels),
        Code::STLEXD_A1 => StlexdA1::encode_block(instr, buf, labels),
        Code::LDRH_r_A1_off => LdrhRA1Off::encode_block(instr, buf, labels),
        Code::LDR_i_A1_off => LdrIA1Off::encode_block(instr, buf, labels),
        Code::SMLAD_A1 => SmladA1::encode_block(instr, buf, labels),
        Code::MVN_i_A1 => MvnIA1::encode_block(instr, buf, labels),
        Code::NOP_A1 => NopA1::encode_block(instr, buf, labels),
        Code::MRS_A1_AS => MrsA1As::encode_block(instr, buf, labels),
        Code::SBC_r_A1 => SbcRA1::encode_block(instr, buf, labels),
        Code::ADD_i_A1 => AddIA1::encode_block(instr, buf, labels),
        Code::TST_i_A1 => TstIA1::encode_block(instr, buf, labels),
        Code::TST_rr_A1 => TstRrA1::encode_block(instr, buf, labels),
        Code::PKHBT_A1 => PkhbtA1::encode_block(instr, buf, labels),
        Code::UMLAL_A1 => UmlalA1::encode_block(instr, buf, labels),
        Code::PLDW_l_A1 => PldwLA1::encode_block(instr, buf, labels),
        Code::PLD_l_A1 => PldLA1::encode_block(instr, buf, labels),
        Code::MOVS_i_A1 => MovsIA1::encode_block(instr, buf, labels),
        Code::SMLAWT_A1 => SmlawtA1::encode_block(instr, buf, labels),
        Code::LDRSH_i_A1_off => LdrshIA1Off::encode_block(instr, buf, labels),
        Code::UHADD16_A1 => Uhadd16A1::encode_block(instr, buf, labels),
        Code::ADC_rr_A1 => AdcRrA1::encode_block(instr, buf, labels),
        Code::QSUB8_A1 => Qsub8A1::encode_block(instr, buf, labels),
        Code::SSAT16_A1 => Ssat16A1::encode_block(instr, buf, labels),
        Code::SUBS_r_A1_RRX => SubsRA1Rrx::encode_block(instr, buf, labels),
        Code::LDRB_l_A1_pre => LdrbLA1Pre::encode_block(instr, buf, labels),
        Code::STRB_r_A1_pre => StrbRA1Pre::encode_block(instr, buf, labels),
        Code::ASRS_MOVS_r_A1 => AsrsMovsRA1::encode_block(instr, buf, labels),
        Code::BX_A1 => BxA1::encode_block(instr, buf, labels),
        Code::SMMLSR_A1 => SmmlsrA1::encode_block(instr, buf, labels),
        Code::ORRS_rr_A1 => OrrsRrA1::encode_block(instr, buf, labels),
        Code::SUB_r_A1_RRX => SubRA1Rrx::encode_block(instr, buf, labels),
        Code::LDRSBT_A2 => LdrsbtA2::encode_block(instr, buf, labels),
        Code::LDRH_r_A1_pre => LdrhRA1Pre::encode_block(instr, buf, labels),
        Code::UHADD8_A1 => Uhadd8A1::encode_block(instr, buf, labels),
        Code::LDC_i_A1_pre => LdcIA1Pre::encode_block(instr, buf, labels),
        Code::QASX_A1 => QasxA1::encode_block(instr, buf, labels),
        Code::WFI_A1 => WfiA1::encode_block(instr, buf, labels),
        Code::SMULLS_A1 => SmullsA1::encode_block(instr, buf, labels),
        Code::LSRS_MOVS_rr_A1 => LsrsMovsRrA1::encode_block(instr, buf, labels),
        Code::ADDS_rr_A1 => AddsRrA1::encode_block(instr, buf, labels),
        Code::SMMLAR_A1 => SmmlarA1::encode_block(instr, buf, labels),
        Code::LSR_MOV_rr_A1 => LsrMovRrA1::encode_block(instr, buf, labels),
        Code::ORR_r_A1 => OrrRA1::encode_block(instr, buf, labels),
        Code::SMUADX_A1 => SmuadxA1::encode_block(instr, buf, labels),
        Code::LDRD_i_A1_post => LdrdIA1Post::encode_block(instr, buf, labels),
        Code::ADDS_SP_r_A1_RRX => AddsSpRA1Rrx::encode_block(instr, buf, labels),
        Code::ANDS_i_A1 => AndsIA1::encode_block(instr, buf, labels),
        Code::EORS_i_A1 => EorsIA1::encode_block(instr, buf, labels),
        Code::WFE_A1 => WfeA1::encode_block(instr, buf, labels),
        Code::STMIB_A1 => StmibA1::encode_block(instr, buf, labels),
        Code::LDRBT_A2 => LdrbtA2::encode_block(instr, buf, labels),
        Code::LDRSB_r_A1_off => LdrsbRA1Off::encode_block(instr, buf, labels),
        Code::LDRB_i_A1_off => LdrbIA1Off::encode_block(instr, buf, labels),
        Code::SSBB_A1 => SsbbA1::encode_block(instr, buf, labels),
        Code::STRD_i_A1_post => StrdIA1Post::encode_block(instr, buf, labels),
        Code::STLEXH_A1 => StlexhA1::encode_block(instr, buf, labels),
        Code::MOVS_r_A1_RRX => MovsRA1Rrx::encode_block(instr, buf, labels),
        Code::LDRSB_l_A1_pre => LdrsbLA1Pre::encode_block(instr, buf, labels),
        Code::RRX_MOV_r_A1_RRX => RrxMovRA1Rrx::encode_block(instr, buf, labels),
        Code::TEQ_r_A1_RRX => TeqRA1Rrx::encode_block(instr, buf, labels),
        Code::MLS_A1 => MlsA1::encode_block(instr, buf, labels),
        Code::LDRBT_A1 => LdrbtA1::encode_block(instr, buf, labels),
        Code::PKHTB_A1 => PkhtbA1::encode_block(instr, buf, labels),
        Code::SHSUB16_A1 => Shsub16A1::encode_block(instr, buf, labels),
        Code::SMLSD_A1 => SmlsdA1::encode_block(instr, buf, labels),
        Code::SSAX_A1 => SsaxA1::encode_block(instr, buf, labels),
        Code::SMULBB_A1 => SmulbbA1::encode_block(instr, buf, labels),
        Code::STRH_i_A1_off => StrhIA1Off::encode_block(instr, buf, labels),
        Code::BICS_r_A1_RRX => BicsRA1Rrx::encode_block(instr, buf, labels),
        Code::MVN_r_A1_RRX => MvnRA1Rrx::encode_block(instr, buf, labels),
        Code::MLAS_A1 => MlasA1::encode_block(instr, buf, labels),
        Code::LDAEXD_A1 => LdaexdA1::encode_block(instr, buf, labels),
        Code::BIC_r_A1 => BicRA1::encode_block(instr, buf, labels),
        Code::LDRSB_r_A1_post => LdrsbRA1Post::encode_block(instr, buf, labels),
        Code::RBIT_A1 => RbitA1::encode_block(instr, buf, labels),
        Code::PLD_i_A1 => PldIA1::encode_block(instr, buf, labels),
        Code::SMLSLD_A1 => SmlsldA1::encode_block(instr, buf, labels),
        Code::DBG_A1 => DbgA1::encode_block(instr, buf, labels),
        Code::LDRB_r_A1_post => LdrbRA1Post::encode_block(instr, buf, labels),
        Code::LDRD_r_A1_pre => LdrdRA1Pre::encode_block(instr, buf, labels),
        Code::LDMIB_A1 => LdmibA1::encode_block(instr, buf, labels),
        Code::ASR_MOV_r_A1 => AsrMovRA1::encode_block(instr, buf, labels),
        Code::ADCS_r_A1 => AdcsRA1::encode_block(instr, buf, labels),
        Code::SMLALD_A1 => SmlaldA1::encode_block(instr, buf, labels),
        Code::STLEX_A1 => StlexA1::encode_block(instr, buf, labels),
        Code::AND_rr_A1 => AndRrA1::encode_block(instr, buf, labels),
        Code::SMMLA_A1 => SmmlaA1::encode_block(instr, buf, labels),
        Code::QDSUB_A1 => QdsubA1::encode_block(instr, buf, labels),
        Code::UHSUB16_A1 => Uhsub16A1::encode_block(instr, buf, labels),
        Code::STRHT_A1 => StrhtA1::encode_block(instr, buf, labels),
        Code::ADDS_SP_i_A1 => AddsSpIA1::encode_block(instr, buf, labels),
        Code::QSUB16_A1 => Qsub16A1::encode_block(instr, buf, labels),
        Code::STRT_A2 => StrtA2::encode_block(instr, buf, labels),
        Code::ADD_ADR_A1 => AddAdrA1::encode_block(instr, buf, labels),
        Code::ADD_SP_r_A1_RRX => AddSpRA1Rrx::encode_block(instr, buf, labels),
        Code::PLDW_r_A1_RRX => PldwRA1Rrx::encode_block(instr, buf, labels),
        Code::MVNS_r_A1 => MvnsRA1::encode_block(instr, buf, labels),
        Code::UQADD8_A1 => Uqadd8A1::encode_block(instr, buf, labels),
        Code::SXTB_A1 => SxtbA1::encode_block(instr, buf, labels),
        Code::LDRSH_i_A1_pre => LdrshIA1Pre::encode_block(instr, buf, labels),
        Code::MULS_A1 => MulsA1::encode_block(instr, buf, labels),
        Code::STRD_r_A1_pre => StrdRA1Pre::encode_block(instr, buf, labels),
        Code::SHSAX_A1 => ShsaxA1::encode_block(instr, buf, labels),
        Code::SUBS_SP_i_A1 => SubsSpIA1::encode_block(instr, buf, labels),
        Code::CMN_r_A1_RRX => CmnRA1Rrx::encode_block(instr, buf, labels),
        Code::LDRD_i_A1_off => LdrdIA1Off::encode_block(instr, buf, labels),
        Code::UQSAX_A1 => UqsaxA1::encode_block(instr, buf, labels),
        Code::SBFX_A1 => SbfxA1::encode_block(instr, buf, labels),
        Code::UQADD16_A1 => Uqadd16A1::encode_block(instr, buf, labels),
        Code::PUSH_STR_i_A1_pre => PushStrIA1Pre::encode_block(instr, buf, labels),
        Code::BIC_i_A1 => BicIA1::encode_block(instr, buf, labels),
        Code::PUSH_STMDB_A1 => PushStmdbA1::encode_block(instr, buf, labels),
        Code::STLEXB_A1 => StlexbA1::encode_block(instr, buf, labels),
        Code::RSCS_r_A1 => RscsRA1::encode_block(instr, buf, labels),
        Code::SMLAWB_A1 => SmlawbA1::encode_block(instr, buf, labels),
        Code::STRH_r_A1_post => StrhRA1Post::encode_block(instr, buf, labels),
        Code::POP_LDR_i_A1_post => PopLdrIA1Post::encode_block(instr, buf, labels),
        Code::HVC_A1 => HvcA1::encode_block(instr, buf, labels),
        Code::STRD_r_A1_off => StrdRA1Off::encode_block(instr, buf, labels),
        Code::CPSID_A1_AS => CpsidA1As::encode_block(instr, buf, labels),
        Code::SMC_A1_AS => SmcA1As::encode_block(instr, buf, labels),
        Code::USUB8_A1 => Usub8A1::encode_block(instr, buf, labels),
        Code::PLDW_r_A1 => PldwRA1::encode_block(instr, buf, labels),
    }
}