I'm observing some unusual fluctuations in benchmark times for both $powmod and the original scripted bf_modpow alias, with their timing changes not happening together.

When you showed your benchmark time for bf_modpow as 7.4sec compared to the 4.3sec I was getting in 1275, I assumed that since my bf_modpow time was close to half your benchmark time, that my $powmod time would be close to half your 2.9sec time for the compiled C.

But then the 1743 beta containing $powmod came out, and my $powmod time was close to your compiled C time, and only then did I notice that 1603 beta had increased to give me times for bf_modpow closer to yours.

The table below shows my ticks count for the above //command in the 1st column, and the other columns either use 2*2048 or replace $bf_modpow with $powmod, or both.

In 2385 my bf_modpow times went back to the time it had in 1275, while 3337 has $powmod's time increased to nearly match the scripted alias's time. For the 4096 level that Libera recommends for certs, that 'challenge script' would do 2 of these 2048's, so this portion of the script time would now be 8sec.

Code
	2048				4096
	bf_modpow	powmod		bf_modpow	powmod
1275	4350		n/a		32400		n/a
1603	7000		n/a		53000		n/a
1743	7000		2760		52900		21570
2385	4370		2770		32500		21600
3337	4300		4090		32400		31800