code wiki / _hdl_build / _pe_lane_png.nx

_pe_lane_png.nx source

↩ module page · 62 lines · 2063 B

1// AUTHORED BY THE NISHI BUILDER (pattern: IO_CONTRACT census lane v2 locator/raw) -- no Claude logic 2import "_pe_pnghdr.nx" 3import "_pe_png.nx" 4import "nx_syscalls.nx" 5func lc_dec(label: *u8, v: i64) -> i64 { 6 var n: i64 = 0 7 while label[n] != (0 as u8) { n = n + 1 } 8 sys_write(1, label, n) 9 var av: i64 = v 10 if av < 0 { sys_write(1, "-" as *u8, 1); av = 0 - av } 11 if av == 0 { sys_write(1, "0" as *u8, 1) } 12 if av > 0 { 13 let buf: *u8 = sys_mmap(32) 14 var pos: i64 = 0 15 var x: i64 = av 16 while x > 0 { buf[pos] = (48 + (x % 10)) as u8; x = x / 10; pos = pos + 1 } 17 let outb: *u8 = sys_mmap(32) 18 var oi: i64 = 0 19 while oi < pos { outb[oi] = buf[pos - 1 - oi]; oi = oi + 1 } 20 sys_write(1, outb, pos) 21 } 22 sys_write(1, "\n" as *u8, 1) 23 return 0 24} 25func lc_raw(b: *u8) -> i64 { 26 var v: i64 = 0 27 v = v | ((b[16] & 0xff) << 24) 28 v = v | ((b[17] & 0xff) << 16) 29 v = v | ((b[18] & 0xff) << 8) 30 v = v | ((b[19] & 0xff) << 0) 31 return v 32} 33func main() -> i64 { 34 let lenp: *i64 = sys_mmap(16) as *i64 35 let b: *u8 = sys_read_file("/tmp/race_input.bin\x00" as *u8, lenp) 36 let n: i64 = lenp[0] 37 let out: *i64 = sys_mmap(32) as *i64 38 if _pe_pnghdr_locate(b, n, out) != 0 { 39 lc_dec("NCHK=\x00" as *u8, 0 - 1) 40 lc_dec("IHDR=\x00" as *u8, 0 - 2) 41 lc_dec("IDAT=\x00" as *u8, 0 - 2) 42 lc_dec("IEND=\x00" as *u8, 0 - 2) 43 lc_dec("W=\x00" as *u8, 0 - 2) 44 return 0 45 } 46 let blk: *u8 = ((b as i64) + out[0]) as *u8 47 let bn: i64 = out[1] 48 let c: i64 = _pe_png_count(blk, bn) 49 lc_dec("NCHK=\x00" as *u8, c) 50 if c < 0 { 51 lc_dec("IHDR=\x00" as *u8, 0 - 2) 52 lc_dec("IDAT=\x00" as *u8, 0 - 2) 53 lc_dec("IEND=\x00" as *u8, 0 - 2) 54 } 55 if c >= 0 { 56 lc_dec("IHDR=\x00" as *u8, _pe_png_find(blk, bn, 1229472850)) 57 lc_dec("IDAT=\x00" as *u8, _pe_png_find(blk, bn, 1229209940)) 58 lc_dec("IEND=\x00" as *u8, _pe_png_find(blk, bn, 1229278788)) 59 } 60 lc_dec("W=\x00" as *u8, lc_raw(b)) 61 return 0 62}