(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: [16777215 83] ) ] spids: [16777215 94] ) ] spids: [16777215 45] ) ] spids: [16777215 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] ) ] )