undefined4 FUN_004388fc(int *param_1,int param_2,int param_3)

{
  int iVar1;
  int iVar2;
  
  if (param_3 < 0) {
    if (param_2 == 0) {
      return 0;
    }
    param_3 = FUN_00483e50(param_2);
  }
  if (*param_1 < param_3) {
    iVar2 = param_1[2];
    if (iVar2 == 0) goto LAB_00438a7c;
    iVar1 = FUN_0043a6b4(iVar2,param_3 + 1,"asn1_lib.c",0x179);
    param_1[2] = iVar1;
  }
  else {
    iVar1 = param_1[2];
    if (iVar1 != 0) goto LAB_00438958;
LAB_00438a7c:
    iVar1 = FUN_0043a36c(param_3 + 1,"asn1_lib.c",0x177);
    param_1[2] = iVar1;
    iVar2 = 0;
  }
  if (iVar1 == 0) {
    FUN_00433604(0xd,0xba,0x41,"asn1_lib.c",0x17d);
    param_1[2] = iVar2;
    return 0;
  }
LAB_00438958:
  *param_1 = param_3;
  if (param_2 == 0) {
    return 1;
  }
  FUN_00483c90(iVar1,param_2,param_3);
  *(undefined1 *)(param_1[2] + param_3) = 0;
  return 1;
}