The overall order of an algorithm is dominated by the highest order of the individual pieces. You're starting out with an insertion sort whose worst-case performance is O(n^2) so you've already failed.
If you were to replace the sorting algorithm with a O(n log n) version then you'd have to look at what's left. You have a single loop of length n with a body that calls a binary search. A properly coded binary search is O(log n) so the result should be O(n log n). Adding two O(n log n) processes still leaves you with O(n log n).
There's an alternate faster way to do the second step but I'll leave that for you to discover. It wouldn't affect the overall result.