The implementation is actually correct... you can try it yourself:
LARGE_INTEGER Test;
Test.LowPart = Test.HighPart = 24; Test = RtlLargeIntegerNegate(Test); printf("%x %x\n", Test.LowPart, Test.HighPart);
The native implementation uses NEG + *SBB*.
That was what I did not recognize. You are right :)
Sorry for this.
Oliver