code wiki / _hdl_build / _pe_lane_riff2.nx
_pe_lane_riff2.nx source
↩ module page · 62 lines · 2072 B
1// AUTHORED BY THE NISHI BUILDER (pattern: IO_CONTRACT census lane v2 locator/raw) -- no Claude logic
2import "_pe_riffhdr.nx"
3import "_pe_riff2.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[4] & 0xff) << 0)
28 v = v | ((b[5] & 0xff) << 8)
29 v = v | ((b[6] & 0xff) << 16)
30 v = v | ((b[7] & 0xff) << 24)
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_riffhdr_locate(b, n, out) != 0 {
39 lc_dec("NCHK=\x00" as *u8, 0 - 1)
40 lc_dec("FMT=\x00" as *u8, 0 - 2)
41 lc_dec("DATA=\x00" as *u8, 0 - 2)
42 lc_dec("LIST=\x00" as *u8, 0 - 2)
43 lc_dec("RSZ=\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_riff2_count(blk, bn)
49 lc_dec("NCHK=\x00" as *u8, c)
50 if c < 0 {
51 lc_dec("FMT=\x00" as *u8, 0 - 2)
52 lc_dec("DATA=\x00" as *u8, 0 - 2)
53 lc_dec("LIST=\x00" as *u8, 0 - 2)
54 }
55 if c >= 0 {
56 lc_dec("FMT=\x00" as *u8, _pe_riff2_find(blk, bn, 1718449184))
57 lc_dec("DATA=\x00" as *u8, _pe_riff2_find(blk, bn, 1684108385))
58 lc_dec("LIST=\x00" as *u8, _pe_riff2_find(blk, bn, 1279873876))
59 }
60 lc_dec("RSZ=\x00" as *u8, lc_raw(b))
61 return 0
62}