Обычное поведение процессоров - для целочисленных команд умножения возвращать младшие биты математического произведения. Например, при умножении 32-битного числа на 32-битное число полный математический продукт может быть выражен в 64 битах (с некоторыми корректировками в зависимости от того, являются ли операнды типом со знаком или без знака), но процессор установит низкий 32 бита этого продукта в регистре назначения.
В показанном вами продукте 2 • 4 • 6 •… • 22 • 24 младшие 32 бита математического продукта - это cfc00000 (выражается в шестнадцатеричном формате). Когда эти биты интерпретируются как число дополнения до двух, значение равно -809500672, так как установлен старший бит (используется для знака).
Таким образом, это обычный результат переполнения в продукте, который вы оценили. Это поведение не определено стандартом C, и вместо него могут быть получены другие результаты.