(command.AndOr ops: [Op_DAmp] children: [ (command.FuncDef name: _strace body: (command.BraceGroup children: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[13]) op: Equal spids: [13] ) (assign_pair lhs: (lhs_expr.LhsName name:prev spids:[15]) op: Equal spids: [15] ) (assign_pair lhs: (lhs_expr.LhsName name:words spids:[17]) op: Equal spids: [17] ) (assign_pair lhs: (lhs_expr.LhsName name:cword spids:[19]) op: Equal spids: [19] ) ] spids: [11] ) (command.AndOr ops: [Op_DPipe] children: [ (C {(_init_completion)} {(-n)} {(Lit_Other '=')}) (command.ControlFlow token:<ControlFlow_Return return>) ] ) (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:offset spids:[40]) op: Equal rhs: {(0)} spids: [40] ) (assign_pair lhs: (lhs_expr.LhsName name:i spids:[43]) op: Equal spids: [43] ) ] spids: [38] ) (command.ForExpr init: (arith_expr.BinaryAssign op_id: Arith_Equal left: (lhs_expr.LhsName name:i spids:[50]) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) cond: (arith_expr.ArithBinary op_id: Arith_LessEqual left: (arith_expr.ArithVarRef token:<Lit_ArithVarLike i>) right: (arith_expr.ArithVarRef token:<Lit_ArithVarLike cword>) ) update: (arith_expr.UnaryAssign op_id: Node_PostDPlus child: (lhs_expr.LhsName name:i spids:[62]) ) body: (command.DoGroup children: [ (command.Case to_match: { (word_part.BracedVarSub token: <VSub_Name words> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w:{($ VSub_DollarName '$i')}) ) spids: [74 79] ) } arms: [ (case_arm pat_list: [{(-o)} {(-e)} {(-p)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:i spids:[92]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithVarRef token:<Lit_ArithVarLike i>) right: (arith_expr.ArithWord w:{(Lit_Digits 1)}) ) spids: [93 98] ) } spids: [92] ) ] spids: [92] ) (command.ControlFlow token: <ControlFlow_Continue continue> ) ] spids: [84 89 104 16777215] ) (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [(command.ControlFlow token:<ControlFlow_Continue continue>)] spids: [107 109 115 16777215] ) ] spids: [72 81 118] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:offset spids:[121]) op: Equal rhs: {($ VSub_DollarName '$i')} spids: [121] ) ] spids: [121] ) (command.ControlFlow token:<ControlFlow_Break break>) ] spids: [69 128] ) ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_gt left: {($ VSub_DollarName '$offset')} right: {(0)} ) ) terminator: <Op_Semi ';'> ) ] action: [(C {(_command_offset)} {($ VSub_DollarName '$offset')})] spids: [16777215 145] ) ] else_action: [ (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(-e)}] action: [ (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$cur'))} right: {(Lit_Other '*') (BoolBinary_GlobEqual '=') (Lit_Other '*') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:prev spids:[188]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.PatSub pat: {('=*')} replace: {} replace_mode: Undefined_Tok spids: [191] ) spids: [189 194] ) } spids: [188] ) ] spids: [188] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:cur spids:[197]) op: Equal rhs: { (word_part.BracedVarSub token: <VSub_Name cur> suffix_op: (suffix_op.PatSub pat: {('*=')} replace: {} replace_mode: Undefined_Tok spids: [200] ) spids: [198 203] ) } spids: [197] ) ] spids: [197] ) (command.Case to_match: {($ VSub_DollarName '$prev')} arms: [ (case_arm pat_list: [{(trace)}] action: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:define spids:[228]) op: Equal spids: [228] ) (assign_pair lhs: (lhs_expr.LhsName name:syscall spids:[230]) op: Equal spids: [230] ) (assign_pair lhs: (lhs_expr.LhsName name:rest spids:[232]) op: Equal spids: [232] ) ] spids: [226] ) (command.Assignment keyword: Assign_Local flags: [-A] pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:syscalls spids:[239]) op: Equal spids: [239] ) ] spids: [235] ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(read)} {(-r)} {(define)} {(syscall)} {(rest)}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {($ VSub_DollarName '$define')} right: {(DQ ('#define'))} ) right: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: {($ VSub_DollarName '$syscall')} right: {(Lit_Other '^') (__NR_) (Lit_Other '(') (Lit_Other .) (Lit_Other '+') (Lit_Other ')') } ) ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: syscalls index: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: {(Lit_Digits 1)} ) ) spids: [0 5] ) } ) spids: [289] ) op: Equal rhs: {(1)} spids: [289] ) ] spids: [289] ) ] ) ] spids: [255 300] ) redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(/usr/include/asm/unistd.h)} ) ] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.LogicalNot child: (bool_expr.WordTest w: {($ VSub_DollarName '$syscalls')} ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:unistd spids:[326]) op: Equal spids: [326] ) (assign_pair lhs: (lhs_expr.LhsName name:arch spids:[328]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(command)} {(uname)} {(-m)}) ] ) left_token: <Left_CommandSub '$('> spids: [329 337] ) } spids: [328] ) ] spids: [324] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: { (DQ ($ VSub_DollarName '$arch')) } right: {(Lit_Other '*') (86)} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: unistd spids: [359] ) op: Equal rhs: {(/usr/include/asm/unistd_32.h)} spids: [359] ) ] spids: [359] ) ] spids: [16777215 356] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name: unistd spids: [366] ) op: Equal rhs: {(/usr/include/asm/unistd_64.h)} spids: [366] ) ] spids: [366] ) ] spids: [363 370] ) (command.WhileUntil keyword: <KW_While while> cond: [ (command.Sentence child: (C {(read)} {(-r)} {(define)} {(syscall)} {(rest)}) terminator: <Op_Semi ';'> ) ] body: (command.DoGroup children: [ (command.AndOr ops: [Op_DAmp] children: [ (command.DBracket expr: (bool_expr.LogicalAnd left: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: { ($ VSub_DollarName '$define' ) } right: {(DQ ('#define'))} ) right: (bool_expr.BoolBinary op_id: BoolBinary_EqualTilde left: { ($ VSub_DollarName '$syscall' ) } right: {(Lit_Other '^') (__NR_) (Lit_Other '(') (Lit_Other .) (Lit_Other '+') (Lit_Other ')') } ) ) ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsIndexedName name: syscalls index: (arith_expr.ArithWord w: { (word_part.BracedVarSub token: <VSub_Name BASH_REMATCH > bracket_op: (bracket_op.ArrayIndex expr: (arith_expr.ArithWord w: { ( Lit_Digits 1 ) } ) ) spids: [0 5] ) } ) spids: [420] ) op: Equal rhs: {(1)} spids: [420] ) ] spids: [420] ) ] ) ] spids: [386 431] ) redirects: [ (redir.Redir op: <Redir_Great '2>'> fd: 2 arg_word: {(/dev/null)} ) (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {($ VSub_DollarName '$unistd')} ) ] ) ] spids: [16777215 321] ) ] spids: [16777215 441] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[445]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'${!syscalls[@]} file\n'> < ' process network signal ipc desc all none' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [448 467] ) } ] ) } spids: [445] ) ] spids: [445] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [214 215 477 16777215] ) ] spids: [207 211 480] ) ] spids: [16777215 185] ) ] else_action: [ (C {(compopt)} {(-o)} {(nospace)}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[493]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-S) (DQ ('='))} {(-W)} { (SQ <'trace abbrev verbose raw\n'> < ' signal read write' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [496 518] ) } ] ) } spids: [493] ) ] spids: [493] ) ] spids: [483 523] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [164 165 531 16777215] ) (case_arm pat_list: [{(-o)}] action: [ (C {(_filedir)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [534 535 546 16777215] ) (case_arm pat_list: [{(-p)}] action: [ (C {(_pids)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [549 550 561 16777215] ) (case_arm pat_list: [{(-S)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[568]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} {(SQ <'time calls name nothing'>)} {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [571 589] ) } ] ) } spids: [568] ) ] spids: [568] ) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [564 565 599 16777215] ) (case_arm pat_list: [{(-u)}] action: [ (C {(_allowed_users)}) (command.ControlFlow token: <ControlFlow_Return return> arg_word: {(0)} ) ] spids: [602 603 614 16777215] ) ] spids: [157 161 617] ) (command.If arms: [ (if_arm cond: [ (command.Sentence child: (command.DBracket expr: (bool_expr.BoolBinary op_id: BoolBinary_GlobDEqual left: {(DQ ($ VSub_DollarName '$cur'))} right: {(-) (Lit_Other '*')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[640]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-W)} { (SQ <'-c -d -f -ff -F --help -i -q -r -t -tt\n'> < ' -ttt -T -v -V -x -xx -a -e -o -O -p -s -S -u -E' > ) } {(--)} {(DQ ($ VSub_DollarName '$cur'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [643 660] ) } ] ) } spids: [640] ) ] spids: [640] ) ] spids: [16777215 637] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:COMPREPLY spids:[668]) op: Equal rhs: { (word_part.ArrayLiteralPart words: [ { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(compgen)} {(-c)} {(--)} {(DQ ($ VSub_DollarName '$cur'))}) ] ) left_token: <Left_CommandSub '$('> spids: [671 683] ) } ] ) } spids: [668] ) ] spids: [668] ) ] spids: [665 688] ) ] spids: [153 691] ) ] spids: [8] ) spids: [4 7] ) (C {(complete)} {(-F)} {(_strace)} {(-o)} {(default)} {(strace)}) ] )