- my $mask = 1 << $j;
- my $cond
- = ( ( $c1 & $mask ) * 4 )
- + ( ( $c2 & $mask ) * 2 )
- + ( ( $c3 & $mask ) * 1 )
- ;
- $cond >>= $j;
+
+ my $acl_block =
+ $sector < 32 ? $j :
+ $j % 5 == 0 ? $j / 5 :
+ undef; # display condition only once for block group
+
+ if ( defined $acl_block ) {
+ my $mask = 1 << $acl_block;
+ $cond
+ = ( ( $c1 & $mask ) * 4 )
+ + ( ( $c2 & $mask ) * 2 )
+ + ( ( $c3 & $mask ) * 1 )
+ ;
+ $cond >>= $acl_block;
+ $cond = sprintf ' %03b %s'
+ , $cond
+ , $j == ( $blocks - 1 )
+ ? $access_condition_trailer->{$cond}
+ : $access_condition_data->{$cond}
+ ;
+ } else {
+ $cond = '';
+ }