Implement the following Merge sort code in ARM assembly language:

MergeSort(numbers - address to integer array, first - integer, last - integer) 

    integer middle 

     if first < last then
          middle = (first + last) / 2

          MergeSort (numbers, first, middle)

          MergeSort(numbers, middle +1, last)

          Merge(numbers, first, middle, middle+1, last)
     end if
end MergeSort


Merge (numbers, leftFirst, leftLast, rightFirst, rightLast)
     tempArray - integer array big enough to hold rightLast - leftFirst + 1 elements

     integer index, saveFirst, index2

     index = 0
     saveFirst = leftFirst

     while (leftFirst < leftLast AND rightFirst < rightLast) do
          if numbers[leftFirst] < numbers[rightFirst] then
               tempArray[index] = numbers[leftFirst]
               leftFirst = leftFirst + 1
          else
               tempArray[index] = numbers[rightFirst]
               rightFirst = rightFirst + 1
          end if
          index = index + 1
     end while


     while leftFirst <= leftLast do
          tempArray[index] = numbers[leftFirst]
          index = index + 1
          leftFirst = leftFirst + 1
     end while


     while rightFirst <= rightLast do
          tempArray[index] = numbers[rightFirst]
          index = index + 1
          rightFirst = rightFirst + 1
     end while


     index2 = 0
     for index = saveFirst to rightLast do
          numbers[index] = tempArray[index2]
          index2 = index2 + 1
     end for

end Merge