-,+[                        Read first character and start outer character reading loop
   -[                       Skip forward if character is 0
       >>++++[>++++++++<-]  Set up divisor (32) for division loop
                              (MEMORY LAYOUT: dividend copy remainder divisor quotient zero zero)
       <+<-[                Set up dividend (x minus 1) and enter division loop
           >+>+>-[>>>]      Increase copy and remainder / reduce divisor / Normal case: skip forward
           <[[>+<-]>>+>]    Special case: move remainder back to divisor and increase quotient
           <<<<<-           Decrement dividend
       ]                    End division loop
   ]>>>[-]+                 End skip loop; zero former divisor and reuse space for a flag
   >--[-[<->+++[-]]]<[         Zero that flag unless quotient was 2 or 3; zero quotient; check flag
       ++++++++++++<[       If flag then set up divisor (13) for second division loop
                              (MEMORY LAYOUT: zero copy dividend divisor remainder quotient zero zero)
           >-[>+>>]         Reduce divisor; Normal case: increase remainder
           >[+[<+>-]>+>>]   Special case: increase remainder / move it back to divisor / increase quotient
           <<<<<-           Decrease dividend
       ]                    End division loop
       >>[<+>-]             Add remainder back to divisor to get a useful 13
       >[                   Skip forward if quotient was 0
           -[               Decrement quotient and skip forward if quotient was 1
               -<<[-]>>     Zero quotient and divisor if quotient was 2
           ]<<[<<->>-]>>    Zero divisor and subtract 13 from copy if quotient was 1
       ]<<[<<+>>-]          Zero divisor and add 13 to copy if quotient was 0
   ]                        End outer skip loop (jump to here if ((character minus 1)/32) was not 2 or 3)
   <[-]                     Clear remainder from first division if second division was skipped
   <.[-]                    Output ROT13ed character from copy and clear it
   <-,+                     Read next character
]                           End character reading loop
