| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483 | /** Math library** Copyright (C) 2016 Intel Corporation. All rights reserved.** Redistribution and use in source and binary forms, with or without* modification, are permitted provided that the following conditions* are met:**   * Redistributions of source code must retain the above copyright*     notice, this list of conditions and the following disclaimer.*   * Redistributions in binary form must reproduce the above copyright*     notice, this list of conditions and the following disclaimer in*     the documentation and/or other materials provided with the*     distribution.*   * Neither the name of Intel Corporation nor the names of its*     contributors may be used to endorse or promote products derived*     from this software without specific prior written permission.** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.*** Author Name <jingwei.zhang@intel.com>*   History:*   03-14-2016 Initial version. numerics svn rev. 12864*/	.file "fmal.c"	.text..TXTST0:# -- Begin  fmal	.text       .align    16,0x90	.globl fmalfmal:# parameter 1: 8 + %ebp# parameter 2: 20 + %ebp# parameter 3: 32 + %ebp..B1.1:..L1:        pushl     %ebp        movl      %esp, %ebp        andl      $-16, %esp        pushl     %esi        pushl     %edi        pushl     %ebx        subl      $100, %esp..B1.2:        fnstcw    62(%esp)..B1.3:        fnstcw    88(%esp)..B1.4:        movzbl    17(%ebp), %edi        movzbl    41(%ebp), %ebx        andl      $128, %edi        andl      $128, %ebx        movzbl    29(%ebp), %edx        shrl      $7, %edi        andl      $128, %edx        shrl      $7, %ebx        movzwl    88(%esp), %ecx        movl      %edi, 80(%esp)        andl      $3072, %ecx        movl      %ebx, 84(%esp)        movzwl    16(%ebp), %edi        movzwl    40(%ebp), %ebx        movl      %ebx, %eax        movl      %ecx, 72(%esp)        movl      %edi, %ecx        shrl      $7, %edx        andl      $32767, %ecx        movzwl    28(%ebp), %esi        andl      $32767, %eax        movl      %edx, 32(%esp)        movl      %esi, %edx        movl      %eax, 56(%esp)        andl      $32767, %edx        call      ..L2..L2:        popl      %eax        lea       _GLOBAL_OFFSET_TABLE_+[. - ..L2](%eax), %eax        cmpl      $32767, %ecx        movl      %eax, 76(%esp)        je        ..B1.21..B1.5:        testl     %ecx, %ecx        jne       ..B1.8..B1.6:        cmpl      $0, 12(%ebp)        jne       ..B1.9..B1.7:        cmpl      $0, 8(%ebp)        je        ..B1.20        jmp       ..B1.9..B1.8:        cmpl      $16383, %ecx        je        ..B1.204..B1.9:        cmpl      $32767, %edx        je        ..B1.18..B1.10:        testl     %edx, %edx        jne       ..B1.13..B1.11:        cmpl      $0, 24(%ebp)        jne       ..B1.14..B1.12:        cmpl      $0, 20(%ebp)        je        ..B1.18        jmp       ..B1.14..B1.13:        cmpl      $16383, %edx        je        ..B1.202..B1.14:        cmpl      $32767, 56(%esp)        je        ..B1.18..B1.15:        cmpl      $0, 56(%esp)        jne       ..B1.54..B1.16:        cmpl      $0, 36(%ebp)        jne       ..B1.54..B1.17:        cmpl      $0, 32(%ebp)        jne       ..B1.54..B1.18:        testl     %ecx, %ecx        jne       ..B1.21..B1.19:        cmpl      $0, 12(%ebp)        jne       ..B1.27..B1.209:        cmpl      $0, 8(%ebp)..B1.20:        jne       ..B1.27..B1.21:        testl     %edx, %edx        jne       ..B1.24..B1.22:        cmpl      $0, 24(%ebp)        jne       ..B1.27..B1.23:        cmpl      $0, 20(%ebp)        jne       ..B1.27..B1.24:        cmpl      $0, 56(%esp)        jne       ..B1.28..B1.25:        cmpl      $0, 36(%ebp)        jne       ..B1.27..B1.26:        cmpl      $0, 32(%ebp)        je        ..B1.28..B1.27:        fldl      _smallest_value_64@GOTOFF(%eax)        fstpl     64(%esp)..B1.28:        cmpl      $32767, %ecx        je        ..B1.185..B1.29:        cmpl      $32767, %edx        je        ..B1.176..B1.30:        cmpl      $32767, 56(%esp)        je        ..B1.167..B1.31:        cmpl      $32767, %ecx        jge       ..B1.34..B1.32:        cmpl      $32767, %edx        jge       ..B1.34..B1.33:        cmpl      $32767, 56(%esp)        je        ..B1.206..B1.34:        movzwl    62(%esp), %edx        movl      %edx, %eax        andl      $768, %eax        cmpl      $768, %eax        je        ..B1.166..B1.35:        orl       $-64768, %edx        movw      %dx, 60(%esp)..B1.36:        fldcw     60(%esp)..B1.37:        movzwl    16(%ebp), %edi        movl      $1, %edx..B1.38:        fldt      8(%ebp)        testl     $32767, %edi        fldt      20(%ebp)        fmulp     %st, %st(1)        jne       ..B1.41..B1.39:        cmpl      $0, 12(%ebp)        jne       ..B1.41..B1.40:        cmpl      $0, 8(%ebp)        je        ..B1.50..B1.41:        movzwl    28(%ebp), %eax        testl     $32767, %eax        jne       ..B1.46..B1.42:        cmpl      $0, 24(%ebp)        jne       ..B1.46..B1.43:        cmpl      $0, 20(%ebp)        je        ..B1.50..B1.46:        fstpt     20(%esp)        fldt      20(%esp)..B1.47:        movzwl    28(%esp), %eax        testl     $32767, %eax        jne       ..B1.50..B1.48:        cmpl      $0, 24(%esp)        jne       ..B1.50..B1.49:        cmpl      $0, 20(%esp)        je        ..B1.51..B1.50:        fldt      32(%ebp)        faddp     %st, %st(1)        fstpt     20(%esp)        fldt      20(%esp)..B1.51:        fstp      %st(0)        testl     %edx, %edx        je        ..B1.53..B1.52:        fldcw     62(%esp)..B1.53:        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.54:        testl     %ecx, %ecx        je        ..B1.57..B1.55:        testl     %edx, %edx        je        ..B1.57..B1.56:        cmpl      $0, 56(%esp)        jne       ..B1.69..B1.57:        fldl      _smallest_value_64@GOTOFF(%eax)        movzwl    62(%esp), %eax        movl      %eax, (%esp)        andl      $768, %eax        fstpl     64(%esp)        cmpl      $768, %eax        je        ..B1.201..B1.58:        movl      (%esp), %eax        orl       $-64768, %eax        movw      %ax, 60(%esp)..B1.59:        fldcw     60(%esp)..B1.60:        movzwl    16(%ebp), %edi        movl      $1, %eax        movzwl    28(%ebp), %esi        movzwl    40(%ebp), %ebx..B1.61:        testl     $32767, %edi        jne       ..B1.63..B1.62:        andl      $-32768, %edi        orl       $-49153, %edi        movw      %di, 16(%ebp)        movl      76(%esp), %ecx        movl      80(%esp), %edi        orl       $-2147483648, 12(%ebp)        fldt      8(%ebp)        fsubl     _ones@GOTOFF(%ecx,%edi,8)        fstpt     8(%ebp)        movzwl    16(%ebp), %ecx        andl      $32767, %ecx        addl      $-16382, %ecx..B1.63:        testl     $32767, %esi        jne       ..B1.65..B1.64:        andl      $-32768, %esi        orl       $-49153, %esi        movw      %si, 28(%ebp)        movl      76(%esp), %edx        movl      32(%esp), %esi        orl       $-2147483648, 24(%ebp)        fldt      20(%ebp)        fsubl     _ones@GOTOFF(%edx,%esi,8)        fstpt     20(%ebp)        movzwl    28(%ebp), %edx        andl      $32767, %edx        addl      $-16382, %edx..B1.65:        testl     $32767, %ebx        jne       ..B1.67..B1.66:        andl      $-32768, %ebx        orl       $-49153, %ebx        movw      %bx, 40(%ebp)        movl      76(%esp), %ebx        movl      84(%esp), %esi        orl       $-2147483648, 36(%ebp)        fldt      32(%ebp)        fsubl     _ones@GOTOFF(%ebx,%esi,8)        fstpt     32(%ebp)        movzwl    40(%ebp), %edi        andl      $32767, %edi        addl      $-16382, %edi        movl      %edi, 56(%esp)..B1.67:        testl     %eax, %eax        je        ..B1.69..B1.68:        fldcw     62(%esp)..B1.69:        movl      36(%ebp), %eax        lea       -16383(%ecx,%edx), %edx        movl      %eax, 4(%esp)        movl      32(%ebp), %eax        movl      %eax, (%esp)        movl      32(%esp), %eax        movl      8(%ebp), %edi        xorl      %eax, 80(%esp)        movl      %edi, %eax        movl      20(%ebp), %ebx        movl      %edx, 52(%esp)        mull      %ebx        movl      %eax, 44(%esp)        movl      %ebx, %eax        movl      12(%ebp), %esi        movl      %edx, 20(%esp)        mull      %esi        movl      %eax, %ecx        movl      %edi, %eax        movl      24(%ebp), %ebx        movl      %edx, 24(%esp)        mull      %ebx        movl      %eax, %edi        movl      %esi, %eax        movl      %edx, 28(%esp)        xorl      %esi, %esi        addl      %edi, %ecx        adcl      $0, %esi        mull      %ebx        addl      20(%esp), %ecx        movl      %edx, %ebx        movl      %ecx, 48(%esp)        adcl      $0, %esi        xorl      %edx, %edx        addl      %eax, %esi        movl      24(%esp), %ecx        adcl      $0, %edx        xorl      %eax, %eax        addl      28(%esp), %ecx        adcl      $0, %eax        addl      %ecx, %esi        adcl      %eax, %edx        addl      %edx, %ebx        movl      52(%esp), %edx        testl     $-2147483648, %ebx        je        ..B1.71..B1.70:        incl      %edx        jmp       ..B1.72..B1.71:        movl      %esi, %edi        addl      %ebx, %ebx        shrl      $31, %edi        addl      %esi, %esi        movl      48(%esp), %eax        orl       %edi, %ebx        movl      %eax, %edi        addl      %eax, %eax        shrl      $31, %edi        movl      44(%esp), %ecx        orl       %edi, %esi        movl      %ecx, %edi        addl      %ecx, %ecx        shrl      $31, %edi        orl       %edi, %eax        movl      %eax, 48(%esp)        movl      %ecx, 44(%esp)..B1.72:        cmpl      56(%esp), %edx        jg        ..B1.77..B1.73:        jne       ..B1.78..B1.74:        cmpl      4(%esp), %ebx        ja        ..B1.77..B1.75:        jne       ..B1.78..B1.76:        cmpl      (%esp), %esi        jb        ..B1.78..B1.77:        movl      %edx, %eax        subl      56(%esp), %eax        movl      4(%esp), %edi        movl      %eax, 32(%esp)        movl      (%esp), %eax        movl      %edi, 28(%esp)        xorl      %edi, %edi        movl      %eax, 36(%esp)        movl      %edi, 40(%esp)        jmp       ..B1.79..B1.78:        movl      56(%esp), %eax        movl      %eax, %edi        subl      %edx, %edi        movl      %eax, %edx        movl      80(%esp), %eax        movl      %eax, 84(%esp)        movzbl    41(%ebp), %eax        movl      %ebx, 28(%esp)        andl      $128, %eax        movl      48(%esp), %ebx        movl      %edi, 32(%esp)        shrl      $7, %eax        movl      %esi, 36(%esp)        movl      %ebx, 40(%esp)        movl      44(%esp), %edi        movl      %eax, 80(%esp)        xorl      %eax, %eax        movl      4(%esp), %ebx        movl      (%esp), %esi        movl      %eax, 44(%esp)        movl      %eax, 48(%esp)..B1.79:        cmpl      $0, 32(%esp)        je        ..B1.89..B1.80:        cmpl      $32, 32(%esp)        jge       ..B1.82..B1.81:        movl      %esi, 20(%esp)        movl      %edi, %eax        movl      32(%esp), %esi        movl      %esi, %ecx        movl      %edx, 52(%esp)        movl      %esi, %edx        movl      %ebx, 24(%esp)        negl      %edx        movl      $-1, %ebx        shrl      %cl, %ebx        movl      %edx, %ecx        shll      %cl, %eax        notl      %ebx        movl      %eax, 56(%esp)        movl      40(%esp), %eax        shll      %cl, %eax        movl      %esi, %ecx        shrl      %cl, %edi        andl      %ebx, %eax        orl       %eax, %edi        movl      %edx, %ecx        movl      %edi, 4(%esp)        movl      36(%esp), %edi        movl      %edi, %eax        shll      %cl, %eax        movl      %esi, %ecx        andl      %ebx, %eax        movl      %eax, (%esp)        movl      40(%esp), %eax        shrl      %cl, %eax        movl      %edx, %ecx        orl       (%esp), %eax        movl      28(%esp), %edx        movl      %eax, 40(%esp)        movl      %edx, %eax        shll      %cl, %eax        movl      %esi, %ecx        shrl      %cl, %edi        andl      %ebx, %eax        shrl      %cl, %edx        orl       %eax, %edi        movl      %edi, 36(%esp)        movl      %edx, 28(%esp)        movl      20(%esp), %esi        movl      52(%esp), %edx        movl      24(%esp), %ebx        movl      4(%esp), %edi        jmp       ..B1.90..B1.82:        cmpl      $64, 32(%esp)        jge       ..B1.84..B1.83:        movl      %ebx, 24(%esp)        movl      32(%esp), %ebx        movl      %ebx, %ecx        movl      %edx, 52(%esp)        movl      %ebx, %edx        movl      %esi, 20(%esp)        negl      %edx        movl      $-1, %esi        shrl      %cl, %esi        movl      %edx, %ecx        movl      40(%esp), %eax        notl      %esi        shll      %cl, %eax        xorl      %ecx, %ecx        testl     %edi, %edi        movl      %esi, (%esp)        setne     %cl        andl      (%esp), %eax        movl      36(%esp), %esi        orl       %ecx, %eax        movl      %edx, %ecx        movl      %esi, %edi        shll      %cl, %edi        movl      %ebx, %ecx        movl      %eax, 56(%esp)        movl      40(%esp), %eax        andl      (%esp), %edi        shrl      %cl, %eax        movl      %edx, %ecx        movl      28(%esp), %edx        orl       %eax, %edi        movl      %edx, %eax        shll      %cl, %eax        movl      %ebx, %ecx        andl      (%esp), %eax        shrl      %cl, %esi        shrl      %cl, %edx        orl       %esi, %eax        movl      %edx, 36(%esp)        movl      %eax, 40(%esp)        movl      $0, 28(%esp)        movl      20(%esp), %esi        movl      52(%esp), %edx        movl      24(%esp), %ebx        jmp       ..B1.90..B1.84:        cmpl      $96, 32(%esp)        jge       ..B1.86..B1.85:        movl      %edx, 52(%esp)        movl      32(%esp), %edx        movl      %edx, %ecx        movl      %ebx, 24(%esp)        movl      %edx, %ebx        movl      %esi, 20(%esp)        movl      $-1, %esi        negl      %ebx        movl      %ebx, (%esp)        shrl      %cl, %esi        xorl      %ebx, %ebx        orl       40(%esp), %edi        notl      %esi        movl      (%esp), %ecx        movl      36(%esp), %eax        setne     %bl        shll      %cl, %eax        andl      %esi, %eax        orl       %ebx, %eax        movl      %eax, 56(%esp)        movl      28(%esp), %eax        movl      %eax, %edi        shll      %cl, %edi        movl      %edx, %ecx        andl      %esi, %edi        xorl      %edx, %edx        movl      36(%esp), %esi        shrl      %cl, %esi        shrl      %cl, %eax        orl       %esi, %edi        movl      %edx, 36(%esp)        movl      %edx, 28(%esp)        movl      %eax, 40(%esp)        movl      20(%esp), %esi        movl      52(%esp), %edx        movl      24(%esp), %ebx        jmp       ..B1.90..B1.86:        cmpl      $128, 32(%esp)        jge       ..B1.88..B1.87:        movl      %edx, 52(%esp)        movl      32(%esp), %edx        movl      %edx, %eax        movl      %ebx, 24(%esp)        negl      %eax        movl      %edx, %ecx        movl      $-1, %ebx        movl      %esi, 20(%esp)        movl      28(%esp), %esi        shrl      %cl, %ebx        movl      %eax, %ecx        movl      %esi, %eax        notl      %ebx        shll      %cl, %eax        movl      36(%esp), %ecx        andl      %ebx, %eax        orl       40(%esp), %ecx        xorl      %ebx, %ebx        orl       %edi, %ecx        movl      %edx, %ecx        movl      %esi, %edi        setne     %bl        xorl      %edx, %edx        movl      %edx, 40(%esp)        orl       %ebx, %eax        movl      %edx, 36(%esp)        movl      %edx, 28(%esp)        movl      %eax, 56(%esp)        shrl      %cl, %edi        movl      20(%esp), %esi        movl      52(%esp), %edx        movl      24(%esp), %ebx        jmp       ..B1.90..B1.88:        movl      28(%esp), %ecx        orl       36(%esp), %ecx        xorl      %eax, %eax        orl       40(%esp), %ecx        orl       %edi, %ecx        setne     %al        xorl      %edi, %edi        movl      %eax, 56(%esp)        movl      %edi, 40(%esp)        movl      %edi, 36(%esp)        movl      %edi, 28(%esp)        jmp       ..B1.90..B1.89:        movl      $0, 56(%esp)..B1.90:        movl      80(%esp), %eax        cmpl      84(%esp), %eax        jne       ..B1.94..B1.91:        movl      44(%esp), %eax        addl      %eax, %edi        cmpl      %eax, %edi        movl      $0, %eax        movl      48(%esp), %ecx        setb      %al        addl      40(%esp), %ecx        movl      %edi, 4(%esp)        movl      $0, %edi        adcl      $0, %edi        addl      %eax, %ecx        adcl      $0, %edi        xorl      %eax, %eax        addl      36(%esp), %esi        movl      %ecx, 48(%esp)        adcl      $0, %eax        addl      %edi, %esi        adcl      $0, %eax        xorl      %edi, %edi        addl      28(%esp), %ebx        adcl      $0, %edi        addl      %eax, %ebx        adcl      $0, %edi        movl      4(%esp), %edi        je        ..B1.93..B1.92:        orl       48(%esp), %edi        movl      %esi, %eax        shll      $31, %eax        incl      %edx        orl       56(%esp), %edi        movl      %eax, 36(%esp)        movl      %ebx, %edi        movl      $0, %eax        setne     %al        shll      $31, %edi        shrl      $1, %esi        shrl      $1, %ebx        orl       %edi, %esi        orl       %eax, 36(%esp)        orl       $-2147483648, %ebx        jmp       ..B1.116..B1.93:        orl       56(%esp), %edi        movl      $0, %eax        setne     %al        orl       48(%esp), %eax        movl      %eax, 36(%esp)        jmp       ..B1.116..B1.94:        negl      56(%esp)        movl      %edx, 52(%esp)        movl      $0, %edx        movl      44(%esp), %ecx        setne     %dl        xorl      %eax, %eax        subl      %edi, %ecx        movl      48(%esp), %edi        sbbl      $0, %eax        subl      %edx, %ecx        movl      %ecx, 44(%esp)        sbbl      $0, %eax        xorl      %ecx, %ecx        subl      40(%esp), %edi        cltd              sbbl      $0, %ecx        addl      %eax, %edi        movl      %edi, 48(%esp)        adcl      %edx, %ecx        xorl      %edi, %edi        subl      36(%esp), %esi        movl      %ecx, %eax        cltd              sbbl      $0, %edi        addl      %esi, %ecx        movl      %ecx, 32(%esp)        adcl      %edx, %edi        subl      28(%esp), %ebx        movl      52(%esp), %edx        addl      %edi, %ebx        je        ..B1.96..B1.95:        movl      $0, 28(%esp)        movl      %ebx, %eax        jmp       ..B1.104..B1.96:        cmpl      $0, 32(%esp)        je        ..B1.98..B1.97:        movl      %ecx, %eax        movl      $32, 28(%esp)        jmp       ..B1.104..B1.98:        cmpl      $0, 48(%esp)        je        ..B1.100..B1.99:        movl      48(%esp), %eax        movl      $64, 28(%esp)        jmp       ..B1.104..B1.100:        cmpl      $0, 44(%esp)        je        ..B1.102..B1.101:        movl      44(%esp), %eax        movl      $96, 28(%esp)        jmp       ..B1.104..B1.102:        cmpl      $0, 56(%esp)        je        ..B1.165..B1.103:        movl      56(%esp), %eax        movl      $128, 28(%esp)..B1.104:        testl     $-2147483648, %eax        jne       ..B1.108..B1.105:        movl      28(%esp), %esi..B1.106:        addl      %eax, %eax        incl      %esi        testl     $-2147483648, %eax        je        ..B1.106..B1.107:        movl      %esi, 28(%esp)..B1.108:        cmpl      $32, 28(%esp)        jge       ..B1.110..B1.109:        movl      28(%esp), %edi        movl      %edi, %esi        movl      %edx, 52(%esp)        movl      %edi, %ecx        movl      $1, %edx        negl      %esi        movl      %esi, (%esp)        shll      %cl, %edx        movl      44(%esp), %esi        decl      %edx        orl       56(%esp), %esi        movl      %ebx, 24(%esp)        movl      48(%esp), %ebx        movl      %ebx, %eax        movl      %edx, 4(%esp)        movl      $0, %edx        setne     %dl        shll      %cl, %eax        orl       %edx, %eax        movl      %eax, 36(%esp)        movl      32(%esp), %eax        movl      %eax, %esi        shll      %cl, %esi        movl      (%esp), %ecx        shrl      %cl, %ebx        movl      %edi, %ecx        andl      4(%esp), %ebx        orl       %ebx, %esi        movl      24(%esp), %ebx        shll      %cl, %ebx        movl      (%esp), %ecx        shrl      %cl, %eax        andl      4(%esp), %eax        movl      52(%esp), %edx        orl       %eax, %ebx        jmp       ..B1.115..B1.110:        cmpl      $64, 28(%esp)        jge       ..B1.112..B1.111:        movl      28(%esp), %eax        movl      %eax, %ecx        movl      %edx, 52(%esp)        movl      $1, %edx        shll      %cl, %edx        movl      %eax, %esi        decl      %edx        negl      %esi        cmpl      $0, 56(%esp)        movl      44(%esp), %edi        movl      %edi, %ebx        movl      %edx, 4(%esp)        movl      $0, %edx        setne     %dl        shll      %cl, %ebx        orl       %edx, %ebx        movl      %ebx, 36(%esp)        movl      %esi, (%esp)        movl      48(%esp), %ebx        movl      %ebx, %esi        shll      %cl, %esi        movl      (%esp), %ecx        shrl      %cl, %edi        movl      %eax, %ecx        andl      4(%esp), %edi        orl       %edi, %esi        movl      32(%esp), %edi        shll      %cl, %edi        movl      (%esp), %ecx        shrl      %cl, %ebx        andl      4(%esp), %ebx        movl      52(%esp), %edx        orl       %edi, %ebx        jmp       ..B1.115..B1.112:        cmpl      $96, 28(%esp)        jge       ..B1.114..B1.113:        movl      28(%esp), %eax        movl      %eax, %esi        movl      %eax, %ecx        movl      $1, %edi        movl      %edx, 52(%esp)        negl      %esi        movl      56(%esp), %edx        movl      44(%esp), %ebx        shll      %cl, %edx        movl      %esi, (%esp)        movl      %ebx, %esi        movl      %edx, 36(%esp)        shll      %cl, %edi        shll      %cl, %esi        decl      %edi        movl      (%esp), %ecx        shrl      %cl, %edx        movl      %eax, %ecx        andl      %edi, %edx        orl       %edx, %esi        movl      48(%esp), %edx        shll      %cl, %edx        movl      (%esp), %ecx        shrl      %cl, %ebx        andl      %edi, %ebx        orl       %edx, %ebx        movl      52(%esp), %edx        jmp       ..B1.115..B1.114:        movl      28(%esp), %ecx        xorl      %eax, %eax        movl      44(%esp), %ebx        xorl      %esi, %esi        shll      %cl, %ebx        cmpl      $128, %ecx        movl      %eax, 36(%esp)        jl        ..L3        movl      $0, %ebx..L3:..B1.115:        subl      28(%esp), %edx..B1.116:        lea       -1(%edx), %edi        cmpl      $32766, %edi        jb        ..B1.126..B1.117:        cmpl      $32767, %edx        jge       ..B1.164..B1.118:        negl      %edx        incl      %edx        cmpl      $32, %edx        jge       ..B1.120..B1.119:        movl      %edx, %edi        movl      %edx, %ecx        negl      %edi        xorl      %eax, %eax        movl      %edi, (%esp)        movl      $-1, %edi        shrl      %cl, %edi        cmpl      $0, 36(%esp)        notl      %edi        movl      (%esp), %ecx        movl      %esi, 20(%esp)        setne     %al        shll      %cl, %esi        andl      %edi, %esi        orl       %esi, %eax        movl      %eax, 36(%esp)        movl      %ebx, %eax        movl      (%esp), %ecx        shll      %cl, %eax        movl      %edx, %ecx        movl      20(%esp), %esi        andl      %edi, %eax        shrl      %cl, %esi        shrl      %cl, %ebx        orl       %eax, %esi        jmp       ..B1.125..B1.120:        cmpl      $64, %edx        jge       ..B1.122..B1.121:        movl      %edx, %edi        movl      %edx, %ecx        negl      %edi        movl      $-1, %eax        shrl      %cl, %eax        movl      %edi, %ecx        movl      %ebx, %edi        notl      %eax        shll      %cl, %edi        movl      %edx, %ecx        andl      %eax, %edi        xorl      %eax, %eax        orl       36(%esp), %esi        movl      %ebx, %esi        setne     %al        xorl      %ebx, %ebx        orl       %edi, %eax        movl      %eax, 36(%esp)        shrl      %cl, %esi        jmp       ..B1.125..B1.122:        cmpl      $96, %edx        jge       ..B1.124..B1.123:        movl      %edx, %edi        movl      %edx, %ecx        negl      %edi        movl      $-1, %eax        movl      %ebx, %edx        shrl      %cl, %eax        shrl      %cl, %edx        movl      %edi, %ecx        shll      %cl, %ebx        notl      %eax        andl      %eax, %ebx        orl       %esi, %ebx        orl       36(%esp), %ebx        movl      $0, %ebx        setne     %bl        xorl      %esi, %esi        orl       %edx, %ebx        movl      %ebx, 36(%esp)        xorl      %ebx, %ebx        jmp       ..B1.125..B1.124:        xorl      %esi, %esi        movl      $1, 36(%esp)        xorl      %ebx, %ebx..B1.125:        xorl      %edx, %edx..B1.126:        cmpl      $0, 36(%esp)        je        ..B1.163..B1.127:        movl      76(%esp), %edi        cmpl      $0, 72(%esp)        fldt      _small_value_80@GOTOFF(%edi)        fldl      _ones@GOTOFF(%edi)        fadd      %st(1), %st        fstpt     8(%esp)        je        ..B1.194..B1.128:        cmpl      $3072, 72(%esp)        je        ..B1.159..B1.129:        cmpl      $2048, 72(%esp)        jne       ..B1.144..B1.130:        testl     %edx, %edx        jne       ..B1.138..B1.131:        cmpl      $0, 80(%esp)        jne       ..B1.137..B1.132:        cmpl      $2147483647, %ebx        jb        ..B1.137..B1.133:        jne       ..B1.139..B1.134:        cmpl      $-1, %esi        jb        ..B1.137..B1.135:        jne       ..B1.139..B1.136:        cmpl      $-2147483648, 36(%esp)        jae       ..B1.139..B1.137:        fmul      %st(0), %st        fstpt     8(%esp)        fldt      8(%esp)..B1.138:        cmpl      $0, 80(%esp)        jne       ..B1.211..B1.139:        fstp      %st(0)        incl      %esi        jne       ..B1.142..B1.140:        movl      $-2147483648, %edi        testl     %edx, %edx        je        ..L4        movl      $0, %edi..L4:        incl      %ebx        cmpl      %edi, %ebx        jne       ..B1.142..B1.141:        orl       $-2147483648, %ebx        incl      %edx..B1.142:        cmpl      $32767, %edx        jl        ..B1.163..B1.143:        movl      80(%esp), %edx        movl      76(%esp), %ebx        lea       (,%edx,8), %eax        fldt      _large_value_80@GOTOFF(%ebx)        lea       (%eax,%edx,4), %ecx        fldt      _large_value_80@GOTOFF(%ebx,%ecx)        fmulp     %st, %st(1)        fstpt     8(%esp)        fldt      8(%esp)        fstpt     20(%esp)        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.144:        cmpl      $1024, 72(%esp)        jne       ..B1.211..B1.145:        testl     %edx, %edx        jne       ..B1.153..B1.146:        cmpl      $0, 80(%esp)        je        ..B1.152..B1.147:        cmpl      $2147483647, %ebx        jb        ..B1.152..B1.148:        jne       ..B1.154..B1.149:        cmpl      $-1, %esi        jb        ..B1.152..B1.150:        jne       ..B1.154..B1.151:        cmpl      $-2147483648, 36(%esp)        jae       ..B1.154..B1.152:        fmul      %st(0), %st        fstpt     8(%esp)        fldt      8(%esp)..B1.153:        cmpl      $0, 80(%esp)        je        ..B1.211..B1.154:        fstp      %st(0)        incl      %esi        jne       ..B1.157..B1.155:        movl      $-2147483648, %edi        testl     %edx, %edx        je        ..L5        movl      $0, %edi..L5:        incl      %ebx        cmpl      %edi, %ebx        jne       ..B1.157..B1.156:        orl       $-2147483648, %ebx        incl      %edx..B1.157:        cmpl      $32767, %edx        jl        ..B1.163..B1.158:        movl      80(%esp), %edx        movl      76(%esp), %ebx        lea       (,%edx,8), %eax        fldt      _large_value_80@GOTOFF(%ebx)        lea       (%eax,%edx,4), %ecx        fldt      _large_value_80@GOTOFF(%ebx,%ecx)        fmulp     %st, %st(1)        fstpt     8(%esp)        fldt      8(%esp)        fstpt     20(%esp)        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.159:        testl     %edx, %edx        je        ..B1.162..B1.160:        lea       -1(%edx), %eax        lea       -2147483648(%ebx), %edi        orl       %edi, %eax        orl       %esi, %eax        jne       ..B1.211..B1.161:        cmpl      $-2147483648, 36(%esp)        jne       ..B1.211..B1.162:        fmul      %st(0), %st        fstpt     8(%esp)..B1.163:        movzbl    29(%esp), %eax        andl      $32767, %edx        movl      80(%esp), %edi        andl      $127, %eax        shll      $7, %edi        orl       %edi, %eax        movb      %al, 29(%esp)        movzwl    28(%esp), %edi        andl      $-32768, %edi        orl       %edx, %edi        movw      %di, 28(%esp)        movl      %ebx, 24(%esp)        movl      %esi, 20(%esp)        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.164:        movl      80(%esp), %edx        movl      76(%esp), %ebx        lea       (,%edx,8), %eax        fldt      _large_value_80@GOTOFF(%ebx)        lea       (%eax,%edx,4), %ecx        fldt      _large_value_80@GOTOFF(%ebx,%ecx)        fmulp     %st, %st(1)        fstpt     8(%esp)        fldt      8(%esp)        fstpt     20(%esp)        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.165:        xorl      %eax, %eax        cmpl      $1024, 72(%esp)        movl      76(%esp), %edi        sete      %al        fldl      _zeros@GOTOFF(%edi,%eax,8)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.166:        xorl      %edx, %edx        jmp       ..B1.38..B1.167:        cmpl      $-2147483648, 36(%ebp)        jne       ..B1.169..B1.168:        cmpl      $0, 32(%ebp)        je        ..B1.31..B1.169:        movzwl    62(%esp), %edx        movl      %edx, %eax        andl      $768, %eax        cmpl      $768, %eax        je        ..B1.175..B1.170:        orl       $-64768, %edx        movw      %dx, 60(%esp)..B1.171:        fldcw     60(%esp)..B1.172:        fldt      32(%ebp)        fldt      8(%ebp)        fmulp     %st, %st(1)        fldt      20(%ebp)        fmulp     %st, %st(1)        fstpt     20(%esp)..B1.173:        fldcw     62(%esp)..B1.174:        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.175:        fldt      32(%ebp)        fldt      8(%ebp)        fmulp     %st, %st(1)        fldt      20(%ebp)        fmulp     %st, %st(1)        fstpt     20(%esp)        jmp       ..B1.174..B1.176:        cmpl      $-2147483648, 24(%ebp)        jne       ..B1.178..B1.177:        cmpl      $0, 20(%ebp)        je        ..B1.30..B1.178:        movzwl    62(%esp), %edx        movl      %edx, %eax        andl      $768, %eax        cmpl      $768, %eax        je        ..B1.184..B1.179:        orl       $-64768, %edx        movw      %dx, 60(%esp)..B1.180:        fldcw     60(%esp)..B1.181:        fldt      20(%ebp)        fldt      32(%ebp)        fmulp     %st, %st(1)        fldt      8(%ebp)        fmulp     %st, %st(1)        fstpt     20(%esp)..B1.182:        fldcw     62(%esp)..B1.183:        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.184:        fldt      20(%ebp)        fldt      32(%ebp)        fmulp     %st, %st(1)        fldt      8(%ebp)        fmulp     %st, %st(1)        fstpt     20(%esp)        jmp       ..B1.183..B1.185:        cmpl      $-2147483648, 12(%ebp)        jne       ..B1.187..B1.186:        cmpl      $0, 8(%ebp)        je        ..B1.29..B1.187:        movzwl    62(%esp), %edx        movl      %edx, %eax        andl      $768, %eax        cmpl      $768, %eax        je        ..B1.193..B1.188:        orl       $-64768, %edx        movw      %dx, 60(%esp)..B1.189:        fldcw     60(%esp)..B1.190:        fldt      8(%ebp)        fldt      20(%ebp)        fmulp     %st, %st(1)        fldt      32(%ebp)        fmulp     %st, %st(1)        fstpt     20(%esp)..B1.191:        fldcw     62(%esp)..B1.192:        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.193:        fldt      8(%ebp)        fldt      20(%ebp)        fmulp     %st, %st(1)        fldt      32(%ebp)        fmulp     %st, %st(1)        fstpt     20(%esp)        jmp       ..B1.192..B1.194:        testl     $-2147483648, 36(%esp)        je        ..B1.159..B1.195:        movl      %esi, %eax        movl      36(%esp), %edi        andl      $1, %eax        andl      $2147483647, %edi        orl       %edi, %eax        je        ..B1.159..B1.196:        incl      %esi        jne       ..B1.199..B1.197:        movl      $-2147483648, %edi        testl     %edx, %edx        je        ..L6        movl      $0, %edi..L6:        incl      %ebx        cmpl      %edi, %ebx        jne       ..B1.199..B1.198:        orl       $-2147483648, %ebx        incl      %edx..B1.199:        cmpl      $32767, %edx        jl        ..B1.159..B1.200:        fstp      %st(0)        movl      80(%esp), %edx        movl      76(%esp), %ebx        lea       (,%edx,8), %eax        fldt      _large_value_80@GOTOFF(%ebx)        lea       (%eax,%edx,4), %ecx        fldt      _large_value_80@GOTOFF(%ebx,%ecx)        fmulp     %st, %st(1)        fstpt     8(%esp)        fldt      8(%esp)        fstpt     20(%esp)        fldt      20(%esp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.201:        xorl      %eax, %eax        jmp       ..B1.61..B1.202:        cmpl      $-2147483648, 24(%ebp)        jne       ..B1.14..B1.203:        cmpl      $0, 20(%ebp)        je        ..B1.18        jmp       ..B1.14..B1.204:        cmpl      $-2147483648, 12(%ebp)        jne       ..B1.9..B1.205:        cmpl      $0, 8(%ebp)        je        ..B1.21        jmp       ..B1.9..B1.206:        fldt      32(%ebp)        addl      $100, %esp        popl      %ebx        popl      %edi        popl      %esi        movl      %ebp, %esp        popl      %ebp        ret       ..B1.211:        fstp      %st(0)        jmp       ..B1.163        .align    16,0x90	.type	fmal,@function	.size	fmal,.-fmal	.data# -- End  fmal	.section .rodata, "a"	.align 4	.align 4_smallest_value_64:	.long	1	.long	0	.long	1	.long	2147483648	.type	_smallest_value_64,@object	.size	_smallest_value_64,16	.align 4_ones:	.long	0	.long	1072693248	.long	0	.long	3220176896	.type	_ones,@object	.size	_ones,16	.align 4_zeros:	.long	0	.long	0	.long	0	.long	2147483648	.type	_zeros,@object	.size	_zeros,16	.align 2_small_value_80:	.word	0	.word	0	.word	0	.word	32768	.word	6383	.word	0	.word	0	.word	0	.word	0	.word	32768	.word	39151	.word	0	.type	_small_value_80,@object	.size	_small_value_80,24	.align 2_large_value_80:	.word	0	.word	0	.word	0	.word	32768	.word	26383	.word	0	.word	0	.word	0	.word	0	.word	32768	.word	59151	.word	0	.type	_large_value_80,@object	.size	_large_value_80,24	.data	.section .note.GNU-stack, ""# End
 |