code wiki / _hdl_build / nx_profile_semantic_geometry_gate_t239.nx
nx_profile_semantic_geometry_gate_t239.nx source
↩ module page · 21 lines · 1027 B
1import "nx_syscalls.nx"
2func sg_u32(b:*u8,o:i64)->i64{return (b[o] as i64)|((b[o+1] as i64)<<8)|((b[o+2] as i64)<<16)|((b[o+3] as i64)<<24)}
3func main(argc:i64,argv:*i64)->i64{
4 if argc!=5{return 2}
5 let lens:*i64=sys_mmap(64) as *i64
6 let a:*u8=sys_read_file(argv[1] as *u8,lens)
7 let b:*u8=sys_read_file(argv[2] as *u8,(lens as i64+16) as *i64)
8 let c:*u8=sys_read_file(argv[3] as *u8,(lens as i64+32) as *i64)
9 let d:*u8=sys_read_file(argv[4] as *u8,(lens as i64+48) as *i64)
10 if (a as i64)==0{return 3}if (b as i64)==0{return 3}if (c as i64)==0{return 3}if (d as i64)==0{return 3}
11 if lens[0]<16{return 4}if lens[0]!=lens[2]{return 4}if lens[2]!=lens[6]{return 4}
12 let nt:i64=sg_u32(a,12);let hdr:i64=16+sg_u32(a,8)*24
13 if hdr+nt*88!=lens[0]{return 4}if lens[4]!=nt*4{return 4}
14 var i:i64=0;while i<lens[0]{if b[i]!=d[i]{return 5}
15 var check:i64=1
16 if i>=hdr{if i<hdr+nt*84{if (i-hdr)%84>=72{check=0}}}
17 if check==1{if a[i]!=b[i]{return 6}}i=i+1
18 }
19 var t:i64=0;while t<nt{if sg_u32(c,t*4)>3{return 7}t=t+1}
20 return 0
21}