code wiki / (root) / nx_nxa_affine_decode_gate_t36.nx

nx_nxa_affine_decode_gate_t36.nx source

↩ module page · 17 lines · 1450 B

1import "nx_nxa_affine_asset_t35.nx" 2func main()->i64{ 3 let n:i64=11833880;let b:*u8=sys_mmap(n);let st:*i64=sys_mmap(24) as *i64 4 if rc_read_file_into("/tmp/dark-knight-affine-authored-t36.nxa" as *u8,b,n,st)!=n||rc_complete(st)==0{return 2} 5 let h:*i64=b as *i64;let e:i64=nxa_section_entry(b,n,nxa_tag4("AFM1" as *u8));if e<0{return 3} 6 let p:*i64=((b as i64)+h[e+1]) as *i64;let words:i64=h[e+2];let out:*i64=sys_mmap(113*128) as *i64 7 out[0]=717;if afm_sample(p,words-1,113,0,out,113*16)!=AFM_BAD||out[0]!=717{return 4} 8 p[0]=2;if afm_sample(p,words,113,0,out,113*16)!=AFM_FUTURE||out[0]!=717{return 5};p[0]=1 9 let saved:i64=p[9];p[9]=p[8];if afm_sample(p,words,113,0,out,113*16)!=AFM_BAD||out[0]!=717{return 6};p[9]=saved 10 let first:i64=8+113;p[first]=0-1;if afm_sample(p,words,113,0,out,113*16)!=AFM_BAD||out[0]!=717{return 7};p[first]=0 11 if afm_sample(p,words,113,0-1,out,113*16)!=AF_TIMING||out[0]!=717{return 8} 12 if afm_sample(p,words,113,0,out,113*16-1)!=AF_CAPACITY||out[0]!=717{return 9} 13 var frame:i64=0;while frame<51{ 14 let at:i64=first+frame*(1+113*12);if afm_sample(p,words,113,p[at],out,113*16)!=0{return 10} 15 var j:i64=0;while j<113{var c:i64=0;while c<4{var r:i64=0;while r<3{if out[j*16+c*4+r]!=p[at+1+j*12+c*3+r]{return 11};r=r+1};c=c+1};j=j+1};frame=frame+1} 16 nb_text("PASS AFM1 malformed_extent future_version duplicate_joint negative_time out_of_range capacity output_preserved; all51 decoded keys exact\n" as *u8);return 0 17}