ssize_t bit_index_search(uint8_t x)
{
d2: cf 93 push r28
d4: df 93 push r29
d6: cd b7 in r28, 0x3d ; 61
d8: de b7 in r29, 0x3e ; 62
da: 25 97 sbiw r28, 0x05 ; 5
dc: 0f b6 in r0, 0x3f ; 63
de: f8 94 cli
e0: de bf out 0x3e, r29 ; 62
e2: 0f be out 0x3f, r0 ; 63
e4: cd bf out 0x3d, r28 ; 61
e6: 8b 83 std Y+3, r24 ; 0x03
if (x == 0) return -1;
e8: 8b 81 ldd r24, Y+3 ; 0x03
ea: 88 23 and r24, r24
ec: 29 f4 brne .+10 ; 0xf8 <bit_index_search+0x26>
ee: 8f ef ldi r24, 0xFF ; 255
f0: 9f ef ldi r25, 0xFF ; 255
f2: 9d 83 std Y+5, r25 ; 0x05
f4: 8c 83 std Y+4, r24 ; 0x04
f6: 26 c0 rjmp .+76 ; 0x144 <bit_index_search+0x72>
ssize_t n = 0;
f8: 1a 82 std Y+2, r1 ; 0x02
fa: 19 82 std Y+1, r1 ; 0x01
if (x > 0xF) {n += 4; x >>= 4; }
fc: 8b 81 ldd r24, Y+3 ; 0x03
fe: 80 31 cpi r24, 0x10 ; 16
100: 48 f0 brcs .+18 ; 0x114 <bit_index_search+0x42>
102: 89 81 ldd r24, Y+1 ; 0x01
104: 9a 81 ldd r25, Y+2 ; 0x02
106: 04 96 adiw r24, 0x04 ; 4
108: 9a 83 std Y+2, r25 ; 0x02
10a: 89 83 std Y+1, r24 ; 0x01
10c: 8b 81 ldd r24, Y+3 ; 0x03
10e: 82 95 swap r24
110: 8f 70 andi r24, 0x0F ; 15
112: 8b 83 std Y+3, r24 ; 0x03
if (x > 0x3) {n += 2; x >>= 2; }
114: 8b 81 ldd r24, Y+3 ; 0x03
116: 84 30 cpi r24, 0x04 ; 4
118: 48 f0 brcs .+18 ; 0x12c <bit_index_search+0x5a>
11a: 89 81 ldd r24, Y+1 ; 0x01
11c: 9a 81 ldd r25, Y+2 ; 0x02
11e: 02 96 adiw r24, 0x02 ; 2
120: 9a 83 std Y+2, r25 ; 0x02
122: 89 83 std Y+1, r24 ; 0x01
124: 8b 81 ldd r24, Y+3 ; 0x03
126: 86 95 lsr r24
128: 86 95 lsr r24
12a: 8b 83 std Y+3, r24 ; 0x03
if (x > 0x1) {n += 1;}
12c: 8b 81 ldd r24, Y+3 ; 0x03
12e: 82 30 cpi r24, 0x02 ; 2
130: 28 f0 brcs .+10 ; 0x13c <bit_index_search+0x6a>
132: 89 81 ldd r24, Y+1 ; 0x01
134: 9a 81 ldd r25, Y+2 ; 0x02
136: 01 96 adiw r24, 0x01 ; 1
138: 9a 83 std Y+2, r25 ; 0x02
13a: 89 83 std Y+1, r24 ; 0x01
return n;
13c: 89 81 ldd r24, Y+1 ; 0x01
13e: 9a 81 ldd r25, Y+2 ; 0x02
140: 9d 83 std Y+5, r25 ; 0x05
142: 8c 83 std Y+4, r24 ; 0x04
144: 8c 81 ldd r24, Y+4 ; 0x04
146: 9d 81 ldd r25, Y+5 ; 0x05
148: 25 96 adiw r28, 0x05 ; 5
14a: 0f b6 in r0, 0x3f ; 63
14c: f8 94 cli
14e: de bf out 0x3e, r29 ; 62
150: 0f be out 0x3f, r0 ; 63
152: cd bf out 0x3d, r28 ; 61
154: df 91 pop r29
156: cf 91 pop r28
158: 08 95 ret