undefined4 rareg(int param_1,uint param_2,undefined4 param_3)
{
int __fd;
int *piVar1;
char *pcVar2;
void *__addr;
uint __offset;
int iVar3;
undefined4 uVar4;
undefined4 *puVar5;
__fd = open("/dev/mem",0x12) //possible issue identified - semgrep
if (__fd < 0) {
piVar1 = __errno_location();
pcVar2 = strerror(*piVar1);
printf("open file /dev/mem error. %s\n",pcVar2);
}
else {
__offset = param_2 & 0xfffff000;
__addr = mmap((void *)0x0,0x1000,3,1,__fd,__offset);
if (__addr != (void *)0xffffffff) {
puVar5 = (undefined4 *)((int)__addr + (param_2 - __offset));
iVar3 = (param_2 - __offset) + __offset;
verbose("rareg--0x%08x: 0x%08x\n",iVar3,*puVar5);
if (param_1 == 1) {
*puVar5 = param_3;
usleep(100000);
verbose("rareg write 0x%08x: 0x%08x\n",iVar3,*puVar5);
}
uVar4 = *puVar5;
munmap(__addr,0x1000);
close(__fd);
return uVar4;
}
piVar1 = __errno_location();
pcVar2 = strerror(*piVar1);
printf("mmap() failed at phsical address:%d %s\n",__offset,pcVar2);
close(__fd);
}
/* WARNING: Subroutine does not return */
exit(-1);
}