.globl isPrimeAssembly isPrimeAssembly: //your code for iterating through arrays here //base addresses of arrays in X0 - X2, length in X3 ADD X8,XZR,XZR //INITIalize **X8=0 ADD X9,XZR,XZR //X9=0=J ADD X10,XZR,XZR //X10=0=K LOOP: SUB X11,X8,X3 // I - LENGTH CBZ X11, OUTPUT //END LOOP IF LENGTH < I LSL X11,X8,#3 //I * 8 BY SHIFTING ADD X11,X11,X0 //INITIATE ARRAY A[I] LDUR X11,[X11,#0] //LOAD FIRST ITEM IN ARRAY INTO X11 B isPrime //GO TO ISPRIME COMPOSITE: LSL X12,X10,#3 //MULT K*8 BY SHFITING ADD X12,X12,X2 //INTITATE COMPISITE ARRY STUR X11,[X12,#0] //STORES ITEM FROM A[] INTO COMPOSTIE ARRAY ADD X10,X10,#1 //K++ ADD X8,X8,#1 //I++ B LOOP PRIME: LSL X13,X9,#3 //J*8 BY SHIFTING ADD X13,X13,X1 // CREATES ARRAY FOR PRIME STUR X11,[X13,#0] //STORES ITEM FROM A[] INTO PRIME ARRAY ADD X9,X9,#1 //J++ ADD X8,X8,#1 //I++ B LOOP OUTPUT: ADD X1,XZR,X12 // RETURNS PRIME ARRAY ADD X2,XZR,X13 //RETURNS COMPOSITE ARRAY BR X30 isPrime: //Your code for detecting a prime number here ADD X15,XZR,XZR // initiates 0 in re1gister x15 ADD X15,X15,#2 // stores 2 in x15 LOOPPRIME: ADD X16,XZR,XZR // 0 in register 16 ADD X16,X16,#2 //X16 = 2 UDIV X16,X11,X16 //N/2 --> X16 SUB X17,X15,X16 // CBZ X17, PRIME //BRANCH TO PRIME IF **N/2 UDIV X18,X11,X14 //N/I --> X18 MUL X19,X18,X15 // SUB X19,X11,X19 // IF REMAINDER=0 THEN COMPISITE ADD X15,X15,#1 CBZ X19, COMPOSITE //IF X19 = N THEN GO TO COMPOSITE B LOOPPRIME // START LOOPPRIME AGAIN