Try it with -2147483647 and see what it does...
It might be trying to prevent an overflow.
#include <stdio.h>
int main(void)
{
printf("%d\n",-2147483648);
printf("%u\n",-2147483648);
printf("%x\n",-2147483648);
printf("%llx\n",-2147483648);
return 0;
}