(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:bootblk)
          op: assign_op.Equal
          rhs: {<'/usr/mdec/gptmbr.bin'>}
          spids: [88]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:size)
          op: assign_op.Equal
          rhs: {<10240>}
          spids: [91]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:newsize)
          op: assign_op.Equal
          rhs: {<20480>}
          spids: [94]
        )
      ]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:shdr) op:assign_op.Equal rhs:{<34>} spids:[97])]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:disk)
          op: assign_op.Equal
          rhs: {<gpt.disk>}
          spids: [100]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:uuid)
          op: assign_op.Equal
          rhs: {(DQ <........-....-....-....-............>)}
          spids: [103]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:zero)
          op: assign_op.Equal
          rhs: {(DQ <00000000-0000-0000-0000-000000000000>)}
          spids: [108]
        )
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:src)
          op: assign_op.Equal
          rhs: {(command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<atf_get_srcdir>}))}
          spids: [113]
        )
      ]
    )
    (command.ShFunction
      name: silence
      body: 
        (BraceGroup
          children: [
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} 
              {<-e>} {<empty>} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: inline
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'inline='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<shift>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} 
              {<-o>} {<inline> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$inline'))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: match
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'match='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<shift>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} 
              {<-o>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$match'))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: matcherr
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'match='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<shift>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-o>} {<empty>} 
              {<-e>} {<match> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$match'))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: file
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'file='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<shift>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} 
              {<-o>} {<file> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$file'))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: save
      body: 
        (BraceGroup
          children: [
            (C {<local>} {<Id.Lit_VarLike 'save='> (DQ ($ Id.VSub_Number '$1'))})
            (C {<shift>})
            (C {<atf_check>} {<-s>} {<Id.ControlFlow_Exit exit> <Id.Lit_Colon ':'> <0>} {<-e>} {<empty>} 
              {<-o>} {<save> <Id.Lit_Colon ':'> (DQ ($ Id.VSub_DollarName '$save'))} {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: zerodd
      body: 
        (BraceGroup
          children: [
            (C {<silence>} {<dd>} {<Id.Lit_VarLike 'conv='> <notrunc>} 
              {<Id.Lit_VarLike 'msgfmt='> <quiet>} {<Id.Lit_VarLike 'if='> <'/dev/zero'>} {<Id.Lit_VarLike 'of='> (DQ ($ Id.VSub_DollarName '$disk'))} 
              {(DQ ($ Id.VSub_At '$@'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: prepare
      body: 
        (BraceGroup
          children: [
            (C {<rm>} {<-f>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<zerodd>} {<Id.Lit_VarLike 'seek='> (DQ ($ Id.VSub_DollarName '$size'))} 
              {<Id.Lit_VarLike 'count='> <1>}
            )
          ]
        )
    )
    (command.ShFunction
      name: prepare_2part
      body: 
        (BraceGroup
          children: [
            (C {<prepare>})
            (C {<silence>} {<gpt>} {<create>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<match>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<partaddmsg>} {<1>} {<34>} {<1024>})
                  )
                )
              } {<gpt>} {<add>} {<-t>} {<efi>} {<-s>} {<1024>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<match>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<partaddmsg>} {<2>} {<1058>} {<9150>})
                  )
                )
              } {<gpt>} {<add>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: check_2part
      body: 
        (BraceGroup
          children: [
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.2part.show.normal'>)} {<gpt>} {<show>} 
              {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.2part.show.uuid'>)} {<gpt>} {<show>} 
              {<-u>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: partaddmsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' added: '> ($ Id.VSub_DollarName '$uuid') <' '> ($ Id.VSub_Number '$2') <' '> ($ Id.VSub_Number '$3') 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: partresmsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' resized: '> ($ Id.VSub_Number '$2') <' '> ($ Id.VSub_Number '$3') 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: partremmsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' removed'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: partlblmsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' label changed'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: partbootmsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' marked as bootable'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: recovermsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Recovered '> ($ Id.VSub_Number '$1') 
                  <' GPT [a-z]* from '> ($ Id.VSub_Number '$2') (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: migratemsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} {<-n>} 
              {
                (DQ <'^gpt: '> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' unknown type MSDOS, '>
                )
              }
            )
            (C {<echo>} {(SQ <'using "Microsoft Basic Data"$'>)})
          ]
        )
    )
    (command.ShFunction
      name: attrmsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' attributes updated'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (command.ShFunction
      name: typemsg
      body: 
        (BraceGroup
          children: [
            (C {<echo>} 
              {
                (DQ <'^'> ($ Id.VSub_DollarName '$disk') <': Partition '> ($ Id.VSub_Number '$1') 
                  <' type changed'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              }
            )
          ]
        )
    )
    (C {<atf_test_case>} {<create_empty>})
    (command.ShFunction
      name: create_empty_head
      body: (BraceGroup children:[(C {<atf_set>} {(DQ <descr>)} {(DQ <'Create empty disk'>)})])
    )
    (command.ShFunction
      name: create_empty_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare>})
            (C {<silence>} {<gpt>} {<create>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.empty.show.normal'>)} {<gpt>} {<show>} 
              {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<create_2part>})
    (command.ShFunction
      name: create_2part_head
      body: (BraceGroup children:[(C {<atf_set>} {(DQ <descr>)} {(DQ <'Create 2 partition disk'>)})])
    )
    (command.ShFunction
      name: create_2part_body
      body: (BraceGroup children:[(C {<prepare_2part>}) (C {<check_2part>})])
    )
    (C {<atf_test_case>} {<change_attr_2part>})
    (command.ShFunction
      name: change_attr_2part_head
      body: 
        (BraceGroup
          children: [(C {<atf_set>} {(DQ <descr>)} {(DQ <'Change the attribute of 2 partition disk'>)})]
        )
    )
    (command.ShFunction
      name: change_attr_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<attrmsg>} {<1>})))} {<gpt>} {<set>} {<-i>} {<1>} {<-a>} {<biosboot> <Id.Lit_Comma ','> <bootme>} 
              {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<save>} {<attr>} {<gpt>} {<show>} {<-i>} {<1>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<match>} 
              {
                (DQ <'^Attributes: biosboot, bootme'> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              } {<tail>} {<-1>} {<attr>}
            )
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<attrmsg>} {<1>})))} {<gpt>} {<unset>} {<-i>} {<1>} {<-a>} {<biosboot> <Id.Lit_Comma ','> <bootme>} 
              {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<save>} {<attr>} {<gpt>} {<show>} {<-i>} {<1>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<match>} 
              {(DQ <'^Attributes: None'> (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>))} {<tail>} {<-1>} {<attr>}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<change_type_2part>})
    (command.ShFunction
      name: change_type_2part_head
      body: 
        (BraceGroup
          children: [
            (C {<atf_set>} {(DQ <descr>)} {(DQ <'Change the partition type type of 2 partition disk'>)})
          ]
        )
    )
    (command.ShFunction
      name: change_type_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<typemsg>} {<1>})))} {<gpt>} {<type>} {<-i>} {<1>} {<-T>} {<apple>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<save>} {<type>} {<gpt>} {<show>} {<-i>} {<1>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<inline>} 
              {
                (DQ <'Type: apple (48465300-0000-11aa-aa11-00306543ecac)'> <Id.Lit_BadBackslash '\\'> 
                  <n>
                )
              } {<grep>} {(DQ <'^Type:'>)} {<type>}
            )
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<typemsg>} {<1>})))} {<gpt>} {<type>} {<-i>} {<1>} {<-T>} {<efi>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<save>} {<type>} {<gpt>} {<show>} {<-i>} {<1>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<inline>} 
              {
                (DQ <'Type: efi (c12a7328-f81f-11d2-ba4b-00a0c93ec93b)'> <Id.Lit_BadBackslash '\\'> <n>)
              } {<grep>} {(DQ <'^Type:'>)} {<type>}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<backup_2part>})
    (command.ShFunction
      name: backup_2part_head
      body: (BraceGroup children:[(C {<atf_set>} {(DQ <descr>)} {(DQ <'Backup 2 partition disk'>)})])
    )
    (command.ShFunction
      name: backup_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<save>} {<test.backup>} {<gpt>} {<backup>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.backup'>)} {<sed>} {<-e>} 
              {(DQ <'s/'> ($ Id.VSub_DollarName '$uuid') <'/'> ($ Id.VSub_DollarName '$zero') <'/g'>)} {(DQ <test.backup>)}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<restore_2part>})
    (command.ShFunction
      name: restore_2part_head
      body: 
        (BraceGroup
          children: [(C {<atf_set>} {(DQ <descr>)} {(DQ <'Restore 2 partition disk'>)})]
        )
    )
    (command.ShFunction
      name: restore_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<save>} {<test.backup>} {<gpt>} {<backup>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<prepare>})
            (C {<silence>} {<gpt>} {<restore>} {<-i>} {<test.backup>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<check_2part>})
          ]
        )
    )
    (C {<atf_test_case>} {<recover_backup>})
    (command.ShFunction
      name: recover_backup_head
      body: 
        (BraceGroup
          children: [(C {<atf_set>} {(DQ <descr>)} {(DQ <'Recover the backup GPT header and table'>)})]
        )
    )
    (command.ShFunction
      name: recover_backup_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<zerodd>} 
              {<Id.Lit_VarLike 'seek='> 
                (DQ 
                  (word_part.ArithSub
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Minus
                        left: <Id.Lit_ArithVarLike size>
                        right: <Id.Lit_ArithVarLike shdr>
                      )
                  )
                )
              } {<Id.Lit_VarLike 'count='> (DQ ($ Id.VSub_DollarName '$shdr'))}
            )
            (C {<match>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<recovermsg>} {<secondary>} {<primary>})
                  )
                )
              } {<gpt>} {<recover>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<check_2part>})
          ]
        )
    )
    (C {<atf_test_case>} {<recover_primary>})
    (command.ShFunction
      name: recover_primary_head
      body: 
        (BraceGroup
          children: [(C {<atf_set>} {(DQ <descr>)} {(DQ <'Recover the primary GPT header and table'>)})]
        )
    )
    (command.ShFunction
      name: recover_primary_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<zerodd>} {<Id.Lit_VarLike 'seek='> <1>} 
              {<Id.Lit_VarLike 'count='> (DQ ($ Id.VSub_DollarName '$shdr'))}
            )
            (C {<match>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<recovermsg>} {<primary>} {<secondary>})
                  )
                )
              } {<gpt>} {<recover>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<check_2part>})
          ]
        )
    )
    (C {<atf_test_case>} {<resize_2part>})
    (command.ShFunction
      name: resize_2part_head
      body: 
        (BraceGroup
          children: [(C {<atf_set>} {(DQ <descr>)} {(DQ <'Resize a 2 partition disk and partition'>)})]
        )
    )
    (command.ShFunction
      name: resize_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<zerodd>} {<Id.Lit_VarLike 'seek='> (DQ ($ Id.VSub_DollarName '$newsize'))} 
              {<Id.Lit_VarLike 'count='> <1>}
            )
            (C {<silence>} {<gpt>} {<resizedisk>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.resizedisk.show.normal'>)} {<gpt>} 
              {<show>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<match>} 
              {
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: (C {<partresmsg>} {<2>} {<1058>} {<19390>})
                  )
                )
              } {<gpt>} {<resize>} {<-i>} {<2>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.resizepart.show.normal'>)} {<gpt>} 
              {<show>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<remove_2part>})
    (command.ShFunction
      name: remove_2part_head
      body: 
        (BraceGroup
          children: [
            (C {<atf_set>} {(DQ <descr>)} {(DQ <'Remove a partition from a 2 partition disk'>)})
          ]
        )
    )
    (command.ShFunction
      name: remove_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<partremmsg>} {<1>})))} {<-e>} {<empty>} {<gpt>} {<remove>} {<-i>} {<1>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.removepart.show.normal'>)} {<gpt>} 
              {<show>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<label_2part>})
    (command.ShFunction
      name: label_2part_head
      body: 
        (BraceGroup
          children: [(C {<atf_set>} {(DQ <descr>)} {(DQ <'Label partitions in a 2 partition disk'>)})]
        )
    )
    (command.ShFunction
      name: label_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<partlblmsg>} {<1>})))} {<gpt>} {<label>} {<-i>} {<1>} {<-l>} {<potato>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<partlblmsg>} {<2>})))} {<gpt>} {<label>} {<-i>} {<2>} {<-l>} {<tomato>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.2part.show.label'>)} {<gpt>} {<show>} 
              {<-l>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<bootable_2part>})
    (command.ShFunction
      name: bootable_2part_head
      body: 
        (BraceGroup
          children: [
            (C {<atf_set>} {(DQ <descr>)} {(DQ <'Make partition 2 bootable in a 2 partition disk'>)})
            (C {<atf_set>} {(DQ <require.files>)} {(DQ ($ Id.VSub_DollarName '$bootblk'))})
          ]
        )
    )
    (command.ShFunction
      name: bootable_2part_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare_2part>})
            (C {<match>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<partbootmsg>} {<2>})))} {<gpt>} {<biosboot>} {<-i>} {<2>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<local>} 
              {<Id.Lit_VarLike 'bootsz='> 
                (DQ 
                  (command_sub
                    left_token: <Id.Left_DollarParen '$('>
                    child: 
                      (command.Pipeline
                        children: [
                          (C {<ls>} {<-l>} {(DQ ($ Id.VSub_DollarName '$bootblk'))})
                          (C {<awk>} {(SQ <'{ print $5 }'>)})
                        ]
                        negated: F
                      )
                  )
                )
              }
            )
            (C {<silence>} {<dd>} {<Id.Lit_VarLike 'msgfmt='> <quiet>} 
              {<Id.Lit_VarLike 'if='> (DQ ($ Id.VSub_DollarName '$disk'))} {<Id.Lit_VarLike 'of='> <bootblk>} {<Id.Lit_VarLike 'bs='> <1>} 
              {<Id.Lit_VarLike 'count='> (DQ ($ Id.VSub_DollarName '$bootsz'))}
            )
            (C {<silence>} {<cmp>} {(DQ ($ Id.VSub_DollarName '$bootblk'))} {<bootblk>})
            (C {<save>} {<bootattr>} {<gpt>} {<show>} {<-i>} {<2>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<match>} 
              {
                (DQ <'^Attributes: biosboot'> 
                  (word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\$'>)
                )
              } {<tail>} {<-1>} {<bootattr>}
            )
          ]
        )
    )
    (C {<atf_test_case>} {<migrate_disklabel>})
    (command.ShFunction
      name: migrate_disklabel_head
      body: 
        (BraceGroup
          children: [(C {<atf_set>} {(DQ <descr>)} {(DQ <'Migrate an MBR+disklabel disk to GPT'>)})]
        )
    )
    (command.ShFunction
      name: migrate_disklabel_body
      body: 
        (BraceGroup
          children: [
            (C {<prepare>})
            (C {<silence>} {<fdisk>} {<-fi>} {(DQ ($ Id.VSub_DollarName '$disk'))})
            (C {<silence>} {<fdisk>} {<-fu0s>} 
              {
                (DQ <'169/63/'> 
                  (word_part.ArithSub
                    anode: 
                      (arith_expr.Binary
                        op_id: Id.Arith_Slash
                        left: <Id.Lit_ArithVarLike size>
                        right: {<Id.Lit_Digits 10>}
                      )
                  )
                )
              } {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<silence>} {<disklabel>} {<-R>} {(DQ ($ Id.VSub_DollarName '$disk'))} 
              {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.disklabel'>)}
            )
            (C {<matcherr>} 
              {(DQ (command_sub left_token:<Id.Left_DollarParen '$('> child:(C {<migratemsg>} {<5>})))} {<gpt>} {<migrate>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
            (C {<file>} {(DQ ($ Id.VSub_DollarName '$src') <'/gpt.disklabel.show.normal'>)} {<gpt>} 
              {<show>} {(DQ ($ Id.VSub_DollarName '$disk'))}
            )
          ]
        )
    )
    (command.ShFunction
      name: atf_init_test_cases
      body: 
        (BraceGroup
          children: [
            (C {<atf_add_test_case>} {<create_empty>})
            (C {<atf_add_test_case>} {<create_2part>})
            (C {<atf_add_test_case>} {<change_attr_2part>})
            (C {<atf_add_test_case>} {<change_type_2part>})
            (C {<atf_add_test_case>} {<backup_2part>})
            (C {<atf_add_test_case>} {<remove_2part>})
            (C {<atf_add_test_case>} {<restore_2part>})
            (C {<atf_add_test_case>} {<recover_backup>})
            (C {<atf_add_test_case>} {<recover_primary>})
            (C {<atf_add_test_case>} {<resize_2part>})
            (C {<atf_add_test_case>} {<label_2part>})
            (C {<atf_add_test_case>} {<bootable_2part>})
            (C {<atf_add_test_case>} {<migrate_disklabel>})
          ]
        )
    )
  ]
)