(CommandList children: [ (FuncDef name: unique_port body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:START) op:Equal rhs:{(8192)} spids:[12])] spids: [12] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RANGE) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (CommandSubPart command_list: (CommandList children: [ (C {(awk)} {(SQ <"{print $1}">)} {(/proc/sys/net/ipv4/ip_local_port_range)} ) ] ) left_token: <Left_CommandSub "$("> spids: [18 26] ) } ) right: (ArithWord w:{($ VSub_Name "$START")}) ) spids: [17 29] ) } spids: [16] ) ] spids: [16] ) (If arms: [ (if_arm cond: [(C {(Lit_Other "[")} {($ VSub_Name "$RANGE")} {(-lt)} {(8)} {(Lit_Other "]")})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:START) op: Equal rhs: { (ArithSubPart anode: (ArithWord w: { (CommandSubPart command_list: (CommandList children: [ (C {(awk)} {(SQ <"{print $2}">)} {(/proc/sys/net/ipv4/ip_local_port_range)} ) ] ) left_token: <Left_CommandSub "$("> spids: [50 58] ) } ) spids: [49 59] ) } spids: [48] ) ] spids: [48] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RANGE) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{(Lit_Digits 65535)}) right: (ArithWord w:{($ VSub_Name "$START")}) ) spids: [63 67] ) } spids: [62] ) ] spids: [62] ) (If arms: [ (if_arm cond: [ (C {(Lit_Other "[")} {($ VSub_Name "$RANGE")} {(-lt)} {(8)} {(Lit_Other "]")}) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:START) op: Equal rhs: {(16384)} spids: [86] ) ] spids: [86] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:RANGE) op: Equal rhs: {(32768)} spids: [90] ) ] spids: [90] ) ] spids: [-1 83] ) ] spids: [-1 94] ) ] spids: [-1 45] ) ] spids: [-1 97] ) (C {(echo)} { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithBinary op_id: Arith_Percent left: (ArithWord w:{($ VSub_Dollar "$$")}) right: (ArithWord w:{($ VSub_Name "$RANGE")}) ) right: (ArithWord w:{($ VSub_Name "$START")}) ) spids: [102 110] ) } ) ] spids: [4] ) spids: [0 3] ) ] )