Da ich nicht weiß, wie der Code mit negativen Zahlen umgehen soll, bin ich mir natürlich nicht sicher ob es das ist, was du willst. Aber du kannst mal folgendes versuchen:
$b1_1 = ($dZ * $a1);
$b1_2 = int(( int($b1_1 / 32) + 1) / 2);
$Yintern = ($b1_2 + $tmp1);
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B