(command.CommandList children: [ (command.ShFunction name: gcd body: (BraceGroup children: [ (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'a='> ($ Id.VSub_Number '$1')}) (C {<typeset>} {<-i>} {<Id.Lit_VarLike 'b='> ($ Id.VSub_Number '$2')}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_Great left: <Id.Lit_ArithVarLike a> right: <Id.Lit_ArithVarLike b> ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$b')} spids: [62] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b) op: assign_op.Equal rhs: {($ Id.VSub_Number '$1')} spids: [66] ) ] ) ] spids: [44 59] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (command.DParen child: (arith_expr.Binary op_id: Id.Arith_DPipe left: (arith_expr.Binary op_id: Id.Arith_DEqual left: <Id.Lit_ArithVarLike a> right: {<Id.Lit_Digits 1>} ) right: (arith_expr.Binary op_id: Id.Arith_DEqual left: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike b> right: <Id.Lit_ArithVarLike a> ) right: {<Id.Lit_Digits 0>} ) ) ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:gcd_value) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$a')} spids: [102] ) ] ) (command.ControlFlow token: <Id.ControlFlow_Return return> arg_word: {<0>} ) ] spids: [73 99] ) ] ) (C {<typeset>} {<-i>} {<c>}) (command.DParen child: (arith_expr.BinaryAssign op_id: Id.Arith_Equal left: <Id.Lit_ArithVarLike c> right: (arith_expr.Binary op_id: Id.Arith_Minus left: <Id.Lit_ArithVarLike b> right: <Id.Lit_ArithVarLike a> ) ) ) (C {<gcd>} {($ Id.VSub_DollarName '$c')} {($ Id.VSub_DollarName '$a')}) ] ) ) (C {<gcd>} {($ Id.VSub_Number '$1')} {($ Id.VSub_Number '$2')}) (C {<echo>} {($ Id.VSub_DollarName '$gcd_value')}) ] )