Oliver Schneider wrote:
.\lib\rtl\largeint.c
There's a sutraction performed in your implementation. But actually it's a
logical negation (asm -> NEG; C -> ~) in this function of the low and high
part:
RtlLargeIntegerNegate()
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*.
- Filip