<?php

echo "=== Debugging Last Bits Placement ===\n\n";

// Our format bits for M, Mask 2
$ourFormat = 0b101111001111100;
$ourBinary = sprintf('%015b', $ourFormat);

echo "Our Format (M, Mask 2): {$ourBinary}\n";
echo "Bit indices:            012345678901234\n";
echo "Last 3 bits:            ...        {$ourBinary[12]}{$ourBinary[13]}{$ourBinary[14]}\n";
echo "                        ...        bit12=1, bit13=0, bit14=0\n\n";

// Current horizontal mapping
$bitIndices = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 9, 11, 13, 12, 14];

echo "Current bit indices array: [" . implode(', ', $bitIndices) . "]\n\n";

echo "What we're placing horizontally:\n";
for ($i = 0; $i < 15; $i++) {
    $bitIndex = $bitIndices[$i];
    $bit = ($ourFormat >> (14 - $bitIndex)) & 1;
    echo "Position {$i}: bit[{$bitIndex}] = {$bit}\n";
}

echo "\n";

// What we actually read back
$actualH = "101111001111010";
echo "What we read back horizontally: {$actualH}\n";
echo "Position 13 (col 15): {$actualH[13]} (should be bit[12] = " . (($ourFormat >> (14 - 12)) & 1) . ")\n";
echo "Position 14 (col 14): {$actualH[14]} (should be bit[14] = " . (($ourFormat >> (14 - 14)) & 1) . ")\n";
