%PDF- %PDF-
Mini Shell

Mini Shell

Direktori : /usr/local/go/src/cmd/asm/internal/asm/testdata/
Upload File :
Create Path :
Current File : //usr/local/go/src/cmd/asm/internal/asm/testdata/arm64.s

// Copyright 2015 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// This input was created by taking the instruction productions in
// the old assembler's (7a's) grammar and hand-writing complete
// instructions for each rule, to guarantee we cover the same space.

#include "../../../../../runtime/textflag.h"

TEXT	foo(SB), DUPOK|NOSPLIT, $-8


// arithmetic operations
	ADDW	$1, R2, R3
	ADDW	R1, R2, R3
	ADDW	R1, ZR, R3
	ADD	$1, R2, R3
	ADD	R1, R2, R3
	ADD	R1, ZR, R3
	ADD	$1, R2, R3
	ADDW	$1, R2
	ADDW	R1, R2
	ADD	$1, R2
	ADD	R1, R2
	ADD	R1>>11, R2
	ADD	R1<<22, R2
	ADD	R1->33, R2
	ADD	$0x000aaa, R2, R3               // ADD $2730, R2, R3                      // 43a82a91
	ADD	$0x000aaa, R2                   // ADD $2730, R2                          // 42a82a91
	ADD	$0xaaa000, R2, R3               // ADD $11182080, R2, R3                  // 43a86a91
	ADD	$0xaaa000, R2                   // ADD $11182080, R2                      // 42a86a91
	ADD	$0xaaaaaa, R2, R3               // ADD $11184810, R2, R3                  // 43a82a9163a86a91
	ADD	$0xaaaaaa, R2                   // ADD $11184810, R2                      // 42a82a9142a86a91
	SUB	$0x000aaa, R2, R3               // SUB $2730, R2, R3                      // 43a82ad1
	SUB	$0x000aaa, R2                   // SUB $2730, R2                          // 42a82ad1
	SUB	$0xaaa000, R2, R3               // SUB $11182080, R2, R3                  // 43a86ad1
	SUB	$0xaaa000, R2                   // SUB $11182080, R2                      // 42a86ad1
	SUB	$0xaaaaaa, R2, R3               // SUB $11184810, R2, R3                  // 43a82ad163a86ad1
	SUB	$0xaaaaaa, R2                   // SUB $11184810, R2                      // 42a82ad142a86ad1
	ADDW	$0x60060, R2                    // ADDW	$393312, R2                       // 4280011142804111
	ADD	$0x186a0, R2, R5                // ADD	$100000, R2, R5                   // 45801a91a5604091
	SUB	$0xe7791f700, R3, R1            // SUB	$62135596800, R3, R1              // 1be09ed23bf2aef2db01c0f261001bcb
	ADD	$0x3fffffffc000, R5             // ADD	$70368744161280, R5               // fb7f72b2a5001b8b
	ADD	R1>>11, R2, R3
	ADD	R1<<22, R2, R3
	ADD	R1->33, R2, R3
	AND	R1@>33, R2, R3
	ADD	R1.UXTB, R2, R3                 // 4300218b
	ADD	R1.UXTB<<4, R2, R3              // 4310218b
	ADD	R2, RSP, RSP                    // ff63228b
	ADD	R2.SXTX<<1, RSP, RSP            // ffe7228b
	ADD	ZR.SXTX<<1, R2, R3              // 43e43f8b
	ADDW	R2.SXTW, R10, R12               // 4cc1220b
	ADD	R19.UXTX, R14, R17              // d161338b
	ADDSW	R19.UXTW, R14, R17              // d141332b
	ADDS	R12.SXTX, R3, R1                // 61e02cab
	SUB	R19.UXTH<<4, R2, R21            // 553033cb
	SUBW	R1.UXTX<<1, R3, R2              // 6264214b
	SUBS	R3.UXTX, R8, R9                 // 096123eb
	SUBSW	R17.UXTH, R15, R21              // f521316b
	SUBW	ZR<<14, R19, R13                // 6d3a1f4b
	CMP	R2.SXTH, R13                    // bfa122eb
	CMN	R1.SXTX<<2, R10                 // 5fe921ab
	CMPW	R2.UXTH<<3, R11                 // 7f2d226b
	CMNW	R1.SXTB, R9                     // 3f81212b
	ADD	R1<<1, RSP, R3                  // e367218b
	ADDW	R1<<2, R3, RSP                  // 7f48210b
	SUB	R1<<3, RSP                      // ff6f21cb
	SUBS	R1<<4, RSP, R3                  // e37321eb
	ADDS	R1<<1, RSP, R4                  // e46721ab
	CMP	R1<<2, RSP                      // ff6b21eb
	CMN	R1<<3, RSP                      // ff6f21ab
	ADDS	R1<<1, ZR, R4                   // e40701ab
	ADD	R3<<50, ZR, ZR                  // ffcb038b
	CMP	R4<<24, ZR                      // ff6304eb
	CMPW	$0x60060, R2                    // CMPW	$393312, R2                       // 1b0c8052db00a0725f001b6b
	CMPW	$40960, R0                      // 1f284071
	CMPW	$27745, R2                      // 3b8c8d525f001b6b
	CMNW	$0x3fffffc0, R2                 // CMNW	$1073741760, R2                   // fb5f1a325f001b2b
	CMPW	$0xffff0, R1                    // CMPW	$1048560, R1                      // fb3f1c323f001b6b
	CMP	$0xffffffffffa0, R3             // CMP	$281474976710560, R3              // fb0b80921b00e0f27f001beb
	CMP	$0xf4240, R1                    // CMP	$1000000, R1                      // 1b4888d2fb01a0f23f001beb
	CMP     $3343198598084851058, R3        // 5bae8ed2db8daef23badcdf2bbcce5f27f001beb
	CMP	$3, R2
	CMP	R1, R2
	CMP	R1->11, R2
	CMP	R1>>22, R2
	CMP	R1<<33, R2
	CMP	R22.SXTX, RSP                    // ffe336eb
	CMP	$0x22220000, RSP                 // CMP $572653568, RSP   // 5b44a4d2ff633beb
	CMPW	$0x22220000, RSP                 // CMPW $572653568, RSP  // 5b44a452ff433b6b
	CCMN	MI, ZR, R1, $4	                 // e44341ba
	// MADD Rn,Rm,Ra,Rd
	MADD	R1, R2, R3, R4                   // 6408019b
	// CLS
	CLSW	R1, R2
	CLS	R1, R2

// fp/simd instructions.
	VADDP	V1.B16, V2.B16, V3.B16          // 43bc214e
	VADDP	V1.S4, V2.S4, V3.S4             // 43bca14e
	VADDP	V1.D2, V2.D2, V3.D2             // 43bce14e
	VAND	V21.B8, V12.B8, V3.B8           // 831d350e
	VCMEQ	V1.H4, V2.H4, V3.H4             // 438c612e
	VORR	V5.B16, V4.B16, V3.B16          // 831ca54e
	VADD	V16.S4, V5.S4, V9.S4            // a984b04e
	VEOR	V0.B16, V1.B16, V0.B16          // 201c206e
	VADDV	V0.S4, V0                       // 00b8b14e
	VMOVI	$82, V0.B16                     // 40e6024f
	VUADDLV	V6.B16, V6                      // c638306e
	VADD	V1, V2, V3                      // 4384e15e
	VADD	V1, V3, V3                      // 6384e15e
	VSUB	V12, V30, V30                   // de87ec7e
	VSUB	V12, V20, V30                   // 9e86ec7e
	VFMLA	V1.D2, V12.D2, V1.D2            // 81cd614e
	VFMLA	V1.S2, V12.S2, V1.S2            // 81cd210e
	VFMLA	V1.S4, V12.S4, V1.S4            // 81cd214e
	VFMLS	V1.D2, V12.D2, V1.D2            // 81cde14e
	VFMLS	V1.S2, V12.S2, V1.S2            // 81cda10e
	VFMLS	V1.S4, V12.S4, V1.S4            // 81cda14e
	VEXT	$4, V2.B8, V1.B8, V3.B8         // 2320022e
	VEXT	$8, V2.B16, V1.B16, V3.B16      // 2340026e
	VRBIT	V24.B16, V24.B16                // 185b606e
	VRBIT	V24.B8, V24.B8                  // 185b602e
	VUSHR	$56, V1.D2, V2.D2               // 2204486f
	VUSHR	$24, V1.S4, V2.S4               // 2204286f
	VUSHR	$24, V1.S2, V2.S2               // 2204282f
	VUSHR	$8, V1.H4, V2.H4                // 2204182f
	VUSHR	$8, V1.H8, V2.H8                // 2204186f
	VUSHR	$2, V1.B8, V2.B8                // 22040e2f
	VUSHR	$2, V1.B16, V2.B16              // 22040e6f
	VSHL	$56, V1.D2, V2.D2               // 2254784f
	VSHL	$24, V1.S4, V2.S4               // 2254384f
	VSHL	$24, V1.S2, V2.S2               // 2254380f
	VSHL	$8, V1.H4, V2.H4                // 2254180f
	VSHL	$8, V1.H8, V2.H8                // 2254184f
	VSHL	$2, V1.B8, V2.B8                // 22540a0f
	VSHL	$2, V1.B16, V2.B16              // 22540a4f
	VSRI	$56, V1.D2, V2.D2               // 2244486f
	VSRI	$24, V1.S4, V2.S4               // 2244286f
	VSRI	$24, V1.S2, V2.S2               // 2244282f
	VSRI	$8, V1.H4, V2.H4                // 2244182f
	VSRI	$8, V1.H8, V2.H8                // 2244186f
	VSRI	$2, V1.B8, V2.B8                // 22440e2f
	VSRI	$2, V1.B16, V2.B16              // 22440e6f
	VSLI	$7, V2.B16, V3.B16              // 43540f6f
	VSLI	$15, V3.H4, V4.H4               // 64541f2f
	VSLI	$31, V5.S4, V6.S4               // a6543f6f
	VSLI	$63, V7.D2, V8.D2               // e8547f6f
	VUSRA	$8, V2.B16, V3.B16              // 4314086f
	VUSRA	$16, V3.H4, V4.H4               // 6414102f
	VUSRA	$32, V5.S4, V6.S4               // a614206f
	VUSRA	$64, V7.D2, V8.D2               // e814406f
	VTBL	V22.B16, [V28.B16, V29.B16], V11.B16                                    // 8b23164e
	VTBL	V18.B8, [V17.B16, V18.B16, V19.B16], V22.B8                             // 3642120e
	VTBL	V31.B8, [V14.B16, V15.B16, V16.B16, V17.B16], V15.B8                    // cf611f0e
	VTBL	V14.B16, [V16.B16], V11.B16                                             // 0b020e4e
	VTBL	V28.B16, [V25.B16, V26.B16], V5.B16                                     // 25231c4e
	VTBL	V16.B8, [V4.B16, V5.B16, V6.B16], V12.B8                                // 8c40100e
	VTBL	V4.B8, [V16.B16, V17.B16, V18.B16, V19.B16], V4.B8                      // 0462040e
	VTBL	V15.B8, [V1.B16], V20.B8                                                // 34000f0e
	VTBL	V26.B16, [V2.B16, V3.B16], V26.B16                                      // 5a201a4e
	VTBL	V15.B8, [V6.B16, V7.B16, V8.B16], V2.B8                                 // c2400f0e
	VTBL	V2.B16, [V27.B16, V28.B16, V29.B16, V30.B16], V18.B16                   // 7263024e
	VTBL	V11.B16, [V13.B16], V27.B16                                             // bb010b4e
	VTBL	V3.B8, [V7.B16, V8.B16], V25.B8                                         // f920030e
	VTBL	V14.B16, [V3.B16, V4.B16, V5.B16], V17.B16                              // 71400e4e
	VTBL	V13.B16, [V29.B16, V30.B16, V31.B16, V0.B16], V28.B16                   // bc630d4e
	VTBL	V3.B8, [V27.B16], V8.B8                                                 // 6803030e
	VZIP1	V16.H8, V3.H8, V19.H8           // 7338504e
	VZIP2	V22.D2, V25.D2, V21.D2          // 357bd64e
	VZIP1	V6.D2, V9.D2, V11.D2            // 2b39c64e
	VZIP2	V10.D2, V13.D2, V3.D2           // a379ca4e
	VZIP1	V17.S2, V4.S2, V26.S2           // 9a38910e
	VZIP2	V25.S2, V14.S2, V25.S2          // d979990e
	VUXTL	V30.B8, V30.H8                  // dea7082f
	VUXTL	V30.H4, V29.S4                  // dda7102f
	VUXTL	V29.S2, V2.D2                   // a2a7202f
	VUXTL2	V30.H8, V30.S4                  // dea7106f
	VUXTL2	V29.S4, V2.D2                   // a2a7206f
	VUXTL2	V30.B16, V2.H8                  // c2a7086f
	VBIT	V21.B16, V25.B16, V4.B16        // 241fb56e
	VBSL	V23.B16, V3.B16, V7.B16         // 671c776e
	VCMTST	V2.B8, V29.B8, V2.B8            // a28f220e
	VCMTST	V2.D2, V23.D2, V3.D2            // e38ee24e
	VSUB	V2.B8, V30.B8, V30.B8           // de87222e
	VUZP1	V0.B8, V30.B8, V1.B8            // c11b000e
	VUZP1	V1.B16, V29.B16, V2.B16         // a21b014e
	VUZP1	V2.H4, V28.H4, V3.H4            // 831b420e
	VUZP1	V3.H8, V27.H8, V4.H8            // 641b434e
	VUZP1	V28.S2, V2.S2, V5.S2            // 45189c0e
	VUZP1	V29.S4, V1.S4, V6.S4            // 26189d4e
	VUZP1	V30.D2, V0.D2, V7.D2            // 0718de4e
	VUZP2	V0.D2, V30.D2, V1.D2            // c15bc04e
	VUZP2	V30.D2, V0.D2, V29.D2           // 1d58de4e
	VUSHLL	$0, V30.B8, V30.H8              // dea7082f
	VUSHLL	$0, V30.H4, V29.S4              // dda7102f
	VUSHLL	$0, V29.S2, V2.D2               // a2a7202f
	VUSHLL2	$0, V30.B16, V2.H8              // c2a7086f
	VUSHLL2	$0, V30.H8, V30.S4              // dea7106f
	VUSHLL2	$0, V29.S4, V2.D2               // a2a7206f
	VUSHLL	$7, V30.B8, V30.H8              // dea70f2f
	VUSHLL	$15, V30.H4, V29.S4             // dda71f2f
	VUSHLL2	$31, V30.S4, V2.D2              // c2a73f6f
	VBIF	V0.B8, V30.B8, V1.B8            // c11fe02e
	VBIF	V30.B16, V0.B16, V2.B16         // 021cfe6e
	FMOVS	$(4.0), F0                      // 0010221e
	FMOVD	$(4.0), F0                      // 0010621e
	FMOVS	$(0.265625), F1                 // 01302a1e
	FMOVD	$(0.1796875), F2                // 02f0681e
	FMOVS	$(0.96875), F3                  // 03f02d1e
	FMOVD	$(28.0), F4                     // 0490671e
	VUADDW	V9.B8, V12.H8, V14.H8           // 8e11292e
	VUADDW	V13.H4, V10.S4, V11.S4          // 4b116d2e
	VUADDW	V21.S2, V24.D2, V29.D2          // 1d13b52e
	VUADDW2	V9.B16, V12.H8, V14.H8          // 8e11296e
	VUADDW2	V13.H8, V20.S4, V30.S4          // 9e126d6e
	VUADDW2	V21.S4, V24.D2, V29.D2          // 1d13b56e
	VUMAX	V3.B8, V2.B8, V1.B8             // 4164232e
	VUMAX	V3.B16, V2.B16, V1.B16          // 4164236e
	VUMAX	V3.H4, V2.H4, V1.H4             // 4164632e
	VUMAX	V3.H8, V2.H8, V1.H8             // 4164636e
	VUMAX	V3.S2, V2.S2, V1.S2             // 4164a32e
	VUMAX	V3.S4, V2.S4, V1.S4             // 4164a36e
	VUMIN	V3.B8, V2.B8, V1.B8             // 416c232e
	VUMIN	V3.B16, V2.B16, V1.B16          // 416c236e
	VUMIN	V3.H4, V2.H4, V1.H4             // 416c632e
	VUMIN	V3.H8, V2.H8, V1.H8             // 416c636e
	VUMIN	V3.S2, V2.S2, V1.S2             // 416ca32e
	VUMIN	V3.S4, V2.S4, V1.S4             // 416ca36e
	FCCMPS	LT, F1, F2, $1	                // 41b4211e
	FMADDS	F1, F3, F2, F4                  // 440c011f
	FMADDD	F4, F5, F4, F4                  // 8414441f
	FMSUBS	F13, F21, F13, F19              // b3d50d1f
	FMSUBD	F11, F7, F15, F31               // ff9d4b1f
	FNMADDS	F1, F3, F2, F4                  // 440c211f
	FNMADDD	F1, F3, F2, F4                  // 440c611f
	FNMSUBS	F1, F3, F2, F4                  // 448c211f
	FNMSUBD	F1, F3, F2, F4                  // 448c611f
	FADDS	F2, F3, F4                      // 6428221e
	FADDD	F1, F2                          // 4228611e
	VDUP	V19.S[0], V17.S4                // 7106044e


// special
	PRFM	(R2), PLDL1KEEP                 // 400080f9
	PRFM	16(R2), PLDL1KEEP               // 400880f9
	PRFM	48(R6), PSTL2STRM               // d31880f9
	PRFM	8(R12), PLIL3STRM               // 8d0580f9
	PRFM	(R8), $25                       // 190180f9
	PRFM	8(R9), $30                      // 3e0580f9
	NOOP                                    // 1f2003d5
	HINT $0                                 // 1f2003d5
	DMB	$1
	SVC

// encryption
	SHA256H	V9.S4, V3, V2                   // 6240095e
	SHA256H2	V9.S4, V4, V3           // 8350095e
	SHA256SU0	V8.S4, V7.S4            // 0729285e
	SHA256SU1	V6.S4, V5.S4, V7.S4     // a760065e
	SHA1SU0	V11.S4, V8.S4, V6.S4            // 06310b5e
	SHA1SU1	V5.S4, V1.S4                    // a118285e
	SHA1C	V1.S4, V2, V3                   // 4300015e
	SHA1H	V5, V4                          // a408285e
	SHA1M	V8.S4, V7, V6                   // e620085e
	SHA1P	V11.S4, V10, V9                 // 49110b5e
	SHA512H	V2.D2, V1, V0                   // 208062ce
	SHA512H2	V4.D2, V3, V2           // 628464ce
	SHA512SU0	V9.D2, V8.D2            // 2881c0ce
	SHA512SU1	V7.D2, V6.D2, V5.D2     // c58867ce
	VRAX1	V26.D2, V29.D2, V30.D2          // be8f7ace
	VXAR	$63, V27.D2, V21.D2, V26.D2     // bafe9bce
	VPMULL	V2.D1, V1.D1, V3.Q1             // 23e0e20e
	VPMULL2	V2.D2, V1.D2, V4.Q1             // 24e0e24e
	VPMULL	V2.B8, V1.B8, V3.H8             // 23e0220e
	VPMULL2	V2.B16, V1.B16, V4.H8           // 24e0224e
	VEOR3	V2.B16, V7.B16, V12.B16, V25.B16            // 990907ce
	VBCAX	V1.B16, V2.B16, V26.B16, V31.B16            // 5f0722ce
	VREV32	V5.B16, V5.B16                  // a508206e
	VREV64	V2.S2, V3.S2                    // 4308a00e
	VREV64	V2.S4, V3.S4                    // 4308a04e

// logical ops
//
// make sure constants get encoded into an instruction when it could
	AND	R1@>33, R2
	AND	$(1<<63), R1                        // AND	$-9223372036854775808, R1       // 21004192
	AND	$(1<<63-1), R1                      // AND	$9223372036854775807, R1        // 21f84092
	ORR	$(1<<63), R1                        // ORR	$-9223372036854775808, R1       // 210041b2
	ORR	$(1<<63-1), R1                      // ORR	$9223372036854775807, R1        // 21f840b2
	EOR	$(1<<63), R1                        // EOR	$-9223372036854775808, R1       // 210041d2
	EOR	$(1<<63-1), R1                      // EOR	$9223372036854775807, R1        // 21f840d2
	ANDW	$0x3ff00000, R2                     // ANDW	$1072693248, R2                 // 42240c12
	BICW	$0x3ff00000, R2                     // BICW	$1072693248, R2                 // 42540212
	ORRW	$0x3ff00000, R2                     // ORRW	$1072693248, R2                 // 42240c32
	ORNW	$0x3ff00000, R2                     // ORNW	$1072693248, R2                 // 42540232
	EORW	$0x3ff00000, R2                     // EORW	$1072693248, R2                 // 42240c52
	EONW	$0x3ff00000, R2                     // EONW	$1072693248, R2                 // 42540252
	AND	$0x22220000, R3, R4                 // AND	$572653568, R3, R4              // 5b44a4d264001b8a
	ORR	$0x22220000, R3, R4                 // ORR	$572653568, R3, R4              // 5b44a4d264001baa
	EOR	$0x22220000, R3, R4                 // EOR	$572653568, R3, R4              // 5b44a4d264001bca
	BIC	$0x22220000, R3, R4                 // BIC	$572653568, R3, R4              // 5b44a4d264003b8a
	ORN	$0x22220000, R3, R4                 // ORN	$572653568, R3, R4              // 5b44a4d264003baa
	EON	$0x22220000, R3, R4                 // EON	$572653568, R3, R4              // 5b44a4d264003bca
	ANDS	$0x22220000, R3, R4                 // ANDS	$572653568, R3, R4              // 5b44a4d264001bea
	BICS	$0x22220000, R3, R4                 // BICS	$572653568, R3, R4              // 5b44a4d264003bea
	EOR	$0xe03fffffffffffff, R20, R22       // EOR	$-2287828610704211969, R20, R22 // 96e243d2
	TSTW	$0x600000006, R1                    // TSTW	$25769803782, R1                // 3f041f72
	TST	$0x4900000049, R0                   // TST	$313532612681, R0               // 3b0980d23b09c0f21f001bea
	ORR	$0x170000, R2, R1                   // ORR	$1507328, R2, R1                // fb02a0d241001baa
	AND	$0xff00ff, R2                       // AND	$16711935, R2                   // fb1f80d2fb1fa0f242001b8a
	AND	$0xff00ffff, R1                     // AND	$4278255615, R1                 // fbff9fd21be0bff221001b8a
	ANDS	$0xffff, R2                         // ANDS	$65535, R2                      // 423c40f2
	AND	$0x7fffffff, R3                     // AND	$2147483647, R3                 // 63784092
	ANDS	$0x0ffffffff80000000, R2            // ANDS	$-2147483648, R2                // 428061f2
	AND	$0xfffff, R2                        // AND	$1048575, R2                    // 424c4092
	ANDW	$0xf00fffff, R1                     // ANDW	$4027580415, R1                 // 215c0412
	ANDSW	$0xff00ffff, R1                     // ANDSW	$4278255615, R1                 // 215c0872
	TST	$0x11223344, R2                     // TST	$287454020, R2                  // 9b6886d25b24a2f25f001bea
	TSTW	$0xa000, R3                         // TSTW	$40960, R3                      // 1b0094527f001b6a
	BICW	$0xa000, R3                         // BICW	$40960, R3                      // 1b00945263003b0a
	ORRW	$0x1b000, R2, R3                    // ORRW	$110592, R2, R3                 // 1b0096523b00a07243001b2a
	TSTW	$0x500000, R1                       // TSTW	$5242880, R1                    // 1b0aa0523f001b6a
	TSTW	$0xff00ff, R1                       // TSTW	$16711935, R1                   // 3f9c0072
	TSTW	$0x60060, R5                        // TSTW	$393312, R5                     // 1b0c8052db00a072bf001b6a
	TSTW	$0x6006000060060, R5                // TSTW	$1689262177517664, R5           // 1b0c8052db00a072bf001b6a
	ANDW	$0x6006000060060, R5                // ANDW	$1689262177517664, R5           // 1b0c8052db00a072a5001b0a
	ANDSW	$0x6006000060060, R5                // ANDSW	$1689262177517664, R5           // 1b0c8052db00a072a5001b6a
	EORW	$0x6006000060060, R5                // EORW	$1689262177517664, R5           // 1b0c8052db00a072a5001b4a
	ORRW	$0x6006000060060, R5                // ORRW	$1689262177517664, R5           // 1b0c8052db00a072a5001b2a
	BICW	$0x6006000060060, R5                // BICW	$1689262177517664, R5           // 1b0c8052db00a072a5003b0a
	EONW	$0x6006000060060, R5                // EONW	$1689262177517664, R5           // 1b0c8052db00a072a5003b4a
	ORNW	$0x6006000060060, R5                // ORNW	$1689262177517664, R5           // 1b0c8052db00a072a5003b2a
	BICSW	$0x6006000060060, R5                // BICSW	$1689262177517664, R5           // 1b0c8052db00a072a5003b6a
	// TODO: this could have better encoding
	ANDW	$-1, R10                            // 1b0080124a011b0a
	AND	$8, R0, RSP                         // 1f007d92
	ORR	$8, R0, RSP                         // 1f007db2
	EOR	$8, R0, RSP                         // 1f007dd2
	BIC	$8, R0, RSP                         // 1ff87c92
	ORN	$8, R0, RSP                         // 1ff87cb2
	EON	$8, R0, RSP                         // 1ff87cd2
	TST	$15, R2                             // 5f0c40f2
	TST	R1, R2                              // 5f0001ea
	TST	R1->11, R2                          // 5f2c81ea
	TST	R1>>22, R2                          // 5f5841ea
	TST	R1<<33, R2                          // 5f8401ea
	TST	$0x22220000, R3                     // TST $572653568, R3           // 5b44a4d27f001bea

// move an immediate to a Rn.
	MOVD	$0x3fffffffc000, R0           // MOVD	$70368744161280, R0         // e07f72b2
	MOVW	$1000000, R4                  // 04488852e401a072
	MOVW	$0xaaaa0000, R1               // MOVW	$2863267840, R1             // 4155b552
	MOVW	$0xaaaaffff, R1               // MOVW	$2863333375, R1             // a1aaaa12
	MOVW	$0xaaaa, R1                   // MOVW	$43690, R1                  // 41559552
	MOVW	$0xffffaaaa, R1               // MOVW	$4294945450, R1             // a1aa8a12
	MOVW	$0xffff0000, R1               // MOVW	$4294901760, R1             // e1ffbf52
	MOVD	$0xffff00000000000, R1        // MOVD	$1152903912420802560, R1    // e13f54b2
	MOVD	$0x1111000000001111, R1       // MOVD	$1229764173248860433, R1    // 212282d22122e2f2
	MOVD	$0x1111ffff1111ffff, R1       // MOVD	$1230045644216991743, R1    // c1ddbd922122e2f2
	MOVD	$0x1111222233334444, R1       // MOVD	$1229801703532086340, R1    // 818888d26166a6f24144c4f22122e2f2
	MOVD	$0xaaaaffff, R1               // MOVD	$2863333375, R1             // e1ff9fd24155b5f2
	MOVD	$0x11110000, R1               // MOVD	$286326784, R1              // 2122a2d2
	MOVD	$0xaaaa0000aaaa1111, R1       // MOVD	$-6149102338357718767, R1   // 212282d24155b5f24155f5f2
	MOVD	$0x1111ffff1111aaaa, R1       // MOVD	$1230045644216969898, R1    // a1aa8a922122a2f22122e2f2
	MOVD	$0, R1                        // 010080d2
	MOVD	$-1, R1                       // 01008092
	MOVD	$0x210000, R0                 // MOVD	$2162688, R0                // 2004a0d2
	MOVD	$0xffffffffffffaaaa, R1       // MOVD	$-21846, R1                 // a1aa8a92
	MOVW	$1, ZR
	MOVW	$1, R1
	MOVD	$1, ZR
	MOVD	$1, R1
	MOVK	$1, R1
	MOVD	$0x1000100010001000, RSP      // MOVD	$1152939097061330944, RSP   // ff8304b2
	MOVW	$0x10001000, RSP              // MOVW	$268439552, RSP             // ff830432
	ADDW	$0x10001000, R1               // ADDW	$268439552, R1              // fb83043221001b0b
	ADDW	$0x22220000, RSP, R3          // ADDW	$572653568, RSP, R3         // 5b44a452e3433b0b

// move a large constant to a Vd.
	VMOVS	$0x80402010, V11                                      // VMOVS	$2151686160, V11
	VMOVD	$0x8040201008040201, V20                              // VMOVD	$-9205322385119247871, V20
	VMOVQ	$0x7040201008040201, $0x8040201008040201, V10         // VMOVQ	$8088500183983456769, $-9205322385119247871, V10
	VMOVQ	$0x8040201008040202, $0x7040201008040201, V20         // VMOVQ	$-9205322385119247870, $8088500183983456769, V20

// mov(to/from sp)
	MOVD	$0x1002(RSP), R1              // MOVD	$4098(RSP), R1              // fb074091610b0091
	MOVD	$0x1708(RSP), RSP             // MOVD	$5896(RSP), RSP             // fb0740917f231c91
	MOVD	$0x2001(R7), R1               // MOVD	$8193(R7), R1               // fb08409161070091
	MOVD	$0xffffff(R7), R1             // MOVD	$16777215(R7), R1           // fbfc7f9161ff3f91
	MOVD	$-0x1(R7), R1                 // MOVD	$-1(R7), R1                 // e10400d1
	MOVD	$-0x30(R7), R1                // MOVD	$-48(R7), R1                // e1c000d1
	MOVD	$-0x708(R7), R1               // MOVD	$-1800(R7), R1              // e1201cd1
	MOVD	$-0x2000(RSP), R1             // MOVD	$-8192(RSP), R1             // e10b40d1
	MOVD	$-0x10000(RSP), RSP           // MOVD	$-65536(RSP), RSP           // ff4340d1
	MOVW	R1, R2
	MOVW	ZR, R1
	MOVW	R1, ZR
	MOVD	R1, R2
	MOVD	ZR, R1

// store and load
//
// LD1/ST1
	VLD1	(R8), [V1.B16, V2.B16]                          // 01a1404c
	VLD1.P	(R3), [V31.H8, V0.H8]                           // 7fa4df4c
	VLD1.P	(R8)(R20), [V21.B16, V22.B16]                   // 15a1d44c
	VLD1.P	64(R1), [V5.B16, V6.B16, V7.B16, V8.B16]        // 2520df4c
	VLD1.P	1(R0), V4.B[15]                                 // 041cdf4d
	VLD1.P	2(R0), V4.H[7]                                  // 0458df4d
	VLD1.P	4(R0), V4.S[3]                                  // 0490df4d
	VLD1.P	8(R0), V4.D[1]                                  // 0484df4d
	VLD1.P	(R0)(R1), V4.D[1]                               // 0484c14d
	VLD1	(R0), V4.D[1]                                   // 0484404d
	VST1.P	[V4.S4, V5.S4], 32(R1)                          // 24a89f4c
	VST1	[V0.S4, V1.S4], (R0)                            // 00a8004c
	VLD1	(R30), [V15.S2, V16.S2]                         // cfab400c
	VLD1.P	24(R30), [V3.S2,V4.S2,V5.S2]                    // c36bdf0c
	VLD2	(R29), [V23.H8, V24.H8]                         // b787404c
	VLD2.P	16(R0), [V18.B8, V19.B8]                        // 1280df0c
	VLD2.P	(R1)(R2), [V15.S2, V16.S2]                      // 2f88c20c
	VLD3	(R27), [V11.S4, V12.S4, V13.S4]                 // 6b4b404c
	VLD3.P	48(RSP), [V11.S4, V12.S4, V13.S4]               // eb4bdf4c
	VLD3.P	(R30)(R2), [V14.D2, V15.D2, V16.D2]             // ce4fc24c
	VLD4	(R15), [V10.H4, V11.H4, V12.H4, V13.H4]         // ea05400c
	VLD4.P	32(R24), [V31.B8, V0.B8, V1.B8, V2.B8]          // 1f03df0c
	VLD4.P	(R13)(R9), [V14.S2, V15.S2, V16.S2, V17.S2]     // ae09c90c
	VLD1R	(R1), [V9.B8]                                   // 29c0400d
	VLD1R.P	(R1), [V9.B8]                                   // 29c0df0d
	VLD1R.P	1(R1), [V2.B8]                                  // 22c0df0d
	VLD1R.P	2(R1), [V2.H4]                                  // 22c4df0d
	VLD1R	(R0), [V0.B16]                                  // 00c0404d
	VLD1R.P	(R0), [V0.B16]                                  // 00c0df4d
	VLD1R.P	(R15)(R1), [V15.H4]                             // efc5c10d
	VLD2R	(R15), [V15.H4, V16.H4]                         // efc5600d
	VLD2R.P	16(R0), [V0.D2, V1.D2]                          // 00ccff4d
	VLD2R.P	(R0)(R5), [V31.D1, V0.D1]                       // 1fcce50d
	VLD3R	(RSP), [V31.S2, V0.S2, V1.S2]                   // ffeb400d
	VLD3R.P	6(R15), [V15.H4, V16.H4, V17.H4]                // efe5df0d
	VLD3R.P	(R15)(R6), [V15.H8, V16.H8, V17.H8]             // efe5c64d
	VLD4R	(R0), [V0.B8, V1.B8, V2.B8, V3.B8]              // 00e0600d
	VLD4R.P	16(RSP), [V31.S4, V0.S4, V1.S4, V2.S4]          // ffebff4d
	VLD4R.P	(R15)(R9), [V15.H4, V16.H4, V17.H4, V18.H4]     // efe5e90d
	VST1.P	[V24.S2], 8(R2)                                 // 58789f0c
	VST1	[V29.S2, V30.S2], (R29)                         // bdab000c
	VST1	[V14.H4, V15.H4, V16.H4], (R27)                 // 6e67000c
	VST1.P	V4.B[15], 1(R0)                                 // 041c9f4d
	VST1.P	V4.H[7], 2(R0)                                  // 04589f4d
	VST1.P	V4.S[3], 4(R0)                                  // 04909f4d
	VST1.P	V4.D[1], 8(R0)                                  // 04849f4d
	VST1.P	V4.D[1], (R0)(R1)                               // 0484814d
	VST1	V4.D[1], (R0)                                   // 0484004d
	VST2	[V22.H8, V23.H8], (R23)                         // f686004c
	VST2.P	[V14.H4, V15.H4], 16(R17)                       // 2e869f0c
	VST2.P	[V14.H4, V15.H4], (R3)(R17)                     // 6e84910c
	VST3	[V1.D2, V2.D2, V3.D2], (R11)                    // 614d004c
	VST3.P	[V18.S4, V19.S4, V20.S4], 48(R25)               // 324b9f4c
	VST3.P	[V19.B8, V20.B8, V21.B8], (R3)(R7)              // 7340870c
	VST4	[V22.D2, V23.D2, V24.D2, V25.D2], (R3)          // 760c004c
	VST4.P	[V14.D2, V15.D2, V16.D2, V17.D2], 64(R15)       // ee0d9f4c
	VST4.P	[V24.B8, V25.B8, V26.B8, V27.B8], (R3)(R23)     // 7800970c

// pre/post-indexed
	FMOVS.P	F20, 4(R0)                                      // 144400bc
	FMOVS.W	F20, 4(R0)                                      // 144c00bc
	FMOVD.P	F20, 8(R1)                                      // 348400fc
	FMOVQ.P	F13, 11(R10)                                    // 4db5803c
	FMOVQ.W	F15, 11(R20)                                    // 8fbe803c

	FMOVS.P	8(R0), F20                                      // 148440bc
	FMOVS.W	8(R0), F20                                      // 148c40bc
	FMOVD.W	8(R1), F20                                      // 348c40fc
	FMOVQ.P	11(R10), F13                                    // 4db5c03c
	FMOVQ.W	11(R20), F15                                    // 8fbec03c

// small offset fits into instructions
	MOVB	R1, 1(R2) // 41040039
	MOVH	R1, 1(R2) // 41100078
	MOVH	R1, 2(R2) // 41040079
	MOVW	R1, 1(R2) // 411000b8
	MOVW	R1, 4(R2) // 410400b9
	MOVD	R1, 1(R2) // 411000f8
	MOVD	R1, 8(R2) // 410400f9
	MOVD	ZR, (R1)
	MOVW	ZR, (R1)
	FMOVS	F1, 1(R2) // 411000bc
	FMOVS	F1, 4(R2) // 410400bd
	FMOVS	F20, (R0) // 140000bd
	FMOVD	F1, 1(R2) // 411000fc
	FMOVD	F1, 8(R2) // 410400fd
	FMOVD	F20, (R2) // 540000fd
	FMOVQ	F0, 32(R5)// a008803d
	FMOVQ	F10, 65520(R10) // 4afdbf3d
	FMOVQ	F11, 64(RSP)    // eb13803d
	FMOVQ	F11, 8(R20)     // 8b82803c
	FMOVQ	F11, 4(R20)     // 8b42803c

	MOVB	1(R1), R2 // 22048039
	MOVH	1(R1), R2 // 22108078
	MOVH	2(R1), R2 // 22048079
	MOVW	1(R1), R2 // 221080b8
	MOVW	4(R1), R2 // 220480b9
	MOVD	1(R1), R2 // 221040f8
	MOVD	8(R1), R2 // 220440f9
	FMOVS	(R0), F20 // 140040bd
	FMOVS	1(R1), F2 // 221040bc
	FMOVS	4(R1), F2 // 220440bd
	FMOVD	1(R1), F2 // 221040fc
	FMOVD	8(R1), F2 // 220440fd
	FMOVQ	32(R5), F2 // a208c03d
	FMOVQ	65520(R10), F10 // 4afdff3d
	FMOVQ	64(RSP), F11    // eb13c03d

// large aligned offset, use two instructions(add+ldr/store).
	MOVB	R1, 0x1001(R2) // MOVB	R1, 4097(R2)  // 5b04409161070039
	MOVH	R1, 0x2002(R2) // MOVH	R1, 8194(R2)  // 5b08409161070079
	MOVW	R1, 0x4004(R2) // MOVW	R1, 16388(R2) // 5b104091610700b9
	MOVD	R1, 0x8008(R2) // MOVD	R1, 32776(R2) // 5b204091610700f9
	FMOVS	F1, 0x4004(R2) // FMOVS	F1, 16388(R2) // 5b104091610700bd
	FMOVD	F1, 0x8008(R2) // FMOVD	F1, 32776(R2) // 5b204091610700fd

	MOVB	0x1001(R1), R2 // MOVB	4097(R1), R2  // 3b04409162078039
	MOVH	0x2002(R1), R2 // MOVH	8194(R1), R2  // 3b08409162078079
	MOVW	0x4004(R1), R2 // MOVW	16388(R1), R2 // 3b104091620780b9
	MOVD	0x8008(R1), R2 // MOVD	32776(R1), R2 // 3b204091620740f9
	FMOVS	0x4004(R1), F2 // FMOVS	16388(R1), F2 // 3b104091620740bd
	FMOVD	0x8008(R1), F2 // FMOVD	32776(R1), F2 // 3b204091620740fd

// very large or unaligned offset uses constant pool.
// the encoding cannot be checked as the address of the constant pool is unknown.
// here we only test that they can be assembled.
	MOVB	R1, 0x44332211(R2) // MOVB	R1, 1144201745(R2)
	MOVH	R1, 0x44332211(R2) // MOVH	R1, 1144201745(R2)
	MOVW	R1, 0x44332211(R2) // MOVW	R1, 1144201745(R2)
	MOVD	R1, 0x44332211(R2) // MOVD	R1, 1144201745(R2)
	FMOVS	F1, 0x44332211(R2) // FMOVS	F1, 1144201745(R2)
	FMOVD	F1, 0x44332211(R2) // FMOVD	F1, 1144201745(R2)

	MOVB	0x44332211(R1), R2 // MOVB	1144201745(R1), R2
	MOVH	0x44332211(R1), R2 // MOVH	1144201745(R1), R2
	MOVW	0x44332211(R1), R2 // MOVW	1144201745(R1), R2
	MOVD	0x44332211(R1), R2 // MOVD	1144201745(R1), R2
	FMOVS	0x44332211(R1), F2 // FMOVS	1144201745(R1), F2
	FMOVD	0x44332211(R1), F2 // FMOVD	1144201745(R1), F2

// shifted or extended register offset.
	MOVD	(R2)(R6.SXTW), R4               // 44c866f8
	MOVD	(R3)(R6), R5                    // 656866f8
	MOVD	(R3)(R6*1), R5                  // 656866f8
	MOVD	(R2)(R6), R4                    // 446866f8
	MOVWU	(R19)(R20<<2), R20              // 747a74b8
	MOVD	(R2)(R6<<3), R4                 // 447866f8
	MOVD	(R3)(R7.SXTX<<3), R8            // 68f867f8
	MOVWU	(R5)(R4.UXTW), R10              // aa4864b8
	MOVBU	(R3)(R9.UXTW), R8               // 68486938
	MOVBU	(R5)(R8), R10                   // aa686838
	MOVHU	(R2)(R7.SXTW<<1), R11           // 4bd86778
	MOVHU	(R1)(R2<<1), R5                 // 25786278
	MOVB	(R9)(R3.UXTW), R6               // 2649a338
	MOVB	(R10)(R6), R15                  // 4f69a638
	MOVB	(R29)(R30<<0), R14              // ae7bbe38
	MOVB	(R29)(R30), R14                 // ae6bbe38
	MOVH	(R5)(R7.SXTX<<1), R19           // b3f8a778
	MOVH	(R8)(R4<<1), R10                // 0a79a478
	MOVW	(R9)(R8.SXTW<<2), R19           // 33d9a8b8
	MOVW	(R1)(R4.SXTX), R11              // 2be8a4b8
	MOVW	(R1)(R4.SXTX), ZR               // 3fe8a4b8
	MOVW	(R2)(R5), R12                   // 4c68a5b8
	FMOVS	(R2)(R6), F4                    // 446866bc
	FMOVS	(R2)(R6<<2), F4                 // 447866bc
	FMOVD	(R2)(R6), F4                    // 446866fc
	FMOVD	(R2)(R6<<3), F4                 // 447866fc

	MOVD	R5, (R2)(R6<<3)                 // 457826f8
	MOVD	R9, (R6)(R7.SXTX<<3)            // c9f827f8
	MOVD	ZR, (R6)(R7.SXTX<<3)            // dff827f8
	MOVW	R8, (R2)(R3.UXTW<<2)            // 485823b8
	MOVW	R7, (R3)(R4.SXTW)               // 67c824b8
	MOVB	R4, (R2)(R6.SXTX)               // 44e82638
	MOVB	R8, (R3)(R9.UXTW)               // 68482938
	MOVB	R10, (R5)(R8)                   // aa682838
	MOVB	R10, (R5)(R8*1)                 // aa682838
	MOVH	R11, (R2)(R7.SXTW<<1)           // 4bd82778
	MOVH	R5, (R1)(R2<<1)                 // 25782278
	MOVH	R7, (R2)(R5.SXTX<<1)            // 47f82578
	MOVH	R8, (R3)(R6.UXTW)               // 68482678
	MOVB	R4, (R2)(R6.SXTX)               // 44e82638
	FMOVS	F4, (R2)(R6)                    // 446826bc
	FMOVS	F4, (R2)(R6<<2)                 // 447826bc
	FMOVD	F4, (R2)(R6)                    // 446826fc
	FMOVD	F4, (R2)(R6<<3)                 // 447826fc

// vmov
	VMOV	V8.S[1], R1           // 013d0c0e
	VMOV	V0.D[0], R11          // 0b3c084e
	VMOV	V0.D[1], R11          // 0b3c184e
	VMOV	R20, V1.S[0]          // 811e044e
	VMOV	R20, V1.S[1]          // 811e0c4e
	VMOV	R1, V9.H4             // 290c020e
	VDUP	R1, V9.H4             // 290c020e
	VMOV	R22, V11.D2           // cb0e084e
	VDUP	R22, V11.D2           // cb0e084e
	VMOV	V2.B16, V4.B16        // 441ca24e
	VMOV	V20.S[0], V20         // 9406045e
	VDUP	V20.S[0], V20         // 9406045e
	VMOV	V12.D[0], V12.D[1]    // 8c05186e
	VMOV	V10.S[0], V12.S[1]    // 4c050c6e
	VMOV	V9.H[0], V12.H[1]     // 2c05066e
	VMOV	V8.B[0], V12.B[1]     // 0c05036e
	VMOV	V8.B[7], V4.B[8]      // 043d116e

// CBZ
again:
	CBZ	R1, again // CBZ R1

// conditional operations
	CSET	GT, R1	        // e1d79f9a
	CSETW	HI, R2	        // e2979f1a
	CSEL	LT, R1, R2, ZR	// 3fb0829a
	CSELW	LT, R2, R3, R4	// 44b0831a
	CSINC	GT, R1, ZR, R3	// 23c49f9a
	CSNEG	MI, R1, R2, R3	// 234482da
	CSINV	CS, R1, R2, R3	// CSINV HS, R1, R2, R3 // 232082da
	CSINVW	MI, R2, ZR, R2	// 42409f5a
	CINC	EQ, R4, R9	// 8914849a
	CINCW	PL, R2, ZR	// 5f44821a
	CINV	PL, R11, R22	// 76418bda
	CINVW	LS, R7, R13	// ed80875a
	CNEG	LS, R13, R7	// a7858dda
	CNEGW	EQ, R8, R13	// 0d15885a

// atomic ops
	LDARB	(R25), R2                            // 22ffdf08
	LDARH	(R5), R7                             // a7fcdf48
	LDAXPW	(R10), (R20, R16)                    // 54c17f88
	LDAXP	(R25), (R30, R11)                    // 3eaf7fc8
	LDAXRW	(R0), R2                             // 02fc5f88
	LDXPW	(R24), (R23, R11)                    // 172f7f88
	LDXP	(R0), (R16, R13)                     // 10347fc8
	STLRB	R11, (R22)                           // cbfe9f08
	STLRH	R16, (R23)                           // f0fe9f48
	STLXP	(R6, R3), (R10), R2                  // 468d22c8
	STLXPW	(R6, R11), (R22), R21                // c6ae3588
	STLXRW	R1, (R0), R3                         // 01fc0388
	STXP	(R1, R2), (R3), R10                  // 61082ac8
	STXP	(R1, R2), (RSP), R10                 // e10b2ac8
	STXPW	(R1, R2), (R3), R10                  // 61082a88
	STXPW	(R1, R2), (RSP), R10                 // e10b2a88
	SWPAD	R5, (R6), R7                         // c780a5f8
	SWPAD	R5, (RSP), R7                        // e783a5f8
	SWPAW	R5, (R6), R7                         // c780a5b8
	SWPAW	R5, (RSP), R7                        // e783a5b8
	SWPAH	R5, (R6), R7                         // c780a578
	SWPAH	R5, (RSP), R7                        // e783a578
	SWPAB	R5, (R6), R7                         // c780a538
	SWPAB	R5, (RSP), R7                        // e783a538
	SWPALD	R5, (R6), R7                         // c780e5f8
	SWPALD	R5, (RSP), R7                        // e783e5f8
	SWPALW	R5, (R6), R7                         // c780e5b8
	SWPALW	R5, (RSP), R7                        // e783e5b8
	SWPALH	R5, (R6), R7                         // c780e578
	SWPALH	R5, (RSP), R7                        // e783e578
	SWPALB	R5, (R6), R7                         // c780e538
	SWPALB	R5, (RSP), R7                        // e783e538
	SWPD	R5, (R6), R7                         // c78025f8
	SWPD	R5, (RSP), R7                        // e78325f8
	SWPW	R5, (R6), R7                         // c78025b8
	SWPW	R5, (RSP), R7                        // e78325b8
	SWPH	R5, (R6), R7                         // c7802578
	SWPH	R5, (RSP), R7                        // e7832578
	SWPB	R5, (R6), R7                         // c7802538
	SWPB	R5, (RSP), R7                        // e7832538
	SWPLD	R5, (R6), R7                         // c78065f8
	SWPLD	R5, (RSP), R7                        // e78365f8
	SWPLW	R5, (R6), R7                         // c78065b8
	SWPLW	R5, (RSP), R7                        // e78365b8
	SWPLH	R5, (R6), R7                         // c7806578
	SWPLH	R5, (RSP), R7                        // e7836578
	SWPLB	R5, (R6), R7                         // c7806538
	SWPLB	R5, (RSP), R7                        // e7836538
	LDADDAD	R5, (R6), R7                         // c700a5f8
	LDADDAD	R5, (RSP), R7                        // e703a5f8
	LDADDAW	R5, (R6), R7                         // c700a5b8
	LDADDAW	R5, (RSP), R7                        // e703a5b8
	LDADDAH	R5, (R6), R7                         // c700a578
	LDADDAH	R5, (RSP), R7                        // e703a578
	LDADDAB	R5, (R6), R7                         // c700a538
	LDADDAB	R5, (RSP), R7                        // e703a538
	LDADDALD	R5, (R6), R7                 // c700e5f8
	LDADDALD	R5, (RSP), R7                // e703e5f8
	LDADDALW	R5, (R6), R7                 // c700e5b8
	LDADDALW	R5, (RSP), R7                // e703e5b8
	LDADDALH	R5, (R6), R7                 // c700e578
	LDADDALH	R5, (RSP), R7                // e703e578
	LDADDALB	R5, (R6), R7                 // c700e538
	LDADDALB	R5, (RSP), R7                // e703e538
	LDADDD	R5, (R6), R7                         // c70025f8
	LDADDD	R5, (RSP), R7                        // e70325f8
	LDADDW	R5, (R6), R7                         // c70025b8
	LDADDW	R5, (RSP), R7                        // e70325b8
	LDADDH	R5, (R6), R7                         // c7002578
	LDADDH	R5, (RSP), R7                        // e7032578
	LDADDB	R5, (R6), R7                         // c7002538
	LDADDB	R5, (RSP), R7                        // e7032538
	LDADDLD	R5, (R6), R7                         // c70065f8
	LDADDLD	R5, (RSP), R7                        // e70365f8
	LDADDLW	R5, (R6), R7                         // c70065b8
	LDADDLW	R5, (RSP), R7                        // e70365b8
	LDADDLH	R5, (R6), R7                         // c7006578
	LDADDLH	R5, (RSP), R7                        // e7036578
	LDADDLB	R5, (R6), R7                         // c7006538
	LDADDLB	R5, (RSP), R7                        // e7036538
	LDCLRAD	R5, (R6), R7                         // c710a5f8
	LDCLRAD	R5, (RSP), R7                        // e713a5f8
	LDCLRAW	R5, (R6), R7                         // c710a5b8
	LDCLRAW	R5, (RSP), R7                        // e713a5b8
	LDCLRAH	R5, (R6), R7                         // c710a578
	LDCLRAH	R5, (RSP), R7                        // e713a578
	LDCLRAB	R5, (R6), R7                         // c710a538
	LDCLRAB	R5, (RSP), R7                        // e713a538
	LDCLRALD	R5, (R6), R7                 // c710e5f8
	LDCLRALD	R5, (RSP), R7                // e713e5f8
	LDCLRALW	R5, (R6), R7                 // c710e5b8
	LDCLRALW	R5, (RSP), R7                // e713e5b8
	LDCLRALH	R5, (R6), R7                 // c710e578
	LDCLRALH	R5, (RSP), R7                // e713e578
	LDCLRALB	R5, (R6), R7                 // c710e538
	LDCLRALB	R5, (RSP), R7                // e713e538
	LDCLRD	R5, (R6), R7                         // c71025f8
	LDCLRD	R5, (RSP), R7                        // e71325f8
	LDCLRW	R5, (R6), R7                         // c71025b8
	LDCLRW	R5, (RSP), R7                        // e71325b8
	LDCLRH	R5, (R6), R7                         // c7102578
	LDCLRH	R5, (RSP), R7                        // e7132578
	LDCLRB	R5, (R6), R7                         // c7102538
	LDCLRB	R5, (RSP), R7                        // e7132538
	LDCLRLD	R5, (R6), R7                         // c71065f8
	LDCLRLD	R5, (RSP), R7                        // e71365f8
	LDCLRLW	R5, (R6), R7                         // c71065b8
	LDCLRLW	R5, (RSP), R7                        // e71365b8
	LDCLRLH	R5, (R6), R7                         // c7106578
	LDCLRLH	R5, (RSP), R7                        // e7136578
	LDCLRLB	R5, (R6), R7                         // c7106538
	LDCLRLB	R5, (RSP), R7                        // e7136538
	LDEORAD	R5, (R6), R7                         // c720a5f8
	LDEORAD	R5, (RSP), R7                        // e723a5f8
	LDEORAW	R5, (R6), R7                         // c720a5b8
	LDEORAW	R5, (RSP), R7                        // e723a5b8
	LDEORAH	R5, (R6), R7                         // c720a578
	LDEORAH	R5, (RSP), R7                        // e723a578
	LDEORAB	R5, (R6), R7                         // c720a538
	LDEORAB	R5, (RSP), R7                        // e723a538
	LDEORALD	R5, (R6), R7                 // c720e5f8
	LDEORALD	R5, (RSP), R7                // e723e5f8
	LDEORALW	R5, (R6), R7                 // c720e5b8
	LDEORALW	R5, (RSP), R7                // e723e5b8
	LDEORALH	R5, (R6), R7                 // c720e578
	LDEORALH	R5, (RSP), R7                // e723e578
	LDEORALB	R5, (R6), R7                 // c720e538
	LDEORALB	R5, (RSP), R7                // e723e538
	LDEORD	R5, (R6), R7                         // c72025f8
	LDEORD	R5, (RSP), R7                        // e72325f8
	LDEORW	R5, (R6), R7                         // c72025b8
	LDEORW	R5, (RSP), R7                        // e72325b8
	LDEORH	R5, (R6), R7                         // c7202578
	LDEORH	R5, (RSP), R7                        // e7232578
	LDEORB	R5, (R6), R7                         // c7202538
	LDEORB	R5, (RSP), R7                        // e7232538
	LDEORLD	R5, (R6), R7                         // c72065f8
	LDEORLD	R5, (RSP), R7                        // e72365f8
	LDEORLW	R5, (R6), R7                         // c72065b8
	LDEORLW	R5, (RSP), R7                        // e72365b8
	LDEORLH	R5, (R6), R7                         // c7206578
	LDEORLH	R5, (RSP), R7                        // e7236578
	LDEORLB	R5, (R6), R7                         // c7206538
	LDEORLB	R5, (RSP), R7                        // e7236538
	LDORAD	R5, (R6), R7                         // c730a5f8
	LDORAD	R5, (RSP), R7                        // e733a5f8
	LDORAW	R5, (R6), R7                         // c730a5b8
	LDORAW	R5, (RSP), R7                        // e733a5b8
	LDORAH	R5, (R6), R7                         // c730a578
	LDORAH	R5, (RSP), R7                        // e733a578
	LDORAB	R5, (R6), R7                         // c730a538
	LDORAB	R5, (RSP), R7                        // e733a538
	LDORALD	R5, (R6), R7                         // c730e5f8
	LDORALD	R5, (RSP), R7                        // e733e5f8
	LDORALW	R5, (R6), R7                         // c730e5b8
	LDORALW	R5, (RSP), R7                        // e733e5b8
	LDORALH	R5, (R6), R7                         // c730e578
	LDORALH	R5, (RSP), R7                        // e733e578
	LDORALB	R5, (R6), R7                         // c730e538
	LDORALB	R5, (RSP), R7                        // e733e538
	LDORD	R5, (R6), R7                         // c73025f8
	LDORD	R5, (RSP), R7                        // e73325f8
	LDORW	R5, (R6), R7                         // c73025b8
	LDORW	R5, (RSP), R7                        // e73325b8
	LDORH	R5, (R6), R7                         // c7302578
	LDORH	R5, (RSP), R7                        // e7332578
	LDORB	R5, (R6), R7                         // c7302538
	LDORB	R5, (RSP), R7                        // e7332538
	LDORLD	R5, (R6), R7                         // c73065f8
	LDORLD	R5, (RSP), R7                        // e73365f8
	LDORLW	R5, (R6), R7                         // c73065b8
	LDORLW	R5, (RSP), R7                        // e73365b8
	LDORLH	R5, (R6), R7                         // c7306578
	LDORLH	R5, (RSP), R7                        // e7336578
	LDORLB	R5, (R6), R7                         // c7306538
	LDORLB	R5, (RSP), R7                        // e7336538
	CASD	R1, (R2), ZR                         // 5f7ca1c8
	CASW	R1, (RSP), ZR                        // ff7fa188
	CASB	ZR, (R5), R3                         // a37cbf08
	CASH	R3, (RSP), ZR                        // ff7fa348
	CASW	R5, (R7), R6                         // e67ca588
	CASLD	ZR, (RSP), R8                        // e8ffbfc8
	CASLW	R9, (R10), ZR                        // 5ffda988
	CASAD	R7, (R11), R15                       // 6f7de7c8
	CASAW	R10, (RSP), R19                      // f37fea88
	CASALD	R5, (R6), R7                         // c7fce5c8
	CASALD	R5, (RSP), R7                        // e7ffe5c8
	CASALW	R5, (R6), R7                         // c7fce588
	CASALW	R5, (RSP), R7                        // e7ffe588
	CASALH	ZR, (R5), R8                         // a8fcff48
	CASALB	R8, (R9), ZR                         // 3ffde808
	CASPD	(R30, ZR), (RSP), (R8, R9)           // e87f3e48
	CASPW	(R6, R7), (R8), (R4, R5)             // 047d2608
	CASPD	(R2, R3), (R2), (R8, R9)             // 487c2248

// RET
	RET
	RET	foo(SB)

// B/BL/B.cond cases, and canonical names JMP, CALL.
	BL	1(PC)      // CALL 1(PC)
	BL	(R2)       // CALL (R2)
	BL	foo(SB)    // CALL foo(SB)
	BL	bar<>(SB)  // CALL bar<>(SB)
	B	foo(SB)    // JMP foo(SB)
	BEQ	1(PC)
	BEQ	2(PC)
	TBZ	$1, R1, 2(PC)
	TBNZ	$2, R2, 2(PC)
	JMP	foo(SB)
	CALL	foo(SB)

// LDP/STP
	LDP	(R0), (R0, R1)      // 000440a9
	LDP	(R0), (R1, R2)      // 010840a9
	LDP	8(R0), (R1, R2)     // 018840a9
	LDP	-8(R0), (R1, R2)    // 01887fa9
	LDP	11(R0), (R1, R2)    // 1b2c0091610b40a9
	LDP	1024(R0), (R1, R2)  // 1b001091610b40a9
	LDP.W	8(R0), (R1, R2)     // 0188c0a9
	LDP.P	8(R0), (R1, R2)     // 0188c0a8
	LDP	(RSP), (R1, R2)     // e10b40a9
	LDP	8(RSP), (R1, R2)    // e18b40a9
	LDP	-8(RSP), (R1, R2)   // e18b7fa9
	LDP	11(RSP), (R1, R2)   // fb2f0091610b40a9
	LDP	1024(RSP), (R1, R2) // fb031091610b40a9
	LDP.W	8(RSP), (R1, R2)    // e18bc0a9
	LDP.P	8(RSP), (R1, R2)    // e18bc0a8
	LDP	-31(R0), (R1, R2)   // 1b7c00d1610b40a9
	LDP	-4(R0), (R1, R2)    // 1b1000d1610b40a9
	LDP	-8(R0), (R1, R2)    // 01887fa9
	LDP	x(SB), (R1, R2)
	LDP	x+8(SB), (R1, R2)
	LDPW	-5(R0), (R1, R2)    // 1b1400d1610b4029
	LDPW	(R0), (R1, R2)      // 01084029
	LDPW	4(R0), (R1, R2)     // 01884029
	LDPW	-4(R0), (R1, R2)    // 01887f29
	LDPW.W	4(R0), (R1, R2)     // 0188c029
	LDPW.P	4(R0), (R1, R2)     // 0188c028
	LDPW	11(R0), (R1, R2)    // 1b2c0091610b4029
	LDPW	1024(R0), (R1, R2)  // 1b001091610b4029
	LDPW	(RSP), (R1, R2)     // e10b4029
	LDPW	4(RSP), (R1, R2)    // e18b4029
	LDPW	-4(RSP), (R1, R2)   // e18b7f29
	LDPW.W	4(RSP), (R1, R2)    // e18bc029
	LDPW.P	4(RSP), (R1, R2)    // e18bc028
	LDPW	11(RSP), (R1, R2)   // fb2f0091610b4029
	LDPW	1024(RSP), (R1, R2) // fb031091610b4029
	LDPW	x(SB), (R1, R2)
	LDPW	x+8(SB), (R1, R2)
	LDPSW	(R0), (R1, R2)      // 01084069
	LDPSW	4(R0), (R1, R2)     // 01884069
	LDPSW	-4(R0), (R1, R2)    // 01887f69
	LDPSW.W	4(R0), (R1, R2)     // 0188c069
	LDPSW.P	4(R0), (R1, R2)     // 0188c068
	LDPSW	11(R0), (R1, R2)    // 1b2c0091610b4069
	LDPSW	1024(R0), (R1, R2)  // 1b001091610b4069
	LDPSW	(RSP), (R1, R2)     // e10b4069
	LDPSW	4(RSP), (R1, R2)    // e18b4069
	LDPSW	-4(RSP), (R1, R2)   // e18b7f69
	LDPSW.W	4(RSP), (R1, R2)    // e18bc069
	LDPSW.P	4(RSP), (R1, R2)    // e18bc068
	LDPSW	11(RSP), (R1, R2)   // fb2f0091610b4069
	LDPSW	1024(RSP), (R1, R2) // fb031091610b4069
	LDPSW	x(SB), (R1, R2)
	LDPSW	x+8(SB), (R1, R2)
	STP	(R3, R4), (R5)      // a31000a9
	STP	(R3, R4), 8(R5)     // a39000a9
	STP.W	(R3, R4), 8(R5)     // a39080a9
	STP.P	(R3, R4), 8(R5)     // a39080a8
	STP	(R3, R4), -8(R5)    // a3903fa9
	STP	(R3, R4), -4(R5)    // bb1000d1631300a9
	STP	(R3, R4), 11(R0)    // 1b2c0091631300a9
	STP	(R3, R4), 1024(R0)  // 1b001091631300a9
	STP	(R3, R4), (RSP)     // e31300a9
	STP	(R3, R4), 8(RSP)    // e39300a9
	STP.W	(R3, R4), 8(RSP)    // e39380a9
	STP.P	(R3, R4), 8(RSP)    // e39380a8
	STP	(R3, R4), -8(RSP)   // e3933fa9
	STP	(R3, R4), 11(RSP)   // fb2f0091631300a9
	STP	(R3, R4), 1024(RSP) // fb031091631300a9
	STP	(R3, R4), x(SB)
	STP	(R3, R4), x+8(SB)
	STPW	(R3, R4), (R5)      // a3100029
	STPW	(R3, R4), 4(R5)     // a3900029
	STPW.W	(R3, R4), 4(R5)     // a3908029
	STPW.P	(R3, R4), 4(R5)     // a3908028
	STPW	(R3, R4), -4(R5)    // a3903f29
	STPW	(R3, R4), -5(R5)    // bb1400d163130029
	STPW	(R3, R4), 11(R0)    // 1b2c009163130029
	STPW	(R3, R4), 1024(R0)  // 1b00109163130029
	STPW	(R3, R4), (RSP)     // e3130029
	STPW	(R3, R4), 4(RSP)    // e3930029
	STPW.W	(R3, R4), 4(RSP)    // e3938029
	STPW.P	(R3, R4), 4(RSP)    // e3938028
	STPW	(R3, R4), -4(RSP)   // e3933f29
	STPW	(R3, R4), 11(RSP)   // fb2f009163130029
	STPW	(R3, R4), 1024(RSP) // fb03109163130029
	STPW	(R3, R4), x(SB)
	STPW	(R3, R4), x+8(SB)

// bit field operation
	BFI	$0, R1, $1, R2      // 220040b3
	BFIW	$0, R1, $1, R2      // 22000033
	SBFIZ	$0, R1, $1, R2      // 22004093
	SBFIZW	$0, R1, $1, R2      // 22000013
	UBFIZ	$0, R1, $1, R2      // 220040d3
	UBFIZW	$0, R1, $1, R2      // 22000053

// FSTPD/FSTPS/FLDPD/FLDPS
	FLDPD	(R0), (F1, F2)      // 0108406d
	FLDPD	8(R0), (F1, F2)     // 0188406d
	FLDPD	-8(R0), (F1, F2)    // 01887f6d
	FLDPD	11(R0), (F1, F2)    // 1b2c0091610b406d
	FLDPD	1024(R0), (F1, F2)  // 1b001091610b406d
	FLDPD.W	8(R0), (F1, F2)     // 0188c06d
	FLDPD.P	8(R0), (F1, F2)     // 0188c06c
	FLDPD	(RSP), (F1, F2)     // e10b406d
	FLDPD	8(RSP), (F1, F2)    // e18b406d
	FLDPD	-8(RSP), (F1, F2)   // e18b7f6d
	FLDPD	11(RSP), (F1, F2)   // fb2f0091610b406d
	FLDPD	1024(RSP), (F1, F2) // fb031091610b406d
	FLDPD.W	8(RSP), (F1, F2)    // e18bc06d
	FLDPD.P	8(RSP), (F1, F2)    // e18bc06c
	FLDPD	-31(R0), (F1, F2)   // 1b7c00d1610b406d
	FLDPD	-4(R0), (F1, F2)    // 1b1000d1610b406d
	FLDPD	-8(R0), (F1, F2)    // 01887f6d
	FLDPD	x(SB), (F1, F2)
	FLDPD	x+8(SB), (F1, F2)
	FLDPS	-5(R0), (F1, F2)    // 1b1400d1610b402d
	FLDPS	(R0), (F1, F2)      // 0108402d
	FLDPS	4(R0), (F1, F2)     // 0188402d
	FLDPS	-4(R0), (F1, F2)    // 01887f2d
	FLDPS.W	4(R0), (F1, F2)     // 0188c02d
	FLDPS.P	4(R0), (F1, F2)     // 0188c02c
	FLDPS	11(R0), (F1, F2)    // 1b2c0091610b402d
	FLDPS	1024(R0), (F1, F2)  // 1b001091610b402d
	FLDPS	(RSP), (F1, F2)     // e10b402d
	FLDPS	4(RSP), (F1, F2)    // e18b402d
	FLDPS	-4(RSP), (F1, F2)   // e18b7f2d
	FLDPS.W	4(RSP), (F1, F2)    // e18bc02d
	FLDPS.P	4(RSP), (F1, F2)    // e18bc02c
	FLDPS	11(RSP), (F1, F2)   // fb2f0091610b402d
	FLDPS	1024(RSP), (F1, F2) // fb031091610b402d
	FLDPS	x(SB), (F1, F2)
	FLDPS	x+8(SB), (F1, F2)
	FSTPD	(F3, F4), (R5)      // a310006d
	FSTPD	(F3, F4), 8(R5)     // a390006d
	FSTPD.W	(F3, F4), 8(R5)     // a390806d
	FSTPD.P	(F3, F4), 8(R5)     // a390806c
	FSTPD	(F3, F4), -8(R5)    // a3903f6d
	FSTPD	(F3, F4), -4(R5)    // bb1000d16313006d
	FSTPD	(F3, F4), 11(R0)    // 1b2c00916313006d
	FSTPD	(F3, F4), 1024(R0)  // 1b0010916313006d
	FSTPD	(F3, F4), (RSP)     // e313006d
	FSTPD	(F3, F4), 8(RSP)    // e393006d
	FSTPD.W	(F3, F4), 8(RSP)    // e393806d
	FSTPD.P	(F3, F4), 8(RSP)    // e393806c
	FSTPD	(F3, F4), -8(RSP)   // e3933f6d
	FSTPD	(F3, F4), 11(RSP)   // fb2f00916313006d
	FSTPD	(F3, F4), 1024(RSP) // fb0310916313006d
	FSTPD	(F3, F4), x(SB)
	FSTPD	(F3, F4), x+8(SB)
	FSTPS	(F3, F4), (R5)      // a310002d
	FSTPS	(F3, F4), 4(R5)     // a390002d
	FSTPS.W	(F3, F4), 4(R5)     // a390802d
	FSTPS.P	(F3, F4), 4(R5)     // a390802c
	FSTPS	(F3, F4), -4(R5)    // a3903f2d
	FSTPS	(F3, F4), -5(R5)    // bb1400d16313002d
	FSTPS	(F3, F4), 11(R0)    // 1b2c00916313002d
	FSTPS	(F3, F4), 1024(R0)  // 1b0010916313002d
	FSTPS	(F3, F4), (RSP)     // e313002d
	FSTPS	(F3, F4), 4(RSP)    // e393002d
	FSTPS.W	(F3, F4), 4(RSP)    // e393802d
	FSTPS.P	(F3, F4), 4(RSP)    // e393802c
	FSTPS	(F3, F4), -4(RSP)   // e3933f2d
	FSTPS	(F3, F4), 11(RSP)   // fb2f00916313002d
	FSTPS	(F3, F4), 1024(RSP) // fb0310916313002d
	FSTPS	(F3, F4), x(SB)
	FSTPS	(F3, F4), x+8(SB)

// FLDPQ/FSTPQ
	FLDPQ   -4000(R0), (F1, F2)  // 1b803ed1610b40ad
	FLDPQ	-1024(R0), (F1, F2)  // 010860ad
	FLDPQ	(R0), (F1, F2)       // 010840ad
	FLDPQ	16(R0), (F1, F2)     // 018840ad
	FLDPQ	-16(R0), (F1, F2)    // 01887fad
	FLDPQ.W	32(R0), (F1, F2)     // 0108c1ad
	FLDPQ.P	32(R0), (F1, F2)     // 0108c1ac
	FLDPQ	11(R0), (F1, F2)     // 1b2c0091610b40ad
	FLDPQ	1024(R0), (F1, F2)   // 1b001091610b40ad
	FLDPQ   4104(R0), (F1, F2)
	FLDPQ   -4000(RSP), (F1, F2) // fb833ed1610b40ad
	FLDPQ	-1024(RSP), (F1, F2) // e10b60ad
	FLDPQ	(RSP), (F1, F2)      // e10b40ad
	FLDPQ	16(RSP), (F1, F2)    // e18b40ad
	FLDPQ	-16(RSP), (F1, F2)   // e18b7fad
	FLDPQ.W	32(RSP), (F1, F2)    // e10bc1ad
	FLDPQ.P	32(RSP), (F1, F2)    // e10bc1ac
	FLDPQ	11(RSP), (F1, F2)    // fb2f0091610b40ad
	FLDPQ	1024(RSP), (F1, F2)  // fb031091610b40ad
	FLDPQ   4104(RSP), (F1, F2)
	FLDPQ	-31(R0), (F1, F2)    // 1b7c00d1610b40ad
	FLDPQ	-4(R0), (F1, F2)     // 1b1000d1610b40ad
	FLDPQ	x(SB), (F1, F2)
	FLDPQ	x+8(SB), (F1, F2)
	FSTPQ	(F3, F4), -4000(R5)  // bb803ed1631300ad
	FSTPQ	(F3, F4), -1024(R5)  // a31020ad
	FSTPQ	(F3, F4), (R5)       // a31000ad
	FSTPQ	(F3, F4), 16(R5)     // a39000ad
	FSTPQ	(F3, F4), -16(R5)    // a3903fad
	FSTPQ.W	(F3, F4), 32(R5)     // a31081ad
	FSTPQ.P	(F3, F4), 32(R5)     // a31081ac
	FSTPQ	(F3, F4), 11(R5)     // bb2c0091631300ad
	FSTPQ	(F3, F4), 1024(R5)   // bb001091631300ad
	FSTPQ	(F3, F4), 4104(R5)
	FSTPQ	(F3, F4), -4000(RSP) // fb833ed1631300ad
	FSTPQ	(F3, F4), -1024(RSP) // e31320ad
	FSTPQ	(F3, F4), (RSP)      // e31300ad
	FSTPQ	(F3, F4), 16(RSP)    // e39300ad
	FSTPQ	(F3, F4), -16(RSP)   // e3933fad
	FSTPQ.W	(F3, F4), 32(RSP)    // e31381ad
	FSTPQ.P	(F3, F4), 32(RSP)    // e31381ac
	FSTPQ	(F3, F4), 11(RSP)    // fb2f0091631300ad
	FSTPQ	(F3, F4), 1024(RSP)  // fb031091631300ad
	FSTPQ	(F3, F4), 4104(RSP)
	FSTPQ	(F3, F4), x(SB)
	FSTPQ	(F3, F4), x+8(SB)

// System Register
	MSR	$1, SPSel                          // bf4100d5
	MSR	$9, DAIFSet                        // df4903d5
	MSR	$6, DAIFClr                        // ff4603d5
	MRS	ELR_EL1, R8                        // 284038d5
	MSR	R16, ELR_EL1                       // 304018d5
	MSR	R2, ACTLR_EL1                      // 221018d5
	MRS	TCR_EL1, R5                        // 452038d5
	MRS	PMEVCNTR15_EL0, R12                // ece93bd5
	MSR	R20, PMEVTYPER26_EL0               // 54ef1bd5
	MSR	R10, DBGBCR15_EL1                  // aa0f10d5
	MRS	ACTLR_EL1, R3                      // 231038d5
	MSR	R9, ACTLR_EL1                      // 291018d5
	MRS	AFSR0_EL1, R10                     // 0a5138d5
	MSR	R1, AFSR0_EL1                      // 015118d5
	MRS	AFSR0_EL1, R9                      // 095138d5
	MSR	R30, AFSR0_EL1                     // 1e5118d5
	MRS	AFSR1_EL1, R0                      // 205138d5
	MSR	R1, AFSR1_EL1                      // 215118d5
	MRS	AFSR1_EL1, R8                      // 285138d5
	MSR	R19, AFSR1_EL1                     // 335118d5
	MRS	AIDR_EL1, R11                      // eb0039d5
	MRS	AMAIR_EL1, R0                      // 00a338d5
	MSR	R22, AMAIR_EL1                     // 16a318d5
	MRS	AMAIR_EL1, R14                     // 0ea338d5
	MSR	R0, AMAIR_EL1                      // 00a318d5
	MRS	APDAKeyHi_EL1, R16                 // 302238d5
	MSR	R26, APDAKeyHi_EL1                 // 3a2218d5
	MRS	APDAKeyLo_EL1, R21                 // 152238d5
	MSR	R22, APDAKeyLo_EL1                 // 162218d5
	MRS	APDBKeyHi_EL1, R2                  // 622238d5
	MSR	R6, APDBKeyHi_EL1                  // 662218d5
	MRS	APDBKeyLo_EL1, R5                  // 452238d5
	MSR	R22, APDBKeyLo_EL1                 // 562218d5
	MRS	APGAKeyHi_EL1, R22                 // 362338d5
	MSR	R5, APGAKeyHi_EL1                  // 252318d5
	MRS	APGAKeyLo_EL1, R16                 // 102338d5
	MSR	R22, APGAKeyLo_EL1                 // 162318d5
	MRS	APIAKeyHi_EL1, R23                 // 372138d5
	MSR	R17, APIAKeyHi_EL1                 // 312118d5
	MRS	APIAKeyLo_EL1, R16                 // 102138d5
	MSR	R6, APIAKeyLo_EL1                  // 062118d5
	MRS	APIBKeyHi_EL1, R10                 // 6a2138d5
	MSR	R11, APIBKeyHi_EL1                 // 6b2118d5
	MRS	APIBKeyLo_EL1, R25                 // 592138d5
	MSR	R22, APIBKeyLo_EL1                 // 562118d5
	MRS	CCSIDR_EL1, R25                    // 190039d5
	MRS	CLIDR_EL1, R16                     // 300039d5
	MRS	CNTFRQ_EL0, R20                    // 14e03bd5
	MSR	R16, CNTFRQ_EL0                    // 10e01bd5
	MRS	CNTKCTL_EL1, R26                   // 1ae138d5
	MSR	R0, CNTKCTL_EL1                    // 00e118d5
	MRS	CNTP_CTL_EL0, R14                  // 2ee23bd5
	MSR	R17, CNTP_CTL_EL0                  // 31e21bd5
	MRS	CNTP_CVAL_EL0, R15                 // 4fe23bd5
	MSR	R8, CNTP_CVAL_EL0                  // 48e21bd5
	MRS	CNTP_TVAL_EL0, R6                  // 06e23bd5
	MSR	R29, CNTP_TVAL_EL0                 // 1de21bd5
	MRS	CNTP_CTL_EL0, R22                  // 36e23bd5
	MSR	R0, CNTP_CTL_EL0                   // 20e21bd5
	MRS	CNTP_CVAL_EL0, R9                  // 49e23bd5
	MSR	R4, CNTP_CVAL_EL0                  // 44e21bd5
	MRS	CNTP_TVAL_EL0, R27                 // 1be23bd5
	MSR	R17, CNTP_TVAL_EL0                 // 11e21bd5
	MRS	CNTV_CTL_EL0, R27                  // 3be33bd5
	MSR	R2, CNTV_CTL_EL0                   // 22e31bd5
	MRS	CNTV_CVAL_EL0, R16                 // 50e33bd5
	MSR	R27, CNTV_CVAL_EL0                 // 5be31bd5
	MRS	CNTV_TVAL_EL0, R12                 // 0ce33bd5
	MSR	R19, CNTV_TVAL_EL0                 // 13e31bd5
	MRS	CNTV_CTL_EL0, R14                  // 2ee33bd5
	MSR	R2, CNTV_CTL_EL0                   // 22e31bd5
	MRS	CNTV_CVAL_EL0, R8                  // 48e33bd5
	MSR	R26, CNTV_CVAL_EL0                 // 5ae31bd5
	MRS	CNTV_TVAL_EL0, R6                  // 06e33bd5
	MSR	R19, CNTV_TVAL_EL0                 // 13e31bd5
	MRS	CNTKCTL_EL1, R16                   // 10e138d5
	MSR	R26, CNTKCTL_EL1                   // 1ae118d5
	MRS	CNTPCT_EL0, R9                     // 29e03bd5
	MRS	CNTPS_CTL_EL1, R30                 // 3ee23fd5
	MSR	R26, CNTPS_CTL_EL1                 // 3ae21fd5
	MRS	CNTPS_CVAL_EL1, R8                 // 48e23fd5
	MSR	R26, CNTPS_CVAL_EL1                // 5ae21fd5
	MRS	CNTPS_TVAL_EL1, R7                 // 07e23fd5
	MSR	R13, CNTPS_TVAL_EL1                // 0de21fd5
	MRS	CNTP_CTL_EL0, R2                   // 22e23bd5
	MSR	R10, CNTP_CTL_EL0                  // 2ae21bd5
	MRS	CNTP_CVAL_EL0, R6                  // 46e23bd5
	MSR	R21, CNTP_CVAL_EL0                 // 55e21bd5
	MRS	CNTP_TVAL_EL0, R27                 // 1be23bd5
	MSR	R29, CNTP_TVAL_EL0                 // 1de21bd5
	MRS	CNTVCT_EL0, R13                    // 4de03bd5
	MRS	CNTV_CTL_EL0, R30                  // 3ee33bd5
	MSR	R19, CNTV_CTL_EL0                  // 33e31bd5
	MRS	CNTV_CVAL_EL0, R27                 // 5be33bd5
	MSR	R24, CNTV_CVAL_EL0                 // 58e31bd5
	MRS	CNTV_TVAL_EL0, R24                 // 18e33bd5
	MSR	R5, CNTV_TVAL_EL0                  // 05e31bd5
	MRS	CONTEXTIDR_EL1, R15                // 2fd038d5
	MSR	R27, CONTEXTIDR_EL1                // 3bd018d5
	MRS	CONTEXTIDR_EL1, R29                // 3dd038d5
	MSR	R24, CONTEXTIDR_EL1                // 38d018d5
	MRS	CPACR_EL1, R10                     // 4a1038d5
	MSR	R14, CPACR_EL1                     // 4e1018d5
	MRS	CPACR_EL1, R27                     // 5b1038d5
	MSR	R22, CPACR_EL1                     // 561018d5
	MRS	CSSELR_EL1, R3                     // 03003ad5
	MSR	R4, CSSELR_EL1                     // 04001ad5
	MRS	CTR_EL0, R15                       // 2f003bd5
	MRS	CurrentEL, R1                      // 414238d5
	MRS	DAIF, R24                          // 38423bd5
	MSR	R9, DAIF                           // 29421bd5
	MRS	DBGAUTHSTATUS_EL1, R5              // c57e30d5
	MRS	DBGBCR0_EL1, R29                   // bd0030d5
	MRS	DBGBCR1_EL1, R13                   // ad0130d5
	MRS	DBGBCR2_EL1, R22                   // b60230d5
	MRS	DBGBCR3_EL1, R8                    // a80330d5
	MRS	DBGBCR4_EL1, R2                    // a20430d5
	MRS	DBGBCR5_EL1, R4                    // a40530d5
	MRS	DBGBCR6_EL1, R2                    // a20630d5
	MRS	DBGBCR7_EL1, R6                    // a60730d5
	MRS	DBGBCR8_EL1, R1                    // a10830d5
	MRS	DBGBCR9_EL1, R16                   // b00930d5
	MRS	DBGBCR10_EL1, R23                  // b70a30d5
	MRS	DBGBCR11_EL1, R3                   // a30b30d5
	MRS	DBGBCR12_EL1, R6                   // a60c30d5
	MRS	DBGBCR13_EL1, R16                  // b00d30d5
	MRS	DBGBCR14_EL1, R4                   // a40e30d5
	MRS	DBGBCR15_EL1, R9                   // a90f30d5
	MSR	R4, DBGBCR0_EL1                    // a40010d5
	MSR	R14, DBGBCR1_EL1                   // ae0110d5
	MSR	R7, DBGBCR2_EL1                    // a70210d5
	MSR	R12, DBGBCR3_EL1                   // ac0310d5
	MSR	R6, DBGBCR4_EL1                    // a60410d5
	MSR	R11, DBGBCR5_EL1                   // ab0510d5
	MSR	R6, DBGBCR6_EL1                    // a60610d5
	MSR	R13, DBGBCR7_EL1                   // ad0710d5
	MSR	R17, DBGBCR8_EL1                   // b10810d5
	MSR	R17, DBGBCR9_EL1                   // b10910d5
	MSR	R22, DBGBCR10_EL1                  // b60a10d5
	MSR	R16, DBGBCR11_EL1                  // b00b10d5
	MSR	R24, DBGBCR12_EL1                  // b80c10d5
	MSR	R29, DBGBCR13_EL1                  // bd0d10d5
	MSR	R1, DBGBCR14_EL1                   // a10e10d5
	MSR	R10, DBGBCR15_EL1                  // aa0f10d5
	MRS	DBGBVR0_EL1, R16                   // 900030d5
	MRS	DBGBVR1_EL1, R21                   // 950130d5
	MRS	DBGBVR2_EL1, R13                   // 8d0230d5
	MRS	DBGBVR3_EL1, R12                   // 8c0330d5
	MRS	DBGBVR4_EL1, R20                   // 940430d5
	MRS	DBGBVR5_EL1, R21                   // 950530d5
	MRS	DBGBVR6_EL1, R27                   // 9b0630d5
	MRS	DBGBVR7_EL1, R6                    // 860730d5
	MRS	DBGBVR8_EL1, R14                   // 8e0830d5
	MRS	DBGBVR9_EL1, R5                    // 850930d5
	MRS	DBGBVR10_EL1, R9                   // 890a30d5
	MRS	DBGBVR11_EL1, R25                  // 990b30d5
	MRS	DBGBVR12_EL1, R30                  // 9e0c30d5
	MRS	DBGBVR13_EL1, R1                   // 810d30d5
	MRS	DBGBVR14_EL1, R17                  // 910e30d5
	MRS	DBGBVR15_EL1, R25                  // 990f30d5
	MSR	R15, DBGBVR0_EL1                   // 8f0010d5
	MSR	R6, DBGBVR1_EL1                    // 860110d5
	MSR	R24, DBGBVR2_EL1                   // 980210d5
	MSR	R17, DBGBVR3_EL1                   // 910310d5
	MSR	R3, DBGBVR4_EL1                    // 830410d5
	MSR	R21, DBGBVR5_EL1                   // 950510d5
	MSR	R5, DBGBVR6_EL1                    // 850610d5
	MSR	R6, DBGBVR7_EL1                    // 860710d5
	MSR	R25, DBGBVR8_EL1                   // 990810d5
	MSR	R4, DBGBVR9_EL1                    // 840910d5
	MSR	R25, DBGBVR10_EL1                  // 990a10d5
	MSR	R17, DBGBVR11_EL1                  // 910b10d5
	MSR	R0, DBGBVR12_EL1                   // 800c10d5
	MSR	R5, DBGBVR13_EL1                   // 850d10d5
	MSR	R9, DBGBVR14_EL1                   // 890e10d5
	MSR	R12, DBGBVR15_EL1                  // 8c0f10d5
	MRS	DBGCLAIMCLR_EL1, R27               // db7930d5
	MSR	R0, DBGCLAIMCLR_EL1                // c07910d5
	MRS	DBGCLAIMSET_EL1, R7                // c77830d5
	MSR	R13, DBGCLAIMSET_EL1               // cd7810d5
	MRS	DBGDTRRX_EL0, R0                   // 000533d5
	MSR	R29, DBGDTRTX_EL0                  // 1d0513d5
	MRS	DBGDTR_EL0, R27                    // 1b0433d5
	MSR	R30, DBGDTR_EL0                    // 1e0413d5
	MRS	DBGPRCR_EL1, R4                    // 841430d5
	MSR	R0, DBGPRCR_EL1                    // 801410d5
	MRS	DBGWCR0_EL1, R24                   // f80030d5
	MRS	DBGWCR1_EL1, R19                   // f30130d5
	MRS	DBGWCR2_EL1, R25                   // f90230d5
	MRS	DBGWCR3_EL1, R0                    // e00330d5
	MRS	DBGWCR4_EL1, R13                   // ed0430d5
	MRS	DBGWCR5_EL1, R8                    // e80530d5
	MRS	DBGWCR6_EL1, R22                   // f60630d5
	MRS	DBGWCR7_EL1, R11                   // eb0730d5
	MRS	DBGWCR8_EL1, R11                   // eb0830d5
	MRS	DBGWCR9_EL1, R3                    // e30930d5
	MRS	DBGWCR10_EL1, R17                  // f10a30d5
	MRS	DBGWCR11_EL1, R21                  // f50b30d5
	MRS	DBGWCR12_EL1, R10                  // ea0c30d5
	MRS	DBGWCR13_EL1, R22                  // f60d30d5
	MRS	DBGWCR14_EL1, R11                  // eb0e30d5
	MRS	DBGWCR15_EL1, R0                   // e00f30d5
	MSR	R24, DBGWCR0_EL1                   // f80010d5
	MSR	R8, DBGWCR1_EL1                    // e80110d5
	MSR	R17, DBGWCR2_EL1                   // f10210d5
	MSR	R29, DBGWCR3_EL1                   // fd0310d5
	MSR	R13, DBGWCR4_EL1                   // ed0410d5
	MSR	R22, DBGWCR5_EL1                   // f60510d5
	MSR	R3, DBGWCR6_EL1                    // e30610d5
	MSR	R4, DBGWCR7_EL1                    // e40710d5
	MSR	R7, DBGWCR8_EL1                    // e70810d5
	MSR	R29, DBGWCR9_EL1                   // fd0910d5
	MSR	R3, DBGWCR10_EL1                   // e30a10d5
	MSR	R11, DBGWCR11_EL1                  // eb0b10d5
	MSR	R20, DBGWCR12_EL1                  // f40c10d5
	MSR	R6, DBGWCR13_EL1                   // e60d10d5
	MSR	R22, DBGWCR14_EL1                  // f60e10d5
	MSR	R25, DBGWCR15_EL1                  // f90f10d5
	MRS	DBGWVR0_EL1, R14                   // ce0030d5
	MRS	DBGWVR1_EL1, R16                   // d00130d5
	MRS	DBGWVR2_EL1, R15                   // cf0230d5
	MRS	DBGWVR3_EL1, R1                    // c10330d5
	MRS	DBGWVR4_EL1, R26                   // da0430d5
	MRS	DBGWVR5_EL1, R14                   // ce0530d5
	MRS	DBGWVR6_EL1, R17                   // d10630d5
	MRS	DBGWVR7_EL1, R22                   // d60730d5
	MRS	DBGWVR8_EL1, R4                    // c40830d5
	MRS	DBGWVR9_EL1, R3                    // c30930d5
	MRS	DBGWVR10_EL1, R16                  // d00a30d5
	MRS	DBGWVR11_EL1, R2                   // c20b30d5
	MRS	DBGWVR12_EL1, R5                   // c50c30d5
	MRS	DBGWVR13_EL1, R23                  // d70d30d5
	MRS	DBGWVR14_EL1, R5                   // c50e30d5
	MRS	DBGWVR15_EL1, R6                   // c60f30d5
	MSR	R24, DBGWVR0_EL1                   // d80010d5
	MSR	R6, DBGWVR1_EL1                    // c60110d5
	MSR	R1, DBGWVR2_EL1                    // c10210d5
	MSR	R24, DBGWVR3_EL1                   // d80310d5
	MSR	R24, DBGWVR4_EL1                   // d80410d5
	MSR	R0, DBGWVR5_EL1                    // c00510d5
	MSR	R10, DBGWVR6_EL1                   // ca0610d5
	MSR	R17, DBGWVR7_EL1                   // d10710d5
	MSR	R7, DBGWVR8_EL1                    // c70810d5
	MSR	R8, DBGWVR9_EL1                    // c80910d5
	MSR	R15, DBGWVR10_EL1                  // cf0a10d5
	MSR	R8, DBGWVR11_EL1                   // c80b10d5
	MSR	R7, DBGWVR12_EL1                   // c70c10d5
	MSR	R14, DBGWVR13_EL1                  // ce0d10d5
	MSR	R16, DBGWVR14_EL1                  // d00e10d5
	MSR	R5, DBGWVR15_EL1                   // c50f10d5
	MRS	DCZID_EL0, R21                     // f5003bd5
	MRS	DISR_EL1, R8                       // 28c138d5
	MSR	R5, DISR_EL1                       // 25c118d5
	MRS	DIT, R29                           // bd423bd5
	MSR	R22, DIT                           // b6421bd5
	MRS	DLR_EL0, R25                       // 39453bd5
	MSR	R9, DLR_EL0                        // 29451bd5
	MRS	DSPSR_EL0, R3                      // 03453bd5
	MSR	R10, DSPSR_EL0                     // 0a451bd5
	MRS	ELR_EL1, R24                       // 384038d5
	MSR	R3, ELR_EL1                        // 234018d5
	MRS	ELR_EL1, R13                       // 2d4038d5
	MSR	R27, ELR_EL1                       // 3b4018d5
	MRS	ERRIDR_EL1, R30                    // 1e5338d5
	MRS	ERRSELR_EL1, R21                   // 355338d5
	MSR	R22, ERRSELR_EL1                   // 365318d5
	MRS	ERXADDR_EL1, R30                   // 7e5438d5
	MSR	R0, ERXADDR_EL1                    // 605418d5
	MRS	ERXCTLR_EL1, R6                    // 265438d5
	MSR	R9, ERXCTLR_EL1                    // 295418d5
	MRS	ERXFR_EL1, R19                     // 135438d5
	MRS	ERXMISC0_EL1, R20                  // 145538d5
	MSR	R24, ERXMISC0_EL1                  // 185518d5
	MRS	ERXMISC1_EL1, R15                  // 2f5538d5
	MSR	R10, ERXMISC1_EL1                  // 2a5518d5
	MRS	ERXSTATUS_EL1, R30                 // 5e5438d5
	MSR	R3, ERXSTATUS_EL1                  // 435418d5
	MRS	ESR_EL1, R6                        // 065238d5
	MSR	R21, ESR_EL1                       // 155218d5
	MRS	ESR_EL1, R17                       // 115238d5
	MSR	R12, ESR_EL1                       // 0c5218d5
	MRS	FAR_EL1, R3                        // 036038d5
	MSR	R17, FAR_EL1                       // 116018d5
	MRS	FAR_EL1, R9                        // 096038d5
	MSR	R25, FAR_EL1                       // 196018d5
	MRS	FPCR, R1                           // 01443bd5
	MSR	R27, FPCR                          // 1b441bd5
	MRS	FPSR, R5                           // 25443bd5
	MSR	R15, FPSR                          // 2f441bd5
	MRS	ID_AA64AFR0_EL1, R19               // 930538d5
	MRS	ID_AA64AFR1_EL1, R24               // b80538d5
	MRS	ID_AA64DFR0_EL1, R21               // 150538d5
	MRS	ID_AA64DFR1_EL1, R20               // 340538d5
	MRS	ID_AA64ISAR0_EL1, R4               // 040638d5
	MRS	ID_AA64ISAR1_EL1, R6               // 260638d5
	MRS	ID_AA64MMFR0_EL1, R0               // 000738d5
	MRS	ID_AA64MMFR1_EL1, R17              // 310738d5
	MRS	ID_AA64MMFR2_EL1, R23              // 570738d5
	MRS	ID_AA64PFR0_EL1, R20               // 140438d5
	MRS	ID_AA64PFR1_EL1, R26               // 3a0438d5
	MRS	ID_AA64ZFR0_EL1, R26               // 9a0438d5
	MRS	ID_AFR0_EL1, R21                   // 750138d5
	MRS	ID_DFR0_EL1, R15                   // 4f0138d5
	MRS	ID_ISAR0_EL1, R11                  // 0b0238d5
	MRS	ID_ISAR1_EL1, R16                  // 300238d5
	MRS	ID_ISAR2_EL1, R10                  // 4a0238d5
	MRS	ID_ISAR3_EL1, R13                  // 6d0238d5
	MRS	ID_ISAR4_EL1, R24                  // 980238d5
	MRS	ID_ISAR5_EL1, R29                  // bd0238d5
	MRS	ID_MMFR0_EL1, R10                  // 8a0138d5
	MRS	ID_MMFR1_EL1, R29                  // bd0138d5
	MRS	ID_MMFR2_EL1, R16                  // d00138d5
	MRS	ID_MMFR3_EL1, R10                  // ea0138d5
	MRS	ID_MMFR4_EL1, R23                  // d70238d5
	MRS	ID_PFR0_EL1, R4                    // 040138d5
	MRS	ID_PFR1_EL1, R12                   // 2c0138d5
	MRS	ISR_EL1, R24                       // 18c138d5
	MRS	MAIR_EL1, R20                      // 14a238d5
	MSR	R21, MAIR_EL1                      // 15a218d5
	MRS	MAIR_EL1, R20                      // 14a238d5
	MSR	R5, MAIR_EL1                       // 05a218d5
	MRS	MDCCINT_EL1, R23                   // 170230d5
	MSR	R27, MDCCINT_EL1                   // 1b0210d5
	MRS	MDCCSR_EL0, R19                    // 130133d5
	MRS	MDRAR_EL1, R12                     // 0c1030d5
	MRS	MDSCR_EL1, R15                     // 4f0230d5
	MSR	R15, MDSCR_EL1                     // 4f0210d5
	MRS	MIDR_EL1, R26                      // 1a0038d5
	MRS	MPIDR_EL1, R25                     // b90038d5
	MRS	MVFR0_EL1, R29                     // 1d0338d5
	MRS	MVFR1_EL1, R7                      // 270338d5
	MRS	MVFR2_EL1, R19                     // 530338d5
	MRS	NZCV, R11                          // 0b423bd5
	MSR	R10, NZCV                          // 0a421bd5
	MRS	OSDLR_EL1, R16                     // 901330d5
	MSR	R21, OSDLR_EL1                     // 951310d5
	MRS	OSDTRRX_EL1, R5                    // 450030d5
	MSR	R30, OSDTRRX_EL1                   // 5e0010d5
	MRS	OSDTRTX_EL1, R3                    // 430330d5
	MSR	R13, OSDTRTX_EL1                   // 4d0310d5
	MRS	OSECCR_EL1, R2                     // 420630d5
	MSR	R17, OSECCR_EL1                    // 510610d5
	MSR	R3, OSLAR_EL1                      // 831010d5
	MRS	OSLSR_EL1, R15                     // 8f1130d5
	MRS	PAN, R14                           // 6e4238d5
	MSR	R0, PAN                            // 604218d5
	MRS	PAR_EL1, R27                       // 1b7438d5
	MSR	R3, PAR_EL1                        // 037418d5
	MRS	PMCCFILTR_EL0, R10                 // eaef3bd5
	MSR	R16, PMCCFILTR_EL0                 // f0ef1bd5
	MRS	PMCCNTR_EL0, R17                   // 119d3bd5
	MSR	R13, PMCCNTR_EL0                   // 0d9d1bd5
	MRS	PMCEID0_EL0, R8                    // c89c3bd5
	MRS	PMCEID1_EL0, R30                   // fe9c3bd5
	MRS	PMCNTENCLR_EL0, R11                // 4b9c3bd5
	MSR	R21, PMCNTENCLR_EL0                // 559c1bd5
	MRS	PMCNTENSET_EL0, R25                // 399c3bd5
	MSR	R13, PMCNTENSET_EL0                // 2d9c1bd5
	MRS	PMCR_EL0, R23                      // 179c3bd5
	MSR	R11, PMCR_EL0                      // 0b9c1bd5
	MRS	PMEVCNTR0_EL0, R27                 // 1be83bd5
	MRS	PMEVCNTR1_EL0, R23                 // 37e83bd5
	MRS	PMEVCNTR2_EL0, R26                 // 5ae83bd5
	MRS	PMEVCNTR3_EL0, R11                 // 6be83bd5
	MRS	PMEVCNTR4_EL0, R14                 // 8ee83bd5
	MRS	PMEVCNTR5_EL0, R9                  // a9e83bd5
	MRS	PMEVCNTR6_EL0, R30                 // dee83bd5
	MRS	PMEVCNTR7_EL0, R19                 // f3e83bd5
	MRS	PMEVCNTR8_EL0, R5                  // 05e93bd5
	MRS	PMEVCNTR9_EL0, R27                 // 3be93bd5
	MRS	PMEVCNTR10_EL0, R23                // 57e93bd5
	MRS	PMEVCNTR11_EL0, R27                // 7be93bd5
	MRS	PMEVCNTR12_EL0, R0                 // 80e93bd5
	MRS	PMEVCNTR13_EL0, R13                // ade93bd5
	MRS	PMEVCNTR14_EL0, R27                // dbe93bd5
	MRS	PMEVCNTR15_EL0, R16                // f0e93bd5
	MRS	PMEVCNTR16_EL0, R16                // 10ea3bd5
	MRS	PMEVCNTR17_EL0, R14                // 2eea3bd5
	MRS	PMEVCNTR18_EL0, R10                // 4aea3bd5
	MRS	PMEVCNTR19_EL0, R12                // 6cea3bd5
	MRS	PMEVCNTR20_EL0, R5                 // 85ea3bd5
	MRS	PMEVCNTR21_EL0, R26                // baea3bd5
	MRS	PMEVCNTR22_EL0, R19                // d3ea3bd5
	MRS	PMEVCNTR23_EL0, R5                 // e5ea3bd5
	MRS	PMEVCNTR24_EL0, R17                // 11eb3bd5
	MRS	PMEVCNTR25_EL0, R0                 // 20eb3bd5
	MRS	PMEVCNTR26_EL0, R20                // 54eb3bd5
	MRS	PMEVCNTR27_EL0, R12                // 6ceb3bd5
	MRS	PMEVCNTR28_EL0, R29                // 9deb3bd5
	MRS	PMEVCNTR29_EL0, R22                // b6eb3bd5
	MRS	PMEVCNTR30_EL0, R22                // d6eb3bd5
	MSR	R30, PMEVCNTR0_EL0                 // 1ee81bd5
	MSR	R1, PMEVCNTR1_EL0                  // 21e81bd5
	MSR	R20, PMEVCNTR2_EL0                 // 54e81bd5
	MSR	R9, PMEVCNTR3_EL0                  // 69e81bd5
	MSR	R8, PMEVCNTR4_EL0                  // 88e81bd5
	MSR	R2, PMEVCNTR5_EL0                  // a2e81bd5
	MSR	R30, PMEVCNTR6_EL0                 // dee81bd5
	MSR	R14, PMEVCNTR7_EL0                 // eee81bd5
	MSR	R1, PMEVCNTR8_EL0                  // 01e91bd5
	MSR	R15, PMEVCNTR9_EL0                 // 2fe91bd5
	MSR	R15, PMEVCNTR10_EL0                // 4fe91bd5
	MSR	R14, PMEVCNTR11_EL0                // 6ee91bd5
	MSR	R15, PMEVCNTR12_EL0                // 8fe91bd5
	MSR	R25, PMEVCNTR13_EL0                // b9e91bd5
	MSR	R26, PMEVCNTR14_EL0                // dae91bd5
	MSR	R21, PMEVCNTR15_EL0                // f5e91bd5
	MSR	R29, PMEVCNTR16_EL0                // 1dea1bd5
	MSR	R11, PMEVCNTR17_EL0                // 2bea1bd5
	MSR	R16, PMEVCNTR18_EL0                // 50ea1bd5
	MSR	R2, PMEVCNTR19_EL0                 // 62ea1bd5
	MSR	R19, PMEVCNTR20_EL0                // 93ea1bd5
	MSR	R17, PMEVCNTR21_EL0                // b1ea1bd5
	MSR	R7, PMEVCNTR22_EL0                 // c7ea1bd5
	MSR	R23, PMEVCNTR23_EL0                // f7ea1bd5
	MSR	R15, PMEVCNTR24_EL0                // 0feb1bd5
	MSR	R27, PMEVCNTR25_EL0                // 3beb1bd5
	MSR	R13, PMEVCNTR26_EL0                // 4deb1bd5
	MSR	R2, PMEVCNTR27_EL0                 // 62eb1bd5
	MSR	R15, PMEVCNTR28_EL0                // 8feb1bd5
	MSR	R14, PMEVCNTR29_EL0                // aeeb1bd5
	MSR	R23, PMEVCNTR30_EL0                // d7eb1bd5
	MRS	PMEVTYPER0_EL0, R23                // 17ec3bd5
	MRS	PMEVTYPER1_EL0, R30                // 3eec3bd5
	MRS	PMEVTYPER2_EL0, R12                // 4cec3bd5
	MRS	PMEVTYPER3_EL0, R13                // 6dec3bd5
	MRS	PMEVTYPER4_EL0, R25                // 99ec3bd5
	MRS	PMEVTYPER5_EL0, R23                // b7ec3bd5
	MRS	PMEVTYPER6_EL0, R8                 // c8ec3bd5
	MRS	PMEVTYPER7_EL0, R2                 // e2ec3bd5
	MRS	PMEVTYPER8_EL0, R23                // 17ed3bd5
	MRS	PMEVTYPER9_EL0, R25                // 39ed3bd5
	MRS	PMEVTYPER10_EL0, R0                // 40ed3bd5
	MRS	PMEVTYPER11_EL0, R30               // 7eed3bd5
	MRS	PMEVTYPER12_EL0, R0                // 80ed3bd5
	MRS	PMEVTYPER13_EL0, R9                // a9ed3bd5
	MRS	PMEVTYPER14_EL0, R15               // cfed3bd5
	MRS	PMEVTYPER15_EL0, R13               // eded3bd5
	MRS	PMEVTYPER16_EL0, R11               // 0bee3bd5
	MRS	PMEVTYPER17_EL0, R19               // 33ee3bd5
	MRS	PMEVTYPER18_EL0, R3                // 43ee3bd5
	MRS	PMEVTYPER19_EL0, R17               // 71ee3bd5
	MRS	PMEVTYPER20_EL0, R8                // 88ee3bd5
	MRS	PMEVTYPER21_EL0, R2                // a2ee3bd5
	MRS	PMEVTYPER22_EL0, R5                // c5ee3bd5
	MRS	PMEVTYPER23_EL0, R17               // f1ee3bd5
	MRS	PMEVTYPER24_EL0, R22               // 16ef3bd5
	MRS	PMEVTYPER25_EL0, R3                // 23ef3bd5
	MRS	PMEVTYPER26_EL0, R23               // 57ef3bd5
	MRS	PMEVTYPER27_EL0, R19               // 73ef3bd5
	MRS	PMEVTYPER28_EL0, R24               // 98ef3bd5
	MRS	PMEVTYPER29_EL0, R3                // a3ef3bd5
	MRS	PMEVTYPER30_EL0, R1                // c1ef3bd5
	MSR	R20, PMEVTYPER0_EL0                // 14ec1bd5
	MSR	R20, PMEVTYPER1_EL0                // 34ec1bd5
	MSR	R14, PMEVTYPER2_EL0                // 4eec1bd5
	MSR	R26, PMEVTYPER3_EL0                // 7aec1bd5
	MSR	R11, PMEVTYPER4_EL0                // 8bec1bd5
	MSR	R16, PMEVTYPER5_EL0                // b0ec1bd5
	MSR	R29, PMEVTYPER6_EL0                // ddec1bd5
	MSR	R3, PMEVTYPER7_EL0                 // e3ec1bd5
	MSR	R30, PMEVTYPER8_EL0                // 1eed1bd5
	MSR	R17, PMEVTYPER9_EL0                // 31ed1bd5
	MSR	R10, PMEVTYPER10_EL0               // 4aed1bd5
	MSR	R19, PMEVTYPER11_EL0               // 73ed1bd5
	MSR	R13, PMEVTYPER12_EL0               // 8ded1bd5
	MSR	R23, PMEVTYPER13_EL0               // b7ed1bd5
	MSR	R13, PMEVTYPER14_EL0               // cded1bd5
	MSR	R9, PMEVTYPER15_EL0                // e9ed1bd5
	MSR	R1, PMEVTYPER16_EL0                // 01ee1bd5
	MSR	R19, PMEVTYPER17_EL0               // 33ee1bd5
	MSR	R22, PMEVTYPER18_EL0               // 56ee1bd5
	MSR	R23, PMEVTYPER19_EL0               // 77ee1bd5
	MSR	R30, PMEVTYPER20_EL0               // 9eee1bd5
	MSR	R9, PMEVTYPER21_EL0                // a9ee1bd5
	MSR	R3, PMEVTYPER22_EL0                // c3ee1bd5
	MSR	R1, PMEVTYPER23_EL0                // e1ee1bd5
	MSR	R16, PMEVTYPER24_EL0               // 10ef1bd5
	MSR	R12, PMEVTYPER25_EL0               // 2cef1bd5
	MSR	R7, PMEVTYPER26_EL0                // 47ef1bd5
	MSR	R9, PMEVTYPER27_EL0                // 69ef1bd5
	MSR	R10, PMEVTYPER28_EL0               // 8aef1bd5
	MSR	R5, PMEVTYPER29_EL0                // a5ef1bd5
	MSR	R12, PMEVTYPER30_EL0               // ccef1bd5
	MRS	PMINTENCLR_EL1, R24                // 589e38d5
	MSR	R15, PMINTENCLR_EL1                // 4f9e18d5
	MRS	PMINTENSET_EL1, R1                 // 219e38d5
	MSR	R4, PMINTENSET_EL1                 // 249e18d5
	MRS	PMOVSCLR_EL0, R6                   // 669c3bd5
	MSR	R30, PMOVSCLR_EL0                  // 7e9c1bd5
	MRS	PMOVSSET_EL0, R16                  // 709e3bd5
	MSR	R12, PMOVSSET_EL0                  // 6c9e1bd5
	MRS	PMSELR_EL0, R30                    // be9c3bd5
	MSR	R5, PMSELR_EL0                     // a59c1bd5
	MSR	R27, PMSWINC_EL0                   // 9b9c1bd5
	MRS	PMUSERENR_EL0, R8                  // 089e3bd5
	MSR	R6, PMUSERENR_EL0                  // 069e1bd5
	MRS	PMXEVCNTR_EL0, R26                 // 5a9d3bd5
	MSR	R10, PMXEVCNTR_EL0                 // 4a9d1bd5
	MRS	PMXEVTYPER_EL0, R4                 // 249d3bd5
	MSR	R4, PMXEVTYPER_EL0                 // 249d1bd5
	MRS	REVIDR_EL1, R29                    // dd0038d5
	MRS	RMR_EL1, R4                        // 44c038d5
	MSR	R0, RMR_EL1                        // 40c018d5
	MRS	RVBAR_EL1, R7                      // 27c038d5
	MRS	SCTLR_EL1, R8                      // 081038d5
	MSR	R0, SCTLR_EL1                      // 001018d5
	MRS	SCTLR_EL1, R30                     // 1e1038d5
	MSR	R13, SCTLR_EL1                     // 0d1018d5
	MRS	SPSR_EL1, R1                       // 014038d5
	MSR	R2, SPSR_EL1                       // 024018d5
	MRS	SPSR_EL1, R3                       // 034038d5
	MSR	R14, SPSR_EL1                      // 0e4018d5
	MRS	SPSR_abt, R12                      // 2c433cd5
	MSR	R4, SPSR_abt                       // 24431cd5
	MRS	SPSR_fiq, R17                      // 71433cd5
	MSR	R9, SPSR_fiq                       // 69431cd5
	MRS	SPSR_irq, R12                      // 0c433cd5
	MSR	R23, SPSR_irq                      // 17431cd5
	MRS	SPSR_und, R29                      // 5d433cd5
	MSR	R3, SPSR_und                       // 43431cd5
	MRS	SPSel, R29                         // 1d4238d5
	MSR	R1, SPSel                          // 014218d5
	MRS	SP_EL0, R10                        // 0a4138d5
	MSR	R4, SP_EL0                         // 044118d5
	MRS	SP_EL1, R22                        // 16413cd5
	MSR	R17, SP_EL1                        // 11411cd5
	MRS	TCR_EL1, R17                       // 512038d5
	MSR	R23, TCR_EL1                       // 572018d5
	MRS	TCR_EL1, R14                       // 4e2038d5
	MSR	R29, TCR_EL1                       // 5d2018d5
	MRS	TPIDRRO_EL0, R26                   // 7ad03bd5
	MSR	R16, TPIDRRO_EL0                   // 70d01bd5
	MRS	TPIDR_EL0, R23                     // 57d03bd5
	MSR	R5, TPIDR_EL0                      // 45d01bd5
	MRS	TPIDR_EL1, R17                     // 91d038d5
	MSR	R22, TPIDR_EL1                     // 96d018d5
	MRS	TTBR0_EL1, R30                     // 1e2038d5
	MSR	R29, TTBR0_EL1                     // 1d2018d5
	MRS	TTBR0_EL1, R23                     // 172038d5
	MSR	R15, TTBR0_EL1                     // 0f2018d5
	MRS	TTBR1_EL1, R5                      // 252038d5
	MSR	R26, TTBR1_EL1                     // 3a2018d5
	MRS	TTBR1_EL1, R19                     // 332038d5
	MSR	R23, TTBR1_EL1                     // 372018d5
	MRS	UAO, R22                           // 964238d5
	MSR	R4, UAO                            // 844218d5
	MRS	VBAR_EL1, R23                      // 17c038d5
	MSR	R2, VBAR_EL1                       // 02c018d5
	MRS	VBAR_EL1, R6                       // 06c038d5
	MSR	R3, VBAR_EL1                       // 03c018d5
	MRS	DISR_EL1, R12                      // 2cc138d5
	MSR	R24, DISR_EL1                      // 38c118d5
	MRS	MPIDR_EL1, R1                      // a10038d5
	MRS	MIDR_EL1, R13                      // 0d0038d5
	MRS	ZCR_EL1, R24                       // 181238d5
	MSR	R13, ZCR_EL1                       // 0d1218d5
	MRS	ZCR_EL1, R23                       // 171238d5
	MSR	R17, ZCR_EL1                       // 111218d5
	END

Zerion Mini Shell 1.0