openbcm

Git mirror of https://github.com/Broadcom-Network-Switching-Software/OpenBCM
git clone git://git.finwo.net/mirror/broadcom/openbcm
Log | Files | Refs | README

phy5464cdiag.c (47084B)


      1 /*
      2  * 
      3  * This license is set out in https://raw.githubusercontent.com/Broadcom-Network-Switching-Software/OpenBCM/master/Legal/LICENSE file.
      4  * 
      5  * Copyright 2007-2019 Broadcom Inc. All rights reserved.
      6  *
      7  * File:        phy5464cdiag.c
      8  * Purpose:     Software Cable Diags for BCM5461, BCM5464, BCM5482, and
      9  *              BCM5488
     10  *
     11  * Based on Broadcom PHY group Cable Diag Software release 3.0
     12  */
     13 
     14 #if defined(INCLUDE_PHY_5464) || defined(INCLUDE_PHY_5482) || \
     15     defined(INCLUDE_PHY_54684_ESW) || defined(INCLUDE_PHY_54680) || \
     16     defined(INCLUDE_PHY_54682) || defined(INCLUDE_PHY_54880)
     17 
     18 #include <sal/core/thread.h>
     19 #include <soc/drv.h>
     20 #include <shared/bsl.h>
     21 #include <soc/debug.h>
     22 #include <soc/phy/phyctrl.h>
     23 #include "phyreg.h"
     24 
     25 typedef phy_ctrl_t*l1;typedef unsigned short int l2;typedef struct{int16 l3;
     26 l1 l4;int16 l5;int16 l6;int16 l7[4];int16 l8[4];int16 l9;int16 l10[4];}l11;
     27 typedef int32(*l12)(l11*l13);typedef struct{int16 l14;int16 l15;int16 l16;
     28 int16 l17;int16 l18;int16 l19;}l20;typedef struct{int16 l21;int16 l22;int16
     29 l23;int16 l24;}l25;extern void l26(l11*l13);extern int16 l27(int32 l28,int16
     30 l29,int16 l30,int16 l31,int32*l32);extern int16 l33(l1 l34,int32*l35,int16*
     31 l36);extern int16 l37(int32 l28,l1 l34);extern int16 l38(l1 l34,int16 l39,
     32 int16 l40,int16 l41,int16 l42);extern int16 l43(l1 l34,int16 l44,int16*l45);
     33 extern int16 l46(l1 l34,int16 l44,int16 l47);extern int16 l48(l1 l34,int l49,
     34 int16*l50);extern int16 l51(l1 l34);extern int16 l52(l1 l34,int16 l53,int16
     35 l54,int16 l55,int16*l45);extern int16 l56(l1 l34,int16 l53,int16 l54,int16 l55
     36 ,int16 l47);extern int16 l57(l1 l34,int16 l40,int l58);extern int16 l59(l1 l34
     37 ,int16 l40,int l58);extern int32 l60(l11*l13);extern int32 l61(l11*l13);
     38 extern int32 l62(l11*l13);extern int32 l63(l11*l13);extern int32 l64(l11*l13)
     39 ;extern int32 l65(l11*l13);extern int32 l66(l11*l13);extern int16 l67(l11*l13
     40 );extern int16 l68(l1 l34);extern int16 l69(l1 l34);extern int16 l70(int16 l71
     41 ,int16 l72,l1 l34,int16 l73,int16 l7[],int16 l8[],int32 l74[4],int16 l75[4+1]
     42 ,int16 l76[4+1][4+1],int16 l77[4+1][4+1],int16 l78[4],int32 l79[4],int16 l80[
     43 4]);extern int16 l81(int16 l71,l1 l34,int16 l73,int16 l7[],int16 l8[],int32
     44 l74[4],int16*l82,int16 l75[4+1],int16 l76[4+1][4+1],int16 l77[4+1][4+1]);
     45 extern char*l83;int16 l69(l1 l34){int l84 = 0;int16 l85 = 0;l84 = 0x0000;if(!
     46 (l34->phy_oui == 0x000af7||l34->phy_model == 0x3e)){return 0x0000;}sal_usleep
     47 (1000*(1));l84|= l46(l34,0x17,(int16)0x0f76);l84|= l46(l34,0x15,(int16)0x0040
     48 );l84|= l46(l34,0x17,(int16)0x0f75);l84|= l46(l34,0x15,(int16)0x003d);l84|= 
     49 l43(l34,0x00,&l85);l85|= 0x1200;l84|= l46(l34,0x0,l85);return l84;}int16 l43(
     50 l1 l34,int16 l44,int16*l45){int l86;uint16 l87 = 0;l86 = READ_PHY_REG(l34->
     51 unit,l34,l44,&l87);*l45 = l87;if(l86<0){return 0x0001;}else{return 0x0000;}}
     52 int16 l46(l1 l34,int16 l44,int16 l47){int l86;uint16 l87;l87 = l47;l86 = 
     53 WRITE_PHY_REG(l34->unit,l34,l44,l87);if(l86<0){return 0x0001;}else{return
     54 0x0000;}}int16 l48(l1 l34,int l49,int16*l50){int16 l84,l88;l84 = 0x0000;l84|= 
     55 l46(l34,0x18,0x7);l84|= l43(l34,0x18,l50);l84|= l46(l34,0x18,(*l50|0x0800)&((
     56 int16)0xFFF8));if(l49!=0){l84|= l43(l34,0x18,&l88);if((l88&0x0800) == 0)l84|= 
     57 0x0008;}return l84;}int16 l51(l1 l34){int16 l84,l89;l84 = 0x0000;l84|= l46(
     58 l34,0x18,0x7);l84|= l43(l34,0x18,&l89);if((l89&0x0800) == 0)l84|= 0x0004;
     59 return l84;}int16 l90(l1 l34,int16 l53,int16 l55,int16*l45){int16 l84;int16
     60 l91;l84 = 0x0000;l91 = ((l53&0x0003)<<13)|(l55&0x00FF);l84|= l46(l34,0x17,l91
     61 );l84|= l43(l34,0x15,l45);return l84;}int16 l52(l1 l34,int16 l53,int16 l54,
     62 int16 l55,int16*l45){int16 l84;int16 l91;l84 = 0x0000;l91 = ((l53&0x0007)<<13
     63 )|((l54&0x001F)<<8)|(l55&0x00FF);l84|= l46(l34,0x17,l91);l84|= l43(l34,0x15,
     64 l45);return l84;}int16 l56(l1 l34,int16 l53,int16 l54,int16 l55,int16 l47){
     65 int16 l84;int16 l91;l84 = 0x0000;l91 = ((l53&0x0007)<<13)|((l54&0x001F)<<8)|(
     66 l55&0x00FF);l84|= l46(l34,0x17,l91);l84|= l46(l34,0x15,l47);return l84;}int16
     67 l57(l1 l34,int16 l40,int l58){int16 l84;l84 = 0x0000;l84|= l46(l34,0x17,
     68 0x0FFF);if(l40 == -1)l84|= l46(l34,0x15,(l58?0x2000:0x20F0));else if(l58 == 1
     69 )l84|= l46(l34,0x15,0x20F0^((0x0010)<<l40));else l84|= 0x0002;return l84;}
     70 int16 l59(l1 l34,int16 l40,int l58){int16 l84;l84 = 0x0000;if(l40 == -1){l84
     71 |= l46(l34,0x17,(int16)0x8005);l84|= l46(l34,0x15,(l58?0x2000:0x3000));}else
     72 if(l58 == 1){l84|= l46(l34,0x17,((l40&0x3)<<13)|0x0005);l84|= l46(l34,0x15,
     73 0x2000);}else{l84|= 0x0002;}return l84;}int32 l62(l11*l13){int16 l92,l93;l1 l4
     74 ;int16 l84;l84 = 0x0000;l4 = l13->l4;l84|= l43(l4,0x1A,&l92);l84|= l43(l4,
     75 0x11,&l93);sal_usleep(1000*(4000));l84|= l43(l4,0x11,&l93);l93&= 0x0FFE;l84|= 
     76 l43(l4,0x1A,&l92);if(l92&6){l93 = 0;}if(l93 == 0x0F00){l84|= l43(l4,0x19,&l92
     77 );l13->l10[0] = (l92>>8)&0x7;return l84;}else{l13->l10[0] = 0;return 0x0004;}
     78 }int32 l63(l11*l13){int16 l92,l93;l1 l4;int16 l84;l84 = 0x0000;l4 = l13->l4;
     79 l84|= l43(l4,0x1A,&l92);l84|= l43(l4,0x11,&l93);sal_usleep(1000*(4000));l84|= 
     80 l43(l4,0x11,&l93);l93&= 0x0FFE;l84|= l43(l4,0x1A,&l92);if(l92&6){l93 = 0;}l13
     81 ->l10[0] = (l93>>8)&0x000F;return l84;}int32 l64(l11*l13){int16 l94,l95;int16
     82 l96,l97;int16 l84;int16 l98;l84 = 0x0000;l84|= l43(l13->l4,0x11,&l98);l98&= 
     83 0x2000;l84|= l46(l13->l4,0x18,7);l84|= l43(l13->l4,0x18,&l94);l94|= 0x0800;
     84 l84|= l46(l13->l4,0x18,l94);for(l97=0;l97<4;l97++){l84|= l90(l13->l4,l97,0x05
     85 ,&l94);if(l94&0x0020){l96 = ((l94>>1)&0x01);l95 = (l94>>3)&0x03;switch(l95){
     86 case 0:if(l98)l13->l10[l97] = (0x0A);else l13->l10[l97] = (0x0B);break;case 1
     87 :if(l98)l13->l10[l97] = (0x0B);else l13->l10[l97] = (0x0A);break;case 2:if(
     88 l98){if(!l96)l13->l10[l97] = (0x0C);else l13->l10[l97] = (0x0D);}else{if(l96)
     89 l13->l10[l97] = (0x0C);else l13->l10[l97] = (0x0D);}break;case 3:if(l98){if(!
     90 l96)l13->l10[l97] = (0x0D);else l13->l10[l97] = (0x0C);}else{if(l96)l13->l10[
     91 l97] = (0x0D);else l13->l10[l97] = (0x0C);}break;}}else{l13->l10[l97] = -1;}}
     92 return l84;}int32 l65(l11*l13){int16 l94;int16 l97;int16 l84;int16 l98;l84 = 
     93 0x0000;l84|= l43(l13->l4,0x11,&l98);l98&= 0x2000;l84|= l46(l13->l4,0x18,7);
     94 l84|= l43(l13->l4,0x18,&l94);l94|= 0x800;l84|= l46(l13->l4,0x18,l94);for(l97=
     95 0;l97<4;l97++){l84|= l90(l13->l4,l97,0x05,&l94);if(l94&0x0020)l13->l10[l97] = 
     96 ((l94>>2)&0x01);else l13->l10[l97] = -1;}if(l98 == 0){l94 = l13->l10[0];l13->
     97 l10[0] = l13->l10[1];l13->l10[1] = l94;l94 = l13->l10[2];l13->l10[2] = l13->
     98 l10[3];l13->l10[3] = l94;}return l84;}int32 l66(l11*l13){int16 l94;int16 l97;
     99 int16 l84;l84 = 0x0000;l84|= l46(l13->l4,0x18,7);l84|= l43(l13->l4,0x18,&l94)
    100 ;l94|= 0x0800;l84|= l46(l13->l4,0x18,l94);for(l97=0;l97<4;l97++){l84|= l90(
    101 l13->l4,l97,0x05,&l94);if(l94&0x0020)l13->l10[l97] =((l94>>6)&0x0F);else l13
    102 ->l10[l97] = -1;}return l84;}static int16 l99(l1 l34,int16 l73){int16 l84;l84
    103 = 0x0000;l84|= l46(l34,0x0,(int16)0x8000);sal_usleep(1000*(1));l84|= l69(l34)
    104 ;l84|= l46(l34,0x00,0x0040);l84|= l46(l34,0x1e,0x0080);l84|= l46(l34,0x18,
    105 0x0C00);l84|= l46(l34,0x17,0x0F2B);l84|= l46(l34,0x15,0x0001);l84|= l46(l34,
    106 0x17,0x0F2A);l84|= l46(l34,0x18,0x0282);l84|= l46(l34,0x15,((int16)0xEEAB));
    107 l84|= l46(l34,0x17,0x0F27);l84|= l46(l34,0x15,((int16)0xD2ED));l84|= l46(l34,
    108 0x17,0x0F28);l84|= l46(l34,0x15,0x2C05);l84|= l46(l34,0x17,0x0F29);l84|= l46(
    109 l34,0x15,0x0010);if(l73 == 0){l84|= l46(l34,0x17,0x0F1D);l84|= l46(l34,0x15,(
    110 (int16)0x1E1E));l84|= l46(l34,0x17,0x0F1E);l84|= l46(l34,0x15,((int16)0x231F)
    111 );l84|= l46(l34,0x17,0x0F1F);l84|= l46(l34,0x15,((int16)0x131A));}return l84;
    112 }static int16 l100(l1 l34,int16 l101,int16 l102,int16 l73){int16 l84;l84 = 
    113 0x0000;if(l101 == 0){if(l73 == 0){l84|= l46(l34,0x17,0x0F14);l84|= l46(l34,
    114 0x15,((int16)0x2E01));l84|= l46(l34,0x17,0x0F15);l84|= l46(l34,0x15,((int16)
    115 0x49AC));l84|= l46(l34,0x17,0x0F16);l84|= l46(l34,0x15,((int16)0x57BB));l84|= 
    116 l46(l34,0x17,0x0F17);l84|= l46(l34,0x15,((int16)0x27A6));l84|= l46(l34,0x17,
    117 0x0F18);l84|= l46(l34,0x15,((int16)0x0785));l84|= l46(l34,0x17,0x0F19);l84|= 
    118 l46(l34,0x15,((int16)0x0025));l84|= l46(l34,0x17,0x0F2C);l84|= l46(l34,0x15,(
    119 (int16)0x0025));}}else{l84|= l46(l34,0x17,0x0F14);l84|= l46(l34,0x15,((int16)
    120 0x0100));l84|= l46(l34,0x17,0x0F15);l84|= l46(l34,0x15,((int16)0x1DBC));l84|= 
    121 l46(l34,0x17,0x0F16);l84|= l46(l34,0x15,((int16)0x1191));l84|= l46(l34,0x17,
    122 0x0F17);l84|= l46(l34,0x15,((int16)0x08B8));l84|= l46(l34,0x17,0x0F18);l84|= 
    123 l46(l34,0x15,((int16)0x01E8));l84|= l46(l34,0x17,0x0F19);l84|= l46(l34,0x15,(
    124 (int16)0x0007));l84|= l46(l34,0x17,0x0F2C);l84|= l46(l34,0x09,(int16)0x9800);
    125 l84|= l46(l34,0x15,((int16)0x0007));}l84|= l46(l34,0x17,0x0F10);l84|= l46(l34
    126 ,0x15,l102);return l84;}static int16 l103(l1 l34,int16 l102,int16 l40,int16
    127 l75[],int16 l76[4+1][4+1],int16 l77[4+1][4+1],int32 l104[4+1][4+1]){int16 l84
    128 ,l105,l106,l107,l108,l109;int16 l110;l84 = 0x0000;if(l40>= 0){l84|= l59(l34,-
    129 1,0);l84|= l59(l34,l40,1);}l84|= l46(l34,0x17,0x0F10);l84|= l46(l34,0x15,l102
    130 |0x0002);l109 = 0;for(l110=0;l110<3000;l110++){l84|= l43(l34,0x15,&l105);if((
    131 l105&0x0200)!= 0){l109 = 1;break;}}l84|= l46(l34,0x17,0x0F11);l84|= l43(l34,
    132 0x15,&l106);assert((l40+1)>= 0);if(l109 == 0){l75[l40+1] = 1;l84|= 0x0001;}
    133 else if((l106&0xF000)!= 0){l75[l40+1] = 1;l84|= 0x0002;}else{l75[l40+1] = 0;}
    134 for(l110=0;l110<4;l110++){l76[l110][l40+1] = (l106>>(l110*2))&0x0003;}if(l40<=
    135 0){l84|= l46(l34,0x17,0x0F12);l84|= l43(l34,0x15,&l107);l77[0][l40+1] = l75[
    136 l40+1]?-99:(l107&0x00FF);l77[1][l40+1] = l75[l40+1]?-99:((l107&0xFF00)>>8);}
    137 l84|= l46(l34,0x17,0x0F13);l84|= l43(l34,0x15,&l108);l77[2][l40+1] = l75[l40+
    138 1]?-99:(l108&0x00FF);l77[3][l40+1] = l75[l40+1]?-99:((l108&0xFF00)>>8);return
    139 l84;}static int16 l111(int16 l112[4],int16 l80[4]){int16 l40,l113,l114,l115[4
    140 ][4],l116,l117;int16 l118,l119,l120,l121,l122;int32 l123,l124,l125,l126,l127,
    141 l128,l129;int32 l130,l131,l132,l133;l119 = -1;l120 = -1;l127 = 32766;l121 = -
    142 1;l122 = -1;l128 = 32767;l114 = 0;for(l40=0;l40<4;l40++){for(l113=l40+1;l113<
    143 4;l113++){l115[l40][l113] = 0;l115[l113][l40] = 0;if((l80[l113] == 0)||(l80[
    144 l40] == 0)){continue;}l126 = (((l112[l113])<(l112[l40]))?(l112[l113]):(l112[l40
    145 ]));l123 = (((((int32)300))>((l126+((int32)14)/2)/((int32)14)))?(((int32)300)
    146 ):((l126+((int32)14)/2)/((int32)14)));l129 = (((l112[l113]-l112[l40])>= 0)?(
    147 l112[l113]-l112[l40]):-(l112[l113]-l112[l40]));if(l129<= l123){l115[l40][l113
    148 ] = 1;l115[l113][l40] = 1;l114++;if(l129<l127){l121 = l119;l122 = l120;l128 = 
    149 l127;l119 = l40;l120 = l113;l127 = l129;}else if(l129<l128){l121 = l40;l122 = 
    150 l113;l128 = l129;}}}}if(l114 == (4*(4-1)/2)){return 4;}else{l117 = -1;l132 = 
    151 100000;for(l116=0;l116<4;l116++){l118 = 1;l133 = 0;for(l40=0;l40<4;l40++){if(
    152 l116 == l40){continue;}for(l113=l40+1;l113<4;l113++){if(l116 == l113){continue;}
    153 l133+= (((l112[l113]-l112[l40])>= 0)?(l112[l113]-l112[l40]):-(l112[l113]-l112
    154 [l40]));if(l115[l113][l40] == 0)l118 = 0;}}if((l118 == 1)&&(l133<l132)){l117 = 
    155 l116;l132 = l133;}}if(l117!= -1){l125 = 0;for(l113=0;l113<4;l113++){if(l117 == 
    156 l113){continue;}l125+= l112[l113];}l130 = l125/(4-1);l124 = (((((int32)600))>((
    157 l130+((int32)10)/2)/((int32)10)))?(((int32)600)):((l130+((int32)10)/2)/((
    158 int32)10)));if(l112[l117]<= l130){l131 = ((((int32)l112[l117])>(l130-l124))?(
    159 (int32)l112[l117]):(l130-l124));}else{l131 = ((((int32)l112[l117])<(l130+l124
    160 ))?((int32)l112[l117]):(l130+l124));}l112[l117] = (int16)((l130+l131+1)/2);
    161 return(4-1);}else if(l119!= -1){if((l121!= -1)&&(l121!= l119)&&(l121!= l120)
    162 &&(l122!= l119)&&(l122!= l120)&&((((l128-l127)>= 0)?(l128-l127):-(l128-l127))
    163 <= 200)){l125 = 0;for(l113=0;l113<4;l113++){l125+= l112[l113];}for(l113=0;
    164 l113<4;l113++){l112[l113] = (int16)(l125/4);}return 1;}else{l130 = (l112[l119
    165 ]+l112[l120]+1)/2;l124 = (((((int32)600))>((l130+((int32)10)/2)/((int32)10)))
    166 ?(((int32)600)):((l130+((int32)10)/2)/((int32)10)));for(l113=0;l113<4;l113++)
    167 {if((l113 == l119)||(l113 == l120))continue;if(l112[l113]<= l130){l131 = ((((
    168 (int32)l112[l113]))>(l130-l124))?(((int32)l112[l113])):(l130-l124));}else{
    169 l131 = (((((int32)l112[l113]))<(l130+l124))?(((int32)l112[l113])):(l130+l124)
    170 );}l112[l113] = (int16)((l130+l131+1)/2);}return 2;}}else{return 0;}}return-1
    171 ;}static int16 l134(int16 l71,int16 l76[4+1][4+1],int16 l77[4+1][4+1],int32
    172 l104[4+1][4+1],int16 l7[],int16 l8[],int32 l74[4],int16*l82){int16 l84;int16
    173 l135,l136,l40,l113,l137;int16 l112[4],l80[4];l84 = 0x0000;*l82 = 0;for(l113=0
    174 ;l113<4;l113++){l8[l113] = (int16)0x7FFF;l137 = 0;for(l135=0;l135<4;l135++){
    175 if(l135 == l113){continue;}l40 = (((l113)<(l135))?(l113):(l135));l136 = (((l113
    176 )>(l135))?(l113):(l135));if((l76[l136][l40+1] == 1)||(l76[l136][l40+1] == 2))
    177 {l7[l113] = 0x0001;l8[l113] = (int16)(((((int32)l8[l113]))<(((int32)l77[l136]
    178 [l40+1]*100)))?(((int32)l8[l113])):(((int32)l77[l136][l40+1]*100)));if(l8[
    179 l113]>l77[l136][l40+1]*100){l74[l113] = l104[l136][l40+1];}*l82|= (0x1<<(l135*4
    180 +l113));l137 = 1;}}if(l137==0){switch(l76[l113][0]){case 0:l7[l113] = 0x0000;
    181 break;case 1:l7[l113] = 0x0002;break;case 2:l7[l113] = 0x0004;break;case 3:l7
    182 [l113] = 0x0001;l84|= 0x0004;break;default:l7[l113] = -99;l84|= 0x0010;break;
    183 }l8[l113] = l77[l113][0]*100;l74[l113] = l104[l113][0];}}for(l113=0;l113<4;
    184 l113++){l112[l113] = l8[l113];if(l7[l113] == 0x0000)l80[l113] = 1;else l80[
    185 l113] = 0;}if(l71!= 0){(void)l111(l112,l80);for(l113=0;l113<4;l113++){if(l7[
    186 l113] == 0x0000)l8[l113] = l112[l113];}}return l84;}int16 l81(int16 l71,l1 l34
    187 ,int16 l73,int16 l7[],int16 l8[],int32 l74[4],int16*l82,int16 l75[4+1],int16
    188 l76[4+1][4+1],int16 l77[4+1][4+1]){int16 l40,l84;int16 l102;int32 l104[4+1][4
    189 +1];l102 = 0;l84 = 0x0000;l84|= l99(l34,l73);for(l40=-1;l40<(4-1);l40++){if(
    190 l40 == -1){l102 = 0x0089;l84|= l100(l34,0,l102,l73);}else if(l40 == 0){l102 = 
    191 0x0009;l84|= l100(l34,1,l102,l73);}l84|= l103(l34,l102,l40,l75,l76,l77,l104);
    192 }l84|= l134(l71,l76,l77,l104,l7,l8,l74,l82);l84|= l46(l34,0x0,(int16)0x8000);
    193 sal_usleep(1000*(1));l84|= l69(l34);return l84;}static int32 l138(uint16 l139
    194 ,int16 l140){const int32 l141 = 0x16A0A;const int32 l142 = 0xB172;const int32
    195 l143[10] = {65536/1,65536/2,65536/3,65536/4,65536/5,65536/6,65536/7,65536/8,
    196 65536/9,65536/10};int32 l144,l145,l146,l147;int16 l148,l110;if(l140>10)return
    197 (0x80000000);l144 = (int32)l139;l148 = 15;for(l110=0;l110<16;l110++){if(l144&
    198 0x8000){break;}l144<<= 1;l148--;}if(l148<0){return(0x80000000);}l144 = (int32)
    199 l139;if((l144<<(16-l148))>l141)l148++;l145 = (int32)l139;l145 = (((int32)1)<<
    200 16)-(l145<<(16-l148));l146 = l145;l147 = l146;for(l110=2;l110<=l140;l110++){
    201 l146 = ((l146>>1)*(l145>>1))>>14;l147+= (((l146>>1)*(l143[l110-1]>>1))>>14);}
    202 return(l142*l148-l147);}static int16 l149(int32 l28,l1 l34,int16 l113,int16
    203 l78[],int32 l79[4]){const int32 l150 = 0x003E;const int32 l143 = 0x08B0;const
    204 int16 l151 = 8;int16 l84,l41,l42,l110;int32 l152,l153,l154,l155;l84 = 0x0000;
    205 l152 = 0;l153 = 0;for(l110=0;l110<l151;l110++){l84|= l46(l34,0x17,(l113<<13))
    206 ;l84|= l43(l34,0x15,&l41);l152+= (l41&0x007F);l84|= l46(l34,0x17,(l113<<13)|
    207 0x0100);l84|= l43(l34,0x15,&l42);l153+= l42;}l154 = ((l152+4)>>3)*l150;l155 = 
    208 (((l143>>1)*(l138((uint16)((l153+4)>>3),6)>>1))>>14)+l154;l78[l113] = (int16)
    209 ((((0)>(((((l155*l155)>>16)*((int32)-808))>>8)+((l155*((int32)1501))>>8)+((
    210 int32)-98092)))?(0):(((((l155*l155)>>16)*((int32)-808))>>8)+((l155*((int32)
    211 1501))>>8)+((int32)-98092))));l79[l113] = l155;return l84;}static int16 l156(
    212 int16 l76[4+1][4+1],int16 l77[4+1][4+1],int16 l78[4],int16 l80[4]){int16 l84,
    213 l113;int32 l157,l158;l84 = 0x0000;for(l113=0;l113<4;l113++){if(l76[l113][0]!= 
    214 0){l84|= 0x0008;}l157 = (((((int32)600))>((l78[3]+((int32)3)/2)/((int32)3)))?((
    215 (int32)600)):((l78[3]+((int32)3)/2)/((int32)3)));l158 = (((((int32)600))>((
    216 l78[3]+((int32)4)/2)/((int32)4)))?(((int32)600)):((l78[3]+((int32)4)/2)/((
    217 int32)4)));if(((l77[l113][0]*100)<= (l78[3]+l157))&&((l77[l113][0]*100)>= (
    218 l78[3]-l158))){l80[l113] = 1;}else{l80[l113] = 0;}}return l84;}int16 l70(
    219 int16 l71,int16 l72,l1 l34,int16 l73,int16 l7[],int16 l8[],int32 l74[4],int16
    220 l75[4+1],int16 l76[4+1][4+1],int16 l77[4+1][4+1],int16 l78[4],int32 l79[4],
    221 int16 l80[4]){int16 l113,l84;int16 l89;int16 l102;int32 l104[4+1][4+1];l84 = 
    222 0x0000;l84|= l46(l34,0x18,0x7);l84|= l43(l34,0x18,&l89);l84|= l46(l34,0x18,(
    223 l89|0x0800)&((int16)0xFFF8));if(l73 == 0){l84|= l46(l34,0x17,0x0F20);l84|= 
    224 l46(l34,0x15,((int16)0x1210));l84|= l46(l34,0x17,0x0F21);l84|= l46(l34,0x15,(
    225 (int16)0x1B20));}l84|= l46(l34,0x17,0x0F10);l102 = 0x0005;l84|= l46(l34,0x15,
    226 l102);l84|= l103(l34,l102,-1,l75,l76,l77,l104);for(l113=0;l113<4;l113++){l7[
    227 l113] = 0x0010;l8[l113] = l77[l113][0]*100;l74[l113] = l104[l113][0];}if(l71
    228 != 0){if(l72!= 0){l84|= l149(0x00000003,l34,3,l78,l79);l84|= l156(l76,l77,l78
    229 ,l80);}else{for(l113=0;l113<4;l113++)l80[l113] = 1;}if(l111(l8,l80)<= 0){if(
    230 l72!= 0){for(l113=0;l113<4;l113++){l8[l113] = l78[3];}}}}l84|= l46(l34,0x17,
    231 0x0F10);l84|= l46(l34,0x15,0x0080);l84|= l46(l34,0x18,l89&0xFFF8);return l84;
    232 }static const int16 l159 = (800000/4/(3*60+4*60));static const int16 l160 = (
    233 15000/4/(3*60+4*60));static const int16 l161[192] = {22743,22308,21880,21461,
    234 21050,20647,20251,19864,19483,19110,18744,18385,18033,17687,17348,17016,16690
    235 ,16370,16057,15749,15447,15152,14861,14577,14297,14023,13755,13491,13233,
    236 12979,12731,12487,12248,12013,11783,11557,11336,11119,10906,10697,10492,10291
    237 ,10094,9900,9711,9525,9342,9163,8988,8816,8647,8481,8319,8159,8003,7850,7699,
    238 7552,7407,7265,7126,6990,6856,6724,6596,6469,6345,6224,6105,5988,5873,5760,
    239 5650,5542,5436,5332,5229,5129,5031,4935,4840,4747,4656,4567,4480,4394,4310,
    240 4227,4146,4067,3989,3913,3838,3764,3692,3621,3552,3484,3417,3352,3287,3224,
    241 3163,3102,3043,2984,2927,2871,2816,2762,2709,2657,2606,2557,2508,2460,2412,
    242 2366,2321,2276,2233,2190,2148,2107,2067,2027,1988,1950,1913,1876,1840,1805,
    243 1770,1736,1703,1671,1639,1607,1576,1546,1517,1487,1459,1431,1404,1377,1350,
    244 1325,1299,1274,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,
    245 1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,
    246 1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,};
    247 static const int16 l162[192] = {22743,22308,21880,21461,21050,20647,20251,
    248 19864,19483,19110,18744,18385,18033,17687,17348,17016,16690,16370,16057,15749
    249 ,15447,15152,14861,14577,14297,14023,13755,13491,13233,12979,12731,12487,
    250 12248,12013,11783,11557,11336,11119,10906,10697,10492,10291,10094,9900,9711,
    251 9525,9342,9163,8988,8816,8647,8481,8319,8159,8003,7850,7699,7552,7407,7265,
    252 7126,6990,6856,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,
    253 3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,3428,
    254 3428,3428,3428,3428,3428,3428,3428,3428,3417,3352,3287,3224,3163,3102,3043,
    255 2984,2927,2871,2816,2762,2709,2657,2606,2557,2508,2460,2412,2366,2321,2276,
    256 2233,2190,2148,2107,2067,2027,1988,1950,1913,1876,1840,1805,1770,1736,1703,
    257 1671,1639,1607,1576,1546,1517,1487,1459,1431,1404,1377,1350,1325,1299,1274,
    258 1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,
    259 1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,
    260 1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,1259,};static const
    261 int16 l163[192] = {1743,1716,1688,1662,1635,1609,1584,1558,1534,1509,1485,
    262 1462,1438,1416,1393,1371,1349,1328,1307,1286,1265,1245,1225,1206,1187,1168,
    263 1149,1131,1113,1095,1078,1061,1044,1027,1011,995,979,964,948,933,918,904,889,
    264 875,861,848,834,821,808,795,782,770,758,746,734,722,711,699,688,677,666,656,
    265 645,635,625,615,605,596,586,577,568,559,550,541,533,524,516,508,499,492,484,
    266 476,468,461,454,446,439,432,426,419,412,406,399,393,387,380,374,368,363,357,
    267 351,345,340,335,329,324,319,314,309,304,299,294,290,285,281,276,272,267,263,
    268 259,255,251,247,243,239,235,231,228,224,221,217,214,210,207,204,200,197,194,
    269 191,188,185,182,179,176,173,171,168,165,163,160,158,158,158,158,158,158,158,
    270 158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,
    271 158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,158,};static const
    272 int16 l164[192] = {116,116,115,115,115,114,114,114,113,113,112,112,112,111,
    273 111,111,110,110,110,109,109,108,108,108,107,107,107,106,106,106,105,105,105,
    274 104,104,104,103,103,103,102,102,101,101,101,100,100,100,99,99,99,99,98,98,98,
    275 97,97,97,96,96,96,95,95,95,94,94,94,93,93,93,92,92,92,92,91,91,91,90,90,90,89
    276 ,89,89,89,88,88,88,87,87,87,87,86,86,86,85,85,85,85,84,84,84,83,83,83,83,82,
    277 82,82,82,81,81,81,80,80,80,80,79,79,79,79,78,78,78,78,77,77,77,77,76,76,76,76
    278 ,75,75,75,75,74,74,74,74,73,73,73,73,72,72,72,72,71,71,71,71,71,71,71,71,71,
    279 71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71,71
    280 ,71,71,71,71,71,71,71,71,71,71,};static const int32 l165 = 5;static int16 l166
    281 ,l167;static int16 l168,l169;static int32 l170,l171;static int16 l172,l173;
    282 static int32 l174,l175;int16 l27(int32 l28,int16 l29,int16 l30,int16 l31,
    283 int32*l32){int16 l84,l176;int32 l177;l84 = 0x0000;switch(l28){case 0x00000001
    284 :if(l29<64)l176 = 19;else l176 = 16;break;case 0x00000002:if(l29<64)l176 = 17
    285 ;else l176 = 14;break;case 0x00000003:case 0x00000004:case 0x00000005:default
    286 :if(l29<32)l176 = 17;else if(l29<64)l176 = 16;else if(l29<96)l176 = 15;else if
    287 (l29<128)l176 = 14;else l176 = 13;break;}switch(l176){case 19:l177 = ((int32)
    288 l30)&0x0000000F;if((l30&0x0008)!= 0)*l32 = 0xFFFC0000|(l177<<15)|(((int32)l31
    289 )&0x00007FFF);else*l32 = (l177<<15)|(((int32)l31)&0x00007FFF);break;case 17:
    290 l177 = ((int32)l30)&0x00000003;if((l30&0x0002)!= 0)*l32 = 0xFFFF0000|(l177<<
    291 15)|(((int32)l31)&0x00007FFF);else*l32 = (l177<<15)|(((int32)l31)&0x00007FFF)
    292 ;break;case 16:l177 = ((int32)l30)&0x00000001;if((l30&0x0001)!= 0)*l32 = 
    293 0xFFFF8000|(((int32)l31)&0x00007FFF);else*l32 = (l177<<15)|(((int32)l31)&
    294 0x00007FFF);break;case 15:if((l31&0x4000)!= 0)*l32 = 0xFFFFC000|((int32)l31);
    295 else{*l32 = 0x00007FFF&((int32)l31);}break;case 14:if((l31&0x2000)!= 0)*l32 =
    296 0xFFFFE000|((int32)l31);else*l32 = 0x00003FFF&((int32)l31);break;case 13:if((
    297 l31&0x1000)!= 0)*l32 = 0xFFFFF000|((int32)l31);else*l32 = 0x00001FFF&((int32)
    298 l31);break;}return l84;}static int16 l178(int32 l28,l1 l34,int16 l113,int32*
    299 l179,int16*l180){int16 l110;int32 l181,l182;int16 l84;int16 l30,l31,l183;
    300 int16 l184;l84 = 0x0000;l182 = 0;l84|= l51(l34);l84|= l46(l34,0x17,(l113<<13)
    301 |0x0300);l84|= l43(l34,0x16,&l183);l84|= l46(l34,0x16,(l183&0xFBFF)|0x0080);
    302 l84|= l43(l34,0x16,&l184);l84|= ((l184&0x1800)?0x0001:0);l84|= l46(l34,0x16,(
    303 l183&0xFBFF)|0x0800);l84|= l43(l34,0x16,&l184);l84|= ((l184&0x1800)?0x0001:0)
    304 ;for(l110=0;l110<192;l110++){l84|= l43(l34,0x15,&l31);l84|= l43(l34,0x15,&l30
    305 );l84|= l27(l28,l110,l30,l31,&l181);l182+= (((l181)>= 0)?(l181):-(l181));*
    306 l179+= l181;l179+= 2;}if(l182 == 0)*l180 = 0;else*l180 = 1;return l84;}int16
    307 l33(l1 l34,int32*l35,int16*l36){int16 l84,l185,l186;int32 l187;l84 = 0x0000;
    308 l84|= l43(l34,0x02,&l185);l84|= l43(l34,0x03,&l186);l187 = (((int32)l185)<<16
    309 )|(((int32)l186)&0x0000FFF0);switch(l187){case 0x002060A0:*l35 = 0x00000001;
    310 break;case 0x002060C0:case 0x002060D0:case 0x002060B0:case 0x002063B0:case
    311 0x002061A0:case 0x00206180:case 0x00206100:case 0x00206340:case 0x00206350:
    312 case 0x00206150:case 0x00206360:case 0x0143bcd0:case 0x0143bcf0:*l35 = 
    313 0x00000002;break;case 0x0143BC80:*l35 = 0x00000003;break;case 0x0143BC90:case
    314 0x0143BCA0:case 0x0143BCB0:*l35 = 0x00000004;break;case 0x0143BE80:case
    315 0x0143BE90:case 0x0143BEA0:case 0x0143BEB0:case 0x0143BF80:case 0x0143BFE0:
    316 case 0x03625F20:default:*l35 = 0x00000005;break;}*l36 = 0;return l84;}static
    317 int16 l188(l1 l34,int16 l189,int16 l190){int16 l84,l191;l84 = 0x0000;l84|= 
    318 l46(l34,0x17,0x000B);l189&= 0x003F;l190&= 0x003F;if(l189<= l190){for(l191 = 
    319 l189;l191<=l190;l191++){l84|= l46(l34,0x15,((l191<<6)|0x8000)&0xFFFF);}}else{
    320 for(l191 = l189;l191>=l190;l191--){l84|= l46(l34,0x15,((l191<<6)|0x8000)&
    321 0xFFFF);}}return l84;}int16 l37(int32 l28,l1 l34){int16 l84,l89;l84 = 0x0000;
    322 l84|= l46(l34,0x00,(int16)0x8000);l84|= l69(l34);l84|= l46(l34,0x17,(int16)
    323 0x0F90);l84|= l46(l34,0x15,(int16)0x0000);l84|= l48(l34,1,&l89);if((l28!= 
    324 0x00000001)&&(l28!= 0x00000002)){l84|= l46(l34,0x18,(int16)0x0282);l84|= l46(
    325 l34,0x17,0x0F2B);l84|= l46(l34,0x15,0x0040);}l84|= l46(l34,0x00,0x1200);l84|= 
    326 l46(l34,0x00,(int16)0x0040);l84|= l59(l34,-1,0);l84|= l46(l34,0x17,(int16)
    327 0x001A);l84|= l46(l34,0x15,(int16)0x8000);l84|= l46(l34,0x1E,0x0080);l84|= 
    328 l46(l34,0x17,0x001F);l84|= l46(l34,0x15,0x0480);l84|= l46(l34,0x17,(int16)
    329 0x8004);l84|= l46(l34,0x15,0x0040);l84|= l46(l34,0x17,(int16)0x800C);l84|= 
    330 l46(l34,0x15,0x0040);l84|= l46(l34,0x17,(int16)0x8100);l84|= l46(l34,0x16,
    331 0x0002);l84|= l46(l34,0x17,(int16)0x9000);l84|= l46(l34,0x16,(int16)0x0004);
    332 l84|= l46(l34,0x17,(int16)0x8300);l84|= l46(l34,0x16,(int16)0x0000);return l84
    333 ;}int16 l38(l1 l34,int16 l39,int16 l40,int16 l41,int16 l42){int16 l84;l84 = 
    334 0x0000;l84|= l46(l34,0x17,(int16)0x8000);l84|= l46(l34,0x15,l41);l84|= l46(
    335 l34,0x17,(int16)0x8100);l84|= l46(l34,0x15,l42);l84|= l46(l34,0x17,0x000B);
    336 l84|= l46(l34,0x15,(int16)0x8000);if(l39 == 0){l84|= l59(l34,-1,0);l84|= l59(
    337 l34,l40,1);l84|= l46(l34,0x09,(int16)0x9000);l84|= l46(l34,0x09,(int16)0x9800
    338 );}else if(l39 == 1){l84|= l59(l34,-1,1);l84|= l46(l34,0x09,(int16)0x9000);
    339 l84|= l46(l34,0x09,(int16)0x9800);}else{l84|= l59(l34,-1,0);l84|= l46(l34,
    340 0x09,(int16)0x9000);l84|= l46(l34,0x09,(int16)0x9800);}if(l39>= 0)sal_usleep(
    341 1000*(20));return l84;}int16 l68(l1 l34){int16 l84;int16 l192,l193;l84 = 
    342 0x0000;l84|= l43(l34,0x1A,&l193);l84|= l43(l34,0x11,&l192);l84|= l43(l34,0x11
    343 ,&l192);l192&= 0x0FFE;l84|= l43(l34,0x1A,&l193);if((l193&0x6)||(l84!= 0x0000)
    344 ){l192 = 0;}return((l192 == 0x0F00)?1:0);}int16 l194(int16 l195,int16 l5,l1 l34
    345 ,int16 l196[],int16 l197[]){int16 l84,l53;int16 l89,l198;int16 l199,l200;l84 = 
    346 0x0000;l199 = l5&0x0001;l200 = (l5&0x0002)>>1;for(l53=0;l53<4;l53++){l196[l53
    347 ] = l53;l197[l53] = l53;}if(l195){l84|= l48(l34,1,&l89);l84|= l46(l34,0x17,((
    348 0x0&0x0003)<<13)|(0x05&0x00FF));l84|= l43(l34,0x15,&l198);if((l198&0x20) == 0
    349 ){l84|= 0x2000;}l199^= l198&0x0001;l200^= ((l198&0x0002)>>1);}for(l53=0;l53<4;
    350 l53++){if((l53 == 0)&&(l199!= 0)){l196[1] = 0;l197[0] = 1;}else if((l53 == 1)
    351 &&(l199!= 0)){l196[0] = 1;l197[1] = 0;}else if((l53 == 2)&&(l200!= 0)){l196[3
    352 ] = 2;l197[2] = 3;}else if((l53 == 3)&&(l200!= 0)){l196[2] = 3;l197[3] = 2;}}
    353 return l84;}static void l201(int32*l179){int16 l110;int32 l147,l202,*l203;
    354 l147 = 0;l203 = l179+2*(192-20);for(l110=0;l110<2*20;l110+=2)l147+= *(l203+
    355 l110);l202 = ((l147<<8)/20)>>8;for(l110=0;l110<2*192;l110+=2)*(l179+l110)-= 
    356 l202;return;}static int32 l204(int16 l195,int32 l205[],int16 l113,int16 l206,
    357 int32 l207,int32 l208,int16 l209,int16 l210,int16 l211){int32 l147,*l203;l147
    358 = 0;for(l203=l205+(((l206-l209)>(0))?(l206-l209):(0))+l113*2*192;l203<=(l205+
    359 (((l206+l210)<(2*192))?(l206+l210):(2*192))+l113*2*192);l203++){l147+= (*l203
    360 );}if((l206>= l211)&&(((((l147)>= 0)?(l147):-(l147))*l208)<l207))return-1;
    361 else return(((l147)>= 0)?(l147):-(l147));}static void l212(int32 l205[],l20
    362 l213[2*2][4],int32*l214,int16 l215[],int16 l216[],l25 l217[]){return;}static
    363 void l218(l20 l213[2*2][4]){int16 l219,l113;for(l219=2*2-1;l219>=0;l219--){
    364 for(l113=0;l113<4;l113++){l213[l219][l113].l14 = -99;l213[l219][l113].l15 = -
    365 99;l213[l219][l113].l16 = -99;l213[l219][l113].l17 = 0;l213[l219][l113].l18 = 
    366 0;l213[l219][l113].l19 = 0;}}return;}static void l220(l25 l217[]){int16 l113;
    367 for(l113=0;l113<4;l113++){l217[l113].l21 = -99;l217[l113].l22 = -99;l217[l113
    368 ].l23 = -99;l217[l113].l24 = -99;}return;}int16 l221(int32 l28,l1 l34,int16
    369 l216[],int32 l222[(5000/(60+60)+1)][4]){int16 l84,l113,l223[4],l110,l224;
    370 int16 l225=4,l41,l42,l226,l227[4],l228;uint16 l229;l84 = 0x0000;for(l113=0;
    371 l113<4;l113++){for(l110=0;l110<(5000/(60+60)+1);l110++)l222[l110][l113] = 0;
    372 l223[l113] = 0;l227[l113] = 0;}switch(l28){case 0x00000001:l41 = (int16)
    373 0xF8EF;l42 = (int16)0x0400;l229 = 6;break;case 0x00000002:l41 = (int16)0xF8EF
    374 ;l42 = (int16)0x0100;l229 = 10;break;case 0x00000003:case 0x00000004:case
    375 0x00000005:default:l41 = (int16)0xF8EF;l42 = (int16)0x0100;l229 = 10;break;}
    376 l84|= l38(l34,-1,0,l41,l42);l228 = 0;for(l110=0;l110<(5000/(60+60)+1);l110++)
    377 {for(l224=0;l224<75;l224++){for(l113=0;l113<4;l113++){l84|= l46(l34,0x17,(
    378 l113<<13)|0x0002);l84|= l43(l34,0x15,&l226);if(l227[l113] == 1)continue;l222[
    379 l110][l113] = l226;if(((uint16)l226)<= l229)l223[l113]++;else l223[l113] = 0;
    380 if(l223[l113]>l225){l227[l113] = 1;}}l228 = 1;for(l113=0;l113<4;l113++)if(l227[
    381 l113] == 0){l228 = 0;}if(l228 == 1)break;}if(l228 == 1)break;}for(l113=0;l113<4
    382 ;l113++){if(l227[l113] == 0){l216[l113] = 0x0008;}}return l84;}static int16 l230(
    383 int32 l28,int32 l205[],int16 l5,l1 l34,int16 l40,int16 l229,int16 l231,int16
    384 l39,l20 l213[2*2][4],int16 l216[],int16 l215[],int16*l232,int16*l233){int16
    385 l84,l189,l234[4],l235;int16 l236[4];int16 l219,l113,l110,l228,l183;int32*l179
    386 ,l237;l20*l238;l84 = 0x0000;l189 = 0;if((l39 == 0)&&(l40 == 0))l237 = l159;
    387 else {l237 = l160;}*l233 = 0;for(l113=0;l113<4;l113++){l234[l113] = 0;if((l39 ==
    388 0)&&(((l216[l113]&0x0008)!= 0)||((l113!= l40)&&((l5&0x0004) == 0))||(l215[
    389 l113]>= 2))){l234[l113] = 1;}else if((l39 == 1)&&(((l216[l113]&0x0008)!= 0)||
    390 ((l216[l113]&0x0001)!= 0)||((l216[l113]&0x0002)!= 0)||((l216[l113]&0x0004)!= 
    391 0)||(l215[l113]>= 2))){l234[l113] = 1;}}for(l219=(2-1);l219>=0;l219--){for(
    392 l110=0;l110<(l237+1);l110++){for(l113=l40;l113<4;l113++){l238 = l213[l219+
    393 l231]+l113;l84|= l46(l34,0x17,(l113<<13)|0x0002);l84|= l43(l34,0x15,&(l238->
    394 l15));l84|= l46(l34,0x17,(l113<<13)|0x0300);l84|= l43(l34,0x16,&l183);l84|= 
    395 l46(l34,0x16,l183|0x0002);l84|= l46(l34,0x17,(l113<<13)|0x0002);l84|= l43(l34
    396 ,0x15,&(l238->l16));l236[l113] = 0;if(l234[l113] == 1){}else if(l238->l14 == 
    397 -99){if((l238->l15<= l229)&&(l238->l16<= l229)){l238->l14 = 1;l236[l113] = 1;
    398 }else{(l238->l17)++;}}else{l236[l113] = 1;}if(l236[l113] == 0){l84|= l46(l34,
    399 0x17,(l113<<13)|0x0300);l84|= l43(l34,0x16,&l183);l84|= l46(l34,0x16,l183&(~(
    400 (uint16)0x0002)));}}l228 = 1;for(l113=l40;l113<4;l113++){l238 = l213[l219+
    401 l231]+l113;if((l234[l113] == 0)&&(l238->l14!= 1))l228 = 0;}if(l228 == 1)break
    402 ;}l84|= l59(l34,-1,0);for(l113=l40;l113<4;l113++){l238 = l213[l219+l231]+l113
    403 ;l179 = l205+2-1-l215[l113]+l113*2*192;if(l236[l113] == 1){l84|= l178(l28,l34
    404 ,l113,l179,&l235);l84|= l46(l34,0x17,(l113<<13)|0x0300);l84|= l43(l34,0x16,&
    405 l183);l84|= l46(l34,0x16,l183&(~((uint16)0x0002)));l201(l179);if((l235 == 1)
    406 ||(l113!= l40)){(l238->l19)++;(l215[l113])++;}else{*l233 = 1;l238->l14 = -99;
    407 l238->l15 = -99;l238->l16 = -99;l238->l17 = 0;l238->l19 = 0;(l238->l18)++;
    408 l234[l113] = 1;}}else{l234[l113] = 1;}}if(l219 == 0){l84|= l188(l34,l189,0);
    409 l189 = 0;}else{l84|= l188(l34,l189,l189+64/2);l189 = l189+64/2;if(l39 == 0){
    410 l84|= l59(l34,-1,0);l84|= l59(l34,l40,1);}else if(l39 == 1){l84|= l59(l34,-1,
    411 1);}else{l84|= 0x0002;}sal_usleep(1000*(20));}}*l232 = 1;for(l113=l40;l113<4;
    412 l113++){if(l215[l113]!= 2){l215[l113] = 0;for(l110=0;l110<2*192;l110++)l205[
    413 l113*2*192+l110] = 0;*l232 = 0;}}return l84;}static int16 l239(int32 l28,
    414 int32 l205[],l1 l34,l20 l213[2*2][4]){int16 l84,l235;int16 l113,l110,l224,
    415 l240=3;int32*l179;l20*l238;l84 = 0x0000;for(l224=0;l224<l240;l224++){for(l113
    416 =0;l113<4;l113++){l238 = l213[1+0]+l113;l84|= l46(l34,0x17,(l113<<13)|0x0002)
    417 ;l84|= l43(l34,0x15,&(l238->l15));(l238->l19)++;l179 = l205+2-1+l113*2*192;
    418 l84|= l178(l28,l34,l113,l179,&l235);}}for(l113=0;l113<4;l113++){l179 = l205+2
    419 -1+l113*2*192;l238 = l213[1+0]+l113;for(l110=0;l110<192;l110++){*l179 = ((((
    420 int32)*l179)<<8)/l238->l19)>>8;l179+= 2;}l179 = l205+2-1+l113*2*192;l201(l179
    421 );l179 = l205+2-1+l113*2*192;for(l110=0;l110<192;l110++){*(l179-1) = *l179;
    422 l179+= 2;}}return l84;}static int16 l241(int32 l28,int32 l205[],int16 l40){
    423 int32 l242,l243;int16 l206,l244;l244 = 32767;l243 = l40*2*192;for(l206=0;l206
    424 <2*192;l206++){if(l205[l206+l243] == 0)continue;switch(l28){case 0x00000001:
    425 if(l206<64*2)l242 = 200000;else l242 = 24000;break;case 0x00000002:if(l206<64
    426 *2)l242 = 50000;else l242 = 6000;break;case 0x00000003:case 0x00000004:case
    427 0x00000005:default:if(l206<32*2)l242 = 50000;else if(l206<64*2)l242 = 25000;
    428 else if(l206<96*2)l242 = 12000;else if(l206<128*2)l242 = 6000;else if(l206<
    429 160*2)l242 = 2500;else l242 = 2500;break;}l244 = (int16)(((((int32)l244))<((
    430 int32)(l242/(((l205[l206+l243])>= 0)?(l205[l206+l243]):-(l205[l206+l243])))))
    431 ?(((int32)l244)):((int32)(l242/(((l205[l206+l243])>= 0)?(l205[l206+l243]):-(
    432 l205[l206+l243])))));}return(l244);}static int16 l245(int32 l28,int32 l205[],
    433 int16 l5,int16 l40,int16 l216[],int16 l246[],int32 l47[],int32 l247[],int16
    434 l215[],int16 l248[4][4],int32 l249[],l25 l217[],int16 l250[],int16 l251[]){
    435 int16 l206,l252,l253,l113,l254,l255,l256,l110;int16 l84;int32 l257,l258;int32
    436 l259 = 2;int32 l243;l84 = 0x0000;for(l113=l40;l113<4;l113++){if((l216[l113]&
    437 0x0008)!= 0){continue;}if(l215[l113]!= 2){if((l113 == l40)||((l5&0x0004)!= 0)){
    438 l216[l113] = 0x0008;continue;}}if(l113 == l40){if(l216[l113] == 0x0001)
    439 {continue;}l254 = 2*1;}else{if((l5&0x0004) == 0)continue;l254 = 0;}l243 = l113*
    440 2*192;for(l206=l254;l206<2*192;l206++){l252 = l206/2;if(l113 == l40){if(((
    441 l205[l206+l243]*l171)>(l250[l252]*l170))||((l205[l206+l243]*l171)<(-1*l250[
    442 l252]*l170))){for(l253=l206+1;l253<2*192;l253++){if((((l205[l253+l243])>= 0)?
    443 (l205[l253+l243]):-(l205[l253+l243]))>(((l205[l206+l243])>= 0)?(l205[l206+
    444 l243]):-(l205[l206+l243])))l206 = l253;}l252 = l206/2;if((l205[l206+l243]*
    445 l171)>(l250[l252]*l170)){l216[l113] = 0x0002;l247[l113] = (((l205[l206+l243]*
    446 10*l171/(l250[l252]*l170))>= 0)?(l205[l206+l243]*10*l171/(l250[l252]*l170)):-
    447 (l205[l206+l243]*10*l171/(l250[l252]*l170)));}else if((l205[l206+l243]*l171)<
    448 (-1*l250[l252]*l170)){l216[l113] = 0x0004;l247[l113] = (((l205[l206+l243]*10*
    449 l171/(l250[l252]*l170))>= 0)?(l205[l206+l243]*10*l171/(l250[l252]*l170)):-(
    450 l205[l206+l243]*10*l171/(l250[l252]*l170)));}else{return 0x0200;}l246[l113] = 
    451 l206;l47[l113] = l205[l206+l243];break;}}else{l257 = l204(0,l205,l113,l206,
    452 l259*l161[l252]*l170,l165*l171,2,2,100*2);if((((((l205[l206+l243])>= 0)?(l205
    453 [l206+l243]):-(l205[l206+l243]))*l171*l165)>(l161[l252]*l170))&&(l257>= 0)){
    454 for(l253=l206+1;l253<2*192;l253++){l258 = l204(0,l205,l113,l253,l259*l161[
    455 l253/2]*l170,l165*l171,2,2,100*2);if(((((l205[l253+l243])>= 0)?(l205[l253+
    456 l243]):-(l205[l253+l243]))>(((l205[l206+l243])>= 0)?(l205[l206+l243]):-(l205[
    457 l206+l243])))&&(l258>= 0)){l206 = l253;l257 = l258;}}l252 = l206/2;if((l216[
    458 l113]!= 0x0001)||(l206<l246[l113])){l216[l113] = 0x0001;l246[l113] = l206;l47
    459 [l113] = l205[l206+l243];l247[l113] = (((l205[l206+l243]*10*l171*l165/(l161[
    460 l252]*l170))>= 0)?(l205[l206+l243]*10*l171*l165/(l161[l252]*l170)):-(l205[
    461 l206+l243]*10*l171*l165/(l161[l252]*l170)));l249[l113] = l257*10*l171*l165/(
    462 l259*(l161[l252]*l170));}if((l216[l40]!= 0x0001)||(l206<l246[l40])){l216[l40]
    463 = 0x0001;l246[l40] = l206;l47[l40] = l205[l206+l243];l247[l40] = (((l205[l206
    464 +l243]*10*l171*l165/(l161[l252]*l170))>= 0)?(l205[l206+l243]*10*l171*l165/(
    465 l161[l252]*l170)):-(l205[l206+l243]*10*l171*l165/(l161[l252]*l170)));l249[l40
    466 ] = l257*10*l171*l165/(l259*(l161[l252]*l170));}l248[l113][l40] = 1;l248[l40]
    467 [l113] = 1;break;}}}if(((l28 == 0x00000001)||(l28 == 0x00000002))&&(l246[l113
    468 ]>2*60)&&(l246[l113]<2*100)){l217[l113].l21 = l246[l113];l217[l113].l22 = 
    469 l246[l113];l256 = l246[l113]+3*2;if(l205[l243+l246[l113]]>= 0){l217[l113].l23
    470 = 1;l217[l113].l24 = 0;}else{l217[l113].l23 = 0;l217[l113].l24 = 1;}for(l255=
    471 0;l255<3*2;l255++){if((((l205[l243+l217[l113].l21-1])>= 0)?(l205[l243+l217[
    472 l113].l21-1]):-(l205[l243+l217[l113].l21-1]))<(((l205[l243+l217[l113].l22+1])
    473 >= 0)?(l205[l243+l217[l113].l22+1]):-(l205[l243+l217[l113].l22+1]))){l217[
    474 l113].l22++;if((l205[l243+l217[l113].l22]*l171)>(400*l170)){l217[l113].l23++;
    475 }else if((l205[l243+l217[l113].l22]*l171)<((-400)*l170)){l217[l113].l24++;}}
    476 else{l217[l113].l21--;if((l205[l243+l217[l113].l21]*l171)>(400*l170)){l217[
    477 l113].l23++;}else if((l205[l243+l217[l113].l21]*l171)<((-400)*l170)){l217[
    478 l113].l24++;}}}for(l110=0;l110<10*2;l110++){if((l205[l243+l256+l110]*l171)>(
    479 400*l170))l217[l113].l24++;else if((l205[l243+l256+l110]*l171)<((-400)*l170))
    480 l217[l113].l23++;}if((l216[l113] == 0x0004)&&(l217[l113].l23>=(6*2))&&(l217[
    481 l113].l23>(l217[l113].l24+4*2))){l216[l113] = 0x0002;}else if((l216[l113] == 
    482 0x0002)&&(l217[l113].l24>=(6*2))&&(l217[l113].l24>(l217[l113].l23+4*2))){l216
    483 [l113] = 0x0004;}}}if(l216[l40] == 0x0000){l251[l40] = l241(l28,l205,l40);}else
    484 {l251[l40] = 32767;}return l84;}static int16 l260(int32 l28,int32 l205[],int16
    485 l5,l1 l34,int32 l261[],int16 l216[],int16 l246[],int32 l47[],int32 l247[],
    486 int16 l248[4][4],int32 l249[],int16 l251[]){int16 l84,l40,l215[4],l113,l262,
    487 l263;l20 l213[2*2][4];l25 l217[3*4];int32*l203;int16*l250;l84 = 0x0000;switch
    488 (l28){case 0x00000001:l166 = (int16)0xF8AB;l167 = (int16)0x0180;l168 = (int16
    489 )0xF8AB;l169 = (int16)0x0080;l170 = 3;l171 = 1;l250 = (int16*)l162;break;case
    490 0x00000002:l166 = (int16)0xF8AB;l167 = (int16)0x0100;l168 = (int16)0xF8AB;
    491 l169 = (int16)0x0020;l170 = 1;l171 = 1;l250 = (int16*)l162;break;case
    492 0x00000003:case 0x00000004:case 0x00000005:default:l166 = (int16)0xF8AB;l167 = 
    493 (int16)0x0100;l168 = (int16)0xF8AB;l169 = (int16)0x0100;l170 = 1;l171 = 2;
    494 l250 = (int16*)l161;break;}for(l40=0;l40<4;l40++){for(l203=l205;l203<(l205+4*
    495 2*192);l203++){*l203 = 0;}for(l113=0;l113<4;l113++){l215[l113] = 0;}l218(l213);
    496 l220(l217);if((l216[l40]&0x0008)!= 0)continue;l84|= l37(l28,l34);l84|= l38(
    497 l34,0,l40,l166,l167);l84|= l230(l28,l205,l5,l34,l40,0,0,0,l213,l216,l215,&
    498 l262,&l263);if(l262 == 0){if(l28 == 0x00000002)l171 = 1.4;l84|= l37(l28,l34);
    499 l84|= l38(l34,0,l40,l168,l169);l84|= l230(l28,l205,l5,l34,l40,5,2,0,l213,l216
    500 ,l215,&l262,&l263);}if(l263 == 1)l84|= 0x0020;l84|= l245(l28,l205,l5,l40,l216
    501 ,l246,l47,l247,l215,l248,l249,l217,l250,l251);l212(l205,l213,l261+l40*((2*2)*
    502 4*6+4*4+2*4+4*2*192),l215,l216,l217);}return l84;}static int16 l264(int32 l28
    503 ,int32 l205[],int16 l195,int16 l216[],int16 l246[],int32 l47[],int32 l247[],
    504 int32 l265[],int16 l215[],int32 l266[]){int16 l110,l267,l84,l113;int16 l206,
    505 l252,l268,l253;int32 l207;int32 l243;int32 l269,l270,l271[4],l272,l273;int16
    506 l274[11] = {41,102,274,512,719,802,719,512,274,102,41};l84 = 0x0000;for(l113=
    507 0;l113<4;l113++){if(((l216[l113]&0x0008)!= 0)||((l216[l113]&0x0001)!= 0)||((
    508 l216[l113]&0x0002)!= 0)||((l216[l113]&0x0004)!= 0)){continue;}else if((l195 == 
    509 0)&&(l215[l113]<2)){l216[l113] = 0x0008;}l243 = l113*2*192;for(l206=2*192-1;
    510 l206>=2*1;l206-=1){l265[l113] = (((l205[l206+l243]*l274[5])>= 0)?(l205[l206+
    511 l243]*l274[5]):-(l205[l206+l243]*l274[5]));for(l110=1;l110<=5;l110++){if((
    512 l206-l110)>=0)l265[l113]+= (((l205[l206-l110+l243]*l274[5+l110])>= 0)?(l205[
    513 l206-l110+l243]*l274[5+l110]):-(l205[l206-l110+l243]*l274[5+l110]));if((l206+
    514 l110)<(2*192))l265[l113]+= (((l205[l206+l110+l243]*l274[5-l110])>= 0)?(l205[
    515 l206+l110+l243]*l274[5-l110]):-(l205[l206+l110+l243]*l274[5-l110]));}l265[
    516 l113] = (l265[l113]+2048)>>12;l272 = (((l205[l206-2+l243]*l274[5])>= 0)?(l205
    517 [l206-2+l243]*l274[5]):-(l205[l206-2+l243]*l274[5]));for(l110=1;l110<=5;l110
    518 ++){if((l206-2-l110)>=0)l272+= (((l205[l206-2-l110+l243]*l274[5+l110])>= 0)?(
    519 l205[l206-2-l110+l243]*l274[5+l110]):-(l205[l206-2-l110+l243]*l274[5+l110]));
    520 if((l206-2+l110)<(2*192))l272+= (((l205[l206-2+l110+l243]*l274[5-l110])>= 0)?
    521 (l205[l206-2+l110+l243]*l274[5-l110]):-(l205[l206-2+l110+l243]*l274[5-l110]))
    522 ;}l272 = (l272+2048)>>12;l273 = (((l205[l206-3+l243]*l274[5])>= 0)?(l205[l206
    523 -3+l243]*l274[5]):-(l205[l206-3+l243]*l274[5]));for(l110=1;l110<=5;l110++){if
    524 ((l206-3-l110)>=0)l273+= (((l205[l206-3-l110+l243]*l274[5+l110])>= 0)?(l205[
    525 l206-3-l110+l243]*l274[5+l110]):-(l205[l206-3-l110+l243]*l274[5+l110]));if((
    526 l206-3+l110)<(2*192))l273+= (((l205[l206-3+l110+l243]*l274[5-l110])>= 0)?(
    527 l205[l206-3+l110+l243]*l274[5-l110]):-(l205[l206-3+l110+l243]*l274[5-l110]));
    528 }l273 = (l273+2048)>>12;l252 = l206/2;if(l195 == 1){l207 = l164[l252];}else{
    529 l207 = l163[l252];}if(((((l265[l113]*l175)>= 0)?(l265[l113]*l175):-(l265[l113
    530 ]*l175))>(l207*l174))&&((l252<= 100)||(((((l272)>= 0)?(l272):-(l272))>(((l265
    531 [l113])>= 0)?(l265[l113]):-(l265[l113])))&&((((l273)>= 0)?(l273):-(l273))>(((
    532 l272)>= 0)?(l272):-(l272)))))){l266[l113] = l206;if((l206<<3)<(2*192)){l268 = 
    533 (((2*(1+1))>(l206-2*3))?(2*(1+1)):(l206-2*3));}else if((l206<<2)<(2*192)){
    534 l268 = l195?(((2*(1+1))>(l206-2*5))?(2*(1+1)):(l206-2*5)):(((2*(1+1))>(l206-2
    535 *6))?(2*(1+1)):(l206-2*6));}else if((l206<<1)<(2*192)){l268 = (((2*(1+1))>(
    536 l206-2*6))?(2*(1+1)):(l206-2*6));}else{l268 = (((2*(1+1))>(l206-2*6))?(2*(1+1
    537 )):(l206-2*6));}l270 = l265[l113];for(l253=l206-1;l253>=l268;l253-=1){l271[
    538 l113] = (((l205[l253+l243]*l274[5])>= 0)?(l205[l253+l243]*l274[5]):-(l205[
    539 l253+l243]*l274[5]));for(l267=1;l267<=5;l267++){if((l253-l267)>=0)l271[l113]
    540 += (((l205[l253-l267+l243]*l274[5+l267])>= 0)?(l205[l253-l267+l243]*l274[5+
    541 l267]):-(l205[l253-l267+l243]*l274[5+l267]));if((l253+l267)<(2*192))l271[l113
    542 ]+= (((l205[l253+l267+l243]*l274[5-l267])>= 0)?(l205[l253+l267+l243]*l274[5-
    543 l267]):-(l205[l253+l267+l243]*l274[5-l267]));}l271[l113] = (l271[l113]+2048)
    544 >>12;l269 = l271[l113];if((((l269)>= 0)?(l269):-(l269))>(((l270)>= 0)?(l270):
    545 -(l270))){l206 = l253;l270 = l269;}}l246[l113] = l206;l47[l113] = l270;l207 = 
    546 l195?l164[l206/2]:l163[l206/2];l247[l113] = (((l270*l175*10)>= 0)?(l270*l175*
    547 10):-(l270*l175*10))/(l207*l174);break;}}}return l84;}static int16 l275(int32
    548 l28,int32 l205[],int16 l195,int16 l5,l1 l34,int32 l261[],int16 l216[],int16
    549 l246[],int32 l47[],int32 l247[],int32 l265[],int32 l266[],int16 l251[]){int16
    550 l84,l215[4],l113,l262,l263;l20 l213[2*2][4];l25 l217[4];int32*l203;int16 l276
    551 ;l84 = 0x0000;l173 = (int16)0x0800;l276 = (int16)0x7FFF;for(l113=0;l113<4;
    552 l113++){if(l216[l113] == 0x0000)l276 = (((l276)<(l251[l113]))?(l276):(l251[
    553 l113]));}switch(l28){case 0x00000001:if(l276>= 4){l172 = (int16)0xF8DD;l174 = 
    554 (l195)?20:16;}else if(l276 == 3){l172 = (int16)0xF8D2;l174 = (l195)?20:12;}
    555 else if(l276 == 2){l172 = (int16)0xF8C4;l174 = (l195)?20:8;}else{l172 = (
    556 int16)0xF8AB;l174 = (l195)?20:4;}l175 = 9;break;case 0x00000002:if(l276>= 4){
    557 l172 = (int16)0xF8DD;l174 = 4;}else if(l276 == 3){l172 = (int16)0xF8D2;l174 = 
    558 (l195)?4:3;}else if(l276 == 2){l172 = (int16)0xF8C4;l174 = (l195)?4:2;}else{
    559 l172 = (int16)0xF8AB;l174 = (l195)?4:1;}l175 = (l195)?2:6;break;case
    560 0x00000003:case 0x00000004:case 0x00000005:default:if(l276>= 4){l172 = (int16
    561 )0xF8DD;l174 = 4;}else if(l276 == 3){l172 = (int16)0xF8D2;l174 = (l195)?4:3;}
    562 else if(l276 == 2){l172 = (int16)0xF8C4;l174 = (l195)?4:2;}else{l172 = (int16
    563 )0xF8AB;l174 = (l195)?4:1;}l175 = (l195)?2:6;break;}if((l28!= 0x00000001)&&(
    564 l28!= 0x00000002)){l84|= l46(l34,0x17,0x0F2B);l84|= l46(l34,0x15,0x0000);}for
    565 (l113=0;l113<4;l113++){l215[l113] = 0;}for(l203=l205;l203<(l205+4*2*192);l203++
    566 ){*l203 = 0;}l218(l213);l220(l217);if(l195 == 0){l84|= l38(l34,1,0,l172,l173);
    567 l84|= l230(l28,l205,l5,l34,0,175,0,1,l213,l216,l215,&l262,&l263);}else{l84|= 
    568 l239(l28,l205,l34,l213);}l84|= l264(l28,l205,l195,l216,l246,l47,l247,l265,
    569 l215,l266);l212(l205,l213,l261+4*((2*2)*4*6+4*4+2*4+4*2*192),l215,l216,l217);
    570 return l84;}static int16 l277(int32 l28,int16 l5){if((l5&0x0008)!= 0){if((l28
    571 != 0x00000001)&&(l28!= 0x00000002))return 1;else return-1;}else{return 0;}}
    572 static int16 l278(int16 l5,int16 l7[],int16 l8[]){int16 l279 = 80;int16 l280 = 
    573 150;if((l7[0] == 0x0002)&&(l8[0]<= l279)&&(l7[3] == 0x0002)&&(l8[3]<= l279)){
    574 if((l7[1] == 0x0002)&&(l8[1]<= l279)&&(l8[2]>= l280)){if(l7[2] == 0x0002){
    575 return 1;}if(l7[2] == 0x0000)return 1;}if((l7[1] == 0x0002)&&(l8[1]>= l280)&&(
    576 l7[2] == 0x0002)&&(l8[2]>= l280)&&((((l8[1]-l8[2])>= 0)?(l8[1]-l8[2]):-(l8[1]
    577 -l8[2]))<= 300)&&((l5&0x0004) == 0)){return 2;}if((l7[1] == 0x0001)&&(l7[2] == 
    578 0x0001)&&((((l8[1]-l8[2])>= 0)?(l8[1]-l8[2]):-(l8[1]-l8[2]))<= 250)&&((l5&
    579 0x0004)!= 0)){return 2;}}return 0;}static int16 l281(int32 l205[],int16 l5,l1
    580 l34,int16 l7[],int16 l8[],int16*l82,int16*l282,int32 l261[]){int16 l84,l195;
    581 int16 l89,l283;int16 l53,l196[4],l197[4];int16 l284;int16 l40,l113,l216[4],
    582 l246[4],l248[4][4];int32 l247[4],l265[4],l249[4],l266[4];int32 l222[(5000/(60
    583 +60)+1)][4];int16 l251[4];int32 l28;int16 l75[4+1],l76[4+1][4+1],l77[4+1][4+1
    584 ];int16 l78[4];int32 l79[4];int16 l285[4],l286[4],l287;int32 l288[4],l47[4];
    585 int16 l80[4];int16 l73,l289;l84 = 0x0000;for(l113=0;l113<4;l113++){l246[l113]
    586 = 2*192;l247[l113] = -99;l265[l113] = -99;for(l40=0;l40<4;l40++)l248[l40][
    587 l113] = 0;l249[l113] = -99;l266[l113] = -99;}l84|= l33(l34,&l28,&l73);l195 = 
    588 l68(l34);l84|= l194(l195,l5,l34,l196,l197);l289 = l277(l28,l5);if(l289 == 1){
    589 if(l195 == 1){l84|= l70((l5&0x0040),(l5&0x0020),l34,l73,l285,l286,l288,l75,
    590 l76,l77,l78,l79,l80);l287 = 0;}else{for(l113=0;l113<4;l113++)l216[l113] = 
    591 0x0000;if((l5&0x0010) == 0){l84|= l37(l28,l34);l84|= l221(l28,l34,l216,l222);
    592 }l84|= l81((l5&0x0040),l34,l73,l285,l286,l288,&l287,l75,l76,l77);}}else if(
    593 l289 == 0){if(l195 == 1){for(l113=0;l113<4;l113++)l216[l113] = 0x0010;l84|= 
    594 l48(l34,1,&l89);l170 = 1;l171 = 1;l84|= l275(l28,l205,l195,l5,l34,l261,l216,
    595 l246,l47,l247,l265,l266,l251);l84|= l46(l34,0x18,l89&0xFFF8);}else{for(l113=0
    596 ;l113<4;l113++){l216[l113] = 0x0000;}l84|= l37(l28,l34);l84|= l221(l28,l34,l216
    597 ,l222);l84|= l260(l28,l205,l5,l34,l261,l216,l246,l47,l247,l248,l249,l251);l84
    598 |= l275(l28,l205,l195,l5,l34,l261,l216,l246,l47,l247,l265,l266,l251);l84|= 
    599 l46(l34,0x00,(int16)0x8000);l84|= l43(l34,0x00,&l283);l84|= l69(l34);}l287 = 
    600 0;for(l113=0;l113<4;l113++){l285[l113] = l216[l113];l284 = l195?-4732:-2732;
    601 l286[l113] = (((0)>((((840*l246[l113])/2+l284)+5)/10))?(0):((((840*l246[l113]
    602 )/2+l284)+5)/10));for(l40=0;l40<4;l40++){if(l248[l40][l113] == 1){l287|= (0x1
    603 <<(l40*4+l113));l287|= (0x1<<(l113*4+l40));}}l288[l113] = l47[l113];}}else{
    604 l84|= 0x0008;}for(l113=0;l113<4;l113++){if(l216[l113] == 0x0008){l285[l113] = 
    605 0x0008;l286[l113] = -99;l287&= 0xFFFF^(0x1<<(l40*4+l113));l287&= 0xFFFF^(0x1
    606 <<(l113*4+l40));}}*l82 = 0;for(l113=0;l113<4;l113++){l53 = l196[l113];l7[l53]
    607 = l285[l113];l8[l53] = l286[l113];for(l40=0;l40<4;l40++){if((0x1<<(l40*4+l113
    608 ))&l287){*l82|= (0x1<<(l196[l40]*4+l53));}}}*l282 = l278(l5,l7,l8);return l84
    609 ;}int32 l60(l11*l13){l13->l10[0] = (int16)0xF3F0;return 0x0000;}int
    610 phy_5464_cable_diag_sw(int unit,soc_port_t port,soc_port_cable_diag_t*l6){
    611 int16 l216[4],l290[4];int16 l291,l9;int16 l110;int16 l75;int32*l205;int l292=
    612 0;phy_ctrl_t*l293;l293 = EXT_PHY_SW_STATE(unit,port);l205 = sal_alloc(sizeof(
    613 *l205)*(4*2*192),"cdiag_taps");if(l205 == NULL){return SOC_E_MEMORY;}l6->
    614 fuzz_len = 0;l6->npairs = 4;l6->state = SOC_PORT_CABLE_STATE_OK;l75 = l281(
    615 l205,0x0004,l293,l216,l290,&l9,&l291,NULL);sal_free(l205);if(l75!= 0x0000){
    616 LOG_WARN(BSL_LS_SOC_PHY,(BSL_META_U(unit,"Cable Diag return code = %d\n"),l75
    617 ));return SOC_E_FAIL;}for(l110=0;l110<4;l110++){switch(l216[l110]){case 0x0010
    618 :l292 = 1;break;case 0x0000:l292 = 1;l6->pair_state[l110] = 
    619 SOC_PORT_CABLE_STATE_OK;break;case 0x0002:l6->pair_state[l110] = 
    620 SOC_PORT_CABLE_STATE_OPEN;break;case 0x0004:l6->pair_state[l110] = 
    621 SOC_PORT_CABLE_STATE_SHORT;break;case 0x0001:l6->pair_state[l110] = 
    622 SOC_PORT_CABLE_STATE_CROSSTALK;break;case 0x0008:default:l6->pair_state[l110]
    623 = SOC_PORT_CABLE_STATE_UNKNOWN;break;}if(l6->pair_state[l110]>l6->state){l6->
    624 state = l6->pair_state[l110];}l6->pair_len[l110] = ((l290[l110]+50)/100);}if(
    625 l292){return 1;}return SOC_E_NONE;}
    626 #endif /* INCLUDE_PHY_5464 || INCLUDE_PHY_5482 */