undefined4 CCK_Rate2MCS(int param_1)
{
char cVar1;
uint uVar2;
undefined4 uVar3;
uint uVar4;
int iVar5;
int iVar6;
uint uVar7;
byte bVar8;
uVar2 = Status;
uVar4 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar2 & 1;
}
iVar6 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar2 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb2f00;
}
iVar5 = 1;
while( true ) {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar2 & 0x20000) == 0) || (iVar5 == 100)) break;
iVar5 = iVar5 + 1;
}
if ((uVar2 & 0x2ff00) == 0x2f00) {
uVar4 = uVar2 & 0xff;
goto LAB_000ba70c;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar4 = 0;
LAB_000ba70c:
if ((int)(uVar2 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,0x2f);
uVar4 = (uint)*(byte *)(param_1 + 0x4af8);
LAB_000ba8a4:
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar2 & 1;
}
iVar6 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar2 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb2f00;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar5 = 1;
while( true ) {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar2 & 0x20000) == 0) || (iVar5 == 100)) break;
iVar5 = iVar5 + 1;
}
if ((uVar2 & 0x2ff00) == 0x2f00) {
uVar4 = uVar2 & 0xff;
goto LAB_000ba84c;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar4 = 0;
LAB_000ba84c:
if ((int)(uVar2 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,0x2f);
uVar4 = (uint)*(byte *)(param_1 + 0x4af8);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
}
goto LAB_000ba8a4;
}
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar1 == '\x01') {
Status = Status & 0xfffffffe;
if (uVar7 != 0) {
Status = Status | 1;
}
goto LAB_000ba8c8;
}
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
LAB_000ba8c8:
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar2 = Status;
if (cVar1 == '\0') {
uVar4 = uVar4 & 0xfc;
bVar8 = (byte)uVar4 | 1;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar2 & 1;
}
iVar6 = 1;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar2 & 0x20000) == 0) break;
iVar6 = iVar6 + 1;
printk(&_LC5) //possible issue identified - semgrep
if (iVar6 == 100) goto LAB_000ba9a4;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x101c) = uVar4 | 0xa2f01;
}
*(byte *)(param_1 + 0x4af8) = bVar8;
if (iVar6 != 100) goto LAB_000ba9c4;
LAB_000ba9a4:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x2f);
LAB_000ba9c4:
if (*(char *)(param_1 + 0xad) == '\x01') {
LAB_000bab7c:
Status = Status & 0xfffffffe;
if (uVar7 != 0) {
Status = Status | 1;
}
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar2 & 1;
}
iVar6 = 1;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar2 & 0x20000) == 0) break;
iVar5 = iVar6 % 0x14;
iVar6 = iVar6 + 1;
if ((iVar5 == 0) && (cVar1 == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar2 & 0xfffdffff;
}
printk(&_LC5) //possible issue identified - semgrep
if (iVar6 == 100) goto LAB_000bab20;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
if (cVar1 == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 | 0xa2f01;
}
iVar5 = AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
if (*(char *)(param_1 + 0x16964) == '\x01') {
RTMPusecDelay(1000);
}
if ((iVar5 == 0) && (*(char *)(param_1 + 0xec) == '\0')) {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) = uVar4 | 0x82f01;
}
*(byte *)(param_1 + 0x4af8) = bVar8;
if (iVar6 != 100) goto LAB_000bab68;
LAB_000bab20:
printk("ERROR!!! ");
printk("BBP write R%d fail\n",0x2f);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
LAB_000bab68:
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if (cVar1 == '\x01') goto LAB_000bab7c;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
}
else {
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar2 = Status;
uVar4 = 0;
if (cVar1 != '\0') goto LAB_000bae38;
if (*(int *)(param_1 + 0x29f8) == 4) {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar2 & 1;
}
iVar6 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if ((uVar2 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x101c) = 0xb3100;
}
iVar5 = 1;
while( true ) {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x101c);
}
if (((uVar2 & 0x20000) == 0) || (iVar5 == 100)) break;
iVar5 = iVar5 + 1;
}
if ((uVar2 & 0x2ff00) == 0x3100) {
uVar4 = uVar2 & 0xff;
goto LAB_000bac78;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar4 = 0;
LAB_000bac78:
if ((int)(uVar2 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",0,0x31);
uVar4 = (uint)*(byte *)(param_1 + 0x4afa);
LAB_000bae10:
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
else {
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
}
else {
uVar7 = 0;
if (*(char *)(param_1 + 0xad) == '\x01') {
Status = Status & 0xfffffffe;
uVar7 = uVar2 & 1;
}
iVar6 = 0;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
while( true ) {
uVar2 = 0;
if (cVar1 == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if ((uVar2 & 0x20000) == 0) {
if (cVar1 == '\0') {
*(undefined4 *)(*(int *)(param_1 + 0xdc) + 0x7028) = 0xb3100;
}
AsicSendCommandToMcuBBP(param_1,0x80,0xff,0,0,0);
RTMPusecDelay(1000);
iVar5 = 1;
while( true ) {
uVar2 = 0;
if (*(char *)(param_1 + 0xec) == '\0') {
uVar2 = *(uint *)(*(int *)(param_1 + 0xdc) + 0x7028);
}
if (((uVar2 & 0x20000) == 0) || (iVar5 == 100)) break;
iVar5 = iVar5 + 1;
}
if ((uVar2 & 0x2ff00) == 0x3100) {
uVar4 = uVar2 & 0xff;
goto LAB_000badb8;
}
}
iVar6 = iVar6 + 1;
if (iVar6 == 100) break;
cVar1 = *(char *)(param_1 + 0xec) //possible issue identified - semgrep
}
uVar4 = 0;
LAB_000badb8:
if ((int)(uVar2 << 0xe) < 0) {
printk("ERROR!!! ");
printk("BBP(viaMCU=%d) read R%d fail\n",1,0x31);
uVar4 = (uint)*(byte *)(param_1 + 0x4afa);
if (*(char *)(param_1 + 0xec) == '\0') {
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) =
*(uint *)(*(int *)(param_1 + 0xdc) + 0x7028) & 0xfffdffff;
}
goto LAB_000bae10;
}
cVar1 = *(char *)(param_1 + 0xad) //possible issue identified - semgrep
}
if ((cVar1 == '\x01') && (Status = Status & 0xfffffffe, uVar7 != 0)) {
Status = Status | 1;
}
LAB_000bae38:
uVar4 = uVar4 >> 4;
uVar3 = 1;
if (uVar4 != 9) {
if (uVar4 < 9) {
uVar3 = 0;
}
else {
uVar3 = 2;
if ((uVar4 != 10) && (uVar3 = 3, uVar4 != 0xb)) {
uVar3 = 0;
}
}
}
return uVar3;
}