(List (If (AndOr OP_OR_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (AndOr OP_OR_IF (Subshell (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub 2]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub 2]]} {[LIT_OTHER "]"]}) ) ) (Subshell (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub 3]]} {[LIT_OTHER "]"]}) (Com {[LIT_OTHER "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -f]} {[DQ [VarSub 3]]} {[LIT_OTHER "]"]}) ) ) ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Usage: trximg.sh file1 [file2 [file3]]"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) (FunctionDef leout [] (List (= scope= flags=0 words=[] bindings=[('X', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('DATA', {[VarSub 2]})]) (While (Com {[LIT_OTHER "["]} {[VarSub X]} {[LIT_CHARS -lt]} {[VarSub 1]} {[LIT_OTHER "]"]}) (List (= scope= flags=0 words=[] bindings=[('BYTE', {[ArithSub {A2 AS_OP_PERCENT {A Atom NODE_ARITH_WORD {[VarSub DATA]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 256]}}}]})]) (= scope= flags=0 words=[] bindings=[('DATA', {[ArithSub {A2 AS_OP_SLASH {A Atom NODE_ARITH_WORD {[VarSub DATA]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 256]}}}]})]) (= scope= flags=0 words=[] bindings=[('OCTAL', {[DQ ]})]) (For i [{[LIT_CHARS 1]}, {[LIT_CHARS 2]}, {[LIT_CHARS 3]}]) (List (= scope= flags=0 words=[] bindings=[('OCTAL', {[ArithSub {A2 AS_OP_PERCENT {A Atom NODE_ARITH_WORD {[VarSub BYTE]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 8]}}}] [DQ [VarSub OCTAL]]})]) (= scope= flags=0 words=[] bindings=[('BYTE', {[ArithSub {A2 AS_OP_SLASH {A Atom NODE_ARITH_WORD {[VarSub BYTE]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 8]}}}]})]) ) ) (Com {[LIT_CHARS echo]} {[LIT_CHARS -ne]} {[DQ [\ LIT_ESCAPED_CHAR "\\0"][VarSub OCTAL]]}) (= scope= flags=0 words=[] bindings=[('X', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub X]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (= scope= flags=0 words=[] bindings=[('BYTE', {[VarSub x]})]) ) ) ) ) (FunctionDef padlen [] (Com {[LIT_CHARS echo]} {[ArithSub {A2 AS_OP_PERCENT {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub 1]}} {A2 AS_OP_PERCENT {A Atom NODE_ARITH_WORD {[VarSub 2]}} {A Atom NODE_ARITH_WORD {[VarSub 1]}}}} {A Atom NODE_ARITH_WORD {[VarSub 1]}}}]}) ) (FunctionDef roundlen [] (Com {[LIT_CHARS echo]} {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub 2]}} {A Atom NODE_ARITH_WORD {[ComSub (Com {[LIT_CHARS padlen]} {[VarSub 1]} {[VarSub 2]})]}}}]}) ) (FunctionDef filelen [] (Pipeline (Com {[LIT_CHARS wc]} {[LIT_CHARS -c]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS awk]} {[SQ ]}) ) ) (FunctionDef zpad [] (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[VarSub 1]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS dd]} {[LIT_VAR_LIKE "if="] [LIT_CHARS /dev/zero] =} {[LIT_VAR_LIKE "bs="] [VarSub 1] =} {[LIT_VAR_LIKE "count="] [LIT_CHARS 1] =} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) ) (FunctionDef zpad_file [] (List (AndOr OP_AND_IF (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 2]]} {[LIT_OTHER "]"]}) (Com {[LIT_CHARS return]}) ) (Com {[LIT_CHARS cat]} {[VarSub 2]}) (Com {[LIT_CHARS zpad]} {[ComSub (Com {[LIT_CHARS padlen]} {[VarSub 1]} {[ComSub (Com {[LIT_CHARS filelen]} {[DQ [VarSub 2]]})]})]}) ) ) (FunctionDef emit_header [] (List (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]} {[LIT_OTHER "]"]}) (List (Com {[LIT_CHARS echo]} {[LIT_CHARS -n]} {[DQ [LIT_CHARS HDR0]]}) (Com {[LIT_CHARS leout]} {[LIT_CHARS 4]} {[VarSub LENGTH]}) (Com {[LIT_CHARS leout]} {[LIT_CHARS 4]} {[VarSub CRC32]}) ) ) (Com {[LIT_CHARS leout]} {[LIT_CHARS 2]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS leout]} {[LIT_CHARS 2]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS leout]} {[LIT_CHARS 4]} {[LIT_CHARS 28]}) (Com {[LIT_CHARS leout]} {[LIT_CHARS 4]} {[VarSub OFFSET2]}) (Com {[LIT_CHARS leout]} {[LIT_CHARS 4]} {[VarSub OFFSET3]}) ) ) (= scope= flags=0 words=[] bindings=[('TOTAL', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 28]}} {A Atom NODE_ARITH_WORD {[ComSub (Com {[LIT_CHARS roundlen]} {[LIT_CHARS 4]} {[ComSub (Com {[LIT_CHARS filelen]} {[DQ [VarSub 1]]})]})]}}}]})]) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 2]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('OFFSET2', {[LIT_CHARS 0]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('OFFSET2', {[VarSub TOTAL]})]) (= scope= flags=0 words=[] bindings=[('TOTAL', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub TOTAL]}} {A Atom NODE_ARITH_WORD {[ComSub (Com {[LIT_CHARS roundlen]} {[LIT_CHARS 4]} {[ComSub (Com {[LIT_CHARS filelen]} {[DQ [VarSub 2]]})]})]}}}]})]) ) ) (If (Com {[LIT_OTHER "["]} {[LIT_CHARS -z]} {[DQ [VarSub 3]]} {[LIT_OTHER "]"]}) (= scope= flags=0 words=[] bindings=[('OFFSET3', {[LIT_CHARS 0]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('OFFSET3', {[VarSub TOTAL]})]) (= scope= flags=0 words=[] bindings=[('TOTAL', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub TOTAL]}} {A Atom NODE_ARITH_WORD {[ComSub (Com {[LIT_CHARS roundlen]} {[LIT_CHARS 4]} {[ComSub (Com {[LIT_CHARS filelen]} {[DQ [VarSub 3]]})]})]}}}]})]) ) ) (= scope= flags=0 words=[] bindings=[('LENGTH', {[ComSub (Com {[LIT_CHARS roundlen]} {[LIT_CHARS 4096]} {[VarSub TOTAL]})]})]) (= scope= flags=0 words=[] bindings=[('CRC32', {[ComSub (Pipeline (Subshell (List (Com {[LIT_CHARS emit_header]} {[LIT_CHARS skip]}) (Com {[LIT_CHARS zpad_file]} {[LIT_CHARS 4]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS zpad_file]} {[LIT_CHARS 4]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS zpad_file]} {[LIT_CHARS 4]} {[DQ [VarSub 3]]}) (Com {[LIT_CHARS zpad]} {[ComSub (Com {[LIT_CHARS padlen]} {[LIT_CHARS 4096]} {[VarSub TOTAL]})]}) ) ) (Com {[LIT_CHARS cksum]} {[LIT_CHARS -NILP]}) )]})]) (Com {[LIT_CHARS emit_header]}) (Com {[LIT_CHARS zpad_file]} {[LIT_CHARS 4]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS zpad_file]} {[LIT_CHARS 4]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS zpad_file]} {[LIT_CHARS 4]} {[DQ [VarSub 3]]}) (Com {[LIT_CHARS zpad]} {[ComSub (Com {[LIT_CHARS padlen]} {[LIT_CHARS 4096]} {[VarSub TOTAL]})]}) )