$ od -c -N 50000 [eris]<LispCore>GC>LispDMC.DM!2
0000000  377  \0  \0   L   B   I   T   B   L   T   .   m   c  \0 373 234
0000020    @ 236 273  \0  \0 376 001  \0 211   {   T   i   t   l   e   [
0000040    L   B   I   T   B   L   T   ]   ;  \r   *  \r   *       E   d
0000060    i   t       H   i   s   t   o   r   y  \r   *       J   a   n
0000100    u   a   r   y       2   6   ,       1   9   8   4           8
0000120    :   1   6       P   M   ,       J   o   n   L   ,       I   n
0000140    s   t   a   l   l   e   d       t   a   g       B   B   X   i
0000160    t   T   o   C   o   n   t   i   n   u   e   ,       f   o   r
0000200        b   e   n   e   f   i   t      \r   *  \t  \t   o   f    
0000220    o   p   B   L   T       (   l   i   k   e       I       t   h
0000240    o   u   g   h   t       I       h   a   d       d   o   n   e
0000260        t   h   e       o   t   h   e   r       d   a   y   !   )
0000300   \r   *       J   a   n   u   a   r   y       2   3   ,       1
0000320    9   8   4           8   :   5   6       P   M   ,       J   o
0000340    n   L   ,       a   s   s   u   r   e       P   S   .   P   F
0000360    O   K       o   n       i   n       P   S   T   A   T   E   ,
0000400        a   n   d  \r   *  \t  \t   m   e   r   g   e       S   t
0000420    k   P   _       T           i   n   s 376 001  \0 235   |   t
0000440        w   i   t   h       n   e   x   t       o   n   e   .  \r
0000460    *       D   e   c   e   m   b   e   r       7   ,       1   9
0000500    8   2           1   :   1   1       P   M   ,       M   a   s
0000520    i   n   t   e   r  \r  \r               I   n   s   S   e   t
0000540    [   L   i   s   p   I   n   s   S   e   t   ,       1   ]   ;
0000560   \r  \r   r   e   g   O   P   1   [   1   6   6   ,       S   t
0000600    a   c   k   B   R   ,       o   p   B   I   T   B   L   T   ,
0000620        n   o   N   D   a   t   a   ]   ;  \r   *           d   u
0000640    m   m   y       d   e   f   i   n   i   t   i   o   n       f
0000660    o   r       a   l   t   o       b   i   t   b   l   t   :  \r
0000700   \r   B   i   t   B   l   t   S   u   b   :  \t   *       E   n
0000720    t   r   y       p   o   i   n   t  \r   S   u   b   r   o   u
0000740    t   i   n   e   ;  \r  \t   S   t   a   c   k   _       A   0
0000760    ;  \r  \t   R   E   T   U   R   N   [   a   l   u   =   0   ]
0001000    ;  \r  \r  \r               K   n   o   w   R   B   a   s   e
0001020    [   L   T   E   M   P   0   ]   ;  \r               T   O 376
0001040  001  \0   < 305   P       L   E   V   E   L   ;  \r  \r  \f  \r
0001060   \r   *       R   e   f   e   r       t   o       t   h   e    
0001100    P   r   i   n   c   O   p   s       f   o   r       p   r   i
0001120    m   a   r   y       d   o   c   u   m   e   n   t   a   t   i
0001140    o   n   .  \r   *       A   l   l       n   u   m   b   e   r
0001160    s       a   r   e       o   c   t   a   l       e   x   c   e
0001200    p   t       t   i   m   i   n   g   s   ,       w   h   i   c
0001220    h       a   r   e       d   e   c   i   m   a   l   .  \r  \r
0001240    *       D   a   t   a       s   t   r   u   c   t   u   r   e
0001260    s   :  \r  \r   *       B   i   t   B   l   t   A   r   g   :
0001300        T   Y   P   E       =       M   A   C   H   I   N   E    
0001320    D   E   P   E   N   D   E   N   T       R   E   C   O   R   D
0001340        [  \r   M   S   C   [   B   B   .   d   s   t   L   o   ,
0001360        0   ]   ;  \t  \t   *       d   s   t   :       B   i   t
0001400    A   d   d   r   e   s   s   ,  \r   M   S   C   [   B   B   .
0001420    d   s   t   H   i   ,       1   ]   ;  \r   M   S   C   [   B
0001440    B   .   d   s 376 001  \0  \n   N   t   B   i   t   ,       2
0001460    ]   ;  \r   M   S   C   [   B   B   .   d   s   t   B   p   l
0001500    ,       3   ]   ;  \t  \t   *       d   s   t   B   p   l   :
0001520        I   N   T   E   G   E   R   ,  \r   M   S   C   [   B   B
0001540    .   s   r   c   L   o   ,       4   ]   ;  \t  \t   *       s
0001560    r   c   :       B   i   t   A   d   d   r   e   s   s   ,  \r
0001600    M   S   C   [   B   B   .   s   r   c   H   i   ,       5   ]
0001620    ;  \r   M   S   C   [   B   B   .   s   r   c   B   i   t   ,
0001640        6   ]   ;  \r   M   S   C   [   B   B   .   s   r   c   B
0001660    p   l   ,       7   ]   ;  \t  \t   *       s   r   c   B   p
0001700    l   :       I   N   T   E   G   E   R   ,  \r   M   S   C   [
0001720    B   B   .   w   i   d   t   h   ,       1   0   ]   ;  \t  \t
0001740    *       w   i   d   t   h   :       C   A   R   D   I   N   A
0001760    L   ,  \r   M   S   C   [   B   B   .   h   e   i   g   h   t
0002000    ,       1   1   ]   ;  \t  \t   *       h   e   i   g   h   t
0002020    :       C   A   R   D   I   N   A   L   ,  \r   M   S   C   [
0002040    B   B   .   f   l   a   g   s   , 376 001  \0 370 330       1
0002060    2   ]   ;  \t  \t   *       f   l   a   g   s   :       B   i
0002100    t   B   l   t   F   l   a   g   s       ]   ;  \r  \r   *    
0002120    B   i   t   A   d   d   r   e   s   s   :       T   Y   P   E
0002140        =       M   A   C   H   I   N   E       D   E   P   E   N
0002160    D   E   N   T       R   E   C   O   R   D       [  \r   *  \t
0002200    w   o   r   d   :       L   O   N   G       P   O   I   N   T
0002220    E   R   ,  \r   *  \t   r   e   s   e   r   v   e   d   :    
0002240    [   0   .   .   7   7   7   7   B   ]   ,  \r   *  \t   b   i
0002260    t   :       [   0   .   .   1   7   B   ]       ]   ;  \r  \r
0002300    *       B   i   t   B   l   t   F   l   a   g   s   :       T
0002320    Y   P   E       =       M   A   C   H   I   N   E       D   E
0002340    P   E   N   D   E   N   T       R   E   C   O   R   D       [
0002360   \r   M   C   [   B   B   F   .   d   i   r   e   c   t   i   o
0002400    n   ,       1   0   0   0   0   0   ]   ;  \t   *       d   i
0002420    r   e   c   t   i   o   n   :       {   f   o   r   w   a   r
0002440    d   ,       b   a   c   k   w   a   r   d   }   ,  \r 376 001
0002460   \0   h 366   M   C   [   B   B   F   .   d   i   s   j   o   i
0002500    n   t   ,       4   0   0   0   0   ]   ;  \t   *       d   i
0002520    s   j   o   i   n   t   :       B   O   O   L   E   A   N   ,
0002540   \r   M   C   [   B   B   F   .   d   i   s   j   o   i   n   t
0002560    I   t   e   m   s   ,       2   0   0   0   0   ]   ;  \t   *
0002600        d   i   s   j   o   i   n   t   I   t   e   m   s   :    
0002620    B   O   O   L   E   A   N   ,  \r   M   C   [   B   B   F   .
0002640    g   r   a   y   ,       1   0   0   0   0   ]   ;  \t  \t   *
0002660        g   r   a   y   :       B   O   O   L   E   A   N   ,  \r
0002700    M   C   [   B   B   F   .   s   r   c   F   u   n   c   ,    
0002720    4   0   0   0   ]   ;  \t  \t   *       s   r   c   F   u   n
0002740    c   :       {   n   o   r   m   a   l   ,       c   o   m   p
0002760    l   e   m   e   n   t   }   ,  \r   M   C   [   B   B   F   .
0003000    d   s   t   F   u   n   c   ,       3   0   0   0   ]   ;  \t
0003020   \t   *       d   s   t   F   u   n   c   :       {   n   u   l
0003040    l   ,       a   n   d   ,       o   r   ,       x   o   r   }
0003060    ,  \r  \t 376 001  \0   <   /  \t  \t  \t   *       r   e   s
0003100    e   r   v   e   d   :       [   0   .   .   7   7   7   B   ]
0003120        _       0       ]   ;  \r  \r   *       -   -       r   e
0003140    -   i   n   t   e   r   p   r   e   t   a   t   i   o   n    
0003160    o   f       s   r   c   B   p   l       i   f       g   r   a
0003200    y       =       T   R   U   E  \r   *       G   r   a   y   P
0003220    a   r   m   :       T   Y   P   E       =       M   A   C   H
0003240    I   N   E       D   E   P   E   N   D   E   N   T       R   E
0003260    C   O   R   D       [  \r   *  \t   r   e   s   e   r   v   e
0003300    d   :       [   0   .   .   1   7   B   ]       _       0   ,
0003320   \r   *  \t   y   O   f   f   s   e   t   :       [   0   .   .
0003340    1   7   B   ]   ,  \r   *  \t   w   i   d   t   h   M   i   n
0003360    u   s   O   n   e   :       [   0   .   .   1   7   B   ]    
0003400    _       0   ,  \t   -   -       p   r   e   s   e   n   t    
0003420    s   p   e   c       r   e   q   u   i   r   e   s       0  \r
0003440    *  \t   h   e   i   g   h   t   M   i   n   u   s   O   n   e
0003460    :       [   0   .   .   1   7 376 001  \0   ]   z   B   ]    
0003500    ]   ;  \r  \f  \r   %  \r   T   h   e       2   0       B   i
0003520    t   B   l   t       F   u   n   c   t   i   o   n   s       (
0003540    c   o   m   b   i   n   a   t   i   o   n   s       o   f    
0003560    g   r   a   y   ,       s   r   c   F   u   n   c   ,       a
0003600    n   d       d   s   t   F   u   n   c   )       a   r   e  \r
0003620    d   i   v   i   d   e   d       i   n   t   o       4       c
0003640    l   a   s   s   e   s   :  \r  \t   A  \t   d   e   s   t    
0003660    _       f   (   g   r   a   y   )  \r  \t   B  \t   d   e   s
0003700    t       _       f   (   g   r   a   y   ,       d   e   s   t
0003720    )  \r  \t   C  \t   d   e   s   t       _       f   (   s   o
0003740    u   r   c   e   )  \r  \t   D  \t   d   e   s   t       _    
0003760    f   (   s   o   u   r   c   e   ,       d   e   s   t   )  \r
0004000   \r   T   h   e       d   i   s   t   r   i   b   u   t   i   o
0004020    n       o   f       f   u   n   c   t   i   o   n   s       i
0004040    n   t   o       c   l   a   s   s   e   s       i   s   :  \r
0004060                    F   u   n   c   t   i   o   n     376 001  \0
0004100  035   O   (   c   l   a   s   s   )  \t   g   r   a   y  \t   s
0004120    r   c   F   u   n   c  \t  \t   d   s   t   F   u   n   c  \r
0004140   \t       0       (   C   )  \t  \t   F   A   L   S   E  \t   n
0004160    o   r   m   a   l  \t  \t   n   u   l   l  \r  \t       1    
0004200    (   D   )  \t  \t   F   A   L   S   E  \t   n   o   r   m   a
0004220    l  \t  \t   a   n   d  \r  \t       2       (   D   )  \t  \t
0004240    F   A   L   S   E  \t   n   o   r   m   a   l  \t  \t   o   r
0004260   \r  \t       3       (   D   )  \t  \t   F   A   L   S   E  \t
0004300    n   o   r   m   a   l  \t  \t   x   o   r  \r  \t       4    
0004320    (   C   )  \t  \t   F   A   L   S   E  \t   c   o   m   p   l
0004340    e   m   e   n   t  \t   n   u   l   l  \r  \t       5       (
0004360    D   )  \t  \t   F   A   L   S   E  \t   c   o   m   p   l   e
0004400    m   e   n   t  \t   a   n   d  \r  \t       6       (   D   )
0004420   \t  \t   F   A   L   S   E  \t   c   o   m   p   l   e   m   e
0004440    n   t  \t   o   r  \r  \t       7       (   D   )  \t  \t   F
0004460    A   L   S   E  \t   c   o   m   p   l   e   m   e   n   t  \t
0004500    x   o 376 001  \0 350 351   r  \r  \t   1   0       (   A   )
0004520   \t  \t   T   R   U   E  \t   n   o   r   m   a   l  \t  \t   n
0004540    u   l   l  \r  \t   1   1       (   B   )  \t  \t   T   R   U
0004560    E  \t   n   o   r   m   a   l  \t  \t   a   n   d  \r  \t   1
0004600    2       (   B   )  \t  \t   T   R   U   E  \t   n   o   r   m
0004620    a   l  \t  \t   o   r  \r  \t   1   3       (   B   )  \t  \t
0004640    T   R   U   E  \t   n   o   r   m   a   l  \t  \t   x   o   r
0004660   \r  \t   1   4       (   A   )  \t  \t   T   R   U   E  \t   c
0004700    o   m   p   l   e   m   e   n   t  \t   n   u   l   l  \r  \t
0004720    1   5       (   B   )  \t  \t   T   R   U   E  \t   c   o   m
0004740    p   l   e   m   e   n   t  \t   a   n   d  \r  \t   1   6    
0004760    (   B   )  \t  \t   T   R   U   E  \t   c   o   m   p   l   e
0005000    m   e   n   t  \t   o   r  \r  \t   1   7       (   B   )  \t
0005020   \t   T   R   U   E  \t   c   o   m   p   l   e   m   e   n   t
0005040   \t   x   o   r  \r  \r  \r   T   e   r   m   i   n   o   l   o
0005060    g   y   :       w   h   e   n       r   e   f   e   r   r   i
0005100    n   g       t   o       w 376 001  \0 262 336   o   r   d   s
0005120        i   n       a       s   c   a   n       l   i   n   e   ,
0005140        "   l   e   f   t   "       a   n   d       "   r   i   g
0005160    h   t   "  \r   r   e   f   e   r       t   o       t   h   e
0005200        w   o   r   d   s       w   i   t   h       l   o   w   e
0005220    r       a   n   d       h   i   g   h   e   r       a   d   d
0005240    r   e   s   s   e   s   ,       r   e   s   p   e   c   t   i
0005260    v   e   l   y   ,       i   n   d   e   p   e   n   d   e   n
0005300    t  \r   o   f       t   h   e       d   i   r   e   c   t   i
0005320    o   n       o   f       p   r   o   c   e   s   s   i   n   g
0005340        t   h   e       s   c   a   n       l   i   n   e   ;    
0005360        "   f   i   r   s   t   "       a   n   d       "   l   a
0005400    s   t   "       r   e   f   e   r  \r   t   o       t   h   e
0005420        f   i   r   s   t       a   n   d       l   a   s   t    
0005440    w   o   r   d   s       e   n   c   o   u   n   t   e   r   e
0005460    d       i   n       t   h   e       d   i   r   e   c   t   i
0005500    o   n       o   f       p   r   o   c   e   s 376 001  \0 005
0005520  257   s   i   n   g   .  \r  \r   S   i   n   c   e       t   h
0005540    e       D   o   r   a   d   o       c   a   n       d   o    
0005560    B   i   t   B   l   t       i   n       e   i   t   h   e   r
0005600        d   i   r   e   c   t   i   o   n       a   t       e   q
0005620    u   a   l       c   o   s   t   ,  \r   t   h   i   s       i
0005640    m   p   l   e   m   e   n   t   a   t   i   o   n       a   l
0005660    w   a   y   s       u   s   e   s       t   h   e       d   i
0005700    r   e   c   t   i   o   n       s   p   e   c   i   f   i   e
0005720    d       b   y       t   h   e       p   r   o   g   r   a   m
0005740    m   e   r   .  \r   T   h   e       d   i   s   j   o   i   n
0005760    t       b   i   t       i   s       i   g   n   o   r   e   d
0006000    ,       a   n   d       d   i   s   j   o   i   n   t   I   t
0006020    e   m   s       i   s       u   s   e   d       o   n   l   y
0006040        t   o       d   e   t   e   r   m   i   n   e  \r   w   h
0006060    e   t   h   e   r       o   r       n   o   t       "   t   o
0006100    u   c   h   i   n   g   "       o   f       t   h   e       d
0006120    a 376 001  \0 256 254   t   a       i   s       r   e   q   u
0006140    i   r   e   d       i   n       s   o   m   e       c   a   s
0006160    e   s       (   s   e   e       b   e   l   o   w   )   .  \r
0006200   \r   T   h   e       d   e   s   t   i   n   a   t   i   o   n
0006220        i   t   e   m       i   s       c   o   n   s   i   d   e
0006240    r   e   d       t   o       c   o   n   s   i   s   t       o
0006260    f       a       l   e   f   t       p   a   r   t   i   a   l
0006300        w   o   r   d   ,  \r   s   o   m   e       n   u   m   b
0006320    e   r       o   f       f   u   l   l       (   b   o   d   y
0006340    )       w   o   r   d   s   ,       a   n   d       a       r
0006360    i   g   h   t       p   a   r   t   i   a   l       w   o   r
0006400    d   .           I   f       t   h   e       i   t   e   m  \r
0006420    b   e   g   i   n   s       o   r       e   n   d   s       o
0006440    n       a       w   o   r   d       b   o   u   n   d   a   r
0006460    y   ,       t   h   e       l   e   f   t       o   r       r
0006500    i   g   h   t       w   o   r   d       i   s       s   t   i
0006520    l   l  \r   c   o   n 376 001  \0 225 204   s   i   d   e   r
0006540    e   d       t   o       b   e       a       p   a   r   t   i
0006560    a   l       w   o   r   d   .  \r  \r   T   h   e       d   e
0006600    s   t   i   n   a   t   i   o   n       b   i   t   s       p
0006620    r   e   s   e   r   v   e   d       i   n       t   h   e    
0006640    l   e   f   t       a   n   d       r   i   g   h   t       p
0006660    a   r   t   i   a   l       w   o   r   d   s  \r   a   r   e
0006700        d   e   t   e   r   m   i   n   e   d       b   y       t
0006720    h   e       S   H   C       r   e   g   i   s   t   e   r   '
0006740    s       L   M   a   s   k       a   n   d       R   M   a   s
0006760    k   ,       r   e   s   p   e   c   t   i   v   e   l   y   ,
0007000   \r   w   h   e   r   e       L   M   a   s   k       =       d
0007020    s   t   .   b   i   t   ,       R   M   a   s   k       =    
0007040    1   7   -   (   (   d   s   t   .   b   i   t   +   w   i   d
0007060    t   h   -   1   )       m   o   d       2   0   )   .  \r  \r
0007100    T   h   e       d   e   s   t   i   n   a   t   i   o   n    
0007120    w   i   d   t   h       i   n       w   o 376 001  \0 345 254
0007140    r   d   s   ,       i   n   c   l   u   d   i   n   g       t
0007160    h   e       f   i   r   s   t       a   n   d       l   a   s
0007200    t       p   a   r   t   i   a   l       w   o   r   d   s   ,
0007220   \r   i   s       c   o   m   p   u   t   e   d       b   y    
0007240    D   W   i   d   t   h       =       (   w   i   d   t   h    
0007260    +       d   s   t   .   b   i   t       +       1   7   )   /
0007300    2   0   .           S   i   m   i   l   a   r   l   y   ,  \r
0007320    t   h   e       s   o   u   r   c   e       w   i   d   t   h
0007340        i   n       w   o   r   d   s   ,       i   n   c   l   u
0007360    d   i   n   g       t   h   e       f   i   r   s   t       a
0007400    n   d       l   a   s   t       p   a   r   t   i   a   l    
0007420    w   o   r   d   s   ,  \r   i   s       c   o   m   p   u   t
0007440    e   d       b   y       S   W   i   d   t   h       =       (
0007460    w   i   d   t   h       +       s   r   c   .   b   i   t    
0007500    +       1   7   )   /   2   0   .  \r   D   W   i   d   t   h
0007520        a   n   d       S   W   i   d   t   h       d   i   f   f
0007540  376 001  \0   B 347   e   r       b   y       a   t       m   o
0007560    s   t       +   /   -   1   .  \r  \r   I   f       D   W   i
0007600    d   t   h       >       2       t   h   e   n       t   h   e
0007620        d   e   s   t   i   n   a   t   i   o   n       c   o   n
0007640    s   i   s   t   s       o   f       a       l   e   f   t    
0007660    p   a   r   t   i   a   l       w   o   r   d   ,       D   W
0007700    i   d   t   h   -   2  \r   f   u   l   l       b   o   d   y
0007720        w   o   r   d   s   ,       a   n   d       a       r   i
0007740    g   h   t       p   a   r   t   i   a   l       w   o   r   d
0007760    .  \r   I   f       D   W   i   d   t   h       =       2    
0010000    t   h   e   n       t   h   e       i   t   e   m       c   o
0010020    n   s   i   s   t   s       o   f       a       l   e   f   t
0010040        p   a   r   t   i   a   l       w   o   r   d       i   m
0010060    m   e   d   i   a   t   e   l   y  \r   f   o   l   l   o   w
0010100    e   d       b   y       a       r   i   g   h   t       p   a
0010120    r   t   i   a   l       w   o   r   d   .  \r   I   f       D
0010140    W   i   d   t   h 376 001  \0 250   E       =       1       t
0010160    h   e   n       t   h   e       e   n   t   i   r   e       d
0010200    e   s   t   i   n   a   t   i   o   n       i   t   e   m    
0010220    l   i   e   s       w   i   t   h   i   n       a       s   i
0010240    n   g   l   e       w   o   r   d   ,  \r   n   o   t       c
0010260    r   o   s   s   i   n   g       a       w   o   r   d       b
0010300    o   u   n   d   a   r   y   .           E   f   f   e   c   t
0010320    i   v   e   l   y   ,       t   h   e       l   e   f   t    
0010340    a   n   d       r   i   g   h   t       p   a   r   t   i   a
0010360    l       w   o   r   d   s  \r   a   r   e       o   n   e    
0010400    a   n   d       t   h   e       s   a   m   e   .           T
0010420    h   i   s       c   a   s   e       (   c   a   l   l   e   d
0010440        t   h   e       "   t   h   i   n   "       c   a   s   e
0010460    )       r   e   q   u   i   r   e   s  \r   s   p   e   c   i
0010500    a   l       h   a   n   d   l   i   n   g   ,       a   s    
0010520    b   o   t   h       L   M   a   s   k       a   n   d       R
0010540    M   a   s   k       m   u   s   t     376 001  \0   6 277   b
0010560    e       a   p   p   l   i   e   d       s   i   m   u   l   t
0010600    a   n   e   o   u   s   l   y   .  \r  \f  \r   P   r   o   c
0010620    e   s   s   i   n   g       o   f       t   h   e       s   c
0010640    a   n       l   i   n   e       i   s       c   o   n   t   r
0010660    o   l   l   e   d       b   y       t   w   o       c   o   u
0010700    n   t   e   r   s   :       t   h   e       C   n   t       r
0010720    e   g   i   s   t   e   r  \r   (   l   o   a   d   e   d    
0010740    f   r   o   m       I   C   n   t   )   ,       w   h   i   c
0010760    h       c   o   u   n   t   s       t   h   e       i   n   n
0011000    e   r       l   o   o   p       (   2   0       w   o   r   d
0011020    s       o   r       f   e   w   e   r   )   ,       a   n   d
0011040   \r   M   C   o   u   n   t   ,       w   h   i   c   h       c
0011060    o   u   n   t   s       t   h   e       o   u   t   e   r    
0011100    l   o   o   p   .           R   o   u   g   h   l   y       s
0011120    p   e   a   k   i   n   g   ,  \r   C   n   t       i   s    
0011140    l   o   a   d   e   d       i   n   i   t   i   a   l   l 376
0011160  001  \0 312   L   y       w   i   t   h       D   W   i   d   t
0011200    h       m   o   d       2   0       a   n   d       M   C   o
0011220    u   n   t       w   i   t   h       D   W   i   d   t   h   /
0011240    2   0   .  \r   T   h   e       i   n   n   e   r       l   o
0011260    o   p       i   s       e   x   e   c   u   t   e   d       C
0011300    n   t       t   i   m   e   s   ;       t   h   e   n   ,    
0011320    u   n   t   i   l       M   C   o   u   n   t       i   s    
0011340    e   x   h   a   u   s   t   e   d   ,  \r   C   n   t       i
0011360    s       r   e   l   o   a   d   e   d       w   i   t   h    
0011400    2   0       a   n   d       t   h   e       i   n   n   e   r
0011420        l   o   o   p       i   s       e   x   e   c   u   t   e
0011440    d       2   0       m   o   r   e       t   i   m   e   s   .
0011460   \r   T   h   e       r   e   a   s   o   n       f   o   r    
0011500    t   h   i   s       a   r   r   a   n   g   e   m   e   n   t
0011520        i   s       t   o       p   e   r   m   i   t       a    
0011540    P   r   e   F   e   t   c   h       t   o       b   e       e
0011560    x   e   c   u 376 001  \0 214 372   t   e   d  \r   e   v   e
0011600    r   y       2   0       w   o   r   d   s   .  \r  \r   M   o
0011620    r   e       p   r   e   c   i   s   e   l   y   :       B   e
0011640    f   o   r   e       e   a   c   h       h   o   r   i   z   o
0011660    n   t   a   l       l   o   o   p   ,       t   h   e       C
0011700    n   t       r   e   g   i   s   t   e   r       i   s       l
0011720    o   a   d   e   d       w   i   t   h  \r           i   f    
0011740    D   W   i   d   t   h       <       2   3       t   h   e   n
0011760        D   W   i   d   t   h   -   1       e   l   s   e       (
0012000    D   W   i   d   t   h   -   3   )       m   o   d       2   0
0012020        +   2   ,       s   o   :  \r  \t   C   n   t       >    
0012040    1       i   f       t   h   e       b   o   d   y       c   o
0012060    n   t   a   i   n   s       o   n   e       o   r       m   o
0012100    r   e       w   o   r   d   s   .  \r  \t   C   n   t       =
0012120        1       i   f       t   h   e   r   e       a   r   e    
0012140    n   o       b   o   d   y       w   o   r   d   s   .  \r  \t
0012160    C   n   t       =       0       i 376 001  \0 252   {   n    
0012200    t   h   e       t   h   i   n       c   a   s   e   .  \r   C
0012220    n   t       i   s       d   e   c   r   e   m   e   n   t   e
0012240    d       t   w   i   c   e       b   e   f   o   r   e       t
0012260    h   e       m   a   i   n       l   o   o   p       i   s    
0012300    r   e   a   c   h   e   d   ,       s   o       u   p   o   n
0012320        e   n   t   r   y  \r   t   o       t   h   e       m   a
0012340    i   n       l   o   o   p       i   t       c   o   n   t   a
0012360    i   n   s       D   W   i   d   t   h   -   3       (   a   s
0012400    s   u   m   i   n   g       D   W   i   d   t   h   <   2   3
0012420    )   ,       w   h   i   c   h       i   s       p   r   e   c
0012440    i   s   e   l   y  \r   t   h   e       c   o   r   r   e   c
0012460    t       v   a   l   u   e       f   o   r       g   o   i   n
0012500    g       a   r   o   u   n   d       t   h   e       l   o   o
0012520    p       D   W   i   d   t   h   -   2       t   i   m   e   s
0012540    .           (   T   h   e       e   x   t   r   a       2  \r
0012560    i   n       D   W   i   d   t   h       a   r   e     376 001
0012600   \0 371 212   t   h   e       f   i   r   s   t       a   n   d
0012620        l   a   s   t       p   a   r   t   i   a   l       w   o
0012640    r   d   s   ,       w   h   i   c   h       a   r   e       h
0012660    a   n   d   l   e   d       o   u   t   s   i   d   e  \r   t
0012700    h   e       w   o   r   d       l   o   o   p   .   )  \r  \r
0012720    M   C   o   u   n   t       i   s       l   o   a   d   e   d
0012740        w   i   t   h       (   D   W   i   d   t   h   -   3   )
0012760    /   2   0       -   1   ,       s   o   :  \r  \t   M   C   o
0013000    u   n   t       <       0       i   f       D   W   i   d   t
0013020    h       <       2   3  \r  \t   M   C   o   u   n   t       =
0013040        0       i   f       2   3       <   =       D   W   i   d
0013060    t   h       <       4   2   ,       e   t   c   .  \r   E   a
0013100    c   h       t   i   m   e       t   h   e       i   n   n   e
0013120    r       l   o   o   p       t   e   r   m   i   n   a   t   e
0013140    s   ,       i   f       M   C   o   u   n   t   <   0       t
0013160    h   e       s   c   a   n       l   i   n   e       i   s    
0013200    f   i   n 376 001  \0   ] 224   i   s   h   e   d   ,  \r   b
0013220    u   t       i   f       M   C   o   u   n   t   >   =   0   ,
0013240        M   C   o   u   n   t       i   s       d   e   c   r   e
0013260    m   e   n   t   e   d   ,       C   n   t       i   s       l
0013300    o   a   d   e   d       w   i   t   h       1   7   ,       a
0013320    n   d       t   h   e  \r   m   a   i   n       l   o   o   p
0013340        i   s       r   e   e   n   t   e   r   e   d       f   o
0013360    r       a   n   o   t   h   e   r       2   0       i   t   e
0013400    r   a   t   i   o   n   s   .  \r  \r   W   h   e   n       w
0013420    o   r   k   i   n   g       l   e   f   t   -   t   o   -   r
0013440    i   g   h   t   ,       t   h   e       s   o   u   r   c   e
0013460        m   a   y       b   e       t   h   o   u   g   h   t    
0013500    o   f       a   s       T   ,   ,   S   r   c   W   d       -
0013520    -  \r   t   h   a   t       i   s   ,       w   i   t   h    
0013540    T       o   n       t   h   e       l   e   f   t       a   n
0013560    d       S   r   c   W   d       o   n       t   h   e       r
0013600    i   g   h   t   .           I 376 001  \0 240   b   n       a
0013620    n   y       g   i   v   e   n       o   p   e   r   a   t   i
0013640    o   n   ,  \r   T       c   o   n   t   a   i   n   s       t
0013660    h   e       p   r   e   v   i   o   u   s       s   o   u   r
0013700    c   e       w   o   r   d       a   n   d       S   r   c   W
0013720    d       c   o   n   t   a   i   n   s       t   h   e       c
0013740    u   r   r   e   n   t       o   n   e   ,       a   n   d  \r
0013760    t   h   e       s   h   i   f   t       o   p   e   r   a   t
0014000    i   o   n       c   o   n   s   i   s   t   s       o   f    
0014020    l   e   f   t   -   s   h   i   f   t   i   n   g       T   ,
0014040    ,   S   r   c   W   d       b   y       0       t   o       1
0014060    7       b   i   t   s  \r   (   t   o       a   l   i   g   n
0014100        i   t       w   i   t   h       t   h   e       d   e   s
0014120    t   i   n   a   t   i   o   n   )       a   n   d       s   t
0014140    o   r   i   n   g       t   h   e       l   e   f   t   m   o
0014160    s   t       2   0       b   i   t   s       o   f       t   h
0014200    e  \r   r   e   s   u   l   t   .           S   i 376 001  \0
0014220    .   9   n   c   e       t   h   e       s   h   i   f   t   e
0014240    r       i   s       a   c   t   u   a   l   l   y       a    
0014260    c   y   c   l   e   r       a   n   d       p   r   o   d   u
0014300    c   e   s       t   h   e       r   i   g   h   t   m   o   s
0014320    t  \r   2   0       b   i   t   s       (   r   a   t   h   e
0014340    r       t   h   a   n       t   h   e       l   e   f   t   m
0014360    o   s   t   )       o   f       t   h   e       c   y   c   l
0014400    e   d       r   e   s   u   l   t   ,       t   h   e       s
0014420    h   i   f   t   e   r       m   u   s   t  \r   b   e       s
0014440    e   t       u   p       t   o       l   e   f   t   -   c   y
0014460    c   l   e       a   n       a   d   d   i   t   i   o   n   a
0014500    l       2   0       b   i   t   s       (   b   y       e   x
0014520    c   h   a   n   g   i   n   g       S   H   A       a   n   d
0014540        S   H   B   )   .  \r   H   e   n   c   e       S   H   A
0014560    =   R       a   n   d       S   H   B   =   T   .  \r  \r   W
0014600    h   e   n       w   o   r   k   i   n   g       r   i   g   h
0014620    t   - 376 001  \0   !   G   t   o   -   l   e   f   t   ,    
0014640    t   h   e       s   o   u   r   c   e       m   a   y       b
0014660    e       t   h   o   u   g   h   t       o   f       a   s    
0014700    S   r   c   W   d   ,   ,   T   ,  \r   w   h   e   r   e    
0014720    T       c   o   n   t   a   i   n   s       t   h   e       p
0014740    r   e   v   i   o   u   s       s   o   u   r   c   e       w
0014760    o   r   d       a   n   d       S   r   c   W   d       t   h
0015000    e       c   u   r   r   e   n   t   ,       a   s       b   e
0015020    f   o   r   e   .  \r   T   h   i   s       i   s       e   x
0015040    a   c   t   l   y       s   y   m   m   e   t   r   i   c    
0015060    w   i   t   h       t   h   e       l   e   f   t   -   t   o
0015100    -   r   i   g   h   t       c   a   s   e       a   n   d    
0015120    r   e   q   u   i   r   e   s       o   n   l   y  \r   t   h
0015140    a   t       S   H   A       a   n   d       S   H   B       b
0015160    e       e   x   c   h   a   n   g   e   d   .           H   e
0015200    n   c   e       S   H   A   =   T       a   n   d       S   H
0015220    B   =   R   .  \r  \r   R 376 001  \0   / 337   e   g   a   r
0015240    d   l   e   s   s       o   f       t   h   e       d   i   r
0015260    e   c   t   i   o   n   ,       i   f       t   h   e   r   e
0015300        a   r   e       a   t       l   e   a   s   t       a   s
0015320        m   a   n   y       d   a   t   a       b   i   t   s    
0015340    i   n       t   h   e  \r   f   i   r   s   t       w   o   r
0015360    d       o   f       t   h   e       s   o   u   r   c   e    
0015400    i   t   e   m       a   s       i   n       t   h   e       f
0015420    i   r   s   t       w   o   r   d       o   f       t   h   e
0015440        d   e   s   t   i   n   a   t   i   o   n       i   t   e
0015460    m   ,  \r   t   h   e   n       a   l   l       t   h   e    
0015500    d   e   s   t   i   n   a   t   i   o   n       b   i   t   s
0015520        c   o   m   e       f   r   o   m       S   r   c   W   d
0015540        d   u   r   i   n   g       t   h   e       f   i   r   s
0015560    t       s   h   i   f   t       a   n   d  \r   T       n   e
0015600    e   d       n   o   t       b   e       l   o   a   d   e   d
0015620        a   t       a   l   l   .           O   n 376 001  \0 367
0015640  003       t   h   e       o   t   h   e   r       h   a   n   d
0015660    ,       i   f       t   h   e   r   e       a   r   e       f
0015700    e   w   e   r       b   i   t   s  \r   i   n       t   h   e
0015720        f   i   r   s   t       w   o   r   d       o   f       t
0015740    h   e       s   o   u   r   c   e       i   t   e   m   ,    
0015760    t   h   e       d   e   s   t   i   n   a   t   i   o   n    
0016000    b   i   t   s       c   o   m   e       f   r   o   m  \r   b
0016020    o   t   h       S   r   c   W   d       a   n   d       T   .
0016040            I   n       t   h   i   s       c   a   s   e   ,    
0016060    T       m   u   s   t       c   o   n   t   a   i   n       t
0016100    h   e       f   i   r   s   t       s   o   u   r   c   e    
0016120    w   o   r   d       a   n   d  \r   S   r   c   W   d       t
0016140    h   e       s   e   c   o   n   d   .           T   h   e   s
0016160    e       t   w   o       s   i   t   u   a   t   i   o   n   s
0016200        m   u   s   t       b   e       d   i   s   t   i   n   g
0016220    u   i   s   h   e   d   ,       s   i   n   c   e       o   n
0016240    e 376 001  \0 006   7  \r   r   e   q   u   i   r   e   s    
0016260    f   e   t   c   h   i   n   g       o   n   l   y       a    
0016300    s   i   n   g   l   e       w   o   r   d       w   h   e   r
0016320    e   a   s       t   h   e       o   t   h   e   r       r   e
0016340    q   u   i   r   e   s       f   e   t   c   h   i   n   g  \r
0016360    t   w   o       w   o   r   d   s       b   e   f   o   r   e
0016400        o   p   e   r   a   t   i   n   g       t   h   e       s
0016420    h   i   f   t   e   r       f   o   r       t   h   e       f
0016440    i   r   s   t       t   i   m   e   .  \r  \r   A       s   i
0016460    m   i   l   a   r       s   i   t   u   a   t   i   o   n    
0016500    a   r   i   s   e   s       a   t       t   h   e       e   n
0016520    d       o   f       a   n       i   t   e   m   ;       t   h
0016540    a   t       i   s   ,       a   l   l       t   h   e       b
0016560    i   t   s  \r   i   n       t   h   e       l   a   s   t    
0016600    p   a   r   t   i   a   l       d   e   s   t   i   n   a   t
0016620    i   o   n       i   t   e   m       m   a   y       c   o   m
0016640    e       f   r   o   m 376 001  \0 240   _       t   h   e    
0016660    l   e   f   t   o   v   e   r       s   o   u   r   c   e  \r
0016700    w   o   r   d       i   n       T   ,       o   r       i   t
0016720        m   a   y       b   e       n   e   c   e   s   s   a   r
0016740    y       t   o       f   e   t   c   h       a   n       a   d
0016760    d   i   t   i   o   n   a   l       w   o   r   d       i   n
0017000    t   o       S   r   c   W   d   .  \r   T   h   e   s   e    
0017020    s   i   t   u   a   t   i   o   n   s       m   u   s   t    
0017040    b   e       d   i   s   t   i   n   g   u   i   s   h   e   d
0017060        a   l   s   o   .           A   n       e   a   r   l   i
0017100    e   r       v   e   r   s   i   o   n       o   f       t   h
0017120    i   s  \r   m   i   c   r   o   c   o   d   e       o   m   i
0017140    t   t   e   d       t   h   e       t   e   s   t       a   n
0017160    d       s   i   m   p   l   y       f   e   t   c   h   e   d
0017200        t   h   e       "   e   x   t   r   a   "       w   o   r
0017220    d       a   l   w   a   y   s   ;  \r   u   n   f   o   r   t
0017240    u   n   a   t   e   l   y   ,       t   h 376 001  \0 232 370
0017260    i   s       s   o   m   e   t   i   m   e   s       r   e   s
0017300    u   l   t   e   d       i   n       t   o   u   c   h   i   n
0017320    g       a       w   o   r   d       o   u   t   s   i   d   e
0017340        t   h   e       b   i   t       m   a   p   ,  \r   w   h
0017360    i   c   h       c   a   u   s   e   d       p   r   o   b   l
0017400    e   m   s       i   n       a       p   a   g   e   d       e
0017420    n   v   i   r   o   n   m   e   n   t       w   h   e   n    
0017440    t   h   e       b   i   t       m   a   p       h   a   p   p
0017460    e   n   e   d  \r   t   o       b   e       p   a   g   e   -
0017500    a   l   i   g   n   e   d   .  \r  \r   T   w   o       b   i
0017520    t   s       i   n       B   B   C   t   r   l       c   o   n
0017540    t   r   o   l       t   h   e       f   e   t   c   h   i   n
0017560    g       o   f       t   h   e       "   e   x   t   r   a   "
0017600        w   o   r   d       i   n       t   h   e       a   b   o
0017620    v   e  \r   t   w   o       c   a   s   e   s   .  \r  \f  \r
0017640    I   n       t   h   e       n   o   r   m   a   l       c   a
0017660  376 001  \0 344 241   s   e       i   n       w   h   i   c   h
0017700        b   o   t   h       s   r   c   B   p   l       a   n   d
0017720        d   s   t   B   p   l       a   r   e       m   u   l   t
0017740    i   p   l   e   s       o   f       1   6   ,  \r   t   h   e
0017760        S   h   C       r   e   g   i   s   t   e   r       a   n
0020000    d       a   l   l       h   o   r   i   z   o   n   t   a   l
0020020        l   o   o   p       c   o   n   t   r   o   l       i   n
0020040    f   o   r   m   a   t   i   o   n       c   a   n       b   e
0020060        c   o   m   p   u   t   e   d  \r   j   u   s   t       o
0020100    n   c   e       f   o   r       a   l   l       s   c   a   n
0020120        l   i   n   e   s   .           I   f       e   i   t   h
0020140    e   r       s   r   c   B   p   l       o   r       d   s   t
0020160    B   p   l       i   s       n   o   t       a       m   u   l
0020200    t   i   p   l   e  \r   o   f       1   6   ,       t   h   i
0020220    s       d   o   e   s   n   '   t       w   o   r   k   ,    
0020240    a   n   d       a   l   l       t   h   i   s       s   t   u
0020260    f   f       h   a 376 001  \0   G 351   s       t   o       b
0020300    e       r   e   c   o   m   p   u   t   e   d       f   o   r
0020320   \r   e   a   c   h       s   c   a   n       l   i   n   e   .
0020340            I       c   o   n   s   i   d   e   r       t   h   i
0020360    s       c   a   s   e       t   o       b   e       a   n   o
0020400    m   a   l   o   u   s       -   -       t   h   e       P   r
0020420    i   n   c   O   p   s  \r   s   p   e   c   i   f   i   c   a
0020440    t   i   o   n       i   s       o   v   e   r   l   y       g
0020460    e   n   e   r   a   l   ,       o   r       p   e   r   h   a
0020500    p   s       w   a   s       m   o   t   i   v   a   t   e   d
0020520        b   y       c   l   e   v   e   r       h   a   c   k   s
0020540   \r   s   u   c   h       a   s       b   e   i   n   g       a
0020560    b   l   e       t   o       B   i   t   B   l   t       p   a
0020600    r   a   l   l   e   l   o   g   r   a   m   s   .           T
0020620    h   e   r   e   f   o   r   e   ,       t   h   i   s       i
0020640    m   p   l   e   m   e   n   t   a   t   i   o   n  \r   t   a
0020660    k   e   s       t   h   e       e   a 376 001  \0 322   i   s
0020700    y       w   a   y       o   u   t       i   n       t   h   i
0020720    s       c   a   s   e       b   y       d   o   i   n   g    
0020740    j   u   s   t       o   n   e       s   c   a   n       l   i
0020760    n   e   ,       s   a   v   i   n   g       s   t   a   t   e
0021000   \r   a   s       i   f       a   n       i   n   t   e   r   r
0021020    u   p   t       h   a   d       o   c   c   u   r   r   e   d
0021040    ,       a   n   d       r   e   s   t   a   r   t   i   n   g
0021060        B   i   t   B   l   t       f   r   o   m       t   h   e
0021100        b   e   g   i   n   n   i   n   g   .  \r   T   h   i   s
0021120        i   s       s   l   o   w       a   s       b   l   a   z
0021140    e   s   ,       b   u   t       t   h   e       u   s   e   r
0021160        g   e   t   s       w   h   a   t       h   e       d   e
0021200    s   e   r   v   e   s   .   .   .   .   .   .   .  \r  \r   A
0021220    l   l       t   h   e       h   o   r   i   z   o   n   t   a
0021240    l       l   o   o   p   s       w   o   r   k       i   n    
0021260    b   o   t   h       d   i   r   e   c   t   i   o   n   s 376
0021300  001  \0   h 322       b   y       u   s   e       o   f       a
0021320        t   r   i   c   k   :  \r   A   L   U   F   [   1   5   ]
0021340        i   s       r   e   d   e   f   i   n   e   d       t   o
0021360        b   e       A   +   1       i   f       m   o   v   i   n
0021400    g       l   e   f   t   -   t   o   -   r   i   g   h   t    
0021420    b   u   t       A   -   1       i   f  \r   r   i   g   h   t
0021440    -   t   o   -   l   e   f   t   .           T   h   i   s    
0021460    A   L   U       f   u   n   c   t   i   o   n       i   s    
0021500    i   n   v   o   k   e   d       b   y       t   h   e       o
0021520    p   e   r   a   t   i   o   n       "   A   +   /   -   1   "
0021540    ,  \r   a   n   d       i   s       u   s   e   d       t   o
0021560        a   d   v   a   n   c   e       s   o   u   r   c   e    
0021600    a   n   d       d   e   s   t   i   n   a   t   i   o   n    
0021620    p   o   i   n   t   e   r   s       a   l   o   n   g       t
0021640    h   e       s   c   a   n       l   i   n   e   .  \r   A    
0021660    c   o   n   s   e   q   u   e   n   c   e       o   f       t
0021700    h   i   s     376 001  \0 237 205   i   s       t   h   a   t
0021720        A   L   U   F   [   1   5   ]       (   n   o   r   m   a
0021740    l   l   y       A       A   N   D       N   O   T       B   )
0021760        c   a   n   n   o   t       b   e  \r   u   s   e   d    
0022000    b   y       I   /   O       t   a   s   k   s   .  \r  \r   B
0022020    B   D   s   t       a   n   d       B   B   S   r   c       a
0022040    r   e       1   6   -   b   i   t       d   i   s   p   l   a
0022060    c   e   m   e   n   t   s       r   e   l   a   t   i   v   e
0022100        t   o       b   a   s   e       r   e   g   i   s   t   e
0022120    r   s  \r   B   B   D   s   t   B   R       a   n   d       B
0022140    B   S   r   c   B   R   .           I   f       m   o   v   i
0022160    n   g       t   o   p   -   t   o   -   b   o   t   t   o   m
0022200        t   h   e   y       s   t   a   r   t       n   e   a   r
0022220        z   e   r   o  \r   a   n   d       c   o   u   n   t    
0022240    u   p   ;       i   f       b   o   t   t   o   m   -   t   o
0022260    -   t   o   p       t   h   e   y       s   t   a   r   t    
0022300    a   t       ~   2   ^   1   5     376 001  \0 372   9   a   n
0022320    d       c   o   u   n   t       d   o   w   n   .  \r   I   f
0022340        m   o   r   e       t   h   a   n       ~   2   ^   1   5
0022360        w   o   r   d   s       o   f       b   i   t       m   a
0022400    p       a   r   e       p   r   o   c   e   s   s   e   d   ,
0022420        o   n   e       o   f       t   h   e   s   e       d   i
0022440    s   p   l   a   c   e   m   e   n   t   s  \r   b   e   c   o
0022460    m   e   s       n   e   g   a   t   i   v   e   .           T
0022500    h   i   s       i   s       d   e   t   e   c   t   e   d    
0022520    a   n   d       c   a   u   s   e   s       B   i   t   B   l
0022540    t       t   o       r   e   s   t   a   r   t   ,       r   e
0022560    c   o   m   p   u   t   i   n   g  \r   t   h   e       b   a
0022600    s   e       r   e   g   i   s   t   e   r   s       a   n   d
0022620        d   i   s   p   l   a   c   e   m   e   n   t   s   .    
0022640        B   R       d   i   s   p   l   a   c   e   m   e   n   t
0022660        o   v   e   r   f   l   o   w       i   s       h   a   n
0022700    d   l   e   d  \r   t   h   i   s       w   a   y     376 001
0022720   \0 341 200   b   e   c   a   u   s   e       i   t       t   a
0022740    k   e   s       t   o   o       m   u   c   h       c   o   d
0022760    e       t   o       r   e   c   o   m   p   u   t   e       t
0023000    h   e       B   R   s       a   n   d       d   i   s   p   l
0023020    a   c   e   m   e   n   t   s  \r   i   n       m   i   d   -
0023040    s   t   r   e   a   m   .           T   h   e       c   o   s
0023060    t       o   f       r   e   s   t   a   r   t   i   n   g    
0023100    B   i   t   B   l   t       f   r   o   m       s   c   r   a
0023120    t   c   h       i   n       t   h   i   s       c   a   s   e
0023140        i   s  \r   u   n   i   m   p   o   r   t   a   n   t   ,
0023160        s   i   n   c   e       s   u   c   h       a       l   a
0023200    r   g   e       a   m   o   u   n   t       o   f       d   a
0023220    t   a       i   s       i   n   v   o   l   v   e   d   .    
0023240        (   I   n   d   e   e   d   ,       i   n  \r   n   o   r
0023260    m   a   l       p   r   o   g   r   a   m   s       a   n    
0023300    i   n   t   e   r   r   u   p   t       w   i   l   l       o
0023320    c   c   u 376 001  \0 230   c   r       b   e   f   o   r   e
0023340        2   ^   1   5       w   o   r   d   s       a   r   e    
0023360    p   r   o   c   e   s   s   e   d   ,  \r   s   o       B   i
0023400    t   B   l   t       w   i   l   l       b   e       r   e   s
0023420    t   a   r   t   e   d       a   n   y   w   a   y   .   )  \r
0023440   \r   1   6   6                           P   I   L   O   T   B
0023460    I   T   B   L   T       0                                   -
0023500    1                                                            
0023520            \   P   I   L   O   T   B   I   T   B   L   T  \r  \r
0023540    P   e   r   f   o   r   m   s       P   i   l   o   t   -   s
0023560    t   y   l   e       b   i   t   b   l   t   .  \r   T   O   S
0023600    -   1       i   s       a       p   o   i   n   t   e   r    
0023620    t   o       a       b   i   t   b   l   t       t   a   b   l
0023640    e   ,       w   h   i   c   h       i   s       1   6   -   a
0023660    l   i   g   n   e   d   .  \r   T   O   S       n   u   m   b
0023700    e   r       o   f       s   c   a   n       l   i   n   e   s
0023720        a   l   r   e   a   d   y 376 001  \0   G   p       d   o
0023740    n   e       (   i   n   i   t   i   a   l   l   y       0   )
0023760   \r  \r   w   h   e   n       r   e   s   u   m   i   n   g    
0024000    f   r   o   m       i   n   t   e   r   r   u   p   t       o
0024020    r       f   a   u   l   t   ,       t   h   e       T   O   S
0024040        c   o   u   n   t       w   i   l   l       b   e       i
0024060    n   c   r   e   m   e   n   t   e   d       a   p   p   r   o
0024100    p   r   i   a   t   e   l   y   .  \r  \r   T   O   S   :    
0024120    n   u   m   b   e   r       o   f       s   c   a   n       l
0024140    i   n   e   s       a   l   r   e   a   d   y       d   o   n
0024160    e   .  \r  \r   B   i   t   B   l   t       e   x   i   t   s
0024200        i   n       o   n   e       o   f       t   h   r   e   e
0024220        w   a   y   s   :  \r  \r   1   .       N   o   r   m   a
0024240    l       c   o   m   p   l   e   t   i   o   n   :       B   i
0024260    t   B   l   t       p   o   p   s       t   h   e       s   t
0024300    a   c   k  \r  \r   2   .       I   n   t   e   r   r   u   p
0024320    t       r   e   q   u   e   s   t       p   e   n 376 001  \0
0024340  314 344   d   i   n   g   :       B   i   t   B   l   t       l
0024360    e   a   v   e   s       a   t       T   O   S       t   h   e
0024400        n   u   m   b   e   r       o   f       s   c   a   n    
0024420    l   i   n   e   s       a   l   r   e   a   d   y       p   r
0024440    o   c   e   s   s   e   d       a   n   d       b   r   a   n
0024460    c   h   e   s       t   o       t   h   e       i   n   t   e
0024500    r   r   u   p   t       h   a   n   d   l   e   r   .        
0024520    B   i   t   B   l   t       i   s       s   u   b   s   e   q
0024540    u   e   n   t   l   y       r   e   s   t   a   r   t   e   d
0024560        w   i   t   h       t   h   e       v   a   l   u   e    
0024600    l   e   f   t       i   n       T   O   S   .  \r  \r   3   .
0024620        P   a   g   e       f   a   u   l   t   :       B   i   t
0024640    B   l   t       i   s       c   a   r   e   f   u   l       t
0024660    o       e   n   s   u   r   e       r   e   s   t   a   r   t
0024700    a   b   i   l   i   t   y       i   n       t   h   e       f
0024720    a   c   e       o   f       p   a   g   e       f   a   u   l
0024740    t   s 376 001  \0 024 001   .           T   h   a   t       i
0024760    s   ,       a   n   y       t   i   m   e       a       p   a
0025000    g   e       f   a   u   l   t       c   a   n       o   c   c
0025020    u   r   ,       T   O   S       c   o   n   t   a   i   n   s
0025040        t   h   e       n   u   m   b   e   r       o   f       s
0025060    c   a   n       l   i   n   e   s       a   l   r   e   a   d
0025100    y       d   o   n   e   ,       a   n   d       r   e   s   t
0025120    a   r   t   i   n   g       B   i   t   B   l   t       w   i
0025140    t   h       t   h   a   t       a   r   g   u   m   e   n   t
0025160        w   i   l   l       c   a   u   s   e       t   h   e    
0025200    c   o   r   r   e   c   t       t   h   i   n   g       t   o
0025220        h   a   p   p   e   n   .  \r  \r   A   p   p   r   o   x
0025240    i   m   a   t   e       t   i   m   i   n   g       f   o   r
0025260        i   n   i   t   i   a   l   i   z   a   t   i   o   n    
0025300    a   n   d       c   l   e   a   n   u   p       (   e   x   c
0025320    l   u   d   i   n   g       m   a   i   n       l   o   o   p
0025340    s   )   :  \r  \t       6 376 001  \0   z 324   5       c   y
0025360    c   l   e   s  \r  \t   +   1   0       i   f       d   i   r
0025400    e   c   t   i   o   n   =   b   a   c   k   w   a   r   d  \r
0025420   \t   +   2   9       i   f       r   e   s   u   m   i   n   g
0025440        f   r   o   m       i   n   t   e   r   r   u   p   t  \r
0025460   \r  \t   +       o   n   e       o   f       t   h   e       f
0025500    o   l   l   o   w   i   n   g   :  \r  \r  \t   g   r   a   y
0025520    :  \t       1   3       c   y   c   l   e   s       m   i   n
0025540    i   m   u   m  \r  \t  \t       +   6       i   f       r   e
0025560    s   u   m   i   n   g       f   r   o   m       i   n   t   e
0025600    r   r   u   p   t  \r  \t  \t   +   3   7       i   f       r
0025620    e   s   u   m   i   n   g       a   n   d       (   h   e   i
0025640    g   h   t   M   i   n   u   s   O   n   e   +   1   )       i
0025660    s       n   o   t       a       p   o   w   e   r       o   f
0025700        2  \r  \r  \t   ~   g   r   a   y   :  \t       2   1    
0025720    c   y   c   l   e   s       m   i   n   i   m   u   m  \r  \t
0025740   \t   +   2   9       i   f       r   e   s   u 376 001  \0 341
0025760  371   m   i   n   g       f   r   o   m       i   n   t   e   r
0026000    r   u   p   t  \r  \t  \t       +   2       i   f       d   i
0026020    r   e   c   t   i   o   n   =   b   a   c   k   w   a   r   d
0026040   \r  \r   T   o   t   a   l   s   :  \t   g   r   a   y   :  \t
0026060    7   8       c   y   c   l   e   s       m   i   n   i   m   u
0026100    m   ,       1   6   0       m   a   x   i   m   u   m      \r
0026120   \t   ~   g   r   a   y   :  \t   8   6       c   y   c   l   e
0026140    s       m   i   n   i   m   u   m   ,       1   5   6       m
0026160    a   x   i   m   u   m      \r  \r   N   o   t   e   :       t
0026200    h   e   s   e       o   v   e   r   h   e   a   d   s       a
0026220    r   e       i   n   c   u   r   r   e   d       o   n       e
0026240    v   e   r   y       s   c   a   n       l   i   n   e       i
0026260    f       d   s   t   .   b   i   t       o   r       s   r   c
0026300    .   b   i   t  \r   i   s       n   o   t       a       m   u
0026320    l   t   i   p   l   e       o   f       1   6   .  \r  \r   S
0026340    e   e       c   o   m   m   e   n   t   s       a   b   o   v
0026360    e 376 001  \0   4 263       m   a   i   n       l   o   o   p
0026400    s       f   o   r       m   a   i   n       l   o   o   p    
0026420    t   i   m   e   s   .  \r   %  \r  \f  \r   *   -   -   -   -
0026440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026520    -   -   -   -   -   -   -  \r   *       R   -   r   e   g   i
0026540    s   t   e   r       a   s   s   i   g   n   m   e   n   t   s
0026560    :  \r   *   -   -   -   -   -   -   -   -   -   -   -   -   -
0026600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0026640    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r  \r
0026660    S   e   t   R   M   R   e   g   i   o   n   [   B   B   R   e
0026700    g   s   ]   ;  \t   *       T   h   e       R   M   R   e   g
0026720    i   o   n       i   t   s   e   l   f       i   s       d   e
0026740    f   i   n   e   d       i   n       R   e   g   i   s   t   e
0026760    r   D   e   f   s   . 376 001  \0 215 204   m   c  \r  \r   R
0027000    V   N   [   B   B   D   s   t   ]   ;  \t  \t   *       A   d
0027020    d   r   e   s   s       o   f       n   e   x   t       w   o
0027040    r   d       t   o       p   r   o   c   e   s   s  \r   R   V
0027060    N   [   B   B   S   r   c   ]   ;  \r  \r   R   V   N   [   D
0027100    s   t   I   n   c   ]   ;  \t  \t   *       A   d   d   r   e
0027120    s   s       i   n   c   r   e   m   e   n   t       b   e   t
0027140    w   e   e   n       s   c   a   n       l   i   n   e   s    
0027160    -   -  \r   R   V   N   [   S   r   c   I   n   c   ]   ;  \t
0027200   \t   *           n   e   g   a   t   i   v   e       i   f    
0027220    d   i   r   e   c   t   i   o   n       =       b   a   c   k
0027240    w   a   r   d  \r  \r   R   V   N   [   D   R   a   s   t   ]
0027260    ;  \t  \t   *       R   a   s   t   e   r       l   e   n   g
0027300    t   h       (   b   i   t   s   ,       l   a   t   e   r    
0027320    w   o   r   d   s   )       -   -  \r   R   V   N   [   S   R
0027340    a   s   t   ]   ;  \t  \t   *           n   e   g   a   t   i
0027360    v   e       i   f       d   i   r   e   c 376 001  \0  \b   ;
0027400    t   i   o   n       =       b   a   c   k   w   a   r   d  \r
0027420   \r   R   V   N   [   P   r   e   f   D   s   t   ]   ;  \t  \t
0027440    *       A   d   d   r   e   s   s       o   f       n   e   x
0027460    t       m   u   n   c   h       t   o       P   r   e   F   e
0027500    t   c   h  \r   R   V   N   [   P   r   e   f   S   r   c   ]
0027520    ;  \r  \r   R   V   N   [   D   P   r   e   f   O   f   f   s
0027540    e   t   ]   ;  \t   *       O   f   f   s   e   t       o   f
0027560        l   e   f   t   m   o   s   t       w   o   r   d       o
0027600    f       n   e   x   t       s   c   a   n       l   i   n   e
0027620        r   e   l   a   t   i   v   e  \r   R   V   N   [   S   P
0027640    r   e   f   O   f   f   s   e   t   ]   ;  \t   *           t
0027660    o       f   i   r   s   t       w   o   r   d       o   f    
0027700    c   u   r   r   e   n   t       s   c   a   n       l   i   n
0027720    e  \r  \r   R   V   N   [   V   C   o   u   n   t   ]   ;  \t
0027740   \t   *       V   e   r   t   i   c   a   l       l   i   n   e
0027760        c   o   u   n   t  \r   R   V   N   [   M   C   o   u   n
0030000  376 001  \0   R  \t   t   ]   ;  \t  \t   *       H   o   r   i
0030020    z   o   n   t   a   l       m   u   n   c   h       c   o   u
0030040    n   t  \r   R   V   N   [   I   C   n   t   ]   ;  \t  \t   *
0030060        I   n   i   t   i   a   l       v   a   l   u   e       o
0030100    f       C   n   t       r   e   g   i   s   t   e   r       f
0030120    o   r       w   o   r   d       l   o   o   p   s  \r  \r   R
0030140    V   N   [   B   B   D   i   s   p   ]   ;  \t  \t   *       C
0030160    o   n   t   r   o   l       f   l   a   g   s       a   n   d
0030200        h   o   r   i   z   o   n   t   a   l       l   o   o   p
0030220        d   i   s   p   a   t   c   h  \r  \t  \t  \t   *       B
0030240    0   =   1       =   >       d   i   r   e   c   t   i   o   n
0030260        =       b   a   c   k   w   a   r   d  \r  \t  \t  \t   *
0030300        B   8   :   1   5       =       d   i   s   p   a   t   c
0030320    h       v   a   l   u   e       r   e   l   a   t   i   v   e
0030340        t   o       H   o   r   i   z   o   n   t   a   l   D   i
0030360    s   p  \r  \t  \t  \t   *       (   s   e   e       b   e   l
0030400    o   w       f   o 376 001  \0 313   G   r       d   e   t   a
0030420    i   l   s   )  \r  \r   R   V   N   [   B   B   C   t   r   l
0030440    ]   ;  \t  \t   *       C   o   n   t   r   o   l       f   l
0030460    a   g   s   :  \r  \t  \t  \t   *       B   0   =   1       =
0030500    >       2       s   o   u   r   c   e       w   o   r   d   s
0030520        r   e   q   u   i   r   e   d       f   o   r       f   i
0030540    r   s   t       d   e   s   t       w   o   r   d  \r  \t  \t
0030560   \t   *       B   1   5   =   1       =   >       2       s   o
0030600    u   r   c   e       w   o   r   d   s       r   e   q   u   i
0030620    r   e   d       f   o   r       l   a   s   t       d   e   s
0030640    t       w   o   r   d  \r  \r   R   V   N   [   S   r   c   W
0030660    d   ]   ;  \t  \t   *       L   e   f   t   o   v   e   r    
0030700    s   o   u   r   c   e       w   o   r   d       -   -       m
0030720    u   s   t       b   e       R   V   R   E   L       1   7  \r
0030740   \r   *       A   l   i   a   s       u   s   e   d       w   h
0030760    e   n       t   h   e       s   o   u   r   c   e       i   s
0031000        g   r   a   y   :  \r   R   M   E 376 001  \0 037 226   [
0031020    G   r   a   y   B   u   m   p   ,       S   R   a   s   t   ]
0031040    ;  \t   *       S   i   z   e       o   f       g   r   a   y
0031060        b   r   i   c   k       i   n       w   o   r   d   s    
0031100    -   1  \r  \r   *       A   l   i   a   s   e   s       u   s
0031120    e   d       d   u   r   i   n   g       i   n   i   t   i   a
0031140    l   i   z   a   t   i   o   n   :  \r   R   M   E   [   W   i
0031160    d   t   h   ,       D   P   r   e   f   O   f   f   s   e   t
0031200    ]   ;       *       W   i   d   t   h       o   f       i   t
0031220    e   m       i   n       b   i   t   s  \r   R   M   E   [   D
0031240    W   i   d   t   h   ,       I   C   n   t   ]   ;  \t   *    
0031260    W   i   d   t   h       o   f       d   e   s   t   i   n   a
0031300    t   i   o   n       i   t   e   m       i   n       w   o   r
0031320    d   s  \r   R   M   E   [   S   W   i   d   t   h   ,       P
0031340    r   e   f   S   r   c   ]   ;  \t   *       W   i   d   t   h
0031360        o   f       s   o   u   r   c   e       i   t   e   m    
0031400    i   n       w   o   r   d   s  \r   R   M   E   [   S   k 376
0031420  001  \0   z 310   e   w   ,       D   s   t   I   n   c   ]   ;
0031440   \t   *       D   e   s   t   i   n   a   t   i   o   n   -   s
0031460    o   u   r   c   e       s   k   e   w   ,       m   o   d    
0031500    2   0  \r   R   M   E   [   B   B   M   a   s   k   s   ,    
0031520    P   r   e   f   D   s   t   ]   ;  \t   *       L   M   a   s
0031540    k       a   n   d       R   M   a   s   k       v   a   l   u
0031560    e   s       t   o       b   e       l   o   a   d   e   d    
0031600    i   n   t   o       S   H   C  \r   R   M   E   [   B   B   F
0031620    l   a   g   s   ,       S   r   c   I   n   c   ]   ;  \t   *
0031640        B   i   t   B   l   t       f   l   a   g   s       w   o
0031660    r   d  \r   R   M   E   [   D   s   t   X   ,       B   B   D
0031700    s   t   ]   ;  \t   *       D   e   s   t   i   n   a   t   i
0031720    o   n       s   t   a   r   t   i   n   g       X       i   n
0031740        b   i   t   s   ,       l   a   t   e   r       i   n    
0031760    w   o   r   d   s  \r   R   M   E   [   S   r   c   X   ,    
0032000    B   B   S   r   c   ]   ;  \t   *       S   o   u   r   c   e
0032020        s   t   a 376 001  \0  \0 250   r   t   i   n   g       X
0032040        i   n       b   i   t   s   ,       l   a   t   e   r    
0032060    i   n       w   o   r   d   s  \r   R   M   E   [   I   B   B
0032100    S   r   c   ,       S   P   r   e   f   O   f   f   s   e   t
0032120    ]   ;       *       I   n   i   t   i   a   l       B   B   S
0032140    r   c       (   g   r   a   y       o   n   l   y   )  \r   R
0032160    M   E   [   B   B   T   e   m   p   ,       S   r   c   W   d
0032200    ]   ;  \t   *       M   u   s   t       b   e       R   V   R
0032220    e   l       1   7       b   e   c   a   u   s   e       i   t
0032240        i   s       a   n       a   r   g       t   o       M   u
0032260    l   S   u   b   .  \r  \f  \r   *   -   -   -   -   -   -   -
0032300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032360    -   -   -   -  \r   *       O   t   h   e   r       d   e   f
0032400    i   n   i   t   i   o   n   s  \r   *   -   -   -   -   -   -
0032420    -   -   -   -   -   -   -   -   - 376 001  \0 351 030   -   -
0032440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0032500    -   -   -   -   -   -   -   -   -   -  \r  \r   *       B   a
0032520    s   e   -   r   e   g   i   s   t   e   r       a   s   s   i
0032540    g   n   m   e   n   t   s  \r  \r   %       -   -       A   c
0032560    t   u   a   l   l   y       d   e   f   i   n   e   d       i
0032600    n       A   D   e   f   s   .   m   c   .           F   i   r
0032620    s   t       t   w   o       m   u   s   t       b   e       a
0032640    n       e   v   e   n   -   o   d   d       p   a   i   r   .
0032660   \r   B   R   [   B   B   D   s   t   B   R   ,       ?   ]   ;
0032700   \t  \t   *       B   i   t   B   l   t       d   e   s   t   i
0032720    n   a   t   i   o   n       b   a   s   e  \r   B   R   [   B
0032740    B   S   r   c   B   R   ,       ?   ]   ;  \t  \t   *       B
0032760    i   t   B   l   t       s   o   u   r   c   e       b   a   s
0033000    e  \r   B   R   [   B   B   T   a   b   l   e   B   R   ,    
0033020    ?   ]   ;  \t  \t   *       S   c   r   a   t   c   h 376 001
0033040   \0   > 210       (   e   m   u   l   a   t   o   r       u   s
0033060    e       o   n   l   y   )  \r   %  \r   B   R   [   B   B   T
0033100    a   b   l   e   B   R   ,       1   3   ]   ;  \r  \r   *    
0033120    A   L   U       f   u   n   c   t   i   o   n   s       d   e
0033140    f   i   n   e   d       b   y       B   i   t   B   l   t   .
0033160   \r   *       T   h   e       A   L   U   F       R   a   m    
0033200    i   s       l   o   a   d   e   d       b   y       B   i   t
0033220    B   l   t       w   i   t   h       t   h   e       d   e   s
0033240    i   r   e   d       o   p   e   r   a   t   i   o   n   s   .
0033260   \r   X   A   L   U   O   P   [   ,   B   B   O   p   ,   ,   1
0033300    7   ,   E   ]   ;  \t   *       A       B   B   O   p       B
0033320        -   -       l   o   g   i   c   a   l       o   p   e   r
0033340    a   t   i   o   n       i   n   v   o   k   e   d       w   i
0033360    t   h       s   h   i   f   t   e   r  \r  \r   X   A   O   P
0033400    [   ,   +   /   -   1   ,   1   5   ,   E   ]   ;  \t   *    
0033420    A       +   /   -   1       -   -       A   +   1       o   r
0033440        A   - 376 001  \0 346   z   1       d   e   p   e   n   d
0033460    i   n   g       o   n       h   o   r   i   z   o   n   t   a
0033500    l  \r  \t  \t  \t   *       d   i   r   e   c   t   i   o   n
0033520    .           T   h   i   s       v   a   l   u   e       o   f
0033540        A   L   U   F       i   s       n   o   r   m   a   l   l
0033560    y  \r  \t  \t  \t   *       A       A   N   D       N   O   T
0033600        B       a   n   d       i   s       r   e   s   t   o   r
0033620    e   d       b   y       B   i   t   B   l   t       w   h   e
0033640    n       d   o   n   e   .  \r  \t  \t  \t   *       T   h   i
0033660    s       m   e   a   n   s   ,       h   o   w   e   v   e   r
0033700    ,       t   h   a   t       A       A   N   D       N   O   T
0033720        B       c   a   n   n   o   t       b   e       u   s   e
0033740    d  \r  \t  \t  \t   *       b   y       o   t   h   e   r    
0033760    t   a   s   k   s   .  \r  \r  \r   *       L   a   y   o   u
0034000    t       o   f       B   B   D   i   s   p       r   e   g   i
0034020    s   t   e   r   :  \r   *       B   0       =       0       i
0034040    f       d   i   r   e   c   t 376 001  \0 342 353   i   o   n
0034060        =       f   o   r   w   a   r   d   ,       1       i   f
0034100        b   a   c   k   w   a   r   d  \r   *       B   8   -   1
0034120    5   :       B   i   g   B   D   i   s   p   a   t   c   h    
0034140    v   a   l   u   e       f   o   r       s   e   t   u   p    
0034160    a   n   d       b   o   d   y       d   i   s   p   a   t   c
0034200    h   e   s   .  \r   *       T   h   e       f   o   l   l   o
0034220    w   i   n   g       a   d   d   r   e   s   s   i   n   g    
0034240    c   o   n   s   t   r   a   i   n   t   s       a   p   p   l
0034260    y   :  \r   *       (   1   )       B   1   3       =       1
0034300        a   n   d       B   1   5       =       1       i   f    
0034320    a       r   e   a   l       s   o   u   r   c   e       b   i
0034340    t       m   a   p       i   s       u   s   e   d       (   0
0034360        i   f       g   r   a   y       b   l   o   c   k   )   .
0034400   \r   *       (   2   )       B   1   4       =       0       i
0034420    f       t   h   e       i   t   e   m   (   s   )       m   u
0034440    s   t       b   e       t   o   u   c   h   e   d 376 001  \0
0034460  370 274       b   e   f   o   r   e       b   e   g   i   n   n
0034500    i   n   g       a       t   r   a   n   s   f   e   r   .  \r
0034520    *       (   3   )       B   1   1       =       1       i   f
0034540        t   h   e       d   e   s   t   i   n   a   t   i   o   n
0034560        i   s       a   n       o   p   e   r   a   n   d   .  \r
0034600    *       (   4   )       C   e   r   t   a   i   n       t   a
0034620    r   g   e   t   s       a   r   e       t   i   e   d       t
0034640    o   g   e   t   h   e   r       b   y       C   a   l   l    
0034660    c   o   n   s   t   r   a   i   n   t   s   .  \r   *       (
0034700    5   )       M   u   s   t       n   o   t       s   t   o   m
0034720    p       o   n       t   o   o       m   a   n   y       J   C
0034740    N       c   o   n   d   i   t   i   o   n   a   l       b   r
0034760    a   n   c   h       t   a   r   g   e   t   s   .  \r   *    
0035000    T   h   e   s   e       b   i   t   s       a   r   e       r
0035020    a   t   h   e   r       c   a   r   e   f   u   l   l   y    
0035040    s   e   l   e   c   t   e   d       t   o       p   e   r   m
0035060    i   t 376 001  \0   > 006       t   h   e       s   a   m   e
0035100        B   B   D   i   s   p       t   o       b   e  \r   *    
0035120    u   s   e   d       i   n       t   h   r   e   e       d   i
0035140    f   f   e   r   e   n   t       d   i   s   p   a   t   c   h
0035160    e   s   .  \r  \r   S   e   t   [   S   r   c   F   l   g   ,
0035200        5   ]   ;  \r   S   e   t   [   N   o   T   o   u   c   h
0035220    F   l   g   ,       2   ]   ;  \r   S   e   t   [   D   s   t
0035240    F   l   g   ,       2   0   ]   ;  \r  \r   *       B   B   D
0035260    i   s   p   X       d   e   f   i   n   e   s       t   h   e
0035300        p   a   g   e       u   s   e   d       f   o   r       d
0035320    i   s   p   a   t   c   h   e   s       o   n       B   B   D
0035340    i   s   p   .  \r   S   e   t   [   B   B   D   i   s   p   X
0035360    ,       3   4   0   0   ]   ;  \r   M   [   B   B   A   t   ,
0035400        A   t   [   B   B   D   i   s   p   X   ,       A   d   d
0035420    [   #   1   ,       #   2   ]   ]   ]   ;  \r  \r   *       P
0035440    a   g   e   -   r   e   l   a   t   i   v   e       e   n   t
0035460    r   y       p   o   i   n 376 001  \0 006 333   t   s       f
0035500    o   r       s   e   t   u   p       r   o   u   t   i   n   e
0035520    s   .  \r   *       A   l   l       m   u   s   t       h   a
0035540    v   e       B   1   1       =       1   ,       t   o       n
0035560    e   u   t   r   a   l   i   z   e       b   o   d   y       d
0035600    i   s   p   a   t   c   h       (   D   s   t   F   l   a   g
0035620    )   .  \r   S   e   t   [   G   r   a   y   D   s   t   S   e
0035640    t   u   p   &   T   o   u   c   h   L   o   c   ,       7   0
0035660    ]   ;  \r   S   e   t   [   G   r   a   y   D   s   t   S   e
0035700    t   u   p   L   o   c   ,       7   2   ]   ;  \r   S   e   t
0035720    [   S   r   c   D   s   t   S   e   t   u   p   &   T   o   u
0035740    c   h   L   o   c   ,       7   5   ]   ;  \r   S   e   t   [
0035760    S   r   c   D   s   t   S   e   t   u   p   L   o   c   ,    
0036000    7   7   ]   ;  \t   *       M   u   s   t       b   e       S
0036020    r   c   D   s   t   S   e   t   u   p   &   T   o   u   c   h
0036040    L   o   c       +       2  \r  \r   S   e   t   [   H   o   r
0036060    i   z   o   n   t   a   l   D   i   s   p   L 376 001  \0 235
0036100  365   o   c   ,       7   0   ]   ;  \t   *       T   a   r   g
0036120    e   t       o   f       s   e   t   u   p       d   i   s   p
0036140    a   t   c   h  \r  \r   *       P   a   g   e   -   r   e   l
0036160    a   t   i   v   e       e   n   t   r   y       p   o   i   n
0036200    t   s       f   o   r       b   o   d   y       r   o   u   t
0036220    i   n   e   s   .  \r   *       E   a   c   h       p   a   i
0036240    r       m   u   s   t       d   i   f   f   e   r       o   n
0036260    l   y       i   n       t   h   e       v   a   l   u   e    
0036300    o   f       D   s   t   F   l   a   g   ,       a   n   d    
0036320    t   h   e       a   d   d   r   e   s   s   e   s  \r   *    
0036340    m   u   s   t       n   e   u   t   r   a   l   i   z   e    
0036360    a   n   y       o   n   e       b   i   t   s       t   h   a
0036400    t       m   a   y       h   a   v   e       b   e   e   n    
0036420    p   r   e   s   e   n   t       f   o   r       s   e   t   u
0036440    p       d   i   s   p   a   t   c   h   .  \r   S   e   t   [
0036460    G   r   a   y   B   o   d   y   L   o   c   ,       1   2   ]
0036500    ; 376 001  \0 220   +  \r   S   e   t   [   G   r   a   y   D
0036520    s   t   B   o   d   y   L   o   c   ,       3   2   ]   ;  \r
0036540   \r   S   e   t   [   S   r   c   B   o   d   y   L   o   c   ,
0036560        1   7   ]   ;  \t  \t   *       T   h   e   s   e       m
0036600    u   s   t       b   e       x   x   x   x   1   1   1   1    
0036620    b   e   c   a   u   s   e       t   h   e   y       c   o   n
0036640    t   a   i   n  \r   S   e   t   [   S   r   c   D   s   t   B
0036660    o   d   y   L   o   c   ,       3   7   ]   ;  \t  \t   *    
0036700        c   o   n   d   i   t   i   o   n   a   l       C   a   l
0036720    l       i   n   s   t   r   u   c   t   i   o   n   s  \r  \f
0036740   \r   *   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0036760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0037020    -   -   -   -   -   -   -   -   -   -   -   -   -  \r   o   p
0037040    B   I   T   B   L   T   :  \r   *   -   -   -   -   -   -   -
0037060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0037100    -   -   -   -   -   - 376 001  \0 200   <   -   -   -   -   -
0037120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0037140    -   -   -   -   -   -   -   -   -  \r  \t   T   _       (   2
0037160    c   )   ;  \r  \t   T   _       (   T   S   P   )       -    
0037200    1   ,       S   t   k   P   _       T   ;  \t  \t  \t  \t  \t
0037220    *       s   e   t       u   p       S   t   k   P       f   o
0037240    r       u   s   e       i   n   t   e   r   n   a   l   l   y
0037260   \r  \t   T   _       (   f   e   t   c   h   _       T   )    
0037300    -       (   2   c   )   ;  \t  \t  \t  \t  \t   *       f   e
0037320    t   c   h       N   S   c   a   n   L   i   n   e   s  \r  \t
0037340    S   t   a   c   k       _       M   D   ,       T   _       (
0037360    f   e   t   c   h   _       T   )       -       1   ;  \r  \t
0037400    T   _       M   d   ,       f   e   t   c   h   _       T   ;
0037420   \t  \t  \t  \t  \t  \t  \t   *       f   e   t   c   h       b
0037440    i   t   b   l   t       t   a   b   l   e  \r  \t   m   e   m
0037460    B   a   s   e   _       B   B   T   a   b   l   e   B   R   ;
0037500       \r  \t   B   r   L   o   _       T   , 376 001  \0 360 213
0037520        T   _       M   d   ;  \r  \t   B   r   H   i   _       T
0037540    ;  \t  \t  \t  \t  \t  \t  \t  \t  \t  \t   *       B   B   T
0037560    a   b   l   e   B   R       n   o   w       p   o   i   n   t
0037600    s       t   o       B   i   t   B   l   t   A   r   g  \r   P
0037620    A   G   E   F   A   U   L   T   O   K   ;  \r  \t   R   B   a
0037640    s   e   _       R   B   a   s   e   [   B   B   R   e   g   s
0037660    ]   ;  \r  \t   F   E   T   C   H   _       B   B   .   f   l
0037700    a   g   s   ;  \t  \t  \t  \t  \t  \t  \t   *       c   a   n
0037720        f   a   u   l   t  \r  \t   B   B   F   l   a   g   s   _
0037740        M   D   ,       F   e   t   c   h   _       B   B   .   h
0037760    e   i   g   h   t   ;  \r  \t   T   _       (   a   d   d   [
0040000    P   S   .   P   F   O   K   !   ,       P   S   .   I   N   B
0040020    I   T   B   L   T   !   ]   c   )   ;  \t   *       P   S   T
0040040    A   T   E       f   l   a   g   s       f   o   r       p   a
0040060    g   e   f   a   u   l   t  \r  \t   P   S   T   A   T   E   _
0040100        T   ;  \r  \t   T   _       L   D   F   [   B   B   F   l
0040120  376 001  \0 021 261   a   g   s   ,       4   ,       1   1   ]
0040140    ;  \t  \t  \t  \t  \t   *       D   i   s   p   a   t   c   h
0040160        o   n       g   r   a   y   ,       s   r   c   F   u   n
0040200    c   ,       d   s   t   F   u   n   c  \r  \t   B   i   g   B
0040220    D   i   s   p   a   t   c   h   _       T   ;  \r  \t   B   r
0040240    a   n   c   h   [   B   B   F   u   n   c   t   i   o   n   T
0040260    a   b   l   e   ]   ;  \r  \r   *   -   -   -   -   -   -   -
0040300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0040360    -   -   -   -  \r   B   B   F   u   n   c   t   i   o   n   T
0040400    a   b   l   e   :       D   i   s   p   T   a   b   l   e   [
0040420    2   0   ]   ;  \t  \t   *       g   r   a   y   ,       s   r
0040440    c   F   u   n   c   ,       d   s   t   F   u   n   c   ,    
0040460    A   L   U       o   p  \r  \t   T   _       1   C   ,       B
0040500    r   a   n   c   h   [   B   B   F   C   ]   ;  \t  \t   *    
0040520    0   ,       0   , 376 001  \0 347   |       0  \t   N   O   T
0040540        A  \r  \t   T   _       2   1   C   ,       B   r   a   n
0040560    c   h   [   B   B   F   D   ]   ;  \t  \t   *       0   ,    
0040600    0   ,       1  \t   N   O   T       A       A   N   D       B
0040620   \r  \t   T   _       5   C   ,       B   r   a   n   c   h   [
0040640    B   B   F   D   ]   ;  \t  \t   *       0   ,       0   ,    
0040660    2  \t   N   O   T       A       O   R       B  \r  \t   T   _
0040700        1   5   C   ,       B   r   a   n   c   h   [   B   B   F
0040720    D   &   T   ]   ;  \t  \t   *       0   ,       0   ,       3
0040740   \t   A       E   Q   V       B  \r  \t   T   _       3   7   C
0040760    ,       B   r   a   n   c   h   [   B   B   F   C   ]   ;  \t
0041000   \t   *       0   ,       1   ,       0  \t   A  \r  \t   T   _
0041020        3   5   C   ,       B   r   a   n   c   h   [   B   B   F
0041040    D   ]   ;  \t  \t   *       0   ,       1   ,       1  \t   A
0041060        A   N   D       B  \r  \t   T   _       2   7   C   ,    
0041100    B   r   a   n   c   h   [   B   B   F   D   ]   ;  \t  \t   *
0041120        0   ,       1   ,       2  \t   A 376 001  \0   ^ 241    
0041140    O   R       B  \r  \t   T   _       2   3   C   ,       B   r
0041160    a   n   c   h   [   B   B   F   D   &   T   ]   ;  \t  \t   *
0041200        0   ,       1   ,       3  \t   A       X   O   R       B
0041220   \r  \t   T   _       1   C   ,       B   r   a   n   c   h   [
0041240    B   B   F   A   ]   ;  \t  \t   *       1   ,       0   ,    
0041260    0  \t   N   O   T       A  \r  \t   T   _       2   1   C   ,
0041300        B   r   a   n   c   h   [   B   B   F   B   ]   ;  \t  \t
0041320    *       1   ,       0   ,       1  \t   N   O   T       A    
0041340    A   N   D       B  \r  \t   T   _       5   C   ,       B   r
0041360    a   n   c   h   [   B   B   F   B   ]   ;  \t  \t   *       1
0041400    ,       0   ,       2  \t   N   O   T       A       O   R    
0041420    B  \r  \t   T   _       1   5   C   ,       B   r   a   n   c
0041440    h   [   B   B   F   B   &   T   ]   ;  \t  \t   *       1   ,
0041460        0   ,       3  \t   A       E   Q   V       B  \r  \t   T
0041500    _       3   7   C   ,       B   r   a   n   c   h   [   B   B
0041520    F   A   ]   ;  \t  \t   *       1   ,       1   ,       0 376
0041540  001  \0 337 332  \t   A  \r  \t   T   _       3   5   C   ,    
0041560    B   r   a   n   c   h   [   B   B   F   B   ]   ;  \t  \t   *
0041600        1   ,       1   ,       1  \t   A       A   N   D       B
0041620   \r  \t   T   _       2   7   C   ,       B   r   a   n   c   h
0041640    [   B   B   F   B   ]   ;  \t  \t   *       1   ,       1   ,
0041660        2  \t   A       O   R       B  \r  \t   T   _       2   3
0041700    C   ,       B   r   a   n   c   h   [   B   B   F   B   &   T
0041720    ]   ;  \t  \t   *       1   ,       1   ,       3  \t   A    
0041740    X   O   R       B  \r   *   -   -   -   -   -   -   -   -   -
0041760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0042040    -   -  \r  \r   *       S   e   l   e   c   t       t   h   e
0042060        a   p   p   r   o   p   r   i   a   t   e       d   i   s
0042100    p   a   t   c   h       w   o   r   d       f   o   r       t
0042120    h   e       f   u   n   c   t   i   o   n   .  \r   B   B   F
0042140    A   :  \t   B 376 001  \0 343 200   B   D   i   s   p   _    
0042160    A   d   d   [   N   o   T   o   u   c   h   F   l   g   ]   C
0042200    ,       B   r   a   n   c   h   [   S   e   t   B   B   F   ]
0042220    ;  \r   B   B   F   B   :  \t   B   B   D   i   s   p   _    
0042240    A   d   d   [   D   s   t   F   l   g   ,       N   o   T   o
0042260    u   c   h   F   l   g   ]   C   ,       B   r   a   n   c   h
0042300    [   S   e   t   B   B   F   ]   ;  \r   B   B   F   B   &   T
0042320    :  \t   B   B   D   i   s   p   _       A   d   d   [   D   s
0042340    t   F   l   g   ]   C   ,       B   r   a   n   c   h   [   S
0042360    e   t   B   B   F   ]   ;  \r   B   B   F   C   :  \t   B   B
0042400    D   i   s   p   _       A   d   d   [   S   r   c   F   l   g
0042420    ,       N   o   T   o   u   c   h   F   l   g   ]   C   ,    
0042440    B   r   a   n   c   h   [   S   e   t   B   B   F   ]   ;  \r
0042460    B   B   F   D   :  \t   B   B   D   i   s   p   _       A   d
0042500    d   [   S   r   c   F   l   g   ,       D   s   t   F   l   g
0042520    ,       N   o   T   o   u   c   h   F   l   g   ]   C   ,    
0042540    B   r   a   n   c   h   [   S   e 376 001  \0 215   l   t   B
0042560    B   F   ]   ;  \r   B   B   F   D   &   T   :  \t   B   B   D
0042600    i   s   p   _       A   d   d   [   S   r   c   F   l   g   ,
0042620        D   s   t   F   l   g   ]   C   ,       B   r   a   n   c
0042640    h   [   S   e   t   B   B   F   ]   ;  \r  \r   S   e   t   B
0042660    B   F   :  \t   A   L   U   F   M   R   W   _       T   ,    
0042700    A   L   U   F   [   1   7   ]   ,  \t  \t   *       S   e   t
0042720        A   L   U       f   u   n   c   t   i   o   n  \r  \t  \t
0042740    T   _       M   D   ;  \t  \t  \t   *       T   _       h   e
0042760    i   g   h   t       i   n       s   c   a   n       l   i   n
0043000    e   s  \r  \r   *       V   C   o   u   n   t   _       (   s
0043020    c   a   n       l   i   n   e   s       l   e   f   t       t
0043040    o       d   o   )   -   1   .           S   t   a   c   k    
0043060    h   a   s       s   c   a   n       l   i   n   e   s       a
0043100    l   r   e   a   d   y       d   o   n   e   .  \r  \t   V   C
0043120    o   u   n   t   _       T   -   (   S   t   a   c   k   )   -
0043140    1   ;  \t  \t   *       h   e   i   g   h   t       - 376 001
0043160   \0 374   J       (   s   c   a   n       l   i   n   e   s    
0043200    d   o   n   e   )       -   1  \r  \f  \r   *   -   -   -   -
0043220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043300    -   -   -   -   -   -   -  \r   *       S   e   t       u   p
0043320        d   e   s   t   i   n   a   t   i   o   n       b   a   s
0043340    e       a   d   d   r   e   s   s  \r   *   -   -   -   -   -
0043360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0043440    -   -   -   -   -   -  \r  \r   *       R   e   g   i   s   t
0043460    e   r   s       i   n       u   s   e   :       (   p   e   r
0043500    m   a   n   e   n   t   )       B   B   D   i   s   p   ,    
0043520    V   C   o   u   n   t   ;       (   t   e   m   p   o   r   a
0043540    r   y   )       B   B   F   l   a   g   s   .  \r  \r  \t   T
0043560    _       ( 376 001  \0   e   p   F   e   t   c   h   _       B
0043600    B   .   d   s   t   B   p   l   )   -   1   ,       B   r   a
0043620    n   c   h   [   B   i   t   B   l   t   D   o   n   e   1   ,
0043640        A   L   U   <   0   ]   ;  \r  \t   F   e   t   c   h   _
0043660        T   ,       D   R   a   s   t   _       M   D   ;  \t  \t
0043700    *       D   R   a   s   t   _       b   i   t   s       p   e
0043720    r       l   i   n   e  \r  \t   P   D   _       (   D   R   a
0043740    s   t   )       A   N   D       (   1   7   C   )   ;  \t  \t
0043760    *       S   e   e       i   f       i   n   t   e   g   r   a
0044000    l       w   o   r   d   s       p   e   r       l   i   n   e
0044020   \r  \t   T   _       S   t   a   c   k   ,       B   r   a   n
0044040    c   h   [   .   +   2   ,       A   L   U   =   0   ]   ;  \r
0044060   \t   T   _       S   t   a   c   k   ,       R   e   s   c   h
0044100    e   d   u   l   e   ;  \t  \t   *       N   o   ,       p   r
0044120    o   c   e   s   s       o   n   l   y       o   n   e       s
0044140    c   a   n       l   i   n   e  \r  \t   Q   _       T   ,    
0044160    B   r   a   n   c   h   [   D 376 001  \0 213       s   t   M
0044200    u   l   t   ]   ;   *   #   #   #   ,       A   L   U   #   0
0044220    ]   ;  \t   *       B   r   a   n   c   h       i   f       r
0044240    e   s   u   m   i   n   g       f   r   o   m       i   n   t
0044260    e   r   r   u   p   t  \r  \r  \t   T   _       (   F   e   t
0044300    c   h   _       B   B   .   d   s   t   L   o   )   +   1   ,
0044320        D   s   t   X   _       M   D   ;       *       D   s   t
0044340    X   _       d   s   t   .   b   i   t  \r  \t   T   _       M
0044360    D   ,       F   e   t   c   h   _       T   ;  \t  \t   *    
0044400    T   _       l   o   w       b   a   s   e       w   o   r   d
0044420        a   d   d   r   e   s   s  \r  \t   B   B   T   e   m   p
0044440    _       M   D   ,       B   r   a   n   c   h   [   D   s   t
0044460    S   e   t   u   p   B   R   ]   ;  \t   *       B   B   T   e
0044500    m   p   _       h   i   g   h       b   a   s   e       w   o
0044520    r   d       a   d   d   r   e   s   s  \r  \r   *       F   o
0044540    l   l   o   w   i   n   g       g   a   r   b   a   g   e    
0044560    i   s       o   n   l   y       e   x   e   c   u 376 001  \0
0044600    S 316   t   e   d       w   h   e   n       r   e   s   u   m
0044620    i   n   g       B   i   t   B   l   t       f   r   o   m    
0044640    a   n       i   n   t   e   r   r   u   p   t  \r   *       o
0044660    r       f   a   u   l   t   .           W   e       m   u   s
0044700    t       c   o   m   p   u   t   e       t   h   e       b   a
0044720    s   e       a   d   d   r   e   s   s       f   o   r       t
0044740    h   e       n   e   x   t       s   c   a   n       l   i   n
0044760    e   .  \r   *       n   .   b   .       o   u   r       l   i
0045000    f   e       i   s       m   a   d   e       v   e   r   y    
0045020    d   i   f   f   i   c   u   l   t       b   y       t   h   e
0045040        p   r   e   s   e   n   c   e       o   f       t   h   e
0045060        B   i   t   A   d   d   r   e   s   s  \r   *       s   t
0045100    r   u   c   t   u   r   e       a   n   d       t   h   e    
0045120    s   p   e   c   i   f   i   c   a   t   i   o   n       o   f
0045140        b   i   t       m   a   p       w   i   d   t   h       i
0045160    n       b   i   t   s       r   a   t   h   e   r       t   h
0045200    a   n 376 001  \0   t 243       w   o   r   d   s   ,  \r   *
0045220        t   o       s   a   y       n   o   t   h   i   n   g    
0045240    o   f       f   e   a   t   u   r   e   s       s   u   c   h
0045260        a   s       b   i   t   s   /   l   i   n   e       b   e
0045300    i   n   g       n   e   g   a   t   i   v   e       i   f    
0045320    d   i   r   e   c   t   i   o   n       =  \r   *       b   a
0045340    c   k   w   a   r   d   s   .           I       a   s   s   u
0045360    m   e       t   h   e   s   e       w   e   r   e       i   n
0045400    t   e   n   d   e   d       t   o       h   e   l   p       t
0045420    h   e       D   o   l   p   h   i   n       i   m   p   l   e
0045440    m   e   n   t   a   t   i   o   n   ,  \r   *       b   u   t
0045460        t   h   e   y       a   r   e       d   e   f   i   n   i
0045500    t   e   l   y       n   o   t       h   e   l   p   f   u   l
0045520    !           A   l   t   o       B   i   t   B   l   t       b
0045540    o   t   h       h   a   d       a       c   l   e   a   n   e
0045560    r  \r   *       i   n   t   e   r   f   a   c   e       a   n
0045600    d       w   a   s       e 376 001  \0 354 317   a   s   i   e
0045620    r       t   o       i   m   p   l   e   m   e   n   t   .  \r
0045640    D   s   t   M   u   l   t   :  \r  \t   D   s   t   X   _    
0045660    M   D   ;  \r  \t   T   _       D   R   a   s   t   ,       C
0045700    a   l   l   [   M   u   l   S   u   b   ]   ;  \t  \t   *    
0045720    T   ,   ,   Q       _       Q   *   T   ,       c   l   o   b
0045740    b   e   r   s       B   B   T   e   m   p  \r  \r   *       N
0045760    o   w       h   a   v   e       3   2   -   b   i   t       b
0046000    i   t       o   f   f   s   e   t       i   n       T   ,   ,
0046020    Q   .           A   d   d       i   t       t   o       b   i
0046040    t       m   a   p       b   a   s   e       a   d   d   r   e
0046060    s   s   .  \r  \t   F   e   t   c   h   _       B   B   .   d
0046100    s   t   L   o   ,       D   R   a   s   t   ,       B   r   a
0046120    n   c   h   [   .   +   2   ,       R   >   =   0   ]   ;    
0046140    *       D   s   t   X   _       d   s   t   .   b   i   t  \r
0046160   \t   T   _       T   -   (   S   t   a   c   k   )   ;  \t  \t
0046200   \t   *       D   R   a   s   t       n   e   g 376 001  \0   S
0046220    R   a   t   i   v   e   ,       a   d   j   u   s   t       h
0046240    i   g   h       r   e   s   u   l   t  \r  \t  \t  \t  \t  \t
0046260    *       t   o       m   a   k   e       i   t       3   2   -
0046300    b   i   t       2   '   s       c   o   m   p   l   e   m   e
0046320    n   t  \r  \t   D   s   t   X   _       (   D   s   t   X   )
0046340    +   Q   ;  \t  \t  \t   *       A   d   d       l   o   w    
0046360    b   i   t       o   f   f   s   e   t       t   o       d   s
0046400    t   .   b   i   t  \r  \t   T   _       B   B   T   e   m   p
0046420    _       A   _       T   ,       X   o   r   S   a   v   e   d
0046440    C   a   r   r   y   ;  \t   *       B   B   T   e   m   p   _
0046460        h   i   g   h       b   i   t       o   f   f   s   e   t
0046500   \r  \t   T   _       R   C   Y   [   T   ,       D   s   t   X
0046520    ,       4   ]   ;  \t  \t   *       C   o   n   v   e   r   t
0046540        t   o       w   o   r   d       o   f   f   s   e   t  \r
0046560   \t   T   _       T   +   M   D   ;  \t  \t  \t   *       A   d
0046600    d       t   o       l   o   w       b   a   s   e       w   o
0046620    r 376 001  \0   S 335   d       a   d   d   r   e   s   s  \r
0046640   \t   D   s   t   X   _       (   D   s   t   X   )       A   N
0046660    D       (   1   7   C   )   ;  \t  \t   *       M   a   s   k
0046700        n   e   w       B   i   t   A   d   d   r   e   s   s   .
0046720    b   i   t  \r  \t   F   e   t   c   h   _       B   B   .   d
0046740    s   t   H   i   ;  \r  \t   B   B   T   e   m   p   _       R
0046760    S   H   [   B   B   T   e   m   p   ,       4   ]   ;  \t  \t
0047000    *       B   B   T   e   m   p   _       h   i   g   h       w
0047020    o   r   d       o   f   f   s   e   t  \r  \t   B   B   T   e
0047040    m   p   _       (   B   B   T   e   m   p   )   +   M   D   ,
0047060        X   o   r   S   a   v   e   d   C   a   r   r   y   ;    
0047100    *       A   d   d       t   o       h   i   g   h       b   a
0047120    s   e       w   o   r   d       a   d   d   r   e   s   s  \r
0047140   \r   *       T   o   g   e   t   h   e   r       a   g   a   i
0047160    n       h   e   r   e   .           N   o   w       B   B   T
0047200    e   m   p   ,   ,   T       =       a   d   j   u   s   t   e
0047220    d       b   a   s   e 376 001  \0 271 371       v   a   l   u
0047240    e   .  \r   D   s   t   S   e   t   u   p   B   R   :  \r  \t
0047260    M   e   m   B   a   s   e   _       B   B   D   s   t   B   R
0047300    ,       D   R   a   s   t   ,       B   r   a   n   c   h   [
0047320    D   s   t   R   e   a   l   l   y   S   e   t   u   p   B   R
0047340    ,       R   >   =   0   ]   ;  \r  \r   *       P   r   o   c
0047360    e   s   s   i   n   g       b   o   t   t   o   m   -   t   o
0047400    -   t   o   p   .  \r   *       D   e   c   r   e   a   s   e
0047420        b   a   s   e       b   y       2   ^   1   5   ,       a
0047440    n   d       (   l   a   t   e   r   )       i   n   c   r   e
0047460    a   s   e       i   n   i   t   i   a   l       d   i   s   p
0047500    l   a   c   e   m   e   n   t       b   y       2   ^   1   5
0047520    .  \r  \t   T   _       T   -   (   1   0   0   0   0   0   C
0047540    )   ;  \r  \t   B   B   T   e   m   p   _       (   B   B   T
0047560    e   m   p   )   -   1   ,       X   o   r   S   a   v   e   d
0047600    C   a   r   r   y   ;  \r  \t   B   B   D   i   s   p   _    
0047620    (   B   B   D   i   s   p   )       O   R 376 001  \0   ` 200
0047640        (   1   0   0   0   0   0   C   )   ;  \t   *       S   e
0047660    t       f   l   a   g       t   o       r   e   m   e   m   b
0047700    e   r       d   i   r   e   c   t   i   o   n  \r  \r   *    
0047720    N   o   w       f   i   n   a   l   l   y       r   e   a   d
0047740    y       t   o       l   o   a   d       t   h   e       b   a
0047760    s   e       r   e   g   i   s   t   e   r   !  \r   D   s   t
0050000    R   e   a   l   l   y   S   e   t   u   p   B   R   :  \r  \t
0050020    B   R   L   o   _       T   ;  \r  \t   B   R   H   i   _    
0050040    B   B   T   e   m   p   ;  \r  \f  \r   *   -   -   -   -   -
0050060    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0050140    -   -   -   -   -   -  \r   *       S   e   t       u   p    
0050160    s   o   u   r   c   e       b   a   s   e       a   d   d   r
0050200    e   s   s  \r   *   -   -   -   -   -   -   -   -   -   -   -
0050220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0050240  376 001  \0 372   ,   -   -   -   -   -   -   -   -   -   -   -
0050260    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0050300    -   -   -   -   -  \r  \r   *       R   e   g   i   s   t   e
0050320    r   s       i   n       u   s   e   :       (   p   e   r   m
0050340    a   n   e   n   t   )       B   B   D   i   s   p   ,       V
0050360    C   o   u   n   t   ,       D   R   a   s   t   ;  \r   *    
0050400    (   t   e   m   p   o   r   a   r   y   )       B   B   F   l
0050420    a   g   s   ,       D   s   t   X   .  \r  \r  \t   M   e   m
0050440    B   a   s   e   _       B   B   T   a   b   l   e   B   R   ;
0050460   \r  \t   T   _       (   F   e   t   c   h   _       B   B   .
0050500    s   r   c   B   p   l   )   -   1   ;  \r  \t   F   e   t   c
0050520    h   _       T   ,       S   R   a   s   t   _       M   D   ,
0050540        B   B   D   i   s   p   ,  \t   *       S   R   a   s   t
0050560    _       b   i   t   s       p   e   r       l   i   n   e  \r
0050600   \t  \t   B   r   a   n   c   h   [   S   r   c   I   s   G   r
0050620    a   y   ,       R       e   v   e   n   ]   ;       *       B
0050640    r   a   n   c   h 376 001  \0 211 276       i   f       s   o
0050660    u   r   c   e       b   i   t       m   a   p       i   s    
0050700    g   r   a   y  \r  \r  \t   P   D   _       (   S   R   a   s
0050720    t   )       A   N   D       (   1   7   C   )   ;  \t  \t   *
0050740        S   e   e       i   f       i   n   t   e   g   r   a   l
0050760        w   o   r   d   s       p   e   r       l   i   n   e  \r
0051000   \t   T   _       S   t   a   c   k   ,       B   r   a   n   c
0051020    h   [   .   +   2   ,       A   L   U   =   0   ]   ;  \r  \t
0051040    T   _       S   t   a   c   k   ,       R   e   s   c   h   e
0051060    d   u   l   e   ;  \t  \t   *       N   o   ,       p   r   o
0051100    c   e   s   s       o   n   l   y       o   n   e       s   c
0051120    a   n       l   i   n   e  \r  \t   Q   _       T   ,       B
0051140    r   a   n   c   h   [   S   r   c   M   u   l   t   ]   ;   *
0051160    #   #   #   ,       A   L   U   #   0   ]   ;  \t   *       B
0051200    r   a   n   c   h       i   f       r   e   s   u   m   i   n
0051220    g       f   r   o   m       i   n   t   e   r   r   u   p   t
0051240   \r  \r  \t   S   r   c   X   _       M 376 001  \0 313   L   D
0051260    ,       T   _       (   F   e   t   c   h   _       B   B   .
0051300    s   r   c   L   o   )   +   1   ;       *       S   r   c   X
0051320    _       s   r   c   .   b   i   t  \r  \t   T   _       M   D
0051340    ,       F   e   t   c   h   _       T   ;  \t  \t   *       T
0051360    _       l   o   w       b   a   s   e       w   o   r   d    
0051400    a   d   d   r   e   s   s  \r  \t   B   B   T   e   m   p   _
0051420        M   D   ,       B   r   a   n   c   h   [   S   r   c   S
0051440    e   t   u   p   B   R   ]   ;  \t   *       B   B   T   e   m
0051460    p   _       h   i   g   h       b   a   s   e       w   o   r
0051500    d       a   d   d   r   e   s   s  \r  \r   *       F   o   l
0051520    l   o   w   i   n   g       g   a   r   b   a   g   e       i
0051540    s       o   n   l   y       e   x   e   c   u   t   e   d    
0051560    w   h   e   n       r   e   s   u   m   i   n   g       B   i
0051600    t   B   l   t       f   r   o   m       a   n       i   n   t
0051620    e   r   r   u   p   t  \r   *       o   r       f   a   u   l
0051640    t   .           W   e       m   u   s   t       c   o   m 376
0051660  001  \0   x   F   p   u   t   e       t   h   e       b   a   s
0051700    e       a   d   d   r   e   s   s       f   o   r       t   h
0051720    e       n   e   x   t       s   c   a   n       l   i   n   e
0051740    .  \r   S   r   c   M   u   l   t   :  \r  \t   S   r   c   X
0051760    _       M   D   ;  \r  \t   T   _       S   R   a   s   t   ,
0052000        C   a   l   l   [   M   u   l   S   u   b   ]   ;  \t  \t
0052020    *       T   ,   ,   Q       _       Q   *   T   ,       c   l
0052040    o   b   b   e   r   s       B   B   T   e   m   p  \r  \r   *
0052060        N   o   w       h   a   v   e       3   2   -   b   i   t
0052100        b   i   t       o   f   f   s   e   t       i   n       T
0052120    ,   ,   Q   .           A   d   d       i   t       t   o    
0052140    b   i   t       m   a   p       b   a   s   e       a   d   d
0052160    r   e   s   s   .  \r  \t   F   e   t   c   h   _       B   B
0052200    .   s   r   c   L   o   ,       S   R   a   s   t   ,       B
0052220    r   a   n   c   h   [   .   +   2   ,       R   >   =   0   ]
0052240    ;       *       S   r   c   X   _       s   r   c   .   b   i
0052260    t  \r  \t   T 376 001  \0 365   =   _       T   -   (   S   t
0052300    a   c   k   )   ;  \t  \t  \t   *       S   R   a   s   t    
0052320    n   e   g   a   t   i   v   e   ,       a   d   j   u   s   t
0052340        h   i   g   h       r   e   s   u   l   t  \r  \t  \t  \t
0052360   \t  \t   *       t   o       m   a   k   e       i   t       3
0052400    2   -   b   i   t       2   '   s       c   o   m   p   l   e
0052420    m   e   n   t  \r  \t   S   r   c   X   _       (   S   r   c
0052440    X   )   +   Q   ;  \t  \t  \t   *       A   d   d       l   o
0052460    w       b   i   t       o   f   f   s   e   t       t   o    
0052500    s   r   c   .   b   i   t  \r  \t   T   _       B   B   T   e
0052520    m   p   _       A   _       T   ,       X   o   r   S   a   v
0052540    e   d   C   a   r   r   y   ;  \t   *       B   B   T   e   m
0052560    p   _       h   i   g   h       b   i   t       o   f   f   s
0052600    e   t  \r  \t   T   _       R   C   Y   [   T   ,       S   r
0052620    c   X   ,       4   ]   ;  \t  \t   *       C   o   n   v   e
0052640    r   t       t   o       w   o   r   d       o   f   f   s   e
0052660    t  \r  \t   T   _       T   +   M 376 001  \0 326   t   D   ;
0052700   \t  \t  \t   *       A   d   d       t   o       l   o   w    
0052720    b   a   s   e       w   o   r   d       a   d   d   r   e   s
0052740    s  \r  \t   S   r   c   X   _       (   S   r   c   X   )    
0052760    A   N   D       (   1   7   C   )   ;  \t  \t   *       M   a
0053000    s   k       n   e   w       B   i   t   A   d   d   r   e   s
0053020    s   .   b   i   t  \r  \t   F   e   t   c   h   _       B   B
0053040    .   s   r   c   H   i   ;  \r  \t   B   B   T   e   m   p   _
0053060        R   S   H   [   B   B   T   e   m   p   ,       4   ]   ;
0053100   \t  \t   *       B   B   T   e   m   p   _       h   i   g   h
0053120        w   o   r   d       o   f   f   s   e   t  \r  \t   B   B
0053140    T   e   m   p   _       (   B   B   T   e   m   p   )   +   M
0053160    D   ,       X   o   r   S   a   v   e   d   C   a   r   r   y
0053200    ;       *       A   d   d       t   o       h   i   g   h    
0053220    b   a   s   e       w   o   r   d       a   d   d   r   e   s
0053240    s  \r  \r   *       T   o   g   e   t   h   e   r       a   g
0053260    a   i   n       h   e   r   e   .           N   o   w 376 001
0053300   \0 006   b       B   B   T   e   m   p   ,   ,   T       =    
0053320    a   d   j   u   s   t   e   d       b   a   s   e       v   a
0053340    l   u   e   .  \r   S   r   c   S   e   t   u   p   B   R   :
0053360   \r  \t   M   e   m   B   a   s   e   _       B   B   S   r   c
0053400    B   R   ,       S   R   a   s   t   ,       B   r   a   n   c
0053420    h   [   .   +   3   ,       R   >   =   0   ]   ;  \r  \r   *
0053440        P   r   o   c   e   s   s   i   n   g       b   o   t   t
0053460    o   m   -   t   o   -   t   o   p   .  \r   *       D   e   c
0053500    r   e   a   s   e       b   a   s   e       b   y       2   ^
0053520    1   5   ,       a   n   d       (   l   a   t   e   r   )    
0053540    i   n   c   r   e   a   s   e       i   n   i   t   i   a   l
0053560        d   i   s   p   l   a   c   e   m   e   n   t       b   y
0053600        2   ^   1   5   .  \r  \t   T   _       T   -   (   1   0
0053620    0   0   0   0   C   )   ;  \r  \t   B   B   T   e   m   p   _
0053640        (   B   B   T   e   m   p   )   -   1   ,       X   o   r
0053660    S   a   v   e   d   C   a   r   r   y   ;  \r  \r   *       N
0053700    o   w     376 001  \0   )   D   f   i   n   a   l   l   y    
0053720    r   e   a   d   y       t   o       l   o   a   d       t   h
0053740    e       b   a   s   e       r   e   g   i   s   t   e   r   !
0053760   \r  \t   P   D   _       (   B   B   F   l   a   g   s   )    
0054000    A   N   D       (   O   r   [   B   B   F   .   d   i   s   j
0054020    o   i   n   t   !   ,       B   B   F   .   d   i   s   j   o
0054040    i   n   t   I   t   e   m   s   !   ]   C   )   ;  \r  \t   B
0054060    R   L   o   _       T   ,       B   r   a   n   c   h   [   .
0054100    +   2   ,       A   L   U   #   0   ]   ;  \r  \t   B   B   D
0054120    i   s   p   _       (   B   B   D   i   s   p   )       A   N
0054140    D       (   N   o   t   [   N   o   T   o   u   c   h   F   l
0054160    g   ]   C   )   ;       *       N   o   t       d   i   s   j
0054200    o   i   n   t   ,       m   u   s   t       t   o   u   c   h
0054220   \r  \t   B   R   H   i   _       B   B   T   e   m   p   ,    
0054240    B   r   a   n   c   h   [   B   B   S   e   t   u   p   X   ]
0054260    ;  \r  \f  \r   *   -   -   -   -   -   -   -   -   -   -   -
0054300    -   -   -   -   -   -   -   - 376 001  \0 036 214   -   -   -
0054320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054360    -   -   -   -   -  \r   *       S   e   t       u   p       g
0054400    r   a   y       s   o   u   r   c   e       b   l   o   c   k
0054420   \r   *   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0054440    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0054500    -   -   -   -   -   -   -   -   -   -   -   -   -  \r  \r   *
0054520        R   e   g   i   s   t   e   r   s       i   n       u   s
0054540    e   :       (   p   e   r   m   a   n   e   n   t   )       B
0054560    B   D   i   s   p   ,       V   C   o   u   n   t   ,       D
0054600    R   a   s   t   ;  \r   *       (   t   e   m   p   o   r   a
0054620    r   y   )       D   s   t   X   .  \r  \r   *       R   e   -
0054640    i   n   t   e   r   p   r   e   t       s   r   c   B   p   l
0054660        a   s       a       G   r   a   y   P   a   r   m       r
0054700    e   c   o   r   d   .  \r   *       N   o   t   e 376 001  \0
0054720  271 335   :       a   s   s   u   m   e       d   i   r   e   c
0054740    t   i   o   n       =       f   o   r   w   a   r   d       a
0054760    l   w   a   y   s       (   r   e   q   u   i   r   e   d    
0055000    b   y       P   r   i   n   c   O   p   s   )   .  \r   *    
0055020    B   B   S   r   c   B   R       w   i   l   l       e   n   d
0055040        u   p       p   o   i   n   t   i   n   g       o   n   e
0055060        b   e   y   o   n   d       t   h   e       e   n   d    
0055100    o   f       t   h   e       g   r   a   y       b   r   i   c
0055120    k       M   O   D       2   ^   1   6   ,  \r   *       a   n
0055140    d       B   B   S   r   c       w   i   l   l       a   d   d
0055160    r   e   s   s       i   t       u   s   i   n   g       t   h
0055200    e       n   e   g   a   t   i   v   e       i   n   d   e   x
0055220    i   n   g       t   r   i   c   k   .  \r   S   r   c   I   s
0055240    G   r   a   y   :  \r  \t   S   r   c   X   _       M   D   ,
0055260        T   _       (   F   e   t   c   h   _       B   B   .   s
0055300    r   c   L   o   )   +   1   ;       *       S   r   c   X   _
0055320        s 376 001  \0   K  \f   r   c   .   b   i   t  \r  \t   B
0055340    B   T   e   m   p   _       M   D   ,       F   e   t   c   h
0055360    _       T   ;  \t  \t   *       B   B   T   e   m   p   _    
0055400    l   o   w       b   a   s   e       a   d   d   r   e   s   s
0055420   \r  \t   T   _       L   D   F   [   S   R   a   s   t   ,    
0055440    4   ,       1   0   ]   ;  \t  \t   *       E   x   t   r   a
0055460    c   t       y   O   f   f   s   e   t  \r  \t   G   r   a   y
0055500    B   u   m   p   _       (   S   R   a   s   t   )       A   N
0055520    D       (   1   7   C   )   ;  \t   *       G   r   a   y   B
0055540    u   m   p   _       h   e   i   g   h   t   M   i   n   u   s
0055560    O   n   e       -   -  \r  \t  \t  \t  \t  \t   *       G   r
0055600    a   y   B   u   m   p       a   n   d       S   R   a   s   t
0055620        a   r   e       s   a   m   e       r   e   g   i   s   t
0055640    e   r  \r  \t   T   _       (   G   r   a   y   B   u   m   p
0055660    )   -   T   ;  \t  \t   *       T   _       h   e   i   g   h
0055700    t   M   i   n   u   s   O   n   e   -   y   O   f   f   s   e
0055720    t  \r  \t   B   B   T   e 376 001  \0   : 343   m   p   _    
0055740    (   B   B   T   e   m   p   )   +   T   +   1   ,       M   e
0055760    m   B   a   s   e   _       B   B   S   r   c   B   R   ;    
0056000    *       E   n   d       o   f       b   r   i   c   k       +
0056020    1  \r  \t   B   B   T   e   m   p   _       M   D   ,       B
0056040    R   L   o   _       B   B   T   e   m   p   ;  \t   *       L
0056060    o   a   d       u   p       t   h   e       b   a   s   e    
0056100    r   e   g   i   s   t   e   r  \r  \t   B   B   T   e   m   p
0056120    _       (   B   B   T   e   m   p   )   -   1   ,       X   o
0056140    r   S   a   v   e   d   C   a   r   r   y   ;       *       h
0056160    i   g   h       b   a   s   e   -   1       f   o   r       n
0056200    e   g   a   t   i   v   e       i   n   d   e   x   i   n   g
0056220   \r  \t   B   R   H   i   _       B   B   T   e   m   p   ;  \r
0056240   \t   P   D   _       S   t   a   c   k   ;  \t  \t  \t   *    
0056260    R   e   s   u   m   i   n   g       f   r   o   m       i   n
0056300    t   e   r   r   u   p   t   ?  \r  \t   T   _       (   G   r
0056320    a   y   B   u   m   p   )   -   T   ,      \t 376 001  \0 376
0056340  364  \t   *       R   e   c   o   v   e   r       y   O   f   f
0056360    s   e   t  \r  \t  \t   B   r   a   n   c   h   [   N   o   G
0056400    r   a   y   D   i   v   ,       A   L   U   =   0   ]   ;    
0056420    *       B   r   a   n   c   h       i   f       n   o       d
0056440    i   v   i   s   i   o   n       r   e   q   u   i   r   e   d
0056460   \r  \r   *       F   o   l   l   o   w   i   n   g       g   a
0056500    r   b   a   g   e       i   s       o   n   l   y       e   x
0056520    e   c   u   t   e   d       w   h   e   n       r   e   s   u
0056540    m   i   n   g       B   i   t   B   l   t       f   r   o   m
0056560        a   n       i   n   t   e   r   r   u   p   t  \r   *    
0056600    o   r       f   a   u   l   t   .           W   e       m   u
0056620    s   t       c   o   m   p   u   t   e       t   h   e       g
0056640    r   a   y   I   n   d   e   x       f   o   r       t   h   e
0056660        n   e   x   t       s   c   a   n       l   i   n   e   .
0056700   \r   *       I   n       g   e   n   e   r   a   l       t   h
0056720    i   s       i   s       (   y   O   f   f   s   e   t       +
0056740      376 001  \0   a 377   s   c   a   n   L   i   n   e   s   D
0056760    o   n   e   )       M   O   D       h   e   i   g   h   t   .
0057000            I       e   x   p   e   c   t       h   e   i   g   h
0057020    t  \r   *       u   s   u   a   l   l   y       t   o       b
0057040    e       a       p   o   w   e   r       o   f       t   w   o
0057060    ,       s   o       o   p   t   i   m   i   z   e       t   h
0057100    i   s       c   a   s   e       a   n   d       o   n   l   y
0057120        d   o       t   h   e  \r   *       f   u   l   l   -   b
0057140    l   o   w   n       M   O   D       o   p   e   r   a   t   i
0057160    o   n       w   h   e   n       n   e   c   e   s   s   a   r
0057200    y   .  \r  \t   T   _       (   S   t   a   c   k   )   +   T
0057220    ;  \t  \t  \t   *       s   c   a   n   L   i   n   e   s   D
0057240    o   n   e       +       y   O   f   f   s   e   t  \r  \t   T
0057260    _       (   G   r   a   y   B   u   m   p   )   +   1   ,    
0057300    Q   _       T   ;  \t  \t   *       T   _       h   e   i   g
0057320    h   t   ,       Q   _       s   c   a   n   L   i   n   e   s
0057340    D   o   n   e   +   y 376 001  \0  \v   3   O   f   f   s   e
0057360    t  \r  \t   B   B   T   e   m   p   _       T   ;  \r  \t   P
0057400    D   _       (   G   r   a   y   B   u   m   p   )       A   N
0057420    D       T   ;  \t  \t   *       =       0       i   f   f    
0057440    h   e   i   g   h   t       i   s       p   o   w   e   r    
0057460    o   f       2  \r  \t   T   _       (   G   r   a   y   B   u
0057500    m   p   )       A   N   D       Q   ,       B   r   a   n   c
0057520    h   [   .   +   2   ,       A   L   U   =   0   ]   ;  \r   *
0057540        D   i   v   S   u   b       p   e   r   f   o   r   m   s
0057560        [   T   :       r   e   m   a   i   n   d   e   r   ,    
0057600    Q   :       q   u   o   t   i   e   n   t   ]       _       (
0057620    T   ,   ,   Q   )   /   B   B   T   e   m   p  \r   *       a
0057640    n   d       c   l   o   b   b   e   r   s       B   B   C   t
0057660    r   l       -   -       b   e   w   a   r   e   !           T
0057700    h   e       d   i   v   i   s   i   o   n       c   a   n   n
0057720    o   t       f   a   i   l   .  \r  \t   T   _       A   0   ,
0057740        C   a   l   l   [   D   i   v   S   u 376 001  \0 032   9
0057760    b   ]   ;  \r  \t   N   o   p   ;  \r  \r   *       T   o   g
0060000    e   t   h   e   r       a   g   a   i   n       h   e   r   e
0060020    .           N   o   w       T       =       a   p   p   r   o
0060040    p   r   i   a   t   e       i   n   i   t   i   a   l       y
0060060        c   o   o   r   d   i   n   a   t   e   .  \r   N   o   G
0060100    r   a   y   D   i   v   :  \r  \t   I   B   B   S   r   c   _
0060120        T   -   (   G   r   a   y   B   u   m   p   )   -   1   ;
0060140   \t  \t   *       I   n   i   t       n   e   g   a   t   i   v
0060160    e       i   n   d   e   x       f   o   r       r   e   f   e
0060200    r   e   n   c   e   s  \r  \f  \r   *   -   -   -   -   -   -
0060220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0060300    -   -   -   -   -  \r   *       X   -   c   o   o   r   d   i
0060320    n   a   t   e       s   e   t   u   p   :       w   i   d   t
0060340    h   s   ,       m   a   r   g   i   n   s   ,       s   k   e
0060360  376 001  \0 375 205   w   ,       m   a   s   k   s   ,       e
0060400    t   c   .  \r   *   -   -   -   -   -   -   -   -   -   -   -
0060420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0060500   \r  \r   *       R   e   g   i   s   t   e   r   s       i   n
0060520        u   s   e   :       (   p   e   r   m   a   n   e   n   t
0060540    )       B   B   D   i   s   p   ,       V   C   o   u   n   t
0060560    ,       D   R   a   s   t   ,       S   R   a   s   t       (
0060600    =       G   r   a   y   B   u   m   p   )   ;  \r   *       (
0060620    t   e   m   p   o   r   a   r   y   )       D   s   t   X   ,
0060640        S   r   c   X       (   =       B   B   S   r   c   )   .
0060660   \r   B   B   S   e   t   u   p   X   :  \r  \t   M   e   m   B
0060700    a   s   e   _       B   B   T   a   b   l   e   B   R   ;  \r
0060720   \t   F   e   t   c   h   _       B   B   .   w   i   d   t   h
0060740    ;  \r  \t   W   i   d   t   h   _       M   D   ,       T   _
0060760        A   0   ;  \r 376 001  \0   9 031  \r   *       C   o   m
0061000    p   u   t   e       L   M   a   s   k       a   n   d       R
0061020    M   a   s   k   .  \r   *       L   M   a   s   k       =    
0061040    d   s   t   .   b   i   t   .  \r   *       R   M   a   s   k
0061060        =       1   7   -   (   (   d   s   t   .   b   i   t   +
0061100    w   i   d   t   h   -   1   )       m   o   d       2   0   )
0061120        =       (   -   d   s   t   .   b   i   t   -   w   i   d
0061140    t   h   )       m   o   d       2   0   .  \r   *       F   o
0061160    r       r   e   f   e   r   e   n   c   e   ,       S   H   C
0061200        f   i   e   l   d   s       a   r   e   :  \r   *        
0061220    B   2   :       S   H   A   =   T   ,       B   3   :       S
0061240    H   B   =   T   ,       B   4   -   7   :       c   o   u   n
0061260    t   ,       B   8   -   1   1   :       R   M   a   s   k   ,
0061300        B   1   2   -   1   5   :       L   M   a   s   k  \r  \t
0061320    T   _       T   -   (   W   i   d   t   h   )   ;  \t  \t  \t
0061340    *       T   _       -   w   i   d   t   h  \r  \t   T   _    
0061360    T   -   (   D   s   t   X   )   ,  \t 376 001  \0 362   X  \t
0061400   \t   *       T   _       -   d   s   t   .   b   i   t   -   w
0061420    i   d   t   h  \r  \t  \t   B   r   a   n   c   h   [   B   i
0061440    t   B   l   t   D   o   n   e   2   ,       A   L   U   >   =
0061460    0   ]   ;       *       S   t   o   p       h   e   r   e    
0061500    i   f       w   i   d   t   h       <   =       0  \r  \t   T
0061520    _       D   P   F   [   T   ,       4   ,       4   ]   ;  \t
0061540   \t   *       B   8   -   1   1   _   (   (   -   d   s   t   .
0061560    b   i   t   -   w   i   d   t   h   )   m   o   d       2   0
0061600    )       l   s   h       4  \r  \t   B   B   M   a   s   k   s
0061620    _       T       O   R       (   D   s   t   X   )   ;  \t  \t
0061640    *       B   1   2   -   1   5   _       d   s   t   .   b   i
0061660    t  \r  \r   *       C   o   m   p   u   t   e       d   e   s
0061700    t   i   n   a   t   i   o   n       w   i   d   t   h       i
0061720    n       w   o   r   d   s   ,       i   n   c   l   u   d   i
0061740    n   g       f   i   r   s   t       a   n   d       l   a   s
0061760    t       p   a   r   t   i   a   l       w   o   r   d   s 376
0062000  001  \0   T 002   .  \r   *       D   W   i   d   t   h   _    
0062020    (   w   i   d   t   h       +       d   s   t   .   b   i   t
0062040        +   1   7   )       /       2   0   .  \r  \t   T   _    
0062060    (   W   i   d   t   h   )   +   (   1   7   C   )   ;  \r  \t
0062100    T   _       T   +   (   Q   _       D   s   t   X   )   ;  \r
0062120   \t   D   W   i   d   t   h   _       R   S   H   [   T   ,    
0062140    4   ]   ;  \r  \r  \t   B   B   C   t   r   l   _       (   B
0062160    B   D   i   s   p   )   -   (   B   B   D   i   s   p   )   -
0062200    1   ,  \t   *       B   B   C   t   r   l   [   0   ]       _
0062220        1       i   n       c   a   s   e       g   r   a   y    
0062240    s   o   u   r   c   e  \r  \t  \t   B   r   a   n   c   h   [
0062260    B   B   N   o   S   e   t   u   p   S   r   c   X   ,       R
0062300        e   v   e   n   ]   ;       *       B   r   a   n   c   h
0062320        i   f       g   r   a   y  \r  \r   *       C   o   m   p
0062340    u   t   e       s   o   u   r   c   e       w   i   d   t   h
0062360        i   n       w   o   r   d   s   ,       i   n   c   l   u
0062400    d   i   n   g 376 001  \0   D 260       f   i   r   s   t    
0062420    a   n   d       l   a   s   t       p   a   r   t   i   a   l
0062440        w   o   r   d   s   .  \r   *       S   W   i   d   t   h
0062460    _       (   w   i   d   t   h       +       s   r   c   .   b
0062500    i   t       +   1   7   )       /       2   0   .  \r  \t   T
0062520    _       (   S   r   c   X   )   +   (   1   7   C   )   ;  \r
0062540   \t   T   _       (   W   i   d   t   h   )   +   T   ;  \r  \t
0062560    S   W   i   d   t   h   _       T   _       R   S   H   [   T
0062600    ,       4   ]   ;  \r  \r   *       S   e   t       f   l   a
0062620    g   s       t   o       c   o   n   t   r   o   l       f   e
0062640    t   c   h   i   n   g       o   f       "   e   x   t   r   a
0062660    "       f   i   r   s   t       a   n   d       l   a   s   t
0062700        w   o   r   d   s   .  \r   *       E   x   c   e   p   t
0062720        i   n       t   h   e       "   t   h   i   n   "       c
0062740    a   s   e       (   D   W   i   d   t   h   =   1   )   ,    
0062760    t   h   e       s   e   t   u   p   /   f   i   n   i   s   h
0063000        r   o   u   t   i   n   e   s 376 001  \0 214 237       f
0063020    o   r       t   h   e  \r   *       h   o   r   i   z   o   n
0063040    t   a   l       l   o   o   p   s       n   o   m   i   n   a
0063060    l   l   y       f   e   t   c   h       1       w   o   r   d
0063100        a   n   d       s   t   o   r   e       2       w   o   r
0063120    d   s   ;       a   n       e   x   t   r   a       f   e   t
0063140    c   h  \r   *       m   a   y       b   e       r   e   q   u
0063160    i   r   e   d       a   t       t   h   e       b   e   g   i
0063200    n   n   i   n   g   ,       t   h   e       e   n   d   ,    
0063220    o   r       b   o   t   h   ,       d   e   p   e   n   d   i
0063240    n   g       o   n       t   h   e       n   u   m   b   e   r
0063260   \r   *       o   f       w   o   r   d   s       i   n       t
0063300    h   e       s   o   u   r   c   e       a   n   d       d   e
0063320    s   t   i   n   a   t   i   o   n       i   t   e   m   s    
0063340    (   s   e   e       i   n   t   r   o   d   u   c   t   o   r
0063360    y       c   o   m   m   e   n   t   s   )   .  \r   *       D
0063400    W   i   d   t   h       a   n   d       S   W   i   d 376 001
0063420   \0 036 366   t   h       d   i   f   f   e   r       b   y    
0063440    a   t       m   o   s   t       +   /   -   1   .  \r   *    
0063460    I   f       S   W   i   d   t   h       =       D   W   i   d
0063500    t   h   +   1   ,       a   n       e   x   t   r   a       s
0063520    o   u   r   c   e       w   o   r   d       m   u   s   t    
0063540    b   e       f   e   t   c   h   e   d       a   t       b   o
0063560    t   h       e   n   d   s   .  \r   *       I   f       S   W
0063600    i   d   t   h       =       D   W   i   d   t   h   -   1    
0063620    o   r       S   W   i   d   t   h       =       1   ,       n
0063640    o       e   x   t   r   a       s   o   u   r   c   e       w
0063660    o   r   d   s       n   e   e   d       b   e       f   e   t
0063700    c   h   e   d   .  \r   *       I   f       S   W   i   d   t
0063720    h       =       D   W   i   d   t   h       #       1   ,    
0063740    a   n       e   x   t   r   a       s   o   u   r   c   e    
0063760    w   o   r   d       m   u   s   t       b   e       f   e   t
0064000    c   h   e   d       a   t       o   n   e       e   n   d   :
0064020   \r   *     376 001  \0 356 236           i   f       s   r   c
0064040    .   b   i   t       m   o   d       2   0       >       d   s
0064060    t   .   b   i   t       m   o   d       2   0       t   h   e
0064100    n       l   e   f   t       e   l   s   e       r   i   g   h
0064120    t   .  \r   *       S   e   t       B   B   C   t   r   l   [
0064140    0   ]   _       e   x   t   r   a   L   e   f   t   ,       B
0064160    B   C   t   r   l   [   1   :   1   5   ]   _       e   x   t
0064200    r   a   R   i   g   h   t   .  \r   *       (   t   h   e   s
0064220    e       f   l   a   g   s       a   r   e       e   x   c   h
0064240    a   n   g   e   d       l   a   t   e   r       i   f       w
0064260    o   r   k   i   n   g       r   i   g   h   t   -   t   o   -
0064300    l   e   f   t   .   )  \r   *       T       s   t   i   l   l
0064320        h   a   s       S   W   i   d   t   h   ;       Q       s
0064340    t   i   l   l       h   a   s       d   s   t   .   b   i   t
0064360    .  \r   *       T   h   e       f   o   l   l   o   w   i   n
0064400    g       2       i   n   s   t   r   u   c   t   i   o   n   s
0064420        s   e   t       B   B   C 376 001  \0 324   `   t   r   l
0064440    _       -   1       i   f       S   W   i   d   t   h   >   D
0064460    W   i   d   t   h   ,       0       o   t   h   e   r   w   i
0064500    s   e   .  \r  \t   P   D   _       (   D   W   i   d   t   h
0064520    )   -   T   ;  \r  \t   B   B   C   t   r   l   _       T   -
0064540    T   -   1   ,       X   o   r   S   a   v   e   d   C   a   r
0064560    r   y   ,       B   r   a   n   c   h   [   S   e   t   u   p
0064600    S   k   e   w   ,       A   L   U   #   0   ]   ;  \r  \r   *
0064620        S   e   t       B   B   C   t   r   l   _       1   0   0
0064640    0   0   0       i   f       s   r   c   .   b   i   t       >
0064660        d   s   t   .   b   i   t   ,       7   7   7   7   7    
0064700    o   t   h   e   r   w   i   s   e   .  \r  \t   P   D   _    
0064720    (   S   r   c   X   )   -   Q   -   1   ;  \t  \t  \t   *    
0064740    Q   =   D   s   t   X   ;       c   a   r   r   y       i   f
0064760    f       s   r   c   .   b   i   t       >       d   s   t   .
0065000    b   i   t  \r  \t   B   B   C   t   r   l   _       1   0   0
0065020    0   0   0   C   ;  \r  \t   B   B   C   t   r   l 376 001  \0
0065040    > 370   _       (   B   B   C   t   r   l   )   -   1   ,    
0065060    X   o   r   S   a   v   e   d   C   a   r   r   y   ,       B
0065100    r   a   n   c   h   [   S   e   t   u   p   S   k   e   w   ]
0065120    ;  \r  \r   B   B   N   o   S   e   t   u   p   S   r   c   X
0065140    :  \r  \t   N   o   p   ;  \r  \f  \r   *       X   -   c   o
0065160    o   r   d   i   n   a   t   e       s   e   t   u   p       (
0065200    c   o   n   t   '   d   )  \r  \r   *       C   o   m   p   u
0065220    t   e       s   k   e   w       =       (   s   r   c   .   b
0065240    i   t   -   d   s   t   .   b   i   t   )       m   o   d    
0065260    2   0   ,       a   n   d       d   e   t   e   r   m   i   n
0065300    e       h   o   r   i   z   o   n   t   a   l       d   i   r
0065320    e   c   t   i   o   n   .  \r   *       S   t   i   l   l    
0065340    h   a   v   e       Q       =       d   s   t   .   b   i   t
0065360    .  \r   S   e   t   u   p   S   k   e   w   :  \r  \t   T   _
0065400        (   S   r   c   X   )   -   Q   ;  \r  \t   P   D   _    
0065420    B   B   D   i   s   p   ,       B   r   a   n   c   h   [   .
0065440    +   2 376 001  \0 244  \r   ,       R       e   v   e   n   ]
0065460    ;  \r  \t   S   k   e   w   _       T       A   N   D       (
0065500    1   7   C   )   ,       D   b   l   B   r   a   n   c   h   [
0065520    S   e   t   u   p   R   t   o   L   ,       S   e   t   u   p
0065540    L   t   o   R   ,       A   L   U   <   0   ]   ;  \r  \r  \t
0065560    B   B   S   r   c   _       I   B   B   S   r   c   ;  \t  \t
0065600   \t   *       G   r   a   y   ,       i   n   i   t       s   o
0065620    u   r   c   e       p   t   r  \r  \t   S   k   e   w   _    
0065640    T       A   N   D       (   1   7   C   )   ;  \r  \t   T   _
0065660        2   0   0   C   ,       B   r   a   n   c   h   [   N   o
0065700    S   r   c   T   h   i   n   C   h   k   ]   ;  \t   *       A
0065720    L   U   F   M       c   o   n   t   r   o   l       f   o   r
0065740        "   A   +   1   "  \r  \r   *       d   i   r   e   c   t
0065760    i   o   n       =       f   o   r   w   a   r   d   :       w
0066000    o   r   k       f   r   o   m       l   e   f   t       t   o
0066020        r   i   g   h   t   .  \r   *       S   e   t       S   H
0066040    A   =   R   ,       S   H 376 001  \0 221   S   B   =   T   ,
0066060        A   L   U   F   [   1   5   ]   =   "   A   +   1   "   .
0066100   \r   *       N   o   t   e   :       i   f       s   k   e   w
0066120        =       0   ,       s   e   t       S   H   A   =   R   ,
0066140        S   H   B   =   R   .  \r   S   e   t   u   p   L   t   o
0066160    R   :  \r  \t   T   _       2   0   0   C   ,       B   r   a
0066200    n   c   h   [   N   o   S   r   c   T   h   i   n   C   h   k
0066220    ,       A   L   U   =   0   ]   ;       *       A   L   U   F
0066240    M       c   o   n   t   r   o   l       f   o   r       "   A
0066260    +   1   "  \r  \t   S   k   e   w   _       (   S   k   e   w
0066300    )       O   R       (   2   0   C   )   ,       B   r   a   n
0066320    c   h   [   S   e   t   u   p   A   L   U   &   S   h   C   ]
0066340    ;       *       S   H   B   =   T  \r  \r   *       d   i   r
0066360    e   c   t   i   o   n       =       b   a   c   k   w   a   r
0066400    d   :       w   o   r   k       f   r   o   m       r   i   g
0066420    h   t       t   o       l   e   f   t   .  \r   *       S   e
0066440    t       S   H   A   =   T   ,       S   H   B 376 001  \0 331
0066460    }   =   R   ,       A   L   U   F   [   1   5   ]   =   "   A
0066500    -   1   "   .  \r   *       A   d   v   a   n   c   e       s
0066520    t   a   r   t   i   n   g       X       c   o   o   r   d   i
0066540    n   a   t   e   s       t   o       r   i   g   h   t   m   o
0066560    s   t       e   n   d   s       o   f       i   t   e   m   s
0066600    .  \r   *       N   o   t   e   :       i   f       s   k   e
0066620    w       =       0   ,       s   e   t       S   H   A   =   R
0066640    ,       S   H   B   =   R   ,       a   n   d       d   o    
0066660    n   o   t       e   x   c   h   a   n   g   e       e   x   t
0066700    r   a   -   w   o   r   d       f   l   a   g   s   .  \r   S
0066720    e   t   u   p   R   t   o   L   :  \r  \t   B   B   D   i   s
0066740    p   _       (   B   B   D   i   s   p   )       O   R       (
0066760    1   0   0   0   0   0   C   )   ,       B   r   a   n   c   h
0067000    [   .   +   3   ,       A   L   U   =   0   ]   ;  \r  \t   S
0067020    k   e   w   _       (   S   k   e   w   )       O   R       (
0067040    4   0   C   )   ;  \t  \t   *       S   H   A   =   T  \r  \t
0067060    B 376 001  \0 255 300   B   C   t   r   l   _       (   B   B
0067100    C   t   r   l   )       L   C   Y       1   ;  \t  \t   *    
0067120    E   x   c   h   a   n   g   e       s   o   u   r   c   e    
0067140    e   x   t   r   a   -   w   o   r   d       f   l   a   g   s
0067160   \r  \t   T   _       (   W   i   d   t   h   )   -   1   ;  \r
0067200   \t   D   s   t   X   _       (   D   s   t   X   )   +   T   ;
0067220   \t  \t  \t   *       A   d   v   a   n   c   e       t   o    
0067240    r   i   g   h   t   m   o   s   t       X   -   c   o   o   r
0067260    d   i   n   a   t   e   s  \r  \t   S   r   c   X   _       (
0067300    S   r   c   X   )   +   T   ;  \t  \t  \t   *       A   d   v
0067320    a   n   c   e       n   o   n   -   g   r   a   y       s   o
0067340    u   r   c   e  \r  \t   T   _       3   6   C   ;  \t  \t  \t
0067360   \t   *       A   L   U   F   M       c   o   n   t   r   o   l
0067400        f   o   r       "   A   -   1   "  \r  \r   *       H   a
0067420    v   e       A   L   U   F   M       c   o   n   t   r   o   l
0067440        i   n       T       f   o   r       "   A   +   /   -   1
0067460    "       o   p   e   r 376 001  \0       G   a   t   i   o   n
0067500    .  \r   S   e   t   u   p   A   L   U   &   S   h   C   :  \r
0067520   \t   P   D   _       (   S   W   i   d   t   h   )   -   1   ;
0067540   \t  \t  \t   *       T   h   i   n       s   o   u   r   c   e
0067560        c   h   e   c   k       (   s   e   e       b   e   l   o
0067600    w   )  \r   N   o   S   r   c   T   h   i   n   C   h   k   :
0067620   \r  \t   A   L   U   F   M   R   W   _       T   ,       A   +
0067640    /   -   1   ,  \t  \t   *       S   e   t       A   L   U    
0067660    f   u   n   c   t   i   o   n  \r  \t  \t   B   r   a   n   c
0067700    h   [   S   e   t   u   p   S   h   C   ,       A   L   U   #
0067720    0   ]   ;       *      \r  \r   *       I   f       w   e    
0067740    w   o   u   l   d       h   a   v   e       f   e   t   c   h
0067760    e   d       a   n       e   x   t   r   a       s   o   u   r
0070000    c   e       w   o   r   d   ,       b   u   t       t   h   e
0070020    r   e       i   s       o   n   l   y       o   n   e       s
0070040    o   u   r   c   e  \r   *       w   o   r   d       t   o    
0070060    f   e   t   c   h   ,       t   h   e   n 376 001  \0 315   '
0070100        r   e   s   e   t       s   o   u   r   c   e       e   x
0070120    t   r   a   -   w   o   r   d       f   l   a   g   s       a
0070140    n   d       s   e   t       S   H   A   =   R   ,       S   H
0070160    B   =   R   .  \r  \t   B   B   C   t   r   l   _       A   0
0070200    ,       B   r   a   n   c   h   [   .   +   2   ,       R   >
0070220    =   0   ]   ;  \r  \t   S   k   e   w   _       (   S   k   e
0070240    w   )       A   N   D       (   1   7   C   )   ;  \r  \t   T
0070260    _       L   S   H   [   B   B   M   a   s   k   s   ,       1
0070300    0   ]   ,       B   r   a   n   c   h   [   .   +   2   ]   ;
0070320        *       P   l   a   c   e   m   e   n   t  \r  \r   *    
0070340    M   e   r   g   e       s   k   e   w       w   i   t   h    
0070360    m   a   s   k   s       a   n   d       l   o   a   d       S
0070400    H   C   .  \r   S   e   t   u   p   S   h   C   :  \r  \t   T
0070420    _       L   S   H   [   B   B   M   a   s   k   s   ,       1
0070440    0   ]   ;  \t  \t   *       S   h   i   f   t       m   a   s
0070460    k   s       t   o       B   0   -   7  \r  \t   T   _       L
0070500  376 001  \0 271 256   C   Y   [   T   ,       S   k   e   w   ,
0070520        1   0   ]   ;  \t  \t   *       C   o   n   c   a   t   e
0070540    n   a   t   e       S   H   A   ,       S   H   B   ,       c
0070560    o   u   n   t   ,       m   a   s   k   s  \r  \t   T   _    
0070600    D   W   i   d   t   h   ,       S   h   C   _       T   ;  \r
0070620   \f  \r   *   -   -   -   -   -   -   -   -   -   -   -   -   -
0070640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0070700    -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r   *
0070720        C   o   m   p   u   t   e       w   o   r   d       a   d
0070740    d   r   e   s   s   e   s       a   n   d       i   n   c   r
0070760    e   m   e   n   t   s  \r   *   -   -   -   -   -   -   -   -
0071000    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0071060    -   -   -  \r  \r   *       R   e   g   i   s   t   e   r   s
0071100        i   n       u 376 001  \0 216   {   s   e   :       (   p
0071120    e   r   m   a   n   e   n   t   )       B   B   D   i   s   p
0071140    ,       V   C   o   u   n   t   ,       D   R   a   s   t   ,
0071160        S   R   a   s   t   ,       W   i   d   t   h   ,       B
0071200    B   C   t   r   l   ;  \r   *       (   t   e   m   p   o   r
0071220    a   r   y   )       D   s   t   X   ,       S   r   c   X   ,
0071240        D   W   i   d   t   h   ,       S   W   i   d   t   h   .
0071260   \r   *       N   o   t   e   :       a   t       t   h   i   s
0071300        p   o   i   n   t       D   R   a   s   t       a   n   d
0071320        S   R   a   s   t       a   r   e       s   t   i   l   l
0071340        i   n       u   n   i   t   s       o   f       b   i   t
0071360    s   .  \r  \r   *       C   o   n   v   e   r   t       D   s
0071400    t   X       t   o       X       w   o   r   d       d   i   s
0071420    p   l   a   c   e   m   e   n   t       r   e   l   a   t   i
0071440    v   e       t   o       l   e   f   t   m   o   s   t       w
0071460    o   r   d       o   f  \r   *       f   i   r   s   t       s
0071500    c   a   n       l   i   n   e   .     376 001  \0 352 243    
0071520    N   o   t   e   :       B   B   D   s   t       i   s       t
0071540    h   e       s   a   m   e       r   e   g   i   s   t   e   r
0071560        a   s       D   s   t   X   .  \r  \t   B   B   D   s   t
0071600    _       R   S   H   [   D   s   t   X   ,       4   ]   ;  \t
0071620   \t   *       B   B   D   s   t   _       D   s   t   X   /   2
0071640    0  \r  \r   *       C   o   m   p   u   t   e       d   e   s
0071660    t   i   n   a   t   i   o   n       i   n   t   e   r   -   s
0071700    c   a   n   -   l   i   n   e       w   o   r   d       a   d
0071720    d   r   e   s   s       i   n   c   r   e   m   e   n   t   .
0071740   \r   *       D   s   t   I   n   c   _       D   R   a   s   t
0071760        +       (   i   f       d   i   r   e   c   t   i   o   n
0072000    =   f   o   r   w   a   r   d       t   h   e   n       -   D
0072020    W   i   d   t   h       e   l   s   e       D   W   i   d   t
0072040    h   )   .  \r   *       A   l   s   o       c   o   m   p   u
0072060    t   e       f   i   r   s   t       P   r   e   F   e   t   c
0072100    h       o   f   f   s   e   t       (   f   r   o   m     376
0072120  001  \0 205 214   B   B   D   s   t   )   .  \r   *       =    
0072140    l   e   f   t   m   o   s   t       w   o   r   d       o   n
0072160        n   e   x   t       s   c   a   n       l   i   n   e   ,
0072200        e   v   e   n       i   f       p   r   o   c   e   s   s
0072220    i   n   g       r   i   g   h   t   -   t   o   -   l   e   f
0072240    t   .  \r   *       D   P   r   e   f   O   f   f   s   e   t
0072260    _       i   f       d   i   r   e   c   t   i   o   n   =   f
0072300    o   r   w   a   r   d       t   h   e   n       D   R   a   s
0072320    t       e   l   s   e       D   R   a   s   t   -   D   W   i
0072340    d   t   h   .  \r   *       F   i   n   a   l   l   y   ,    
0072360    i   f       d   i   r   e   c   t   i   o   n   =   b   a   c
0072400    k   w   a   r   d       t   h   e   n       a   d   d       2
0072420    ^   1   5       t   o       t   h   e       w   o   r   d    
0072440    a   d   d   r   e   s   s   ,  \r   *       w   h   i   c   h
0072460        w   i   l   l       b   e       c   o   u   n   t   e   d
0072500        d   o   w   n       t   o   w   a   r   d       t   h   e
0072520        b   a   s 376 001  \0 274 245   e       r   e   g   i   s
0072540    t   e   r       w   h   i   c   h       w   a   s       i   n
0072560    i   t   i   a   l   i   z   e   d  \r   *       t   o       t
0072600    h   e       l   e   f   t   m   o   s   t       w   o   r   d
0072620        o   f       t   h   e       f   i   r   s   t       s   c
0072640    a   n       l   i   n   e       -   2   ^   1   5   .  \r   *
0072660        N   o   t   e   :       T       =       D   W   i   d   t
0072700    h       h   e   r   e   .  \r  \t   D   R   a   s   t   _    
0072720    R   S   H   [   D   R   a   s   t   ,       4   ]   ,  \t  \t
0072740    *       C   o   n   v   e   r   t       D   R   a   s   t    
0072760    t   o       w   o   r   d   s  \r  \t  \t   B   r   a   n   c
0073000    h   [   D   s   t   I   n   c   R   t   o   L   ,       R   <
0073020    0   ]   ;       *       B   r   a   n   c   h       i   f    
0073040    d   i   r   e   c   t   i   o   n   =   b   a   c   k   w   a
0073060    r   d  \r  \r   D   s   t   I   n   c   L   t   o   R   :  \r
0073100   \t   D   s   t   I   n   c   _       (   D   R   a   s   t   )
0073120    -   T   ;  \t  \t   *       L     376 001  \0 235   p   t   o
0073140        R   :       D   R   a   s   t   -   D   W   i   d   t   h
0073160   \r  \t   D   P   r   e   f   O   f   f   s   e   t   _       T
0073200    _       D   R   a   s   t   ,       B   r   a   n   c   h   [
0073220    D   s   t   I   n   c   D   o   n   e   ]   ;  \r  \r   D   s
0073240    t   I   n   c   R   t   o   L   :  \r  \t   D   R   a   s   t
0073260    _       (   D   R   a   s   t   )       O   R       (   1   7
0073300    0   0   0   0   C   )   ;  \t   *       E   x   t   e   n   d
0073320        s   i   g   n  \r  \t   D   s   t   I   n   c   _       (
0073340    D   R   a   s   t   )   +   T   ;  \t  \t   *       R       t
0073360    o       L   :       D   R   a   s   t   +   D   W   i   d   t
0073400    h  \r  \t   D   P   r   e   f   O   f   f   s   e   t   _    
0073420    T   _       (   D   R   a   s   t   )   -   T   ;  \r  \t   B
0073440    B   D   s   t   _       (   B   B   D   s   t   )   +   (   1
0073460    0   0   0   0   0   C   )   ;  \r  \r   D   s   t   I   n   c
0073500    D   o   n   e   :  \r  \t   P   r   e   f   D   s   t   _    
0073520    (   B   B   D   s   t   )   +   T   ;  \t  \t   *     376 001
0073540   \0 325 027   I   n   i   t   i   a   l       P   r   e   F   e
0073560    t   c   h       a   d   d   r   e   s   s  \r  \r   *       I
0073600    s       a       s   o   u   r   c   e       i   t   e   m    
0073620    r   e   q   u   i   r   e   d   ?           I   f       n   o
0073640    t   ,       s   k   i   p       s   o   u   r   c   e       s
0073660    e   t   u   p   .  \r  \t   B   B   D   i   s   p   ,       B
0073700    r   a   n   c   h   [   B   B   N   o   S   o   u   r   c   e
0073720    ,       R       e   v   e   n   ]   ;  \r  \r   *       C   o
0073740    n   v   e   r   t       S   r   c   X       t   o       X    
0073760    w   o   r   d       d   i   s   p   l   a   c   e   m   e   n
0074000    t       r   e   l   a   t   i   v   e       t   o       l   e
0074020    f   t   m   o   s   t       w   o   r   d       o   f  \r   *
0074040        f   i   r   s   t       s   c   a   n       l   i   n   e
0074060    .           N   o   t   e   :       B   B   S   r   c       i
0074100    s       t   h   e       s   a   m   e       r   e   g   i   s
0074120    t   e   r       a   s       S   r   c   X   .  \r  \t   B   B
0074140    S   r   c 376 001  \0 252 345   _       R   S   H   [   S   r
0074160    c   X   ,       4   ]   ;  \t  \t   *       B   B   S   r   c
0074200    _       S   r   c   X   /   2   0  \r  \r   *       C   o   m
0074220    p   u   t   e       s   o   u   r   c   e       i   n   t   e
0074240    r   -   s   c   a   n   -   l   i   n   e       w   o   r   d
0074260        a   d   d   r   e   s   s       i   n   c   r   e   m   e
0074300    n   t   .  \r   *       S   r   c   I   n   c   _       S   R
0074320    a   s   t       +       (   i   f       d   i   r   e   c   t
0074340    i   o   n   =   f   o   r   w   a   r   d       t   h   e   n
0074360        -   S   W   i   d   t   h       e   l   s   e       S   W
0074400    i   d   t   h   )   .  \r   *       A   l   s   o       c   o
0074420    m   p   u   t   e       f   i   r   s   t       P   r   e   F
0074440    e   t   c   h       o   f   f   s   e   t       (   f   r   o
0074460    m       B   B   S   r   c   )   .  \r   *       =       l   e
0074500    f   t   m   o   s   t       w   o   r   d       o   n       n
0074520    e   x   t       s   c   a   n       l   i   n   e   ,       e
0074540    v   e   n       i   f       p 376 001  \0 024   4   r   o   c
0074560    e   s   s   i   n   g       r   i   g   h   t   -   t   o   -
0074600    l   e   f   t   .  \r   *       S   P   r   e   f   O   f   f
0074620    s   e   t   _       i   f       d   i   r   e   c   t   i   o
0074640    n   =   f   o   r   w   a   r   d       t   h   e   n       S
0074660    R   a   s   t       e   l   s   e       S   R   a   s   t   -
0074700    S   W   i   d   t   h   .  \r   *       F   i   n   a   l   l
0074720    y   ,       i   f       d   i   r   e   c   t   i   o   n   =
0074740    b   a   c   k   w   a   r   d       t   h   e   n       a   d
0074760    d       2   ^   1   5       t   o       t   h   e       w   o
0075000    r   d       a   d   d   r   e   s   s   ,  \r   *       w   h
0075020    i   c   h       w   i   l   l       b   e       c   o   u   n
0075040    t   e   d       d   o   w   n       t   o   w   a   r   d    
0075060    t   h   e       b   a   s   e       r   e   g   i   s   t   e
0075100    r       w   h   i   c   h       w   a   s       i   n   i   t
0075120    i   a   l   i   z   e   d  \r   *       t   o       t   h   e
0075140        l   e   f   t   m   o   s   t       w   o   r 376 001  \0
0075160   \r       d       o   f       t   h   e       f   i   r   s   t
0075200        s   c   a   n       l   i   n   e       -   2   ^   1   5
0075220    .  \r  \t   T   _       S   W   i   d   t   h   ;  \r  \t   S
0075240    R   a   s   t   _       R   S   H   [   S   R   a   s   t   ,
0075260        4   ]   ,  \t  \t   *       C   o   n   v   e   r   t    
0075300    S   R   a   s   t       t   o       w   o   r   d   s  \r  \t
0075320   \t   B   r   a   n   c   h   [   S   r   c   I   n   c   R   t
0075340    o   L   ,       R   <   0   ]   ;       *       B   r   a   n
0075360    c   h       i   f       d   i   r   e   c   t   i   o   n   =
0075400    b   a   c   k   w   a   r   d  \r  \r   S   r   c   I   n   c
0075420    L   t   o   R   :  \r  \t   S   r   c   I   n   c   _       (
0075440    S   R   a   s   t   )   -   T   ;  \t  \t   *       L       t
0075460    o       R   :       S   R   a   s   t   -   S   W   i   d   t
0075500    h  \r  \t   S   P   r   e   f   O   f   f   s   e   t   _    
0075520    T   _       S   R   a   s   t   ,       B   r   a   n   c   h
0075540    [   S   r   c   I   n   c   D   o   n   e   ]   ;  \r  \r   S
0075560    r   c 376 001  \0   S   !   I   n   c   R   t   o   L   :  \r
0075600   \t   S   R   a   s   t   _       (   S   R   a   s   t   )    
0075620    O   R       (   1   7   0   0   0   0   C   )   ;  \t   *    
0075640    E   x   t   e   n   d       s   i   g   n  \r  \t   S   r   c
0075660    I   n   c   _       (   S   R   a   s   t   )   +   T   ;  \t
0075700   \t   *       R       t   o       L   :       S   R   a   s   t
0075720    +   S   W   i   d   t   h  \r  \t   S   P   r   e   f   O   f
0075740    f   s   e   t   _       T   _       (   S   R   a   s   t   )
0075760    -   T   ;  \r  \t   B   B   S   r   c   _       (   B   B   S
0076000    r   c   )   +   (   1   0   0   0   0   0   C   )   ;  \r  \r
0076020    S   r   c   I   n   c   D   o   n   e   :  \r  \t   P   r   e
0076040    f   S   r   c   _       (   B   B   S   r   c   )   +   T   ;
0076060   \t  \t   *       I   n   i   t   i   a   l       P   r   e   F
0076100    e   t   c   h       a   d   d   r   e   s   s  \r  \f  \r   *
0076120    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076160    -   -   -   -   -   -   - 376 001  \0 264   .   -   -   -   -
0076200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0076220   \r   *       F   i   n   a   l       a   d   j   u   s   t   m
0076240    e   n   t   s       p   r   i   o   r       t   o       e   n
0076260    t   e   r   i   n   g       v   e   r   t   i   c   a   l    
0076300    l   o   o   p  \r   *   -   -   -   -   -   -   -   -   -   -
0076320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0076400    -  \r  \r   *       C   o   m   p   u   t   e       I   C   n
0076420    t   ,       t   h   e       i   n   i   t   i   a   l       v
0076440    a   l   u   e       o   f       t   h   e       C   n   t    
0076460    r   e   g   i   s   t   e   r       f   o   r       e   a   c
0076500    h       l   o   o   p   .  \r   *       I   C   n   t   _    
0076520    i   f       D   W   i   d   t   h       <   =       2   2   B
0076540        t   h   e   n       D   W   i   d   t   h   -   1       e
0076560    l   s   e       N   O   T       (   D   W   i 376 001  \0 344
0076600    1   d   t   h   -   3   )       [   =       2   -   D   W   i
0076620    d   t   h   ]   .  \r   B   B   N   o   S   o   u   r   c   e
0076640    :  \r  \t   P   D   _       (   D   W   i   d   t   h   )   -
0076660    (   2   3   C   )   ;  \r  \t   I   C   n   t   _       T   _
0076700        (   D   W   i   d   t   h   )   -   1   ,       B   r   a
0076720    n   c   h   [   .   +   2   ,       A   L   U   <   0   ]   ;
0076740   \r  \t   I   C   n   t   _       (   1   S   )   -   T   ;  \t
0076760   \t  \t   *       =       (   2   S   )   -   (   D   W   i   d
0077000    t   h   )  \r  \r   *       N   e   v   e   r       n   e   e
0077020    d       t   o       "   t   o   u   c   h   "       d   a   t
0077040    a       i   n       t   h   e       "   t   h   i   n   "    
0077060    c   a   s   e   .  \r   *       A   L   U   =   0       h   e
0077100    r   e       i   f   f       t   h   e       "   t   h   i   n
0077120    "       c   a   s   e       a   p   p   l   i   e   s       (
0077140    D   W   i   d   t   h   =   1   )   .  \r  \t   S   t   a   c
0077160    k   _       (   S   t   a   c   k   )   -   1   ,       B   r
0077200    a 376 001  \0   ;   $   n   c   h   [   .   +   2   ,       A
0077220    L   U   #   0   ]   ;  \r  \t   B   B   D   i   s   p   _    
0077240    (   B   B   D   i   s   p   )       O   R       (   A   d   d
0077260    [   N   o   T   o   u   c   h   F   l   g   ]   C   )   ;  \r
0077300   \r   *       E   n   t   e   r       v   e   r   t   i   c   a
0077320    l       l   o   o   p       w   i   t   h       (   s   c   a
0077340    n       l   i   n   e   s       d   o   n   e   )   -   1    
0077360    o   n       T   O   S       a   n   d       A   L   U   >   =
0077400    0   .  \r  \t   M   C   o   u   n   t   _       T   -   T   -
0077420    1   ,       M   e   m   B   a   s   e   _       B   B   S   r
0077440    c   B   R   ;  \r  \t   P   D   _       A   0   ,       B   r
0077460    a   n   c   h   [   B   B   V   e   r   t   i   c   a   l   L
0077500    o   o   p   ]   ;  \r  \r  \r   *   -   -   -   -   -   -   -
0077520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0077600    -   -   -   -  \r   * 376 001  \0 336 335       B   i   t   B
0077620    l   t       v   e   r   t   i   c   a   l       l   o   o   p
0077640        (   p   e   r   -   s   c   a   n   -   l   i   n   e   )
0077660   \r   *       A   t       t   o   p       o   f       l   o   o
0077700    p   ,       t   h   e       f   o   l   l   o   w   i   n   g
0077720        i   n   v   a   r   i   a   n   t   s       h   o   l   d
0077740    :  \r   *  \t   V   C   o   u   n   t       =       (   n   u
0077760    m   b   e   r       o   f       s   c   a   n       l   i   n
0100000    e   s       r   e   m   a   i   n   i   n   g   )   -   1  \r
0100020    *  \t   S   t   a   c   k       =       (   n   u   m   b   e
0100040    r       o   f       s   c   a   n       l   i   n   e   s    
0100060    d   o   n   e   )   -   1  \r   *  \t   M   e   m   B   a   s
0100100    e       =       B   B   S   r   c   B   R  \r   *  \t   A   L
0100120    U   <   0       i   f   f       d   e   s   t   i   n   a   t
0100140    i   o   n       B   R       d   i   s   p   l   a   c   e   m
0100160    e   n   t       h   a   s       o   v   e   r   f   l   o   w
0100200    e   d  \r   *       V   e   r   t   i   c 376 001  \0 204   ]
0100220    a   l       l   o   o   p       o   v   e   r   h   e   a   d
0100240    :  \r   *  \t       6       c   y   c   l   e   s       f   o
0100260    r       l   o   o   p       c   o   n   t   r   o   l       a
0100300    n   d       d   e   s   t   i   n   a   t   i   o   n       p
0100320    o   i   n   t   e   r       u   p   d   a   t   e  \r   *  \t
0100340    +   4       c   y   c   l   e   s       f   o   r       s   o
0100360    u   r   c   e       p   o   i   n   t   e   r       u   p   d
0100400    a   t   e       i   f       s   o   u   r   c   e       i   t
0100420    e   m       i   s       u   s   e   d  \r   *  \t   +   4    
0100440    c   y   c   l   e   s       i   f       i   t   e   m       i
0100460    s       g   r   e   a   t   e   r       t   h   a   n       2
0100500    0   B       w   o   r   d   s       w   i   d   e  \r   *   -
0100520    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0100600    -   -   -   -   -   -   -   -   -   -  \r  \r   B   B   V   e
0100620  376 001  \0 377 357   r   t   i   c   a   l   L   o   o   p   :
0100640   \r  \t   V   C   o   u   n   t   _       (   V   C   o   u   n
0100660    t   )   -   1   ,       T   _       M   D   ,  \t   *       F
0100700    o   r   c   e       f   a   u   l   t   s       f   r   o   m
0100720        p   r   e   v   i   o   u   s       i   t   e   m  \r  \t
0100740   \t   B   r   a   n   c   h   [   B   B   D   o   n   e   O   r
0100760    O   v   e   r   f   l   o   w   ,       A   L   U   <   0   ,
0101000        R   <   0   ]   ;  \r  \r   *       I   f       p   o   s
0101020    i   t   i   v   e   ,       I   C   n   t       h   a   s    
0101040    t   h   e       d   e   s   i   r   e   d       i   n   i   t
0101060    i   a   l       v   a   l   u   e       o   f       C   n   t
0101100        (   D   W   i   d   t   h   -   1   )   .  \r  \t   T   _
0101120        N   O   T       (   C   n   t   _       I   C   n   t   )
0101140    ,       B   r   a   n   c   h   [   S   m   a   l   l   B   l
0101160    o   c   k   ,       R   >   =   0   ]   ;  \r  \r   *       I
0101200    t   e   m       g   r   e   a   t   e   r       t   h   a   n
0101220        o   n   e     376 001  \0 366 340   m   u   n   c   h    
0101240    w   i   d   e   .           S   e   t       u   p       s   e
0101260    p   a   r   a   t   e       m   u   n   c   h       a   n   d
0101300        w   o   r   d       c   o   u   n   t   s   .  \r   *    
0101320    T       n   o   w       h   a   s       D   W   i   d   t   h
0101340    -   3   ,       w   h   e   r   e       D   W   i   d   t   h
0101360        i   s       t   h   e       n   u   m   b   e   r       o
0101400    f       w   o   r   d   s       i   n       t   h   e       d
0101420    e   s   t   i   n   a   t   i   o   n  \r   *       i   t   e
0101440    m   ,       i   n   c   l   u   d   i   n   g       f   i   r
0101460    s   t       a   n   d       l   a   s   t       p   a   r   t
0101500    i   a   l       w   o   r   d   s   .  \r   *       M   C   o
0101520    u   n   t       _       (   D   W   i   d   t   h   -   3   )
0101540    /   2   0       -   1   ,       C   n   t       _       (   D
0101560    W   i   d   t   h   -   3   )       m   o   d       2   0    
0101600    +   2   .  \r  \t   M   C   o   u   n   t   _       R   S   H
0101620    [   T   ,       4   ]   ;  \r  \t   T 376 001  \0 274   W   _
0101640        T       A   N   D       (   1   7   C   )   ;  \r  \t   T
0101660    _       T   +   (   2   C   )   ;  \r  \t   M   C   o   u   n
0101700    t   _       (   M   C   o   u   n   t   )   -   1   ,       C
0101720    n   t   _       T   ;  \r  \r   *       T   h   i   s       d
0101740    i   s   p   a   t   c   h       g   o   e   s       t   o    
0101760    o   n   e       o   f   :       G   r   a   y   D   s   t   S
0102000    e   t   u   p   ,       G   r   a   y   D   s   t   S   e   t
0102020    u   p   &   T   o   u   c   h   ,  \r   *       S   r   c   D
0102040    s   t   S   e   t   u   p   ,       o   r       S   r   c   D
0102060    s   t   S   e   t   u   p   &   T   o   u   c   h   .  \r   S
0102100    m   a   l   l   B   l   o   c   k   :  \r  \t   B   i   g   B
0102120    D   i   s   p   a   t   c   h   _       B   B   D   i   s   p
0102140    ;  \r  \t   S   t   a   c   k   _       (   S   t   a   c   k
0102160    )   +   1   ,  \t  \t   *       A   d   v   a   n   c   e    
0102200    s   c   a   n       l   i   n   e   s       d   o   n   e  \r
0102220   \t  \t   B   r   a   n   c   h   E   x   t   e   r   n   a 376
0102240  001  \0 027   K   l   [   A   d   d   [   B   B   D   i   s   p
0102260    X   ,       H   o   r   i   z   o   n   t   a   l   D   i   s
0102300    p   L   o   c   ]   ]   ;  \r  \f  \r   *   -   -   -   -   -
0102320    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102400    -   -   -   -   -   -  \r   A   d   v   a   n   c   e   S   r
0102420    c   D   s   t   :  \r   *       C   o   n   t   r   o   l    
0102440    r   e   t   u   r   n   s       h   e   r   e       a   t    
0102460    t   h   e       e   n   d       o   f       i   n   d   i   v
0102500    i   d   u   a   l       h   o   r   i   z   o   n   t   a   l
0102520        l   o   o   p   s       t   h   a   t  \r   *       i   n
0102540    v   o   l   v   e       b   o   t   h       s   o   u   r   c
0102560    e       a   n   d       d   e   s   t   i   n   a   t   i   o
0102600    n       i   t   e   m   s   .  \r   *       B   B   S   r   c
0102620    ,       B   B   D   s   t       p   o   i   n   t       o   n
0102640    e       b   e 376 001  \0 331 223   y   o   n   d       l   a
0102660    s   t       w   o   r   d       p   r   o   c   e   s   s   e
0102700    d   .  \r   *   -   -   -   -   -   -   -   -   -   -   -   -
0102720    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0102760    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -  \r
0103000   \t   T   _       S   r   c   I   n   c   ;  \r  \t   B   B   S
0103020    r   c   _       T   _       (   B   B   S   r   c   )   +   T
0103040    ;  \r  \t   P   r   e   f   S   r   c   _       T   +   (   S
0103060    P   r   e   f   O   f   f   s   e   t   )   ;  \r  \t   T   _
0103100        B   B   D   s   t   ,       B   r   a   n   c   h   [   S
0103120    r   c   B   R   O   v   e   r   f   l   o   w   ,       A   L
0103140    U   <   0   ]   ;  \r  \r   *   -   -   -   -   -   -   -   -
0103160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0103240    -   -   -  \r   A   d   v   a   n 376 001  \0 350 266   c   e
0103260    D   s   t   :  \r   *       C   o   n   t   r   o   l       r
0103300    e   t   u   r   n   s       h   e   r   e       a   t       t
0103320    h   e       e   n   d       o   f       i   n   d   i   v   i
0103340    d   u   a   l       h   o   r   i   z   o   n   t   a   l    
0103360    l   o   o   p   s       t   h   a   t  \r   *       i   n   v
0103400    o   l   v   e       o   n   l   y       a       d   e   s   t
0103420    i   n   a   t   i   o   n       i   t   e   m       (   a   n
0103440    d       g   r   a   y   ,       w   h   i   c   h       i   s
0103460        h   a   n   d   l   e   d       s   e   p   a   r   a   t
0103500    e   l   y   )   .  \r   *       B   B   D   s   t       a   n
0103520    d       T       p   o   i   n   t       o   n   e       b   e
0103540    y   o   n   d       l   a   s   t       w   o   r   d       p
0103560    r   o   c   e   s   s   e   d   .  \r   *   -   -   -   -   -
0103600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0103640    -   -   -   -   -   -   -   -   -   -   -   -   -   - 376 001
0103660   \0 222 364   -   -   -   -   -   -   -   -  \r  \t   B   B   D
0103700    s   t   _       T   _       T   +   (   D   s   t   I   n   c
0103720    )   ;  \r  \t   P   r   e   f   D   s   t   _       T   _    
0103740    T   +   (   D   P   r   e   f   O   f   f   s   e   t   )   ,
0103760   \r  \t  \t   D   b   l   B   r   a   n   c   h   [   B   B   R
0104000    e   s   c   h   e   d   P   e   n   d   i   n   g   ,       B
0104020    B   V   e   r   t   i   c   a   l   L   o   o   p   ,       R
0104040    e   s   c   h   e   d   u   l   e   ]   ;  \r  \r   S   r   c
0104060    B   R   O   v   e   r   f   l   o   w   :  \r  \t   T   _    
0104100    M   D   ,       B   r   a   n   c   h   [   B   B   D   o   n
0104120    e   O   r   O   v   e   r   f   l   o   w   ]   ;  \r  \r  \r
0104140    *   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0104160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0104220    -   -   -   -   -   -   -   -   -   -   -   -  \r   *       E
0104240    i   t   h   e   r       V   C   o   u   n   t       i   s    
0104260    e   x   h 376 001  \0 003   .   a   u   s   t   e   d       o
0104300    r       o   n   e       o   f       t   h   e       B   R    
0104320    d   i   s   p   l   a   c   e   m   e   n   t   s       o   v
0104340    e   r   f   l   o   w   e   d  \r   *       (   o   r       c
0104360    o   n   c   e   i   v   a   b   l   y       b   o   t   h    
0104400    e   v   e   n   t   s       o   c   c   u   r   r   e   d    
0104420    a   t       t   h   e       s   a   m   e       t   i   m   e
0104440    )   .  \r   *       I   f       V   C   o   u   n   t       i
0104460    s       e   x   h   a   u   s   t   e   d       t   h   e   n
0104500        r   e   t   u   r   n       n   o   r   m   a   l   l   y
0104520    ;       o   t   h   e   r   w   i   s   e       r   e   s   t
0104540    a   r   t       B   i   t   B   l   t   .  \r   *       N   o
0104560    t   e   :       s   c   a   n       l   i   n   e       c   o
0104600    u   n   t       a   t       T   O   S       i   s       o   n
0104620    e       b   e   h   i   n   d   .  \r   *   -   -   -   -   -
0104640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0104660    -   -   -   -   -   -   -   - 376 001  \0  \n 320   -   -   -
0104700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0104720    -   -   -   -   -   -   -   -   -   -   -  \r   B   B   D   o
0104740    n   e   O   r   O   v   e   r   f   l   o   w   :  \r   *    
0104760    I   f       V   C   o   u   n   t       <       0   ,       t
0105000    h   e   n       w   e       j   u   s   t       p   r   o   c
0105020    e   s   s   e   d       t   h   e       l   a   s   t       s
0105040    c   a   n       l   i   n   e   ,       s   o       e   x   i
0105060    t       n   o   r   m   a   l   l   y   .  \r  \t   B   r   a
0105100    n   c   h   [   B   i   t   B   l   t   D   o   n   e   ,    
0105120    R   <       0   ]   ,       V   C   o   u   n   t   ;  \r   *
0105140        N   o   t       d   o   n   e       y   e   t   .        
0105160    R   e   s   t   o   r   e       c   l   o   b   b   e   r   e
0105200    d       A   L   U   F   M       l   o   c   a   t   i   o   n
0105220    s       b   e   f   o   r   e  \r   *       t   a   k   i   n
0105240    g       i   n   t   e   r   r   u   p   t   .           N   o
0105260    t   e   :       s   c   a   n       l   i   n   e 376 001  \0
0105300        _       c   o   u   n   t       a   t       T   O   S    
0105320    i   s       o   n   e       b   e   h   i   n   d   ,       s
0105340    o       f   i   x       i   t   .  \r   B   B   X   i   t   T
0105360    o   C   o   n   t   i   n   u   e   :  \r  \t   R   B   a   s
0105400    e   _       R   B   a   s   e   [   T   S   P   ]   ,       S
0105420    t   a   c   k   _       (   S   t   a   c   k   )       +    
0105440    1   ;  \r  \t   T   _       (   T   S   P   )       -       1
0105460    ,       m   e   m   B   a   s   e   _       S   t   a   c   k
0105500    B   R   ;  \r  \t   s   t   o   r   e   _       T   ,       d
0105520    b   u   f   _       S   t   a   c   k   ,       c   a   l   l
0105540    [   R   e   s   t   o   r   e   A   L   U   F   M   ]   ;  \r
0105560   \t   P   S   T   A   T   E   _       A   0   ,       b   r   a
0105600    n   c   h   [   L   i   s   p   R   e   s   c   h   e   d   u
0105620    l   e   ]   ;  \r  \r  \r   *   -   -   -   -   -   -   -   -
0105640    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0105700    -   - 376 001  \0   !   ]   -   -   -   -   -   -   -   -   -
0105720    -   -   -   -   -   -   -   -  \r   *       R   e   s   c   h
0105740    e   d   u   l   e       p   e   n   d   i   n   g   .        
0105760    B   r   a   n   c   h       t   o       t   h   e       r   e
0106000    s   c   h   e   d   u   l   e       t   r   a   p       h   a
0106020    n   d   l   e   r   .  \r   *       A   f   t   e   r       h
0106040    a   n   d   l   i   n   g       t   h   e       i   n   t   e
0106060    r   r   u   p   t   ,       i   t       w   i   l   l       r
0106100    e   s   t   a   r   t       t   h   e       B   i   t   B   l
0106120    t       w   i   t   h       t   h   e       s   t   a   t   e
0106140   \r   *       l   e   f   t       o   n       t   h   e       s
0106160    t   a   c   k   .  \r   *   -   -   -   -   -   -   -   -   -
0106200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106260    -   -  \r   B   B   R   e   s   c   h   e   d   P   e   n   d
0106300    i   n   g   :  \r  \t   T 376 001  \0   5   h   _       M   D
0106320    ,       B   r   a   n   c   h   [   B   B   D   o   n   e   O
0106340    r   O   v   e   r   f   l   o   w   ]   ;       *       H   a
0106360    n   d   l   e       t   h   e       s   a   m   e       a   s
0106400        o   v   e   r   f   l   o   w  \r  \r  \r   *   -   -   -
0106420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0106500    -   -   -   -   -   -   -   -  \r   *       R   e   a   l   l
0106520    y       d   o   n   e   .           R   e   s   t   o   r   e
0106540        c   l   o   b   b   e   r   e   d       A   L   U   F   M
0106560    ,       f   l   u   s   h       s   t   a   c   k   ,       a
0106600    n   d       e   x   i   t   .  \r   *       M   u   s   t    
0106620    c   l   e   a   r       t   h   e       l   o   w   -   o   r
0106640    d   e   r       b   i   t       o   f       B   i   t   B   l
0106660    t   A   r   g       s   o       t   h   a   t       i   f    
0106700    t   h   e       c   a   l   l   e   r       d 376 001  \0 025
0106720  021   o   e   s  \r   *       a       P   U   S   H       t   o
0106740        r   e   c   o   v   e   r       i   t   ,       h   e    
0106760    w   i   l   l       s   e   e       t   h   e       r   i   g
0107000    h   t       t   h   i   n   g   .  \r   *   -   -   -   -   -
0107020    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0107100    -   -   -   -   -   -  \r   *       G   e   t       h   e   r
0107120    e       d   u   r   i   n   g       i   n   i   t   i   a   l
0107140    i   z   a   t   i   o   n       w   h   e   n       o   n   l
0107160    y       A   L   U   F   M   [   1   7   ]       h   a   s    
0107200    b   e   e   n       c   l   o   b   b   e   r   e   d   .  \r
0107220    B   i   t   B   l   t   D   o   n   e   1   :  \r  \t   N   o
0107240    p   ;  \r   B   i   t   B   l   t   D   o   n   e   2   :  \r
0107260   \t   N   o   p   ;  \r  \r   *       G   e   t       h   e   r
0107300    e       a   t       e   n   d       w   h   e   n       b   o
0107320    t 376 001  \0 306 366   h       A   L   U   F   M   [   1   7
0107340    ]       a   n   d       A   L   U   F   M   [   1   5   ]    
0107360    h   a   v   e       b   e   e   n       c   l   o   b   b   e
0107400    r   e   d   .  \r   B   i   t   B   l   t   D   o   n   e   :
0107420   \r  \t   r   b   a   s   e   _       r   b   a   s   e   [   L
0107440    T   E   M   P   0   ]   ,       c   a   l   l   [   R   e   s
0107460    t   o   r   e   A   L   U   F   M   ]   ;  \r  \t   P   S   T
0107500    A   T   E   _       A   0   ;  \r  \t   L   E   F   T       _
0107520        (   L   E   F   T   )       +       1   ;  \r  \t   T   S
0107540    P   _       (   T   S   P   )       -       (   2   c   )   ,
0107560        N   e   x   t   O   p   c   o   d   e   ;  \r  \f  \r   *
0107600    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0107660    -   -   -   -   -   -   -   -   -   -   -  \r   *       H   o
0107700    r   i   z   o   n   t   a   l       l   o   o   p   s  \r   *
0107720    -   -   -   -   -   - 376 001  \0 244   m   -   -   -   -   -
0107740    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0110020   \r  \r   %  \r   O   r   g   a   n   i   z   a   t   i   o   n
0110040        o   f       h   o   r   i   z   o   n   t   a   l       (
0110060    p   e   r   -   w   o   r   d   )       l   o   o   p   s   :
0110100   \r  \r   T   h   e   r   e       a   r   e       a       n   u
0110120    m   b   e   r       o   f       v   a   r   i   a   t   i   o
0110140    n   s   ,       d   e   p   e   n   d   i   n   g       o   n
0110160        t   h   e       f   o   l   l   o   w   i   n   g   :  \r
0110200   \t   1   .       W   h   e   t   h   e   r       t   h   e    
0110220    s   o   u   r   c   e       i   s       n   o   r   m   a   l
0110240        o   r       g   r   a   y   ;  \r  \t   2   .       W   h
0110260    e   t   h   e   r       o   r       n   o   t       t   h   e
0110300        d   e   s   t   i   n   a   t   i   o   n       i   s    
0110320    a   n       o   p   e   r   a   n   d   ; 376 001  \0   '   =
0110340   \r  \t   3   .       W   h   e   t   h   e   r       o   r    
0110360    n   o   t       t   h   e       d   e   s   t   i   n   a   t
0110400    i   o   n       i   s       "   t   h   i   n   "       (   o
0110420    n   e       w   o   r   d       p   e   r       s   c   a   n
0110440        l   i   n   e   )   ;  \r  \t   4   .       W   h   e   t
0110460    h   e   r       o   r       n   o   t       d   a   t   a    
0110500    n   e   e   d       b   e       "   t   o   u   c   h   e   d
0110520    "       b   e   f   o   r   e       d   o   i   n   g       t
0110540    h   e       t   r   a   n   s   f   e   r   .  \r  \r   T   h
0110560    e   r   e       a   r   e       f   e   w   e   r       t   h
0110600    a   n       1   6       t   o   t   a   l       c   a   s   e
0110620    s       b   e   c   a   u   s   e       s   o   m   e       o
0110640    f       t   h   e   s   e       c   o   m   b   i   n   a   t
0110660    i   o   n   s  \r   c   a   n   n   o   t       o   c   c   u
0110700    r       (   f   o   r       e   x   a   m   p   l   e   ,    
0110720    t   h   e       t   h   i   n       c   a   s   e       n   e
0110740  376 001  \0 352 366   v   e   r       r   e   q   u   i   r   e
0110760    s       t   o   u   c   h   i   n   g   )   .  \r   E   a   c
0111000    h       c   a   s   e       h   a   s       a       "   s   e
0111020    t   u   p   "       r   o   u   t   i   n   e   ,       a    
0111040    "   b   o   d   y   "       r   o   u   t   i   n   e   ,    
0111060    a   n   d       a       "   f   i   n   i   s   h   "       r
0111100    o   u   t   i   n   e   .  \r   M   a   n   y       o   f    
0111120    t   h   e   s   e       r   o   u   t   i   n   e   s       a
0111140    r   e       s   h   a   r   e   d       a   m   o   n   g    
0111160    c   a   s   e   s   ,       a   n   d       t   h   e       f
0111200    l   o   w       o   f       c   o   n   t   r   o   l  \r   i
0111220    s       d   e   t   e   r   m   i   n   e   d       b   y    
0111240    a       c   o   m   p   l   i   c   a   t   e   d       n   e
0111260    t   w   o   r   k       o   f       d   i   s   p   a   t   c
0111300    h   e   s       o   n       B   B   D   i   s   p   .  \r   F
0111320    i   n   i   s   h       r   o   u   t   i   n   e   s       e
0111340    x   i   t       t 376 001  \0 256 317   o       t   h   e    
0111360    v   e   r   t   i   c   a   l       l   o   o   p       b   y
0111400        a       b   r   a   n   c   h       t   o       A   d   v
0111420    a   n   c   e   D   s   t       o   r  \r   A   d   v   a   n
0111440    c   e   S   r   c   D   s   t   .  \r  \r   I   t       i   s
0111460        n   e   v   e   r       n   e   c   e   s   s   a   r   y
0111500        t   o       "   t   o   u   c   h   "       i   f       a
0111520    n   y       o   f       t   h   e       f   o   l   l   o   w
0111540    i   n   g       i   s       t   r   u   e   :  \r  \t   a   .
0111560        T   h   e       d   e   s   t   i   n   a   t   i   o   n
0111600        i   s       "   t   h   i   n   "   ;  \r  \t   b   .    
0111620    T   h   e       d   e   s   t   i   n   a   t   i   o   n    
0111640    i   s       n   o   t       a   n       o   p   e   r   a   n
0111660    d       o   f       t   h   e       B   i   t   B   l   t    
0111700    f   u   n   c   t   i   o   n   ;  \r  \t   c   .       T   h
0111720    e       f   u   n   c   t   i   o   n       c   a   n       b
0111740    e       p   e   r   f   o   r   m   e 376 001  \0 026 214   d
0111760        m   u   l   t   i   p   l   e       t   i   m   e   s    
0112000    w   i   t   h       t   h   e       s   a   m   e       e   f
0112020    f   e   c   t  \r  \t               a   s       p   e   r   f
0112040    o   r   m   i   n   g       i   t       o   n   l   y       o
0112060    n   c   e       (   i   .   e   .   ,       a   n   y   t   h
0112100    i   n   g       e   x   c   e   p   t       X   O   R   ,  \r
0112120   \t               a   s   s   u   m   i   n   g       t   h   e
0112140        s   o   u   r   c   e       a   n   d       d   e   s   t
0112160    i   n   a   t   i   o   n       i   t   e   m   s       d   o
0112200    n   '   t       o   v   e   r   l   a   p   )   .  \r   T   h
0112220    e       "   t   o   u   c   h   "       a   n   d       "   n
0112240    o       t   o   u   c   h   "       c   a   s   e   s       a
0112260    r   e       d   i   s   t   i   n   g   u   i   s   h   e   d
0112300        a   s       p   a   r   t       o   f       t   h   e    
0112320    d   i   s   p   a   t   c   h   .  \r  \r   T   o       r   e
0112340    d   u   c   e       m   i   s   s       w   a   i   t     376
0112360  001  \0   B   K   a   n   d       i   n   c   r   e   a   s   e
0112400        p   e   r   f   o   r   m   a   n   c   e   ,       w   h
0112420    i   l   e       p   r   o   c   e   s   s   i   n   g       e
0112440    a   c   h  \r   s   c   a   n       l   i   n   e       w   e
0112460        f   a   l   l       o   u   t       o   f       t   h   e
0112500        m   a   i   n       l   o   o   p       o   n   c   e    
0112520    p   e   r       m   u   n   c   h       a   n   d       P   r
0112540    e   F   e   t   c   h  \r   o   n   e       m   u   n   c   h
0112560        f   o   r       t   h   e       n   e   x   t       s   c
0112600    a   n       l   i   n   e   .           T   h   i   s       s
0112620    t   r   a   t   e   g   y       d   e   p   e   n   d   s    
0112640    o   n       t   h   e  \r   a   s   s   u   m   p   t   i   o
0112660    n       t   h   a   t       e   a   c   h       s   c   a   n
0112700        l   i   n   e       i   s       l   e   s   s       t   h
0112720    a   n       1   0   0       m   u   n   c   h   e   s       l
0112740    o   n   g       (   f   o   r       a       1   0   0   -   r
0112760    o   w  \r   c 376 001  \0 200  \f   a   c   h   e   ,       w
0113000    h   i   c   h       i   s       w   h   a   t       t   h   e
0113020        D   o   r   a   d   o       h   a   s       a   t       p
0113040    r   e   s   e   n   t   )   .           N   o   t   e       t
0113060    h   a   t       P   r   e   F   e   t   c   h   e   s  \r   a
0113100    r   e       d   o   n   e       l   e   f   t   -   t   o   -
0113120    r   i   g   h   t       e   v   e   n       i   f       t   r
0113140    a   n   s   f   e   r   s       a   r   e       d   o   n   e
0113160        r   i   g   h   t   -   t   o   -   l   e   f   t   .  \r
0113200   \r   N   o   t   e       t   h   a   t       t   h   e       c
0113220    u   r   r   e   n   t       i   m   p   l   e   m   e   n   t
0113240    a   t   i   o   n       i   s       i   m   p   e   r   f   e
0113260    c   t       i   n       t   h   a   t       t   h   e       l
0113300    a   s   t       m   u   n   c   h  \r   o   f       t   h   e
0113320        n   e   x   t       s   c   a   n       l   i   n   e    
0113340    m   a   y       n   o   t       b   e       p   r   e   f   e
0113360    t   c   h   e   d   ,       o   r 376 001  \0   s  \t       a
0113400    n       e   x   t   r   a       m   u   n   c   h       p   r
0113420    e   f   e   t   c   h   e   d  \r   u   n   n   e   c   e   s
0113440    s   a   r   i   l   y   ,       b   e   c   a   u   s   e    
0113460    t   h   e       m   a   i   n       l   o   o   p       d   o
0113500    e   s       n   o   t       t   e   r   m   i   n   a   t   e
0113520        a   t       m   u   n   c   h       b   o   u   n   d   a
0113540    r   i   e   s  \r   b   u   t       r   a   t   h   e   r    
0113560    a   t       m   u   l   t   i   p   l   e   s       o   f    
0113600    2   0       w   o   r   d   s       f   r   o   m       t   h
0113620    e       e   n   d       o   f       t   h   e       s   c   a
0113640    n       l   i   n   e   .  \r   A   l   s   o   ,       t   h
0113660    e       f   i   r   s   t       s   c   a   n       l   i   n
0113700    e       i   s       n   o   t       p   r   e   f   e   t   c
0113720    h   e   d   ,       a   n   d       a       l   i   n   e    
0113740    p   a   s   t       t   h   e       e   n   d       o   f  \r
0113760    t   h   e       l   a   s   t       s   c   a   n     376 001
0114000   \0   M 221   l   i   n   e       i   s       p   r   e   f   e
0114020    t   c   h   e   d       u   n   n   e   c   e   s   s   a   r
0114040    i   l   y   .           T   h   e   s   e       d   e   f   e
0114060    c   t   s       s   h   o   u   l   d       n   o   t  \r   a
0114100    f   f   e   c   t       p   e   r   f   o   r   m   a   n   c
0114120    e       n   o   t   i   c   e   a   b   l   y       i   n    
0114140    n   o   r   m   a   l       u   s   e   .  \r   %  \r  \r   T
0114160    o   p   L   e   v   e   l   ;  \r   K   n   o   w   R   B   a
0114200    s   e   [   B   B   R   e   g   s   ]   ;  \r  \f  \r   %   *
0114220    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0114300    -   -   -   -   -   -   -   -   -   -   -  \r   C   a   s   e
0114320        A   :           d   e   s   t       _       f   (   g   r
0114340    a   y   )  \r  \r   B   B   O   p       i   s       t   a   k
0114360    e   n       f   r   o   m       t   h   e       f   o   l   l
0114400    o   w   i 376 001  \0 216   q   n   g       t   a   b   l   e
0114420    :  \r  \r                   F   u   n   c   t   i   o   n    
0114440    (   c   l   a   s   s   )  \t   g   r   a   y  \t   s   r   c
0114460    F   u   n   c  \t  \t   d   s   t   F   u   n   c  \t  \t   A
0114500    L   U       o   p   e   r   a   t   i   o   n  \r  \t   1   0
0114520        (   A   )  \t  \t   T   R   U   E  \t   n   o   r   m   a
0114540    l  \t  \t   n   u   l   l  \t  \t   N   O   T       A  \r  \t
0114560    1   4       (   A   )  \t  \t   T   R   U   E  \t   c   o   m
0114600    p   l   e   m   e   n   t  \t   n   u   l   l  \t  \t   A  \r
0114620   \r   E   n   t   r   y       p   o   i   n   t       t   o    
0114640    t   h   i   s       c   o   d   e       i   s       a   t    
0114660    G   r   a   y   D   e   s   t   S   e   t   u   p   .  \r   I
0114700    t       d   i   s   p   a   t   c   h   e   s       h   e   r
0114720    e       a   f   t   e   r       s   e   t   u   p   .  \r  \r
0114740    T   i   m   i   n   g   ,       p   e   r       s   c   a   n
0114760        l   i   n   e   ,       i   n   c   l   u   d   i   n   g
0115000        v   e   r   t   i   c   a 376 001  \0 026 341   l       l
0115020    o   o   p       o   v   e   r   h   e   a   d   :  \r  \t   1
0115040    9       c   y   c   l   e   s       m   i   n   i   m   u   m
0115060        i   n       t   h   e       n   o   r   m   a   l       c
0115100    a   s   e  \r  \t   +   1       c   y   c   l   e       p   e
0115120    r       f   u   l   l       w   o   r   d       (   e   x   c
0115140    l   u   d   i   n   g       f   i   r   s   t       a   n   d
0115160        l   a   s   t       p   a   r   t   i   a   l       w   o
0115200    r   d   s   )  \r  \t   +   4       +       (   2       *    
0115220    #       o   f       m   u   n   c   h   e   s   )       c   y
0115240    c   l   e   s       i   f       i   t   e   m       i   s    
0115260    w   i   d   e   r       t   h   a   n       2   0   B       w
0115300    o   r   d   s  \r  \r  \t   1   2       c   y   c   l   e   s
0115320        t   o   t   a   l       i   n       t   h   e       "   t
0115340    h   i   n   "       c   a   s   e  \r   %   *   -   -   -   -
0115360    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0115400    -   -   -   -   -   -   -   -   -   -   -   -   - 376 001  \0
0115420    j   S   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0115440    -   -   -   -   -   -   -   -   -   -   -   -  \r  \r   *    
0115460    E   n   t   r   y       p   o   i   n   t       f   o   r    
0115500    s   r   c   F   u   n   c       =       n   o   r   m   a   l
0115520    .  \r   *       T       h   a   s       f   i   r   s   t    
0115540    p   a   r   t   i   a   l       w   o   r   d       t   o    
0115560    b   e       s   t   o   r   e   d   ,       a   n   d       S
0115600    r   c   W   d       h   a   s       g   r   a   y       w   o
0115620    r   d   .  \r   G   r   a   y   B   o   d   y   :       B   B
0115640    A   t   [   G   r   a   y   B   o   d   y   L   o   c   ]   ,
0115660   \r  \t   B   B   D   s   t   _       (   S   t   o   r   e   _
0115700        B   B   D   s   t   )   +   /   -   1   ,       D   B   u
0115720    f   _       T   ;  \r  \t   T   _       S   h   i   f   t   N
0115740    o   M   a   s   k   [   S   r   c   W   d   ]   ,       B   r
0115760    a   n   c   h   [   G   r   a   y   E   n   d   ,       C   n
0116000    t   =   0   &   -   1   ]   ;  \r  \r   *       J   u   s   t
0116020        r 376 001  \0 036 257   e   p   l   i   c   a   t   e    
0116040    t   h   e       s   h   i   f   t   e   d       g   r   a   y
0116060        w   o   r   d       t   h   r   o   u   g   h   o   u   t
0116100        t   h   e       d   e   s   t   i   n   a   t   i   o   n
0116120        b   o   d   y   .  \r   G   r   a   y   L   o   o   p   :
0116140   \r  \t   B   B   D   s   t   _       (   S   t   o   r   e   _
0116160        B   B   D   s   t   )   +   /   -   1   ,       D   B   u
0116200    f   _       T   ,       B   r   a   n   c   h   [   G   r   a
0116220    y   L   o   o   p   ,       C   n   t   #   0   &   -   1   ]
0116240    ;  \r  \r   G   r   a   y   E   n   d   :  \r  \t   M   C   o
0116260    u   n   t   _       (   M   C   o   u   n   t   )   -   1   ,
0116300        C   n   t   _       1   7   S   ,       B   r   a   n   c
0116320    h   [   G   r   a   y   L   a   s   t   ,       R   <   0   ]
0116340    ;  \r  \t   P   r   e   f   D   s   t   _       (   P   r   e
0116360    F   e   t   c   h   _       P   r   e   f   D   s   t   )   ,
0116400        C   a   r   r   y   2   0   ,       B   r   a   n   c   h
0116420    [   G   r   a   y   L   o 376 001  \0 031 027   o   p   ]   ;
0116440   \r  \r   G   r   a   y   L   a   s   t   :  \r  \t   F   e   t
0116460    c   h   _       B   B   D   s   t   ,       B   r   a   n   c
0116500    h   [   D   s   t   F   i   n   i   s   h   ]   ;  \r  \r   *
0116520        S   t   o   r   e       l   a   s   t       p   a   r   t
0116540    i   a   l       w   o   r   d   .           T   h   i   s    
0116560    i   s       t   h   e       t   a   i   l       o   f       c
0116600    a   s   e   s       A       a   n   d       B   .  \r   *    
0116620    H   a   v   e       a   l   r   e   a   d   y       f   e   t
0116640    c   h   e   d       t   h   e       l   a   s   t       w   o
0116660    r   d       (   a   t       B   B   D   s   t   )   .  \r   D
0116700    s   t   F   i   n   i   s   h   :  \r  \t   B   B   D   i   s
0116720    p   ,       B   r   a   n   c   h   [   .   +   2   ,       R
0116740    <   0   ]   ;  \r  \t   T   _       X   S   h   M   D   R   M
0116760    a   s   k   [   S   r   c   W   d   ]   ,       B   _       M
0117000    D   ,       B   r   a   n   c   h   [   S   t   o   r   e   L
0117020    a   s   t   D   s   t   ]   ;  \r  \t   T   _ 376 001  \0  \t
0117040    o       X   S   h   M   D   L   M   a   s   k   [   S   r   c
0117060    W   d   ]   ,       B   _       M   D   ,       B   r   a   n
0117100    c   h   [   S   t   o   r   e   L   a   s   t   D   s   t   ]
0117120    ;  \r  \r   *       T   h   i   n       d   e   s   t   i   n
0117140    a   t   i   o   n       s   l   i   c   e   ,       f   o   r
0117160        c   a   s   e   s       A       a   n   d       B   .  \r
0117200    D   s   t   T   h   i   n   :  \r  \t   T   _       X   S   h
0117220    M   D   B   o   t   h   M   a   s   k   s   [   S   r   c   W
0117240    d   ]   ,       B   _       M   D   ;  \r   S   t   o   r   e
0117260    L   a   s   t   D   s   t   :  \r  \t   B   B   D   s   t   _
0117300        T   _       (   S   t   o   r   e   _       B   B   D   s
0117320    t   )   +   /   -   1   ,       D   B   u   f   _       T   ,
0117340        F   l   i   p   M   e   m   B   a   s   e   ,  \r  \t  \t
0117360    B   r   a   n   c   h   [   A   d   v   a   n   c   e   D   s
0117400    t   ]   ;  \r  \f  \r   %   *   -   -   -   -   -   -   -   -
0117420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0117440    - 376 001  \0 330 316   -   -   -   -   -   -   -   -   -   -
0117460    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0117500    -   -   -   -   -   -   -   -  \r   C   a   s   e       B   :
0117520            d   e   s   t       _       f   (   g   r   a   y   ,
0117540        d   e   s   t   )  \r  \r   B   B   O   p       i   s    
0117560    t   a   k   e   n       f   r   o   m       t   h   e       f
0117600    o   l   l   o   w   i   n   g       t   a   b   l   e   :  \r
0117620   \r                   F   u   n   c   t   i   o   n       (   c
0117640    l   a   s   s   )  \t   g   r   a   y  \t   s   r   c   F   u
0117660    n   c  \t  \t   d   s   t   F   u   n   c  \t  \t   A   L   U
0117700        o   p   e   r   a   t   i   o   n  \r  \t   1   1       (
0117720    B   )  \t  \t   T   R   U   E  \t   n   o   r   m   a   l  \t
0117740   \t   a   n   d  \t  \t   N   O   T       A       A   N   D    
0117760    B  \r  \t   1   2       (   B   )  \t  \t   T   R   U   E  \t
0120000    n   o   r   m   a   l  \t  \t   o   r  \t  \t   N   O   T    
0120020    A       O   R       B  \r  \t   1   3       (   B   )  \t  \t
0120040    T   R   U   E  \t   n 376 001  \0 313   L   o   r   m   a   l
0120060   \t  \t   x   o   r  \t  \t   A       E   Q   V       B  \r  \t
0120100    1   5       (   B   )  \t  \t   T   R   U   E  \t   c   o   m
0120120    p   l   e   m   e   n   t  \t   a   n   d  \t  \t   A       A
0120140    N   D       B  \r  \t   1   6       (   B   )  \t  \t   T   R
0120160    U   E  \t   c   o   m   p   l   e   m   e   n   t  \t   o   r
0120200   \t  \t   A       O   R       B  \r  \t   1   7       (   B   )
0120220   \t  \t   T   R   U   E  \t   c   o   m   p   l   e   m   e   n
0120240    t  \t   x   o   r  \t  \t   A       X   O   R       B  \r  \r
0120260    T   h   e       g   r   a   y       w   o   r   d       i   s
0120300        k   e   p   t       i   n       S   r   c   W   d       a
0120320    n   d       p   u   t       d   i   r   e   c   t   l   y    
0120340    i   n   t   o       t   h   e       s   h   i   f   t   e   r
0120360    .  \r  \r   C   a   s   e       A       a   l   s   o       d
0120400    i   s   p   a   t   c   h   e   s       t   o       o   n   e
0120420        o   f       c   a   s   e       B   '   s       e   n   t
0120440    r   y       p   o   i   n   t   s   ,     376 001  \0   U 317
0120460    G   r   a   y   D   s   t   S   e   t   u   p   .  \r   T   h
0120500    e       s   e   t   u   p       c   o   d   e       d   i   s
0120520    p   a   t   c   h   e   s       t   o       t   h   e       c
0120540    o   r   r   e   c   t       b   o   d   y       r   o   u   t
0120560    i   n   e   .  \r  \r   T   i   m   i   n   g   ,       p   e
0120600    r       s   c   a   n       l   i   n   e   ,       i   n   c
0120620    l   u   d   i   n   g       v   e   r   t   i   c   a   l    
0120640    l   o   o   p       o   v   e   r   h   e   a   d   :  \r  \t
0120660    1   8       c   y   c   l   e   s       m   i   n   i   m   u
0120700    m       i   n       t   h   e       n   o   r   m   a   l    
0120720    c   a   s   e  \r  \t   +   3       c   y   c   l   e   s    
0120740    p   e   r       f   u   l   l       w   o   r   d       (   e
0120760    x   c   l   u   d   i   n   g       f   i   r   s   t       a
0121000    n   d       l   a   s   t       p   a   r   t   i   a   l    
0121020    w   o   r   d   s   )  \r  \t   +   6       +       (   2    
0121040    *       #       o   f       p   a   g   e   s   )       c   y
0121060  376 001  \0   5   ^   c   l   e   s       i   f       d   a   t
0121100    a       n   e   e   d   s       t   o       b   e       "   t
0121120    o   u   c   h   e   d   "  \r  \t   +   4       +       (   2
0121140        *       #       o   f       m   u   n   c   h   e   s   )
0121160        c   y   c   l   e   s       i   f       i   t   e   m    
0121200    i   s       w   i   d   e   r       t   h   a   n       2   0
0121220    B       w   o   r   d   s  \r  \r  \t   1   3       c   y   c
0121240    l   e   s       t   o   t   a   l       i   n       t   h   e
0121260        "   t   h   i   n   "       c   a   s   e  \r   %   *   -
0121300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0121360    -   -   -   -   -   -   -   -   -   -  \r  \r   G   r   a   y
0121400    D   s   t   S   e   t   u   p   &   T   o   u   c   h   :    
0121420    B   B   A   t   [   G   r   a   y   D   s   t   S   e   t   u
0121440    p   &   T   o   u   c   h   L   o   c   ]   ,  \r  \t   T   _
0121460        D   R   a   s 376 001  \0   X 353   t   ,       F   l   i
0121500    p   M   e   m   B   a   s   e   ,       C   a   l   l   [   T
0121520    o   u   c   h   D   s   t   ]   ;  \r  \t   F   l   i   p   M
0121540    e   m   B   a   s   e   ;  \r  \r   G   r   a   y   D   s   t
0121560    S   e   t   u   p   :       B   B   A   t   [   G   r   a   y
0121600    D   s   t   S   e   t   u   p   L   o   c   ]   ,  \r  \t   T
0121620    _       B   B   S   r   c   _       (   F   e   t   c   h   _
0121640        B   B   S   r   c   )   +   1   ,       F   l   i   p   M
0121660    e   m   B   a   s   e   ;       *       F   e   t   c   h    
0121700    g   r   a   y       w   o   r   d  \r  \t   S   r   c   W   d
0121720    _       M   D   ,       F   e   t   c   h   _       B   B   D
0121740    s   t   ,  \t   *       S   r   c   W   d   _       g   r   a
0121760    y       w   o   r   d  \r  \t  \t   B   r   a   n   c   h   [
0122000    .   +   2   ,       A   L   U   <   0   ]   ;  \t   *       E
0122020    x   h   a   u   s   t   e   d       g   r   a   y       b   l
0122040    o   c   k   ?  \r  \t   B   B   S   r   c   _       T   -   (
0122060    G   r   a   y   B   u   m   p   )   - 376 001  \0   ;   D   1
0122100    ;  \t  \t   *       Y   e   s   ,       r   e   s   e   t    
0122120    f   o   r       n   e   x   t       s   c   a   n       l   i
0122140    n   e  \r  \r  \t   P   r   e   f   D   s   t   _       (   P
0122160    r   e   F   e   t   c   h   _       P   r   e   f   D   s   t
0122200    )   ,       C   a   r   r   y   2   0   ,       B   r   a   n
0122220    c   h   [   D   s   t   T   h   i   n   ,       C   n   t   =
0122240    0   &   -   1   ]   ;  \r   *       T   h   e       f   o   l
0122260    l   o   w   i   n   g       d   i   s   p   a   t   c   h    
0122300    m   a   y       m   o   d   i   f   y       G   r   a   y   B
0122320    o   d   y       t   o       G   r   a   y   D   s   t   B   o
0122340    d   y   .  \r  \t   B   i   g   B   D   i   s   p   a   t   c
0122360    h   _       B   B   D   i   s   p   ,       B   r   a   n   c
0122400    h   [   .   +   2   ,       R   <   0   ]   ;  \r  \t   T   _
0122420        X   S   h   M   D   L   M   a   s   k   [   S   r   c   W
0122440    d   ]   ,       B   _       M   D   ,       B   r   a   n   c
0122460    h   [   G   r   a   y   B   o   d   y   ]   ;  \r  \t   T 376
0122500  001  \0   u 257   _       X   S   h   M   D   R   M   a   s   k
0122520    [   S   r   c   W   d   ]   ,       B   _       M   D   ,    
0122540    B   r   a   n   c   h   [   G   r   a   y   B   o   d   y   ]
0122560    ;  \r  \r   *       B   o   d   y       r   o   u   t   i   n
0122600    e       f   o   r       c   a   s   e       B       o   n   l
0122620    y   .  \r   G   r   a   y   D   s   t   B   o   d   y   :    
0122640    B   B   A   t   [   G   r   a   y   D   s   t   B   o   d   y
0122660    L   o   c   ]   ,  \r  \t   B   B   D   s   t   _       T   _
0122700        (   S   t   o   r   e   _       B   B   D   s   t   )   +
0122720    /   -   1   ,       D   B   u   f   _       T   ;  \r  \t   P
0122740    r   e   f   S   r   c   _       (   F   e   t   c   h   _    
0122760    T   )   +   /   -   1   ,       B   r   a   n   c   h   [   G
0123000    r   a   y   D   s   t   E   n   d   ,       C   n   t   =   0
0123020    &   -   1   ]   ;  \r  \r   *       I   n   n   e   r       l
0123040    o   o   p       r   u   n   s       w   i   t   h       o   n
0123060    e       w   o   r   d       f   e   t   c   h   e   d       a
0123100    h   e   a   d 376 001  \0   3   B       (   n   o   w       i
0123120    n       M   D   )   .  \r   *       P   r   e   f   S   r   c
0123140        i   s       u   s   e   d       a   s       a       t   e
0123160    m   p   o   r   a   r   y       -   -       r   u   n   s    
0123200    o   n   e       w   o   r   d       a   h   e   a   d       o
0123220    f       B   B   D   s   t   .  \r   G   r   a   y   D   s   t
0123240    L   o   o   p   :  \r  \t   P   r   e   f   S   r   c   _    
0123260    (   F   e   t   c   h   _       P   r   e   f   S   r   c   )
0123300    +   /   -   1   ,       T   _       M   D   ;  \r  \t   T   _
0123320        X   S   h   i   f   t   N   o   M   a   s   k   [   S   r
0123340    c   W   d   ]   ,       B   _       T   ;  \r  \t   B   B   D
0123360    s   t   _       (   S   t   o   r   e   _       B   B   D   s
0123400    t   )   +   /   -   1   ,       D   B   u   f   _       T   ,
0123420        B   r   a   n   c   h   [   G   r   a   y   D   s   t   L
0123440    o   o   p   ,       C   n   t   #   0   &   -   1   ]   ;  \r
0123460   \r   G   r   a   y   D   s   t   E   n   d   :  \r  \t   M   C
0123500    o   u   n   t   _       (   M   C 376 001  \0   T 261   o   u
0123520    n   t   )   -   1   ,       C   n   t   _       1   7   S   ,
0123540        B   r   a   n   c   h   [   D   s   t   F   i   n   i   s
0123560    h   ,       R   <   0   ]   ;  \r  \t   P   r   e   f   D   s
0123600    t   _       (   P   r   e   F   e   t   c   h   _       P   r
0123620    e   f   D   s   t   )   ,       C   a   r   r   y   2   0   ,
0123640        B   r   a   n   c   h   [   G   r   a   y   D   s   t   L
0123660    o   o   p   ]   ;  \r  \f  \r   %   *   -   -   -   -   -   -
0123700    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0123760    -   -   -   -   -  \r   C   a   s   e       C   :           d
0124000    e   s   t       _       f   (   s   o   u   r   c   e   )  \r
0124020   \r   B   B   O   p       i   s       t   a   k   e   n       f
0124040    r   o   m       t   h   e       f   o   l   l   o   w   i   n
0124060    g       t   a   b   l   e   :  \r  \r                   F   u
0124100    n   c   t   i   o   n       (   c   l   a   s   s   ) 376 001
0124120   \0  \t 372  \t   g   r   a   y  \t   s   r   c   F   u   n   c
0124140   \t  \t   d   s   t   F   u   n   c  \t  \t   A   L   U       o
0124160    p   e   r   a   t   i   o   n  \r  \t       0       (   C   )
0124200   \t  \t   F   A   L   S   E  \t   n   o   r   m   a   l  \t  \t
0124220    n   u   l   l  \t  \t   N   O   T       A  \r  \t       4    
0124240    (   C   )  \t  \t   F   A   L   S   E  \t   c   o   m   p   l
0124260    e   m   e   n   t  \t   n   u   l   l  \t  \t   A  \r  \r   E
0124300    n   t   r   y       p   o   i   n   t   s       t   o       t
0124320    h   i   s       c   o   d   e       a   r   e       a   t    
0124340    S   r   c   D   s   t   S   e   t   u   p       a   n   d    
0124360    S   r   c   D   s   t   S   e   t   u   p   &   T   o   u   c
0124400    h   .  \r   T   h   e   y       d   i   s   p   a   t   c   h
0124420        h   e   r   e       a   f   t   e   r       s   e   t   u
0124440    p   .  \r  \r   T   i   m   i   n   g   ,       p   e   r    
0124460    s   c   a   n       l   i   n   e   ,       i   n   c   l   u
0124500    d   i   n   g       v   e   r   t   i   c   a   l       l   o
0124520    o   p     376 001  \0 250   ;   o   v   e   r   h   e   a   d
0124540    :  \r  \t   2   5       c   y   c   l   e   s       m   i   n
0124560    i   m   u   m       i   n       t   h   e       n   o   r   m
0124600    a   l       c   a   s   e  \r  \t   +   4       c   y   c   l
0124620    e   s       p   e   r       f   u   l   l       w   o   r   d
0124640        (   e   x   c   l   u   d   i   n   g       f   i   r   s
0124660    t       a   n   d       l   a   s   t       p   a   r   t   i
0124700    a   l       w   o   r   d   s   )  \r  \t   +   1   2       +
0124720        (   4       *       #       o   f       p   a   g   e   s
0124740    )       c   y   c   l   e   s       i   f       d   a   t   a
0124760        n   e   e   d   s       t   o       b   e       "   t   o
0125000    u   c   h   e   d   "  \r  \t   +   1       c   y   c   l   e
0125020        i   f       2       s   o   u   r   c   e       w   o   r
0125040    d   s       a   r   e       r   e   q   u   i   r   e   d    
0125060    f   o   r       t   h   e       f   i   r   s   t       d   e
0125100    s   t   i   n   a   t   i   o   n       w   o   r   d  \r  \t
0125120    +   3       c   y   c   l   e 376 001  \0 247   X   s       i
0125140    f       g   r   a   y       i   s       r   e   q   u   i   r
0125160    e   d  \r  \t   +   4       +       (   5       *       #    
0125200    o   f       m   u   n   c   h   e   s   )       c   y   c   l
0125220    e   s       i   f       i   t   e   m       i   s       w   i
0125240    d   e   r       t   h   a   n       2   0   B       w   o   r
0125260    d   s  \r  \r  \t   1   7       c   y   c   l   e   s       m
0125300    i   n   i   m   u   m       i   n       t   h   e       "   t
0125320    h   i   n   "       c   a   s   e  \r  \t   +   1       c   y
0125340    c   l   e       i   f       2       s   o   u   r   c   e    
0125360    w   o   r   d   s       a   r   e       r   e   q   u   i   r
0125400    e   d  \r   %   *   -   -   -   -   -   -   -   -   -   -   -
0125420    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0125500   \r  \r  \r   *       B   o   d   y       r   o   u   t   i   n
0125520    e       f   o   r       c   a   s   e       C     376 001  \0
0125540    f   I   o   n   l   y   .  \r   S   r   c   B   o   d   y   :
0125560        B   B   A   t   [   S   r   c   B   o   d   y   L   o   c
0125600    ]   ,  \r  \t   T   _       B   B   D   s   t   _       (   S
0125620    t   o   r   e   _       B   B   D   s   t   )   +   /   -   1
0125640    ,       D   B   u   f   _       T   ,       F   l   i   p   M
0125660    e   m   B   a   s   e   ,  \r   *   *   *   *       P   r   o
0125700    g   r   a   m       a   r   o   u   n   d       M   i   c   r
0125720    o   D       p   r   o   b   l   e   m   .           D   e   s
0125740    i   r   e   d       b   r   a   n   c   h       c   l   a   u
0125760    s   e       i   s   :  \r   *   *   *   *  \t  \t   C   a   l
0126000    l   [   S   r   c   E   n   d   ,       C   n   t   =   0   &
0126020    -   1   ]   ;  \r   *   *   *   *       b   u   t       w   e
0126040        m   u   s   t       a   c   t   u   a   l   l   y       w
0126060    r   i   t   e   :  \r  \t  \t   B   R   G   O   @   [   0   ]
0126100        R   E   T   C   L   @   [   2   ]       J   C   N   [   4
0126120    3   ]   ;  \r  \t   B   B   S   r   c   _       (   F   e   t
0126140    c   h 376 001  \0   ,   '   _       B   B   S   r   c   )   +
0126160    /   -   1   ,       F   l   i   p   M   e   m   B   a   s   e
0126200    ,  \r  \t  \t   B   B   A   t   [   S   r   c   B   o   d   y
0126220    L   o   c   ,       1   ]   ;       *   *   *   *       M   i
0126240    c   r   o   D       p   r   o   b   l   e   m  \r  \t   S   r
0126260    c   W   d   _       M   D   ,       T   _       S   r   c   W
0126300    d   ;  \r  \t   T   _       X   S   h   i   f   t   N   o   M
0126320    a   s   k   [   S   r   c   W   d   ]   ,       B   r   a   n
0126340    c   h   [   S   r   c   B   o   d   y   ]   ;  \r  \r   *    
0126360    T   h   i   s       i   s       c   a   l   l   e   d       a
0126400    s       a       s   u   b   r   o   u   t   i   n   e       a
0126420    t       t   h   e       e   n   d       o   f       e   a   c
0126440    h       m   u   n   c   h   .  \r   *       I   t       e   i
0126460    t   h   e   r       e   x   i   t   s       t   h   e       h
0126500    o   r   i   z   o   n   t   a   l       l   o   o   p       o
0126520    r       r   e   t   u   r   n   s       t   o       d   o    
0126540    a   n   o   t   h   e   r 376 001  \0 236   N       m   u   n
0126560    c   h   .  \r   S   r   c   E   n   d   :  \r   S   u   b   r
0126600    o   u   t   i   n   e   ;  \r  \t   M   C   o   u   n   t   _
0126620        (   M   C   o   u   n   t   )   -   1   ,       C   n   t
0126640    _       1   7   S   ,  \r  \t  \t   D   b   l   B   r   a   n
0126660    c   h   [   S   r   c   D   s   t   F   i   n   i   s   h   ,
0126700        S   r   c   D   s   t   M   o   r   e   ,       R   <   0
0126720    ]   ,  \r  \t  \t   B   B   A   t   [   S   r   c   B   o   d
0126740    y   L   o   c   ,       2   ]   ;       *   *   *   *       M
0126760    i   c   r   o   D       p   r   o   b   l   e   m  \r   S   r
0127000    c   D   s   t   M   o   r   e   :  \r  \t   P   r   e   f   S
0127020    r   c   _       (   P   r   e   F   e   t   c   h   _       P
0127040    r   e   f   S   r   c   )   ,       C   a   r   r   y   2   0
0127060    ;  \r  \t   F   l   i   p   M   e   m   B   a   s   e   ;  \r
0127100   \t   P   r   e   f   D   s   t   _       (   P   r   e   F   e
0127120    t   c   h   _       P   r   e   f   D   s   t   )   ,       C
0127140    a   r   r   y   2   0   ;  \r  \t   F   l   i 376 001  \0   p
0127160    o   p   M   e   m   B   a   s   e   ,       R   e   t   u   r
0127200    n   ;  \r   T   o   p   L   e   v   e   l   ;  \r  \r   *    
0127220    S   t   o   r   e       l   a   s   t       p   a   r   t   i
0127240    a   l       w   o   r   d   ,       f   o   r       c   a   s
0127260    e   s       C       a   n   d       D   .  \r   S   r   c   D
0127300    s   t   F   i   n   i   s   h   :  \r  \t   B   B   C   t   r
0127320    l   ,       B   r   a   n   c   h   [   .   +   2   ,       R
0127340        e   v   e   n   ]   ;  \t   *       F   e   t   c   h    
0127360    e   x   t   r   a       w   o   r   d       a   t       e   n
0127400    d   ?  \r  \t   B   B   S   r   c   _       (   F   e   t   c
0127420    h   _       B   B   S   r   c   )   +   /   -   1   ,       F
0127440    l   i   p   M   e   m   B   a   s   e   ,       B   r   a   n
0127460    c   h   [   .   +   2   ]   ;  \r  \t   F   l   i   p   M   e
0127500    m   B   a   s   e   ;  \r  \t   S   r   c   W   d   _       M
0127520    D   ,       T   _       S   r   c   W   d   ,       F   e   t
0127540    c   h   _       T   ;  \r  \t   B   B   D   i   s   p   ,    
0127560    B 376 001  \0 236 177   r   a   n   c   h   [   .   +   2   ,
0127600        R   <   0   ]   ;  \r  \t   T   _       X   S   h   M   D
0127620    R   M   a   s   k   [   S   r   c   W   d   ]   ,       B   _
0127640        M   D   ,       B   r   a   n   c   h   [   S   t   o   r
0127660    e   L   a   s   t   S   r   c   D   s   t   ]   ;  \r  \t   T
0127700    _       X   S   h   M   D   L   M   a   s   k   [   S   r   c
0127720    W   d   ]   ,       B   _       M   D   ,       B   r   a   n
0127740    c   h   [   S   t   o   r   e   L   a   s   t   S   r   c   D
0127760    s   t   ]   ;  \r  \r   *       T   h   i   n       d   e   s
0130000    t   i   n   a   t   i   o   n       s   l   i   c   e   ,    
0130020    f   o   r       c   a   s   e   s       C       a   n   d    
0130040    D   .  \r   S   r   c   D   s   t   T   h   i   n   :  \r  \t
0130060    T   _       X   S   h   M   D   B   o   t   h   M   a   s   k
0130100    s   [   S   r   c   W   d   ]   ,       B   _       M   D   ;
0130120   \r   S   t   o   r   e   L   a   s   t   S   r   c   D   s   t
0130140    :  \r  \t   B   B   D   s   t   _       (   S   t   o   r   e
0130160    _       B   B   D   s 376 001  \0   :   !   t   )   +   /   -
0130200    1   ,       D   B   u   f   _       T   ,       F   l   i   p
0130220    M   e   m   B   a   s   e   ,  \r  \t  \t   B   r   a   n   c
0130240    h   [   A   d   v   a   n   c   e   S   r   c   D   s   t   ]
0130260    ;  \r  \f  \r   %   *   -   -   -   -   -   -   -   -   -   -
0130300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0130360    -  \r   C   a   s   e       D   :           d   e   s   t    
0130400    _       f   (   s   o   u   r   c   e   ,       d   e   s   t
0130420    )  \r  \r   B   B   O   p       i   s       t   a   k   e   n
0130440        f   r   o   m       t   h   e       f   o   l   l   o   w
0130460    i   n   g       t   a   b   l   e   :  \r  \r                
0130500    F   u   n   c   t   i   o   n       (   c   l   a   s   s   )
0130520   \t   g   r   a   y  \t   s   r   c   F   u   n   c  \t  \t   d
0130540    s   t   F   u   n   c  \t  \t   A   L   U       o   p   e   r
0130560    a   t   i   o   n  \r  \t       1       ( 376 001  \0 200   k
0130600    D   )  \t  \t   F   A   L   S   E  \t   n   o   r   m   a   l
0130620   \t  \t   a   n   d  \t  \t   N   O   T       A       A   N   D
0130640        B  \r  \t       2       (   D   )  \t  \t   F   A   L   S
0130660    E  \t   n   o   r   m   a   l  \t  \t   o   r  \t  \t   N   O
0130700    T       A       O   R       B  \r  \t       3       (   D   )
0130720   \t  \t   F   A   L   S   E  \t   n   o   r   m   a   l  \t  \t
0130740    x   o   r  \t  \t   A       E   Q   V       B  \r  \t       5
0130760        (   D   )  \t  \t   F   A   L   S   E  \t   c   o   m   p
0131000    l   e   m   e   n   t  \t   a   n   d  \t  \t   A       A   N
0131020    D       B  \r  \t       6       (   D   )  \t  \t   F   A   L
0131040    S   E  \t   c   o   m   p   l   e   m   e   n   t  \t   o   r
0131060   \t  \t   A       O   R       B  \r  \t       7       (   D   )
0131100   \t  \t   F   A   L   S   E  \t   c   o   m   p   l   e   m   e
0131120    n   t  \t   x   o   r  \t  \t   A       X   O   R       B  \r
0131140   \r   C   a   s   e       C       a   l   s   o       d   i   s
0131160    p   a   t   c   h   e   s       t   o       t   h   e   s   e
0131200  376 001  \0 240 017       e   n   t   r   y       p   o   i   n
0131220    t   s   .  \r   T   h   e       s   e   t   u   p       c   o
0131240    d   e       d   i   s   p   a   t   c   h   e   s       t   o
0131260        t   h   e       c   o   r   r   e   c   t       b   o   d
0131300    y       r   o   u   t   i   n   e   s   .  \r  \r   T   i   m
0131320    i   n   g   ,       p   e   r       s   c   a   n       l   i
0131340    n   e   ,       i   n   c   l   u   d   i   n   g       v   e
0131360    r   t   i   c   a   l       l   o   o   p       o   v   e   r
0131400    h   e   a   d   :  \r  \t       2   5       c   y   c   l   e
0131420    s       m   i   n   i   m   u   m       i   n       t   h   e
0131440        n   o   r   m   a   l       c   a   s   e  \r  \t   +    
0131460    5       c   y   c   l   e   s       p   e   r       f   u   l
0131500    l       w   o   r   d       (   e   x   c   l   u   d   i   n
0131520    g       f   i   r   s   t       a   n   d       l   a   s   t
0131540        p   a   r   t   i   a   l       w   o   r   d   s   )  \r
0131560   \t   +   1   2       +       (   4       *       #       o   f
0131600        p   a   g   e 376 001  \0   6 324   s   )       c   y   c
0131620    l   e   s       i   f       d   a   t   a       n   e   e   d
0131640    s       t   o       b   e       "   t   o   u   c   h   e   d
0131660    "  \r  \t   +       1       c   y   c   l   e       i   f    
0131700    2       s   o   u   r   c   e       w   o   r   d   s       r
0131720    e   q   u   i   r   e   d       f   o   r       t   h   e    
0131740    f   i   r   s   t       d   e   s   t   i   n   a   t   i   o
0131760    n       w   o   r   d  \r  \t   +       3       c   y   c   l
0132000    e   s       i   f       g   r   a   y       i   s       r   e
0132020    q   u   i   r   e   d  \r  \t   +       4       +       (   5
0132040        *       #       o   f       m   u   n   c   h   e   s   )
0132060        c   y   c   l   e   s       i   f       i   t   e   m    
0132100    i   s       w   i   d   e   r       t   h   a   n       2   0
0132120    B       w   o   r   d   s  \r  \r  \t       1   7       c   y
0132140    c   l   e   s       m   i   n   i   m   u   m       i   n    
0132160    t   h   e       "   t   h   i   n   "       c   a   s   e  \r
0132200   \t   +       1       c   y   c   l   e 376 001  \0   v  \b    
0132220    i   f       2       s   o   u   r   c   e       w   o   r   d
0132240    s       a   r   e       r   e   q   u   i   r   e   d  \r   %
0132260    *   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0132300    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0132340    -   -   -   -   -   -   -   -   -   -   -   -  \r  \r   S   r
0132360    c   D   s   t   S   e   t   u   p   &   T   o   u   c   h   :
0132400        B   B   A   t   [   S   r   c   D   s   t   S   e   t   u
0132420    p   &   T   o   u   c   h   L   o   c   ]   ,  \r  \t   T   _
0132440        D   R   a   s   t   ,       F   l   i   p   M   e   m   B
0132460    a   s   e   ,       C   a   l   l   [   T   o   u   c   h   D
0132500    s   t   ]   ;  \r  \t   T   _       S   R   a   s   t   ,    
0132520    F   l   i   p   M   e   m   B   a   s   e   ,       C   a   l
0132540    l   [   T   o   u   c   h   S   r   c   ]   ;  \r   S   r   c
0132560    D   s   t   S   e   t   u   p   :       B   B   A   t   [   S
0132600    r   c   D   s   t   S   e   t   u   p   L   o   c   ]   , 376
0132620  001  \0 204 262  \r  \t   B   B   C   t   r   l   ,       D   b
0132640    l   B   r   a   n   c   h   [   S   r   c   D   s   t   S   e
0132660    t   u   p   2   ,       S   r   c   D   s   t   S   e   t   u
0132700    p   1   ,       R   <   0   ]   ;  \r  \r   S   r   c   D   s
0132720    t   S   e   t   u   p   2   :  \r  \t   B   B   S   r   c   _
0132740        (   F   e   t   c   h   _       B   B   S   r   c   )   +
0132760    /   -   1   ;  \r   S   r   c   D   s   t   S   e   t   u   p
0133000    1   :  \r  \t   P   r   e   f   S   r   c   _       (   P   r
0133020    e   F   e   t   c   h   _       P   r   e   f   S   r   c   )
0133040    ,       C   a   r   r   y   2   0   ;  \r  \t   T   _       M
0133060    D   ,       B   B   S   r   c   _       (   F   e   t   c   h
0133100    _       B   B   S   r   c   )   +   /   -   1   ,       F   l
0133120    i   p   M   e   m   B   a   s   e   ;  \r  \t   S   r   c   W
0133140    d   _       M   D   ,       F   e   t   c   h   _       B   B
0133160    D   s   t   ;  \r  \t   P   r   e   f   D   s   t   _       (
0133200    P   r   e   F   e   t   c   h   _       P   r   e   f   D   s
0133220    t   )   ,     376 001  \0 003   =   C   a   r   r   y   2   0
0133240    ,       B   r   a   n   c   h   [   S   r   c   D   s   t   T
0133260    h   i   n   ,       C   n   t   =   0   &   -   1   ]   ;  \r
0133300    *       T   h   e       f   o   l   l   o   w   i   n   g    
0133320    d   i   s   p   a   t   c   h       m   a   y       m   o   d
0133340    i   f   y       S   r   c   B   o   d   y       t   o       S
0133360    r   c   D   s   t   B   o   d   y   .  \r  \t   B   i   g   B
0133400    D   i   s   p   a   t   c   h   _       B   B   D   i   s   p
0133420    ,       B   r   a   n   c   h   [   .   +   2   ,       R   <
0133440    0   ]   ;  \r  \t   T   _       X   S   h   M   D   L   M   a
0133460    s   k   [   S   r   c   W   d   ]   ,       B   _       M   D
0133500    ,       B   r   a   n   c   h   [   S   r   c   B   o   d   y
0133520    ]   ;  \r  \t   T   _       X   S   h   M   D   R   M   a   s
0133540    k   [   S   r   c   W   d   ]   ,       B   _       M   D   ,
0133560        B   r   a   n   c   h   [   S   r   c   B   o   d   y   ]
0133600    ;  \r  \r   *       B   o   d   y       r   o   u   t   i   n
0133620    e       f   o   r       c   a   s 376 001  \0   6 311   e    
0133640    D       o   n   l   y   .  \r   S   r   c   D   s   t   B   o
0133660    d   y   :       B   B   A   t   [   S   r   c   D   s   t   B
0133700    o   d   y   L   o   c   ]   ,  \r  \t   T   _       B   B   D
0133720    s   t   _       (   S   t   o   r   e   _       B   B   D   s
0133740    t   )   +   /   -   1   ,       D   B   u   f   _       T   ,
0133760        F   l   i   p   M   e   m   B   a   s   e   ,  \r   *   *
0134000    *   *       P   r   o   g   r   a   m       a   r   o   u   n
0134020    d       M   i   c   r   o   D       p   r   o   b   l   e   m
0134040    .           D   e   s   i   r   e   d       b   r   a   n   c
0134060    h       c   l   a   u   s   e       i   s   :  \r   *   *   *
0134100    *  \t  \t   C   a   l   l   [   S   r   c   D   s   t   E   n
0134120    d   ,       C   n   t   =   0   &   -   1   ]   ;  \r   *   *
0134140    *   *       b   u   t       w   e       m   u   s   t       a
0134160    c   t   u   a   l   l   y       w   r   i   t   e   :  \r  \t
0134200   \t   B   R   G   O   @   [   0   ]       R   E   T   C   L   @
0134220    [   2   ]       J   C   N   [   1   0   3   ]   ;  \r 376 001
0134240   \0 305 271  \t   B   B   S   r   c   _       (   F   e   t   c
0134260    h   _       B   B   S   r   c   )   +   /   -   1   ,       F
0134300    l   i   p   M   e   m   B   a   s   e   ,  \r  \t  \t   B   B
0134320    A   t   [   S   r   c   D   s   t   B   o   d   y   L   o   c
0134340    ,       1   ]   ;       *   *   *   *       M   i   c   r   o
0134360    D       p   r   o   b   l   e   m  \r  \t   S   r   c   W   d
0134400    _       M   D   ,       T   _       S   r   c   W   d   ,    
0134420    F   e   t   c   h   _       T   ;  \r  \t   T   _       X   S
0134440    h   i   f   t   N   o   M   a   s   k   [   S   r   c   W   d
0134460    ]   ,       B   _       M   D   ,       B   r   a   n   c   h
0134500    [   S   r   c   D   s   t   B   o   d   y   ]   ;  \r  \r   *
0134520        T   h   i   s       i   s       c   a   l   l   e   d    
0134540    a   s       a       s   u   b   r   o   u   t   i   n   e    
0134560    a   t       t   h   e       e   n   d       o   f       e   a
0134600    c   h       m   u   n   c   h   .  \r   *       I   t       e
0134620    i   t   h   e   r       e   x   i   t   s       t   h   e    
0134640    h   o   r 376 001  \0 272   n   i   z   o   n   t   a   l    
0134660    l   o   o   p       o   r       r   e   t   u   r   n   s    
0134700    t   o       d   o       a   n   o   t   h   e   r       m   u
0134720    n   c   h   .  \r   S   r   c   D   s   t   E   n   d   :  \r
0134740    S   u   b   r   o   u   t   i   n   e   ;  \r  \t   M   C   o
0134760    u   n   t   _       (   M   C   o   u   n   t   )   -   1   ,
0135000        C   n   t   _       1   7   S   ,  \r  \t  \t   D   b   l
0135020    B   r   a   n   c   h   [   S   r   c   D   s   t   F   i   n
0135040    i   s   h   ,       S   r   c   D   s   t   M   o   r   e   ,
0135060        R   <   0   ]   ,  \r  \t  \t   B   B   A   t   [   S   r
0135100    c   D   s   t   B   o   d   y   L   o   c   ,       2   ]   ;
0135120        *   *   *   *       M   i   c   r   o   D       p   r   o
0135140    b   l   e   m  \r   T   o   p   L   e   v   e   l   ;  \r  \f
0135160   \r   *   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0135200    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0135240    -   -   -   -   -   -   -   - 376 001  \0 265   J   -   -   -
0135260    -   -  \r   T   o   u   c   h   S   r   c   :  \r   *       T
0135300    o   u   c   h   e   s       e   v   e   r   y       p   a   g
0135320    e       o   f       t   h   e       s   o   u   r   c   e    
0135340    i   t   e   m       f   o   r       t   h   i   s       s   c
0135360    a   n       l   i   n   e   .  \r   *       E   n   t   r   y
0135400    :       B   B   S   r   c       =       a   d   d   r   e   s
0135420    s       o   f       f   i   r   s   t       w   o   r   d    
0135440    o   f       s   o   u   r   c   e       i   t   e   m  \r   *
0135460   \t   T       =       S   R   a   s   t       =       w   o   r
0135500    d   s       p   e   r       s   o   u   r   c   e       s   c
0135520    a   n       l   i   n   e   ;       n   e   g   a   t   i   v
0135540    e       =   >       b   o   t   t   o   m   -   t   o   -   t
0135560    o   p  \r   *  \t   S   r   c   I   n   c       =       d   i
0135600    s   t   a   n   c   e       b   e   t   w   e   e   n       l
0135620    a   s   t       w   o   r   d       o   f       o   n   e    
0135640    s   c   a   n       l   i   n   e       a   n   d 376 001  \0
0135660  263   a  \r   *  \t  \t   f   i   r   s   t       w   o   r   d
0135700        o   f       t   h   e       n   e   x   t   ;       n   e
0135720    g   a   t   i   v   e       =   >       b   o   t   t   o   m
0135740    -   t   o   -   t   o   p  \r   *  \t   M   e   m   B   a   s
0135760    e       =       B   B   S   r   c   B   R  \r   *       E   x
0136000    i   t   :       T       a   n   d       B   B   T   e   m   p
0136020        c   l   o   b   b   e   r   e   d  \r   *       M   e   t
0136040    h   o   d   :       t   o   u   c   h       t   h   e       l
0136060    a   s   t       w   o   r   d   s       o   f       t   h   e
0136100        i   t   e   m   .           I   f       t   h   e       i
0136120    t   e   m       i   s       >   4   0   1   B  \r   *       w
0136140    o   r   d   s       l   o   n   g   ,       a   l   s   o    
0136160    t   o   u   c   h       i   n   t   e   r   m   e   d   i   a
0136200    t   e       w   o   r   d   s       a   t       m   u   l   t
0136220    i   p   l   e   s       o   f       4   0   0   B       w   o
0136240    r   d   s       f   r   o   m  \r   *       t   h   e       l
0136260    a   s 376 001  \0   \ 207   t       w   o   r   d       o   f
0136300        t   h   e       i   t   e   m   .  \r   *       N   o   t
0136320    e   :       w   e       d   o   n   '   t       a   l   s   o
0136340        n   e   e   d       t   o       t   o   u   c   h       t
0136360    h   e       f   i   r   s   t       w   o   r   d       o   f
0136400        t   h   e       i   t   e   m   ,       s   i   n   c   e
0136420        i   f       a       f   a   u   l   t  \r   *       o   c
0136440    c   u   r   s       o   n       i   t       d   u   r   i   n
0136460    g       t   h   e       B   i   t   B   l   t       w   o   r
0136500    d       l   o   o   p   ,       n   o   t   h   i   n   g    
0136520    w   i   l   l       h   a   v   e       c   h   a   n   g   e
0136540    d       y   e   t   .  \r   *       N   o   t   e   :       |
0136560    S   R   a   s   t   -   S   r   c   I   n   c   |       g   i
0136600    v   e   s       t   h   e       n   u   m   b   e   r       o
0136620    f       w   o   r   d   s       t   o   u   c   h   e   d    
0136640    i   n       t   h   e       i   t   e   m   ;  \r   *       t
0136660    h   e       v   a   l   u 376 001  \0 321   p   e       i   s
0136700        p   o   s   i   t   i   v   e       i   f       m   o   v
0136720    i   n   g       l   e   f   t   -   t   o   -   r   i   g   h
0136740    t   ,       n   e   g   a   t   i   v   e       i   f       r
0136760    i   g   h   t   -   t   o   -   l   e   f   t   .  \r   *    
0137000    T   i   m   i   n   g   :       5       c   y   c   l   e   s
0137020        f   o   r       f   i   r   s   t       p   a   g   e    
0137040    o   r       l   e   s   s  \r   *  \t       +   1       c   y
0137060    c   l   e       i   f       r   i   g   h   t   -   t   o   -
0137100    l   e   f   t  \r   *  \t       +   2       c   y   c   l   e
0137120    s       p   e   r       a   d   d   i   t   i   o   n   a   l
0137140        p   a   g   e  \r   *   -   -   -   -   -   -   -   -   -
0137160    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0137240    -   -  \r   S   u   b   r   o   u   t   i   n   e   ;  \r  \r
0137260   \t   T   _       T   -   (   S   r   c   I   n 376 001  \0 267
0137300    _   c   )   -   1   ;  \r  \t   B   B   T   e   m   p   _    
0137320    (   B   B   S   r   c   )   +   T   ,       D   b   l   B   r
0137340    a   n   c   h   [   S   T   o   u   c   h   R   t   o   L   ,
0137360        S   T   o   u   c   h   L   t   o   R   ,       A   L   U
0137400    <   0   ]   ;  \r  \r   S   T   o   u   c   h   L   t   o   R
0137420    :  \r   *       T       h   a   s       (   #       w   o   r
0137440    d   s       i   n       s   o   u   r   c   e       i   t   e
0137460    m   )   -   1   ,       B   B   T   e   m   p       p   o   i
0137500    n   t   s       t   o       l   a   s   t       (   r   i   g
0137520    h   t   m   o   s   t   )       w   o   r   d   .  \r  \t   T
0137540    _       T   -   (   4   0   0   C   )   -   1   ;  \r  \t   B
0137560    B   T   e   m   p   _       (   F   e   t   c   h   _       B
0137600    B   T   e   m   p   )   -   (   4   0   0   C   )   ,       B
0137620    r   a   n   c   h   [   .   +   2   ,       A   L   U   <   0
0137640    ]   ;  \r  \t   T   _       T   -   (   4   0   0   C   )   ,
0137660        B   r   a   n   c   h   [   .   -   1   ]   ;  \r  \t   R
0137700    e 376 001  \0 003 307   t   u   r   n   ;  \r  \r   S   T   o
0137720    u   c   h   R   t   o   L   :  \r   *       T       h   a   s
0137740        -   (   #       w   o   r   d   s       i   n       s   o
0137760    u   r   c   e       i   t   e   m   )   -   1   ,       B   B
0140000    T   e   m   p       p   o   i   n   t   s       t   o       l
0140020    a   s   t       (   l   e   f   t   m   o   s   t   )       w
0140040    o   r   d       -   2   .  \r  \t   B   B   T   e   m   p   _
0140060        (   B   B   T   e   m   p   )   +   (   2   C   )   ;  \t
0140100   \t   *       F   i   x       t   h   e       o   f   f   -   b
0140120    y   -   2       a   d   d   r   e   s   s  \r  \t   T   _    
0140140    T   +   (   4   0   0   C   )   +   1   ;  \t  \t  \t   *    
0140160    S   h   o   u   l   d       b   e       T   +   4   0   2   ,
0140200        b   u   t       n   o       m   a   t   t   e   r  \r  \t
0140220    B   B   T   e   m   p   _       (   F   e   t   c   h   _    
0140240    B   B   T   e   m   p   )   +   (   4   0   0   C   )   ,    
0140260    B   r   a   n   c   h   [   .   +   2   ,       A   L   U   >
0140300    =   0   ]   ;  \r  \t 376 001  \0   =   !   T   _       T   +
0140320    (   4   0   0   C   )   ,       B   r   a   n   c   h   [   .
0140340    -   1   ]   ;  \r  \t   R   e   t   u   r   n   ;  \r  \f  \r
0140360    *   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
0140400    -   -   -   -   -   -   -   -   -   -   -   -   -   -   -   -
*
0140440    -   -   -   -   -   -   -   -   -   -   -   -  \r   T   o   u
0140460    c   h   D   s   t   :  \r   *       T   o   u   c   h   e   s
0140500        e   v   e   r   y       p   a   g   e       o   f       t
0140520    h   e       d   e   s   t   i   n   a   t   i   o   n       i
0140540    t   e   m       f   o   r       t   h   i   s       s   c   a
0140560    n       l   i   n   e   .  \r   *       E   n   t   r   y   :
0140600        B   B   D   s   t       =       a   d   d   r   e   s   s
0140620        o   f       f   i   r   s   t       w   o   r   d       o
0140640    f       d   e   s   t   i   n   a   t   i   o   n       i   t
0140660    e   m  \r   *  \t   T       =       D   R   a   s   t       =
0140700        w   o   r   d   s       p   e   r     376 001  \0 342 224
0140720    d   e   s   t   i   n   a   t   i   o   n       s   c   a   n
0140740        l   i   n   e   ;       n   e   g   a   t   i   v   e    
0140760    =   >       b   o   t   t   o   m   -   t   o   -   t   o   p
0141000   \r   *  \t   D   s   t   I   n   c       =       d   i   s   t
0141020    a   n   c   e       b   e   t   w   e   e   n       l   a   s
0141040    t       w   o   r   d       o   f       o   n   e       s   c
0141060    a   n       l   i   n   e       a   n   d  \r   *  \t  \t   f
0141100    i   r   s   t       w   o   r   d       o   f       t   h   e
0141120        n   e   x   t   ;       n   e   g   a   t   i   v   e    
0141140    =   >       b   o   t   t   o   m   -   t   o   -   t   o   p
0141160   \r   *  \t   M   e   m   B   a   s   e       =       B   B   D
0141200    s   t   B   R  \r   *       E   x   i   t   :       T       a
0141220    n   d       B   B   T   e   m   p       c   l   o   b   b   e
0141240    r   e   d  \r   *       N   o   t   e   :       m   u   s   t
0141260        d   i   r   t   y       a   n   y       w   o   r   d   s
0141300        t   o   u   c   h   e   d   ,       t   o       f   o   r
0141320  376 001  \0   u 201   c   e       w   r   i   t   e   -   p   r
0141340    o   t   e   c   t       f   a   u   l   t   .  \r   *       T
0141360    i   m   i   n   g   :       6       c   y   c   l   e   s    
0141400    f   o   r       f   i   r   s   t       p   a   g   e       o
0141420    r       l   e   s   s  \r   *  \t       +   1       c   y   c
0141440    l   e       i   f       r   i   g   h   t   -   t   o   -   l
0141460    e   f   t  \r   *  \t       +   3       c   y   c   l   e   s
0141500        p   e   r       a   d   d   i   t   i   o   n   a   l    
0141520