code wiki / _hdl_build / _pe_jpgmk.nx

_pe_jpgmk.nx source

↩ module page · 66 lines · 2115 B

1// AUTHORED BY THE NISHI BUILDER (pattern: WIRE_MARKER) -- prefix-marker wire walk, no Claude logic 2import "nx_syscalls.nx" 3func _pe_jpgmk_count(b: *u8, n: i64) -> i64 { 4 var off: i64 = 0 5 var c: i64 = 0 6 while off < n { 7 if off + 2 > n { return 0 - 1 } 8 if (b[off] & 0xff) != 255 { return 0 - 1 } 9 let m: i64 = b[off + 1] & 0xff 10 var sa: i64 = 0 11 if m == 216 { sa = 1 } 12 if m == 217 { sa = 1 } 13 if m == 208 { sa = 1 } 14 if m == 209 { sa = 1 } 15 if m == 210 { sa = 1 } 16 if m == 211 { sa = 1 } 17 if m == 212 { sa = 1 } 18 if m == 213 { sa = 1 } 19 if m == 214 { sa = 1 } 20 if m == 215 { sa = 1 } 21 if sa == 1 { off = off + 2; c = c + 1 } 22 if sa == 0 { 23 if off + 4 > n { return 0 - 1 } 24 let l: i64 = ((b[off + 2] & 0xff) << 8) | (b[off + 3] & 0xff) 25 if l < 2 { return 0 - 1 } 26 if off + 2 + l > n { return 0 - 1 } 27 c = c + 1 28 if m == 218 { return c } 29 off = off + 2 + l 30 } 31 } 32 return c 33} 34func _pe_jpgmk_find(b: *u8, n: i64, t: i64) -> i64 { 35 var off: i64 = 0 36 while off < n { 37 if off + 2 > n { return 0 - 2 } 38 if (b[off] & 0xff) != 255 { return 0 - 2 } 39 let m: i64 = b[off + 1] & 0xff 40 var sa: i64 = 0 41 if m == 216 { sa = 1 } 42 if m == 217 { sa = 1 } 43 if m == 208 { sa = 1 } 44 if m == 209 { sa = 1 } 45 if m == 210 { sa = 1 } 46 if m == 211 { sa = 1 } 47 if m == 212 { sa = 1 } 48 if m == 213 { sa = 1 } 49 if m == 214 { sa = 1 } 50 if m == 215 { sa = 1 } 51 if sa == 1 { 52 if m == t { return off + 2 } 53 off = off + 2 54 } 55 if sa == 0 { 56 if off + 4 > n { return 0 - 2 } 57 let l: i64 = ((b[off + 2] & 0xff) << 8) | (b[off + 3] & 0xff) 58 if l < 2 { return 0 - 2 } 59 if off + 2 + l > n { return 0 - 2 } 60 if m == t { return off + 4 } 61 if m == 218 { return 0 - 1 } 62 off = off + 2 + l 63 } 64 } 65 return 0 - 1 66}