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);
}