.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