In fact I'm with both of you...
the casts look nasty, but probably they're necessary... 
the operations are on 32bit values so why use 64bit variables? only to calm some warnings - nah... and the performace impact on 32bit architectures is also important...
ltc is used e.g. in dropbear and several other specifically for embedded devices designed software projects where 64bit architectures won't be reality in the next few years.

so it's up to @rofl0r to propose a better solution or I'll accept this solution