int * FUN_00473228(int param_1,int *param_2,int param_3)

{
  int iVar1;
  char cVar2;
  undefined4 uVar3;
  
  cVar2 = **(char **)(param_1 + 0xc)   //possible issue identified - semgrep
  do {
    if (((cVar2 != 'r') && (cVar2 != 'V')) && (cVar2 != 'K')) {
      return param_2;
    }
    *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + 1;
    if (cVar2 == 'r') {
      uVar3 = 0x19;
      if (param_3 == 0) {
        uVar3 = 0x16;
      }
LAB_004732c0:
      iVar1 = *(int *)(param_1 + 0x30) + 9;
    }
    else {
      if (cVar2 == 'V') {
        uVar3 = 0x1a;
        if (param_3 == 0) {
          uVar3 = 0x17;
        }
        goto LAB_004732c0;
      }
      uVar3 = 0x1b;
      if (param_3 == 0) {
        uVar3 = 0x18;
      }
      iVar1 = *(int *)(param_1 + 0x30) + 6;
    }
    *(int *)(param_1 + 0x30) = iVar1;
    iVar1 = FUN_00473000(param_1,uVar3,0,0);
    *param_2 = iVar1;
    if (iVar1 == 0) {
      return (int *)0x0;
    }
    param_2 = (int *)(iVar1 + 4);
    cVar2 = **(char **)(param_1 + 0xc)   //possible issue identified - semgrep
  } while( true );
}