(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'name_funcs='> name:name_funcs)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'\n'> <'SMB_BBFL_\tsmbios_bboard_flag_name\t\tuint_t\n'> 
                <'SMB_BIOSFL_\tsmbios_bios_flag_name\t\tuint64_t\n'> <'SMB_BIOSXB1_\tsmbios_bios_xb1_name\t\tuint_t\n'> <'SMB_BIOSXB2_\tsmbios_bios_xb2_name\t\tuint_t\n'> 
                <'SMB_CAT_\tsmbios_cache_ctype_name\t\tuint_t\n'> <'SMB_CAF_\tsmbios_cache_flag_name\t\tuint_t\n'> <'SMB_EVFL_\tsmbios_evlog_flag_name\t\tuint_t\n'> 
                <'SMB_IPMI_F_\tsmbios_ipmi_flag_name\t\tuint_t\n'> <'SMB_MDF_\tsmbios_memdevice_flag_name\tuint_t\n'> 
                <'SMB_PRC_\tsmbios_processor_core_flag_name\tuint_t\n'> <'SMB_TYPE_ \tsmbios_type_name\t\tuint_t\n'> <'SMB_SLCH1_\tsmbios_slot_ch1_name\t\tuint_t\n'> 
                <'SMB_SLCH2_\tsmbios_slot_ch2_name\t\tuint_t\n'>
              )
            }
          spids: [116]
        )
      ]
      redirects: []
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'desc_funcs='> name:desc_funcs)
          op: assign_op.Equal
          rhs: 
            {
              (SQ <'\n'> <'SMB_BBFL_\tsmbios_bboard_flag_desc\t\tuint_t\n'> 
                <'SMB_BBT_\tsmbios_bboard_type_desc\t\tuint_t\n'> <'SMB_BIOSFL_\tsmbios_bios_flag_desc\t\tuint64_t\n'> 
                <'SMB_BIOSXB1_\tsmbios_bios_xb1_desc\t\tuint_t\n'> <'SMB_BIOSXB2_\tsmbios_bios_xb2_desc\t\tuint_t\n'> <'SMB_BOOT_\tsmbios_boot_desc\t\tuint_t\n'> 
                <'SMB_CAA_\tsmbios_cache_assoc_desc\t\tuint_t\n'> <'SMB_CAT_\tsmbios_cache_ctype_desc\t\tuint_t\n'> <'SMB_CAE_\tsmbios_cache_ecc_desc\t\tuint_t\n'> 
                <'SMB_CAF_\tsmbios_cache_flag_desc\t\tuint_t\n'> <'SMB_CAL_\tsmbios_cache_loc_desc\t\tuint_t\n'> <'SMB_CAG_\tsmbios_cache_logical_desc\tuint_t\n'> 
                <'SMB_CAM_\tsmbios_cache_mode_desc\t\tuint_t\n'> <'SMB_CHST_\tsmbios_chassis_state_desc\tuint_t\n'> <'SMB_CHT_\tsmbios_chassis_type_desc\tuint_t\n'> 
                <'SMB_EVFL_\tsmbios_evlog_flag_desc\t\tuint_t\n'> <'SMB_EVHF_\tsmbios_evlog_format_desc\tuint_t\n'> <'SMB_EVM_\tsmbios_evlog_method_desc\tuint_t\n'> 
                <'SMB_HWSEC_PS_\tsmbios_hwsec_desc\t\tuint_t\n'> <'SMB_IPMI_F_\tsmbios_ipmi_flag_desc\t\tuint_t\n'> <'SMB_IPMI_T_\tsmbios_ipmi_type_desc\t\tuint_t\n'> 
                <'SMB_MAL_\tsmbios_memarray_loc_desc\tuint_t\n'> <'SMB_MAU_\tsmbios_memarray_use_desc\tuint_t\n'> <'SMB_MAE_\tsmbios_memarray_ecc_desc\tuint_t\n'> 
                <'SMB_MDF_\tsmbios_memdevice_flag_desc\tuint_t\n'> <'SMB_MDFF_\tsmbios_memdevice_form_desc\tuint_t\n'> <'SMB_MDT_\tsmbios_memdevice_type_desc\tuint_t\n'> 
                <'SMB_MDR_\tsmbios_memdevice_rank_desc\tuint_t\n'> <'SMB_OBT_\tsmbios_onboard_type_desc\tuint_t\n'> <'SMB_POC_\tsmbios_port_conn_desc\t\tuint_t\n'> 
                <'SMB_POT_\tsmbios_port_type_desc\t\tuint_t\n'> <'SMB_PRC_\tsmbios_processor_core_flag_desc\tuint_t\n'> 
                <'SMB_PRF_\tsmbios_processor_family_desc\tuint_t\n'> <'SMB_PRS_\tsmbios_processor_status_desc\tuint_t\n'> 
                <'SMB_PRT_\tsmbios_processor_type_desc\tuint_t\n'> <'SMB_PRU_\tsmbios_processor_upgrade_desc\tuint_t\n'> <'SMB_SLCH1_\tsmbios_slot_ch1_desc\t\tuint_t\n'> 
                <'SMB_SLCH2_\tsmbios_slot_ch2_desc\t\tuint_t\n'> <'SMB_SLL_\tsmbios_slot_length_desc\t\tuint_t\n'> <'SMB_SLT_\tsmbios_slot_type_desc\t\tuint_t\n'> 
                <'SMB_SLU_\tsmbios_slot_usage_desc\t\tuint_t\n'> <'SMB_SLW_\tsmbios_slot_width_desc\t\tuint_t\n'> <'SMB_TYPE_ \tsmbios_type_desc\t\tuint_t\n'> 
                <'SMB_WAKEUP_\tsmbios_system_wakeup_desc\tuint_t\n'>
              )
            }
          spids: [135]
        )
      ]
      redirects: []
    )
    (command.If
      arms: [
        (if_arm
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: 
                    (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '#')} {<-ne>} {<1>} 
                      {<Id.Lit_RBracket ']'>}
                    )
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          action: [
            (command.Simple
              words: [{<echo>} {(DQ <'Usage: '> ($ Id.VSub_Number 0) <' file.h > file.c'>)}]
              redirects: [(redir op:<Id.Redir_GreatAnd '>&'> loc:(redir_loc.Fd fd:1) arg:{<2>})]
              more_env: []
              do_fork: T
            )
            (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<2>})
          ]
          spids: [185 198]
        )
      ]
      else_action: []
      redirects: []
    )
    (C {<echo>} 
      {
        (DQ <'/*'> <Id.Lit_BadBackslash '\\'> <n> 
          <' * Copyright 2015 OmniTI Computer Consulting, Inc.  All rights reserved.'> <Id.Lit_BadBackslash '\\'> <n> <' * Copyright 2005 Sun Microsystems, Inc.  All rights reserved.'> 
          <Id.Lit_BadBackslash '\\'> <n> <' * Use is subject to license terms.'> <Id.Lit_BadBackslash '\\'> <n> <' */'> 
          <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> <'#include <smbios.h>'>
        )
      }
    )
    (command.Pipeline
      children: [
        (C {<echo>} {(DQ ($ Id.VSub_DollarName name_funcs))})
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<read>} {<p>} {<name>} {<type>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          body: 
            (command.DoGroup
              children: [
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName p))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pattern='> name:pattern)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'^#define[\t ]'> <Id.Lit_BadBackslash '\\'> <'('> 
                            ($ Id.VSub_DollarName p) <'[A-Za-z0-9_]*'> <Id.Lit_BadBackslash '\\'> <')[\t ]*[A-Z0-9]*.*'> <Id.Lit_Dollar '$'>
                          )
                        }
                      spids: [288]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'replace='> name:replace)
                      op: assign_op.Equal
                      rhs: {(SQ <'\tcase \\1: return ("\\1");'>)}
                      spids: [301]
                    )
                  ]
                  redirects: []
                )
                (C {<echo>} 
                  {
                    (DQ <Id.Lit_BadBackslash '\\'> <'nconst char *'> <Id.Lit_BadBackslash '\\'> <n> 
                      ($ Id.VSub_DollarName name) <'('> ($ Id.VSub_DollarName type) <' x)'> <Id.Lit_BadBackslash '\\'> <'n{'> <Id.Lit_BadBackslash '\\'> <n> 
                      <Id.Lit_BadBackslash '\\'> <'tswitch (x) {'>
                    )
                  }
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Simple
                      words: [
                        {<sed>}
                        {<-n>}
                        {
                          (DQ <'s@'> ($ Id.VSub_DollarName pattern) <'@'> ($ Id.VSub_DollarName replace) 
                            <'@p'>
                          )
                        }
                      ]
                      redirects: [
                        (redir
                          op: <Id.Redir_Less '<'>
                          loc: (redir_loc.Fd fd:0)
                          arg: {($ Id.VSub_Number 1)}
                        )
                      ]
                      more_env: []
                      do_fork: T
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                )
                (C {<echo>} 
                  {
                    (DQ <Id.Lit_BadBackslash '\\'> <'t}'> <Id.Lit_BadBackslash '\\'> <n> 
                      <Id.Lit_BadBackslash '\\'> <'treturn (NULL);'> <Id.Lit_BadBackslash '\\'> <'n}'>
                    )
                  }
                )
              ]
            )
          redirects: []
        )
      ]
      negated: F
      stderr_indices: []
    )
    (command.Pipeline
      children: [
        (C {<echo>} {(DQ ($ Id.VSub_DollarName desc_funcs))})
        (command.WhileUntil
          keyword: <Id.KW_While while>
          cond: 
            (condition.Shell
              commands: [
                (command.Sentence
                  child: (C {<read>} {<p>} {<name>} {<type>})
                  terminator: <Id.Op_Semi _>
                )
              ]
            )
          body: 
            (command.DoGroup
              children: [
                (command.AndOr
                  ops: [Id.Op_DAmp]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName p))} 
                      {<Id.Lit_RBracket ']'>}
                    )
                    (command.ControlFlow token:<Id.ControlFlow_Continue continue>)
                  ]
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'pattern='> name:pattern)
                      op: assign_op.Equal
                      rhs: 
                        {
                          (DQ <'^#define[\t ]'> <Id.Lit_BadBackslash '\\'> <'('> 
                            ($ Id.VSub_DollarName p) <'[A-Za-z0-9_]*'> <Id.Lit_BadBackslash '\\'> <')[\t ]*.*/'> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\\\'>
                              ch: '\\'
                            ) <'* '> <Id.Lit_BadBackslash '\\'> <'(.*'> <Id.Lit_BadBackslash '\\'> <') '> 
                            (word_part.EscapedLiteral
                              token: <Id.Lit_EscapedChar '\\\\'>
                              ch: '\\'
                            ) <'*/'> <Id.Lit_Dollar '$'>
                          )
                        }
                      spids: [431]
                    )
                  ]
                  redirects: []
                )
                (command.ShAssignment
                  pairs: [
                    (assign_pair
                      lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'replace='> name:replace)
                      op: assign_op.Equal
                      rhs: {(SQ <'\tcase \\1: return (\\2);'>)}
                      spids: [452]
                    )
                  ]
                  redirects: []
                )
                (C {<echo>} 
                  {
                    (DQ <Id.Lit_BadBackslash '\\'> <'nconst char *'> <Id.Lit_BadBackslash '\\'> <n> 
                      ($ Id.VSub_DollarName name) <'('> ($ Id.VSub_DollarName type) <' x)'> <Id.Lit_BadBackslash '\\'> <'n{'> <Id.Lit_BadBackslash '\\'> <n> 
                      <Id.Lit_BadBackslash '\\'> <'tswitch (x) {'>
                    )
                  }
                )
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (command.Pipeline
                      children: [
                        (command.Simple
                          words: [
                            {<sed>}
                            {<-n>}
                            {
                              (DQ <'s@'> ($ Id.VSub_DollarName pattern) <'@'> 
                                ($ Id.VSub_DollarName replace) <'@p'>
                              )
                            }
                          ]
                          redirects: [
                            (redir
                              op: <Id.Redir_Less '<'>
                              loc: (redir_loc.Fd fd:0)
                              arg: {($ Id.VSub_Number 1)}
                            )
                          ]
                          more_env: []
                          do_fork: T
                        )
                        (C {<sed>} {(SQ <'s/ ([RO]))/)/'>)})
                        (C {<sed>} {(SQ <'s/"/\\\\"/g'>)})
                        (C {<sed>} {(SQ <'s/(/("/;s/);$/");/'>)})
                      ]
                      negated: F
                      stderr_indices: []
                    )
                    (command.ControlFlow
                      token: <Id.ControlFlow_Exit exit>
                      arg_word: {<1>}
                    )
                  ]
                )
                (C {<echo>} 
                  {
                    (DQ <Id.Lit_BadBackslash '\\'> <'t}'> <Id.Lit_BadBackslash '\\'> <n> 
                      <Id.Lit_BadBackslash '\\'> <'treturn (NULL);'> <Id.Lit_BadBackslash '\\'> <'n}'>
                    )
                  }
                )
              ]
            )
          redirects: []
        )
      ]
      negated: F
      stderr_indices: []
    )
    (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})
  ]
)