(CommandList
  children: [
    (FuncDef
      name: initializeDeck
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:card) op:Equal rhs:{(1)} spids:[28])]
              spids: [28]
            )
            (While
              cond: [
                (C {(Lit_Other '[')} {($ VSub_Name '$card')} {(KW_Bang '!') (Lit_Other '=')} {(53)} 
                  {(Lit_Other ']')}
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (C 
                      {(deck) (Lit_Other '[') ($ VSub_Name '$card') (Lit_Other ']') (Lit_Other '=') 
                        ($ VSub_Name '$card')
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:card)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$card')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [61 70]
                              )
                            }
                          spids: [60]
                        )
                      ]
                      spids: [60]
                    )
                  ]
                  spids: [49 73]
                )
            )
          ]
          spids: [20]
        )
      spids: [16 19]
    )
    (FuncDef
      name: shuffleDeck
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:count) op:Equal rhs:{(1)} spids:[94])]
              spids: [94]
            )
            (While
              cond: [
                (C {(Lit_Other '[')} {($ VSub_Name '$count')} {(KW_Bang '!') (Lit_Other '=')} {(53)} 
                  {(Lit_Other ']')}
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (C {(pickCard)})
                    (C 
                      {(newdeck) (Lit_Other '[') ($ VSub_Name '$count') (Lit_Other ']') (Lit_Other '=') 
                        ($ VSub_Name '$picked')
                      }
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:count)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$count')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [128 137]
                              )
                            }
                          spids: [127]
                        )
                      ]
                      spids: [127]
                    )
                  ]
                  spids: [113 140]
                )
            )
          ]
          spids: [82]
        )
      spids: [78 81]
    )
    (FuncDef
      name: pickCard
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_Local
              pairs: [
                (assign_pair lhs:(LhsName name:errcount) op:Equal spids:[163])
                (assign_pair lhs:(LhsName name:randomcard) op:Equal spids:[165])
              ]
              spids: [161]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:threshold) op:Equal rhs:{(10)} spids:[169])]
              spids: [169]
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:errcount) op:Equal rhs:{(0)} spids:[176])]
              spids: [176]
            )
            (While
              cond: [
                (C {(Lit_Other '[')} {($ VSub_Name '$errcount')} {(-lt)} {($ VSub_Name '$threshold')} 
                  {(Lit_Other ']')}
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:randomcard)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: 
                                      (ArithBinary
                                        op_id: Arith_Percent
                                        left: (ArithWord w:{($ VSub_Name '$RANDOM')})
                                        right: (ArithWord w:{(Lit_Digits 52)})
                                      )
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [211 228]
                              )
                            }
                          spids: [210]
                        )
                      ]
                      spids: [210]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:errcount)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$errcount')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [232 241]
                              )
                            }
                          spids: [231]
                        )
                      ]
                      spids: [231]
                    )
                    (If
                      arms: [
                        (if_arm
                          cond: [
                            (Sentence
                              child: 
                                (C {(Lit_Other '[')} 
                                  {
                                    (DQ 
                                      (BracedVarSub
                                        token: <VSub_Name deck>
                                        bracket_op: 
                                          (ArrayIndex
                                            expr: (ArithWord w:{($ VSub_Name '$randomcard')})
                                          )
                                        spids: [250 255]
                                      )
                                    )
                                  } {(KW_Bang '!') (Lit_Other '=')} {(DQ (0))} {(Lit_Other ']')}
                                )
                              terminator: <Op_Semi ';'>
                            )
                          ]
                          action: [
                            (Assignment
                              keyword: Assign_None
                              pairs: [
                                (assign_pair
                                  lhs: (LhsName name:picked)
                                  op: Equal
                                  rhs: 
                                    {
                                      (BracedVarSub
                                        token: <VSub_Name deck>
                                        bracket_op: 
                                          (ArrayIndex
                                            expr: (ArithWord w:{($ VSub_Name '$randomcard')})
                                          )
                                        spids: [273 278]
                                      )
                                    }
                                  spids: [272]
                                )
                              ]
                              spids: [272]
                            )
                            (C 
                              {(deck) (Lit_Other '[') ($ VSub_Name '$picked') (Lit_Other ']') 
                                (Lit_Other '=') (0)
                              }
                            )
                            (ControlFlow
                              token: <ControlFlow_Return return>
                              arg_word: {($ VSub_Name '$picked')}
                            )
                          ]
                          spids: [16777215 269]
                        )
                      ]
                      spids: [16777215 298]
                    )
                  ]
                  spids: [207 301]
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [(assign_pair lhs:(LhsName name:randomcard) op:Equal rhs:{(1)} spids:[314])]
              spids: [314]
            )
            (While
              cond: [
                (C {(Lit_Other '[')} 
                  {
                    (BracedVarSub
                      token: <VSub_Name newdeck>
                      bracket_op: (ArrayIndex expr:(ArithWord w:{($ VSub_Name '$randomcard')}))
                      spids: [323 328]
                    )
                  } {(-eq)} {(0)} {(Lit_Other ']')}
                )
              ]
              body: 
                (DoGroup
                  children: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:randomcard)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$randomcard')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [341 350]
                              )
                            }
                          spids: [340]
                        )
                      ]
                      spids: [340]
                    )
                  ]
                  spids: [337 353]
                )
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:picked)
                  op: Equal
                  rhs: {($ VSub_Name '$randomcard')}
                  spids: [357]
                )
              ]
              spids: [357]
            )
            (C {(deck) (Lit_Other '[') ($ VSub_Name '$picked') (Lit_Other ']') (Lit_Other '=') (0)})
            (ControlFlow
              token: <ControlFlow_Return return>
              arg_word: {($ VSub_Name '$picked')}
            )
          ]
          spids: [149]
        )
      spids: [145 148]
    )
    (FuncDef
      name: showCard
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:card)
                  op: Equal
                  rhs: {($ VSub_Number '$1')}
                  spids: [400]
                )
              ]
              spids: [400]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$card')} {(-lt)} {(1)} {(-o)} 
                          {($ VSub_Name '$card')} {(-gt)} {(52)} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('Bad card value: ') ($ VSub_Name '$card'))})
                    (C {(exit)} {(1)})
                  ]
                  spids: [16777215 427]
                )
              ]
              spids: [16777215 443]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:suit)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (ArithSubPart
                          anode: 
                            (ArithBinary
                              op_id: Arith_Plus
                              left: 
                                (ArithBinary
                                  op_id: Arith_Slash
                                  left: 
                                    (ArithBinary
                                      op_id: Arith_Minus
                                      left: (ArithWord w:{($ VSub_Name '$card')})
                                      right: (ArithWord w:{(Lit_Digits 1)})
                                    )
                                  right: (ArithWord w:{(Lit_Digits 13)})
                                )
                              right: (ArithWord w:{(Lit_Digits 1)})
                            )
                          spids: [454 477]
                        )
                      )
                    }
                  spids: [452]
                )
              ]
              spids: [452]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rank)
                  op: Equal
                  rhs: 
                    {
                      (DQ 
                        (ArithSubPart
                          anode: 
                            (ArithBinary
                              op_id: Arith_Percent
                              left: (ArithWord w:{($ VSub_Name '$card')})
                              right: (ArithWord w:{(Lit_Digits 13)})
                            )
                          spids: [483 491]
                        )
                      )
                    }
                  spids: [481]
                )
              ]
              spids: [481]
            )
            (Case
              to_match: {($ VSub_Name '$suit')}
              arms: [
                (case_arm
                  pat_list: [{(1)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:suit)
                          op: Equal
                          rhs: {(DQ (Hearts))}
                          spids: [507]
                        )
                      ]
                      spids: [507]
                    )
                  ]
                  spids: [503 505 512 16777215]
                )
                (case_arm
                  pat_list: [{(2)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:suit)
                          op: Equal
                          rhs: {(DQ (Clubs))}
                          spids: [519]
                        )
                      ]
                      spids: [519]
                    )
                  ]
                  spids: [515 517 524 16777215]
                )
                (case_arm
                  pat_list: [{(3)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:suit)
                          op: Equal
                          rhs: {(DQ (Spades))}
                          spids: [531]
                        )
                      ]
                      spids: [531]
                    )
                  ]
                  spids: [527 529 536 16777215]
                )
                (case_arm
                  pat_list: [{(4)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:suit)
                          op: Equal
                          rhs: {(DQ (Diamonds))}
                          spids: [543]
                        )
                      ]
                      spids: [543]
                    )
                  ]
                  spids: [539 541 548 16777215]
                )
                (case_arm
                  pat_list: [{(Lit_Other '*')}]
                  action: [
                    (Sentence
                      child: (C {(echo)} {(DQ ('Bad suit value: ') ($ VSub_Name '$suit'))})
                      terminator: <Op_Semi ';'>
                    )
                    (C {(exit)} {(1)})
                  ]
                  spids: [551 553 16777215 568]
                )
              ]
              spids: [496 500 568]
            )
            (Case
              to_match: {($ VSub_Name '$rank')}
              arms: [
                (case_arm
                  pat_list: [{(0)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rank)
                          op: Equal
                          rhs: {(DQ (King))}
                          spids: [586]
                        )
                      ]
                      spids: [586]
                    )
                  ]
                  spids: [582 584 591 16777215]
                )
                (case_arm
                  pat_list: [{(1)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rank)
                          op: Equal
                          rhs: {(DQ (Ace))}
                          spids: [598]
                        )
                      ]
                      spids: [598]
                    )
                  ]
                  spids: [594 596 603 16777215]
                )
                (case_arm
                  pat_list: [{(11)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rank)
                          op: Equal
                          rhs: {(DQ (Jack))}
                          spids: [609]
                        )
                      ]
                      spids: [609]
                    )
                  ]
                  spids: [606 607 614 16777215]
                )
                (case_arm
                  pat_list: [{(12)}]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rank)
                          op: Equal
                          rhs: {(DQ (Queen))}
                          spids: [620]
                        )
                      ]
                      spids: [620]
                    )
                  ]
                  spids: [617 618 625 16777215]
                )
              ]
              spids: [574 578 628]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cardname)
                  op: Equal
                  rhs: {(DQ ($ VSub_Name '$rank') (' of ') ($ VSub_Name '$suit'))}
                  spids: [632]
                )
              ]
              spids: [632]
            )
          ]
          spids: [384]
        )
      spids: [380 383]
    )
    (FuncDef
      name: dealCards
      body: 
        (BraceGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:card1)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name newdeck>
                        bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                        spids: [656 661]
                      )
                    }
                  spids: [655]
                )
              ]
              spids: [655]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:card2)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name newdeck>
                        bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)}))
                        spids: [668 673]
                      )
                    }
                  spids: [667]
                )
              ]
              spids: [667]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:card3)
                  op: Equal
                  rhs: 
                    {
                      (BracedVarSub
                        token: <VSub_Name newdeck>
                        bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 3)}))
                        spids: [680 685]
                      )
                    }
                  spids: [679]
                )
              ]
              spids: [679]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rank1)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Percent
                            left: 
                              (ArithWord
                                w: 
                                  {
                                    (BracedVarSub
                                      token: <VSub_Name newdeck>
                                      bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)}))
                                      spids: [695 700]
                                    )
                                  }
                              )
                            right: (ArithWord w:{(Lit_Digits 13)})
                          )
                        spids: [693 707]
                      )
                    }
                  spids: [692]
                )
              ]
              spids: [692]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rank2)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Percent
                            left: 
                              (ArithWord
                                w: 
                                  {
                                    (BracedVarSub
                                      token: <VSub_Name newdeck>
                                      bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)}))
                                      spids: [716 721]
                                    )
                                  }
                              )
                            right: (ArithWord w:{(Lit_Digits 13)})
                          )
                        spids: [714 728]
                      )
                    }
                  spids: [713]
                )
              ]
              spids: [713]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:rank3)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Percent
                            left: 
                              (ArithWord
                                w: 
                                  {
                                    (BracedVarSub
                                      token: <VSub_Name newdeck>
                                      bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 3)}))
                                      spids: [737 742]
                                    )
                                  }
                              )
                            right: (ArithWord w:{(Lit_Digits 13)})
                          )
                        spids: [735 749]
                      )
                    }
                  spids: [734]
                )
              ]
              spids: [734]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$rank1')} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:rank1)
                              op: Equal
                              rhs: {(13)}
                              spids: [779]
                            )
                          ]
                          spids: [779]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 776]
                )
              ]
              spids: [16777215 784]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$rank2')} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:rank2)
                              op: Equal
                              rhs: {(13)}
                              spids: [804]
                            )
                          ]
                          spids: [804]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 801]
                )
              ]
              spids: [16777215 809]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$rank3')} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:rank3)
                              op: Equal
                              rhs: {(13)}
                              spids: [829]
                            )
                          ]
                          spids: [829]
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  spids: [16777215 826]
                )
              ]
              spids: [16777215 834]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$rank1')} {(-gt)} {($ VSub_Name '$rank2')} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:temp)
                              op: Equal
                              rhs: {($ VSub_Name '$card1')}
                              spids: [860]
                            )
                          ]
                          spids: [860]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:card1)
                              op: Equal
                              rhs: {($ VSub_Name '$card2')}
                              spids: [864]
                            )
                          ]
                          spids: [864]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:card2)
                          op: Equal
                          rhs: {($ VSub_Name '$temp')}
                          spids: [868]
                        )
                      ]
                      spids: [868]
                    )
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:temp)
                              op: Equal
                              rhs: {($ VSub_Name '$rank1')}
                              spids: [872]
                            )
                          ]
                          spids: [872]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Sentence
                      child: 
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:rank1)
                              op: Equal
                              rhs: {($ VSub_Name '$rank2')}
                              spids: [876]
                            )
                          ]
                          spids: [876]
                        )
                      terminator: <Op_Semi ';'>
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:rank2)
                          op: Equal
                          rhs: {($ VSub_Name '$temp')}
                          spids: [880]
                        )
                      ]
                      spids: [880]
                    )
                  ]
                  spids: [16777215 857]
                )
              ]
              spids: [16777215 884]
            )
            (Sentence
              child: (C {(showCard)} {($ VSub_Name '$card1')})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cardname1)
                  op: Equal
                  rhs: {($ VSub_Name '$cardname')}
                  spids: [894]
                )
              ]
              spids: [894]
            )
            (Sentence
              child: (C {(showCard)} {($ VSub_Name '$card2')})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cardname2)
                  op: Equal
                  rhs: {($ VSub_Name '$cardname')}
                  spids: [904]
                )
              ]
              spids: [904]
            )
            (Sentence
              child: (C {(showCard)} {($ VSub_Name '$card3')})
              terminator: <Op_Semi ';'>
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:cardname3)
                  op: Equal
                  rhs: {($ VSub_Name '$cardname')}
                  spids: [915]
                )
              ]
              spids: [915]
            )
            (Sentence child:(C {(echo)} {(DQ ("I've dealt:"))}) terminator:<Op_Semi ';'>)
            (Sentence
              child: (C {(echo)} {(DQ ('   ') ($ VSub_Name '$cardname1'))})
              terminator: <Op_Semi ';'>
            )
            (C {(echo)} {(DQ ('   ') ($ VSub_Name '$cardname2'))})
          ]
          spids: [647]
        )
      spids: [642 645]
    )
    (FuncDef
      name: introblurb
      body: 
        (BraceGroup
          children: [
            (SimpleCommand
              words: [{(cat)}]
              redirects: [
                (HereDoc
                  op_id: Redir_DLess
                  fd: 16777215
                  body: 
                    {
                      (DQ ('\n') 
                        (
'Welcome to Acey Deucey. The goal of this game is for you to correctly guess\n'
                        ) ("whether the third card is going to be between the two cards I'll pull from\n") 
                        (
"the deck. For example, if I flip up a 5 of hearts and a jack of diamonds, you'd bet on whether the next card will have a higher rank than a 5 AND a lower rank than a jack (e.g., a 6, 7, 8, 9, or 10 of any suit).\n"
                        ) ('\n') ("Ready? Let's go!\n") ('\n')
                      )
                    }
                  do_expansion: True
                  here_end: EOF
                  was_filled: True
                  spids: [959]
                )
              ]
            )
          ]
          spids: [955]
        )
      spids: [951 954]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:games) op:Equal rhs:{(0)} spids:[981])]
      spids: [981]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:won) op:Equal rhs:{(0)} spids:[984])]
      spids: [984]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (Sentence
              child: (C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-gt)} {(0)} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(introblurb)})]
          spids: [16777215 1002]
        )
      ]
      spids: [16777215 1010]
    )
    (While
      cond: [
        (Sentence
          child: (C {(Lit_Other '[')} {(/bin/true)} {(Lit_Other ']')})
          terminator: <Op_Semi ';'>
        )
      ]
      body: 
        (DoGroup
          children: [
            (C {(initializeDeck)})
            (C {(shuffleDeck)})
            (C {(dealCards)})
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:splitValue)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Minus
                            left: (ArithWord w:{($ VSub_Name '$rank2')})
                            right: (ArithWord w:{($ VSub_Name '$rank1')})
                          )
                        spids: [1043 1052]
                      )
                    }
                  spids: [1042]
                )
              ]
              spids: [1042]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$splitValue')} {(-eq)} {(0)} {(Lit_Other ']')})
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ("No point in betting when they're the same rank!"))})
                    (ControlFlow token:<ControlFlow_Continue continue>)
                  ]
                  spids: [16777215 1070]
                )
              ]
              spids: [16777215 1083]
            )
            (C {(/bin/echo)} {(-n)} 
              {
                (DQ ('The spread is ') ($ VSub_Name '$splitValue') 
                  ('. Do you think the next card will ')
                )
              }
            )
            (C {(/bin/echo)} {(-n)} {(DQ ('be between them? (y/n/q) '))})
            (C {(read)} {(answer)})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$answer'))} {(Lit_Other '=')} {(DQ (q))} 
                          {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ )})
                    (C {(echo)} 
                      {
                        (DQ ('You played ') ($ VSub_Name '$games') (' games and won ') 
                          ($ VSub_Name '$won') (' times.')
                        )
                      }
                    )
                    (C {(exit)} {(0)})
                  ]
                  spids: [16777215 1131]
                )
              ]
              spids: [16777215 1156]
            )
            (C {(echo)} {(DQ ('I picked: ') ($ VSub_Name '$cardname3'))})
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$rank3')} {(-gt)} {($ VSub_Name '$rank1')} 
                          {(-a)} {($ VSub_Name '$rank3')} {(-lt)} {($ VSub_Name '$rank2')} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (Assignment
                      keyword: Assign_None
                      pairs: [(assign_pair lhs:(LhsName name:winner) op:Equal rhs:{(1)} spids:[1203])]
                      spids: [1203]
                    )
                  ]
                  spids: [16777215 1197]
                )
              ]
              else_action: [
                (Assignment
                  keyword: Assign_None
                  pairs: [(assign_pair lhs:(LhsName name:winner) op:Equal rhs:{(0)} spids:[1210])]
                  spids: [1210]
                )
              ]
              spids: [1207 1214]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$winner')} {(-eq)} {(1)} {(-a)} 
                          {(DQ ($ VSub_Name '$answer'))} {(Lit_Other '=')} {(DQ (y))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('You bet that it would be between the two, and it is. WIN!'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:won)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$won')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [1256 1265]
                              )
                            }
                          spids: [1255]
                        )
                      ]
                      spids: [1255]
                    )
                  ]
                  spids: [16777215 1245]
                )
                (if_arm
                  cond: [
                    (Sentence
                      child: 
                        (C {(Lit_Other '[')} {($ VSub_Name '$winner')} {(-eq)} {(0)} {(-a)} 
                          {(DQ ($ VSub_Name '$answer'))} {(Lit_Other '=')} {(DQ (n))} {(Lit_Other ']')}
                        )
                      terminator: <Op_Semi ';'>
                    )
                  ]
                  action: [
                    (C {(echo)} 
                      {(DQ ("You bet that it would not be between the two, and it isn't. WIN!"))}
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:won)
                          op: Equal
                          rhs: 
                            {
                              (ArithSubPart
                                anode: 
                                  (ArithBinary
                                    op_id: Arith_Plus
                                    left: (ArithWord w:{($ VSub_Name '$won')})
                                    right: (ArithWord w:{(Lit_Digits 1)})
                                  )
                                spids: [1305 1314]
                              )
                            }
                          spids: [1304]
                        )
                      ]
                      spids: [1304]
                    )
                  ]
                  spids: [1268 1294]
                )
              ]
              else_action: [(C {(echo)} {(DQ ('Bad betting strategy. You lose.'))})]
              spids: [1317 1327]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:games)
                  op: Equal
                  rhs: 
                    {
                      (ArithSubPart
                        anode: 
                          (ArithBinary
                            op_id: Arith_Plus
                            left: (ArithWord w:{($ VSub_Name '$games')})
                            right: (ArithWord w:{(Lit_Digits 1)})
                          )
                        spids: [1332 1341]
                      )
                    }
                  spids: [1331]
                )
              ]
              spids: [1331]
            )
          ]
          spids: [1023 1346]
        )
    )
    (C {(exit)} {(0)})
  ]
)