(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:PATH) op: assign_op.Equal rhs: {<'/bin'> <Id.Lit_Colon ':'> <'/usr/bin'>} spids: [93] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-r>} {<'/etc/defaults/rc.conf'>} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<.>} {<'/etc/defaults/rc.conf'>}) (command.Simple words: [{<source_rc_confs>}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) ] spids: [105 116] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-r>} {<'/etc/rc.conf'>} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.Simple words: [{<.>} {<'/etc/rc.conf'>}] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) ] spids: [129 140] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<Id.Lit_LBracket '['>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<'/sbin/sysctl'>} {<-n>} {<security.jail.jailed>}) ) } {<Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] ) (command.Case to_match: {(${ Id.VSub_Name entropy_dir)} arms: [ (case_arm pat_list: [ {<Id.Lit_LBracket '['> <Nn> <Id.Lit_RBracket ']'> <Id.Lit_LBracket '['> <Oo> <Id.Lit_RBracket ']'> } ] action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})] spids: [184 190 198 -1] ) (case_arm pat_list: [{<Id.Lit_Star '*'>}] action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:entropy_dir) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name entropy_dir> suffix_op: (suffix_op.Unary tok: <Id.VTest_ColonHyphen ':-'> arg_word: {<Id.Lit_Slash '/'> <var> <Id.Lit_Slash '/'> <db> <Id.Lit_Slash '/'> <entropy> } ) ) } spids: [204] ) ] ) ] spids: [200 201 217 -1] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:entropy_save_sz) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name entropy_save_sz> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<4096>}) ) } spids: [222] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:entropy_save_num) op: assign_op.Equal rhs: { (braced_var_sub token: <Id.VSub_Name entropy_save_num> suffix_op: (suffix_op.Unary tok:<Id.VTest_ColonHyphen ':-'> arg_word:{<8>}) ) } spids: [229] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<Id.KW_Bang '!'>} {<-d>} {(DQ (${ Id.VSub_Name entropy_dir))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<install>} {<-d>} {<-o>} {<operator>} {<-g>} {<operator>} {<-m>} {<0700>} {(DQ (${ Id.VSub_Name entropy_dir))} ) (BraceGroup children: [ (command.Sentence child: (C {<logger>} {<-is>} {<-t>} {(DQ ($ Id.VSub_Number '$0'))} {<The>} {<entropy>} {<directory>} {(DQ (${ Id.VSub_Name entropy_dir))} {<does>} {<not>} {<exist> <Id.Lit_Comma ','>} {<and>} {<cannot>} {<be>} {<created.>} {<Therefore>} {<no>} {<entropy>} {<can>} {<be>} {<saved.>} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] ) ] ) ] spids: [237 254] ) ] ) (command.AndOr ops: [Id.Op_DPipe] children: [ (C {<cd>} {(DQ (${ Id.VSub_Name entropy_dir))}) (BraceGroup children: [ (command.Sentence child: (C {<logger>} {<-is>} {<-t>} {(DQ ($ Id.VSub_Number '$0'))} {<Cannot>} {<cd>} {<to>} {<the>} {<entropy>} {<directory> <Id.Lit_Colon ':'>} {(DQ (${ Id.VSub_Name entropy_dir)) <.>} {<Entropy>} {<file>} {<rotation>} {<is>} {<aborted.>} ) terminator: <Id.Op_Semi _> ) (command.Sentence child: (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) terminator: <Id.Op_Semi _> ) ] ) ] ) (command.ForEach iter_names: [f] iterable: (for_iter.Words words:[{<saved-entropy.> <Id.Lit_Star '*'>}]) body: (command.DoGroup children: [ (command.Case to_match: {(DQ (${ Id.VSub_Name f))} arms: [ (case_arm pat_list: [ {<saved-entropy.> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\*'>)} ] action: [(command.ControlFlow token:<Id.ControlFlow_Continue continue>)] spids: [435 437 441 -1] ) ] ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {<Id.Lit_LBracket '['>} { (braced_var_sub token: <Id.VSub_Name f> suffix_op: (suffix_op.Unary tok: <Id.VOp1_Pound '#'> arg_word: {<saved-entropy> (word_part.EscapedLiteral token: <Id.Lit_EscapedChar '\\.'> ) } ) ) } {<-ge>} {(${ Id.VSub_Name entropy_save_num)} {<Id.Lit_RBracket ']'>} ) (C {<unlink>} {(${ Id.VSub_Name f)}) ] ) ] ) ) (C {<umask>} {<377>}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {(${ Id.VSub_Name entropy_save_num)} right: {<Id.Lit_Digits 1>} ) ) } spids: [482] ) ] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {(${ Id.VSub_Name n)} {<-ge>} {<1>} {<Id.Lit_RBracket ']'>}) terminator: <Id.Op_Semi _> ) ] ) body: (command.DoGroup children: [ (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-f>} {(DQ <saved-entropy.> (${ Id.VSub_Name n))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<mv>} {(DQ <saved-entropy.> (${ Id.VSub_Name n))} { (DQ <saved-entropy.> (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {(${ Id.VSub_Name n)} right: {<Id.Lit_Digits 1>} ) ) ) } ) ] spids: [514 530] ) (if_arm cond: (condition.Shell commands: [ (command.Sentence child: (C {<Id.Lit_LBracket '['>} {<-e>} {(DQ <saved-entropy.> (${ Id.VSub_Name n))} {<-o>} {<-L>} {(DQ <saved-entropy.> (${ Id.VSub_Name n))} {<Id.Lit_RBracket ']'>} ) terminator: <Id.Op_Semi _> ) ] ) action: [ (C {<logger>} {<-is>} {<-t>} {(DQ ($ Id.VSub_Number '$0'))} {(DQ (${ Id.VSub_Name entropy_dir) <'/saved-entropy.'> (${ Id.VSub_Name n))} {<is>} {<not>} {<a>} {<regular>} {<file> <Id.Lit_Comma ','>} {<and>} {<so>} {<it>} {<will>} {<not>} {<be>} {<rotated.>} {<Entropy>} {<file>} {<rotation>} {<is>} {<aborted.>} ) (command.ControlFlow token: <Id.ControlFlow_Exit exit> arg_word: {<1>} ) ] spids: [559 586] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:n) op: assign_op.Equal rhs: { (word_part.ArithSub anode: (arith_expr.Binary op_id: Id.Arith_Minus left: {(${ Id.VSub_Name n)} right: {<Id.Lit_Digits 1>} ) ) } spids: [657] ) ] ) ] ) ) (command.Simple words: [ {<dd>} {<Id.Lit_VarLike 'if='> <'/dev/random'>} {<Id.Lit_VarLike 'of='> <saved-entropy.1>} {<Id.Lit_VarLike 'bs='> (${ Id.VSub_Name entropy_save_sz)} {<Id.Lit_VarLike 'count='> <1>} ] redirects: [(redir op:<Id.Redir_Great '2>'> loc:(redir_loc.Fd fd:2) arg:{<'/dev/null'>})] do_fork: T ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>}) ] )