<?
header
("Content-Type: text/plain");

function 
rl($value$bits)
{
        
$left $value << ($bits 31);
        
$right $value >> ((-$bits) & 31);
        
$right &= (<< ($bits 31)) - 1;
        
        return (
$left $right);
}

$a rl(0x3e2811665); # 0xc5022cc7
$b 0xc5022cc7;
$c 0x84ef6e08 0xffffffff;
$d 0x84ef6e08;

printf("A[%08x] + C[%08x] = %08x\n"$a$c$a $c);
printf("A[%08x] + D[%08x] = %08x\n"$a$d$a $d);
printf("B[%08x] + C[%08x] = %08x\n"$b$c$b $c);
printf("B[%08x] + D[%08x] = %08x\n"$b$d$b $d);

# On PHP 5.2.6, this produces the following:
# A[c5022cc7] + C[84ef6e08] = 80000000
# A[c5022cc7] + D[84ef6e08] = 49f19acf
# B[c5022cc7] + C[84ef6e08] = 49f19acf
# B[c5022cc7] + D[84ef6e08] = 49f19acf

?>