$ od -c -N 50000 [Indigo]<AltoSource>VMEM.DM!2
0000000  377  \0  \0   t   e   s   t   v   m   e   m   .   b   c   p   l
0000020   \0 376 001  \0 300   d   /   /  \r   /   /       T   e   s   t
0000040        p   r   o   g   r   a   m       f   o   r       V   M   E
0000060    M  \r   /   /       l   a   s   t       e   d   i   t   e   d
0000100        A   u   g   u   s   t       1   ,       1   9   7   7    
0000120        4   :   0   8       P   M  \r   /   /  \r   /   /       C
0000140    o   p   y   r   i   g   h   t       X   e   r   o   x       C
0000160    o   r   p   o   r   a   t   i   o   n       1   9   7   9  \r
0000200   \r  \t   g   e   t       "   s   t   r   e   a   m   s   .   d
0000220    "  \r  \t   g   e   t       "   a   l   t   o   f   i   l   e
0000240    s   y   s   .   d   "  \r  \r   e   x   t   e   r   n   a   l
0000260   \r   [  \t  \t   /   /       O   .   S   .  \r  \t   C   r   e
0000300    a   t   e   D   i   s   p   l   a   y   S   t   r   e   a   m
0000320    ;       S   h   o   w   D   i   s   p   l   a   y   S   t   r
0000340    e   a   m  \r  \t   O   p   e   n   F   i   l   e  \r  \t   C
0000360    l   o   s   e   s   ;       G   e   t   s   ;       P   u   t
0000400    s   ;       W   o   s   ;       W   s   ;       W   s   s  \r
0000420   \t   Z   e   r   o  \r 376 001  \0 233 205  \t   T   i   m   e
0000440    r  \r  \t   d   s   p   ;       k   e   y   s  \r  \t  \t   /
0000460    /       S   T   A   N   D   A   R   D   R   A   M  \r  \t   S
0000500    t   a   n   d   a   r   d   R   A   M  \r  \t  \t   /   /    
0000520    T   e   m   p   l   a   t   e  \r  \t   P   u   t   T   e   m
0000540    p   l   a   t   e  \r  \t  \t   /   /       T   r   a   c   e
0000560   \r  \t   T   r   a   c   e   ;       P   r   o   c   T   r   a
0000600    c   e   ;       U   n   T   r   a   c   e  \r  \t   T   r   a
0000620    c   e   I   n   d   e   n   t  \r  \t   T   r   a   c   e   S
0000640    t   r   e   a   m   ;       T   r   a   c   e   O   u   t   s
0000660    ;       T   r   a   c   e   L   i   n   e   s  \r  \t  \t   /
0000700    /       V   M   E   M  \r  \t   V   m   e   m   S   o   f   t
0000720   \r  \t   I   n   i   t   i   a   l   i   z   e   V   m   e   m
0000740   \r  \t   A   d   d   B   u   f   f   e   r   s   ;       S   n
0000760    a   r   f   B   u   f   f   e   r   ;       U   n   s   n   a
0001000    r   f   B   u   f   f   e   r  \r  \t   M   A   P   T   R   A
0001020    P   ;       L   o   c   k   C   e   l   l 376 001  \0 224   5
0001040    ;       U   n   l   o   c   k   C   e   l   l  \r  \t   F   l
0001060    u   s   h   B   u   f   f   e   r   s  \r  \t  \t   /   /    
0001100    P   R   I   N   T   V   M   E   M   S   T   A   T   E  \r  \t
0001120    P   r   i   n   t   V   m   e   m   S   t   a   t   e  \r  \t
0001140   \t   /   /       S   O   F   T   M   A   P  \r  \t   N   P   R
0001160    O   B   E  \r  \t  \t   /   /       A   S   M   A   P  \r  \t
0001200    @   V   R   R   1   ;       @   V   W   R   1   ;       @   V
0001220    R   R   2   ;       @   V   W   R   2  \r   ]  \r  \r   e   x
0001240    t   e   r   n   a   l  \t   /   /       e   n   t   r   i   e
0001260    s       f   o   r       V   M   E   M  \r   [  \t   C   l   e
0001300    a   n   u   p   L   o   c   k   s  \r  \t   P   a   g   e   T
0001320    y   p   e  \r  \t   P   a   g   e   G   r   o   u   p   S   i
0001340    z   e  \r  \t   P   a   g   e   G   r   o   u   p   B   a   s
0001360    e  \r  \t   P   a   g   e   G   r   o   u   p   A   l   i   g
0001400    n  \r  \t   D   O   P   A   G   E   I   O  \r   ]  \r  \r   e
0001420    x   t   e   r   n   a   l  \t   /   /       l   i   n   k   s
0001440  376 001  \0   . 276       t   o       I   S   F  \r   [  \t   I
0001460    n   i   t   F   m   a   p  \r  \t   I   n   d   e   x   e   d
0001500    P   a   g   e   I   O  \r   ]  \r  \r  \r   m   a   n   i   f
0001520    e   s   t  \r   [  \t   d   s   i   z   e       =       2   5
0001540    0   0   0  \r  \t   n   p   a   g   e   s       =       #   2
0001560    0  \r  \t   m   a   p   s       =       #   1   0   0   0  \r
0001600   \t   d   b   s       =       #   3   0   0   0  \r   ]  \r  \r
0001620    s   t   a   t   i   c  \r   [  \t   p   b   a   s   e       =
0001640        4  \r  \t   p   g   m   s   k  \r  \t   p   s   t   r   m
0001660   \r  \t   d   b   u   f   s  \r  \t   d   h   m  \r  \t   d   s
0001700   \r  \t   f   m   a   p  \r   ]  \r  \r   l   e   t       d   m
0001720    a   p   (   )       b   e  \r   [  \t   S   t   a   n   d   a
0001740    r   d   R   A   M   (   )  \r  \t   l   e   t       d   d    
0001760    =       v   e   c       d   s   i   z   e  \r  \t   d   s    
0002000    =       C   r   e   a   t   e   D   i   s   p   l   a   y   S
0002020    t   r   e   a   m   (   4   0   ,       d   d   ,       d   s
0002040    i   z   e   )  \r 376 001  \0 327 345  \t   S   h   o   w   D
0002060    i   s   p   l   a   y   S   t   r   e   a   m   (   d   s   )
0002100   \r  \t   T   r   a   c   e   L   i   n   e   s       =       6
0002120   \r  \t   T   r   a   c   e   S   t   r   e   a   m       =    
0002140    d   s  \r  \t   T   r   a   c   e   (   M   A   P   T   R   A
0002160    P   ,       "   M   A   P   T   R   A   P   "   )  \r  \t   T
0002200    r   a   c   e   (   v   w   r   i   t   e   ,       "   V   W
0002220    R   I   T   E   "   )  \r  \t   l   e   t       d   b   p   t
0002240        =       v   e   c       #   4   0   0  \r  \t   l   e   t
0002260        d   h   m   a   p       =       v   e   c       m   a   p
0002300    s   +   3  \r  \t   i   f       (   d   h   m   a   p   &   1
0002320    )       n   e       0       t   h   e   n       d   h   m   a
0002340    p       =       d   h   m   a   p   +   1  \r  \t   d   h   m
0002360        =       d   h   m   a   p   +   2  \r  \t   l   e   t    
0002400    d   b       =       v   e   c       d   b   s  \r  \t   d   b
0002420    u   f   s       =       d   b  \r  \t   Z   e   r   o   (   d
0002440    b   u   f   s   ,       d   b   s   ) 376 001  \0 215 025  \r
0002460   \t   l   e   t       d   c   e   l   l   s       =       v   e
0002500    c       5  \r  \t   l   e   t       d   a   v   e   c       =
0002520        v   e   c       n   p   a   g   e   s   *   2   +   1  \r
0002540   \t   l   e   t       f   p       =       v   e   c       l   F
0002560    P  \r  \t   Z   e   r   o   (   f   p   ,       l   F   P   )
0002600   \r  \t   p   s   t   r   m       =       O   p   e   n   F   i
0002620    l   e   (   "   T   E   S   T   .   V   M   E   M   .   "   ,
0002640        k   s   T   y   p   e   R   e   a   d   W   r   i   t   e
0002660    ,       w   o   r   d   I   t   e   m   ,       0   ,       f
0002700    p   )  \r  \t   C   l   o   s   e   s   (   p   s   t   r   m
0002720    )  \r  \t   p   g   m   s   k       =       0  \r  \t   V   m
0002740    e   m   S   o   f   t   (   )  \r  \t   I   n   i   t   i   a
0002760    l   i   z   e   V   m   e   m   (   d   h   m   a   p   +   2
0003000    ,       m   a   p   s   ,       d   b   p   t   ,       d   c
0003020    e   l   l   s   ,       5   ,       d   h   m   a   p   ,    
0003040    p   m   s   t   a   t   )  \r  \t   I   n   i   t   F   m 376
0003060  001  \0 346   U   a   p   (   d   a   v   e   c   ,       n   p
0003100    a   g   e   s   *   2   ,       f   p   ,       t   r   u   e
0003120    )  \r  \t   f   m   a   p       =       d   a   v   e   c  \r
0003140   \t   A   d   d   B   u   f   f   e   r   s   (   d   b   u   f
0003160    s   ,       d   b   u   f   s   +   d   b   s   )  \r  \t   p
0003200    a   u   s   e   (   "   I   n   i   t   i   a   l   i   z   e
0003220    d       .   .   .   "   )  \r  \t   f   o   r       j       =
0003240        0       t   o       6       d   o  \r  \t       [       v
0003260    w   r   i   t   e   (   t   e   s   t   a   d   d   r   (   j
0003300    )   )   !   0       =       t   e   s   t   v   a   l   u   e
0003320    (   j   )   ;       n   z   s   c   a   n   (   )       ]  \r
0003340   \t   f   o   r       j       =       0       t   o       6    
0003360    d   o  \r  \t       [       l   e   t       v   a   l       =
0003400        v   w   r   i   t   e   (   t   e   s   t   a   d   d   r
0003420    (   j   )   )   !   0  \r  \t               W   o   s   (   d
0003440    s   ,       v   a   l   )  \r  \t               i   f       v
0003460    a   l       n 376 001  \0 236  \v   e       t   e   s   t   v
0003500    a   l   u   e   (   j   )       t   h   e   n       W   s   s
0003520    (   T   r   a   c   e   O   u   t   s   ,       "       ?   ?
0003540    ?   ?   ?   ?   ?   ?   ?   ?   "   )  \r  \t               P
0003560    u   t   s   (   T   r   a   c   e   O   u   t   s   ,       $
0003600    *   N   )  \r  \t               n   z   s   c   a   n   (   )
0003620   \r  \t       ]  \r  \t   F   l   u   s   h   B   u   f   f   e
0003640    r   s   (   )  \r  \t   P   r   i   n   t   V   m   e   m   S
0003660    t   a   t   e   (   d   s   )  \r  \t   W   s   s   (   T   r
0003700    a   c   e   O   u   t   s   ,       "   D   o   n   e   *   N
0003720    "   )  \r  \t   p   a   u   s   e   (   "   D   o   n   e    
0003740    .   .   .   "   )  \r   ]  \r  \r   a   n   d       t   e   s
0003760    t   a   d   d   r   (   j   )       =  \r  \t   p   b   a   s
0004000    e       l   s   h   i   f   t       8       +       (   t   a
0004020    b   l   e   [       #   4   4   4   ;   #   1   1   1   1   ;
0004040    #   1   5   5   5   ;   #   2   2   2   2   ;   #   2   6   6
0004060    6   ;   #   3   3   3   3   ;   # 376 001  \0 316   =   3   7
0004100    7   7       ]   )   !   j  \r  \r   a   n   d       t   e   s
0004120    t   v   a   l   u   e   (   j   )       =       #   1   1   1
0004140    0   0   0   +   j  \r  \r   a   n   d       p   a   u   s   e
0004160    (   s   )       b   e  \r   [  \t   W   s   (   s   )  \r  \t
0004200    G   e   t   s   (   k   e   y   s   )  \r  \t   P   u   t   s
0004220    (   d   s   p   ,       $   *   N   )  \r   ]  \r  \r   a   n
0004240    d       n   z   s   c   a   n   (   )       b   e  \r   [  \t
0004260    f   o   r       p       =       d   b   u   f   s       t   o
0004300        d   b   u   f   s   +   d   b   s   -   1       d   o    
0004320    i   f       @   p       n   e       0       t   h   e   n  \r
0004340   \t               P   u   t   T   e   m   p   l   a   t   e   (
0004360    T   r   a   c   e   O   u   t   s   ,       "   .   .   .   $
0004400    7   U   O   :   $   7   U   O   *   N   "   ,       p   ,    
0004420    @   p   )  \r  \t   f   o   r       p       =       d   h   m
0004440        b   y       2       t   o       d   h   m   +   m   a   p
0004460    s   -   2       d   o       i   f       @   p       n 376 001
0004500   \0   :   l   e       0       t   h   e   n  \r  \t            
0004520    P   u   t   T   e   m   p   l   a   t   e   (   T   r   a   c
0004540    e   O   u   t   s   ,       "   $   3   U   O   :   $   7   U
0004560    O   $   7   U   O   *   N   "   ,       p   -   d   h   m   ,
0004600        @   p   ,       p   !   1   )  \r   ]  \r  \r   a   n   d
0004620        v   w   r   i   t   e   (   a   d   d   r   )       =    
0004640    V   W   R   1   (   a   d   d   r   )  \r  \r   a   n   d    
0004660    C   l   e   a   n   u   p   L   o   c   k   s   (   )       b
0004700    e       [       ]  \r  \r   a   n   d       P   a   g   e   T
0004720    y   p   e   (   v   p   )       =       v   a   l   o   f  \r
0004740    [  \t   l   e   t       p   n       =       v   p   -   p   b
0004760    a   s   e  \r  \t   i   f       (   p   n       &       #   1
0005000    7   7   7   7   0   )       n   e       0       t   h   e   n
0005020        p   a   u   s   e   (   "   B   a   d       v   p   "   )
0005040   \r  \t   l   e   t       m   a   s   k       =       1       l
0005060    s   h   i   f   t       p   n  \r  \t   i   f       (   p   g
0005100    m   s   k 376 001  \0  \f 343       &       m   a   s   k   )
0005120        n   e       0       r   e   s   u   l   t   i   s       1
0005140   \r  \t   p   g   m   s   k       =       p   g   m   s   k    
0005160    +       m   a   s   k  \r  \t   r   e   s   u   l   t   i   s
0005200        -   1  \r   ]  \r  \r   a   n   d       P   a   g   e   G
0005220    r   o   u   p   S   i   z   e   (   v   p   )       =       1
0005240   \r   a   n   d       P   a   g   e   G   r   o   u   p   B   a
0005260    s   e   (   v   p   )       =       v   p  \r   a   n   d    
0005300    P   a   g   e   G   r   o   u   p   A   l   i   g   n   (   v
0005320    p   )       =       0  \r  \r   a   n   d       D   O   P   A
0005340    G   E   I   O   (   v   p   ,       c   o   r   e   ,       n
0005360    p   ,       w   f   l   a   g   )       b   e  \r   [  \t   l
0005400    e   t       t       =       v   e   c       1  \r  \t   l   e
0005420    t       i   t       =       T   i   m   e   r   (   t   )  \r
0005440   \t   I   n   d   e   x   e   d   P   a   g   e   I   O   (   f
0005460    m   a   p   ,       3   *   v   p   +   2   ,       c   o   r
0005500    e   ,       n   p   ,       w 376 001  \0   , 377   f   l   a
0005520    g   )  \r  \t   P   u   t   T   e   m   p   l   a   t   e   (
0005540    T   r   a   c   e   O   u   t   s   ,       "   $   S       v
0005560    p       $   U   O   ,       $   U   O       p   a   g   e   (
0005600    s   )   ,       c   o   r   e       $   U   O   :       $   U
0005620    D       m   s   *   N   "   ,  \r  \t           (   w   f   l
0005640    a   g   ?       "   W   r   i   t   e   "   ,       "   R   e
0005660    a   d   "   )   ,       v   p   ,       n   p   ,       c   o
0005700    r   e   ,       T   i   m   e   r   (   t   )   -   i   t   )
0005720   \r   ]  \r  \r   a   n   d       p   m   s   t   a   t   (   p
0005740    t   r   ,       n   )       b   e  \r   [  \t   P   u   t   T
0005760    e   m   p   l   a   t   e   (   T   r   a   c   e   O   u   t
0006000    s   ,       "   M   S   P   R   O   C       c   a   l   l   e
0006020    d       w   i   t   h   $   7   U   O   $   7   U   O   *   N
0006040    "   ,       p   t   r   ,       n   )  \r  \t   i   f       n
0006060        g   e       0       t   h   e   n  \r  \t       f   o   r
0006100        p       =       p   t   r       b   y       2 376  \0   D
0006120  336   C       t   o       p   t   r   +   n   -   2       d   o
0006140   \r  \t               P   u   t   T   e   m   p   l   a   t   e
0006160    (   T   r   a   c   e   O   u   t   s   ,       "   $   9   U
0006200    O   $   7   U   O   *   N   "   ,       p   !   0   ,       p
0006220    !   1   )  \r   ]  \r 377  \0  \0   v   m   e   m   .   d  \0
0006240  376 001  \0   h 271   /   /  \r   /   /       D   e   f   i   n
0006260    i   t   i   o   n   s       f   o   r       V   M   E   M    
0006300    p   a   c   k   a   g   e  \r   /   /       l   a   s   t    
0006320    e   d   i   t   e   d       D   e   c   e   m   b   e   r    
0006340    1   8   ,       1   9   7   8           9   :   1   0       A
0006360    M  \r   /   /  \r   /   /       C   o   p   y   r   i   g   h
0006400    t       X   e   r   o   x       C   o   r   p   o   r   a   t
0006420    i   o   n       1   9   7   9  \r  \r  \r   s   t   r   u   c
0006440    t   u   r   e       B   P   T   :  \r   [  \t   H   A   S   H
0006460    X       b   y   t   e  \r  \t   N   E   X   T       b   y   t
0006500    e  \t   /   /       N   E   X   T       M   U   S   T       B
0006520    E       I   N       L   O   W       P   A   R   T       O   F
0006540        W   O   R   D  \r  \t  \t  \t   /   /       (   F   O   R
0006560        @   b   p   t   )  \r   ]  \r   m   a   n   i   f   e   s
0006600    t       N   E   X   T   m   a   s   k       =       #   3   7
0006620    7  \r  \r   s   t   r   u   c   t   u   r   e       H   M   :
0006640   \r   [  \t   N   K 376 001  \0   h   Q   E   Y       w   o   r
0006660    d  \t   /   /       1   '   s       c   o   m   p   l   e   m
0006700    e   n   t       o   f       k   e   y  \r  \t   F   L   A   G
0006720    W   D       w   o   r   d       =  \r  \t       [       P   D
0006740    I   F       b   i   t       8  \t   /   /       r   e   a   l
0006760        p   a   g   e       #       -       v   i   r   t   u   a
0007000    l       A   C   1   [   0   :   7   ]  \r  \t               F
0007020    L   A   G   S       b   i   t       8       =  \r  \t        
0007040            [       W   G   R   O   U   P       b   i   t       1
0007060   \t   /   /       t   h   i   s       i   s       a       w   r
0007100    i   t   e       g   r   o   u   p  \r  \t                    
0007120        G   R   O   U   P       b   i   t       2       =  \r  \t
0007140                                [       N   F   P   G       b   i
0007160    t       1  \t   /   /       n   o   t       f   i   r   s   t
0007200        p   a   g   e       o   f       g   r   o   u   p  \r  \t
0007220                                        N   L   P   G       b   i
0007240    t       1  \t   /   /       n   o   t 376 001  \0   { 243    
0007260    l   a   s   t       p   a   g   e       o   f       g   r   o
0007300    u   p  \r  \t                               ]  \r  \t        
0007320                    b   l   a   n   k       b   i   t       1  \r
0007340   \t                           D   U   M   M   Y       b   i   t
0007360        1  \r  \t                           N   O   T   R   E   F
0007400        b   i   t       1  \t   /   /       *   *   *       u   s
0007420    e   d       b   y       m   i   c   r   o   c   o   d   e  \r
0007440   \t                           C   L   E   A   N       b   i   t
0007460        1  \t   /   /       *   *   *       u   s   e   d       b
0007500    y       m   i   c   r   o   c   o   d   e  \r  \t            
0007520                b   l   a   n   k       b   i   t       1  \r  \t
0007540                    ]  \r  \t       ]  \r   ]  \r   m   a   n   i
0007560    f   e   s   t       H   M   f   l   a   g   O   f   f   s   e
0007600    t       =       1  \r  \r   s   t   r   u   c   t   u   r   e
0007620        L   C   :  \r   [  \t   a   d   d   r       w   o   r   d
0007640   \r  \t   p   r   o   c       w   o   r   d  \r   ]  \r   m 376
0007660  001  \0 245 344   a   n   i   f   e   s   t       L   C   s   i
0007700    z   e       =       2  \r  \r   m   a   n   i   f   e   s   t
0007720   \r   [  \t   P   S       =       8  \t  \t   /   /       L   O
0007740    G   2   (   V   M       P   A   G   E       S   I   Z   E   )
0007760   \r  \t   W   M       =       (   1       l   s   h   i   f   t
0010000        P   S   )   -   1  \r  \t   R   e   p   I   n   c       =
0010020        2   6  \t   /   /       h   a   s   h       m   a   p    
0010040    r   e   p   r   o   b   e       i   n   c   r   e   m   e   n
0010060    t  \r  \t   B   p   t   S   i   z   e       =       #   4   0
0010100    0  \t   /   /       #       o   f       b   u   f   f   e   r
0010120    s  \r  \t   E   m   p   t   y   V   P       =       -   2  \t
0010140    /   /       p   s   e   u   d   o       V   P       f   o   r
0010160        e   m   p   t   y       b   u   f   f   e   r   s  \r  \t
0010200    N   a   V   P       =       -   3  \t   /   /       p   s   e
0010220    u   d   o       V   P       f   o   r       u   n   a   v   a
0010240    i   l   a   b   l   e       b   u   f   f   e   r   s  \r  \t
0010260    M   i   n   D 376  \0 230 217 371   u   m   m   y   V   P    
0010300    =       -   8  \r   ]  \r  \r   m   a   n   i   f   e   s   t
0010320   \r   [  \t   C   L   E   A   N   b   i   t       =       #   2
0010340   \r  \t   N   O   T   R   E   F   b   i   t       =       #   4
0010360   \r  \t   D   U   M   M   Y   b   i   t       =       #   1   0
0010400   \r  \t   N   L   P   G   b   i   t       =       #   4   0  \r
0010420   \t   N   F   P   G   b   i   t       =       #   1   0   0  \r
0010440   \t   G   R   O   U   P   b   i   t   s       =       N   L   P
0010460    G   b   i   t   +   N   F   P   G   b   i   t  \r  \t   W   G
0010500    R   O   U   P   b   i   t       =       #   2   0   0  \r   ]
0010520   \r 377  \0  \0   v   m   e   m   .   b   c   p   l  \0 376 001
0010540   \0 336 376   /   /  \r   /   /           V   M   E   M       -
0010560        v   i   r   t   u   a   l       m   e   m   o   r   y    
0010600    p   a   c   k   a   g   e  \r   /   /       l   a   s   t    
0010620    e   d   i   t   e   d       S   e   p   t   e   m   b   e   r
0010640        1   5   ,       1   9   7   7           3   :   1   0    
0010660    P   M  \r   /   /  \r   /   /       C   o   p   y   r   i   g
0010700    h   t       X   e   r   o   x       C   o   r   p   o   r   a
0010720    t   i   o   n       1   9   7   9  \r  \r  \t   g   e   t    
0010740    "   v   m   e   m   .   d   "  \r  \r   e   x   t   e   r   n
0010760    a   l  \t   /   /       e   n   t   r   y       p   r   o   c
0011000    e   d   u   r   e   s  \r   [  \t   L   o   c   k   O   n   l
0011020    y   ;       L   o   c   k   R   e   l   o   c   ;       L   o
0011040    c   k   Z   e   r   o  \t   /   /       (   a   d   d   r   ,
0011060        n   e   w   ,       f   l   a   g   )       -   >       o
0011100    k  \r  \t  \t   /   /       (   f   r   o   m       a   s   s
0011120    e   m   b   l   y       c   o   d   e   )  \r  \t   M   A   P
0011140    T   R   A 376 001  \0 221 361   P  \t   /   /       (   v   p
0011160    a   g   e   ,       w   f   l   a   g   ,       h   p   t   r
0011200    )  \r  \t   L   o   c   k   C   e   l   l  \t   /   /       (
0011220    l   v   l   o   c   k   [   ,       p   r   o   c   ]   )  \r
0011240   \t   U   n   l   o   c   k   C   e   l   l  \t   /   /       (
0011260    l   v   l   o   c   k   )  \r  \t  \t   /   /       f   o   r
0011300        V   M   E   M   A   U   X  \r  \t   F   i   n   d   F   r
0011320    e   e   B   u   f  \r  \t   d   e   f   a   u   l   t   N   o
0011340    B   u   f   s   P   r   o   c  \r  \t   F   l   u   s   h   B
0011360    u   f   s  \r  \t   F   l   u   s   h   M   a   p   S   t   a
0011400    t   s  \r  \t   D   o   L   o   c   k   s  \r   ]  \r  \r   e
0011420    x   t   e   r   n   a   l  \t   /   /       e   n   t   r   y
0011440        s   t   a   t   i   c   s  \r   [  \t   @   H   A   S   H
0011460    M   A   P   ;       @   H   A   S   H   M   A   P   S   I   Z
0011500    E   ;       @   H   A   S   H   M   A   P   M   A   S   K  \r
0011520   \t   M   A   P   S   T   A   T   B   A   S   E  \r  \t   @   M
0011540    a   p   S   t   a   t   P   t 376 001  \0   ;   n   r  \r  \t
0011560    S   O   F   T   M   A   P   F   L   A   G  \r  \t   C   h   e
0011600    c   k   B   P   T   f   l   a   g  \r  \t   @   R   e   p   r
0011620    o   b   e   I   n   c  \r  \t  \t   /   /       f   o   r    
0011640    V   M   E   M   A   U   X  \r  \t   @   H   A   S   H   M   A
0011660    P   S   I   Z   E   2  \r  \t   @   H   A   S   H   M   A   P
0011700    1  \r  \t   @   H   A   S   H   M   A   P   T   O   P  \r  \t
0011720    E   M   P   T   Y   X   X  \r  \t   N   A   X   X  \r  \t   M
0011740    a   p   S   t   a   t   P   r   o   c  \r  \t   N   o   B   u
0011760    f   s   P   r   o   c  \r  \t   @   B   p   t   ;       @   B
0012000    p   t   L   a   s   t  \r  \t   L   o   c   k   e   d   C   e
0012020    l   l   s   ;       E   n   d   L   o   c   k   e   d   C   e
0012040    l   l   s   ;       L   a   s   t   L   o   c   k   e   d   C
0012060    e   l   l  \r   ]  \r  \r   e   x   t   e   r   n   a   l  \t
0012100    /   /       p   r   o   c   e   d   u   r   e   s  \r   [  \t
0012120   \t   /   /       O   .   S   .  \r  \t   M   o   v   e   B   l
0012140    o   c   k   ;       S   e   t   B   l   o   c   k 376 001  \0
0012160    6 320   ;       Z   e   r   o  \r  \t   T   i   m   e   r  \r
0012200   \t   C   a   l   l   S   w   a   t  \r  \t   U   s   c  \r  \t
0012220    D   o   u   b   l   e   A   d   d  \r  \t  \t   /   /       A
0012240    S   M   A   P  \r  \t   R   E   H   A   S   H   M   A   P  \r
0012260   \t  \t   /   /       U   s   e   r   -   s   u   p   p   l   i
0012300    e   d  \r  \t   C   l   e   a   n   u   p   L   o   c   k   s
0012320   \t   /   /       (   )  \r  \t   D   O   P   A   G   E   I   O
0012340   \t   /   /       (   V   P   ,       c   o   r   e   ,       #
0012360        o   f       p   a   g   e   s   ,       w   r   i   t   e
0012400        f   l   a   g   )  \r  \t   P   a   g   e   G   r   o   u
0012420    p   B   a   s   e  \t   /   /       (   V   P   )       -   >
0012440        V   P  \r  \t   P   a   g   e   G   r   o   u   p   S   i
0012460    z   e  \t   /   /       (   V   P   )       -   >       #    
0012500    o   f       p   a   g   e   s       &       w   r   i   t   e
0012520        g   r   o   u   p       f   l   a   g  \r  \t   P   a   g
0012540    e   G   r   o   u   p   A   l   i   g   n  \t   /   /       (
0012560    V   P 376 001  \0 004   P   )       -   >       c   o   r   e
0012600        a   l   i   g   n   m   e   n   t       m   a   s   k  \r
0012620   \t   P   a   g   e   T   y   p   e  \t   /   /       (   V   P
0012640    )       -   >       n   e   w       p   a   g   e       f   l
0012660    a   g  \r   ]  \r  \r   e   x   t   e   r   n   a   l  \t   /
0012700    /       s   t   a   t   i   c   s  \r   [  \t  \t   /   /    
0012720    O   .   S   .  \r  \t   @   o   n   e   B   i   t   s  \r   ]
0012740   \r  \r  \r   s   t   a   t   i   c  \r   [  \t   H   A   S   H
0012760    M   A   P  \r  \t   H   A   S   H   M   A   P   S   I   Z   E
0013000   \t   /   /       M   U   S   T       B   E       P   O   W   E
0013020    R       O   F       2  \r  \t   H   A   S   H   M   A   P   S
0013040    I   Z   E   2  \r  \t   H   A   S   H   M   A   P   M   A   S
0013060    K  \r  \t   H   A   S   H   M   A   P   1  \r  \t   H   A   S
0013100    H   M   A   P   T   O   P  \r  \t   M   A   P   S   T   A   T
0013120    B   A   S   E  \r  \t   M   a   p   S   t   a   t   P   t   r
0013140   \r  \t   S   O   F   T   M   A   P   F   L   A   G       =    
0013160    f   a   l   s   e  \r  \t 376 001  \0   ;  \b   E   M   P   T
0013200    Y   X   X  \t  \t   /   /       H   A   S   H   X       o   f
0013220        e   m   p   t   y       b   u   f   f   e   r   s   ,    
0013240    l   s   h   i   f   t       8  \r  \t   N   A   X   X  \t   /
0013260    /       H   A   S   H   X       o   f       u   n   a   v   a
0013300    i   l   a   b   l   e       b   u   f   f   e   r   s   ,    
0013320    l   s   h   i   f   t       8  \r  \t   M   a   p   S   t   a
0013340    t   P   r   o   c  \t   /   /       m   a   p       s   t   a
0013360    t   i   s   t   i   c   s       p   r   o   c   e   d   u   r
0013400    e  \r  \t   B   p   t   ;       B   p   t   L   a   s   t  \r
0013420   \t   N   o   B   u   f   s   P   r   o   c  \r  \t   L   o   c
0013440    k   e   d   C   e   l   l   s   ;       L   a   s   t   L   o
0013460    c   k   e   d   C   e   l   l   ;       E   n   d   L   o   c
0013500    k   e   d   C   e   l   l   s  \r  \t   C   h   e   c   k   B
0013520    P   T   f   l   a   g       =       f   a   l   s   e  \r  \t
0013540    R   e   p   r   o   b   e   I   n   c       =       R   e   p
0013560    I   n   c  \r  \t   A   n   y   D   i   r   t 376 001  \0 275
0013600    c   y  \r  \t   L   a   s   t   T   r   a   p   T   i   m   e
0013620        =       0  \r  \t   T   S   A       =       0   ;       T
0013640    S   A   1       =       0  \r  \t   A   g   i   n   g   I   n
0013660    t   e   r   v   a   l       =       0  \r  \t   R   e   f   L
0013700    o   c   k   e   d   C   e   l   l   s       =       t   r   u
0013720    e  \r  \t   L   o   c   k   O   n   l   y  \t   /   /       =
0013740        F   a   l   s   e   P   r   e   d   i   c   a   t   e  \r
0013760   \t   L   o   c   k   Z   e   r   o  \t   /   /       =       T
0014000    r   u   e   P   r   e   d   i   c   a   t   e  \r   ]  \r  \r
0014020   \r   /   /           P   R   O   C   E   S   S       M   A   P
0014040        T   R   A   P   ,       C   A   L   L   E   D       F   R
0014060    O   M       A   S   S   E   M   B   L   Y       C   O   D   E
0014100   \r  \r   l   e   t       M   A   P   T   R   A   P   (   V   P
0014120    G   ,       W   F   L   A   G   ,       H   P   T   R   )    
0014140    b   e  \r   [  \t   C   l   e   a   n   u   p   L   o   c   k
0014160    s   (   )  \r  \t   i   f       F   l   u   s   h   M   a   p
0014200    S 376 001  \0   G 030   t   a   t   s   (   )       t   h   e
0014220    n       r   e   t   u   r   n  \t   /   /       s   t   a   t
0014240    i   s   t   i   c   s       b   u   f   f   e   r       w   a
0014260    s       f   u   l   l  \r  \t   i   f       U   s   c   (   V
0014300    P   G   ,       M   i   n   D   u   m   m   y   V   P   )    
0014320    g   e       0       t   h   e   n       C   a   l   l   S   w
0014340    a   t   (   "   I   l   l   e   g   a   l       V   P   "   )
0014360   \r  \t   i   f       @   H   P   T   R       n   e       0    
0014400    t   h   e   n  \r  \t       [  \t   /   /       F   I   R   S
0014420    T       W   R   I   T   E       T   O       C   L   E   A   N
0014440        P   A   G   E  \r  \t               H   P   T   R   >   >
0014460    H   M   .   C   L   E   A   N       =       0  \r  \t        
0014500        A   n   y   D   i   r   t   y       =       t   r   u   e
0014520   \r  \t               r   e   t   u   r   n  \r  \t       ]  \r
0014540   \r  \t   l   e   t       t   t   v       =       v   e   c    
0014560    1  \r  \t   t   t   v   !   1       =       T   i   m   e   r
0014600    (   t   t   v   )   - 376 001  \0   ~   .   L   a   s   t   T
0014620    r   a   p   T   i   m   e  \r  \t   t   t   v   !   0       =
0014640        0  \r  \t   D   o   u   b   l   e   A   d   d   (   l   v
0014660        T   S   A   ,       t   t   v   )  \r  \r  \t   l   e   t
0014700        p   t   y   p   e       =       P   a   g   e   T   y   p
0014720    e   (   V   P   G   ,       W   F   L   A   G   )  \r  \t   l
0014740    e   t       N   E   W   P   A   G   E   F   L   A   G       =
0014760        s   e   l   e   c   t   o   n       p   t   y   p   e    
0015000    i   n   t   o  \r  \t       [       c   a   s   e       1   :
0015020        f   a   l   s   e  \r  \t               c   a   s   e    
0015040    -   1   :       t   r   u   e  \r  \t               d   e   f
0015060    a   u   l   t   :       C   a   l   l   S   w   a   t   (   "
0015100    B   a   d       P   a   g   e   T   y   p   e   "   )  \r  \t
0015120        ]  \r  \r  \t   l   e   t       V   P   A   G   E       =
0015140        P   a   g   e   G   r   o   u   p   B   a   s   e   (   V
0015160    P   G   )  \r  \t   l   e   t       V   N   P   G   S       =
0015200        P   a   g   e   G   r   o   u   p   S 376 001  \0   A 212
0015220    i   z   e   (   V   P   A   G   E   )  \r  \t   l   e   t    
0015240    A   L   I   G   N       =       P   a   g   e   G   r   o   u
0015260    p   A   l   i   g   n   (   V   P   A   G   E   )  \r  \r  \t
0015300    l   e   t       W   G       =       0  \r  \t   i   f       V
0015320    N   P   G   S       l   s       0       t   h   e   n  \t   /
0015340    /       t   h   i   s       i   s       a       w   r   i   t
0015360    e       g   r   o   u   p  \r  \t               W   G   ,    
0015400    V   N   P   G   S       =       W   G   R   O   U   P   b   i
0015420    t   ,       -   V   N   P   G   S  \r  \r   /   /           M
0015440    a   r   k       l   o   c   k   e   d       p   a   g   e   s
0015460        a   s       r   e   f   e   r   e   n   c   e   d  \r  \t
0015500    i   f       R   e   f   L   o   c   k   e   d   C   e   l   l
0015520    s       t   h   e   n  \r  \t       f   o   r       I       =
0015540        L   o   c   k   e   d   C   e   l   l   s       b   y    
0015560    L   C   s   i   z   e       t   o       L   a   s   t   L   o
0015600    c   k   e   d   C   e   l   l   -   L   C   s   i   z   e    
0015620  376 001  \0 257   ]   d   o  \r  \t           u   n   l   e   s
0015640    s       (   I   >   >   L   C   .   p   r   o   c   )   (   I
0015660    >   >   L   C   .   a   d   d   r   ,       0   ,       f   a
0015700    l   s   e   )       d   o  \r  \t       [       l   e   t    
0015720    h   p       =       H   A   S   H   M   A   P   1   +   (   B
0015740    p   t   +   @   (   I   >   >   L   C   .   a   d   d   r   )
0015760        r   s   h   i   f   t       P   S   )   >   >   B   P   T
0016000    .   H   A   S   H   X   *   2  \r  \t               i   f    
0016020    (   @   h   p       &       D   U   M   M   Y   b   i   t   )
0016040        e   q       0       t   h   e   n       @   h   p       =
0016060        @   h   p       &       n   o   t       N   O   T   R   E
0016100    F   b   i   t  \r  \t       ]  \r  \r   /   /           F   L
0016120    U   S   H       B   u   f   f   e   r  \r  \r  \t   l   e   t
0016140        t   n       =       n   i   l  \r  \t       [       t   n
0016160        =       F   i   n   d   F   r   e   e   B   u   f   (   V
0016200    N   P   G   S   ,       A   L   I   G   N   ,       0   )  \r
0016220   \t               i 376 001  \0 324  \t   f       t   n       n
0016240    e       0       b   r   e   a   k  \r  \t               N   o
0016260    B   u   f   s   P   r   o   c   (   )  \r  \t       ]       r
0016300    e   p   e   a   t  \r  \r  \t   F   l   u   s   h   B   u   f
0016320    s   (   t   n   ,       V   N   P   G   S   ,       -   1   )
0016340   \r  \r   /   /           R   E   A   D       I   N       N   E
0016360    W       P   A   G   E  \r  \r  \t   l   e   t       C   O   R
0016400    E       =       t   n       l   s   h   i   f   t       P   S
0016420   \r  \t   t   e   s   t       N   E   W   P   A   G   E   F   L
0016440    A   G  \r  \t       i   f   s   o       Z   e   r   o   (   C
0016460    O   R   E   ,       V   N   P   G   S       l   s   h   i   f
0016500    t       P   S   )  \r  \t           i   f   n   o   t       D
0016520    O   P   A   G   E   I   O   (   V   P   A   G   E   ,       C
0016540    O   R   E   ,       V   N   P   G   S   ,       f   a   l   s
0016560    e   )  \r  \r   /   /           R   e   o   r   d   e   r    
0016600    b   u   f   f   e   r   s  \r  \r  \t   i   f       (   T   S
0016620    A       n   e       0   )       %     376 001  \0   $ 260   (
0016640    U   s   c   (   T   S   A   1   ,       A   g   i   n   g   I
0016660    n   t   e   r   v   a   l   )       g   e       0   )       t
0016700    h   e   n  \r  \t       [       T   S   A   ,       T   S   A
0016720    1       =       0   ,       0  \r  \t               U   p   d
0016740    a   t   e   C   h   a   i   n   (   )  \r  \t       ]  \r  \t
0016760    A   D   D   T   O   M   A   P   (   t   n   ,       V   N   P
0017000    G   S   ,       V   P   A   G   E   ,       (   N   E   W   P
0017020    A   G   E   F   L   A   G       %       W   F   L   A   G   ?
0017040        0   ,       C   L   E   A   N   b   i   t   )   +   W   G
0017060    )  \r  \r  \t   C   h   e   c   k   B   P   T   (   )  \r  \r
0017100   \t   L   a   s   t   T   r   a   p   T   i   m   e       =    
0017120    T   i   m   e   r   (   t   t   v   )  \r  \r   ]  \r  \r   a
0017140    n   d       d   e   f   a   u   l   t   N   o   B   u   f   s
0017160    P   r   o   c   (   )       b   e  \r  \t   C   a   l   l   S
0017200    w   a   t   (   "   N   o       f   r   e   e       b   u   f
0017220    f   e   r   (   s   )   "   )  \r  \r   a   n   d       F 376
0017240  001  \0 262 342   l   u   s   h   M   a   p   S   t   a   t   s
0017260    (   )       =       v   a   l   o   f  \r   [  \t   i   f    
0017300    M   A   P   S   T   A   T   B   A   S   E       e   q       0
0017320        r   e   s   u   l   t   i   s       f   a   l   s   e  \r
0017340   \t   l   e   t       n       =       M   a   p   S   t   a   t
0017360    P   t   r   -   M   A   P   S   T   A   T   B   A   S   E  \r
0017400   \t   M   a   p   S   t   a   t   P   t   r       =       M   A
0017420    P   S   T   A   T   B   A   S   E  \r  \t   /   /       I   f
0017440        u   s   i   n   g       t   h   e       R   A   M   ,    
0017460    M   a   p   S   t   a   t   P   r   o   c       m   u   s   t
0017500        r   e   s   e   t       t   h   e  \r  \t   /   /        
0017520        R       r   e   g   i   s   t   e   r       i   t   s   e
0017540    l   f       a   n   d       r   e   t   u   r   n       t   h
0017560    e       o   l   d       v   a   l   u   e  \r  \t   i   f    
0017600    M   a   p   S   t   a   t   P   r   o   c       n   e       0
0017620        t   h   e   n  \r  \t       [       l   e   t       r    
0017640    =       M   a 376 001  \0  \0   O   p   S   t   a   t   P   r
0017660    o   c   (   M   A   P   S   T   A   T   B   A   S   E   ,    
0017700    n   )  \r  \t               u   n   l   e   s   s       S   O
0017720    F   T   M   A   P   F   L   A   G       d   o       n       =
0017740        r  \r  \t       ]  \r  \t   r   e   s   u   l   t   i   s
0017760        n       e   q       H   A   S   H   M   A   P   -   M   A
0020000    P   S   T   A   T   B   A   S   E  \r   ]  \r  \r   a   n   d
0020020        g   e   t   g   r   o   u   p   (   i   ,       m   a   s
0020040    k   ,       d   )       =       v   a   l   o   f  \r   [  \t
0020060    w   h   i   l   e       (   (   H   A   S   H   M   A   P   +
0020100    (   B   p   t   +   i   )   >   >   B   P   T   .   H   A   S
0020120    H   X   *   2   )   >   >   H   M   .   F   L   A   G   W   D
0020140        &       m   a   s   k   )       n   e       0       d   o
0020160   \r  \t               i       =       i   +   d  \r  \t   r   e
0020200    s   u   l   t   i   s       i  \r   ]  \r  \r   a   n   d    
0020220    F   i   n   d   F   r   e   e   B   u   f   (   n   b   ,    
0020240    m   a   s   k   ,       w   a   n 376 001  \0 363   7   t   e
0020260    d   )       =       v   a   l   o   f  \r   [  \t   l   e   t
0020300        t   n       =       @   B   p   t  \r  \t   l   e   t    
0020320    b   l   k       =       v   e   c       B   p   t   S   i   z
0020340    e  \r  \t               /   /       b   l   k   !   i       e
0020360    q       0       m   e   a   n   s       p   a   g   e       n
0020400    o   t       r   e   a   c   h   e   d       y   e   t  \r  \t
0020420                /   /       b   l   k   !   i       g   r       0
0020440        m   e   a   n   s       b   u   f   f   e   r       b   l
0020460    k   !   i       i   s       f   i   r   s   t       o   f    
0020500    a   v   a   i   l   a   b   l   e       b   l   o   c   k  \r
0020520   \t               /   /       b   l   k   !   i       l   s    
0020540    0       m   e   a   n   s       b   u   f   f   e   r       i
0020560        b   e   g   i   n   s       a   v   .       b   l   o   c
0020600    k       o   f       l   e   n   g   t   h       -   b   l   k
0020620    !   i  \r  \t   Z   e   r   o   (   b   l   k   ,       B   p
0020640    t   S   i   z   e   )  \r  \t   w   h   i   l   e     376 001
0020660   \0   V   3   t   n       n   e       0       d   o  \r  \t    
0020700    [       l   e   t       b   t   n       =       n   i   l  \r
0020720   \t               i   f       D   o   L   o   c   k   s   (   t
0020740    n       l   s   h   i   f   t       P   S   ,       0   ,    
0020760    f   a   l   s   e   )       g   o   t   o       b   o   t   1
0021000   \r  \t               b   l   k   !   t   n       =       -   1
0021020   \r  \t               b   t   n       =       m   e   r   g   e
0021040    b   l   o   c   k   s   (   t   n   ,       b   l   k   )  \r
0021060   \t               i   f       (   (   -   b   t   n       &    
0021100    m   a   s   k   )   +   b   l   k   !   b   t   n   +   n   b
0021120        l   e       0   )       &       (   (   H   A   S   H   M
0021140    A   P   +   (   B   p   t   +   b   t   n   )   >   >   B   P
0021160    T   .   H   A   S   H   X   *   2   )   >   >   H   M   .   N
0021200    F   P   G       e   q       0   )       t   h   e   n  \r  \t
0021220                    [       l   e   t       r   t   n       =    
0021240    b   t   n   +   (   -   b   t   n       &       m   a   s   k
0021260    )  \r  \t 376 001  \0 275   "                           i   f
0021300        (   w   a   n   t   e   d       e   q       0   )       %
0021320        (   (   w   a   n   t   e   d       g   e       r   t   n
0021340    )       &       (   w   a   n   t   e   d       l   s       b
0021360    t   n   -   b   l   k   !   b   t   n   )   )       r   e   s
0021400    u   l   t   i   s       r   t   n  \r  \t                   ]
0021420   \r   b   o   t   1   :  \t               t   n       =       B
0021440    p   t   !   t   n       &       N   E   X   T   m   a   s   k
0021460   \r  \t       ]  \r  \t   r   e   s   u   l   t   i   s       0
0021500   \r   ]  \r  \r   a   n   d       m   e   r   g   e   b   l   o
0021520    c   k   s   (   o   t   n   ,       b   l   k   )       =    
0021540    v   a   l   o   f  \r   /   /       A   v   a   i   l   a   b
0021560    l   e       b   l   o   c   k   s       a   r   e       o   f
0021600        f   o   u   r       t   y   p   e   s   :  \r   /   /    
0021620    c   l   o   s   e   d       (   C   )   ,       c   o   n   s
0021640    i   s   t   i   n   g       o   f       a   n       i   n   t
0021660    e   g   r   a   l       n   u 376 001  \0 211 234   m   b   e
0021700    r       o   f       s   i   n   g   l   e       p   a   g   e
0021720    s       a   n   d       c   o   m   p   l   e   t   e       p
0021740    a   g   e       g   r   o   u   p   s   ;  \r   /   /       h
0021760    e   a   d       (   H   )   ,       c   o   n   s   i   s   t
0022000    i   n   g       o   n   l   y       o   f       s   o   m   e
0022020        i   n   i   t   i   a   l       p   a   g   e   s       o
0022040    f       a       p   a   g   e       g   r   o   u   p   ;  \r
0022060    /   /       t   a   i   l       (   T   )   ,       c   o   n
0022100    s   i   s   t   i   n   g       o   n   l   y       o   f    
0022120    s   o   m   e       f   i   n   a   l       p   a   g   e   s
0022140        o   f       a       p   a   g   e       g   r   o   u   p
0022160    ;  \r   /   /       i   n   t   e   r   i   o   r       (   I
0022200    )   ,       c   o   n   s   i   s   t   i   n   g       o   n
0022220    l   y       o   f       s   o   m   e       i   n   t   e   r
0022240    i   o   r       p   a   g   e   s       o   f       a       p
0022260    a   g   e       g   r   o   u   p   .  \r   /   / 376 001  \0
0022300    S   z       T   h   e       f   o   l   l   o   w   i   n   g
0022320        t   a   b   l   e       s   p   e   c   i   f   i   e   s
0022340        w   h   e   t   h   e   r       a       g   i   v   e   n
0022360        p   a   i   r       o   f       a   d   j   a   c   e   n
0022400    t       b   l   o   c   k   s  \r   /   /               m   a
0022420    y       b   e       m   e   r   g   e   d       (   g   i   v
0022440    e   s       t   h   e       t   y   p   e       o   f       t
0022460    h   e       m   e   r   g   e   d       b   l   o   c   k   )
0022500    ,  \r   /   /               m   u   s   t       b   e       l
0022520    e   f   t       s   e   p   a   r   a   t   e       (   -   )
0022540    ,  \r   /   /               o   r       i   s       i   m   p
0022560    o   s   s   i   b   l   e       (   ?   )   :  \r   /   /    
0022600            C           H           I           T  \r   /   /   C
0022620            C           -           ?           ?  \r   /   /   H
0022640            ?           ?           H           C  \r   /   /   I
0022660            ?           ?           I           T  \r   /   /   T
0022700          376 001  \0 350 216   -           -           ?        
0022720    ?  \r   /   /       I   t       i   s       e   a   s   y    
0022740    t   o       d   i   s   t   i   n   g   u   i   s   h       b
0022760    l   o   c   k       t   y   p   e   s       o   n       t   h
0023000    e       b   a   s   i   s       o   f  \r   /   /            
0023020    t   h   e       g   r   o   u   p       b   i   t   s       i
0023040    n       t   h   e   i   r       f   i   r   s   t       a   n
0023060    d       l   a   s   t       p   a   g   e   s   :  \r   /   /
0023100        C       h   a   s       (   ~   N   F   ,   ~   N   L   )
0023120    ;  \r   /   /       H       h   a   s       (   ~   N   F   +
0023140    N   L   ,   N   F   +   N   L   )   ;  \r   /   /       T    
0023160    h   a   s       (   N   F   +   N   L   ,   N   F   +   ~   N
0023200    L   )   ;  \r   /   /       I       h   a   s       (   N   F
0023220    +   N   L   ,   N   F   +   N   L   )   .  \r   /   /       W
0023240    h   e   n       w   e       w   a   n   t       t   o       a
0023260    d   d       a       p   a   g   e       t   o       t   h   e
0023300        s   e   t       a   v 376 001  \0   8  \n   a   i   l   a
0023320    b   l   e       a   s       c   a   n   d   i   d   a   t   e
0023340    s       f   o   r       r   e   p   l   a   c   e   m   e   n
0023360    t   ,  \r   /   /               w   e       f   i   r   s   t
0023400        c   o   n   v   e   r   t       i   t       i   n   t   o
0023420        a       o   n   e   -   p   a   g   e       b   l   o   c
0023440    k       o   f       t   h   e       a   p   p   r   o   p   r
0023460    i   a   t   e       t   y   p   e   ,  \r   /   /            
0023500    a   n   d       t   h   e   n       d   o       m   e   r   g
0023520    i   n   g       a   c   c   o   r   d   i   n   g       t   o
0023540        t   h   e       t   a   b   l   e       a   b   o   v   e
0023560    .  \r   /   /       I   n       f   a   c   t   ,       i   t
0023600        i   s       e   a   s   i   e   s   t       t   o       d
0023620    e   t   e   c   t       t   h   e       c   a   s   e   s    
0023640    w   h   e   r   e       m   e   r   g   i   n   g       i   s
0023660        f   o   r   b   i   d   d   e   n       (   T   x       o
0023700    r       x   H   )   ,  \r   /   /             376 001  \0 366
0023720  234   a   n   d       m   e   r   g   e       i   n       a   l
0023740    l       o   t   h   e   r       c   a   s   e   s   .  \r   [
0023760   \t   l   e   t       t   n       =       o   t   n  \r  \r   [
0024000   \t   l   e   t       b   p       =       b   l   k   +   t   n
0024020   \r  \t   i   f       @   b   p       e   q       0       t   h
0024040    e   n  \r  \t       [       b   p       =       b   l   k   +
0024060    o   t   n  \r  \t               r   e   s   u   l   t   i   s
0024100        (   @   b   p       l   s       0   ?       o   t   n   ,
0024120        @   b   p   )  \r  \t       ]  \r  \t   l   e   t       t
0024140    n   0       =       (   @   b   p       l   s       0   ?    
0024160    t   n   ,       @   b   p   )  \r           [  \t   l   e   t
0024200        b   p   1       =       b   p   +   1  \r  \t   i   f    
0024220    @   b   p   1       e   q       0       g   o   t   o       d
0024240    o   w   n  \r  \t   l   e   t       t   p       =       B   p
0024260    t   +   t   n  \r  \t   i   f       (   H   A   S   H   M   A
0024300    P   1   !   (   (   B   p   t   +   t   n   0   )   >   >   B
0024320    P 376 001  \0 257 210   T   .   H   A   S   H   X   *   2   )
0024340    &   N   F   P   G   b   i   t   )       n   e       0       t
0024360    h   e   n  \r  \t           i   f       (   (   H   A   S   H
0024400    M   A   P   1   !   (   t   p   >   >   B   P   T   .   H   A
0024420    S   H   X   *   2   )   )   &   N   L   P   G   b   i   t   )
0024440        e   q       0       t   h   e   n  \t   /   /       T   x
0024460    ,       c   a   n   '   t       m   e   r   g   e  \r  \t    
0024500                g   o   t   o       d   o   w   n  \r  \t   i   f
0024520        (   H   A   S   H   M   A   P   1   !   (   (   t   p   -
0024540    @   b   p   1   )   >   >   B   P   T   .   H   A   S   H   X
0024560    *   2   )   &   N   L   P   G   b   i   t   )       n   e    
0024600    0       t   h   e   n  \r  \t           i   f       (   (   H
0024620    A   S   H   M   A   P   1   !   (   (   t   p   +   1   )   >
0024640    >   B   P   T   .   H   A   S   H   X   *   2   )   )   &   N
0024660    F   P   G   b   i   t   )       e   q       0       t   h   e
0024700    n  \t   /   /       x   H   ,       c   a   n   '   t       m
0024720    e   r   g   e  \r  \t 376 001  \0   " 211                   g
0024740    o   t   o       d   o   w   n  \r  \t   /   /       O   K    
0024760    t   o       m   e   r   g   e  \r  \t   l   e   t       b   p
0025000    0       =       b   l   k   +   t   n   0  \r  \t   @   b   p
0025020    0       =       @   b   p   0   +   @   b   p   1  \t   /   /
0025040        a   d   d       l   e   n   g   t   h   s  \r  \t   l   e
0025060    t       l   e   n   m   1       =       -   @   b   p   0   -
0025100    1  \r  \t   b   p   0   !   l   e   n   m   1       =       t
0025120    n   0  \t   /   /       m   a   r   k       t   o   p  \r  \t
0025140    o   t   n       =       t   n   0   +   l   e   n   m   1  \t
0025160    /   /       m   o   v   e       t   o       t   o   p       o
0025200    f       b   l   o   c   k  \r  \t   t   n   0       =       o
0025220    t   n   +   1  \r               ]  \r   d   o   w   n   :  \t
0025240    t   n       =       t   n   0   -   1  \r   ]       r   e   p
0025260    e   a   t  \r  \r   ]  \r  \r   a   n   d       R   e   m   o
0025300    v   e   B   u   f   s   (   t   n   ,       N   P   G   S   )
0025320        b   e  \r   /   /       R   e   m   o 376 001  \0   , 351
0025340    v   e       t   h   e       a   f   f   e   c   t   e   d    
0025360    b   u   f   f   e   r   s       f   r   o   m       t   h   e
0025400        c   h   a   i   n  \r   [  \t   l   e   t       l   a   s
0025420    t   t   n       =       t   n   +   N   P   G   S   -   1  \r
0025440   \r  \t   l   e   t       I   ,       N       =       0   ,    
0025460    N   P   G   S  \r  \t       [       l   e   t       i   p    
0025500    =       B   p   t   +   I  \r  \t               I       =    
0025520    i   p   >   >   B   P   T   .   N   E   X   T  \r  \t        
0025540        w   h   i   l   e       (   I       g   e       t   n   )
0025560        &       (   I       l   e       l   a   s   t   t   n   )
0025600        d   o  \r  \t                   [       I       =       (
0025620    B   p   t   +   I   )   >   >   B   P   T   .   N   E   X   T
0025640   \r  \t                           @   i   p       =       (   @
0025660    i   p       &       n   o   t       N   E   X   T   m   a   s
0025700    k   )   +   I  \r  \t                           N       =    
0025720    N   -   1  \r  \t                           i   f       N    
0025740  376 001  \0   P 355   e   q       0       r   e   t   u   r   n
0025760   \r  \t                   ]  \r  \t       ]       r   e   p   e
0026000    a   t  \r   ]  \r  \r   a   n   d       U   p   d   a   t   e
0026020    C   h   a   i   n   (   )       b   e  \r   /   /       R   e
0026040    o   r   d   e   r       t   h   e       c   h   a   i   n    
0026060    a   c   c   o   r   d   i   n   g       t   o       u   s   e
0026100   \r   [  \t   l   e   t       I       =       @   B   p   t  \r
0026120   \t   @   B   p   t       =       0  \r  \t   l   e   t       h
0026140    e   a   d   1       =       0  \r  \t   l   e   t       c   h
0026160    a   i   n   0   ,       c   h   a   i   n   1       =       B
0026200    p   t   ,       l   v       h   e   a   d   1  \r  \r  \t    
0026220    [  \t   l   e   t       i   p       =       B   p   t   +   I
0026240   \r  \t  \t   l   e   t       H   P       =       H   A   S   H
0026260    M   A   P   1   +   (   @   i   p   )   <   <   B   P   T   .
0026300    H   A   S   H   X   *   2  \r  \t  \t   t   e   s   t       (
0026320    @   H   P       &       N   O   T   R   E   F   b   i   t   )
0026340        e   q       0 376 001  \0 365 264  \r  \t  \t   i   f   s
0026360    o  \t   /   /       R   E   F   E   R   E   N   C   E   D   ,
0026400        P   U   T       O   N       c   h   a   i   n   1  \r  \t
0026420   \t       [       @   H   P       =       @   H   P   +   N   O
0026440    T   R   E   F   b   i   t  \r  \t  \t               @   c   h
0026460    a   i   n   1       =       (   @   c   h   a   i   n   1    
0026500    &       n   o   t       N   E   X   T   m   a   s   k   )   +
0026520    I  \t   /   /       O   K       w   h   e   n       c   h   a
0026540    i   n   1       =       l   v       h   e   a   d   1  \r  \t
0026560   \t               c   h   a   i   n   1       =       i   p  \r
0026600   \t  \t       ]  \r  \t  \t   i   f   n   o   t  \t   /   /    
0026620    N   O   T       R   E   F   E   R   E   N   C   E   D   ,    
0026640    P   U   T       O   N       c   h   a   i   n   0  \r  \t  \t
0026660        [       @   c   h   a   i   n   0       =       (   @   c
0026700    h   a   i   n   0       &       n   o   t       N   E   X   T
0026720    m   a   s   k   )   +   I  \t   /   /       O   K       e   v
0026740    e   n       w   h   e   n       c   h 376 001  \0 245   Q   a
0026760    i   n   0   =   B   p   t  \r  \t  \t               c   h   a
0027000    i   n   0       =       i   p  \r  \t  \t       ]  \r  \r  \t
0027020   \t   I       =       @   i   p       &       N   E   X   T   m
0027040    a   s   k  \r  \r  \t       ]       r   e   p   e   a   t   u
0027060    n   t   i   l       I       e   q       0  \r  \r   /   /    
0027100        L   i   n   k       t   h   e       c   h   a   i   n   s
0027120    .           @   B   p   t   =   h   e   a   d   0       a   l
0027140    r   e   a   d   y  \r  \r  \t   c   h   a   i   n   1   >   >
0027160    B   P   T   .   N   E   X   T       =       0  \r  \t   c   h
0027200    a   i   n   0   >   >   B   P   T   .   N   E   X   T       =
0027220        h   e   a   d   1  \r  \t   B   p   t   L   a   s   t    
0027240    =       (   h   e   a   d   1       e   q       0   ?       c
0027260    h   a   i   n   0   ,       c   h   a   i   n   1   )   -   B
0027300    p   t  \r   ]  \r  \r   a   n   d       A   D   D   T   O   M
0027320    A   P   (   t   n   ,       N   P   G   S   ,       V   P   ,
0027340        n   e   w   b   i   t   s   )       b   e  \r   [   A 376
0027360  001  \0   < 310   D   M  \r   /   /           R   E   S   E   T
0027400        T   H   E       P   A   G   E   D   -   O   U   T       E
0027420    N   T   R   Y  \r  \t   i   f       N   P   G   S       g   r
0027440        1       t   h   e   n       n   e   w   b   i   t   s    
0027460    =       n   e   w   b   i   t   s   +   N   L   P   G   b   i
0027500    t  \r  \r  \t   (   B   p   t   +   B   p   t   L   a   s   t
0027520    )   >   >   B   P   T   .   N   E   X   T       =       t   n
0027540   \r  \t   B   p   t   L   a   s   t       =       t   n   +   N
0027560    P   G   S   -   1  \r  \t   l   e   t       N       =       t
0027600    n  \r  \t   w   h   i   l   e       N       l   s       B   p
0027620    t   L   a   s   t       d   o  \r  \t       [       B   p   t
0027640    !   N       =       N   +   1  \r  \t               M   a   k
0027660    e   M   a   p   E   n   t   r   y   (   V   P   ,       N   ,
0027700        n   e   w   b   i   t   s   )  \r  \t               n   e
0027720    w   b   i   t   s       =       n   e   w   b   i   t   s    
0027740    %       N   F   P   G   b   i   t  \r  \t               V   P
0027760        =       V 376 001  \0 266 375   P   +   1  \r  \t        
0030000        N       =       N   +   1  \r  \t       ]  \r  \t   B   p
0030020    t   !   N       =       0  \r  \t   M   a   k   e   M   a   p
0030040    E   n   t   r   y   (   V   P   ,       N   ,       n   e   w
0030060    b   i   t   s       &       n   o   t       N   L   P   G   b
0030100    i   t   )  \r   ]   A   D   M  \r  \r   a   n   d       M   a
0030120    k   e   M   a   p   E   n   t   r   y   (   V   P   ,       t
0030140    n   ,       b   i   t   s   )       b   e  \r   [  \t   l   e
0030160    t       h   p       =       R   E   H   A   S   H   M   A   P
0030200    (   V   P   )  \r  \t   l   e   t       b   p       =       B
0030220    p   t   +   t   n  \r  \t   t   e   s   t       h   p       e
0030240    q       0  \r  \t       i   f   s   o  \t   /   /       p   a
0030260    g   e       a   l   r   e   a   d   y       i   n       c   o
0030300    r   e       a   s       a       s   i   d   e       e   f   f
0030320    e   c   t       o   f       s   o   m   e       e   x   t   e
0030340    r   n   a   l       c   a   l   l  \r  \t               @   b
0030360    p       =       (   @   b   p     376 001  \0 336   3   &    
0030400    N   E   X   T   m   a   s   k   )       +       E   M   P   T
0030420    Y   X   X  \r  \t       i   f   n   o   t  \r  \t       [    
0030440    h   p   >   >   H   M   .   N   K   E   Y       =       n   o
0030460    t       V   P  \r  \t               h   p   >   >   H   M   .
0030500    F   L   A   G   W   D       =       (   t   n   -   V   P   )
0030520        l   s   h   i   f   t       8       +       b   i   t   s
0030540   \r  \t               b   p   >   >   B   P   T   .   H   A   S
0030560    H   X       =       (   h   p   -   H   A   S   H   M   A   P
0030600    )       r   s   h   i   f   t       1  \r  \t       ]  \r   ]
0030620   \r  \r   a   n   d       c   o   r   e   p   a   g   e   (   h
0030640    p   )       =  \r  \t   (   h   p   >   >   H   M   .   F   L
0030660    A   G   W   D   +   (   n   o   t       h   p   >   >   H   M
0030700    .   N   K   E   Y   )       l   s   h   i   f   t       8   )
0030720        r   s   h   i   f   t       8  \r  \r   a   n   d       D
0030740    e   l   e   t   e   M   a   p   E   n   t   r   y   (   h   p
0030760    ,       d   o   s   t   a   t   )       b   e  \r   [ 376 001
0031000   \0 210 231  \t   i   f       h   p   >   >   H   M   .   D   U
0031020    M   M   Y       n   e       0       r   e   t   u   r   n  \r
0031040   \t   l   e   t       o   l   d   v   p       =       n   o   t
0031060        h   p   >   >   H   M   .   N   K   E   Y  \r  \t   l   e
0031100    t       i       =       c   o   r   e   p   a   g   e   (   h
0031120    p   )  \r  \t   l   e   t       b   p       =       B   p   t
0031140    +   i  \r  \t   @   b   p       =       (   @   b   p       &
0031160        N   E   X   T   m   a   s   k   )       +       E   M   P
0031200    T   Y   X   X  \r  \t   h   p   >   >   H   M   .   N   K   E
0031220    Y       =       0  \r  \t       [       h   p       =       h
0031240    p   +   R   e   p   r   o   b   e   I   n   c  \r  \t        
0031260        i   f       (   h   p   -   H   A   S   H   M   A   P   T
0031300    O   P   )       g   e       0       t   h   e   n       h   p
0031320        =       h   p   -   H   A   S   H   M   A   P   S   I   Z
0031340    E  \r  \t               l   e   t       k   e   y       =    
0031360    n   o   t       h   p   >   >   H   M   .   N   K   E   Y  \r
0031400   \t         376 001  \0  \t 254       i   f       k   e   y    
0031420    e   q       -   1       b   r   e   a   k  \r  \t            
0031440    h   p   >   >   H   M   .   N   K   E   Y       =       0  \r
0031460   \t               l   e   t       h   p   1       =       R   E
0031500    H   A   S   H   M   A   P   (   k   e   y   )  \r  \t        
0031520        h   p   1   >   >   H   M   .   N   K   E   Y       =    
0031540    n   o   t       k   e   y  \r  \t               i   f       h
0031560    p   1       n   e       h   p       t   h   e   n  \r  \t    
0031600                [       h   p   1   >   >   H   M   .   F   L   A
0031620    G   W   D       =       h   p   >   >   H   M   .   F   L   A
0031640    G   W   D  \r  \t                           (   B   p   t   +
0031660    c   o   r   e   p   a   g   e   (   h   p   1   )   )   >   >
0031700    B   P   T   .   H   A   S   H   X       =       (   h   p   1
0031720    -   H   A   S   H   M   A   P   )       r   s   h   i   f   t
0031740        1  \r  \t                   ]  \r  \t       ]       r   e
0031760    p   e   a   t  \r  \t   i   f       d   o   s   t   a   t    
0032000    t   h   e   n       M   a   p 376 001  \0 306   >   S   t   a
0032020    t   P   r   o   c   (   i   ,       -   1   ,       o   l   d
0032040    v   p   )  \r   ]  \r  \r   a   n   d       F   l   u   s   h
0032060    B   u   f   s   (   t   n   ,       N   ,       e   m   p   t
0032100    y   )       b   e  \r   /   /       E   m   p   t   y   =   0
0032120        m   e   a   n   s       j   u   s   t       m   a   r   k
0032140        c   l   e   a   n   ,  \r   /   /  \t   >   0       m   e
0032160    a   n   s       a   l   s   o       r   e   m   o   v   e    
0032200    f   r   o   m       c   h   a   i   n   ,  \r   /   /  \t   <
0032220    0       m   e   a   n   s       m   a   r   k       e   m   p
0032240    t   y  \r   [  \t   i   f       e   m   p   t   y       t   h
0032260    e   n       R   e   m   o   v   e   B   u   f   s   (   t   n
0032300    ,       N   )  \r  \t   l   e   t       l       =       g   e
0032320    t   g   r   o   u   p   (   t   n   +   N   -   1   ,       N
0032340    L   P   G   b   i   t   ,       1   )  \r  \t   t   n       =
0032360        g   e   t   g   r   o   u   p   (   t   n   ,       N   F
0032400    P   G   b   i   t   ,       -   1   )  \r         376 001  \0
0032420  275 203       [  \t   A   n   y   D   i   r   t   y       =    
0032440    f   a   l   s   e  \r  \t   l   e   t       f       =       0
0032460   \t   /   /       T   N       o   f       f   i   r   s   t    
0032500    d   i   r   t   y       b   u   f   f   e   r       i   n    
0032520    s   e   q   u   e   n   c   e   ,       o   r       0  \r  \t
0032540    l   e   t       k   e   y       =       n   i   l  \t   /   /
0032560        V   P       o   f       f   i   r   s   t       d   i   r
0032600    t   y       b   u   f   f   e   r       (   i   .   e   .    
0032620    b   u   f   f   e   r       f   )  \r  \t   l   e   t       l
0032640    k   e   y       =       n   i   l  \t   /   /       V   P    
0032660    o   f       l   a   s   t       d   i   r   t   y       b   u
0032700    f   f   e   r  \r  \t   l   e   t       g   r   o   u   p   t
0032720    n       =       n   i   l  \t   /   /       T   N       o   f
0032740        f   i   r   s   t       p   a   g   e       o   f       g
0032760    r   o   u   p  \r  \t   f   o   r       i       =       t   n
0033000        t   o       l       d   o  \r  \t       [  \r   t   r   y
0033020    :  \t 376 001  \0 220 326               l   e   t       l   o
0033040    c   k   e   d       =       D   o   L   o   c   k   s   (   i
0033060        l   s   h   i   f   t       P   S   ,       0   ,       e
0033100    m   p   t   y   )  \r  \t               i   f       l   o   c
0033120    k   e   d       &       e   m   p   t   y       t   h   e   n
0033140        C   a   l   l   S   w   a   t   (   "   C   a   n   '   t
0033160        f   l   u   s   h       l   o   c   k   e   d       p   a
0033200    g   e   "   )  \r  \t               l   e   t       H   P    
0033220    =       H   A   S   H   M   A   P   +   (   B   p   t   +   i
0033240    )   >   >   B   P   T   .   H   A   S   H   X   *   2  \r  \t
0033260                l   e   t       k       =       n   o   t       H
0033300    P   >   >   H   M   .   N   K   E   Y  \r  \t               l
0033320    e   t       f   l   a   g   s       =       H   P   >   >   H
0033340    M   .   F   L   A   G   W   D  \r  \t               i   f    
0033360    (   f   l   a   g   s   &   N   F   P   G   b   i   t   )    
0033400    e   q       0       t   h   e   n       g   r   o   u   p   t
0033420    n       =       i  \t   / 376 001  \0 233 220   /       R   e
0033440    m   e   m   b   e   r       b   e   g   i   n   n   i   n   g
0033460        o   f       g   r   o   u   p  \r  \t               t   e
0033500    s   t       (   (   f   l   a   g   s   &   C   L   E   A   N
0033520    b   i   t   )       e   q       0   )       &       (   (   f
0033540        e   q       0   )       %       (   (   k       e   q    
0033560    l   k   e   y   +   1   )       &       (   (   f   l   a   g
0033600    s   &   N   F   P   G   b   i   t   )       n   e       0   )
0033620    )   )  \r  \t               i   f   s   o  \t   /   /       f
0033640    i   r   s   t       d   i   r   t   y       b   u   f   f   e
0033660    r   ,       o   r       i   n       s   e   q   u   e   n   c
0033700    e  \r  \t                   [       i   f       f       e   q
0033720        0       t   h   e   n  \t   /   /       f   i   r   s   t
0033740        o   n   e   ,       c   h   e   c   k       f   o   r    
0033760    a       w   r   i   t   e       g   r   o   u   p  \r  \t    
0034000                            t   e   s   t       (   f   l   a   g
0034020    s   &   W   G   R   O   U   P   b   i   t   ) 376 001  \0 252
0034040  203       n   e       0  \r  \t                                
0034060    i   f   s   o  \t   /   /       w   r   i   t   e       w   h
0034100    o   l   e       g   r   o   u   p       (   b   y       d   i
0034120    r   t   y   i   n   g       t   h   e       r   e   s   t    
0034140    o   f       i   t   )  \r  \t                               [
0034160        f       =       g   r   o   u   p   t   n  \r  \t        
0034200                                k   e   y       =       k   +   f
0034220    -   i  \t   /   /       b   u   t       l   k   e   y       =
0034240        k       s   t   i   l   l  \r  \t                        
0034260                f   o   r       j       =       i   +   1       t
0034300    o       g   e   t   g   r   o   u   p   (   i   ,       N   L
0034320    P   G   b   i   t   ,       1   )       d   o  \r  \t        
0034340                                            (   H   A   S   H   M
0034360    A   P   +   (   B   p   t   +   j   )   >   >   B   P   T   .
0034400    H   A   S   H   X   *   2   )   >   >   H   M   .   C   L   E
0034420    A   N       =       0  \r  \t                               ]
0034440   \r 376 001  \0   A 314  \t                                   i
0034460    f   n   o   t  \t   /   /       j   u   s   t       t   h   i
0034500    s       p   a   g   e  \r  \t                                
0034520        f   ,       k   e   y       =       i   ,       k  \r  \t
0034540                            l   k   e   y       =       k  \r  \t
0034560                            i   f       n   o   t       l   o   c
0034600    k   e   d       t   h   e   n       H   P   >   >   H   M   .
0034620    F   L   A   G   W   D       =       f   l   a   g   s   +   C
0034640    L   E   A   N   b   i   t  \r  \t                   ]  \r  \t
0034660                i   f   n   o   t  \t   /   /       e   n   d    
0034700    o   f       s   e   q   u   e   n   c   e  \r  \t            
0034720        [       i   f       f       n   e       0       t   h   e
0034740    n  \r  \t                               [       f   l   u   s
0034760    h   o   u   t   (   k   e   y   ,       f   ,       i   )  \r
0035000   \t                                       f       =       0  \r
0035020   \t                                       g   o   t   o       t
0035040    r   y  \r  \t         376 001  \0 003   [                    
0035060    ]  \r  \t                   ]  \r  \t               i   f    
0035100    e   m   p   t   y       t   h   e   n       D   e   l   e   t
0035120    e   M   a   p   E   n   t   r   y   (   H   P   ,       (   e
0035140    m   p   t   y       l   s       0   ?       f   l   a   g   s
0035160    &   C   L   E   A   N   b   i   t   ,       f   a   l   s   e
0035200    )   )  \r  \t       ]  \r  \t   i   f       f       n   e    
0035220    0       t   h   e   n       f   l   u   s   h   o   u   t   (
0035240    k   e   y   ,       f   ,       l   +   1   )  \r            
0035260    ]       r   e   p   e   a   t   w   h   i   l   e       A   n
0035300    y   D   i   r   t   y  \r  \t   C   h   e   c   k   B   P   T
0035320    (   )  \r   ]  \r  \r   a   n   d       f   l   u   s   h   o
0035340    u   t   (   k   e   y   ,       f   ,       l   i   m   )    
0035360    b   e  \r   [  \t   l   e   t       l   o   c   k       =    
0035400    f       l   s   h   i   f   t       P   S  \r  \t   L   o   c
0035420    k   C   e   l   l   (   l   v       l   o   c   k   )  \t   /
0035440    /       i   n       c   a   s   e       o 376 001  \0   \   +
0035460    f       r   e   c   u   r   s   i   v   e       V   M   E   M
0035500        c   a   l   l  \r  \t   D   O   P   A   G   E   I   O   (
0035520    k   e   y   ,       l   o   c   k   ,       l   i   m   -   f
0035540    ,       t   r   u   e   )  \r  \t   U   n   l   o   c   k   C
0035560    e   l   l   (   l   v       l   o   c   k   )  \r   ]  \r  \r
0035600    a   n   d       L   o   c   k   C   e   l   l   (   l   v   L
0035620    o   c   k   ,       p   r   o   c   ;       n   u   m   a   r
0035640    g   s       n   )       =       v   a   l   o   f  \r   [  \t
0035660    i   f       (   n       l   s       2   )       %       (   p
0035700    r   o   c       e   q       0   )       t   h   e   n       p
0035720    r   o   c       =       L   o   c   k   O   n   l   y  \r  \t
0035740    U   n   l   o   c   k   C   e   l   l   (   l   v   L   o   c
0035760    k   )  \r  \t   i   f       L   a   s   t   L   o   c   k   e
0036000    d   C   e   l   l       e   q       E   n   d   L   o   c   k
0036020    e   d   C   e   l   l   s       t   h   e   n       C   a   l
0036040    l   S   w   a   t   (   "   L   o   c   k       l   i   s   t
0036060  376 001  \0 370   k       f   u   l   l   "   )  \r  \t   L   a
0036100    s   t   L   o   c   k   e   d   C   e   l   l   >   >   L   C
0036120    .   a   d   d   r   ,       L   a   s   t   L   o   c   k   e
0036140    d   C   e   l   l   >   >   L   C   .   p   r   o   c       =
0036160        l   v   L   o   c   k   ,       p   r   o   c  \r  \t   L
0036200    a   s   t   L   o   c   k   e   d   C   e   l   l       =    
0036220    L   a   s   t   L   o   c   k   e   d   C   e   l   l       +
0036240        L   C   s   i   z   e  \r   ]  \r  \r   a   n   d       U
0036260    n   l   o   c   k   C   e   l   l   (   l   v   L   o   c   k
0036300    )       =       v   a   l   o   f  \r   [  \t   f   o   r    
0036320    I       =       L   o   c   k   e   d   C   e   l   l   s    
0036340    b   y       L   C   s   i   z   e       t   o       L   a   s
0036360    t   L   o   c   k   e   d   C   e   l   l   -   L   C   s   i
0036400    z   e       d   o  \r  \t           i   f       I   >   >   L
0036420    C   .   a   d   d   r       e   q       l   v   L   o   c   k
0036440        t   h   e   n  \r  \t                   [       L   a   s
0036460    t   L   o   c   k 376 001  \0   X   A   e   d   C   e   l   l
0036500        =       L   a   s   t   L   o   c   k   e   d   C   e   l
0036520    l       -       L   C   s   i   z   e  \r  \t                
0036540            M   o   v   e   B   l   o   c   k   (   I   ,       L
0036560    a   s   t   L   o   c   k   e   d   C   e   l   l   ,       L
0036600    C   s   i   z   e   )  \r  \t                           r   e
0036620    s   u   l   t   i   s       t   r   u   e  \r  \t            
0036640        ]  \r  \t   r   e   s   u   l   t   i   s       f   a   l
0036660    s   e  \r   ]  \r  \r   a   n   d       D   o   L   o   c   k
0036700    s   (   a   d   d   r   ,       n   e   w   p   a   ,       f
0036720    l   a   g   )       =       v   a   l   o   f  \r   [  \t   l
0036740    e   t       o   l   d   p   a       =       a   d   d   r    
0036760    &       (   n   o   t       W   M   )  \r  \t   l   e   t    
0037000    I       =       L   o   c   k   e   d   C   e   l   l   s  \r
0037020   \t   L   a   s   t   L   o   c   k   e   d   C   e   l   l   >
0037040    >   L   C   .   a   d   d   r       =       l   v       a   d
0037060    d   r  \r  \t   L   a   s   t   L   o 376 001  \0   L 255   c
0037100    k   e   d   C   e   l   l   >   >   L   C   .   p   r   o   c
0037120        =       d   l   e   x   i   t  \r  \t       [       i   f
0037140        (   @   (   I   >   >   L   C   .   a   d   d   r   )    
0037160    &       (   n   o   t       W   M   )   )       e   q       o
0037200    l   d   p   a       t   h   e   n  \r  \t                   [
0037220        l   e   t       a   d   d   r       =       I   >   >   L
0037240    C   .   a   d   d   r  \t   /   /       i   n       c   a   s
0037260    e       l   o   c   k       p   r   o   c       u   n   l   o
0037300    c   k   s       c   e   l   l  \r  \t                        
0037320    l   e   t       n   e   w       =       (   n   e   w   p   a
0037340        e   q       0   ?       0   ,       @   a   d   d   r   +
0037360    n   e   w   p   a   -   o   l   d   p   a   )  \r  \t        
0037400                    u   n   l   e   s   s       (   I   >   >   L
0037420    C   .   p   r   o   c   )   (   a   d   d   r   ,       n   e
0037440    w   ,       f   l   a   g   )       r   e   s   u   l   t   i
0037460    s       t   r   u   e  \r  \t                           i 376
0037500  001  \0  \t  \b   f       f   l   a   g       t   h   e   n    
0037520    @   a   d   d   r       =       n   e   w  \r  \t            
0037540        ]  \r  \t               I       =       I   +   L   C   s
0037560    i   z   e  \r  \t       ]       r   e   p   e   a   t  \r   d
0037600    l   e   x   i   t   :  \t   r   e   s   u   l   t   i   s    
0037620    f   a   l   s   e  \r   ]  \r  \r   /   /       a   n   d    
0037640    L   o   c   k   O   n   l   y   (   a   d   d   r   ,       n
0037660    e   w   ,       f   l   a   g   )       =       f   a   l   s
0037700    e  \r  \r   a   n   d       L   o   c   k   R   e   l   o   c
0037720    (   a   d   d   r   ,       n   e   w   ,       f   l   a   g
0037740    )       =       n   e   w       n   e       0  \r  \r   /   /
0037760        a   n   d       L   o   c   k   Z   e   r   o   (   a   d
0040000    d   r   ,       n   e   w   ,       f   l   a   g   )       =
0040020        t   r   u   e  \r  \r  \r   /   /  \r   /   /       C   h
0040040    e   c   k   e   r       f   o   r       B   P   T  \r   /   /
0040060   \r  \r   a   n   d       C   h   e   c   k   B   P   T   (   )
0040100        b   e  \r 376 001  \0 310 343  \t   c   o   m   p   i   l
0040120    e   i   f       f   a   l   s   e       t   h   e   n  \t   /
0040140    /       *   *   *  \r   [  \r  \t   u   n   l   e   s   s    
0040160    C   h   e   c   k   B   P   T   f   l   a   g       r   e   t
0040200    u   r   n  \r  \t   f   o   r       h   p       =       H   A
0040220    S   H   M   A   P       b   y       2       t   o       H   A
0040240    S   H   M   A   P   T   O   P   -   2       d   o  \r  \t    
0040260    i   f       h   p   >   >   H   M   .   N   K   E   Y       n
0040300    e       0       t   h   e   n  \r  \t               i   f    
0040320    (   B   p   t   +   c   o   r   e   p   a   g   e   (   h   p
0040340    )   )   >   >   B   P   T   .   H   A   S   H   X   *   2    
0040360    n   e       (   h   p   -   H   A   S   H   M   A   P   )    
0040400    t   h   e   n  \r  \t                           C   a   l   l
0040420    S   w   a   t   (   "   B   P   T       w   r   o   n   g   "
0040440    )  \r  \t   f   o   r       b   p       =       B   p   t   +
0040460    1       t   o       B   p   t   +   #   3   7   7       d   o
0040500   \r  \t       [       l   e   t     376  \0   } 020 016   h   p
0040520        =       H   A   S   H   M   A   P   +   b   p   >   >   B
0040540    P   T   .   H   A   S   H   X   *   2  \r  \t               i
0040560    f       (   h   p   >   >   H   M   .   D   U   M   M   Y    
0040600    e   q       0   )       &       (   c   o   r   e   p   a   g
0040620    e   (   h   p   )       n   e       (   b   p   -   B   p   t
0040640    )   )       t   h   e   n  \r  \t                           C
0040660    a   l   l   S   w   a   t   (   "   B   P   T       w   r   o
0040700    n   g   "   )  \r  \t       ]  \r   ]  \r 377  \0  \0   v   m
0040720    e   m   a   u   x   .   b   c   p   l  \0 376 001  \0   +   A
0040740    /   /  \r   /   /       V   M   E   M   A   U   X       -   -
0040760        V   M   E   M       r   o   u   t   i   n   e   s       o
0041000    t   h   e   r       t   h   a   n       p   a   g   e       f
0041020    a   u   l   t       h   a   n   d   l   e   r  \r   /   /    
0041040    l   a   s   t       e   d   i   t   e   d       M   a   r   c
0041060    h       1   4   ,       1   9   7   7           2   :   5   3
0041100        P   M  \r   /   /  \r   /   /       C   o   p   y   r   i
0041120    g   h   t       X   e   r   o   x       C   o   r   p   o   r
0041140    a   t   i   o   n       1   9   7   9  \r  \r  \t   g   e   t
0041160        "   v   m   e   m   .   d   "  \r  \r   e   x   t   e   r
0041200    n   a   l  \t   /   /       e   n   t   r   y       p   r   o
0041220    c   e   d   u   r   e   s  \r   [  \t   A   d   d   B   u   f
0041240    f   e   r   s  \t   /   /       (   f   i   r   s   t   ,    
0041260    l   a   s   t   )  \r  \t   S   n   a   r   f   B   u   f   f
0041300    e   r  \t   /   /       (   a   d   d   r   /   0   [   ,    
0041320    n   b   u   f   s   ,       a   l   i   g   n   ]   )       -
0041340  376 001  \0 301 313   >       a   d   d   r   /   0  \r  \t   U
0041360    n   s   n   a   r   f   B   u   f   f   e   r  \t   /   /    
0041400    (   a   d   d   r   )  \r  \t   F   l   u   s   h   B   u   f
0041420    f   e   r   s  \t   /   /       (   )  \r  \t   I   s   L   o
0041440    c   k   e   d  \t   /   /       (   a   d   d   r   )       -
0041460    >       t   r   u   e   /   f   a   l   s   e  \r  \t   V   i
0041500    r   t   u   a   l   P   a   g   e  \t   /   /       (   c   o
0041520    r   e   p   a   g   e   )       -   >       v   p  \r   ]  \r
0041540   \r  \r   e   x   t   e   r   n   a   l  \t   /   /       p   r
0041560    o   c   e   d   u   r   e   s  \r   [  \t  \t   /   /       O
0041600    .   S   .  \r  \t   D   e   f   a   u   l   t   A   r   g   s
0041620   \r  \t  \t   /   /       V   M   E   M  \r  \t   F   i   n   d
0041640    F   r   e   e   B   u   f  \r  \t   F   l   u   s   h   B   u
0041660    f   s  \r  \t   F   l   u   s   h   M   a   p   S   t   a   t
0041700    s  \r  \t   D   o   L   o   c   k   s  \r  \t  \t   /   /    
0041720    u   s   e   r   -   s   u   p   p   l   i   e   d  \r  \t   C
0041740    l   e   a   n   u 376 001  \0 205   ]   p   L   o   c   k   s
0041760   \r   ]  \r  \r   e   x   t   e   r   n   a   l  \t   /   /    
0042000    s   t   a   t   i   c   s  \r   [  \t  \t   /   /       V   M
0042020    E   M  \r  \t   @   H   A   S   H   M   A   P  \r  \t   M   a
0042040    p   S   t   a   t   P   r   o   c  \r  \t   @   B   p   t   ;
0042060        @   B   p   t   L   a   s   t  \r  \t   E   M   P   T   Y
0042100    X   X  \r  \t   N   A   X   X  \r   ]  \r  \r  \r   l   e   t
0042120        A   d   d   B   u   f   f   e   r   s   (   F   I   R   S
0042140    T   ,       L   a   s   t   )       b   e  \r   f   o   r    
0042160    t   n       =       (   F   I   R   S   T   +   W   M   )    
0042200    r   s   h   i   f   t       P   S       t   o       (   L   a
0042220    s   t   -   W   M   )       r   s   h   i   f   t       P   S
0042240        d   o  \r   [  \t   l   e   t       T   P       =       B
0042260    p   t   +   t   n  \r  \t   i   f       @   T   P       e   q
0042300        N   A   X   X       t   h   e   n  \t   /   /       b   u
0042320    f   f   e   r       i   s       f   r   e   e  \r  \t       [
0042340        @   T   P       =       E   M   P 376 001  \0 313   S   T
0042360    Y   X   X   +   @   B   p   t  \r  \t               i   f    
0042400    @   B   p   t       e   q       0       t   h   e   n       B
0042420    p   t   L   a   s   t       =       t   n  \r  \t            
0042440    @   B   p   t       =       t   n  \r  \t               M   a
0042460    p   S   t   a   t   P   r   o   c   (   t   n   ,       -   2
0042500    )  \r  \t       ]  \r   ]  \r  \r   a   n   d       S   n   a
0042520    r   f   B   u   f   f   e   r   (   a   d   d   r   ,       n
0042540    ,       a   l   i   g   n   ;       n   u   m   a   r   g   s
0042560        n   a   )       =       v   a   l   o   f  \r   [  \t   D
0042600    e   f   a   u   l   t   A   r   g   s   (   l   v       n   a
0042620    ,       1   ,       1   ,       0   )  \r  \t   i   f       (
0042640    a   d   d   r       &       W   M   )       n   e       0    
0042660    r   e   s   u   l   t   i   s       0  \r  \t   C   l   e   a
0042700    n   u   p   L   o   c   k   s   (   )  \r  \t   l   e   t    
0042720    t   n       =       F   i   n   d   F   r   e   e   B   u   f
0042740    (   n   ,       a   l   i   g   n   ,       a   d   d   r 376
0042760  001  \0 312 215       r   s   h   i   f   t       P   S   )  \r
0043000   \t   i   f       t   n       e   q       0       r   e   s   u
0043020    l   t   i   s       0  \r  \t   i   f       a   d   d   r    
0043040    n   e       0       t   h   e   n       t   n       =       a
0043060    d   d   r       r   s   h   i   f   t       P   S  \r  \t   F
0043100    l   u   s   h   B   u   f   s   (   t   n   ,       n   ,    
0043120    -   1   )  \r  \t   f   o   r       i       =       t   n    
0043140    t   o       t   n   +   n   -   1       d   o  \r  \t       i
0043160    f       B   p   t   !   i       n   e       N   A   X   X    
0043200    t   h   e   n  \r  \t       [       M   a   p   S   t   a   t
0043220    P   r   o   c   (   i   ,       -   3   )   ;       B   p   t
0043240    !   i       =       N   A   X   X       ]  \r  \t   r   e   s
0043260    u   l   t   i   s       t   n       l   s   h   i   f   t    
0043300    P   S  \r   ]  \r  \r   a   n   d       U   n   s   n   a   r
0043320    f   B   u   f   f   e   r   (   a   d   d   r   )       b   e
0043340   \r   [  \t   i   f       (   a   d   d   r       &       W   M
0043360    )       n   e 376  \0 367   "   e       0       r   e   t   u
0043400    r   n  \r  \t   A   d   d   B   u   f   f   e   r   s   (   a
0043420    d   d   r   ,       a   d   d   r   +   W   M   )  \r   ]  \r
0043440   \r   a   n   d       F   l   u   s   h   B   u   f   f   e   r
0043460    s   (   )       b   e  \r   [  \t   C   l   e   a   n   u   p
0043500    L   o   c   k   s   (   )  \r  \t   F   l   u   s   h   M   a
0043520    p   S   t   a   t   s   (   )  \r  \t   F   l   u   s   h   B
0043540    u   f   s   (   1   ,       B   p   t   S   i   z   e   -   1
0043560    ,       0   )  \r   ]  \r  \r   a   n   d       I   s   L   o
0043600    c   k   e   d   (   a   d   d   r   )       =       D   o   L
0043620    o   c   k   s   (   a   d   d   r   ,       0   ,       f   a
0043640    l   s   e   )  \r  \r   a   n   d       V   i   r   t   u   a
0043660    l   P   a   g   e   (   c   p   a   g   e   )       =  \r  \t
0043700    n   o   t       (   H   A   S   H   M   A   P   +   (   B   p
0043720    t   +   c   p   a   g   e   )   >   >   B   P   T   .   H   A
0043740    S   H   X   *   2   )   >   >   H   M   .   N   K   E   Y  \r
0043760  377  \0  \0   v   m   e   m   i   n   i   t   .   b   c   p   l
0044000   \0 376 001  \0 311   8   /   /  \r   /   /       V   M   E   M
0044020    I   N   I   T       -   -       i   n   i   t   i   a   l   i
0044040    z   e       V   M   E   M  \r   /   /       l   a   s   t    
0044060    e   d   i   t   e   d       A   u   g   u   s   t       1   ,
0044100        1   9   7   7           1   :   4   8       P   M  \r   /
0044120    /  \r   /   /       C   o   p   y   r   i   g   h   t       X
0044140    e   r   o   x       C   o   r   p   o   r   a   t   i   o   n
0044160        1   9   7   9  \r  \r  \t   g   e   t       "   v   m   e
0044200    m   .   d   "  \r  \r   e   x   t   e   r   n   a   l  \t   /
0044220    /       e   n   t   r   y       p   r   o   c   e   d   u   r
0044240    e   s  \r   [  \t   I   n   i   t   i   a   l   i   z   e   V
0044260    m   e   m  \t   /   /       (   h   a   s   h   m   a   p   ,
0044300        h   a   s   h   m   a   p   s   i   z   e   ,       B   p
0044320    t   a   b   ,       l   c   l   i   s   t   ,       l   l   c
0044340    l   i   s   t   [   ,       s   t   a   t   b   a   s   e   ,
0044360        s   t   a   t   p   r   o   c   ,       n   o   b   u   f
0044400    s   p   r   o   c   ] 376 001  \0 211   p   )  \r   ]  \r  \r
0044420   \r   e   x   t   e   r   n   a   l  \t   /   /       p   r   o
0044440    c   e   d   u   r   e   s  \r   [  \t  \t   /   /       O   .
0044460    S   .  \r  \t   D   e   f   a   u   l   t   A   r   g   s  \r
0044500   \t   F   a   l   s   e   P   r   e   d   i   c   a   t   e  \r
0044520   \t   T   r   u   e   P   r   e   d   i   c   a   t   e  \r  \t
0044540    C   a   l   l   S   w   a   t  \r  \t   S   e   t   B   l   o
0044560    c   k   ;       Z   e   r   o  \r  \t  \t   /   /       V   M
0044600    E   M  \r  \t   d   e   f   a   u   l   t   N   o   B   u   f
0044620    s   P   r   o   c  \r  \t   L   o   c   k   O   n   l   y   ;
0044640        L   o   c   k   Z   e   r   o  \r  \t  \t   /   /       V
0044660    M   E   M   A  \r  \t   R   E   H   A   S   H   M   A   P  \r
0044700    ]  \r  \r   e   x   t   e   r   n   a   l  \t   /   /       s
0044720    t   a   t   i   c   s  \r   [  \t  \t   /   /       V   M   E
0044740    M  \r  \t   @   H   A   S   H   M   A   P   ;       @   H   A
0044760    S   H   M   A   P   S   I   Z   E   ;       @   H   A   S   H
0045000    M   A   P   M   A   S   K  \r  \t   @   H 376 001  \0 317 357
0045020    A   S   H   M   A   P   S   I   Z   E   2  \r  \t   @   H   A
0045040    S   H   M   A   P   1  \r  \t   @   H   A   S   H   M   A   P
0045060    T   O   P  \r  \t   M   A   P   S   T   A   T   B   A   S   E
0045100   \r  \t   @   M   a   p   S   t   a   t   P   t   r  \r  \t   M
0045120    a   p   S   t   a   t   P   r   o   c  \r  \t   N   o   B   u
0045140    f   s   P   r   o   c  \r  \t   @   B   p   t   ;       @   B
0045160    p   t   L   a   s   t  \r  \t   E   M   P   T   Y   X   X  \r
0045200   \t   N   A   X   X  \r  \t   L   o   c   k   e   d   C   e   l
0045220    l   s   ;       E   n   d   L   o   c   k   e   d   C   e   l
0045240    l   s   ;       L   a   s   t   L   o   c   k   e   d   C   e
0045260    l   l  \r   ]  \r  \r  \r   l   e   t       I   n   i   t   i
0045300    a   l   i   z   e   V   m   e   m   (   H   M   ,       H   M
0045320    S   I   Z   E   ,       B   P   T   A   B   ,       L   C   L
0045340    ,       L   L   C   L   ,       M   S   B   A   S   E   ,    
0045360    M   S   P   R   O   C   ,       N   B   P   R   O   C   ;    
0045400    n   u   m   a   r   g   s       n   )       b   e  \r   [  \t
0045420  376 001  \0 331   ?   D   e   f   a   u   l   t   A   r   g   s
0045440    (   l   v       n   ,       -   5   ,       0   ,       F   a
0045460    l   s   e   P   r   e   d   i   c   a   t   e   ,       d   e
0045500    f   a   u   l   t   N   o   B   u   f   s   P   r   o   c   )
0045520   \r  \t   i   f       (   H   M   S   I   Z   E       &       (
0045540    H   M   S   I   Z   E   -   1   )   )       n   e       0    
0045560    t   h   e   n  \r  \t               C   a   l   l   S   w   a
0045600    t   (   "   B   a   d       H   M   A   P   S   I   Z   E    
0045620    -   -       I   n   i   t   i   a   l   i   z   e   V   m   e
0045640    m   "   )  \r  \t   H   A   S   H   M   A   P   ,       H   A
0045660    S   H   M   A   P   S   I   Z   E       =       H   M   +   (
0045700    H   M   &   1   )   ,       H   M   S   I   Z   E  \r  \t   H
0045720    A   S   H   M   A   P   M   A   S   K       =       H   A   S
0045740    H   M   A   P   S   I   Z   E   -   2  \r  \t   H   A   S   H
0045760    M   A   P   S   I   Z   E   2       =       H   M   S   I   Z
0046000    E       r   s   h   i   f   t       1  \r  \t   H   A   S   H
0046020    M   A   P   1     376 001  \0   q 005   =       H   A   S   H
0046040    M   A   P   +   H   M   f   l   a   g   O   f   f   s   e   t
0046060   \r  \t   H   A   S   H   M   A   P   T   O   P       =       H
0046100    A   S   H   M   A   P   +   H   A   S   H   M   A   P   S   I
0046120    Z   E  \r  \t   M   A   P   S   T   A   T   B   A   S   E    
0046140    =       M   S   B   A   S   E   +   (   M   S   B   A   S   E
0046160    &   1   )  \r  \t   M   a   p   S   t   a   t   P   t   r    
0046200    =       M   A   P   S   T   A   T   B   A   S   E  \r  \t   M
0046220    a   p   S   t   a   t   P   r   o   c       =       M   S   P
0046240    R   O   C  \r  \t   N   o   B   u   f   s   P   r   o   c    
0046260    =       N   B   P   R   O   C  \r  \t   B   p   t   ,       L
0046300    o   c   k   e   d   C   e   l   l   s   ,       E   n   d   L
0046320    o   c   k   e   d   C   e   l   l   s       =  \r  \t        
0046340    B   P   T   A   B   ,       L   C   L   ,       L   C   L   +
0046360    (   L   L   C   L       &       n   o   t       1   )   -   L
0046400    C   s   i   z   e  \r  \t   L   a   s   t   L   o   c   k   e
0046420    d   C   e   l   l       =       L   C 376 001  \0   u   ^   L
0046440   \r  \t   Z   e   r   o   (   H   A   S   H   M   A   P   ,    
0046460    H   A   S   H   M   A   P   S   I   Z   E   )  \r  \t   l   e
0046500    t       d   u   m   m   y   p   a   g   e   (   v   p   ,    
0046520    b   i   t   s   )       =       v   a   l   o   f  \r  \t    
0046540    [       l   e   t       h   p       =       R   E   H   A   S
0046560    H   M   A   P   (   v   p   )  \r  \t               h   p   >
0046600    >   H   M   .   N   K   E   Y       =       n   o   t       v
0046620    p  \r  \t               h   p   >   >   H   M   .   F   L   A
0046640    G   W   D       =       b   i   t   s  \r  \t               r
0046660    e   s   u   l   t   i   s       (   h   p   -   H   A   S   H
0046700    M   A   P   )       l   s   h   i   f   t       7  \r  \t    
0046720    ]  \r  \t   E   M   P   T   Y   X   X       =       d   u   m
0046740    m   y   p   a   g   e   (   E   m   p   t   y   V   P   ,    
0046760    C   L   E   A   N   b   i   t   +   N   O   T   R   E   F   b
0047000    i   t   +   D   U   M   M   Y   b   i   t   )  \r  \t   N   A
0047020    X   X       =       d   u   m   m   y   p   a   g   e   ( 376
0047040   \0 202   h 313   N   a   V   P   ,       C   L   E   A   N   b
0047060    i   t   +   N   O   T   R   E   F   b   i   t   +   D   U   M
0047100    M   Y   b   i   t   )  \r  \t   S   e   t   B   l   o   c   k
0047120    (   B   p   t   ,       N   A   X   X   ,       B   p   t   S
0047140    i   z   e   )  \r  \t   @   B   p   t       =       0  \r  \t
0047160    L   o   c   k   O   n   l   y       =       F   a   l   s   e
0047200    P   r   e   d   i   c   a   t   e  \r  \t   L   o   c   k   Z
0047220    e   r   o       =       T   r   u   e   P   r   e   d   i   c
0047240    a   t   e  \r   ]  \r 377  \0  \0   p   r   i   n   t   v   m
0047260    e   m   s   t   a   t   e   .   b   c   p   l  \0 376 001  \0
0047300    j 226   /   /  \r   /   /       P   r   i   n   t       V   M
0047320    E   M       s   t   a   t   e  \r   /   /       l   a   s   t
0047340        e   d   i   t   e   d       J   u   n   e       1   ,    
0047360    1   9   7   7           4   :   2   0       P   M  \r   /   /
0047400   \r   /   /       C   o   p   y   r   i   g   h   t       X   e
0047420    r   o   x       C   o   r   p   o   r   a   t   i   o   n    
0047440    1   9   7   9  \r  \r  \t   g   e   t       "   v   m   e   m
0047460    .   d   "  \r  \r   e   x   t   e   r   n   a   l  \t   /   /
0047500        e   n   t   r   y       p   r   o   c   e   d   u   r   e
0047520    s  \r   [  \t   P   r   i   n   t   V   m   e   m   S   t   a
0047540    t   e  \t   /   /       (   s   t   )  \r   ]  \r  \r  \r   e
0047560    x   t   e   r   n   a   l  \t   /   /       p   r   o   c   e
0047600    d   u   r   e   s       u   s   e   d  \r   [  \t  \t   /   /
0047620        O   .   S   .  \r  \t   P   u   t   s   ;       W   n   s
0047640    ;       W   o   s   ;       W   s   s  \r   ]  \r  \r   e   x
0047660    t   e   r   n   a   l  \t   /   /       s   t   a   t   i   c
0047700    s     376 001  \0  \v   )   u   s   e   d  \r   [  \t  \t   /
0047720    /       V   M   E   M  \r  \t   @   B   p   t  \r  \t   @   H
0047740    A   S   H   M   A   P  \r   ]  \r  \r  \r   l   e   t       P
0047760    r   i   n   t   V   m   e   m   S   t   a   t   e   (   s   t
0050000    )       b   e  \r   [  \t  \t   /   /       P   r   i   n   t
0050020        s   t   a   t   e       o   f       m   e   m   o   r   y
0050040    ,       b   y       a   d   d   r   e   s   s  \r  \t   l   e
0050060    t       n       =       0  \r  \t   f   o   r       i       =
0050100        1       t   o       3   7   7   b       d   o  \r  \t    
0050120    [       i   f       V   m   e   m   H   p   t   r   (   i   )
0050140    >   >   H   M   .   N   K   E   Y       e   q       (   n   o
0050160    t       N   a   V   P   )       l   o   o   p  \r  \t        
0050200        i   f       (   n   &   3   )       e   q       0       t
0050220    h   e   n       P   u   t   s   (   s   t   ,       $   *   N
0050240    )  \r  \t               P   r   i   n   t   V   m   e   m   P
0050260    a   g   e   (   s   t   ,       i   )  \r  \t               n
0050300        =       n   +   1  \r 376 001  \0 270   T  \t       ]  \r
0050320   \t   W   s   s   (   s   t   ,       "   *   N   N   u   m   b
0050340    e   r       o   f       p   a   g   e   s       =       "   )
0050360   \r  \t   W   n   s   (   s   t   ,       n   ,       0   ,    
0050400    8   )  \r  \t   P   u   t   s   (   s   t   ,       $   *   N
0050420    )  \r  \t  \t   /   /       P   r   i   n   t       B   P   T
0050440        c   h   a   i   n  \r  \t   l   e   t       n   ,       t
0050460    n       =       0   ,       @   B   p   t  \r  \t   w   h   i
0050500    l   e       (   t   n       n   e       0   )       &       (
0050520    n       n   e       4   0   0   b   )       d   o  \r  \t    
0050540    [       i   f       (   n   &   3   )       e   q       0    
0050560    t   h   e   n       P   u   t   s   (   s   t   ,       $   *
0050600    N   )  \r  \t               P   r   i   n   t   V   m   e   m
0050620    P   a   g   e   (   s   t   ,       t   n   )  \r  \t        
0050640        t   n       =       (   B   p   t   +   t   n   )   >   >
0050660    B   P   T   .   N   E   X   T  \r  \t               n       =
0050700        n   +   1  \r  \t       ]  \r  \t   P   u 376 001  \0 020
0050720  333   t   s   (   s   t   ,       $   *   N   )  \r   ]  \r  \r
0050740    a   n   d       P   r   i   n   t   V   m   e   m   P   a   g
0050760    e   (   s   t   ,       i   )       b   e  \r   [  \t   W   n
0051000    s   (   s   t   ,       i   ,       4   ,       8   )  \r  \t
0051020    l   e   t       h   p       =       V   m   e   m   H   p   t
0051040    r   (   i   )  \r  \t   P   u   t   s   (   s   t   ,       $
0051060    *   S   )  \r  \t   W   o   s   (   s   t   ,       n   o   t
0051100        h   p   >   >   H   M   .   N   K   E   Y   )  \r  \t   P
0051120    u   t   s   (   s   t   ,       $   *   S   )  \r  \t   P   u
0051140    t   s   (   s   t   ,       s   e   l   e   c   t   o   n    
0051160    h   p   >   >   H   M   .   F   L   A   G   W   D   &   G   R
0051200    O   U   P   b   i   t   s       i   n   t   o  \r  \t       [
0051220        c   a   s   e       N   F   P   G   b   i   t   :       $
0051240    L  \r  \t               c   a   s   e       N   L   P   G   b
0051260    i   t   :       $   F  \r  \t               c   a   s   e    
0051300    N   F   P   G   b   i   t   +   N   L   P   G   b   i   t   :
0051320      376  \0 331   x   <   $   I  \r  \t               d   e   f
0051340    a   u   l   t   :       $   *   S  \r  \t       ]   )  \r  \t
0051360    P   u   t   s   (   s   t   ,       (   h   p   >   >   H   M
0051400    .   D   U   M   M   Y   ?       $   X   ,       $   *   S   )
0051420    )  \r  \t   P   u   t   s   (   s   t   ,       (   h   p   >
0051440    >   H   M   .   N   O   T   R   E   F   ?       $   *   S   ,
0051460        $   R   )   )  \r  \t   P   u   t   s   (   s   t   ,    
0051500    (   h   p   >   >   H   M   .   C   L   E   A   N   ?       $
0051520    *   S   ,       $   D   )   )  \r  \t   P   u   t   s   (   s
0051540    t   ,       (   h   p   >   >   H   M   .   W   G   R   O   U
0051560    P   ?       $   W   ,       $   *   S   )   )  \r   ]  \r  \r
0051600    a   n   d       V   m   e   m   H   p   t   r   (   i   )    
0051620    =       H   A   S   H   M   A   P   +   (   B   p   t   +   i
0051640    )   >   >   B   P   T   .   H   A   S   H   X   *   2  \r 377
0051660   \0  \0   v   m   e   m   a   .   a   s   m  \0 376 001  \0 353
0051700  220   ;               V   M   E   M   A   .   A   S   M       -
0051720        a   c   t   u   a   l       m   a   p   p   i   n   g    
0051740    d   o   n   e       i   n       m   i   c   r   o   c   o   d
0051760    e  \r   ;               l   a   s   t       m   o   d   i   f
0052000    i   e   d       J   u   n   e       1   4   ,       1   9   7
0052020    6           2   :   3   6       P   M  \r   ;  \r   ;       C
0052040    o   p   y   r   i   g   h   t       X   e   r   o   x       C
0052060    o   r   p   o   r   a   t   i   o   n       1   9   7   9  \r
0052100   \t   .   E   X   T   N  \t   M   A   P   T   R   A   P   ,   S
0052120    O   F   T   M   A   P   F   L   A   G  \r   ;  \r  \t   .   E
0052140    N   T  \t   R   E   H   A   S   H   M   A   P  \r  \t   .   E
0052160    N   T  \t   V   R   R   ,   V   W   R   ,   V   R   R   1   ,
0052200    V   W   R   1   ,   V   R   R   2   ,   V   W   R   2   ,   V
0052220    R   R   P   ,   V   W   R   P  \r  \t   .   E   N   T  \t   D
0052240    O   U   B   L   E   A   D   D   1  \r  \t   .   E   N   T  \t
0052260    R   D   R   E   F   0   ,   R   D   R   E   F   1   ,   W   T
0052300    R 376 001  \0 202 362   E   F   0  \t   ;       i   n   s   t
0052320    r   u   c   t   i   o   n   s       t   o       o   v   e   r
0052340    w   r   i   t   e  \r  \t   .   E   N   T  \t   V   m   e   m
0052360    R   a   m  \r   ;  \r  \t   .   D   U   S   R  \t   R   D   R
0052400    E   F       =       7   4   4   0   0  \r  \t   .   D   U   S
0052420    R  \t   W   T   R   E   F       =       7   5   0   0   0  \r
0052440   \t   .   D   U   S   R  \t   S   W   A   T       =       7   7
0052460    4   0   0  \r   ;  \r  \t   g   e   t   f   r   a   m   e    
0052500    =       3   7   0  \r  \t   r   e   t   u   r   n       =    
0052520    3   6   6  \r   ;  \r  \t   .   Z   R   E   L  \r   V   R   R
0052540    :  \t   V   R   R   X  \r   V   W   R   :  \t   V   W   R   X
0052560   \r   V   R   R   1   :  \t   V   R   R   1   X  \r   V   W   R
0052600    1   :  \t   V   W   R   1   X  \r   V   R   R   2   :  \t   V
0052620    R   R   2   X  \r   V   W   R   2   :  \t   V   W   R   2   X
0052640   \r   V   R   R   P   :  \t   V   R   R   P   X  \r   V   W   R
0052660    P   :  \t   V   W   R   P   X  \r   ;  \r   D   O   U   B   L
0052700    E   A   D   D   1   : 376 001  \0 204   r   D   B   L   X  \r
0052720    ;  \r  \t   .   S   R   E   L  \r   R   E   H   A   S   H   M
0052740    A   P   :   R   E   M   A   P  \r   R   D   R   E   F   0   :
0052760   \t   D   O   A   R   1  \r   R   D   R   E   F   1   :  \t   D
0053000    O   R   M   1  \r   W   T   R   E   F   0   :  \t   D   O   A
0053020    W   1  \r   V   m   e   m   R   a   m   :       V   M   R  \r
0053040    ;  \r  \t   .   N   R   E   L  \r   ;  \r   ;           R   O
0053060    U   T   I   N   E   S       T   O       D   O       S   O   F
0053100    T   W   A   R   E       M   A   P   P   I   N   G  \r   ;    
0053120        I   F       T   H   E   R   E       I   S       A       F
0053140    A   U   L   T   ,       A       B   C   P   L       R   O   U
0053160    T   I   N   E       '   M   A   P   T   R   A   P   '       I
0053200    S       C   A   L   L   E   D  \r   ;           I   F       T
0053220    H   E   R   E       I   S       N   O       F   A   U   L   T
0053240    ,       N   O       B   C   P   L       S   T   A   C   K    
0053260    S   P   A   C   E       I   S       U   S   E   D  \r   ;  \r
0053300    M   A   P   T   R   :  \t   0  \t   ;     376 001  \0 310 307
0053320    s   a   v   e       h   a   s   h   m   a   p       p   t   r
0053340   \r   M   P   T   R   P   :  \t   M   A   P   T   R   A   P  \r
0053360    ;  \r   V   R   R   X   :  \t   S   T   A  \t   3   ,   1   ,
0053400    2  \r  \t   M   O   V  \t   0   ,   3  \r  \t   L   D   A  \t
0053420    0   ,   0   ,   3  \r  \t   L   D   A  \t   1   ,   1   ,   3
0053440   \r  \t   J   M   P  \t   D   O   A   R   1  \r   ;  \r   V   R
0053460    R   P   X   :  \t   L   D   A  \t   1   ,   R   M   S   K  \r
0053500   \t   A   N   D  \t   0   ,   1  \r  \t   S   U   B   S  \t   1
0053520    ,   0  \r  \t   M   O   V   S  \t   1   ,   1  \r  \t   J   M
0053540    P  \t   V   R   R   2   X  \r   V   R   R   1   X   :  \t   M
0053560    O   V  \t   0   ,   1  \r  \t   S   U   B  \t   0   ,   0  \r
0053600    V   R   R   2   X   :  \t   S   T   A  \t   3   ,   1   ,   2
0053620   \t   ;   S   A   V   E       R   E   T   U   R   N  \r   D   O
0053640    A   R   1   :  \t   R   D   R   E   F  \t  \t   ;   m   i   c
0053660    r   o   c   o   d   e       i   n   s   t   r   u   c   t   i
0053700    o   n  \r  \t   J   M   P  \t   N   O   T   I   N   R   D  \t
0053720  376 001  \0 330   A   ;   M   I   S   S   I   N   G       P   A
0053740    G   E       O   N       R   E   A   D  \r  \t   M   O   V  \t
0053760    3   ,   0  \r  \t   L   D   A  \t   3   ,   1   ,   2  \r  \t
0054000    J   M   P  \t   1   ,   3  \t   ;   R   E   T   U   R   N    
0054020    W   I   T   H       C   O   R   E       A   D   D   R   .    
0054040    I   N       A   C   0  \r   N   O   T   I   N   R   D   :   S
0054060    T   A  \t   3   ,   M   A   P   T   R  \r  \t   L   D   A  \t
0054100    3   ,   R   M   S   K  \r  \t   A   N   D  \t   3   ,   0  \r
0054120   \t   J   S   R  \t   @   g   e   t   f   r   a   m   e  \r  \t
0054140            7  \r  \t   S   W   A   T  \r  \t   S   U   B  \t   1
0054160    ,   1  \t   ;   R   E   A   D       R   E   F  \r   M   T   R
0054200    A   P   :  \t   S   T   A  \t   1   ,   6   ,   2  \r  \t   L
0054220    D   A  \t   0   ,   5   ,   2  \r  \t   L   D   A  \t   3   ,
0054240    L   M   S   K  \r  \t   A   N   D  \t   0   ,   3  \r  \t   L
0054260    D   A  \t   0   ,   4   ,   2  \r  \t   A   D   D   S  \t   3
0054300    ,   0  \t   ;       f   o   r   m       h   a   s   h       k
0054320    e   y  \r  \t   L 376 001  \0   t 350   D   A  \t   3   ,   M
0054340    A   P   T   R  \r  \t   S   T   A  \t   3   ,   3   ,   2  \r
0054360   \t   J   S   R   I   I  \t   M   P   T   R   P  \r  \t   3  \r
0054400   \t   L   D   A  \t   0   ,   4   ,   2  \r  \t   L   D   A  \t
0054420    1   ,   5   ,   2  \r  \t   L   D   A  \t   3   ,   6   ,   2
0054440   \r  \t   L   D   A  \t   2   ,   0   ,   2  \t   ;       g   e
0054460    t       r   i   d       o   f       f   r   a   m   e  \r  \t
0054500    M   O   V  \t   3   ,   3   ,   S   Z   R  \r  \t   J   M   P
0054520   \t   D   O   A   W   1  \r  \t   J   M   P  \t   D   O   A   R
0054540    1  \r   ;  \r   V   W   R   X   :  \t   S   T   A  \t   3   ,
0054560    1   ,   2  \r  \t   M   O   V  \t   0   ,   3  \r  \t   L   D
0054600    A  \t   0   ,   0   ,   3  \r  \t   L   D   A  \t   1   ,   1
0054620    ,   3  \r  \t   J   M   P  \t   D   O   A   W   1  \r   ;  \r
0054640    V   W   R   P   X   :  \t   L   D   A  \t   1   ,   R   M   S
0054660    K  \r  \t   A   N   D  \t   0   ,   1  \r  \t   S   U   B   S
0054700   \t   1   ,   0  \r  \t   M   O   V   S  \t   1   ,   1  \r  \t
0054720    J   M   P  \t   V   W   R   2   X  \r 376 001  \0  \v   m   V
0054740    W   R   1   X   :  \t   M   O   V  \t   0   ,   1  \r  \t   S
0054760    U   B  \t   0   ,   0  \r   V   W   R   2   X   :  \t   S   T
0055000    A  \t   3   ,   1   ,   2  \r   D   O   A   W   1   :  \t   W
0055020    T   R   E   F  \t  \t   ;   m   i   c   r   o   c   o   d   e
0055040        i   n   s   t   r   u   c   t   i   o   n  \r  \t   J   M
0055060    P  \t   W   F   A   U   L   T  \t   ;   N   O   T       I   N
0055100        O   R       N   O   T       D   I   R   T   Y  \r  \t   M
0055120    O   V  \t   3   ,   0  \r  \t   L   D   A  \t   3   ,   1   ,
0055140    2  \r  \t   J   M   P  \t   1   ,   3  \r   W   F   A   U   L
0055160    T   :  \t   S   T   A  \t   3   ,   M   A   P   T   R  \r  \t
0055200    L   D   A  \t   3   ,   R   M   S   K  \r  \t   A   N   D  \t
0055220    3   ,   0  \r  \t   J   S   R  \t   @   g   e   t   f   r   a
0055240    m   e  \r  \t           7  \r  \t   S   W   A   T  \r  \t   A
0055260    D   C  \t   1   ,   1  \t   ;   W   R   I   T   E       R   E
0055300    F  \r  \t   J   M   P  \t   M   T   R   A   P  \r   ;  \r   L
0055320    M   S   K   :  \t   1   7   7   4   0   0  \r   R   M   S 376
0055340  001  \0 236   b   K   :  \t   3   7   7  \r   ;  \r   ;       C
0055360    O   M   P   U   T   E       H   A   S   H       I   N   D   E
0055400    X       F   O   R       N   E   W       P   A   G   E       W
0055420    H   E   N  \r   ;       R   E   C   O   N   S   T   R   U   C
0055440    T   I   N   G       H   A   S   H       T   A   B   L   E    
0055460    A   F   T   E   R       P   A   G   E       F   A   U   L   T
0055500   \r   ;  \r   R   E   M   A   P   :  \t   S   T   A  \t   3   ,
0055520    1   ,   2  \r  \t   L   D   A  \t   1   ,   R   M   S   K  \r
0055540   \t   A   N   D   S  \t   0   ,   1  \r  \t   L   D   A  \t   3
0055560    ,   L   M   S   K  \r  \t   A   N   D   S  \t   3   ,   0  \r
0055600    D   O   R   M   1   :  \t   R   D   R   E   F  \t  \t  \t   ;
0055620    A   C   0   ,   A   C   1       H   A   S       V   I   R   T
0055640    U   A   L       A   D   D   R  \r  \t   M   O   V  \t   3   ,
0055660    0   ,   S   K   P  \t   ;       N   O       S   K   I   P   ,
0055700        H   A   S   H   M   A   P       P   T   R       I   N    
0055720    A   C   3  \r  \t   S   U   B  \t   0   ,   0  \t   ;       S
0055740    K   I   P   , 376 001  \0   ,   u       E   N   T   R   Y    
0055760    A   L   R   E   A   D   Y       P   R   E   S   E   N   T  \r
0056000   \t   L   D   A  \t   3   ,   1   ,   2  \r  \t   J   M   P  \t
0056020    1   ,   3  \t  \t   ;   R   E   T   U   R   N   S       P   O
0056040    I   N   T   E   R       T   O       E   M   P   T   Y       E
0056060    N   T   R   Y  \r   ;  \r   ;       I   N   C   R   E   M   E
0056100    N   T       3   2   -   B   I   T       C   O   U   N   T   E
0056120    R       A   D   D   R   E   S   S   E   D       B   Y       A
0056140    C   0  \r   ;  \r   D   B   L   X   :  \t   S   T   A  \t   3
0056160    ,   1   ,   2  \r  \t   M   O   V  \t   0   ,   3  \r  \t   I
0056200    S   Z  \t   1   ,   3  \r  \t   J   M   P  \t   .   +   3  \r
0056220   \t   I   S   Z  \t   0   ,   3  \r  \t   J   M   P  \t   .   +
0056240    1  \r  \t   L   D   A  \t   3   ,   1   ,   2  \r  \t   J   M
0056260    P  \t   1   ,   3  \r   ;  \r   ;       S   e   t       u   p
0056300        R   A   M       a   c   c   e   s   s       i   n   s   t
0056320    r   u   c   t   i   o   n   s  \r   V   M   R   :  \t   L   D
0056340    A  \t   0   ,   R   D   R   X  \r 376  \0 204 305 247  \t   S
0056360    T   A  \t   0   ,   D   O   A   R   1  \r  \t   S   T   A  \t
0056400    0   ,   D   O   R   M   1  \r  \t   L   D   A  \t   0   ,   W
0056420    T   R   X  \r  \t   S   T   A  \t   0   ,   D   O   A   W   1
0056440   \r  \t   S   U   B  \t   0   ,   0  \r  \t   S   T   A  \t   0
0056460    ,   @   S   M   F  \r  \t   J   M   P  \t   1   ,   3  \r   ;
0056500   \r   R   D   R   X   :  \t   R   D   R   E   F  \r   W   T   R
0056520    X   :  \t   W   T   R   E   F  \r   S   M   F   :  \t   S   O
0056540    F   T   M   A   P   F   L   A   G  \r   ;  \r  \t   .   E   N
0056560    D  \r 377  \0  \0   v   m   e   m   s   o   f   t   .   a   s
0056600    m  \0 376 001  \0 360   t   ;           V   M   E   M   S   O
0056620    F   T   .   A   S   M       -       s   o   f   t   w   a   r
0056640    e       r   e   p   l   a   c   e   m   e   n   t       f   o
0056660    r       m   a   p       m   i   c   r   o   c   o   d   e  \r
0056700    ;           l   a   s   t       m   o   d   i   f   i   e   d
0056720        D   e   c   e   m   b   e   r       1   6   ,       1   9
0056740    7   6           1   :   3   3       P   M  \r   ;  \r   ;    
0056760    C   o   p   y   r   i   g   h   t       X   e   r   o   x    
0057000    C   o   r   p   o   r   a   t   i   o   n       1   9   7   9
0057020   \r  \t   .   E   X   T   D  \t   H   A   S   H   M   A   P   ,
0057040    H   A   S   H   M   A   P   M   A   S   K   ,   M   a   p   S
0057060    t   a   t   P   t   r   ,   R   e   p   r   o   b   e   I   n
0057100    c  \r  \t   .   E   X   T   N  \t   S   O   F   T   M   A   P
0057120    F   L   A   G  \r  \t   .   E   X   T   N  \t   R   D   R   E
0057140    F   0   ,   R   D   R   E   F   1   ,   W   T   R   E   F   0
0057160   \r   ;  \r  \t   .   E   N   T  \t   V   m   e   m   S   o   f
0057200    t  \r  \t   .   E   N   T 376 001  \0   z 313  \t   N   P   R
0057220    O   B   E  \r   ;  \r  \t   .   S   R   E   L  \r   V   m   e
0057240    m   S   o   f   t   :       V   M   S  \r   N   P   R   O   B
0057260    E   :  \t   N   P   R   B  \r   ;  \r  \t   .   N   R   E   L
0057300   \r   ;  \r   V   M   S   :  \t   S   T   A  \t   3   ,   1   ,
0057320    2  \r  \t   A   D   C  \t   0   ,   0  \r  \t   S   T   A  \t
0057340    0   ,   @   S   O   F   T   M   F  \r   ;       O   v   e   r
0057360    w   r   i   t   e       m   i   c   r   o   c   o   d   e    
0057400    c   a   l   l   s       w   i   t   h       J   S   R   '   s
0057420        t   o       s   o   f   t   w   a   r   e       r   o   u
0057440    t   i   n   e   s  \r  \t   L   D   A  \t   0   ,   J   R   R
0057460    S  \r  \t   L   D   A  \t   3   ,   @   R   R   0  \r  \t   S
0057500    T   A  \t   0   ,   0   ,   3  \r  \t   L   D   A  \t   3   ,
0057520    @   R   R   1  \r  \t   S   T   A  \t   0   ,   0   ,   3  \r
0057540   \t   L   D   A  \t   0   ,   J   W   R   S  \r  \t   L   D   A
0057560   \t   3   ,   @   W   R   0  \r  \t   S   T   A  \t   0   ,   0
0057600    ,   3  \r  \t   L   D   A  \t   3   ,   1   , 376 001  \0 205
0057620  001   2  \r  \t   J   M   P  \t   1   ,   3  \r   ;  \r   S   O
0057640    F   T   M   F   :  \t   S   O   F   T   M   A   P   F   L   A
0057660    G  \r   J   R   R   S   :  \t   J   S   R  \t   @   R   D   R
0057700    E   F   S  \r   J   W   R   S   :  \t   J   S   R  \t   @   W
0057720    T   R   E   F   S  \r   R   R   0   :  \t   R   D   R   E   F
0057740    0  \r   R   R   1   :  \t   R   D   R   E   F   1  \r   W   R
0057760    0   :  \t   W   T   R   E   F   0  \r   ;  \r   ;           M
0060000    A   P   P   I   N   G       S   U   B   R   O   U   T   I   N
0060020    E  \r   ;           C   A   L   L       W   I   T   H       A
0060040    C   0   -   1   =   V   .   A   .   ,       A   C   3   =   B
0060060    I   T   S       T   O       C   L   E   A   R       I   N    
0060100    M   A   P       E   N   T   R   Y  \r   ;           R   E   T
0060120    U   R   N   S       A   C   3   =   C   O   R   E       A   D
0060140    D   R   E   S   S       O   R       M   A   P       P   T   R
0060160   \r   ;  \r  \t   .   Z   R   E   L  \r   R   D   R   E   F   S
0060200    :  \t   R   D   R   E   F   X  \r   W   T   R   E   F   S   :
0060220   \t 376 001  \0 260 031   W   T   R   E   F   X  \r   ;  \r  \t
0060240    .   N   R   E   L  \r   R   E   F   E   D   :  \t   4  \t   ;
0060260    R   E   F   E   R   E   N   C   E   D  \r   R   E   F   D   Y
0060300    :  \t   6  \t   ;   R   E   F   E   R   E   N   C   E   D   +
0060320    D   I   R   T   Y  \r   M   A   P   R   E   T   :  \t   0  \r
0060340    V   A   0   :  \t   0  \t   ;   U   P   P   E   R       V   .
0060360    A   .  \r   V   A   1   :  \t   0  \t   ;   L   O   W   E   R
0060400        V   .   A   .  \r   B   I   T   S   :  \t   0  \r   L   M
0060420    S   K   :  \t   1   7   7   4   0   0  \r   M   A   M   S   K
0060440    :  \t   1   7   7   6   0   0  \r   C   A   H   I   :  \t   3
0060460    7   6  \t   ;   A   C   0       F   O   R       V   .   A   .
0060500    S       T   H   A   T       G   O       D   I   R   E   C   T
0060520    L   Y       T   O       C   O   R   E  \r   N   P   R   B   :
0060540   \t   0  \t   ;       R   E   P   R   O   B   E       C   O   U
0060560    N   T  \r  \t   0  \r   ;  \r   W   T   R   E   F   X   :  \t
0060600    I   N   C  \t   3   ,   3  \r  \t   S   T   A  \t   3   ,   M
0060620    A   P   R   E   T  \r 376 001  \0 204   [  \t   L   D   A  \t
0060640    3   ,   R   E   F   D   Y  \r  \t   J   M   P  \t   R   E   F
0060660    X  \r   R   D   R   E   F   X   :  \t   I   N   C  \t   3   ,
0060700    3  \r  \t   S   T   A  \t   3   ,   M   A   P   R   E   T  \r
0060720   \t   L   D   A  \t   3   ,   R   E   F   E   D  \r   R   E   F
0060740    X   :  \t   S   T   A  \t   3   ,   B   I   T   S  \r  \t   S
0060760    T   A  \t   0   ,   V   A   0  \r  \t   S   T   A  \t   1   ,
0061000    V   A   1  \r  \t   L   D   A  \t   3   ,   L   M   S   K  \t
0061020    ;   L   E   F   T       H   A   L   F       M   A   S   K  \r
0061040   \t   A   N   D  \t   3   ,   1  \r  \t   A   D   D  \t   1   ,
0061060    0  \t   ;   P   A   G   E       N   O   .       S   W   A   P
0061100    P   E   D       I   N       A   C   0  \r  \t   C   O   M   S
0061120   \t   0   ,   1  \t   ;       K   E   Y       I   N       A   C
0061140    1  \r  \t   S   U   B  \t   1   ,   0  \r   R   E   T   R   Y
0061160    :  \t   L   D   A  \t   3   ,   H   A   S   H   M   A   P   M
0061200    A   S   K  \r  \t   A   N   D  \t   3   ,   0  \t   ;   H   A
0061220    S   H       I   N   D   E   X  \r  \t   L 376 001  \0   ^  \a
0061240    D   A  \t   3   ,   H   A   S   H   M   A   P  \r  \t   A   D
0061260    D  \t   0   ,   3  \r  \t   L   D   A  \t   0   ,   0   ,   3
0061300   \t   ;   H   A   S   H       K   E   Y  \r  \t   S   U   B   #
0061320   \t   0   ,   1   ,   S   Z   R  \r  \t           J   M   P  \t
0061340    P   R   O   B   E  \t   ;   N   O       M   A   T   C   H  \r
0061360   \t   L   D   A  \t   0   ,   1   ,   3  \t   ;   E   N   T   R
0061400    Y  \r  \t   L   D   A  \t   1   ,   B   I   T   S  \r  \t   A
0061420    N   D   Z   R  \t   0   ,   1   ,   S   Z   R  \t   ;   T   E
0061440    S   T       B   I   T   S  \r  \t           J   M   P  \t   B
0061460    I   T   S   E   T  \r   I   N   C   O   R   E   :  \t   L   D
0061500    A  \t   3   ,   M   A   M   S   K  \r  \t   A   N   D  \t   0
0061520    ,   3  \t   ;   M   A   S   K       O   F   F       B   I   T
0061540    S  \r  \t   L   D   A  \t   1   ,   V   A   1  \r  \t   A   D
0061560    D  \t   1   ,   3  \r   S   K   R   E   T   :  \t   L   D   A
0061600   \t   0   ,   M   a   p   S   t   a   t   P   t   r  \r  \t   M
0061620    O   V   #  \t   0   ,   0   ,   S   Z   R  \r  \t           J
0061640  376 001  \0 275 356   M   P  \t   S   K   R   E   T   1  \r  \t
0061660    L   D   A  \t   0   ,   V   A   0  \r  \t   J   M   P  \t   @
0061700    M   A   P   R   E   T  \r   S   K   R   E   T   1   :  \t   L
0061720    D   A  \t   1   ,   H   A   S   H   M   A   P  \r  \t   S   U
0061740    B   #  \t   1   ,   0   ,   S   N   R  \r  \t           J   M
0061760    P  \t   N   O   M   A   P   1  \r  \t   L   D   A  \t   0   ,
0062000    V   A   0  \r  \t   S   T   A  \t   0   ,   @   M   a   p   S
0062020    t   a   t   P   t   r  \r  \t   I   S   Z  \t   M   a   p   S
0062040    t   a   t   P   t   r  \r  \t   L   D   A  \t   1   ,   V   A
0062060    1  \r  \t   S   T   A  \t   1   ,   @   M   a   p   S   t   a
0062100    t   P   t   r  \r  \t   I   S   Z  \t   M   a   p   S   t   a
0062120    t   P   t   r  \r  \t   J   M   P  \t   @   M   A   P   R   E
0062140    T  \r   ;           S   O   M   E       B   I   T   S       S
0062160    E   T   ,       C   H   E   C   K       F   O   R       S   T
0062200    O   R   E       T   O       C   L   E   A   N       P   A   G
0062220    E  \r   B   I   T   S   E   T   :  \t   M   O   V   R   #  \t
0062240    1   ,   1   ,   S 376 001  \0 234   ?   Z   C  \r  \t        
0062260    J   M   P  \t   N   O   M   A   P  \r  \t   M   O   V   Z   L
0062300   \t   1   ,   1  \r  \t   S   U   B  \t   1   ,   0  \t   ;   C
0062320    L   E   A   R       B   I   T   S  \r  \t   S   T   A  \t   0
0062340    ,   1   ,   3  \r  \t   J   M   P  \t   I   N   C   O   R   E
0062360   \r   ;           P   R   O   B   E       F   A   I   L   E   D
0062400   \r   P   R   O   B   E   :  \t   M   O   V   #  \t   0   ,   0
0062420    ,   S   N   R  \t   ;   E   M   P   T   Y       S   L   O   T
0062440    ?  \r  \t           J   M   P  \t   E   M   P   T   Y  \t   ;
0062460    Y   E   S   ,       R   E   T   U   R   N       N   O   S   K
0062500    I   P  \r  \t   I   S   Z  \t   N   P   R   B   +   1  \t   ;
0062520    L   O   G       T   H   E       R   E   P   R   O   B   E  \r
0062540   \t           J   M   P  \t   .   +   3  \r  \t   I   S   Z  \t
0062560    N   P   R   B  \r  \t           J   M   P  \t   .   +   1  \r
0062600   \t   L   D   A  \t   0   ,   H   A   S   H   M   A   P  \r  \t
0062620    S   U   B  \t   0   ,   3  \t   ;       R   E   C   O   N   S
0062640    T   R   U   C   T       P   R   O   B 376 001  \0 346  \0   E
0062660        I   N   D   E   X  \r  \t   L   D   A  \t   0   ,   R   e
0062700    p   r   o   b   e   I   n   c  \r  \t   A   D   D  \t   3   ,
0062720    0  \r  \t   J   M   P  \t   R   E   T   R   Y  \r   ;        
0062740    L   O   O   K   U   P       F   A   I   L   E   D   ,       T
0062760    E   S   T       F   O   R       C   O   R   E       A   D   D
0063000    R   E   S   S  \r   E   M   P   T   Y   :  \t   L   D   A  \t
0063020    0   ,   V   A   0  \r  \t   L   D   A  \t   1   ,   C   A   H
0063040    I  \r  \t   S   U   B   #  \t   0   ,   1   ,   S   Z   R  \r
0063060   \t           J   M   P  \t   N   O   M   A   P  \r  \t   L   D
0063100    A  \t   1   ,   V   A   1  \r  \t   M   O   V  \t   1   ,   3
0063120   \r  \t   J   M   P  \t   S   K   R   E   T  \r   ;           M
0063140    A   P       F   A   U   L   T  \r   N   O   M   A   P   1   :
0063160   \t   A   D   C   Z   L  \t   3   ,   3  \r  \t   A   D   D  \t
0063200    1   ,   3  \t   ;       S   t   a   t   i   s   t   i   c   s
0063220        o   v   e   r   f   l   o   w  \r   N   O   M   A   P   :
0063240   \t   L   D   A  \t   0   ,   V   A   0  \r  \t   L   D   A 376
0063260   \0   /   4 264  \t   1   ,   V   A   1  \r  \t   D   S   Z  \t
0063300    M   A   P   R   E   T  \r  \t   J   M   P  \t   @   M   A   P
0063320    R   E   T  \r   ;  \r  \t   .   E   N   D 032   (   2   2   5
0063340    8   )  \r 377  \0  \0   v   m   e   m   .   u   s   e  \0 376
0063360  001  \0   v 030   e   x   t   e   r   n   a   l  \t   /   /    
0063400    e   n   t   r   i   e   s       f   o   r       V   M   E   M
0063420   \r   [  \t   C   l   e   a   n   u   p   L   o   c   k   s  \r
0063440   \t   P   a   g   e   T   y   p   e  \r  \t   P   a   g   e   G
0063460    r   o   u   p   S   i   z   e  \r  \t   P   a   g   e   G   r
0063500    o   u   p   B   a   s   e  \r  \t   P   a   g   e   G   r   o
0063520    u   p   A   l   i   g   n  \r  \t   D   O   P   A   G   E   I
0063540    O  \r   ]  \r  \r   e   x   t   e   r   n   a   l  \t   /   /
0063560        l   i   n   k   s       t   o       I   S   F  \r   [  \t
0063600    I   n   i   t   F   m   a   p  \r  \t   I   n   d   e   x   e
0063620    d   P   a   g   e   I   O  \r   ]  \r  \r   s   t   a   t   i
0063640    c  \r   [  \t   M   y   F   m   a   p  \t   /   /       p   o
0063660    i   n   t   e   r       t   o       w   o   r   k       a   r
0063700    e   a       f   o   r       I   S   F  \r   ]  \r  \r  \r   /
0063720    /       T   o       i   n   i   t   i   a   l   i   z   e    
0063740    I   S   F   ,       s   e   t       M   y   F   m   a   p    
0063760    t   o       p 376 001  \0 207   n   o   i   n   t       t   o
0064000        a       w   o   r   k       a   r   e   a  \r   /   /    
0064020    o   f       s   i   z   e       M   y   F   m   a   p   L   e
0064040    n   g   t   h   ,       a   n   d       t   h   e   n       c
0064060    a   l   l  \r   /   /  \t   I   n   i   t   F   m   a   p   (
0064100    M   y   F   m   a   p   ,       M   y   F   m   a   p   L   e
0064120    n   g   t   h   ,       F   i   l   e   P   t   r   ,       t
0064140    r   u   e   )  \r   /   /       w   h   e   r   e       F   i
0064160    l   e   P   t   r       i   s       a       F   P       (   s
0064200    e   e       t   h   e       O   .   S   .       m   a   n   u
0064220    a   l   )  \r   /   /       f   o   r       t   h   e       p
0064240    a   g   i   n   g       f   i   l   e   .           A       r
0064260    e   a   s   o   n   a   b   l   e       v   a   l   u   e    
0064300    f   o   r  \r   /   /       M   y   F   m   a   p   L   e   n
0064320    g   t   h       i   s       8   0       -   -       s   e   e
0064340        t   h   e       I   S   F       w   r   i   t   e   u   p
0064360    .  \r  \r  \r   l   e   t       C 376  \0 334 356 370   l   e
0064400    a   n   u   p   L   o   c   k   s   (   )       b   e       [
0064420        ]  \r  \r   l   e   t       P   a   g   e   T   y   p   e
0064440    (   v   p   )       =       1  \r  \r   l   e   t       P   a
0064460    g   e   G   r   o   u   p   S   i   z   e   (   v   p   )    
0064500    =       1  \r   l   e   t       P   a   g   e   G   r   o   u
0064520    p   B   a   s   e   (   v   p   )       =       v   p  \r   l
0064540    e   t       P   a   g   e   G   r   o   u   p   A   l   i   g
0064560    n   (   v   p   )       =       0  \r  \r   l   e   t       D
0064600    O   P   A   G   E   I   O   (   v   p   ,       c   o   r   e
0064620    ,       n   p   ,       w   f   l   a   g   )       b   e  \r
0064640    [  \t   I   n   d   e   x   e   d   P   a   g   e   I   O   (
0064660    M   y   F   m   a   p   ,       v   p   +   2   ,       c   o
0064700    r   e   ,       n   p   ,       (   w   f   l   a   g   ?    
0064720    -   1   ,       1   )   )  \r   ]  \r 377  \0  \0   v   m   e
0064740    m   .   m   u  \0 376 001  \0   a   +   ;  \r   ;           V
0064760    M   E   M   .   M   U       -   -       m   i   c   r   o   c
0065000    o   d   e       f   o   r       V   M   E   M       p   a   c
0065020    k   a   g   e  \r   ;           l   a   s   t       m   o   d
0065040    i   f   i   e   d       O   c   t   o   b   e   r       1   3
0065060    ,       1   9   7   7           5   :   5   5       P   M  \r
0065100    ;  \r   ;       R       r   e   g   i   s   t   e   r   s    
0065120    r   e   q   u   i   r   e   d  \r   ;  \r   ;   $   m   a   p
0065140    b   a   s   e       $   R   x   x   ;  \t   b   a   s   e    
0065160    o   f       h   a   s   h       m   a   p   ,       m   u   s
0065200    t       b   e       e   v   e   n  \r   ;   $   m   a   p   s
0065220    p   t   r       $   R   x   x   ;  \t   m   a   p       s   t
0065240    a   t   i   s   t   i   c   s       p   o   i   n   t   e   r
0065260        (   u   p       t   o       m   a   p   b   a   s   e   )
0065300    ,       o   r       0  \r   ;   $   m   a   p   m   a   s   k
0065320    1       $   R   x   x   ;  \t   h   a   s   h       t   a   b
0065340    l   e       s   i   z   e       -   2 376 001  \0   , 202    
0065360    (   e   .   g   .       3   7   6   ,       7   7   6   )  \r
0065400    ;       C   o   p   y   r   i   g   h   t       X   e   r   o
0065420    x       C   o   r   p   o   r   a   t   i   o   n       1   9
0065440    7   9  \r   $   m   m   x  \t   $   R   5   ;  \t   =   S   A
0065460    D   ,       t   e   m   p       f   o   r       m   a   s   k
0065500        b   i   t   s  \r   $   k   e   y  \t   $   R   7   ;  \t
0065520    =   X   R   E   G   ,       t   e   m   p       f   o   r    
0065540    h   a   s   h       k   e   y       (   v   i   r   t   u   a
0065560    l       p   a   g   e       #   )  \r   $   m   r   x  \t   $
0065600    R   1   0   ;  \t   =   X   H   ,       m   i   s   c   e   l
0065620    l   a   n   e   o   u   s       t   e   m   p  \r   ;  \r   ;
0065640        O   t   h   e   r       r   e   q   u   i   r   e   m   e
0065660    n   t   s  \r   ;  \r   ;   $   M  \t   $   R   4   0   ;  \t
0065700    t   h   e       n   e   w       L       r   e   g   i   s   t
0065720    e   r  \r   ;   !   1   ,   2   0   ,   S   T   A   R   T   ;
0065740   \t   R   O   M       e   n   t   r   y       t   o       N 376
0065760  001  \0  \0   f   o   v   a       e   m   u   l   a   t   o   r
0066000   \r   ;  \r  \r  \r   ;           C   o   n   s   t   a   n   t
0066020    s  \r   ;  \r   $   r   e   a   d   r   e   f  \t   $   4   ;
0066040   \r   $   w   r   i   t   e   r   e   f  \t   $   6   ;  \r   $
0066060    n   o   t   r   e   f   b   i   t  \t   $   4   ;  \r   $   r
0066100    e   p   r   o   b   i   n   c  \t   $   3   0   ;  \t   u   s
0066120    e       w   i   t   h       r   e   p   r   o   b   i   n   c
0066140    +   1           +   1  \r   $   m   a   m   a   s   k  \t  \t
0066160    $   1   7   7   4   0   0   ;  \t   a   d   d   r   e   s   s
0066200        p   a   r   t       o   f       m   a   p       e   n   t
0066220    r   y  \r  \r   ;           P   r   e   d   e   f   i   n   i
0066240    t   i   o   n   s       f   o   r       l   a   b   e   l   s
0066260   \r   ;  \r   !   1   ,   2   ,   n   e   m   p   t   y   ,   e
0066300    m   p   t   y   ;  \t   f   o   r       d   i   s   p   a   t
0066320    c   h       o   n       e   m   p   t   y       e   n   t   r
0066340    y  \r   !   1   ,   1   ,   e   m   p   t   y   1   ;  \r   !
0066360    1   ,   2   , 376 001  \0   b   -   n   o   m   a   t   c   h
0066400    ,   m   a   t   c   h   ;  \t   f   o   r       d   i   s   p
0066420    a   t   c   h       o   n       m   a   t   c   h       w   i
0066440    t   h       k   e   y  \r   !   1   ,   2   ,   n   m   a   s
0066460    k   o   k   ,   m   a   s   k   o   k   ;  \t   f   o   r    
0066500    d   i   s   p   a   t   c   h       o   n       r   e   f   /
0066520    d   i   r   t   y       b   i   t   s  \r   !   1   ,   2   ,
0066540    n   c   l   e   a   n   ,   c   l   e   a   n   ;  \t   f   o
0066560    r       d   i   s   p   a   t   c   h       o   n       w   r
0066600    i   t   e       r   e   f   .       t   o       c   l   e   a
0066620    n       p   a   g   e  \r   !   1   ,   2   ,   n   o   s   k
0066640    i   p   ,   c   o   r   e   a   d   d   r   ;  \t   t   e   s
0066660    t   i   n   g       f   o   r       c   o   r   e       a   d
0066700    d   r   e   s   s  \r   !   1   ,   2   ,   d   o   s   t   a
0066720    t   ,   n   o   s   t   a   t   ;  \t   t   e   s   t   i   n
0066740    g       m   a   p   s   p   t   r   =   0  \r   !   1   ,   2
0066760    ,   n   f   u   l   l   ,   f   u 376 001  \0   m   .   l   l
0067000    ;  \t  \t   t   e   s   t   i   n   g       m   a   p   s   p
0067020    t   r   =   m   a   p   b   a   s   e  \r  \r  \r   ;        
0067040    r   e   a   d   /   w   r   i   t   e       m   a   p   p   i
0067060    n   g       -       v   .   a   .       i   s       i   n    
0067100    A   C   0   ,       A   C   1  \r   r   r   e   f   :  \t   L
0067120    _   r   e   a   d   r   e   f   ,       T   A   S   K   ,    
0067140    :   d   o   m   a   p   ;  \t   m   a   s   k       f   o   r
0067160        r   e   a   d   i   n   g  \r   w   r   e   f   :  \t   L
0067200    _   w   r   i   t   e   r   e   f   ,       T   A   S   K   ,
0067220        :   d   o   m   a   p   ;  \t   m   a   s   k       f   o
0067240    r       w   r   i   t   i   n   g  \r   d   o   m   a   p   :
0067260   \t   m   m   x       _       L   ;  \r  \r   ;  \r   ;        
0067300    f   o   r   m       h   a   s   h       k   e   y       f   r
0067320    o   m       A   C   0       (   8   -   1   5   )       a   n
0067340    d       A   C   1       (   0   -   7   )  \r   ;  \r  \t   T
0067360    _   1   7   7   4   0   0   ;  \r  \t   T   _   A   C 376 001
0067400   \0   \   |   1   .   T   ;  \r  \t   L   _   T   _   A   C   0
0067420        O   R       T   ;  \r  \t   k   e   y   _   L       L   C
0067440    Y       8   ;  \t  \t   s   t   a   s   h       k   e   y  \r
0067460    ;           f   o   r   m       i   n   i   t   i   a   l    
0067500    p   r   o   b   e  \r  \t   T   _   k   e   y   +   T   +   1
0067520    ;  \t   +   1       i   s       n   o   i   s   e  \r   p   r
0067540    o   b   e   :  \t   L   _       m   a   p   m   a   s   k   1
0067560    .   T   ,       T   A   S   K   ;  \r  \t   m   r   x       _
0067600        L   ;  \t  \t   s   a   v   e       i   n   i   t   i   a
0067620    l       p   r   o   b   e       f   o   r       T   A   S   K
0067640   \r  \r  \t   T       _       m   r   x   ;  \r  \t   L       _
0067660        M   A   R       _       m   a   p   b   a   s   e   +   T
0067700    ;  \r  \t   A   C   3       _       L   ;  \r  \t   T   _   k
0067720    e   y   ;  \r  \t   L   _   M   D   +   T   +   1   ,       B
0067740    U   S   =   0   ;  \t   c   a   t   c   h       m   e   m   o
0067760    r   y       d   a   t   a   ,   t   e   s   t       f   o   r
0070000        e   m 376 001  \0   u  \b   p   t   y  \r  \t   S   H   =
0070020    0   ,       T   _   M   D   ,       :   n   e   m   p   t   y
0070040    ;  \t   c   a   t   c   h       s   e   c   o   n   d       w
0070060    o   r   d       o   f       d   a   t   a  \r  \t  \t  \t  \t
0070100    ;   d   i   s   p   a   t   c   h       o   n       e   m   p
0070120    t   y   ,   t   e   s   t       f   o   r       m   a   t   c
0070140    h  \r   ;           t   e   s   t       f   o   r       m   a
0070160    t   c   h       h   a   n   g   i   n   g  \r   n   e   m   p
0070200    t   y   :  \t   L       _       m   m   x       A   N   D    
0070220    T   ,       :   n   o   m   a   t   c   h   ;  \t   d   i   s
0070240    p   a   t   c   h       o   n       m   a   t   c   h   ,    
0070260    t   e   s   t       f   o   r       r   /   w  \r   e   m   p
0070300    t   y   :  \t   T       _       3   7   7       -       1   ,
0070320        :   e   m   p   t   y   1   ;  \t   o   v   e   r   r   i
0070340    d   e       m   a   t   c   h       d   i   s   p   a   t   c
0070360    h  \r   e   m   p   t   y   1   :  \t   L       _       A   C
0070400    0       X   O   R       T   ; 376 001  \0   5 212  \r  \t   S
0070420    H   =   0   ,       L       _       A   C   1   ;  \r  \t    
0070440        :   n   o   s   k   i   p   ;  \t   t   e   s   t       f
0070460    o   r       c   o   r   e       a   d   d   r  \r   c   o   r
0070500    e   a   d   d   r   :       A   C   3       _       L   ,    
0070520    :   m   s   t   a   t   s   ;  \r   ;           t   e   s   t
0070540    i   n   g       f   o   r       m   a   s   k   e   d       b
0070560    i   t   s  \r   m   a   t   c   h   :  \t   m   r   x       _
0070600        L       R   S   H       1   ,       L       _       T   ,
0070620        S   H   =   0   ;  \t   s   a   v   e       m   a   s   k
0070640    e   d       b   i   t   s  \r  \t   T       _       m   a   m
0070660    a   s   k   .   T   ,       :   n   m   a   s   k   o   k   ;
0070700   \t   d   i   s   p   a   t   c   h       o   n       b   i   t
0070720    s       s   e   t       o   r       n   o   t  \r   n   o   m
0070740    a   t   c   h   :       T   _       r   e   p   r   o   b   i
0070760    n   c       +       1   ;  \t   a   d   d       i   n       t
0071000    h   e       f   i   r   s   t       1  \r  \t   T 376 001  \0
0071020    7   m   _       m   r   x   +   T   +   1   ,       :   p   r
0071040    o   b   e   ;  \t   a   d   d       i   n       t   h   e    
0071060    o   t   h   e   r       1  \r   n   m   a   s   k   o   k   :
0071100        T   _       m   r   x   ,       B   U   S   O   D   D   ,
0071120        T   A   S   K   ;  \t   L       h   a   s       2   n   d
0071140        w   o   r   d       f   r   o   m       h   a   s   h    
0071160    m   a   p  \r      \t   m   r   x       _       L   ,       :
0071200    n   c   l   e   a   n   ;  \t   t   e   s   t       f   o   r
0071220        w   r   i   t   e       t   o       c   l   e   a   n    
0071240    p   a   g   e  \r  \r   m   a   s   k   o   k   :  \t   L   _
0071260        A   C   1   +   T   ,       T   A   S   K   ;  \r  \t   A
0071300    C   3   _       L   ,       :   m   s   t   a   t   s   ;  \r
0071320   \r   n   c   l   e   a   n   :  \t   M   A   R   _       A   C
0071340    3   +   1   ;  \t  \t   g   o   i   n   g       t   o       s
0071360    e   t       r   e   f       b   i   t       t   o       z   e
0071400    r   o  \r  \t   T       _       m   r   x   ;  \r  \t   L    
0071420    _     376 001  \0  \v   $   n   o   t   r   e   f   b   i   t
0071440        X   O   R       T   ;  \r  \t   M   D       _       M   ;
0071460   \t  \t   r   e   w   r   i   t   e       s   e   c   o   n   d
0071500        w   o   r   d  \r  \t   T       _       m   a   m   a   s
0071520    k   .   T   ,       :   m   a   s   k   o   k   ;  \r  \r   ;
0071540            w   r   i   t   e       r   e   f       t   o       c
0071560    l   e   a   n       p   a   g   e  \r   c   l   e   a   n   :
0071600   \t   L       _       P   C   ,       S   W   M   O   D   E   ,
0071620        :   n   s   k   i   p   1   ;  \t   n   o   s   k   i   p
0071640        r   e   t   u   r   n       w   i   t   h       A   C   3
0071660    =   h   a   s   h   m   a   p       p   t   r  \r   ;        
0071700    p   a   g   e       n   o   t       i   n       c   o   r   e
0071720   \r   n   o   s   k   i   p   :  \t   L       _       P   C   ,
0071740        S   W   M   O   D   E   ,       :   n   s   k   i   p   1
0071760    ;  \t   d   i   t   t   o  \r   ;       S   k   i   p       r
0072000    e   t   u   r   n       t   o       N   o   v   a       e   m
0072020    u   l   a   t   o   r  \r 376 001  \0 321 226   n   s   k   i
0072040    p   :  \t   L       _       P   C   +   1   ,       S   W   M
0072060    O   D   E   ;  \r   n   s   k   i   p   1   :  \t   P   C    
0072100    _       L   ,       :   S   T   A   R   T   ;  \r  \r   ;    
0072120    L   o   g       m   a   p       r   e   f   e   r   e   n   c
0072140    e  \r   m   s   t   a   t   s   :  \t   L       _       T    
0072160    _       m   a   p   s   p   t   r   ;  \r  \t   L       _    
0072200    m   a   p   b   a   s   e   -   T   ,       S   H   =   0   ;
0072220   \t   t   e   s   t       f   o   r       n   o       l   o   g
0072240    g   i   n   g  \r  \t   M   A   R       _       T   ,       S
0072260    H   =   0   ,       :   d   o   s   t   a   t   ;  \t   t   e
0072300    s   t       f   o   r       b   u   f   f   e   r       f   u
0072320    l   l  \r   n   o   s   t   a   t   :  \t   L       _       P
0072340    C   +   1   ;  \r  \t   S   I   N   K       _       M   D   ,
0072360        S   W   M   O   D   E   ,       :   n   s   k   i   p   1
0072400    ;  \t   d   i   s   c   a   r   d       m   e   m   o   r   y
0072420        d   a   t   a   ,       d   o       s   k 376  \0 321   z
0072440  217   i   p       r   e   t   u   r   n  \r   d   o   s   t   a
0072460    t   :  \t   L       _       2   +   T   ,       :   n   f   u
0072500    l   l   ;  \r   f   u   l   l   :  \t   L       _       m   a
0072520    p   s   p   t   r   -   1   ,       T   A   S   K   ;  \t   s
0072540    i   g   n   a   l       b   u   f   f   e   r       o   v   e
0072560    r   f   l   o   w       w   i   t   h       f   u   n   n   y
0072600        A   C   3  \r  \t   A   C   3       _       L   ,       :
0072620    n   o   s   k   i   p   ;  \r   n   f   u   l   l   :  \t   M
0072640    D       _       A   C   0   ;  \r  \t   M   A   R       _    
0072660    L       _       m   a   p   s   p   t   r   +   1   ;  \r  \t
0072700    L       _       M   +   1   ;  \r  \t   m   a   p   s   p   t
0072720    r       _       L   ,       T   A   S   K   ;  \r  \t   M   D
0072740        _       A   C   1   ,       :   n   s   k   i   p   ;  \r
0072760   \r  \r 377  \0  \0   c   o   m   p   i   l   e   v   m   e   m
0073000    .   c   m  \0 376  \0 211   ] 213   B   c   p   l   /   F    
0073020    t   e   s   t   v   m   e   m   .   b   c   p   l  \r   B   c
0073040    p   l   /   F       v   m   e   m   .   b   c   p   l  \r   B
0073060    c   p   l   /   F       v   m   e   m   a   u   x   .   b   c
0073100    p   l  \r   B   c   p   l   /   F       v   m   e   m   i   n
0073120    i   t   .   b   c   p   l  \r   B   c   p   l   /   F       p
0073140    r   i   n   t   v   m   e   m   s   t   a   t   e   .   b   c
0073160    p   l  \r   A   s   m       v   m   e   m   a   .   a   s   m
0073200   \r   A   s   m       v   m   e   m   s   o   f   t   .   a   s
0073220    m  \r 377  \0  \0   l   o   a   d   t   e   s   t   v   m   e
0073240    m   .   c   m  \0 376  \0   k   E  \b   B   l   d   r   /   F
0073260        t   e   s   t   v   m   e   m       v   m   e   m       v
0073300    m   e   m   a   u   x       v   m   e   m   i   n   i   t    
0073320    p   r   i   n   t   v   m   e   m   s   t   a   t   e       i
0073340    s   f       i   s   f   i   n   i   t       v   m   e   m   a
0073360        v   m   e   m   s   o   f   t       s   t   a   n   d   a
0073400    r   d   r   a   m       t   r   a   c   e       t   e   m   p
0073420    l   a   t   e  \r 377  \0  \0   s   e   n   d   v   m   e   m
0073440    .   c   m  \0 376 001  \0   e   /   /   /       l   a   s   t
0073460        e   d   i   t   e   d       S   e   p   t   e   m   b   e
0073500    r       9   ,       1   9   7   7           1   :   5   7    
0073520    P   M  \r   F   t   p   /   -   S       M   a   x   c       ^
0073540   \r   C   o   n   n   e   c   t   /   C       a   l   t   o   s
0073560    o   u   r   c   e       ^  \r   D   u   m   p   /   C       v
0073600    m   e   m   .   d   m       t   e   s   t   v   m   e   m   .
0073620    b   c   p   l       v   m   e   m   .   d       v   m   e   m
0073640    .   b   c   p   l       v   m   e   m   a   u   x   .   b   c
0073660    p   l       v   m   e   m   i   n   i   t   .   b   c   p   l
0073700        p   r   i   n   t   v   m   e   m   s   t   a   t   e   .
0073720    b   c   p   l       v   m   e   m   a   .   a   s   m       v
0073740    m   e   m   s   o   f   t   .   a   s   m       v   m   e   m
0073760    .   u   s   e       v   m   e   m   .   m   u       c   o   m
0074000    p   i   l   e   v   m   e   m   .   c   m       l   o   a   d
0074020    t   e   s   t   v   m   e   m   .   c   m       s   e   n   d
0074040    v   m   e   m   .   c   m       ^ 376  \0   x 376   H  \r   C
0074060    o   n   n   e   c   t   /   C       a   l   t   o       ^  \r
0074100    D   u   m   p   /   C       v   m   e   m   .   d   m       v
0074120    m   e   m   .   B   R       v   m   e   m   a   u   x   .   B
0074140    R       v   m   e   m   i   n   i   t   .   B   R       p   r
0074160    i   n   t   v   m   e   m   s   t   a   t   e   .   B   R    
0074200    v   m   e   m   a   .   B   R       v   m   e   m   s   o   f
0074220    t   .   B   R       v   m   e   m   .   u   s   e       v   m
0074240    e   m   .   m   u  \r 374                                    
0074247