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 */