(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'in='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'in='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'in='> name:in) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'out='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'out='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'out='> name:out) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} ) ] redirects: [] ) (command.ShFunction name_tok: <syscall_macro> name: syscall_macro body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'abi='> name:abi) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nr='> name:nr) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'entry='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'entry='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'entry='> name:entry) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 3))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'real_entry='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'real_entry='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'real_entry='> name:real_entry) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name entry> var_name: entry suffix_op: (suffix_op.Unary op: <Id.VOp1_DPercent '%%'> arg_word: {<Id.Lit_Slash '/'> <Id.Lit_Other '*'>} ) right: <Id.Right_DollarBrace '}'> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'qualifier='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'qualifier='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'qualifier='> name:qualifier) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name entry> var_name: entry suffix_op: (suffix_op.Slice begin: { (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name real_entry> var_name: real_entry prefix_op: <Id.VSub_Pound '#'> right: <Id.Right_DollarBrace '}'> ) } ) right: <Id.Arith_RBrace _> ) ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'qualifier='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'qualifier='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'qualifier='> name:qualifier) op: assign_op.Equal rhs: { (DQ (BracedVarSub left: <Id.Left_DollarBrace '${'> token: <Id.VSub_Name qualifier> var_name: qualifier suffix_op: (suffix_op.Slice begin:{<Id.Lit_Digits 1>}) right: <Id.Arith_RBrace _> ) ) } ) ] redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [ {<echo>} { (DQ <__SYSCALL_> (${ Id.VSub_Name abi) <'('> ($ Id.VSub_DollarName nr) <', '> ($ Id.VSub_DollarName real_entry) <', '> ($ Id.VSub_DollarName qualifier) <')'> ) } ] redirects: [] do_fork: T ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.ShFunction name_tok: <emit> name: emit body: (BraceGroup left: <Id.Lit_LBrace '{'> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'abi='> name:abi) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 1))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'nr='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'nr='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'nr='> name:nr) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 2))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'entry='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'entry='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'entry='> name:entry) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 3))} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'compat='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'compat='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'compat='> name:compat) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_Number 4))} ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName abi))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <64>)} {<-a>} {<-n>} {(DQ ($ Id.VSub_DollarName compat))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'a compat entry for a 64-bit syscall makes no sense'>)}] redirects: [(Redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [137 163] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName compat))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName entry))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <syscall_macro> more_env: [] words: [ {<syscall_macro>} {(DQ ($ Id.VSub_DollarName abi))} {(DQ ($ Id.VSub_DollarName nr))} {(DQ ($ Id.VSub_DollarName entry))} ] redirects: [] do_fork: T ) ] spids: [201 214] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] spids: [185 198] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'#ifdef CONFIG_X86_32'>)}] redirects: [] do_fork: T ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_DollarName entry))} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <syscall_macro> more_env: [] words: [ {<syscall_macro>} {(DQ ($ Id.VSub_DollarName abi))} {(DQ ($ Id.VSub_DollarName nr))} {(DQ ($ Id.VSub_DollarName entry))} ] redirects: [] do_fork: T ) ] spids: [245 258] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'#else'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <syscall_macro> more_env: [] words: [ {<syscall_macro>} {(DQ ($ Id.VSub_DollarName abi))} {(DQ ($ Id.VSub_DollarName nr))} {(DQ ($ Id.VSub_DollarName compat))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'#endif'>)}] redirects: [] do_fork: T ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] redirects: [] right: <Id.Lit_RBrace '}'> ) ) (command.Pipeline children: [ (command.Simple blame_tok: <grep> more_env: [] words: [{<grep>} {(SQ <'^[0-9]'>)} {(DQ ($ Id.VSub_DollarName in))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <sort> more_env: [] words: [{<sort>} {<-n>}] redirects: [] do_fork: T ) (command.Subshell left: <Id.Op_LParen _> child: (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<nr>} {<abi>} {<name>} {<entry>} {<compat>}] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.ShAssignment left: <Id.Lit_VarLike 'abi='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'abi='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'abi='> name:abi) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_Backtick '`'> child: (command.Pipeline children: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ ($ Id.VSub_DollarName abi))}] redirects: [] do_fork: T ) (command.Simple blame_tok: <tr> more_env: [] words: [{<tr>} {(SQ <'[a-z]'>)} {(SQ <'[A-Z]'>)}] redirects: [] do_fork: T ) ] ops: [<Id.Op_Pipe _>] ) right: <Id.Backtick_Right '`'> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName abi))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <COMMON>)} {<-o>} {(DQ ($ Id.VSub_DollarName abi))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <64>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <emit> more_env: [] words: [ {<emit>} {<64>} {(DQ ($ Id.VSub_DollarName nr))} {(DQ ($ Id.VSub_DollarName entry))} {(DQ ($ Id.VSub_DollarName compat))} ] redirects: [] do_fork: T ) ] spids: [376 407] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName abi))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <X32>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'#ifdef CONFIG_X86_X32_ABI'>)}] redirects: [] do_fork: T ) (command.Simple blame_tok: <emit> more_env: [] words: [ {<emit>} {<64>} {(DQ ($ Id.VSub_DollarName nr))} {(DQ ($ Id.VSub_DollarName entry))} {(DQ ($ Id.VSub_DollarName compat))} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'#endif'>)}] redirects: [] do_fork: T ) ] spids: [439 457] ) (IfArm keyword: <Id.KW_Elif elif> cond: (condition.Shell commands: [ (command.Sentence child: (command.Simple blame_tok: <Id.Lit_LBracket '['> more_env: [] words: [ {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName abi))} {<Id.Lit_Equals '='> <Id.Lit_Equals '='>} {(DQ <I386>)} {<Id.Lit_RBracket ']'>} ] redirects: [] do_fork: T ) terminator: <Id.Op_Semi _> ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <emit> more_env: [] words: [ {<emit>} {(DQ ($ Id.VSub_DollarName abi))} {(DQ ($ Id.VSub_DollarName nr))} {(DQ ($ Id.VSub_DollarName entry))} {(DQ ($ Id.VSub_DollarName compat))} ] redirects: [] do_fork: T ) ] spids: [495 513] ) ] else_kw: <Id.KW_Else else> else_action: [ (command.Simple blame_tok: <echo> more_env: [] words: [{<echo>} {(DQ <'Unknown abi '> ($ Id.VSub_DollarName abi))}] redirects: [ (Redir op: <Id.Redir_GreatAnd '>&'> loc: (redir_loc.Fd fd:1) arg: {<2>} ) ] do_fork: T ) (command.ControlFlow keyword: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [] ) right: <Id.Right_Subshell _> redirects: [ (Redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {(DQ ($ Id.VSub_DollarName out))} ) ] ) ] ops: [<Id.Op_Pipe _> <Id.Op_Pipe _>] ) ] )