;================================================================================================
;================================================================================================
; *****************************************************************************************************
; *****************************************************************************************************
;============================================================================
;----------------------------------------------------------------------------
;============================================================================
;----------------------------------------------------------------------------
;============================================================================
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;================================================================================================
;================================================================================================
; *****************************************************************************************************
; *****************************************************************************************************
;============================================================================
;----------------------------------------------------------------------------
;============================================================================
;----------------------------------------------------------------------------
;============================================================================
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
;----------------------------------------------------------------------------
[bits 16]
org 0100h
BaseOfStack equ 0100h
jmp long _start
BootMessage: db "Time: "
db 0,0,0,0
circle:
db 236,122,236,123,236,124,235,126,235,127,234,128,234,129,233,131,233,132,232,133,231,135,231,136,230,137,229,138,229,140,228,141
db 227,142,227,143,226,144,225,145,224,147,223,148,223,149,222,150,221,151,220,152,219,153,218,154,217,155,216,156,215,157,214,158
db 213,159,212,160,211,161,210,162,209,163,208,163,207,164,205,165,204,166,203,167,202,167,201,168,199,169,198,169,197,170,196,171
db 195,171,193,172,192,173,191,173,189,174,188,174,187,175,186,175,184,176,183,176,182,176,180,177,179,177,177,177,176,178,175,178
db 173,178,172,179,171,179,169,179,168,179,166,179,165,179,164,179,162,179,161,179,160,179,158,179,157,179,155,179,154,179,153,179
db 151,179,150,179,148,179,147,179,146,178,144,178,143,178,142,177,140,177,139,177,137,176,136,176,135,176,133,175,132,175,131,174
db 130,174,128,173,127,173,126,172,124,171,123,171,122,170,121,169,119,169,118,168,117,167,116,167,115,166,114,165,112,164,111,163
db 110,163,109,162,108,161,107,160,106,159,105,158,104,157,103,156,102,155,101,154,100,153,99,152,98,151,97,150,96,149,96,148,95,147
db 94,145,93,144,92,143,92,142,91,141,90,140,90,138,89,137,88,136,88,135,87,133,86,132,86,131,85,129,85,128,84,127,84,126,83,124,83
db 123,83,122,82,120,82,119,82,117,81,116,81,115,81,113,80,112,80,111,80,109,80,108,80,106,80,105,80,104,80,102,80,101,80,100,80,98
db 80,97,80,95,80,94,80,93,80,91,80,90,80,88,80,87,81,86,81,84,81,83,82,82,82,80,82,79,83,77,83,76,83,75,84,73,84,72,85,71,85,70,86
db 68,86,67,87,66,88,64,88,63,89,62,90,61,90,60,91,58,92,57,92,56,93,55,94,54,95,52,96,51,96,50,97,49,98,48,99,47,100,46,101,45,102
db 44,103,43,104,42,105,41,106,40,107,39,108,38,109,37,110,36,111,36,112,35,114,34,115,33,116,32,117,32,118,31,120,30,121,30,122,29
db 123,28,124,28,126,27,127,26,128,26,130,25,131,25,132,24,133,24,135,23,136,23,137,23,139,22,140,22,142,22,143,21,144,21,146,21,147
db 20,148,20,150,20,151,20,153,20,154,20,155,20,157,20,158,20,160,20,161,20,162,20,164,20,165,20,166,20,168,20,169,20,171,20,172,20
db 173,21,175,21,176,21,177,22,179,22,180,22,182,23,183,23,184,23,186,24,187,24,188,25,189,25,191,26,192,26,193,27,195,28,196,28,197
db 29,198,30,199,30,201,31,202,32,203,32,204,33,205,34,207,35,208,36,209,36,210,37,211,38,212,39,213,40,214,41,215,42,216,43,217,44
db 218,45,219,46,220,47,221,48,222,49,223,50,223,51,224,52,225,54,226,55,227,56,227,57,228,58,229,59,229,61,230,62,231,63,231,64,232
db 66,233,67,233,68,234,70,234,71,235,72,235,73,236,75,236,76,236,77,237,79,237,80,237,82,238,83,238,84,238,86,239,87,239,88,239,90,239
db 91,239,93,239,94,239,95,239,97,239,98,239,99
db 240,100,239,101,239,102,239,104,239,105,239,106,239,108,239,109,239,111,239,112,238,113,238,115,238,116,237,117,237,119,237,120
line:
db 160, 60,160, 80,160, 90,160, 95,160, 97,160, 98,160, 99,160, 98,160, 96,160, 96,160, 95,160, 92,160, 93,160, 94,160, 93,160, 91,160, 91,160, 90,160, 85,160, 87,160, 88,160, 89,160, 88,160, 86,160, 86,160, 85,160, 82,160, 83,160, 84,160, 83,160, 81,160, 81,160, 80,160, 70,160, 75,160, 77,160, 78,160, 79,160, 78,160, 76,160, 76,160, 75,160, 72,160, 73,160, 74,160, 73,160, 71,160, 71,160, 70,160, 65,160, 67,160, 68,160, 69,160, 68,160, 66,160, 66,160, 65,160, 62,160, 63,160, 64,160, 63,160, 61,160, 61,160, 60,160, 40,160, 50,160, 55,160, 57,160, 58,160, 59,160, 58,160, 56,160, 56,160, 55,160, 52,160, 53,160, 54,160, 53,160, 51,160, 51,160, 50,160, 45,160, 47,160, 48,160, 49,160, 48,160, 46,160, 46,160, 45,160, 42,160, 43,160, 44,160, 43,160, 41,160, 41,160, 40,160, 30,160, 35,160, 37,160, 38,160, 39,160, 38,160, 36,160, 36,160, 35,160, 32,160, 33,160, 34,160, 33,160, 31,160, 31,160, 30,160, 25,160, 27,160, 28,160, 29,160, 28,160, 26,160, 26,160, 25,160, 22,160, 23,160, 24,160, 23,160, 21,160, 21,160, 20,
db 164, 60,162, 80,161, 90,160, 95,160, 97,160, 98,160, 99,160, 98,160, 96,160, 96,160, 95,160, 92,160, 93,160, 94,160, 93,160, 91,160, 91,160, 90,161, 85,161, 87,161, 88,161, 89,161, 88,161, 86,161, 86,161, 85,161, 82,161, 83,161, 84,161, 83,161, 81,161, 81,161, 80,163, 70,162, 75,162, 77,162, 78,162, 79,162, 78,162, 76,162, 76,162, 75,162, 72,162, 73,162, 74,162, 73,162, 71,162, 71,162, 70,163, 65,163, 67,163, 68,163, 69,163, 68,163, 66,163, 66,163, 65,163, 62,163, 63,163, 64,163, 63,163, 61,163, 61,163, 60,166, 40,165, 50,164, 55,164, 57,164, 58,164, 59,164, 58,164, 56,164, 56,164, 55,164, 52,164, 53,164, 54,164, 53,164, 51,164, 51,164, 50,165, 45,165, 47,165, 48,165, 49,165, 48,165, 46,165, 46,165, 45,165, 42,165, 43,165, 44,165, 43,165, 41,165, 41,165, 40,167, 30,166, 35,166, 37,166, 38,166, 39,166, 38,166, 36,166, 36,166, 35,166, 32,166, 33,166, 34,166, 33,166, 31,166, 31,166, 30,167, 25,167, 27,167, 28,167, 29,167, 28,167, 26,167, 26,167, 25,167, 22,167, 23,167, 24,167, 23,167, 21,167, 21,167, 20,
db 168, 60,164, 80,162, 90,161, 95,160, 97,160, 98,160, 99,160, 98,160, 96,160, 96,160, 95,161, 92,161, 93,161, 94,161, 93,161, 91,161, 91,161, 90,163, 85,162, 87,162, 88,162, 89,162, 88,162, 86,162, 87,162, 85,163, 82,163, 83,163, 84,163, 83,163, 81,163, 82,163, 80,166, 70,165, 75,164, 77,164, 79,164, 79,164, 78,164, 76,164, 77,164, 75,165, 72,165, 74,165, 74,165, 73,165, 71,165, 72,165, 70,167, 65,166, 67,166, 69,166, 69,166, 68,166, 66,166, 67,166, 66,167, 62,167, 64,167, 64,167, 63,167, 61,167, 62,167, 61,172, 40,170, 50,169, 55,168, 58,168, 59,168, 59,168, 58,168, 56,168, 57,168, 56,169, 53,169, 54,169, 54,169, 53,169, 51,169, 52,169, 51,171, 45,170, 48,170, 49,170, 50,170, 48,170, 46,170, 47,170, 46,171, 43,171, 44,171, 45,171, 43,171, 41,171, 42,171, 41,174, 30,173, 35,172, 38,172, 39,172, 40,172, 38,172, 37,172, 37,172, 36,173, 33,173, 34,173, 35,173, 33,173, 32,173, 32,173, 31,175, 25,174, 28,174, 29,174, 30,174, 29,174, 27,174, 27,174, 26,175, 23,175, 24,175, 25,175, 24,175, 22,175, 22,175, 21,
db 172, 61,166, 80,163, 90,161, 95,160, 97,160, 98,160, 99,160, 98,161, 96,160, 96,161, 95,162, 92,161, 93,161, 94,162, 93,162, 91,162, 92,162, 90,164, 85,163, 87,163, 89,163, 89,163, 88,164, 86,163, 87,164, 86,165, 83,164, 84,164, 84,165, 83,165, 81,165, 82,165, 81,169, 71,167, 75,166, 78,166, 79,166, 80,166, 78,167, 77,166, 77,167, 76,168, 73,167, 74,167, 75,168, 74,168, 72,168, 72,168, 71,170, 66,169, 68,169, 69,169, 70,169, 69,170, 67,169, 68,170, 66,171, 63,170, 65,170, 65,171, 64,171, 62,171, 63,171, 62,178, 42,175, 51,173, 56,172, 59,172, 60,172, 60,172, 59,173, 57,172, 58,173, 57,174, 54,173, 55,173, 56,174, 54,174, 53,174, 53,174, 52,176, 47,175, 49,175, 50,175, 51,175, 50,176, 48,175, 48,176, 47,177, 44,176, 45,176, 46,177, 45,177, 43,177, 44,177, 42,181, 32,179, 37,178, 39,178, 41,178, 41,178, 40,179, 38,178, 39,179, 38,180, 35,179, 36,179, 36,180, 35,180, 33,180, 34,180, 33,182, 27,181, 30,181, 31,181, 32,181, 30,182, 29,181, 29,182, 28,183, 25,182, 26,182, 27,183, 26,183, 24,183, 24,183, 23,
db 176, 63,168, 81,164, 90,162, 95,161, 97,160, 98,160, 99,160, 98,161, 96,161, 97,161, 95,163, 93,162, 94,162, 94,162, 93,163, 91,163, 92,163, 91,166, 86,165, 88,164, 89,164, 90,164, 89,165, 87,165, 87,165, 86,167, 83,166, 84,166, 85,166, 84,167, 82,167, 83,167, 82,172, 72,170, 76,169, 79,168, 80,168, 80,168, 79,169, 78,169, 78,169, 77,171, 74,170, 75,170, 76,170, 75,171, 73,171, 73,171, 72,174, 67,173, 69,172, 71,172, 71,172, 70,173, 68,173, 69,173, 68,175, 65,174, 66,174, 67,174, 65,175, 64,175, 64,175, 63,184, 44,180, 53,178, 58,177, 60,176, 61,176, 62,176, 61,177, 59,177, 60,177, 58,179, 56,178, 57,178, 57,178, 56,179, 54,179, 55,179, 54,182, 49,181, 51,180, 52,180, 53,180, 52,181, 50,181, 50,181, 49,183, 46,182, 47,182, 48,182, 47,183, 45,183, 46,183, 45,188, 35,186, 39,185, 42,184, 43,184, 43,184, 42,185, 41,185, 41,185, 40,187, 37,186, 38,186, 39,186, 38,187, 36,187, 36,187, 35,190, 30,189, 32,188, 34,188, 34,188, 33,189, 31,189, 32,189, 31,191, 28,190, 29,190, 30,190, 28,191, 27,191, 27,191, 26,
db 179, 65,169, 82,164, 91,162, 95,161, 97,160, 98,160, 99,160, 98,161, 96,161, 97,162, 96,163, 93,163, 94,162, 95,163, 93,164, 92,163, 92,164, 91,167, 86,166, 89,165, 90,165, 90,165, 89,166, 87,166, 88,167, 87,168, 84,167, 85,167, 86,168, 85,169, 83,168, 84,169, 83,174, 73,172, 78,170, 80,170, 81,170, 81,170, 80,171, 79,171, 79,171, 78,173, 75,172, 77,172, 77,173, 76,174, 74,173, 75,174, 74,177, 69,175, 71,175, 72,174, 73,175, 72,176, 70,176, 71,176, 69,178, 67,177, 68,177, 68,177, 67,178, 66,178, 66,179, 65,189, 47,184, 56,181, 60,180, 62,180, 63,179, 64,180, 63,181, 61,181, 62,181, 61,183, 58,182, 59,182, 60,182, 58,183, 57,183, 57,184, 56,186, 51,185, 54,184, 55,184, 55,185, 54,186, 52,185, 53,186, 52,188, 49,187, 50,187, 51,187, 50,188, 48,188, 49,188, 48,194, 38,191, 43,190, 45,189, 46,189, 46,190, 45,191, 44,190, 44,191, 43,192, 40,192, 42,191, 42,192, 41,193, 39,193, 40,193, 39,196, 34,195, 36,194, 37,194, 38,195, 37,195, 35,195, 36,196, 34,197, 32,197, 33,196, 33,197, 32,198, 31,198, 31,198, 30,
db 183, 67,171, 83,165, 91,162, 95,161, 97,160, 98,160, 99,161, 98,162, 96,161, 97,162, 96,164, 93,163, 94,163, 95,164, 94,165, 92,164, 93,165, 92,168, 87,167, 89,166, 90,166, 91,166, 90,168, 88,167, 89,168, 88,170, 85,169, 86,169, 87,169, 86,171, 84,170, 85,171, 84,177, 75,174, 79,173, 81,172, 82,172, 83,172, 82,173, 80,173, 81,174, 80,176, 77,175, 78,175, 79,175, 78,176, 76,176, 77,177, 76,180, 71,179, 73,178, 74,177, 75,178, 74,179, 72,179, 73,180, 72,182, 69,181, 70,180, 71,181, 70,182, 68,182, 69,183, 68,195, 51,189, 59,186, 63,184, 65,184, 66,183, 66,184, 65,185, 64,185, 64,186, 63,187, 61,187, 62,186, 62,187, 61,188, 60,188, 60,189, 59,192, 55,190, 57,190, 58,189, 58,190, 57,191, 56,191, 56,191, 55,193, 53,193, 54,192, 54,193, 53,194, 52,194, 52,194, 51,201, 43,198, 47,196, 49,195, 50,195, 50,196, 49,197, 48,197, 48,197, 47,199, 45,198, 46,198, 46,199, 45,200, 44,200, 44,200, 43,204, 39,202, 41,201, 42,201, 42,202, 41,203, 40,202, 40,203, 39,205, 37,204, 38,204, 38,205, 37,206, 36,205, 36,206, 35,
db 186, 70,173, 85,166, 92,163, 96,161, 98,160, 99,160, 99,161, 98,162, 97,162, 97,162, 96,164, 94,164, 95,163, 95,164, 94,165, 93,165, 93,166, 92,169, 88,168, 90,167, 91,167, 92,167, 91,169, 89,168, 90,169, 89,171, 86,170, 87,170, 88,171, 87,172, 85,172, 86,172, 85,179, 77,176, 81,174, 83,174, 84,173, 84,174, 83,175, 82,175, 82,176, 81,178, 79,177, 80,176, 80,177, 79,179, 78,178, 78,179, 77,183, 73,181, 75,180, 76,180, 77,181, 76,182, 74,181, 75,182, 74,184, 71,184, 72,183, 73,184, 72,185, 70,185, 71,186, 70,199, 55,193, 62,189, 66,188, 68,187, 69,186, 69,187, 68,188, 67,188, 67,189, 66,191, 64,190, 65,190, 65,191, 64,192, 63,191, 63,192, 62,196, 58,194, 60,193, 61,193, 62,194, 61,195, 59,195, 60,196, 59,198, 56,197, 57,196, 58,197, 57,198, 55,198, 56,199, 55,206, 47,203, 51,201, 53,200, 54,200, 54,200, 53,202, 52,201, 52,202, 51,204, 49,203, 50,203, 50,204, 49,205, 48,205, 48,205, 47,209, 43,208, 45,207, 46,206, 47,207, 46,208, 44,208, 45,209, 44,211, 41,210, 42,210, 43,210, 42,212, 40,211, 41,212, 40,
db 189, 73,174, 86,167, 93,163, 96,161, 98,160, 99,160, 99,161, 98,162, 97,162, 97,163, 97,165, 94,164, 95,164, 96,165, 95,166, 94,165, 94,166, 93,171, 89,169, 91,168, 92,167, 92,168, 91,170, 90,169, 91,170, 90,172, 88,171, 89,171, 89,172, 88,173, 87,173, 87,174, 86,182, 79,178, 83,176, 84,175, 85,175, 86,176, 85,177, 83,177, 84,177, 83,180, 81,179, 82,178, 82,179, 81,181, 80,180, 81,181, 80,185, 76,183, 78,183, 78,182, 79,183, 78,184, 77,184, 77,185, 76,187, 74,186, 75,186, 75,187, 75,188, 73,188, 74,189, 73,204, 59,196, 66,193, 69,191, 71,190, 72,189, 72,190, 71,192, 70,191, 70,192, 70,195, 67,194, 68,193, 69,194, 68,195, 67,195, 67,196, 66,200, 62,198, 64,197, 65,197, 65,198, 64,199, 63,199, 64,200, 63,202, 61,201, 62,201, 62,201, 61,203, 60,202, 60,203, 59,211, 52,207, 56,206, 57,205, 58,204, 59,205, 58,207, 56,206, 57,207, 56,209, 54,208, 55,208, 55,209, 54,210, 53,210, 54,211, 53,215, 49,213, 51,212, 51,212, 52,213, 51,214, 50,213, 50,214, 49,217, 47,216, 48,215, 48,216, 48,218, 46,217, 47,218, 46,
db 192, 76,176, 88,168, 94,164, 97,162, 98,161, 99,160, 99,161, 98,163, 97,162, 98,163, 97,166, 95,165, 96,164, 96,165, 95,167, 94,166, 95,167, 94,172, 91,170, 92,169, 93,168, 93,169, 92,171, 91,170, 92,171, 91,174, 89,173, 90,172, 90,173, 89,175, 88,174, 89,175, 88,184, 82,180, 85,178, 86,177, 87,176, 87,177, 86,179, 85,178, 86,179, 85,182, 83,181, 84,180, 84,181, 83,183, 82,182, 83,183, 82,188, 79,186, 80,185, 81,184, 81,185, 80,187, 79,186, 80,187, 79,190, 77,189, 78,188, 78,189, 77,191, 76,190, 77,191, 76,208, 64,200, 70,196, 73,194, 74,193, 75,192, 75,193, 74,195, 73,194, 74,195, 73,198, 71,197, 72,196, 72,197, 71,199, 70,198, 71,199, 70,204, 67,202, 68,201, 69,200, 69,201, 68,203, 67,202, 68,203, 67,206, 65,205, 66,204, 66,205, 65,207, 64,206, 65,207, 64,216, 58,212, 61,210, 62,209, 63,208, 63,209, 62,211, 61,210, 62,211, 61,214, 59,213, 60,212, 60,213, 59,215, 58,214, 59,215, 58,220, 55,218, 56,217, 57,216, 57,217, 56,219, 55,218, 56,219, 55,222, 53,221, 54,220, 54,221, 53,223, 52,222, 53,223, 52,
db 194, 79,177, 89,168, 94,164, 97,162, 98,161, 99,160, 99,161, 99,163, 98,162, 98,163, 97,166, 96,165, 96,164, 97,165, 96,167, 95,167, 95,168, 95,172, 92,170, 93,169, 94,169, 94,170, 93,171, 92,171, 93,172, 92,175, 91,174, 91,173, 91,174, 91,176, 90,175, 90,176, 90,185, 84,181, 87,179, 88,178, 89,177, 89,178, 88,180, 87,179, 88,181, 87,183, 85,182, 86,182, 86,183, 86,184, 85,184, 85,185, 84,190, 82,188, 83,186, 83,186, 84,187, 83,189, 82,188, 83,189, 82,192, 80,191, 81,190, 81,191, 81,193, 80,192, 80,193, 79,211, 69,203, 74,198, 76,196, 78,195, 78,195, 79,196, 78,197, 77,197, 77,198, 77,200, 75,199, 76,199, 76,200, 75,202, 75,201, 75,202, 74,207, 71,205, 73,204, 73,203, 74,204, 73,206, 72,205, 72,206, 72,209, 70,208, 71,207, 71,209, 70,210, 69,210, 70,211, 69,220, 64,216, 66,213, 67,212, 68,212, 68,213, 68,214, 67,214, 67,215, 67,218, 65,217, 66,216, 66,217, 65,219, 64,218, 65,219, 64,224, 61,222, 62,221, 63,220, 63,221, 63,223, 62,223, 62,224, 61,226, 60,225, 60,225, 61,226, 60,227, 59,227, 59,228, 59,
db 196, 83,178, 91,169, 95,164, 97,162, 98,161, 99,160, 99,161, 99,163, 98,162, 98,163, 98,166, 96,165, 97,165, 97,166, 97,167, 96,167, 96,168, 96,173, 93,171, 94,170, 95,169, 95,170, 95,172, 94,171, 94,173, 94,175, 92,174, 93,174, 93,175, 93,177, 92,176, 92,177, 92,187, 87,182, 89,180, 90,179, 91,178, 91,179, 90,181, 90,181, 90,182, 89,185, 88,183, 89,183, 89,184, 88,186, 88,185, 88,186, 87,191, 85,189, 86,188, 87,187, 87,189, 86,190, 86,190, 86,191, 85,194, 84,193, 85,192, 85,193, 84,195, 84,194, 84,195, 83,214, 75,205, 79,201, 81,198, 82,197, 82,197, 83,198, 82,199, 81,199, 82,200, 81,203, 80,202, 80,201, 81,202, 80,204, 79,203, 80,205, 79,210, 77,207, 78,206, 78,206, 79,207, 78,209, 77,208, 78,209, 77,212, 76,211, 76,210, 77,211, 76,213, 75,213, 76,214, 75,223, 71,219, 73,217, 74,215, 74,215, 74,216, 74,218, 73,217, 73,218, 73,221, 72,220, 72,219, 72,221, 72,222, 71,222, 71,223, 71,228, 69,226, 70,225, 70,224, 70,225, 70,227, 69,226, 69,227, 69,230, 68,229, 68,229, 68,230, 68,231, 67,231, 67,232, 67,
db 198, 87,179, 93,169, 96,164, 98,162, 99,161, 99,160, 99,161, 99,163, 98,162, 99,164, 98,167, 97,165, 98,165, 98,166, 97,168, 97,167, 97,168, 97,174, 95,171, 96,170, 96,170, 96,171, 96,173, 95,172, 95,173, 95,176, 94,175, 94,174, 95,176, 94,177, 94,177, 94,178, 93,188, 90,183, 92,181, 92,180, 93,179, 93,180, 93,182, 92,181, 92,183, 92,186, 91,184, 91,184, 91,185, 91,187, 91,186, 91,187, 90,193, 89,190, 89,189, 90,189, 90,190, 90,192, 89,191, 89,192, 89,195, 88,194, 88,193, 88,195, 88,196, 87,196, 88,197, 87,217, 81,207, 84,202, 85,200, 86,199, 87,198, 87,199, 86,201, 86,200, 86,202, 86,205, 85,203, 85,203, 85,204, 85,206, 84,205, 84,206, 84,212, 82,209, 83,208, 83,208, 84,209, 83,211, 83,210, 83,211, 83,214, 82,213, 82,212, 82,214, 82,215, 81,215, 81,216, 81,226, 78,221, 79,219, 80,218, 80,217, 81,218, 80,220, 80,219, 80,221, 79,224, 78,222, 79,222, 79,223, 79,225, 78,224, 78,225, 78,231, 76,228, 77,227, 77,227, 77,228, 77,230, 76,229, 77,230, 76,233, 75,232, 76,231, 76,233, 75,234, 75,234, 75,235, 75,
db 199, 91,179, 95,169, 97,164, 98,162, 99,161, 99,160, 99,161, 99,163, 99,163, 99,164, 99,167, 98,166, 98,165, 98,166, 98,168, 98,167, 98,169, 98,174, 96,172, 97,170, 97,170, 97,171, 97,173, 97,172, 97,174, 96,177, 96,175, 96,175, 96,176, 96,178, 96,177, 96,178, 95,189, 93,184, 94,181, 95,180, 95,180, 95,181, 95,183, 94,182, 95,183, 94,186, 94,185, 94,184, 94,186, 94,188, 93,187, 94,188, 93,194, 92,191, 93,190, 93,189, 93,191, 93,192, 92,192, 92,193, 92,196, 92,195, 92,194, 92,195, 92,197, 91,197, 91,198, 91,218, 87,208, 89,203, 90,201, 90,200, 91,199, 91,200, 91,202, 90,202, 90,203, 90,206, 89,205, 90,204, 90,205, 90,207, 89,206, 89,208, 89,213, 88,211, 88,209, 89,209, 89,210, 88,212, 88,211, 88,213, 88,216, 87,214, 88,214, 88,215, 87,217, 87,216, 87,217, 87,228, 85,223, 86,220, 86,219, 86,219, 87,220, 86,222, 86,221, 86,222, 86,225, 85,224, 85,223, 86,225, 85,227, 85,226, 85,227, 85,233, 84,230, 84,229, 84,228, 84,230, 84,231, 84,231, 84,232, 84,235, 83,234, 83,233, 83,234, 83,236, 83,236, 83,237, 83,
db 199, 95,179, 97,169, 98,164, 99,162, 99,161, 99,160, 99,161, 99,163, 99,163, 99,164, 99,167, 99,166, 99,165, 99,166, 99,168, 99,168, 99,169, 98,174, 98,172, 98,171, 98,170, 98,171, 98,173, 98,172, 98,174, 98,177, 98,176, 98,175, 98,176, 98,178, 97,177, 97,179, 97,189, 96,184, 97,182, 97,180, 97,180, 97,181, 97,183, 97,182, 97,184, 97,187, 96,185, 97,185, 97,186, 96,188, 96,187, 96,189, 96,194, 96,192, 96,190, 96,190, 96,191, 96,193, 96,192, 96,193, 96,197, 95,195, 95,195, 95,196, 95,198, 95,197, 95,198, 95,219, 93,209, 94,204, 94,201, 95,200, 95,200, 95,201, 95,203, 95,202, 95,203, 95,206, 94,205, 94,205, 94,206, 94,208, 94,207, 94,208, 94,214, 93,211, 94,210, 94,209, 94,211, 94,213, 93,212, 94,213, 93,216, 93,215, 93,214, 93,216, 93,218, 93,217, 93,218, 93,229, 92,224, 92,221, 92,220, 93,219, 93,221, 93,222, 92,222, 92,223, 92,226, 92,225, 92,224, 92,226, 92,227, 92,227, 92,228, 92,234, 91,231, 91,230, 91,229, 92,230, 91,232, 91,232, 91,233, 91,236, 91,235, 91,234, 91,235, 91,237, 91,237, 91,238, 91,
db 200, 100,180, 100,170, 100,165, 100,162, 100,161, 100,160, 100,161, 100,163, 100,163, 100,164, 100,167, 100,166, 100,165, 100,166, 100,168, 100,168, 100,169, 100,175, 100,172, 100,171, 100,170, 100,171, 100,173, 100,173, 100,174, 100,177, 100,176, 100,175, 100,176, 100,178, 100,178, 100,179, 100,190, 100,185, 100,182, 100,181, 100,180, 100,181, 100,183, 100,183, 100,184, 100,187, 100,186, 100,185, 100,186, 100,188, 100,188, 100,189, 100,195, 100,192, 100,191, 100,190, 100,191, 100,193, 100,193, 100,194, 100,197, 100,196, 100,195, 100,196, 100,198, 100,198, 100,199, 100,220, 100,210, 100,205, 100,202, 100,201, 100,200, 100,201, 100,203, 100,203, 100,204, 100,207, 100,206, 100,205, 100,206, 100,208, 100,208, 100,209, 100,215, 100,212, 100,211, 100,210, 100,211, 100,213, 100,213, 100,214, 100,217, 100,216, 100,215, 100,216, 100,218, 100,218, 100,219, 100,230, 100,225, 100,222, 100,221, 100,220, 100,221, 100,223, 100,223, 100,224, 100,227, 100,226, 100,225, 100,226, 100,228, 100,228, 100,229, 100,235, 100,232, 100,231, 100,230, 100,231, 100,233, 100,233, 100,234, 100,237, 100,236, 100,235, 100,236, 100,238, 100,238, 100,239, 100,
db 199, 104,179, 102,169, 101,164, 100,162, 100,161, 100,160, 100,161, 100,163, 100,163, 100,164, 100,167, 100,166, 100,165, 100,166, 100,168, 100,168, 100,169, 100,174, 101,172, 101,171, 101,170, 101,171, 101,173, 101,172, 101,174, 101,177, 101,176, 101,175, 101,176, 101,178, 101,177, 101,179, 101,189, 103,184, 102,182, 102,180, 102,180, 102,181, 102,183, 102,182, 102,184, 102,187, 102,185, 102,185, 102,186, 102,188, 102,187, 102,189, 102,194, 103,192, 103,190, 103,190, 103,191, 103,193, 103,192, 103,193, 103,197, 103,195, 103,195, 103,196, 103,198, 103,197, 103,198, 103,219, 106,209, 105,204, 104,201, 104,200, 104,200, 104,201, 104,203, 104,202, 104,203, 104,206, 104,205, 104,205, 104,206, 104,208, 104,207, 104,208, 104,214, 105,211, 105,210, 105,209, 105,211, 105,213, 105,212, 105,213, 105,216, 105,215, 105,214, 105,216, 105,218, 105,217, 105,218, 105,229, 107,224, 106,221, 106,220, 106,219, 106,221, 106,222, 106,222, 106,223, 106,226, 106,225, 106,224, 106,226, 106,227, 106,227, 106,228, 106,234, 107,231, 107,230, 107,229, 107,230, 107,232, 107,232, 107,233, 107,236, 107,235, 107,234, 107,235, 107,237, 107,237, 107,238, 107,
db 199, 108,179, 104,169, 102,164, 101,162, 100,161, 100,160, 100,161, 100,163, 100,163, 100,164, 100,167, 101,166, 101,165, 101,166, 101,168, 101,167, 101,169, 101,174, 103,172, 102,170, 102,170, 102,171, 102,173, 102,172, 102,174, 102,177, 103,175, 103,175, 103,176, 103,178, 103,177, 103,178, 103,189, 106,184, 105,181, 104,180, 104,180, 104,181, 104,183, 104,182, 104,183, 104,186, 105,185, 105,184, 105,186, 105,188, 105,187, 105,188, 105,194, 107,191, 106,190, 106,189, 106,191, 106,192, 106,192, 106,193, 106,196, 107,195, 107,194, 107,195, 107,197, 107,197, 107,198, 107,218, 112,208, 110,203, 109,201, 108,200, 108,199, 108,200, 108,202, 108,202, 108,203, 108,206, 109,205, 109,204, 109,205, 109,207, 109,206, 109,208, 109,213, 111,211, 110,209, 110,209, 110,210, 110,212, 110,211, 110,213, 110,216, 111,214, 111,214, 111,215, 111,217, 111,216, 111,217, 111,228, 114,223, 113,220, 112,219, 112,219, 112,220, 112,222, 112,221, 112,222, 112,225, 113,224, 113,223, 113,225, 113,227, 113,226, 113,227, 113,233, 115,230, 114,229, 114,228, 114,230, 114,231, 114,231, 114,232, 114,235, 115,234, 115,233, 115,234, 115,236, 115,236, 115,237, 115,
db 198, 112,179, 106,169, 103,164, 101,162, 100,161, 100,160, 100,161, 100,163, 101,162, 100,164, 101,167, 102,165, 101,165, 101,166, 102,168, 102,167, 102,168, 102,174, 104,171, 103,170, 103,170, 103,171, 103,173, 104,172, 103,173, 104,176, 105,175, 104,174, 104,176, 105,177, 105,177, 105,178, 105,188, 109,183, 107,181, 106,180, 106,179, 106,180, 106,182, 107,181, 106,183, 107,186, 108,184, 107,184, 107,185, 108,187, 108,186, 108,187, 108,193, 110,190, 109,189, 109,189, 109,190, 109,192, 110,191, 109,192, 110,195, 111,194, 110,193, 110,195, 111,196, 111,196, 111,197, 111,217, 118,207, 115,202, 113,200, 112,199, 112,198, 112,199, 112,201, 113,200, 112,202, 113,205, 114,203, 113,203, 113,204, 114,206, 114,205, 114,206, 114,212, 116,209, 115,208, 115,208, 115,209, 115,211, 116,210, 115,211, 116,214, 117,213, 116,212, 116,214, 117,215, 117,215, 117,216, 117,226, 121,221, 119,219, 118,218, 118,217, 118,218, 118,220, 119,219, 118,221, 119,224, 120,222, 119,222, 119,223, 120,225, 120,224, 120,225, 120,231, 122,228, 121,227, 121,227, 121,228, 121,230, 122,229, 121,230, 122,233, 123,232, 122,231, 122,233, 123,234, 123,234, 123,235, 123,
db 196, 116,178, 108,169, 104,164, 102,162, 101,161, 100,160, 100,161, 100,163, 101,162, 101,163, 101,166, 103,165, 102,165, 102,166, 102,167, 103,167, 103,168, 103,173, 106,171, 105,170, 104,169, 104,170, 104,172, 105,171, 105,173, 105,175, 107,174, 106,174, 106,175, 106,177, 107,176, 107,177, 107,187, 112,182, 110,180, 109,179, 108,178, 108,179, 108,181, 109,181, 109,182, 109,185, 111,183, 110,183, 110,184, 110,186, 111,185, 111,186, 111,191, 114,189, 113,188, 112,187, 112,189, 112,190, 113,190, 113,191, 113,194, 115,193, 114,192, 114,193, 114,195, 115,194, 115,195, 115,214, 124,205, 120,201, 118,198, 117,197, 116,197, 116,198, 116,199, 117,199, 117,200, 117,203, 119,202, 118,201, 118,202, 118,204, 119,203, 119,205, 119,210, 122,207, 121,206, 120,206, 120,207, 120,209, 121,208, 121,209, 121,212, 123,211, 122,210, 122,211, 122,213, 123,213, 123,214, 123,223, 128,219, 126,217, 125,215, 124,215, 124,216, 124,218, 125,217, 125,218, 125,221, 127,220, 126,219, 126,221, 126,222, 127,222, 127,223, 127,228, 130,226, 129,225, 128,224, 128,225, 128,227, 129,226, 129,227, 129,230, 131,229, 130,229, 130,230, 130,231, 131,231, 131,232, 131,
db 194, 120,177, 110,168, 105,164, 102,162, 101,161, 100,160, 100,161, 100,163, 101,162, 101,163, 102,166, 103,165, 103,164, 102,165, 103,167, 104,167, 104,168, 104,172, 107,170, 106,169, 105,169, 105,170, 105,171, 106,171, 106,172, 107,175, 108,174, 108,173, 107,174, 108,176, 109,175, 109,176, 109,185, 115,181, 112,179, 111,178, 110,177, 110,178, 110,180, 111,179, 111,181, 112,183, 113,182, 113,182, 112,183, 113,184, 114,184, 114,185, 114,190, 117,188, 116,186, 115,186, 115,187, 115,189, 116,188, 116,189, 117,192, 118,191, 118,190, 117,191, 118,193, 119,192, 119,193, 119,211, 130,203, 125,198, 122,196, 121,195, 120,195, 120,196, 120,197, 121,197, 121,198, 122,200, 123,199, 123,199, 122,200, 123,202, 124,201, 124,202, 124,207, 127,205, 126,204, 125,203, 125,204, 125,206, 126,205, 126,206, 127,209, 128,208, 128,207, 127,209, 128,210, 129,210, 129,211, 129,220, 135,216, 132,213, 131,212, 130,212, 130,213, 130,214, 131,214, 131,215, 132,218, 133,217, 133,216, 132,217, 133,219, 134,218, 134,219, 134,224, 137,222, 136,221, 135,220, 135,221, 135,223, 136,223, 136,224, 137,226, 138,225, 138,225, 137,226, 138,227, 139,227, 139,228, 139,
db 192, 123,176, 111,168, 105,164, 102,162, 101,161, 100,160, 100,161, 101,163, 102,162, 101,163, 102,166, 104,165, 103,164, 103,165, 104,167, 105,166, 104,167, 105,172, 108,170, 107,169, 106,168, 106,169, 106,171, 108,170, 107,171, 108,174, 110,173, 109,172, 109,173, 109,175, 111,174, 110,175, 111,184, 117,180, 114,178, 113,177, 112,176, 112,177, 112,179, 113,178, 113,179, 114,182, 116,181, 115,180, 115,181, 115,183, 116,182, 116,183, 117,188, 120,186, 119,185, 118,184, 117,185, 118,187, 119,186, 119,187, 120,190, 122,189, 121,188, 120,189, 121,191, 122,190, 122,191, 123,208, 135,200, 129,196, 126,194, 124,193, 124,192, 123,193, 124,195, 125,194, 125,195, 126,198, 127,197, 127,196, 126,197, 127,199, 128,198, 128,199, 129,204, 132,202, 130,201, 130,200, 129,201, 130,203, 131,202, 131,203, 131,206, 133,205, 133,204, 132,205, 133,207, 134,206, 134,207, 134,216, 141,212, 138,210, 136,209, 135,208, 135,209, 136,211, 137,210, 137,211, 137,214, 139,213, 138,212, 138,213, 139,215, 140,214, 140,215, 140,220, 144,218, 142,217, 141,216, 141,217, 142,219, 143,218, 142,219, 143,222, 145,221, 144,220, 144,221, 145,223, 146,222, 145,223, 146,
db 189, 126,174, 113,167, 106,163, 103,161, 101,160, 100,160, 100,161, 101,162, 102,162, 102,163, 102,165, 104,164, 104,164, 103,165, 104,166, 105,165, 105,166, 106,171, 109,169, 108,168, 107,167, 107,168, 107,170, 109,169, 108,170, 109,172, 111,171, 110,171, 110,172, 111,173, 112,173, 112,174, 112,182, 119,178, 116,176, 114,175, 114,175, 113,176, 114,177, 115,177, 115,177, 116,180, 118,179, 117,178, 116,179, 117,181, 119,180, 118,181, 119,185, 123,183, 121,183, 120,182, 120,183, 121,184, 122,184, 121,185, 122,187, 124,186, 124,186, 123,187, 124,188, 125,188, 125,189, 126,204, 139,196, 133,193, 129,191, 128,190, 127,189, 126,190, 127,192, 128,191, 128,192, 129,195, 131,194, 130,193, 130,194, 131,195, 132,195, 131,196, 132,200, 136,198, 134,197, 133,197, 133,198, 134,199, 135,199, 135,200, 136,202, 138,201, 137,201, 136,201, 137,203, 138,202, 138,203, 139,211, 146,207, 143,206, 141,205, 140,204, 140,205, 140,207, 142,206, 141,207, 142,209, 144,208, 143,208, 143,209, 144,210, 145,210, 145,211, 145,215, 149,213, 148,212, 147,212, 146,213, 147,214, 148,213, 148,214, 149,217, 151,216, 150,215, 150,216, 150,218, 152,217, 151,218, 152,
db 186, 129,173, 114,166, 107,163, 103,161, 101,160, 100,160, 100,161, 101,162, 102,162, 102,162, 103,164, 105,164, 104,163, 104,164, 105,165, 106,165, 105,166, 106,169, 111,168, 109,167, 108,167, 107,167, 108,169, 110,168, 109,169, 110,171, 112,170, 111,170, 111,171, 112,172, 113,172, 113,172, 114,179, 122,176, 118,174, 116,174, 115,173, 115,174, 116,175, 117,175, 117,176, 117,178, 120,177, 119,176, 118,177, 119,179, 121,178, 120,179, 121,183, 125,181, 123,180, 123,180, 122,181, 123,182, 124,181, 124,182, 125,184, 127,184, 126,183, 126,184, 127,185, 128,185, 128,186, 129,199, 144,193, 136,189, 133,188, 131,187, 130,186, 129,187, 130,188, 132,188, 131,189, 132,191, 135,190, 134,190, 133,191, 134,192, 135,191, 135,192, 136,196, 140,194, 138,193, 137,193, 137,194, 138,195, 139,195, 139,196, 140,198, 142,197, 141,196, 141,197, 141,198, 143,198, 142,199, 143,206, 151,203, 147,201, 146,200, 145,200, 144,200, 145,202, 147,201, 146,202, 147,204, 149,203, 148,203, 148,204, 149,205, 150,205, 150,205, 151,209, 155,208, 153,207, 152,206, 152,207, 153,208, 154,208, 153,209, 154,211, 157,210, 156,210, 155,210, 156,212, 158,211, 157,212, 158,
db 183, 132,171, 116,165, 108,162, 104,161, 102,160, 101,160, 100,161, 101,162, 103,161, 102,162, 103,164, 106,163, 105,163, 104,164, 105,165, 107,164, 106,165, 107,168, 112,167, 110,166, 109,166, 108,166, 109,168, 111,167, 110,168, 111,170, 114,169, 113,169, 112,169, 113,171, 115,170, 114,171, 115,177, 124,174, 120,173, 118,172, 117,172, 116,172, 117,173, 119,173, 118,174, 119,176, 122,175, 121,175, 120,175, 121,176, 123,176, 122,177, 123,180, 128,179, 126,178, 125,177, 124,178, 125,179, 127,179, 126,180, 127,182, 130,181, 129,180, 128,181, 129,182, 131,182, 130,183, 131,195, 148,189, 140,186, 136,184, 134,184, 133,183, 132,184, 133,185, 135,185, 134,186, 135,187, 138,187, 137,186, 136,187, 137,188, 139,188, 138,189, 139,192, 144,190, 142,190, 141,189, 140,190, 141,191, 143,191, 142,191, 143,193, 146,193, 145,192, 144,193, 145,194, 147,194, 146,194, 147,201, 156,198, 152,196, 150,195, 149,195, 148,196, 149,197, 151,197, 150,197, 151,199, 154,198, 153,198, 152,199, 153,200, 155,200, 154,200, 155,204, 160,202, 158,201, 157,201, 156,202, 157,203, 159,202, 158,203, 159,205, 162,204, 161,204, 160,205, 161,206, 163,205, 162,206, 163,
db 179, 134,169, 117,164, 108,162, 104,161, 102,160, 101,160, 100,160, 101,161, 103,161, 102,162, 103,163, 106,163, 105,162, 104,163, 105,164, 107,163, 107,164, 108,167, 112,166, 110,165, 109,165, 109,165, 110,166, 111,166, 111,167, 112,168, 115,167, 114,167, 113,168, 114,169, 116,168, 115,169, 116,174, 125,172, 121,170, 119,170, 118,170, 117,170, 118,171, 120,171, 119,171, 121,173, 123,172, 122,172, 122,173, 123,174, 124,173, 124,174, 125,177, 130,175, 128,175, 126,174, 126,175, 127,176, 129,176, 128,176, 129,178, 132,177, 131,177, 130,177, 131,178, 133,178, 132,179, 133,189, 151,184, 143,181, 138,180, 136,180, 135,179, 135,180, 136,181, 137,181, 137,181, 138,183, 140,182, 139,182, 139,182, 140,183, 142,183, 141,184, 142,186, 147,185, 145,184, 144,184, 143,185, 144,186, 146,185, 145,186, 146,188, 149,187, 148,187, 147,187, 149,188, 150,188, 150,188, 151,194, 160,191, 156,190, 153,189, 152,189, 152,190, 153,191, 154,190, 154,191, 155,192, 158,192, 157,191, 156,192, 157,193, 159,193, 158,193, 159,196, 164,195, 162,194, 161,194, 160,195, 161,195, 163,195, 163,196, 164,197, 166,197, 165,196, 165,197, 166,198, 167,198, 167,198, 168,
db 176, 136,168, 118,164, 109,162, 104,161, 102,160, 101,160, 100,160, 101,161, 103,161, 102,161, 103,163, 106,162, 105,162, 105,162, 106,163, 107,163, 107,163, 108,166, 113,165, 111,164, 110,164, 109,164, 110,165, 112,165, 111,165, 113,167, 115,166, 114,166, 114,166, 115,167, 117,167, 116,167, 117,172, 127,170, 122,169, 120,168, 119,168, 118,168, 119,169, 121,169, 121,169, 122,171, 125,170, 123,170, 123,170, 124,171, 126,171, 125,171, 126,174, 131,173, 129,172, 128,172, 127,172, 129,173, 130,173, 130,173, 131,175, 134,174, 133,174, 132,174, 133,175, 135,175, 134,175, 135,184, 154,180, 145,178, 141,177, 138,176, 137,176, 137,176, 138,177, 139,177, 139,177, 140,179, 143,178, 142,178, 141,178, 142,179, 144,179, 143,179, 145,182, 150,181, 147,180, 146,180, 146,180, 147,181, 149,181, 148,181, 149,183, 152,182, 151,182, 150,182, 151,183, 153,183, 153,183, 154,188, 163,186, 159,185, 157,184, 155,184, 155,184, 156,185, 158,185, 157,185, 158,187, 161,186, 160,186, 159,186, 161,187, 162,187, 162,187, 163,190, 168,189, 166,188, 165,188, 164,188, 165,189, 167,189, 166,189, 167,191, 170,190, 169,190, 169,190, 170,191, 171,191, 171,191, 172,
db 172, 138,166, 119,163, 109,161, 104,160, 102,160, 101,160, 100,160, 101,161, 103,160, 102,161, 104,162, 107,161, 105,161, 105,162, 106,162, 108,162, 107,162, 108,164, 114,163, 111,163, 110,163, 110,163, 111,164, 113,163, 112,164, 113,165, 116,164, 115,164, 114,165, 116,165, 117,165, 117,165, 118,169, 128,167, 123,166, 121,166, 120,166, 119,166, 120,167, 122,166, 121,167, 123,168, 126,167, 124,167, 124,168, 125,168, 127,168, 126,168, 127,170, 133,169, 130,169, 129,169, 129,169, 130,170, 132,169, 131,170, 132,171, 135,170, 134,170, 133,171, 135,171, 136,171, 136,171, 137,178, 157,175, 147,173, 142,172, 140,172, 139,172, 138,172, 139,173, 141,172, 140,173, 142,174, 145,173, 143,173, 143,174, 144,174, 146,174, 145,174, 146,176, 152,175, 149,175, 148,175, 148,175, 149,176, 151,175, 150,176, 151,177, 154,176, 153,176, 152,177, 154,177, 155,177, 155,177, 156,181, 166,179, 161,178, 159,178, 158,178, 157,178, 158,179, 160,178, 159,179, 161,180, 164,179, 162,179, 162,180, 163,180, 165,180, 164,180, 165,182, 171,181, 168,181, 167,181, 167,181, 168,182, 170,181, 169,182, 170,183, 173,182, 172,182, 171,183, 173,183, 174,183, 174,183, 175,
db 168, 139,164, 119,162, 109,161, 104,160, 102,160, 101,160, 100,160, 101,160, 103,160, 103,160, 104,161, 107,161, 106,161, 105,161, 106,161, 108,161, 107,161, 109,163, 114,162, 112,162, 110,162, 110,162, 111,162, 113,162, 112,162, 114,163, 117,163, 115,163, 115,163, 116,163, 118,163, 117,163, 118,166, 129,165, 124,164, 121,164, 120,164, 120,164, 121,164, 123,164, 122,164, 123,165, 126,165, 125,165, 124,165, 126,165, 128,165, 127,165, 128,167, 134,166, 131,166, 130,166, 129,166, 131,166, 132,166, 132,166, 133,167, 136,167, 135,167, 134,167, 135,167, 137,167, 137,167, 138,172, 158,170, 148,169, 143,168, 141,168, 140,168, 139,168, 140,168, 142,168, 142,168, 143,169, 146,169, 145,169, 144,169, 145,169, 147,169, 146,169, 148,171, 153,170, 151,170, 149,170, 149,170, 150,170, 152,170, 151,170, 153,171, 156,171, 154,171, 154,171, 155,171, 157,171, 156,171, 157,174, 168,173, 163,172, 160,172, 159,172, 159,172, 160,172, 162,172, 161,172, 162,173, 165,173, 164,173, 163,173, 165,173, 167,173, 166,173, 167,175, 173,174, 170,174, 169,174, 168,174, 170,174, 171,174, 171,174, 172,175, 175,175, 174,175, 173,175, 174,175, 176,175, 176,175, 177,
db 164, 139,162, 119,161, 109,160, 104,160, 102,160, 101,160, 100,160, 101,160, 103,160, 103,160, 104,160, 107,160, 106,160, 105,160, 106,160, 108,160, 108,160, 109,161, 114,161, 112,161, 111,161, 110,161, 111,161, 113,161, 112,161, 114,161, 117,161, 116,161, 115,161, 116,161, 118,161, 117,161, 119,163, 129,162, 124,162, 122,162, 120,162, 120,162, 121,162, 123,162, 122,162, 124,162, 127,162, 125,162, 125,162, 126,162, 128,162, 127,162, 129,163, 134,163, 132,163, 130,163, 130,163, 131,163, 133,163, 132,163, 133,163, 137,163, 135,163, 135,163, 136,163, 138,163, 137,163, 138,166, 159,165, 149,164, 144,164, 141,164, 140,164, 140,164, 141,164, 143,164, 142,164, 143,164, 146,164, 145,164, 145,164, 146,164, 148,164, 147,164, 148,165, 154,165, 151,165, 150,165, 149,165, 151,165, 153,165, 152,165, 153,165, 156,165, 155,165, 154,165, 156,165, 158,165, 157,165, 158,167, 169,166, 164,166, 161,166, 160,166, 159,166, 161,166, 162,166, 162,166, 163,166, 166,166, 165,166, 164,166, 166,166, 167,166, 167,166, 168,167, 174,167, 171,167, 170,167, 169,167, 170,167, 172,167, 172,167, 173,167, 176,167, 175,167, 174,167, 175,167, 177,167, 177,167, 178,
db 160, 139,160, 119,160, 109,160, 104,160, 102,160, 101,160, 100,160, 101,160, 103,160, 103,160, 104,160, 107,160, 106,160, 105,160, 106,160, 108,160, 108,160, 109,160, 114,160, 112,160, 111,160, 110,160, 111,160, 113,160, 112,160, 114,160, 117,160, 116,160, 115,160, 116,160, 118,160, 117,160, 119,160, 129,160, 124,160, 122,160, 120,160, 120,160, 121,160, 123,160, 122,160, 124,160, 127,160, 125,160, 125,160, 126,160, 128,160, 127,160, 129,160, 134,160, 132,160, 130,160, 130,160, 131,160, 133,160, 132,160, 133,160, 137,160, 135,160, 135,160, 136,160, 138,160, 137,160, 138,160, 159,160, 149,160, 144,160, 141,160, 140,160, 140,160, 141,160, 143,160, 142,160, 143,160, 146,160, 145,160, 145,160, 146,160, 148,160, 147,160, 148,160, 154,160, 151,160, 150,160, 149,160, 151,160, 153,160, 152,160, 153,160, 156,160, 155,160, 154,160, 156,160, 158,160, 157,160, 158,160, 169,160, 164,160, 161,160, 160,160, 159,160, 161,160, 162,160, 162,160, 163,160, 166,160, 165,160, 164,160, 166,160, 167,160, 167,160, 168,160, 174,160, 171,160, 170,160, 169,160, 170,160, 172,160, 172,160, 173,160, 176,160, 175,160, 174,160, 175,160, 177,160, 177,160, 178,
db 155, 139,157, 119,158, 109,159, 104,159, 102,159, 101,159, 100,159, 101,159, 103,159, 103,159, 104,159, 107,159, 106,159, 105,159, 106,159, 108,159, 108,158, 109,158, 114,158, 112,158, 111,158, 110,158, 111,158, 113,158, 112,158, 114,158, 117,158, 116,158, 115,158, 116,157, 118,157, 117,157, 119,156, 129,157, 124,157, 122,157, 120,157, 120,157, 121,157, 123,157, 122,157, 124,156, 127,157, 125,157, 125,156, 126,156, 128,156, 127,156, 129,156, 134,156, 132,156, 130,156, 130,156, 131,156, 133,156, 132,156, 133,155, 137,155, 135,155, 135,155, 136,155, 138,155, 137,155, 138,153, 159,154, 149,154, 144,155, 141,155, 140,155, 140,155, 141,155, 143,155, 142,155, 143,154, 146,154, 145,154, 145,154, 146,154, 148,154, 147,154, 148,153, 154,154, 151,154, 150,154, 149,154, 151,153, 153,154, 152,153, 153,153, 156,153, 155,153, 154,153, 156,153, 158,153, 157,153, 158,152, 169,152, 164,152, 161,153, 160,153, 159,153, 161,152, 162,152, 162,152, 163,152, 166,152, 165,152, 164,152, 166,152, 167,152, 167,152, 168,151, 174,151, 171,151, 170,152, 169,151, 170,151, 172,151, 172,151, 173,151, 176,151, 175,151, 174,151, 175,151, 177,151, 177,151, 178,
db 151, 139,155, 119,157, 109,158, 104,159, 102,159, 101,159, 100,159, 101,159, 103,159, 103,159, 104,158, 107,158, 106,158, 105,158, 106,158, 108,158, 107,158, 109,156, 114,157, 112,157, 110,157, 110,157, 111,157, 113,157, 112,156, 114,156, 117,156, 115,156, 115,156, 116,156, 118,156, 117,155, 118,153, 129,154, 124,155, 121,155, 120,155, 120,155, 121,154, 123,155, 122,154, 123,154, 126,154, 125,154, 124,154, 126,153, 128,154, 127,153, 128,152, 134,153, 131,153, 130,153, 129,153, 131,152, 132,152, 132,152, 133,152, 136,152, 135,152, 134,152, 135,151, 137,151, 137,151, 138,147, 158,149, 148,150, 143,150, 141,151, 140,151, 139,151, 140,150, 142,150, 142,150, 143,149, 146,150, 145,150, 144,150, 145,149, 147,149, 146,149, 148,148, 153,148, 151,149, 149,149, 149,148, 150,148, 152,148, 151,148, 153,147, 156,148, 154,148, 154,147, 155,147, 157,147, 156,147, 157,145, 168,146, 163,146, 160,146, 159,147, 159,146, 160,146, 162,146, 161,146, 162,145, 165,145, 164,146, 163,145, 165,145, 167,145, 166,145, 167,144, 173,144, 170,144, 169,144, 168,144, 170,144, 171,144, 171,144, 172,143, 175,143, 174,143, 173,143, 174,143, 176,143, 176,143, 177,
db 147, 138,153, 119,156, 109,158, 104,159, 102,159, 101,159, 100,159, 101,158, 103,159, 102,158, 104,157, 107,158, 105,158, 105,157, 106,157, 108,157, 107,157, 108,155, 114,156, 111,156, 110,156, 110,156, 111,155, 113,155, 112,155, 113,154, 116,154, 115,155, 114,154, 116,154, 117,154, 117,153, 118,150, 128,152, 123,152, 121,153, 120,153, 119,153, 120,152, 122,152, 121,152, 123,151, 126,151, 124,151, 124,151, 125,151, 127,151, 126,150, 127,149, 133,149, 130,150, 129,150, 129,150, 130,149, 132,149, 131,149, 132,148, 135,148, 134,148, 133,148, 135,147, 136,148, 136,147, 137,141, 157,144, 147,145, 142,146, 140,147, 139,147, 138,146, 139,146, 141,146, 140,146, 142,145, 145,145, 143,145, 143,145, 144,144, 146,144, 145,144, 146,142, 152,143, 149,143, 148,144, 148,143, 149,143, 151,143, 150,143, 151,142, 154,142, 153,142, 152,142, 154,141, 155,141, 155,141, 156,138, 166,139, 161,140, 159,140, 158,141, 157,140, 158,140, 160,140, 159,139, 161,138, 164,139, 162,139, 162,139, 163,138, 165,138, 164,138, 165,136, 171,137, 168,137, 167,137, 167,137, 168,136, 170,137, 169,136, 170,135, 173,136, 172,136, 171,135, 173,135, 174,135, 174,135, 175,
db 143, 136,151, 118,155, 109,157, 104,158, 102,159, 101,159, 100,159, 101,158, 103,158, 102,158, 103,156, 106,157, 105,157, 105,157, 106,156, 107,156, 107,156, 108,153, 113,154, 111,155, 110,155, 109,155, 110,154, 112,154, 111,154, 113,152, 115,153, 114,153, 114,153, 115,152, 117,152, 116,152, 117,147, 127,149, 122,150, 120,151, 119,151, 118,150, 119,150, 121,150, 121,149, 122,148, 125,149, 123,149, 123,148, 124,148, 126,148, 125,147, 126,145, 131,146, 129,147, 128,147, 127,146, 129,146, 130,146, 130,145, 131,144, 134,145, 133,145, 132,144, 133,144, 135,144, 134,143, 135,135, 154,139, 145,141, 141,142, 138,142, 137,143, 137,142, 138,141, 139,142, 139,141, 140,140, 143,140, 142,141, 141,140, 142,139, 144,140, 143,139, 145,137, 150,138, 147,138, 146,139, 146,138, 147,137, 149,138, 148,137, 149,136, 152,136, 151,137, 150,136, 151,135, 153,136, 153,135, 154,131, 163,133, 159,134, 157,134, 155,134, 155,134, 156,133, 158,133, 157,133, 158,132, 161,132, 160,132, 159,132, 161,131, 162,131, 162,131, 163,129, 168,130, 166,130, 165,130, 164,130, 165,129, 167,129, 166,129, 167,128, 170,128, 169,128, 169,128, 170,127, 171,127, 171,127, 172,
db 139, 134,149, 117,154, 108,157, 104,158, 102,159, 101,159, 100,159, 101,158, 103,158, 102,157, 103,156, 106,156, 105,157, 104,156, 105,155, 107,155, 107,155, 108,152, 112,153, 110,154, 109,154, 109,153, 110,152, 111,153, 111,152, 112,151, 115,151, 114,151, 113,151, 114,150, 116,150, 115,150, 116,144, 125,147, 121,148, 119,149, 118,149, 117,148, 118,147, 120,148, 119,147, 121,145, 123,146, 122,146, 122,146, 123,145, 124,145, 124,144, 125,142, 130,143, 128,143, 126,144, 126,143, 127,142, 129,143, 128,142, 129,140, 132,141, 131,141, 130,141, 131,140, 133,140, 132,139, 133,129, 151,134, 143,136, 138,138, 136,138, 135,139, 135,138, 136,137, 137,137, 137,137, 138,135, 140,136, 139,136, 139,135, 140,135, 142,135, 141,134, 142,131, 147,133, 145,133, 144,134, 143,133, 144,132, 146,132, 145,132, 146,130, 149,131, 148,131, 147,130, 149,129, 150,130, 150,129, 151,124, 160,126, 156,127, 153,128, 152,128, 152,128, 153,127, 154,127, 154,127, 155,125, 158,126, 157,126, 156,125, 157,124, 159,125, 158,124, 159,121, 164,122, 162,123, 161,123, 160,123, 161,122, 163,122, 163,121, 164,120, 166,120, 165,121, 165,120, 166,119, 167,119, 167,119, 168,
db 136, 132,148, 116,154, 108,157, 104,158, 102,159, 101,159, 100,158, 101,157, 103,158, 102,157, 103,155, 106,156, 105,156, 104,155, 105,154, 107,155, 106,154, 107,151, 112,152, 110,153, 109,153, 108,152, 109,151, 111,152, 110,151, 111,149, 114,150, 113,150, 112,149, 113,148, 115,149, 114,148, 115,142, 124,145, 120,146, 118,147, 117,147, 116,146, 117,145, 119,146, 118,145, 119,143, 122,144, 121,144, 120,143, 121,142, 123,143, 122,142, 123,139, 128,140, 126,141, 125,141, 124,140, 125,139, 127,140, 126,139, 127,137, 130,138, 129,138, 128,137, 129,136, 131,137, 130,136, 131,124, 148,130, 140,133, 136,134, 134,135, 133,135, 132,134, 133,133, 135,134, 134,133, 135,131, 138,132, 137,132, 136,131, 137,130, 139,131, 138,130, 139,127, 144,128, 142,129, 141,129, 140,128, 141,127, 143,128, 142,127, 143,125, 146,126, 145,126, 144,125, 145,124, 147,125, 146,124, 147,118, 156,121, 152,122, 150,123, 149,123, 148,122, 149,121, 151,122, 150,121, 151,119, 154,120, 153,120, 152,119, 153,118, 155,119, 154,118, 155,115, 160,116, 158,117, 157,117, 156,116, 157,115, 159,116, 158,115, 159,113, 162,114, 161,114, 160,113, 161,112, 163,113, 162,112, 163,
db 133, 129,146, 114,153, 107,156, 103,158, 101,159, 100,159, 100,158, 101,157, 102,157, 102,157, 103,154, 105,155, 104,156, 104,155, 105,154, 106,154, 105,153, 106,149, 111,151, 109,152, 108,152, 107,151, 108,150, 110,151, 109,150, 110,148, 112,149, 111,149, 111,148, 112,147, 113,147, 113,146, 114,139, 122,143, 118,144, 116,145, 115,146, 115,145, 116,143, 117,144, 117,143, 117,141, 120,142, 119,142, 118,141, 119,140, 121,141, 120,140, 121,136, 125,138, 123,138, 123,139, 122,138, 123,137, 124,137, 124,136, 125,134, 127,135, 126,135, 126,135, 127,133, 128,134, 128,133, 129,119, 144,126, 136,129, 133,131, 131,132, 130,132, 129,131, 130,130, 132,130, 131,130, 132,127, 135,128, 134,129, 133,128, 134,127, 135,127, 135,126, 136,122, 140,124, 138,125, 137,125, 137,124, 138,123, 139,124, 139,123, 140,121, 142,122, 141,122, 141,121, 141,120, 143,120, 142,119, 143,112, 151,116, 147,117, 146,118, 145,119, 144,118, 145,116, 147,117, 146,116, 147,114, 149,115, 148,115, 148,114, 149,113, 150,114, 150,113, 151,109, 155,111, 153,111, 152,112, 152,111, 153,110, 154,110, 153,109, 154,107, 157,108, 156,108, 155,108, 156,106, 158,107, 157,106, 158,
db 130, 126,145, 113,152, 106,156, 103,158, 101,159, 100,159, 100,158, 101,157, 102,157, 102,156, 102,154, 104,155, 104,155, 103,154, 104,153, 105,153, 105,152, 106,148, 109,150, 108,151, 107,152, 107,151, 107,149, 109,150, 108,149, 109,146, 111,147, 110,148, 110,147, 111,145, 112,146, 112,145, 112,137, 119,141, 116,143, 114,144, 114,144, 113,143, 114,142, 115,142, 115,141, 116,139, 118,140, 117,140, 116,139, 117,138, 119,138, 118,137, 119,133, 123,135, 121,136, 120,137, 120,136, 121,134, 122,135, 121,134, 122,131, 124,132, 124,133, 123,132, 124,130, 125,131, 125,130, 126,115, 139,122, 133,126, 129,128, 128,129, 127,129, 126,128, 127,127, 128,127, 128,126, 129,124, 131,125, 130,125, 130,124, 131,123, 132,123, 131,122, 132,118, 136,120, 134,121, 133,122, 133,121, 134,119, 135,120, 135,119, 136,116, 138,117, 137,118, 136,117, 137,115, 138,116, 138,115, 139,107, 146,111, 143,113, 141,114, 140,114, 140,113, 140,112, 142,112, 141,111, 142,109, 144,110, 143,110, 143,109, 144,108, 145,108, 145,107, 145,103, 149,105, 148,106, 147,107, 146,106, 147,104, 148,105, 148,104, 149,101, 151,102, 150,103, 150,102, 150,100, 152,101, 151,100, 152,
db 127, 123,143, 111,151, 105,155, 102,157, 101,158, 100,159, 100,158, 101,156, 102,157, 101,156, 102,153, 104,154, 103,155, 103,154, 104,152, 105,153, 104,152, 105,147, 108,149, 107,150, 106,151, 106,150, 106,148, 108,149, 107,148, 108,145, 110,146, 109,147, 109,146, 109,144, 111,145, 110,144, 111,135, 117,139, 114,141, 113,142, 112,143, 112,142, 112,140, 113,141, 113,140, 114,137, 116,138, 115,139, 115,138, 115,136, 116,137, 116,136, 117,131, 120,133, 119,134, 118,135, 117,134, 118,132, 119,133, 119,132, 120,129, 122,130, 121,131, 120,130, 121,128, 122,129, 122,128, 123,111, 135,119, 129,123, 126,125, 124,126, 124,126, 123,125, 124,124, 125,124, 125,123, 126,121, 127,122, 127,122, 126,121, 127,120, 128,120, 128,119, 129,115, 132,117, 130,118, 130,118, 129,117, 130,116, 131,116, 131,115, 131,113, 133,114, 133,114, 132,113, 133,112, 134,112, 134,111, 134,103, 141,107, 138,109, 136,110, 135,110, 135,109, 136,108, 137,108, 137,107, 137,105, 139,106, 138,106, 138,105, 139,104, 140,104, 140,103, 140,99, 144,101, 142,102, 141,102, 141,101, 142,100, 143,100, 142,99, 143,97, 145,98, 144,98, 144,97, 145,96, 146,96, 145,95, 146,
db 125, 120,142, 110,151, 105,155, 102,157, 101,158, 100,159, 100,158, 100,156, 101,157, 101,156, 102,153, 103,154, 103,155, 102,153, 103,152, 104,152, 104,151, 104,146, 107,149, 106,150, 105,150, 105,149, 105,147, 106,148, 106,147, 107,144, 108,145, 108,146, 107,145, 108,143, 109,144, 109,143, 109,133, 115,138, 112,140, 111,141, 110,141, 110,140, 110,139, 111,139, 111,138, 112,135, 113,137, 113,137, 112,136, 113,134, 114,135, 114,134, 114,129, 117,131, 116,132, 115,133, 115,132, 115,130, 116,131, 116,129, 117,127, 118,128, 118,128, 117,127, 118,126, 119,126, 119,125, 119,107, 130,116, 125,120, 122,122, 121,123, 120,124, 120,123, 120,121, 121,122, 121,121, 122,118, 123,119, 123,120, 122,118, 123,117, 124,117, 124,116, 124,111, 127,114, 126,115, 125,115, 125,114, 125,112, 126,113, 126,112, 127,109, 128,110, 128,111, 127,110, 128,108, 129,109, 129,108, 129,98, 135,103, 132,105, 131,106, 130,106, 130,105, 130,104, 131,104, 131,103, 132,100, 133,102, 133,102, 132,101, 133,99, 134,100, 134,99, 134,94, 137,96, 136,97, 135,98, 135,97, 135,95, 136,96, 136,94, 137,92, 138,93, 138,93, 137,92, 138,91, 139,91, 139,90, 139,
db 123, 116,141, 108,150, 104,155, 102,157, 101,158, 100,159, 100,158, 100,156, 101,157, 101,155, 101,153, 103,154, 102,154, 102,153, 102,151, 103,152, 103,151, 103,146, 106,148, 105,149, 104,150, 104,149, 104,147, 105,147, 105,146, 105,143, 107,144, 106,145, 106,144, 106,142, 107,143, 107,142, 107,132, 112,136, 110,139, 109,140, 108,140, 108,139, 108,138, 109,138, 109,137, 109,134, 111,135, 110,136, 110,135, 110,133, 111,133, 111,132, 111,127, 114,129, 113,131, 112,131, 112,130, 112,128, 113,129, 113,128, 113,125, 115,126, 114,127, 114,125, 114,124, 115,124, 115,123, 115,104, 124,113, 120,118, 118,120, 117,121, 116,122, 116,121, 116,119, 117,120, 117,118, 117,116, 119,117, 118,117, 118,116, 118,114, 119,115, 119,114, 119,109, 122,111, 121,112, 120,113, 120,112, 120,110, 121,110, 121,109, 121,106, 123,107, 122,108, 122,107, 122,105, 123,106, 123,105, 123,95, 128,99, 126,102, 125,103, 124,103, 124,102, 124,101, 125,101, 125,100, 125,97, 127,98, 126,99, 126,98, 126,96, 127,96, 127,95, 127,90, 130,92, 129,94, 128,94, 128,93, 128,91, 129,92, 129,91, 129,88, 131,89, 130,90, 130,88, 130,87, 131,87, 131,86, 131,
db 121, 112,140, 106,150, 103,155, 101,157, 100,158, 100,159, 100,158, 100,156, 101,156, 100,155, 101,152, 102,153, 101,154, 101,153, 102,151, 102,152, 102,150, 102,145, 104,147, 103,149, 103,149, 103,148, 103,146, 104,147, 103,146, 104,143, 105,144, 104,144, 104,143, 105,141, 105,142, 105,141, 105,131, 109,135, 107,138, 106,139, 106,140, 106,138, 106,137, 107,137, 106,136, 107,133, 108,134, 107,135, 107,134, 108,132, 108,132, 108,131, 108,126, 110,128, 109,129, 109,130, 109,129, 109,127, 110,128, 109,126, 110,123, 111,125, 110,125, 110,124, 111,122, 111,123, 111,122, 111,102, 118,111, 115,116, 113,119, 112,120, 112,120, 112,119, 112,117, 113,118, 112,117, 113,114, 114,115, 113,116, 113,114, 114,113, 114,113, 114,112, 114,107, 116,109, 115,110, 115,111, 115,110, 115,108, 116,108, 115,107, 116,104, 117,105, 116,106, 116,105, 117,103, 117,104, 117,102, 117,92, 121,97, 119,99, 118,101, 118,101, 118,100, 118,98, 119,99, 118,98, 119,95, 120,96, 119,96, 119,95, 120,93, 120,94, 120,93, 120,87, 122,90, 121,91, 121,92, 121,90, 121,89, 122,89, 121,88, 122,85, 123,86, 122,87, 122,86, 123,84, 123,84, 123,83, 123,
db 120, 108,140, 104,150, 102,155, 101,157, 100,158, 100,159, 100,158, 100,156, 100,156, 100,155, 100,152, 101,153, 101,154, 101,153, 101,151, 101,151, 101,150, 101,145, 103,147, 102,148, 102,149, 102,148, 102,146, 102,147, 102,145, 102,142, 103,143, 103,144, 103,143, 103,141, 103,142, 103,140, 103,130, 106,135, 105,137, 104,139, 104,139, 104,138, 104,136, 104,137, 104,135, 104,132, 105,134, 105,134, 105,133, 105,131, 105,132, 105,130, 105,125, 107,127, 106,129, 106,129, 106,128, 106,126, 106,127, 106,126, 106,122, 107,124, 107,124, 107,123, 107,121, 107,122, 107,121, 107,100, 112,110, 110,115, 109,118, 108,119, 108,119, 108,118, 108,116, 108,117, 108,116, 108,113, 109,114, 109,114, 109,113, 109,111, 109,112, 109,111, 109,105, 111,108, 110,109, 110,110, 110,108, 110,106, 110,107, 110,106, 110,103, 111,104, 111,105, 111,103, 111,101, 111,102, 111,101, 111,90, 114,95, 113,98, 112,99, 112,100, 112,98, 112,97, 112,97, 112,96, 112,93, 113,94, 113,95, 113,93, 113,92, 113,92, 113,91, 113,85, 115,88, 114,89, 114,90, 114,89, 114,87, 114,87, 114,86, 114,83, 115,84, 115,85, 115,84, 115,82, 115,82, 115,81, 115,
db 120, 104,140, 102,150, 101,155, 100,157, 100,158, 100,159, 100,158, 100,156, 100,156, 100,155, 100,152, 100,153, 100,154, 100,153, 100,151, 100,151, 100,150, 100,145, 101,147, 101,148, 101,149, 101,148, 101,146, 101,146, 101,145, 101,142, 101,143, 101,144, 101,143, 101,141, 101,141, 101,140, 101,130, 103,135, 102,137, 102,138, 102,139, 102,138, 102,136, 102,136, 102,135, 102,132, 102,133, 102,134, 102,133, 102,131, 102,131, 102,130, 102,125, 103,127, 103,128, 103,129, 103,128, 103,126, 103,126, 103,125, 103,122, 103,123, 103,124, 103,123, 103,121, 103,121, 103,120, 103,100, 106,110, 105,115, 104,117, 104,118, 104,119, 104,118, 104,116, 104,116, 104,115, 104,112, 104,113, 104,114, 104,113, 104,111, 104,111, 104,110, 104,105, 105,107, 105,108, 105,109, 105,108, 105,106, 105,106, 105,105, 105,102, 105,103, 105,104, 105,103, 105,101, 105,101, 105,100, 105,90, 107,95, 106,97, 106,98, 106,99, 106,98, 106,96, 106,96, 106,95, 106,92, 106,93, 106,94, 106,93, 106,91, 106,91, 106,90, 106,85, 107,87, 107,88, 107,89, 107,88, 107,86, 107,86, 107,85, 107,82, 107,83, 107,84, 107,83, 107,81, 107,81, 107,80, 107,
db 120, 100,140, 100,150, 100,155, 100,157, 100,158, 100,159, 100,158, 100,156, 100,156, 100,155, 100,152, 100,153, 100,154, 100,153, 100,151, 100,151, 100,150, 100,145, 100,147, 100,148, 100,149, 100,148, 100,146, 100,146, 100,145, 100,142, 100,143, 100,144, 100,143, 100,141, 100,141, 100,140, 100,130, 100,135, 100,137, 100,138, 100,139, 100,138, 100,136, 100,136, 100,135, 100,132, 100,133, 100,134, 100,133, 100,131, 100,131, 100,130, 100,125, 100,127, 100,128, 100,129, 100,128, 100,126, 100,126, 100,125, 100,122, 100,123, 100,124, 100,123, 100,121, 100,121, 100,120, 100,100, 100,110, 100,115, 100,117, 100,118, 100,119, 100,118, 100,116, 100,116, 100,115, 100,112, 100,113, 100,114, 100,113, 100,111, 100,111, 100,110, 100,105, 100,107, 100,108, 100,109, 100,108, 100,106, 100,106, 100,105, 100,102, 100,103, 100,104, 100,103, 100,101, 100,101, 100,100, 100,90, 100,95, 100,97, 100,98, 100,99, 100,98, 100,96, 100,96, 100,95, 100,92, 100,93, 100,94, 100,93, 100,91, 100,91, 100,90, 100,85, 100,87, 100,88, 100,89, 100,88, 100,86, 100,86, 100,85, 100,82, 100,83, 100,84, 100,83, 100,81, 100,81, 100,80, 100,
db 120, 95,140, 97,150, 98,155, 99,157, 99,158, 99,159, 99,158, 99,156, 99,156, 99,155, 99,152, 99,153, 99,154, 99,153, 99,151, 99,151, 99,150, 98,145, 98,147, 98,148, 98,149, 98,148, 98,146, 98,146, 98,145, 98,142, 98,143, 98,144, 98,143, 98,141, 97,141, 97,140, 97,130, 96,135, 97,137, 97,138, 97,139, 97,138, 97,136, 97,136, 97,135, 97,132, 96,133, 97,134, 97,133, 96,131, 96,131, 96,130, 96,125, 96,127, 96,128, 96,129, 96,128, 96,126, 96,126, 96,125, 96,122, 95,123, 95,124, 95,123, 95,121, 95,121, 95,120, 95,100, 93,110, 94,115, 94,117, 95,118, 95,119, 95,118, 95,116, 95,116, 95,115, 95,112, 94,113, 94,114, 94,113, 94,111, 94,111, 94,110, 94,105, 93,107, 94,108, 94,109, 94,108, 94,106, 93,106, 94,105, 93,102, 93,103, 93,104, 93,103, 93,101, 93,101, 93,100, 93,90, 92,95, 92,97, 92,98, 93,99, 93,98, 93,96, 92,96, 92,95, 92,92, 92,93, 92,94, 92,93, 92,91, 92,91, 92,90, 92,85, 91,87, 91,88, 91,89, 92,88, 91,86, 91,86, 91,85, 91,82, 91,83, 91,84, 91,83, 91,81, 91,81, 91,80, 91,
db 120, 91,140, 95,150, 97,155, 98,157, 99,158, 99,159, 99,158, 99,156, 99,156, 99,155, 99,152, 98,153, 98,154, 98,153, 98,151, 98,151, 98,150, 98,145, 96,147, 97,148, 97,149, 97,148, 97,146, 97,147, 97,145, 96,142, 96,143, 96,144, 96,143, 96,141, 96,142, 96,140, 95,130, 93,135, 94,137, 95,139, 95,139, 95,138, 95,136, 94,137, 95,135, 94,132, 94,134, 94,134, 94,133, 94,131, 93,132, 94,130, 93,125, 92,127, 93,129, 93,129, 93,128, 93,126, 92,127, 92,126, 92,122, 92,124, 92,124, 92,123, 92,121, 91,122, 91,121, 91,100, 87,110, 89,115, 90,118, 90,119, 91,119, 91,118, 91,116, 90,117, 90,116, 90,113, 89,114, 90,114, 90,113, 90,111, 89,112, 89,111, 89,105, 88,108, 88,109, 89,110, 89,108, 88,106, 88,107, 88,106, 88,103, 87,104, 88,105, 88,103, 87,101, 87,102, 87,101, 87,90, 85,95, 86,98, 86,99, 86,100, 87,98, 86,97, 86,97, 86,96, 86,93, 85,94, 85,95, 86,93, 85,92, 85,92, 85,91, 85,85, 84,88, 84,89, 84,90, 84,89, 84,87, 84,87, 84,86, 84,83, 83,84, 83,85, 83,84, 83,82, 83,82, 83,81, 83,
db 121, 87,140, 93,150, 96,155, 98,157, 99,158, 99,159, 99,158, 99,156, 98,156, 99,155, 98,152, 97,153, 98,154, 98,153, 97,151, 97,152, 97,150, 97,145, 95,147, 96,149, 96,149, 96,148, 96,146, 95,147, 95,146, 95,143, 94,144, 94,144, 95,143, 94,141, 94,142, 94,141, 93,131, 90,135, 92,138, 92,139, 93,140, 93,138, 93,137, 92,137, 92,136, 92,133, 91,134, 91,135, 91,134, 91,132, 91,132, 91,131, 90,126, 89,128, 89,129, 90,130, 90,129, 90,127, 89,128, 89,126, 89,123, 88,125, 88,125, 88,124, 88,122, 87,123, 88,122, 87,102, 81,111, 84,116, 85,119, 86,120, 87,120, 87,119, 86,117, 86,118, 86,117, 86,114, 85,115, 85,116, 85,114, 85,113, 84,113, 84,112, 84,107, 82,109, 83,110, 83,111, 84,110, 83,108, 83,108, 83,107, 83,104, 82,105, 82,106, 82,105, 82,103, 81,104, 81,102, 81,92, 78,97, 79,99, 80,101, 80,101, 81,100, 80,98, 80,99, 80,98, 79,95, 78,96, 79,96, 79,95, 79,93, 78,94, 78,93, 78,87, 76,90, 77,91, 77,92, 77,90, 77,89, 76,89, 77,88, 76,85, 75,86, 76,87, 76,86, 75,84, 75,84, 75,83, 75,
db 123, 83,141, 91,150, 95,155, 97,157, 98,158, 99,159, 99,158, 99,156, 98,157, 98,155, 98,153, 96,154, 97,154, 97,153, 97,151, 96,152, 96,151, 96,146, 93,148, 94,149, 95,150, 95,149, 95,147, 94,147, 94,146, 94,143, 92,144, 93,145, 93,144, 93,142, 92,143, 92,142, 92,132, 87,136, 89,139, 90,140, 91,140, 91,139, 90,138, 90,138, 90,137, 89,134, 88,135, 89,136, 89,135, 88,133, 88,133, 88,132, 87,127, 85,129, 86,131, 87,131, 87,130, 86,128, 86,129, 86,128, 85,125, 84,126, 85,127, 85,125, 84,124, 84,124, 84,123, 83,104, 75,113, 79,118, 81,120, 82,121, 82,122, 83,121, 82,119, 81,120, 82,118, 81,116, 80,117, 80,117, 81,116, 80,114, 79,115, 80,114, 79,109, 77,111, 78,112, 78,113, 79,112, 78,110, 77,110, 78,109, 77,106, 76,107, 76,108, 77,107, 76,105, 75,106, 76,105, 75,95, 71,99, 73,102, 74,103, 74,103, 74,102, 74,101, 73,101, 73,100, 73,97, 72,98, 72,99, 72,98, 72,96, 71,96, 71,95, 71,90, 69,92, 70,94, 70,94, 70,93, 70,91, 69,92, 69,91, 69,88, 68,89, 68,90, 68,88, 68,87, 67,87, 67,86, 67,
db 125, 80,142, 90,151, 95,155, 97,157, 98,158, 99,159, 99,158, 99,156, 98,157, 98,156, 97,153, 96,154, 96,155, 97,153, 96,152, 95,152, 95,151, 95,146, 92,149, 93,150, 94,150, 94,149, 94,147, 93,148, 93,147, 92,144, 91,145, 91,146, 92,145, 91,143, 90,144, 90,143, 90,133, 85,138, 87,140, 88,141, 89,141, 89,140, 89,139, 88,139, 88,138, 87,135, 86,137, 86,137, 87,136, 86,134, 85,135, 85,134, 85,129, 82,131, 83,132, 84,133, 84,132, 84,130, 83,131, 83,129, 82,127, 81,128, 81,128, 82,127, 81,126, 80,126, 80,125, 80,107, 70,116, 75,120, 77,122, 78,123, 79,124, 79,123, 79,121, 78,122, 78,121, 77,118, 76,119, 76,120, 77,118, 76,117, 75,117, 75,116, 75,111, 72,114, 73,115, 74,115, 74,114, 74,112, 73,113, 73,112, 72,109, 71,110, 71,111, 72,110, 71,108, 70,109, 70,108, 70,98, 65,103, 67,105, 68,106, 69,106, 69,105, 69,104, 68,104, 68,103, 67,100, 66,102, 66,102, 67,101, 66,99, 65,100, 65,99, 65,94, 62,96, 63,97, 64,98, 64,97, 64,95, 63,96, 63,94, 62,92, 61,93, 61,93, 62,92, 61,91, 60,91, 60,90, 60,
db 127, 76,143, 88,151, 94,155, 97,157, 98,158, 99,159, 99,158, 98,156, 97,157, 98,156, 97,153, 95,154, 96,155, 96,154, 95,152, 94,153, 95,152, 94,147, 91,149, 92,150, 93,151, 93,150, 92,148, 91,149, 92,148, 91,145, 89,146, 90,147, 90,146, 89,144, 88,145, 89,144, 88,135, 82,139, 85,141, 86,142, 87,143, 87,142, 86,140, 85,141, 86,140, 85,137, 83,138, 84,139, 84,138, 83,136, 82,137, 83,136, 82,131, 79,133, 80,134, 81,135, 81,134, 80,132, 79,133, 80,132, 79,129, 77,130, 78,131, 78,130, 77,128, 76,129, 77,128, 76,111, 64,119, 70,123, 73,125, 74,126, 75,126, 75,125, 74,124, 73,124, 74,123, 73,121, 71,122, 72,122, 72,121, 71,120, 70,120, 71,119, 70,115, 67,117, 68,118, 69,118, 69,117, 68,116, 67,116, 68,115, 67,113, 65,114, 66,114, 66,113, 65,112, 64,112, 65,111, 64,103, 58,107, 61,109, 62,110, 63,110, 63,109, 62,108, 61,108, 62,107, 61,105, 59,106, 60,106, 60,105, 59,104, 58,104, 59,103, 58,99, 55,101, 56,102, 57,102, 57,101, 56,100, 55,100, 56,99, 55,97, 53,98, 54,98, 54,97, 53,96, 52,96, 53,95, 52,
db 130, 73,145, 86,152, 93,156, 96,158, 98,159, 99,159, 99,158, 98,157, 97,157, 97,156, 97,154, 94,155, 95,155, 96,154, 95,153, 94,153, 94,152, 93,148, 89,150, 91,151, 92,152, 92,151, 91,149, 90,150, 91,149, 90,146, 88,147, 89,148, 89,147, 88,145, 87,146, 87,145, 86,137, 79,141, 83,143, 84,144, 85,144, 86,143, 85,142, 83,142, 84,141, 83,139, 81,140, 82,140, 82,139, 81,138, 80,138, 81,137, 80,133, 76,135, 78,136, 78,137, 79,136, 78,134, 77,135, 77,134, 76,131, 74,132, 75,133, 75,132, 75,130, 73,131, 74,130, 73,115, 59,122, 66,126, 69,128, 71,129, 72,129, 72,128, 71,127, 70,127, 70,126, 70,124, 67,125, 68,125, 69,124, 68,123, 67,123, 67,122, 66,118, 62,120, 64,121, 65,122, 65,121, 64,119, 63,120, 64,119, 63,116, 61,117, 62,118, 62,117, 61,115, 60,116, 60,115, 59,107, 52,111, 56,113, 57,114, 58,114, 59,113, 58,112, 56,112, 57,111, 56,109, 54,110, 55,110, 55,109, 54,108, 53,108, 54,107, 53,103, 49,105, 51,106, 51,107, 52,106, 51,104, 50,105, 50,104, 49,101, 47,102, 48,103, 48,102, 48,100, 46,101, 47,100, 46,
db 133, 70,146, 85,153, 92,156, 96,158, 98,159, 99,159, 99,158, 98,157, 97,157, 97,157, 96,154, 94,155, 95,156, 95,155, 94,154, 93,154, 93,153, 92,149, 88,151, 90,152, 91,152, 92,151, 91,150, 89,151, 90,150, 89,148, 86,149, 87,149, 88,148, 87,147, 85,147, 86,146, 85,139, 77,143, 81,144, 83,145, 84,146, 84,145, 83,143, 82,144, 82,143, 81,141, 79,142, 80,142, 80,141, 79,140, 78,141, 78,140, 77,136, 73,138, 75,138, 76,139, 77,138, 76,137, 74,137, 75,136, 74,134, 71,135, 72,135, 73,135, 72,133, 70,134, 71,133, 70,119, 55,126, 62,129, 66,131, 68,132, 69,132, 69,131, 68,130, 67,130, 67,130, 66,127, 64,128, 65,129, 65,128, 64,127, 63,127, 63,126, 62,122, 58,124, 60,125, 61,125, 62,124, 61,123, 59,124, 60,123, 59,121, 56,122, 57,122, 58,121, 57,120, 55,120, 56,119, 55,112, 47,116, 51,117, 53,118, 54,119, 54,118, 53,116, 52,117, 52,116, 51,114, 49,115, 50,115, 50,114, 49,113, 48,114, 48,113, 47,109, 43,111, 45,111, 46,112, 47,111, 46,110, 44,110, 45,109, 44,107, 41,108, 42,108, 43,108, 42,106, 40,107, 41,106, 40,
db 136, 67,148, 83,154, 91,157, 95,158, 97,159, 98,159, 99,158, 98,157, 96,158, 97,157, 96,155, 93,156, 94,156, 95,155, 94,154, 92,155, 93,154, 92,151, 87,152, 89,153, 90,153, 91,152, 90,151, 88,152, 89,151, 88,149, 85,150, 86,150, 87,149, 86,148, 84,149, 85,148, 84,142, 75,145, 79,146, 81,147, 82,147, 83,146, 82,145, 80,146, 81,145, 80,143, 77,144, 78,144, 79,143, 78,142, 76,143, 77,142, 76,139, 71,140, 73,141, 74,141, 75,140, 74,139, 72,140, 73,139, 72,137, 69,138, 70,138, 71,137, 70,136, 68,137, 69,136, 68,124, 51,130, 59,133, 63,134, 65,135, 66,135, 66,134, 65,133, 64,134, 64,133, 63,131, 61,132, 62,132, 62,131, 61,130, 60,131, 60,130, 59,127, 55,128, 57,129, 58,129, 58,128, 57,127, 56,128, 56,127, 55,125, 53,126, 54,126, 54,125, 53,124, 52,125, 52,124, 51,118, 43,121, 47,122, 49,123, 50,123, 50,122, 49,121, 48,122, 48,121, 47,119, 45,120, 46,120, 46,119, 45,118, 44,119, 44,118, 43,115, 39,116, 41,117, 42,117, 42,116, 41,115, 40,116, 40,115, 39,113, 37,114, 38,114, 38,113, 37,112, 36,113, 36,112, 35,
db 140, 65,150, 82,155, 91,157, 95,158, 97,159, 98,159, 99,159, 98,158, 96,158, 97,157, 96,156, 93,156, 94,157, 95,156, 93,155, 92,155, 92,155, 91,152, 86,153, 89,154, 90,154, 90,154, 89,153, 87,153, 88,152, 87,151, 84,151, 85,152, 86,151, 85,150, 83,150, 84,150, 83,145, 73,147, 78,148, 80,149, 81,149, 81,149, 80,148, 79,148, 79,147, 78,146, 75,146, 77,147, 77,146, 76,145, 74,145, 75,145, 74,142, 69,143, 71,144, 72,144, 73,144, 72,143, 70,143, 71,142, 69,141, 67,141, 68,142, 68,141, 67,140, 66,140, 66,140, 65,130, 47,135, 56,137, 60,138, 62,139, 63,139, 64,139, 63,138, 61,138, 62,137, 61,136, 58,136, 59,137, 60,136, 58,135, 57,135, 57,135, 56,132, 51,133, 54,134, 55,134, 55,134, 54,133, 52,133, 53,132, 52,131, 49,131, 50,132, 51,131, 50,130, 48,130, 49,130, 48,125, 38,127, 43,128, 45,129, 46,129, 46,129, 45,128, 44,128, 44,127, 43,126, 40,126, 42,127, 42,126, 41,125, 39,125, 40,125, 39,122, 34,123, 36,124, 37,124, 38,124, 37,123, 35,123, 36,122, 34,121, 32,121, 33,122, 33,121, 32,120, 31,120, 31,120, 30,
db 143, 63,151, 81,155, 90,157, 95,158, 97,159, 98,159, 99,159, 98,158, 96,158, 97,158, 95,156, 93,157, 94,157, 94,157, 93,156, 91,156, 92,156, 91,153, 86,154, 88,155, 89,155, 90,155, 89,154, 87,154, 87,154, 86,152, 83,153, 84,153, 85,153, 84,152, 82,152, 83,152, 82,147, 72,149, 76,150, 79,151, 80,151, 80,150, 79,150, 78,150, 78,149, 77,148, 74,149, 75,149, 76,148, 75,148, 73,148, 73,147, 72,145, 67,146, 69,147, 71,147, 71,146, 70,146, 68,146, 69,145, 68,144, 65,145, 66,145, 67,144, 65,144, 64,144, 64,143, 63,135, 44,139, 53,141, 58,142, 60,142, 61,143, 62,142, 61,141, 59,142, 60,141, 58,140, 56,140, 57,141, 57,140, 56,139, 54,140, 55,139, 54,137, 49,138, 51,138, 52,139, 53,138, 52,137, 50,138, 50,137, 49,136, 46,136, 47,137, 48,136, 47,135, 45,136, 46,135, 45,131, 35,133, 39,134, 42,134, 43,134, 43,134, 42,133, 41,133, 41,133, 40,132, 37,132, 38,132, 39,132, 38,131, 36,131, 36,131, 35,129, 30,130, 32,130, 34,130, 34,130, 33,129, 31,129, 32,129, 31,128, 28,128, 29,128, 30,128, 28,127, 27,127, 27,127, 26,
db 147, 61,153, 80,156, 90,158, 95,159, 97,159, 98,159, 99,159, 98,158, 96,159, 96,158, 95,157, 92,158, 93,158, 94,157, 93,157, 91,157, 92,157, 90,155, 85,156, 87,156, 89,156, 89,156, 88,155, 86,155, 87,155, 86,154, 83,154, 84,155, 84,154, 83,154, 81,154, 82,153, 81,150, 71,152, 75,152, 78,153, 79,153, 80,153, 78,152, 77,152, 77,152, 76,151, 73,151, 74,151, 75,151, 74,151, 72,151, 72,150, 71,149, 66,149, 68,150, 69,150, 70,150, 69,149, 67,149, 68,149, 66,148, 63,148, 65,148, 65,148, 64,147, 62,148, 63,147, 62,141, 42,144, 51,145, 56,146, 59,147, 60,147, 60,146, 59,146, 57,146, 58,146, 57,145, 54,145, 55,145, 56,145, 54,144, 53,144, 53,144, 52,142, 47,143, 49,143, 50,144, 51,143, 50,143, 48,143, 48,143, 47,142, 44,142, 45,142, 46,142, 45,141, 43,141, 44,141, 42,138, 32,139, 37,140, 39,140, 41,141, 41,140, 40,140, 38,140, 39,139, 38,138, 35,139, 36,139, 36,139, 35,138, 33,138, 34,138, 33,136, 27,137, 30,137, 31,137, 32,137, 30,136, 29,137, 29,136, 28,135, 25,136, 26,136, 27,135, 26,135, 24,135, 24,135, 23,
db 151, 60,155, 80,157, 90,158, 95,159, 97,159, 98,159, 99,159, 98,159, 96,159, 96,159, 95,158, 92,158, 93,158, 94,158, 93,158, 91,158, 91,158, 90,156, 85,157, 87,157, 88,157, 89,157, 88,157, 86,157, 87,156, 85,156, 82,156, 83,156, 84,156, 83,156, 81,156, 82,155, 80,153, 70,154, 75,155, 77,155, 79,155, 79,155, 78,154, 76,155, 77,154, 75,154, 72,154, 74,154, 74,154, 73,153, 71,154, 72,153, 70,152, 65,153, 67,153, 69,153, 69,153, 68,152, 66,152, 67,152, 66,152, 62,152, 64,152, 64,152, 63,151, 61,151, 62,151, 61,147, 40,149, 50,150, 55,150, 58,151, 59,151, 59,151, 58,150, 56,150, 57,150, 56,149, 53,150, 54,150, 54,150, 53,149, 51,149, 52,149, 51,148, 45,148, 48,149, 49,149, 50,148, 48,148, 46,148, 47,148, 46,147, 43,148, 44,148, 45,147, 43,147, 41,147, 42,147, 41,145, 30,146, 35,146, 38,146, 39,147, 40,146, 38,146, 37,146, 37,146, 36,145, 33,145, 34,146, 35,145, 33,145, 32,145, 32,145, 31,144, 25,144, 28,144, 29,144, 30,144, 29,144, 27,144, 27,144, 26,143, 23,143, 24,143, 25,143, 24,143, 22,143, 22,143, 21,
db 155, 60,157, 80,158, 90,159, 95,159, 97,159, 98,159, 99,159, 98,159, 96,159, 96,159, 95,159, 92,159, 93,159, 94,159, 93,159, 91,159, 91,158, 90,158, 85,158, 87,158, 88,158, 89,158, 88,158, 86,158, 86,158, 85,158, 82,158, 83,158, 84,158, 83,157, 81,157, 81,157, 80,156, 70,157, 75,157, 77,157, 78,157, 79,157, 78,157, 76,157, 76,157, 75,156, 72,157, 73,157, 74,156, 73,156, 71,156, 71,156, 70,156, 65,156, 67,156, 68,156, 69,156, 68,156, 66,156, 66,156, 65,155, 62,155, 63,155, 64,155, 63,155, 61,155, 61,155, 60,153, 40,154, 50,154, 55,155, 57,155, 58,155, 59,155, 58,155, 56,155, 56,155, 55,154, 52,154, 53,154, 54,154, 53,154, 51,154, 51,154, 50,153, 45,154, 47,154, 48,154, 49,154, 48,153, 46,154, 46,153, 45,153, 42,153, 43,153, 44,153, 43,153, 41,153, 41,153, 40,152, 30,152, 35,152, 37,153, 38,153, 39,153, 38,152, 36,152, 36,152, 35,152, 32,152, 33,152, 34,152, 33,152, 31,152, 31,152, 30,151, 25,151, 27,151, 28,152, 29,151, 28,151, 26,151, 26,151, 25,151, 22,151, 23,151, 24,151, 23,151, 21,151, 21,151, 20,
db 160, 60,160, 80,160, 90,160, 95,160, 97,160, 98,160, 99,160, 98,160, 96,160, 96,160, 95,160, 92,160, 93,160, 94,160, 93,160, 91,160, 91,160, 90,160, 85,160, 87,160, 88,160, 89,160, 88,160, 86,160, 86,160, 85,160, 82,160, 83,160, 84,160, 83,160, 81,160, 81,160, 80,160, 70,160, 75,160, 77,160, 78,160, 79,160, 78,160, 76,160, 76,160, 75,160, 72,160, 73,160, 74,160, 73,160, 71,160, 71,160, 70,160, 65,160, 67,160, 68,160, 69,160, 68,160, 66,160, 66,160, 65,160, 62,160, 63,160, 64,160, 63,160, 61,160, 61,160, 60,160, 40,160, 50,160, 55,160, 57,160, 58,160, 59,160, 58,160, 56,160, 56,160, 55,160, 52,160, 53,160, 54,160, 53,160, 51,160, 51,160, 50,160, 45,160, 47,160, 48,160, 49,160, 48,160, 46,160, 46,160, 45,160, 42,160, 43,160, 44,160, 43,160, 41,160, 41,160, 40,160, 30,160, 35,160, 37,160, 38,160, 39,160, 38,160, 36,160, 36,160, 35,160, 32,160, 33,160, 34,160, 33,160, 31,160, 31,160, 30,160, 25,160, 27,160, 28,160, 29,160, 28,160, 26,160, 26,160, 25,160, 22,160, 23,160, 24,160, 23,160, 21,160, 21,160, 20,
db 0,0,0,0,0,0,0,0,0
count dw 5
hour db 0
min db 0
sec db 0
xVal dw 0
yVal dw 0
clour_hour db 0
clour_min db 0
clour_sec db 0
_start:
mov ax, cs
mov ds, ax
mov es, ax
mov ss, ax
mov sp, BaseOfStack
;call ScrollWindows
call SetVideoMode ; 调用视频模式切换子程序
call SetBackGround ; 调用背景颜色设置子程序
time:
call showTime
call DisplayString ; 调用字符串显示子程序
call Draw_circle
push ax
;;;;sec
mov byte [clour_sec],1
mov ax, 0
mov al, [sec]
cmp al, 0
jne buhuanyuan_sec
add al, 60
buhuanyuan_sec:
sub al, 1
call Clean_line
add al, 1
call Draw_line
mov byte [clour_sec],0
;;;;;min
mov byte [clour_min],1
mov ax, 0
mov al, [min]
cmp al, 0
jne buhuanyuan_min
add al, 60
buhuanyuan_min:
sub al, 1
call Clean_line
add al, 1
call Draw_line
mov byte [clour_min],0
;;;;;hour
mov byte [clour_hour],1
mov ax, 0
mov al, [hour]
cmp al, 12
jbe buhuanyuan_hour
sub al, 12
buhuanyuan_hour:
sub al, 1
push bx
push ax
mov bx, 5
mul bl
call Clean_line
pop ax
pop bx
add al, 1
push bx
push ax
mov bx, 5
mul bl
call Draw_line
pop ax
pop bx
mov byte [clour_hour],0
;;;
pop ax
mov word [count], 5
jmp time
;;;;;;backspace
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
; show time
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
showTime:
mov ax, 0
mov ah,0x02
int 0x1a
mov al,ch
call bcd2bin
mov [hour], al
call parseNumber
mov al,cl
call bcd2bin
mov [min], al
call parseNumber
mov al,dh
call bcd2bin
mov [sec], al
call parseNumber
ret
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
; parse number
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
parseNumber:
push ecx
push bx
push edx
xor bh,bh
mov ecx, BootMessage
mov edx, 0
mov dx, [count]
.parseTen
cmp al,10
jl .parseNum
sub al,10
inc bh
jmp .parseTen
.parseNum
mov bl,al
mov al,bh
add al, 30h
mov [ecx + edx], al
add edx, 1
mov al,bl
add al, 30h
mov [ecx + edx], al
add edx, 1
mov al, ':'
mov [ecx + edx], al
add edx, 1
mov [count], dx
pop edx
pop bx
pop ecx
ret
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
; turn bcd to bin (al to al)
;〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓〓
bcd2bin:
push bx
mov bl,0
mov bh,0
.bcdTen
cmp al,16
jl .bcdNum
sub al,16
inc bl
jmp .bcdTen
.bcdNum
mov bh,al
mov ah,0
mov al,bl
imul ax,10
add al,bh
pop bx
ret
ScrollWindows:
mov ax, 0600h ; AH 赋值为功能号06h(窗口上滚) (BIOS INT 10-06h 定义参数)
; AL 赋值为0, 窗口信息全部移出(清屏) (BIOS INT 10-06h 定义参数)
mov bx, 0700h ; BH 底部空白行属性赋值为黑底灰白字 (BIOS INT 10-06h 定义参数)
; BL 保留
mov cx, 0707h ; 窗口左上角的行列、号赋值为00h 00h (BIOS INT 10-06h 定义参数)
mov dx, 0xc7c7 ; 窗口右下角的行列、号赋值为18h 4fh (BIOS INT 10-06h 定义参数)
; ---------------------------------------------------
; 0(00h) 79(4fh)
; 0(00h)┏━━━━━━━━━━━━━━━━┓
; ┃ ┃
; ┃ ┃
; ┃ ┃
; ┃ 显示器 25*80 显示方式 ┃
; ┃ ┃
; ┃ ┃
; ┃ ┃
; 24(18h)┗━━━━━━━━━━━━━━━━┛
;
int 10h ; BIOS 10h号中断-06h号功能 (清屏功能调用)
ret ; 子程序无参数返回
DisplayString:
mov ax, ss
mov es, ax
mov ax, BootMessage ; 取字符串数据(段)的首地址
mov bp, ax ; ES:BP 赋值为待显示字符串的首地址 (BIOS INT 10-13h 定义参数)
mov cx, 13 ; CX 赋值为字符串长度(此处为固定值) (BIOS INT 10-13h 定义参数)
mov ax, 01301h ; AH 赋值为功能号13h(显示字符串) (BIOS INT 10-13h 定义参数)
; AL 输出模式参数赋值为03h (BIOS INT 10-13h 定义参数)
; ---------------------------------------------------
; 第 0 位 : 在输出之后更新光标位置
; 第 1 位 : 字符串包含交替的字符和属性
;
mov bx, 0111h ; BH 页号赋值为0 (BIOS INT 10-13h 定义参数)
; BL 属性赋值为黑底浅红字(属性字BL使用的前提为AL的高位置0)
; ---------------------------------------------------
; 16位色彩编码表 (D7 D6 D5 D4为背景色,D3 D2 D1 D0为前景色)
; ┏━━━━━━━━━━━┳━━━━━━━━━━━┓
; ┃ 0 0 0 0 黑 ┃ 1 0 0 0 灰 ┃
; ┃ 0 0 0 1 蓝 ┃ 1 0 0 1 浅蓝 ┃
; ┃ 0 0 1 0 绿 ┃ 1 0 1 0 浅绿 ┃
; ┃ 0 0 1 1 青 ┃ 1 0 1 1 浅青 ┃
; ┃ 0 1 0 0 红 ┃ 1 1 0 0 浅红 ┃
; ┃ 0 1 0 1 品红 ┃ 1 1 0 1 浅品红 ┃
; ┃ 0 1 1 0 棕 ┃ 1 1 1 0 黄 ┃
; ┃ 0 1 1 1 灰白 ┃ 1 1 1 1 白 ┃
; ┗━━━━━━━━━━━┻━━━━━━━━━━━┛
;
mov dx, 0000h ; DL 赋值为字符串显示的起始行、列号 (BIOS INT 10-13h 定义参数)
int 10h ; BIOS 10h号中断-13h号功能 (字符串屏显功能调用)
ret ; 子程序无参数返回
SetVideoMode:
mov ax, 0013h ; 320 * 200 * 256 图形模式
; ---------------------------------------------------
; 0(00h) 319(13fh)
; 0(00h)┏━━━━━━━━━━━━━━━━┓
; ┃ ┃
; ┃ ┃
; ┃ ┃
; ┃ 显示器 320 * 200 显示方式 ┃
; ┃ 4 种色彩 ┃
; ┃ ┃
; ┃ ┃
; 199(C7h)┗━━━━━━━━━━━━━━━━┛
;
int 10h ; BIOS 10h号中断-00h号功能 (视频模式切换功能调用)
ret ; 子程序无参数返回
SetBackGround:
mov dx, 3c8h
mov al, 0
out dx, al
;把屏幕设置为深蓝
mov dx, 3c9h
mov al, 50
out dx, al
mov al, 50
out dx, al
mov al, 50
out dx, al
ret ; 子程序无参数返回
;-----------------------------------------------
Draw_Some_Pixels:
;
; Sets individual palette colors and draws
; several pixels.
;------------------------------------------------
; Change the color at index 1 to white (63,63,63).
push 0A000h ;视频段地址
pop es ;
mov dx,3c8h
mov al,1 ; set palette index 1
out dx,al
mov dx,3c9h
mov al,63 ; red
out dx,al
mov al,63 ; green
out dx,al
mov al,63 ; blue
out dx,al
; Calculate the video buffer offset of the first pixel.
; Method is specific to mode 13h, which is 320 X 200.
mov word [xVal],160 ; middle of screen
mov word [yVal],100
mov ax,320 ; 320 for video mode 13h
mul word [yVal] ; y-coordinate
add ax,word [xVal] ; x-coordinate
; Place the color index into the video buffer.
mov cx,10 ; draw 10 pixels
mov di,ax ; AX contains buffer offset
; Draw the pixels now. By default, the assembler assumes
; DI is an offset from the segment address in DS. The
; segment override ES:[DI] tells the CPU to use the segment
; address in ES instead. ES currently points to VRAM.
DP1:
mov byte [es:di],22
add di,1 ; move 5 pixels to the right
loop DP1
ret
;实现画圆,360个点
Draw_circle:
push eax
push bx
push cx
push edx
push 0A000h ;视频段地址
pop es ;
mov dx,3c8h
mov al,1 ; set palette index 1
out dx,al
mov dx,3c9h
mov al,63 ; red
out dx,al
mov al,63 ; green
out dx,al
mov al,63 ; blue
out dx,al
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov eax, 0
mov bx, 0
mov cx, 0
loop_circle:
mov edx, circle
mov cl, [circle+eax]
add ax, 1
mov bl, [circle+eax]
call Draw_point
add ax, 1
cmp ax, 720
jbe loop_circle
pop edx
pop cx
pop bx
pop eax
ret
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;实现打点,cx:x, bx:y
Draw_point:
push ax
push di
push dx
mov word [xVal],cx ; middle of screen
mov word [yVal],bx
mov ax,320 ; 320 for video mode 13h
mul word [yVal] ; y-coordinate
add ax,word [xVal] ; x-coordinate
mov di,ax ; AX contains buffer offset
push cx
mov cx, 0
mov cl, [clour_hour]
cmp cl, 1
jne hour_pass
mov byte [es:di],33
jmp huiqu
hour_pass:
mov cl, [clour_min]
cmp cl, 1
jne min_pass
mov byte [es:di], 44
jmp huiqu
min_pass:
mov byte [es:di], 77
huiqu:
pop cx
pop dx
pop di
pop ax
ret
Del_point:
push ax
push di
push dx
mov word [xVal],cx ; middle of screen
mov word [yVal],bx
mov ax,320 ; 320 for video mode 13h
mul word [yVal] ; y-coordinate
add ax,word [xVal] ; x-coordinate
mov di,ax ; AX contains buffer offset
mov byte [es:di],0
pop dx
pop di
pop ax
ret
;;;;;;;;;;;;;;;;;;;;;;;;画线ax,时间
Draw_line:
push eax
push ebx
push ecx
push edx
push 0A000h ;视频段地址
pop es ;
push ax
mov dx,3c8h
mov al,1 ; set palette index 1
out dx,al
mov dx,3c9h
mov al,63 ; red
out dx,al
mov al,63 ; green
out dx,al
mov al,63 ; blue
out dx,al
pop ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov bl, 254
mul bl
mov ebx, 0
mov edx, 0
loop_drawline:
mov cl, [line+eax+edx]
add dx, 1
mov bl, [line+eax+edx]
push dx
call Draw_point
pop dx
add dx, 1
cmp dx, 254
jbe loop_drawline
pop edx
pop ecx
pop ebx
pop eax
ret
Clean_line:
push eax
push ebx
push ecx
push edx
push 0A000h ;视频段地址
pop es ;
push ax
mov dx,3c8h
mov al,1 ; set palette index 1
out dx,al
mov dx,3c9h
mov al,63 ; red
out dx,al
mov al,63 ; green
out dx,al
mov al,63 ; blue
out dx,al
pop ax
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
mov bl, 254
mul bl
mov ebx, 0
mov edx, 0
loop_cleanline:
mov cl, [line+eax+edx]
add dx, 1
mov bl, [line+eax+edx]
push dx
call Del_point
pop dx
add dx, 1
cmp dx, 254
jbe loop_cleanline
pop edx
pop ecx
pop ebx
pop eax
ret