code wiki / _hdl_build / _pe_kw_crc.nx

_pe_kw_crc.nx source

↩ module page · 36 lines · 1071 B

1// AUTHORED BY THE NISHI BUILDER (pattern: STRUCT_WALK v2 magic/tailrest) -- field-table walk, no Claude logic 2import "nx_syscalls.nx" 3func _pe_kw_crc_locate(b: *u8, n: i64, out: *i64) -> i64 { 4 var off: i64 = 0 5 if off >= n { return 0 - 1 } 6 var ks: i64 = off 7 while b[off] != (0 as u8) { 8 off = off + 1 9 if off >= n { return 0 - 1 } 10 } 11 out[2] = ks 12 out[3] = off - ks 13 out[4] = off + 1 14 off = off + 1 15 if off + 4 > n { return 0 - 1 } 16 var cc: i64 = 0xffffffff 17 var ci: i64 = 0 18 while ci < off { 19 cc = cc ^ (b[ci] & 0xff) 20 var cb: i64 = 0 21 while cb < 8 { 22 let cm: i64 = 0 - (cc & 1) 23 cc = (cc >> 1) ^ (0xedb88320 & cm) 24 cb = cb + 1 25 } 26 ci = ci + 1 27 } 28 let cv: i64 = (cc ^ 0xffffffff) & 0xffffffff 29 let cs: i64 = (((b[off] & 0xff) << 24) | ((b[off + 1] & 0xff) << 16)) | (((b[off + 2] & 0xff) << 8) | (b[off + 3] & 0xff)) 30 if cv != cs { return 0 - 1 } 31 out[0] = 0 32 out[1] = off - 0 33 off = off + 4 34 return 0 35 return 0 - 1 36}