code wiki / _hdl_build / _pe_lane_tlv.nx
_pe_lane_tlv.nx source
↩ module page · 44 lines · 1540 B
1// AUTHORED BY THE NISHI BUILDER (pattern: IO_CONTRACT census lane) -- no Claude logic
2import "_pe_tlv.nx"
3import "nx_syscalls.nx"
4func lc_dec(label: *u8, v: i64) -> i64 {
5 var n: i64 = 0
6 while label[n] != (0 as u8) { n = n + 1 }
7 sys_write(1, label, n)
8 var av: i64 = v
9 if av < 0 { sys_write(1, "-" as *u8, 1); av = 0 - av }
10 if av == 0 { sys_write(1, "0" as *u8, 1) }
11 if av > 0 {
12 let buf: *u8 = sys_mmap(32)
13 var pos: i64 = 0
14 var x: i64 = av
15 while x > 0 { buf[pos] = (48 + (x % 10)) as u8; x = x / 10; pos = pos + 1 }
16 let outb: *u8 = sys_mmap(32)
17 var oi: i64 = 0
18 while oi < pos { outb[oi] = buf[pos - 1 - oi]; oi = oi + 1 }
19 sys_write(1, outb, pos)
20 }
21 sys_write(1, "\n" as *u8, 1)
22 return 0
23}
24func main() -> i64 {
25 let lenp: *i64 = sys_mmap(16) as *i64
26 let b: *u8 = sys_read_file("/tmp/race_input.bin\x00" as *u8, lenp)
27 let n: i64 = lenp[0]
28 let c: i64 = _pe_tlv_count(b, n)
29 lc_dec("EXTN=\x00" as *u8, c)
30 if c < 0 {
31 lc_dec("SNI=\x00" as *u8, 0 - 2)
32 lc_dec("GR=\x00" as *u8, 0 - 2)
33 lc_dec("SG=\x00" as *u8, 0 - 2)
34 lc_dec("SV=\x00" as *u8, 0 - 2)
35 lc_dec("KS=\x00" as *u8, 0 - 2)
36 return 0
37 }
38 lc_dec("SNI=\x00" as *u8, _pe_tlv_find(b, n, 0))
39 lc_dec("GR=\x00" as *u8, _pe_tlv_find(b, n, 10))
40 lc_dec("SG=\x00" as *u8, _pe_tlv_find(b, n, 13))
41 lc_dec("SV=\x00" as *u8, _pe_tlv_find(b, n, 43))
42 lc_dec("KS=\x00" as *u8, _pe_tlv_find(b, n, 51))
43 return 0
44}