Home | History | Annotate | Download | only in x86
      1 /*
      2 Copyright (c) 2014, Intel Corporation
      3 All rights reserved.
      4 
      5 Redistribution and use in source and binary forms, with or without
      6 modification, are permitted provided that the following conditions are met:
      7 
      8     * Redistributions of source code must retain the above copyright notice,
      9     * this list of conditions and the following disclaimer.
     10 
     11     * Redistributions in binary form must reproduce the above copyright notice,
     12     * this list of conditions and the following disclaimer in the documentation
     13     * and/or other materials provided with the distribution.
     14 
     15     * Neither the name of Intel Corporation nor the names of its contributors
     16     * may be used to endorse or promote products derived from this software
     17     * without specific prior written permission.
     18 
     19 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
     20 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
     21 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
     22 DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
     23 ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
     24 (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
     25 LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
     26 ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     27 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
     28 SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     29 */
     30 
     31 # -- Begin  __libm_sincos_huge
     32 	.text
     33        .align    16,0x90
     34 	.hidden __libm_sincos_huge
     35 	.globl __libm_sincos_huge
     36 __libm_sincos_huge:
     37 # parameter 1: 8 + %ebp
     38 # parameter 2: 16 + %ebp
     39 # parameter 3: 20 + %ebp
     40 ..B1.1:
     41         pushl     %ebp
     42         movl      %esp, %ebp
     43         andl      $-64, %esp
     44         pushl     %esi
     45         pushl     %edi
     46         pushl     %ebx
     47         subl      $52, %esp
     48         movl      16(%ebp), %eax
     49         movl      20(%ebp), %edx
     50         movl      %eax, 32(%esp)
     51         movl      %edx, 36(%esp)
     52 ..B1.2:
     53         fnstcw    30(%esp)
     54 ..B1.3:
     55         call      ..L2
     56 ..L2:
     57         popl      %edi
     58         lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%edi), %edi
     59         movsd     8(%ebp), %xmm1
     60         movl      12(%ebp), %esi
     61         movl      %esi, %eax
     62         andl      $2147483647, %eax
     63         andps     .L_2il0floatpacket.0@GOTOFF(%edi), %xmm1
     64         shrl      $31, %esi
     65         movl      %eax, 40(%esp)
     66         cmpl      $1104150528, %eax
     67         movsd     %xmm1, 8(%ebp)
     68         jae       ..B1.11
     69 ..B1.4:
     70         movsd     _Pi4Inv@GOTOFF(%edi), %xmm0
     71         mulsd     %xmm1, %xmm0
     72         movzwl    30(%esp), %edx
     73         movl      %edx, %eax
     74         andl      $768, %eax
     75         movsd     %xmm0, (%esp)
     76         cmpl      $768, %eax
     77         je        ..B1.42
     78 ..B1.5:
     79         orl       $-64768, %edx
     80         movw      %dx, 28(%esp)
     81 ..B1.6:
     82         fldcw     28(%esp)
     83 ..B1.7:
     84         movsd     8(%ebp), %xmm1
     85         movl      $1, %ebx
     86 ..B1.8:
     87         movl      %ebx, 12(%esp)
     88         movl      4(%esp), %ebx
     89         movl      %ebx, %eax
     90         movl      %esi, 8(%esp)
     91         movl      %ebx, %esi
     92         shrl      $20, %esi
     93         andl      $1048575, %eax
     94         movl      %esi, %ecx
     95         orl       $1048576, %eax
     96         negl      %ecx
     97         movl      %eax, %edx
     98         addl      $19, %ecx
     99         addl      $13, %esi
    100         movl      %ecx, 24(%esp)
    101         shrl      %cl, %edx
    102         movl      %esi, %ecx
    103         shll      %cl, %eax
    104         movl      24(%esp), %ecx
    105         movl      (%esp), %esi
    106         shrl      %cl, %esi
    107         orl       %esi, %eax
    108         cmpl      $1094713344, %ebx
    109         movsd     %xmm1, 16(%esp)
    110         fldl      16(%esp)
    111         cmovb     %edx, %eax
    112         movl      8(%esp), %esi
    113         lea       1(%eax), %edx
    114         movl      %edx, %ebx
    115         andl      $-2, %ebx
    116         movl      %ebx, 16(%esp)
    117         fildl     16(%esp)
    118         movl      12(%esp), %ebx
    119         cmpl      $1094713344, 40(%esp)
    120         jae       ..B1.10
    121 ..B1.9:
    122         fldl      _Pi4x3@GOTOFF(%edi)
    123         fmul      %st(1), %st
    124         faddp     %st, %st(2)
    125         fldl      8+_Pi4x3@GOTOFF(%edi)
    126         fmul      %st(1), %st
    127         faddp     %st, %st(2)
    128         fldl      16+_Pi4x3@GOTOFF(%edi)
    129         fmulp     %st, %st(1)
    130         faddp     %st, %st(1)
    131         jmp       ..B1.17
    132 ..B1.10:
    133         fldl      _Pi4x4@GOTOFF(%edi)
    134         fmul      %st(1), %st
    135         faddp     %st, %st(2)
    136         fldl      8+_Pi4x4@GOTOFF(%edi)
    137         fmul      %st(1), %st
    138         faddp     %st, %st(2)
    139         fldl      16+_Pi4x4@GOTOFF(%edi)
    140         fmul      %st(1), %st
    141         faddp     %st, %st(2)
    142         fldl      24+_Pi4x4@GOTOFF(%edi)
    143         fmulp     %st, %st(1)
    144         faddp     %st, %st(1)
    145         jmp       ..B1.17
    146 ..B1.11:
    147         movzwl    30(%esp), %edx
    148         movl      %edx, %eax
    149         andl      $768, %eax
    150         cmpl      $768, %eax
    151         je        ..B1.43
    152 ..B1.12:
    153         orl       $-64768, %edx
    154         movw      %dx, 28(%esp)
    155 ..B1.13:
    156         fldcw     28(%esp)
    157 ..B1.14:
    158         movsd     8(%ebp), %xmm1
    159         movl      $1, %ebx
    160 ..B1.15:
    161         movsd     %xmm1, 16(%esp)
    162         fldl      16(%esp)
    163         addl      $-32, %esp
    164         lea       32(%esp), %eax
    165         fstpt     (%esp)
    166         movl      $0, 12(%esp)
    167         movl      %eax, 16(%esp)
    168         call      __libm_reduce_pi04l
    169 ..B1.46:
    170         addl      $32, %esp
    171 ..B1.16:
    172         fldl      (%esp)
    173         lea       1(%eax), %edx
    174         fldl      8(%esp)
    175         faddp     %st, %st(1)
    176 ..B1.17:
    177         movl      %edx, %ecx
    178         addl      $3, %eax
    179         shrl      $2, %ecx
    180         andl      $1, %ecx
    181         shrl      $2, %eax
    182         xorl      %ecx, %esi
    183         movl      36(%esp), %ecx
    184         andl      $1, %eax
    185         andl      $3, %ecx
    186         cmpl      $3, %ecx
    187         jne       ..B1.25
    188 ..B1.18:
    189         fldt      84+_SP@GOTOFF(%edi)
    190         fld       %st(1)
    191         fmul      %st(2), %st
    192         testb     $2, %dl
    193         fmul      %st, %st(1)
    194         fldt      72+_SP@GOTOFF(%edi)
    195         faddp     %st, %st(2)
    196         fmul      %st, %st(1)
    197         fldt      60+_SP@GOTOFF(%edi)
    198         faddp     %st, %st(2)
    199         fmul      %st, %st(1)
    200         fldt      48+_SP@GOTOFF(%edi)
    201         faddp     %st, %st(2)
    202         fmul      %st, %st(1)
    203         fldt      36+_SP@GOTOFF(%edi)
    204         faddp     %st, %st(2)
    205         fmul      %st, %st(1)
    206         fldt      24+_SP@GOTOFF(%edi)
    207         faddp     %st, %st(2)
    208         fmul      %st, %st(1)
    209         fldt      12+_SP@GOTOFF(%edi)
    210         faddp     %st, %st(2)
    211         fmul      %st, %st(1)
    212         fldt      _SP@GOTOFF(%edi)
    213         faddp     %st, %st(2)
    214         fmul      %st, %st(1)
    215         fldt      84+_CP@GOTOFF(%edi)
    216         fmul      %st(1), %st
    217         fldt      72+_CP@GOTOFF(%edi)
    218         faddp     %st, %st(1)
    219         fmul      %st(1), %st
    220         fldt      60+_CP@GOTOFF(%edi)
    221         faddp     %st, %st(1)
    222         fmul      %st(1), %st
    223         fldt      48+_CP@GOTOFF(%edi)
    224         faddp     %st, %st(1)
    225         fmul      %st(1), %st
    226         fldt      36+_CP@GOTOFF(%edi)
    227         faddp     %st, %st(1)
    228         fmul      %st(1), %st
    229         fldt      24+_CP@GOTOFF(%edi)
    230         faddp     %st, %st(1)
    231         fmul      %st(1), %st
    232         fldt      12+_CP@GOTOFF(%edi)
    233         faddp     %st, %st(1)
    234         fmul      %st(1), %st
    235         fldt      _CP@GOTOFF(%edi)
    236         faddp     %st, %st(1)
    237         fmulp     %st, %st(1)
    238         fldl      _ones@GOTOFF(%edi,%esi,8)
    239         fldl      _ones@GOTOFF(%edi,%eax,8)
    240         je        ..B1.22
    241 ..B1.19:
    242         fmulp     %st, %st(4)
    243         testl     %ebx, %ebx
    244         fxch      %st(2)
    245         fmul      %st(3), %st
    246         movl      32(%esp), %eax
    247         faddp     %st, %st(3)
    248         fxch      %st(2)
    249         fstpl     (%eax)
    250         fmul      %st, %st(1)
    251         faddp     %st, %st(1)
    252         fstpl     8(%eax)
    253         je        ..B1.21
    254 ..B1.20:
    255         fldcw     30(%esp)
    256 ..B1.21:
    257         addl      $52, %esp
    258         popl      %ebx
    259         popl      %edi
    260         popl      %esi
    261         movl      %ebp, %esp
    262         popl      %ebp
    263         ret
    264 ..B1.22:
    265         fxch      %st(1)
    266         fmulp     %st, %st(4)
    267         testl     %ebx, %ebx
    268         fxch      %st(2)
    269         fmul      %st(3), %st
    270         movl      32(%esp), %eax
    271         faddp     %st, %st(3)
    272         fxch      %st(2)
    273         fstpl     8(%eax)
    274         fmul      %st, %st(1)
    275         faddp     %st, %st(1)
    276         fstpl     (%eax)
    277         je        ..B1.24
    278 ..B1.23:
    279         fldcw     30(%esp)
    280 ..B1.24:
    281         addl      $52, %esp
    282         popl      %ebx
    283         popl      %edi
    284         popl      %esi
    285         movl      %ebp, %esp
    286         popl      %ebp
    287         ret
    288 ..B1.25:
    289         testb     $2, 36(%esp)
    290         je        ..B1.33
    291 ..B1.26:
    292         fld       %st(0)
    293         testb     $2, %dl
    294         fmul      %st(1), %st
    295         fld       %st(0)
    296         fmul      %st(1), %st
    297         je        ..B1.30
    298 ..B1.27:
    299         fstp      %st(2)
    300         fldt      84+_CP@GOTOFF(%edi)
    301         testl     %ebx, %ebx
    302         fmul      %st(2), %st
    303         fldt      72+_CP@GOTOFF(%edi)
    304         fmul      %st(3), %st
    305         fldt      60+_CP@GOTOFF(%edi)
    306         movl      32(%esp), %eax
    307         faddp     %st, %st(2)
    308         fxch      %st(1)
    309         fmul      %st(3), %st
    310         fldt      48+_CP@GOTOFF(%edi)
    311         faddp     %st, %st(2)
    312         fxch      %st(1)
    313         fmul      %st(3), %st
    314         fldt      36+_CP@GOTOFF(%edi)
    315         faddp     %st, %st(2)
    316         fxch      %st(1)
    317         fmul      %st(3), %st
    318         fldt      24+_CP@GOTOFF(%edi)
    319         faddp     %st, %st(2)
    320         fxch      %st(1)
    321         fmul      %st(3), %st
    322         fldt      12+_CP@GOTOFF(%edi)
    323         faddp     %st, %st(2)
    324         fxch      %st(1)
    325         fmulp     %st, %st(3)
    326         fldt      _CP@GOTOFF(%edi)
    327         faddp     %st, %st(1)
    328         fmulp     %st, %st(1)
    329         faddp     %st, %st(1)
    330         fldl      _ones@GOTOFF(%edi,%esi,8)
    331         fmul      %st, %st(1)
    332         faddp     %st, %st(1)
    333         fstpl     8(%eax)
    334         je        ..B1.29
    335 ..B1.28:
    336         fldcw     30(%esp)
    337 ..B1.29:
    338         addl      $52, %esp
    339         popl      %ebx
    340         popl      %edi
    341         popl      %esi
    342         movl      %ebp, %esp
    343         popl      %ebp
    344         ret
    345 ..B1.30:
    346         fldt      84+_SP@GOTOFF(%edi)
    347         testl     %ebx, %ebx
    348         fmul      %st(1), %st
    349         fldt      72+_SP@GOTOFF(%edi)
    350         fmul      %st(2), %st
    351         fldt      60+_SP@GOTOFF(%edi)
    352         movl      32(%esp), %eax
    353         faddp     %st, %st(2)
    354         fxch      %st(1)
    355         fmul      %st(2), %st
    356         fldt      48+_SP@GOTOFF(%edi)
    357         faddp     %st, %st(2)
    358         fxch      %st(1)
    359         fmul      %st(2), %st
    360         fldt      36+_SP@GOTOFF(%edi)
    361         faddp     %st, %st(2)
    362         fxch      %st(1)
    363         fmul      %st(2), %st
    364         fldt      24+_SP@GOTOFF(%edi)
    365         faddp     %st, %st(2)
    366         fxch      %st(1)
    367         fmul      %st(2), %st
    368         fldt      12+_SP@GOTOFF(%edi)
    369         faddp     %st, %st(2)
    370         fxch      %st(1)
    371         fmulp     %st, %st(2)
    372         fldt      _SP@GOTOFF(%edi)
    373         faddp     %st, %st(1)
    374         fmulp     %st, %st(2)
    375         faddp     %st, %st(1)
    376         fldl      _ones@GOTOFF(%edi,%esi,8)
    377         fmulp     %st, %st(2)
    378         fmul      %st(1), %st
    379         faddp     %st, %st(1)
    380         fstpl     8(%eax)
    381         je        ..B1.32
    382 ..B1.31:
    383         fldcw     30(%esp)
    384 ..B1.32:
    385         addl      $52, %esp
    386         popl      %ebx
    387         popl      %edi
    388         popl      %esi
    389         movl      %ebp, %esp
    390         popl      %ebp
    391         ret
    392 ..B1.33:
    393         testb     $1, 36(%esp)
    394         je        ..B1.41
    395 ..B1.34:
    396         fld       %st(0)
    397         testb     $2, %dl
    398         fmul      %st(1), %st
    399         fld       %st(0)
    400         fmul      %st(1), %st
    401         je        ..B1.38
    402 ..B1.35:
    403         fldt      84+_SP@GOTOFF(%edi)
    404         testl     %ebx, %ebx
    405         fmul      %st(1), %st
    406         fldt      72+_SP@GOTOFF(%edi)
    407         fmul      %st(2), %st
    408         fldt      60+_SP@GOTOFF(%edi)
    409         faddp     %st, %st(2)
    410         fxch      %st(1)
    411         fmul      %st(2), %st
    412         fldt      48+_SP@GOTOFF(%edi)
    413         faddp     %st, %st(2)
    414         fxch      %st(1)
    415         fmul      %st(2), %st
    416         fldt      36+_SP@GOTOFF(%edi)
    417         faddp     %st, %st(2)
    418         fxch      %st(1)
    419         fmul      %st(2), %st
    420         fldt      24+_SP@GOTOFF(%edi)
    421         faddp     %st, %st(2)
    422         fxch      %st(1)
    423         fmul      %st(2), %st
    424         fldt      12+_SP@GOTOFF(%edi)
    425         faddp     %st, %st(2)
    426         fxch      %st(1)
    427         fmulp     %st, %st(2)
    428         fldt      _SP@GOTOFF(%edi)
    429         faddp     %st, %st(1)
    430         fmulp     %st, %st(2)
    431         faddp     %st, %st(1)
    432         fldl      _ones@GOTOFF(%edi,%eax,8)
    433         fmulp     %st, %st(2)
    434         fmul      %st(1), %st
    435         movl      32(%esp), %eax
    436         faddp     %st, %st(1)
    437         fstpl     (%eax)
    438         je        ..B1.37
    439 ..B1.36:
    440         fldcw     30(%esp)
    441 ..B1.37:
    442         addl      $52, %esp
    443         popl      %ebx
    444         popl      %edi
    445         popl      %esi
    446         movl      %ebp, %esp
    447         popl      %ebp
    448         ret
    449 ..B1.38:
    450         fstp      %st(2)
    451         fldt      84+_CP@GOTOFF(%edi)
    452         testl     %ebx, %ebx
    453         fmul      %st(2), %st
    454         fldt      72+_CP@GOTOFF(%edi)
    455         fmul      %st(3), %st
    456         fldt      60+_CP@GOTOFF(%edi)
    457         faddp     %st, %st(2)
    458         fxch      %st(1)
    459         fmul      %st(3), %st
    460         fldt      48+_CP@GOTOFF(%edi)
    461         faddp     %st, %st(2)
    462         fxch      %st(1)
    463         fmul      %st(3), %st
    464         fldt      36+_CP@GOTOFF(%edi)
    465         faddp     %st, %st(2)
    466         fxch      %st(1)
    467         fmul      %st(3), %st
    468         fldt      24+_CP@GOTOFF(%edi)
    469         faddp     %st, %st(2)
    470         fxch      %st(1)
    471         fmul      %st(3), %st
    472         fldt      12+_CP@GOTOFF(%edi)
    473         faddp     %st, %st(2)
    474         fxch      %st(1)
    475         fmulp     %st, %st(3)
    476         fldt      _CP@GOTOFF(%edi)
    477         faddp     %st, %st(1)
    478         fmulp     %st, %st(1)
    479         faddp     %st, %st(1)
    480         fldl      _ones@GOTOFF(%edi,%eax,8)
    481         fmul      %st, %st(1)
    482         movl      32(%esp), %eax
    483         faddp     %st, %st(1)
    484         fstpl     (%eax)
    485         je        ..B1.40
    486 ..B1.39:
    487         fldcw     30(%esp)
    488 ..B1.40:
    489         addl      $52, %esp
    490         popl      %ebx
    491         popl      %edi
    492         popl      %esi
    493         movl      %ebp, %esp
    494         popl      %ebp
    495         ret
    496 ..B1.41:
    497         fstp      %st(0)
    498         addl      $52, %esp
    499         popl      %ebx
    500         popl      %edi
    501         popl      %esi
    502         movl      %ebp, %esp
    503         popl      %ebp
    504         ret
    505 ..B1.42:
    506         xorl      %ebx, %ebx
    507         jmp       ..B1.8
    508 ..B1.43:
    509         xorl      %ebx, %ebx
    510         jmp       ..B1.15
    511         .align    16,0x90
    512 	.type	__libm_sincos_huge,@function
    513 	.size	__libm_sincos_huge,.-__libm_sincos_huge
    514 	.data
    515 # -- End  __libm_sincos_huge
    516 	.section .rodata, "a"
    517 	.align 16
    518 	.align 16
    519 .L_2il0floatpacket.0:
    520 	.long	0xffffffff,0x7fffffff,0x00000000,0x00000000
    521 	.type	.L_2il0floatpacket.0,@object
    522 	.size	.L_2il0floatpacket.0,16
    523 	.align 16
    524 _Pi4Inv:
    525 	.long	1841940611
    526 	.long	1072979760
    527 	.type	_Pi4Inv,@object
    528 	.size	_Pi4Inv,8
    529 	.space 8, 0x00 	# pad
    530 	.align 16
    531 _Pi4x3:
    532 	.long	1413754880
    533 	.long	3219726843
    534 	.long	993632256
    535 	.long	1027030475
    536 	.long	3773204808
    537 	.long	3129236486
    538 	.type	_Pi4x3,@object
    539 	.size	_Pi4x3,24
    540 	.space 8, 0x00 	# pad
    541 	.align 16
    542 _Pi4x4:
    543 	.long	1413480448
    544 	.long	3219726843
    545 	.long	442499072
    546 	.long	3183522913
    547 	.long	771751936
    548 	.long	3146979722
    549 	.long	622873025
    550 	.long	3110831002
    551 	.type	_Pi4x4,@object
    552 	.size	_Pi4x4,32
    553 	.align 16
    554 _SP:
    555 	.word	43691
    556 	.word	43690
    557 	.word	43690
    558 	.word	43690
    559 	.word	49148
    560 	.word	0
    561 	.word	34951
    562 	.word	34952
    563 	.word	34952
    564 	.word	34952
    565 	.word	16376
    566 	.word	0
    567 	.word	50471
    568 	.word	3328
    569 	.word	208
    570 	.word	53261
    571 	.word	49138
    572 	.word	0
    573 	.word	17910
    574 	.word	46614
    575 	.word	7466
    576 	.word	47343
    577 	.word	16364
    578 	.word	0
    579 	.word	33371
    580 	.word	14743
    581 	.word	11071
    582 	.word	55090
    583 	.word	49125
    584 	.word	0
    585 	.word	48947
    586 	.word	35764
    587 	.word	12250
    588 	.word	45202
    589 	.word	16350
    590 	.word	0
    591 	.word	17574
    592 	.word	60698
    593 	.word	10735
    594 	.word	55102
    595 	.word	49110
    596 	.word	0
    597 	.word	34320
    598 	.word	12415
    599 	.word	25249
    600 	.word	51489
    601 	.word	16334
    602 	.word	0
    603 	.type	_SP,@object
    604 	.size	_SP,96
    605 	.align 16
    606 _CP:
    607 	.word	0
    608 	.word	0
    609 	.word	0
    610 	.word	32768
    611 	.word	49150
    612 	.word	0
    613 	.word	43685
    614 	.word	43690
    615 	.word	43690
    616 	.word	43690
    617 	.word	16378
    618 	.word	0
    619 	.word	39983
    620 	.word	2912
    621 	.word	24758
    622 	.word	46603
    623 	.word	49141
    624 	.word	0
    625 	.word	61476
    626 	.word	3244
    627 	.word	208
    628 	.word	53261
    629 	.word	16367
    630 	.word	0
    631 	.word	1022
    632 	.word	16229
    633 	.word	32187
    634 	.word	37874
    635 	.word	49129
    636 	.word	0
    637 	.word	55373
    638 	.word	44526
    639 	.word	50840
    640 	.word	36726
    641 	.word	16354
    642 	.word	0
    643 	.word	55994
    644 	.word	65145
    645 	.word	59958
    646 	.word	51657
    647 	.word	49114
    648 	.word	0
    649 	.word	15046
    650 	.word	2976
    651 	.word	1998
    652 	.word	54661
    653 	.word	16338
    654 	.word	0
    655 	.type	_CP,@object
    656 	.size	_CP,96
    657 	.align 16
    658 _ones:
    659 	.long	0
    660 	.long	1072693248
    661 	.long	0
    662 	.long	3220176896
    663 	.type	_ones,@object
    664 	.size	_ones,16
    665 	.data
    666 	.hidden __libm_reduce_pi04l
    667 	.section .note.GNU-stack, ""
    668 # End
    669