I looked up nop sleds but don't see why they're used here. Explanation?
You can put bcopy as a function call right before memmove, and then you don't need one function to call the other, which would cause a stack push. Maybe instructions need to be at addresses = 0 mod 16, so that's the "closest" you can get it. And spinning over ~12 NOPs might be faster than incrementing the PC by ~9.
I haven't tested, but I'd bet good money that 12 NOPs would be faster than a jmp.
Smart toolchains will turn those 12 bytes into 2 multi-byte nops, e.g., a 9-byte one and a 3-byte one.
0x66 0x0f 0x1f 0x84 0x00 0x00 0x00 0x00 0x00
That's a size override prefix, followed by the dedicated NOP instruction (0x0f 0x1f), and finally 6 bytes to encode an effective address with offset.
nop word ptr [eax+eax+0] ; 66 0f 1f 84 00 00 00 00 00