
/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

uint * __regparm3 d_encoding(int param_1,int param_2)

{
  char cVar1;
  char *pcVar2;
  uint uVar3;
  uint *puVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  uint *puVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 *puVar12;
  char *pcVar13;
  
  pcVar2 = *(char **)(param_1 + 0xc);
  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {
    iVar6 = *(int *)(param_1 + 0x2c);
    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;
    if (*pcVar2 == 'T') {
      *(char **)(param_1 + 0xc) = pcVar2 + 1;
      if (pcVar2[1] == '\0') {
        return (uint *)0x0;
      }
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      switch(pcVar2[1]) {
      case 'C':
        uVar10 = d_type();
        iVar6 = d_number_isra_0();
        if (iVar6 < 0) {
          return (uint *)0x0;
        }
        if (**(char **)(param_1 + 0xc) == '_') {
          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
          d_type();
          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;
          puVar4 = (uint *)d_make_comp(uVar10);
          return puVar4;
        }
        return (uint *)0x0;
      default:
        return (uint *)0x0;
      case 'F':
        d_type();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'H':
        d_name();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'I':
        d_type();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'J':
        d_type();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'S':
        d_type();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'T':
        *(int *)(param_1 + 0x2c) = iVar6 + 10;
        d_type();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'V':
        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;
        d_type();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'W':
        d_name();
        puVar4 = (uint *)d_make_comp(0);
        break;
      case 'c':
        iVar6 = d_call_offset();
        if (iVar6 == 0) {
          return (uint *)0x0;
        }
        iVar6 = d_call_offset();
        if (iVar6 != 0) {
          d_encoding();
          puVar4 = (uint *)d_make_comp(0);
          return puVar4;
        }
        return (uint *)0x0;
      case 'h':
        iVar6 = d_call_offset();
        if (iVar6 != 0) {
          d_encoding();
          puVar4 = (uint *)d_make_comp(0);
          return puVar4;
        }
        return (uint *)0x0;
      case 'v':
        iVar6 = d_call_offset();
        if (iVar6 == 0) {
          return (uint *)0x0;
        }
        d_encoding();
        puVar4 = (uint *)d_make_comp(0);
        return puVar4;
      }
      return puVar4;
    }
    if (*pcVar2 != 'G') {
      return (uint *)0x0;
    }
    *(char **)(param_1 + 0xc) = pcVar2 + 1;
    if (pcVar2[1] != '\0') {
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      switch(pcVar2[1]) {
      case 'A':
        d_encoding();
        puVar4 = (uint *)d_make_comp(0);
        return puVar4;
      default:
        return (uint *)0x0;
      case 'R':
        d_name();
        uVar10 = d_number_component();
        puVar4 = (uint *)d_make_comp(uVar10);
        return puVar4;
      case 'T':
        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {
          d_encoding();
          puVar4 = (uint *)d_make_comp(0);
          return puVar4;
        }
        d_encoding();
        puVar4 = (uint *)d_make_comp(0);
        return puVar4;
      case 'V':
        d_name();
        puVar4 = (uint *)d_make_comp(0);
        return puVar4;
      case 'r':
        goto _L927;
      }
    }
    return (uint *)0x0;
  }
  puVar4 = (uint *)d_name();
  if (puVar4 == (uint *)0x0) {
    return (uint *)0x0;
  }
  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {
    do {
      uVar3 = *puVar4;
      if (uVar3 != 0x4c) {
        if (uVar3 < 0x4d) {
          if (4 < uVar3 - 0x1c) goto LAB_00439c16;
        }
        else if (1 < uVar3 - 0x4e) {
LAB_00439c16:
          if (uVar3 != 2) {
            return puVar4;
          }
          puVar9 = (uint *)puVar4[3];
          uVar3 = *puVar9;
          do {
            if (uVar3 != 0x4c) {
              if (uVar3 < 0x4d) {
                if (4 < uVar3 - 0x1c) {
                  return puVar4;
                }
              }
              else if (1 < uVar3 - 0x4e) {
                return puVar4;
              }
            }
            puVar9 = (uint *)puVar9[2];
            uVar3 = *puVar9;
            puVar4[3] = (uint)puVar9;
          } while( true );
        }
      }
      puVar4 = (uint *)puVar4[2];
    } while( true );
  }
  if (**(char **)(param_1 + 0xc) == '\0') {
    return puVar4;
  }
  puVar9 = puVar4;
  if (**(char **)(param_1 + 0xc) == 'E') {
    return puVar4;
  }
  do {
    uVar3 = *puVar9;
    if (uVar3 < 0x21) {
      if (0x1b < uVar3) goto LAB_00439d5f;
      if (uVar3 != 2) {
        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;
        break;
      }
      puVar9 = (uint *)puVar9[3];
    }
    else {
      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;
LAB_00439d5f:
      puVar9 = (uint *)puVar9[2];
    }
  } while (puVar9 != (uint *)0x0);
LAB_00439d08:
  piVar5 = (int *)d_bare_function_type();
  if (piVar5 == (int *)0x0) {
    return (uint *)0x0;
  }
  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {
    piVar5[2] = 0;
  }
  puVar4 = (uint *)d_make_comp(piVar5);
  return puVar4;
LAB_00439cbd:
  uVar3 = *puVar9;
  if (8 < uVar3) goto LAB_00439d08;
  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))
  goto LAB_00439d08;
  goto LAB_00439cbd;
_L927:
  iVar6 = d_number_isra_0();
  if (iVar6 < 2) {
    return (uint *)0x0;
  }
  pcVar2 = *(char **)(param_1 + 0xc);
  if (*pcVar2 == '\0') {
    return (uint *)0x0;
  }
  pcVar13 = pcVar2 + 1;
  *(char **)(param_1 + 0xc) = pcVar13;
  if (*pcVar2 != '_') {
    return (uint *)0x0;
  }
  iVar6 = iVar6 + -1;
  puVar8 = (undefined4 *)0x0;
  do {
    if (*pcVar13 == '\0') {
      return (uint *)0x0;
    }
    if (*pcVar13 == '$') {
      cVar1 = pcVar13[1];
      if (cVar1 == 'S') {
        uVar10 = 0x2f;
      }
      else if (cVar1 == '_') {
        uVar10 = 0x2e;
      }
      else {
        if (cVar1 != '$') {
          return (uint *)0x0;
        }
        uVar10 = 0x24;
      }
      iVar11 = *(int *)(param_1 + 0x14);
      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);
      if (*(int *)(param_1 + 0x18) <= iVar11) {
        *(char **)(param_1 + 0xc) = pcVar13;
        return (uint *)0x0;
      }
      iVar6 = iVar6 + -2;
      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));
      puVar12[1] = 0;
      *(int *)(param_1 + 0x14) = iVar11 + 1;
      *puVar12 = 0x40;
      puVar12[2] = uVar10;
      *(char **)(param_1 + 0xc) = pcVar13;
    }
    else {
      iVar11 = 0;
      do {
        iVar11 = iVar11 + 1;
        if (iVar6 <= iVar11) {
          iVar7 = *(int *)(param_1 + 0x14);
          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;
          goto LAB_0043a253;
        }
      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));
      iVar7 = *(int *)(param_1 + 0x14);
      if (*(int *)(param_1 + 0x18) <= iVar7) {
LAB_0043a2a8:
        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;
        return (uint *)0x0;
      }
LAB_0043a253:
      iVar6 = iVar6 - iVar11;
      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));
      puVar12[1] = 0;
      *(int *)(param_1 + 0x14) = iVar7 + 1;
      puVar12[2] = pcVar13;
      iVar7 = *(int *)(param_1 + 0xc);
      puVar12[1] = 0;
      pcVar13 = (char *)(iVar7 + iVar11);
      *puVar12 = 0;
      puVar12[3] = iVar11;
      *(char **)(param_1 + 0xc) = pcVar13;
    }
    if ((puVar8 != (undefined4 *)0x0) &&
       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)) {
      return (uint *)0x0;
    }
    puVar8 = puVar12;
    if (iVar6 < 1) {
      puVar4 = (uint *)d_make_comp(0);
      return puVar4;
    }
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

uint * __regparm3 FUN_00439bb0(int param_1,int param_2)

{
  char cVar1;
  char *pcVar2;
  uint uVar3;
  uint *puVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  uint *puVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 *puVar12;
  char *pcVar13;
  
  pcVar2 = *(char **)(param_1 + 0xc);
  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {
    iVar6 = *(int *)(param_1 + 0x2c);
    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;
    if (*pcVar2 == 'T') {
      *(char **)(param_1 + 0xc) = pcVar2 + 1;
      if (pcVar2[1] == '\0') {
        return (uint *)0x0;
      }
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      switch(pcVar2[1]) {
      case 'C':
        uVar10 = FUN_00438890();
        iVar6 = FUN_004370c0();
        if (iVar6 < 0) {
          return (uint *)0x0;
        }
        if (**(char **)(param_1 + 0xc) == '_') {
          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
          FUN_00438890();
          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;
          puVar4 = (uint *)FUN_00436ee0(uVar10);
          return puVar4;
        }
        return (uint *)0x0;
      default:
        return (uint *)0x0;
      case 'F':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'H':
        FUN_00438370();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'I':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'J':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'S':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'T':
        *(int *)(param_1 + 0x2c) = iVar6 + 10;
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'V':
        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'W':
        FUN_00438370();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'c':
        iVar6 = FUN_00437640();
        if (iVar6 == 0) {
          return (uint *)0x0;
        }
        iVar6 = FUN_00437640();
        if (iVar6 != 0) {
          FUN_00439bb0();
          puVar4 = (uint *)FUN_00436ee0(0);
          return puVar4;
        }
        return (uint *)0x0;
      case 'h':
        iVar6 = FUN_00437640();
        if (iVar6 != 0) {
          FUN_00439bb0();
          puVar4 = (uint *)FUN_00436ee0(0);
          return puVar4;
        }
        return (uint *)0x0;
      case 'v':
        iVar6 = FUN_00437640();
        if (iVar6 == 0) {
          return (uint *)0x0;
        }
        FUN_00439bb0();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      }
      return puVar4;
    }
    if (*pcVar2 != 'G') {
      return (uint *)0x0;
    }
    *(char **)(param_1 + 0xc) = pcVar2 + 1;
    if (pcVar2[1] != '\0') {
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      switch(pcVar2[1]) {
      case 'A':
        FUN_00439bb0();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      default:
        return (uint *)0x0;
      case 'R':
        FUN_00438370();
        uVar10 = FUN_00437190();
        puVar4 = (uint *)FUN_00436ee0(uVar10);
        return puVar4;
      case 'T':
        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {
          FUN_00439bb0();
          puVar4 = (uint *)FUN_00436ee0(0);
          return puVar4;
        }
        FUN_00439bb0();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      case 'V':
        FUN_00438370();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      case 'r':
        goto code_r0x00439dc8;
      }
    }
    return (uint *)0x0;
  }
  puVar4 = (uint *)FUN_00438370();
  if (puVar4 == (uint *)0x0) {
    return (uint *)0x0;
  }
  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {
    do {
      uVar3 = *puVar4;
      if (uVar3 != 0x4c) {
        if (uVar3 < 0x4d) {
          if (4 < uVar3 - 0x1c) goto LAB_00439c16;
        }
        else if (1 < uVar3 - 0x4e) {
LAB_00439c16:
          if (uVar3 != 2) {
            return puVar4;
          }
          puVar9 = (uint *)puVar4[3];
          uVar3 = *puVar9;
          do {
            if (uVar3 != 0x4c) {
              if (uVar3 < 0x4d) {
                if (4 < uVar3 - 0x1c) {
                  return puVar4;
                }
              }
              else if (1 < uVar3 - 0x4e) {
                return puVar4;
              }
            }
            puVar9 = (uint *)puVar9[2];
            uVar3 = *puVar9;
            puVar4[3] = (uint)puVar9;
          } while( true );
        }
      }
      puVar4 = (uint *)puVar4[2];
    } while( true );
  }
  if (**(char **)(param_1 + 0xc) == '\0') {
    return puVar4;
  }
  puVar9 = puVar4;
  if (**(char **)(param_1 + 0xc) == 'E') {
    return puVar4;
  }
  do {
    uVar3 = *puVar9;
    if (uVar3 < 0x21) {
      if (0x1b < uVar3) goto LAB_00439d5f;
      if (uVar3 != 2) {
        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;
        break;
      }
      puVar9 = (uint *)puVar9[3];
    }
    else {
      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;
LAB_00439d5f:
      puVar9 = (uint *)puVar9[2];
    }
  } while (puVar9 != (uint *)0x0);
LAB_00439d08:
  piVar5 = (int *)FUN_004396a0();
  if (piVar5 == (int *)0x0) {
    return (uint *)0x0;
  }
  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {
    piVar5[2] = 0;
  }
  puVar4 = (uint *)FUN_00436ee0(piVar5);
  return puVar4;
LAB_00439cbd:
  uVar3 = *puVar9;
  if (8 < uVar3) goto LAB_00439d08;
  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))
  goto LAB_00439d08;
  goto LAB_00439cbd;
code_r0x00439dc8:
  iVar6 = FUN_004370c0();
  if (iVar6 < 2) {
    return (uint *)0x0;
  }
  pcVar2 = *(char **)(param_1 + 0xc);
  if (*pcVar2 == '\0') {
    return (uint *)0x0;
  }
  pcVar13 = pcVar2 + 1;
  *(char **)(param_1 + 0xc) = pcVar13;
  if (*pcVar2 != '_') {
    return (uint *)0x0;
  }
  iVar6 = iVar6 + -1;
  puVar8 = (undefined4 *)0x0;
  do {
    if (*pcVar13 == '\0') {
      return (uint *)0x0;
    }
    if (*pcVar13 == '$') {
      cVar1 = pcVar13[1];
      if (cVar1 == 'S') {
        uVar10 = 0x2f;
      }
      else if (cVar1 == '_') {
        uVar10 = 0x2e;
      }
      else {
        if (cVar1 != '$') {
          return (uint *)0x0;
        }
        uVar10 = 0x24;
      }
      iVar11 = *(int *)(param_1 + 0x14);
      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);
      if (*(int *)(param_1 + 0x18) <= iVar11) {
        *(char **)(param_1 + 0xc) = pcVar13;
        return (uint *)0x0;
      }
      iVar6 = iVar6 + -2;
      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));
      puVar12[1] = 0;
      *(int *)(param_1 + 0x14) = iVar11 + 1;
      *puVar12 = 0x40;
      puVar12[2] = uVar10;
      *(char **)(param_1 + 0xc) = pcVar13;
    }
    else {
      iVar11 = 0;
      do {
        iVar11 = iVar11 + 1;
        if (iVar6 <= iVar11) {
          iVar7 = *(int *)(param_1 + 0x14);
          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;
          goto code_r0x0043a253;
        }
      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));
      iVar7 = *(int *)(param_1 + 0x14);
      if (*(int *)(param_1 + 0x18) <= iVar7) {
code_r0x0043a2a8:
        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;
        return (uint *)0x0;
      }
code_r0x0043a253:
      iVar6 = iVar6 - iVar11;
      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));
      puVar12[1] = 0;
      *(int *)(param_1 + 0x14) = iVar7 + 1;
      puVar12[2] = pcVar13;
      iVar7 = *(int *)(param_1 + 0xc);
      puVar12[1] = 0;
      pcVar13 = (char *)(iVar7 + iVar11);
      *puVar12 = 0;
      puVar12[3] = iVar11;
      *(char **)(param_1 + 0xc) = pcVar13;
    }
    if ((puVar8 != (undefined4 *)0x0) &&
       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {
      return (uint *)0x0;
    }
    puVar8 = puVar12;
    if (iVar6 < 1) {
      puVar4 = (uint *)FUN_00436ee0(0);
      return puVar4;
    }
  } while( true );
}


CALL 0x00074f06
ADD ECX,0x1b044b
PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
PUSH EBX
MOV EBX,EAX
SUB ESP,0xc
MOV EAX,dword ptr [EAX + 0xc]
MOVZX EDX,byte ptr [EAX]
CMP DL,0x47
JZ 0x00439c30
CMP DL,0x54
JZ 0x00439c30
MOV EAX,EBX
CALL 0x00438370
MOV ESI,EAX
TEST EAX,EAX
JZ 0x00439cea
TEST EDI,EDI
JZ 0x00439c80
TEST byte ptr [EBX + 0x8],0x1
JNZ 0x00439c80
MOV EAX,dword ptr [ESI]
CMP EAX,0x4c
JZ 0x00439d84
JA 0x00439d78
LEA EDX,[EAX + -0x1c]
CMP EDX,0x4
JBE 0x00439d84
CMP EAX,0x2
JZ 0x00439f70
ADD ESP,0xc
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [EBX + 0x2c]
LEA EDX,[ESI + 0x14]
MOV dword ptr [EBX + 0x2c],EDX
MOVZX EDX,byte ptr [EAX]
CMP DL,0x54
JZ 0x00439d90
CMP DL,0x47
JNZ 0x00439cea
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBX + 0xc],EDX
CMP byte ptr [EAX + 0x1],0x0
JZ 0x00439cea
LEA EDX,[EAX + 0x2]
MOV dword ptr [EBX + 0xc],EDX
MOVZX EDI,byte ptr [EAX + 0x1]
LEA EDX,[EDI + -0x41]
CMP DL,0x31
JA 0x00439cea
MOVZX EDX,DL
ADD ECX,dword ptr [ECX + EDX*0x4 + 0xffebc860]
JMP ECX
MOV EAX,dword ptr [EBX + 0xc]
MOVZX EAX,byte ptr [EAX]
TEST AL,AL
JZ 0x00439c1f
CMP AL,0x45
JZ 0x00439c1f
MOV EDX,ESI
MOV EAX,dword ptr [EDX]
CMP EAX,0x20
JA 0x00439d50
CMP EAX,0x1c
JNC 0x00439d5f
CMP EAX,0x2
JZ 0x0043a228
CMP EAX,0x4
JNZ 0x00439d70
MOV EDX,dword ptr [EDX + 0x8]
TEST EDX,EDX
JZ 0x00439ce0
MOV EAX,dword ptr [EDX]
CMP EAX,0x8
JA 0x00439d00
CMP EAX,0x7
JNC 0x00439d70
SUB EAX,0x1
CMP EAX,0x1
JA 0x00439ce0
MOV EDX,dword ptr [EDX + 0xc]
TEST EDX,EDX
JNZ 0x00439cbd
LEA ESI,[ESI]
MOV EDX,0x1
JMP 0x00439d08
ADD ESP,0xc
XOR ESI,ESI
POP EBX
MOV EAX,ESI
POP ESI
POP EDI
POP EBP
RET
XOR EDX,EDX
CMP EAX,0x34
SETNZ DL
MOV EAX,EBX
CALL 0x004396a0
TEST EAX,EAX
JZ 0x00439cea
TEST EDI,EDI
JNZ 0x00439d30
CMP dword ptr [ESI],0x2
JNZ 0x00439d30
CMP dword ptr [EAX],0x29
JNZ 0x00439d30
MOV dword ptr [EAX + 0x8],0x0
LEA ESI,[ESI]
NOP
SUB ESP,0xc
MOV ECX,ESI
MOV EDX,0x3
PUSH EAX
MOV EAX,EBX
CALL 0x00436ee0
ADD ESP,0x10
MOV ESI,EAX
JMP 0x00439c1f
CMP EAX,0x4c
JZ 0x00439d5f
JC 0x00439d70
SUB EAX,0x4e
CMP EAX,0x1
JA 0x00439d70
MOV EDX,dword ptr [EDX + 0x8]
TEST EDX,EDX
JNZ 0x00439c90
LEA ESI,[ESI]
XOR EDX,EDX
JMP 0x00439d08
LEA EDX,[EAX + -0x4e]
CMP EDX,0x1
JA 0x00439c16
MOV ESI,dword ptr [ESI + 0x8]
JMP 0x00439bf9
LEA EDX,[EAX + 0x1]
MOV dword ptr [EBX + 0xc],EDX
CMP byte ptr [EAX + 0x1],0x0
JZ 0x00439cea
LEA EDX,[EAX + 0x2]
MOV dword ptr [EBX + 0xc],EDX
MOVZX EAX,byte ptr [EAX + 0x1]
SUB EAX,0x43
CMP AL,0x33
JA 0x00439cea
MOVZX EAX,AL
ADD ECX,dword ptr [ECX + EAX*0x4 + 0xffebc928]
JMP ECX
MOV EDX,dword ptr [ESI + 0xc]
MOV EAX,dword ptr [EDX]
CMP EAX,0x4c
JZ 0x00439f8c
JA 0x0043a210
SUB EAX,0x1c
CMP EAX,0x4
JA 0x00439c1f
MOV EDX,dword ptr [EDX + 0x8]
MOV EAX,dword ptr [EDX]
MOV dword ptr [ESI + 0xc],EDX
CMP EAX,0x4c
JNZ 0x00439f7a
JMP 0x00439f8c
SUB EAX,0x4e
CMP EAX,0x1
JA 0x00439c1f
JMP 0x00439f8c
MOV EDX,dword ptr [EDX + 0xc]
JMP 0x00439d62
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nuint * __regparm3 FUN_00439bb0(int param_1,int param_2)\n\n{\n  char cVar1;\n  char *pcVar2;\n  uint uVar3;\n  uint *puVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  char *pcVar13;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }\n  puVar4 = (uint *)FUN_00438370();\n  if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }\n  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }\n  if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }\n  puVar9 = puVar4;\n  if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }\n  do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);\nLAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();\n  if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }\n  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }\n  puVar4 = (uint *)FUN_00436ee0(piVar5);\n  return puVar4;\nLAB_00439cbd:\n  uVar3 = *puVar9;\n  if (8 < uVar3) goto LAB_00439d08;\n  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;\n  goto LAB_00439cbd;\ncode_r0x00439dc8:\n  iVar6 = FUN_004370c0();\n  if (iVar6 < 2) {\n    return (uint *)0x0;\n  }\n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }\n  pcVar13 = pcVar2 + 1;\n  *(char **)(param_1 + 0xc) = pcVar13;\n  if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }\n  iVar6 = iVar6 + -1;\n  puVar8 = (undefined4 *)0x0;\n  do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );\n}\n\n" comment (ERROR "uint * __regparm3 FUN_00439bb0(int param_1,int param_2)" (binary_expression "uint * __regparm3 FUN_00439bb0(int param_1,int param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00439bb0(int param_1,int param_2)" identifier (argument_list "(int param_1,int param_2)" ( (ERROR "int" identifier) identifier , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  uint uVar3;\n  uint *puVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  char *pcVar13;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }\n  puVar4 = (uint *)FUN_00438370();\n  if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }\n  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }\n  if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }\n  puVar9 = puVar4;\n  if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }\n  do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);\nLAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();\n  if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }\n  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }\n  puVar4 = (uint *)FUN_00436ee0(piVar5);\n  return puVar4;\nLAB_00439cbd:\n  uVar3 = *puVar9;\n  if (8 < uVar3) goto LAB_00439d08;\n  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;\n  goto LAB_00439cbd;\ncode_r0x00439dc8:\n  iVar6 = FUN_004370c0();\n  if (iVar6 < 2) {\n    return (uint *)0x0;\n  }\n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }\n  pcVar13 = pcVar2 + 1;\n  *(char **)(param_1 + 0xc) = pcVar13;\n  if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }\n  iVar6 = iVar6 + -1;\n  puVar8 = (undefined4 *)0x0;\n  do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }" if (parenthesized_expression "((*pcVar2 == 'G') || (*pcVar2 == 'T'))" ( (binary_expression "(*pcVar2 == 'G') || (*pcVar2 == 'T')" (parenthesized_expression "(*pcVar2 == 'G')" ( (binary_expression "*pcVar2 == 'G'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'G'" ' character ')) )) || (parenthesized_expression "(*pcVar2 == 'T')" ( (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'T'" ' character ')) ))) )) (compound_statement "{\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }" { (expression_statement "iVar6 = *(int *)(param_1 + 0x2c);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x2c)" identifier = (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0x14;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0x14" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 0x14" identifier + number_literal)) ;) (if_statement "if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" if (parenthesized_expression "(*pcVar2 == 'T')" ( (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'T'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(pcVar2[1] == '\0')" ( (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (switch_statement "switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }" { (case_statement "case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'C'" ' character ') : (expression_statement "uVar10 = FUN_00438890();" (assignment_expression "uVar10 = FUN_00438890()" identifier = (call_expression "FUN_00438890()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = FUN_004370c0();" (assignment_expression "iVar6 = FUN_004370c0()" identifier = (call_expression "FUN_004370c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 < 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == '_')" ( (binary_expression "**(char **)(param_1 + 0xc) == '_'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }" { (expression_statement "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;" (assignment_expression "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(uVar10);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(uVar10)" identifier = (cast_expression "(uint *)FUN_00436ee0(uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "default:\n        return (uint *)0x0;" default : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'F'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'H'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'I'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'J'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'S'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'T'" ' character ') : (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 10;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 10" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 10" identifier + number_literal)) ;) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'V'" ' character ') : (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0xf;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0xf" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 0xf" identifier + number_literal)) ;) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'W'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'c'" ' character ') : (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" { (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'h'" ' character ') : (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" { (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'v'" ' character ') : (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) })) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(*pcVar2 != 'G')" ( (binary_expression "*pcVar2 != 'G'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'G'" ' character ')) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }" if (parenthesized_expression "(pcVar2[1] != '\0')" ( (binary_expression "pcVar2[1] != '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (switch_statement "switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }" { (case_statement "case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'A'" ' character ') : (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "default:\n        return (uint *)0x0;" default : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;" case (char_literal "'R'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar10 = FUN_00437190();" (assignment_expression "uVar10 = FUN_00437190()" identifier = (call_expression "FUN_00437190()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(uVar10);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(uVar10)" identifier = (cast_expression "(uint *)FUN_00436ee0(uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'T'" ' character ') : (if_statement "if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" if (parenthesized_expression "((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'))" ( (binary_expression "(pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" (parenthesized_expression "(pcVar2[2] != '\0')" ( (binary_expression "pcVar2[2] != '\0'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" ( (comma_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) , (binary_expression "pcVar2[2] == 'n'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) == (char_literal "'n'" ' character '))) ))) )) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" { (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'V'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'r':\n        goto code_r0x00439dc8;" case (char_literal "'r'" ' character ') : (goto_statement "goto code_r0x00439dc8;" goto statement_identifier ;)) })) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar4 = (uint *)FUN_00438370();" (assignment_expression "puVar4 = (uint *)FUN_00438370()" identifier = (cast_expression "(uint *)FUN_00438370()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" if (parenthesized_expression "((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0))" ( (binary_expression "(param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 8) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 8) & 1)" ( (binary_expression "*(byte *)(param_1 + 8) & 1" (pointer_expression "*(byte *)(param_1 + 8)" * (cast_expression "(byte *)(param_1 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" { (do_statement "do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );" do (compound_statement "{\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    }" { (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" if (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) (compound_statement "{\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" { (if_statement "if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" if (parenthesized_expression "(uVar3 < 0x4d)" ( (binary_expression "uVar3 < 0x4d" identifier < number_literal) )) (compound_statement "{\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }" { (if_statement "if (4 < uVar3 - 0x1c) goto LAB_00439c16;" if (parenthesized_expression "(4 < uVar3 - 0x1c)" ( (binary_expression "4 < uVar3 - 0x1c" number_literal < (binary_expression "uVar3 - 0x1c" identifier - number_literal)) )) (goto_statement "goto LAB_00439c16;" goto statement_identifier ;)) }) (else_clause "else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" else (if_statement "if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" if (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) )) (compound_statement "{\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" { (labeled_statement "LAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }" statement_identifier : (if_statement "if (uVar3 != 2) {\n            return puVar4;\n          }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            return puVar4;\n          }" { (return_statement "return puVar4;" return identifier ;) }))) (expression_statement "puVar9 = (uint *)puVar4[3];" (assignment_expression "puVar9 = (uint *)puVar4[3]" identifier = (cast_expression "(uint *)puVar4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (do_statement "do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );" do (compound_statement "{\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          }" { (if_statement "if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" if (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) (compound_statement "{\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" { (if_statement "if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" if (parenthesized_expression "(uVar3 < 0x4d)" ( (binary_expression "uVar3 < 0x4d" identifier < number_literal) )) (compound_statement "{\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }" { (if_statement "if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }" if (parenthesized_expression "(4 < uVar3 - 0x1c)" ( (binary_expression "4 < uVar3 - 0x1c" number_literal < (binary_expression "uVar3 - 0x1c" identifier - number_literal)) )) (compound_statement "{\n                  return puVar4;\n                }" { (return_statement "return puVar4;" return identifier ;) })) }) (else_clause "else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" else (if_statement "if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" if (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) )) (compound_statement "{\n                return puVar4;\n              }" { (return_statement "return puVar4;" return identifier ;) })))) })) (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar4[3] = (uint)puVar9;" (assignment_expression "puVar4[3] = (uint)puVar9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))) })) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" identifier = (cast_expression "(uint *)puVar4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == '\0')" ( (binary_expression "**(char **)(param_1 + 0xc) == '\0'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" identifier = identifier) ;) (if_statement "if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'E')" ( (binary_expression "**(char **)(param_1 + 0xc) == 'E'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'E'" ' character ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (do_statement "do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);" do (compound_statement "{\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  }" { (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" if (parenthesized_expression "(uVar3 < 0x21)" ( (binary_expression "uVar3 < 0x21" identifier < number_literal) )) (compound_statement "{\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }" { (if_statement "if (0x1b < uVar3) goto LAB_00439d5f;" if (parenthesized_expression "(0x1b < uVar3)" ( (binary_expression "0x1b < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00439d5f;" goto statement_identifier ;)) (if_statement "if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" { (if_statement "if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;" if (parenthesized_expression "((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0))" ( (binary_expression "(uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" (parenthesized_expression "(uVar3 == 4)" ( (binary_expression "uVar3 == 4" identifier == number_literal) )) && (parenthesized_expression "(puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" ( (comma_expression "puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) , (binary_expression "puVar9 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00439cbd;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "puVar9 = (uint *)puVar9[3];" (assignment_expression "puVar9 = (uint *)puVar9[3]" identifier = (cast_expression "(uint *)puVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[3]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" else (compound_statement "{\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" { (if_statement "if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;" if (parenthesized_expression "((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e))))" ( (binary_expression "(uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) && (parenthesized_expression "((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" ( (parenthesized_expression "(uVar3 < 0x4c || (1 < uVar3 - 0x4e))" ( (binary_expression "uVar3 < 0x4c || (1 < uVar3 - 0x4e)" (binary_expression "uVar3 < 0x4c" identifier < number_literal) || (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];" statement_identifier : (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;)) }))) }) while (parenthesized_expression "(puVar9 != (uint *)0x0)" ( (binary_expression "puVar9 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();" statement_identifier : (expression_statement "piVar5 = (int *)FUN_004396a0();" (assignment_expression "piVar5 = (int *)FUN_004396a0()" identifier = (cast_expression "(int *)FUN_004396a0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_004396a0()" identifier (argument_list "()" ( ))))) ;)) (if_statement "if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }" if (parenthesized_expression "(((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29))" ( (binary_expression "((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)" (parenthesized_expression "((param_2 == 0) && (*puVar4 == 2))" ( (binary_expression "(param_2 == 0) && (*puVar4 == 2)" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) && (parenthesized_expression "(*puVar4 == 2)" ( (binary_expression "*puVar4 == 2" (pointer_expression "*puVar4" * identifier) == number_literal) ))) )) && (parenthesized_expression "(*piVar5 == 0x29)" ( (binary_expression "*piVar5 == 0x29" (pointer_expression "*piVar5" * identifier) == number_literal) ))) )) (compound_statement "{\n    piVar5[2] = 0;\n  }" { (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar4 = (uint *)FUN_00436ee0(piVar5);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(piVar5)" identifier = (cast_expression "(uint *)FUN_00436ee0(piVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;) (labeled_statement "LAB_00439cbd:\n  uVar3 = *puVar9;" statement_identifier : (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;)) (if_statement "if (8 < uVar3) goto LAB_00439d08;" if (parenthesized_expression "(8 < uVar3)" ( (binary_expression "8 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00439d08;" goto statement_identifier ;)) (if_statement "if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;" if (parenthesized_expression "(((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))" ( (binary_expression "((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" (parenthesized_expression "((6 < uVar3) || (1 < uVar3 - 1))" ( (binary_expression "(6 < uVar3) || (1 < uVar3 - 1)" (parenthesized_expression "(6 < uVar3)" ( (binary_expression "6 < uVar3" number_literal < identifier) )) || (parenthesized_expression "(1 < uVar3 - 1)" ( (binary_expression "1 < uVar3 - 1" number_literal < (binary_expression "uVar3 - 1" identifier - number_literal)) ))) )) || (parenthesized_expression "(puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" ( (comma_expression "puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[3]" identifier = (cast_expression "(uint *)puVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[3]" identifier [ number_literal ]))) , (binary_expression "puVar9 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00439d08;" goto statement_identifier ;)) (goto_statement "goto LAB_00439cbd;" goto statement_identifier ;) (labeled_statement "code_r0x00439dc8:\n  iVar6 = FUN_004370c0();" statement_identifier : (expression_statement "iVar6 = FUN_004370c0();" (assignment_expression "iVar6 = FUN_004370c0()" identifier = (call_expression "FUN_004370c0()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar6 < 2) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(iVar6 < 2)" ( (binary_expression "iVar6 < 2" identifier < number_literal) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(*pcVar2 == '\0')" ( (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar13 = pcVar2 + 1;" (assignment_expression "pcVar13 = pcVar2 + 1" identifier = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(*pcVar2 != '_')" ( (binary_expression "*pcVar2 != '_'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'_'" ' character ')) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)0x0;" (assignment_expression "puVar8 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );" do (compound_statement "{\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  }" { (if_statement "if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(*pcVar13 == '\0')" ( (binary_expression "*pcVar13 == '\0'" (pointer_expression "*pcVar13" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" if (parenthesized_expression "(*pcVar13 == '$')" ( (binary_expression "*pcVar13 == '$'" (pointer_expression "*pcVar13" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" { (expression_statement "cVar1 = pcVar13[1];" (assignment_expression "cVar1 = pcVar13[1]" identifier = (subscript_expression "pcVar13[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" if (parenthesized_expression "(cVar1 == 'S')" ( (binary_expression "cVar1 == 'S'" identifier == (char_literal "'S'" ' character ')) )) (compound_statement "{\n        uVar10 = 0x2f;\n      }" { (expression_statement "uVar10 = 0x2f;" (assignment_expression "uVar10 = 0x2f" identifier = number_literal) ;) }) (else_clause "else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" else (if_statement "if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" if (parenthesized_expression "(cVar1 == '_')" ( (binary_expression "cVar1 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n        uVar10 = 0x2e;\n      }" { (expression_statement "uVar10 = 0x2e;" (assignment_expression "uVar10 = 0x2e" identifier = number_literal) ;) }) (else_clause "else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" else (compound_statement "{\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" { (if_statement "if (cVar1 != '$') {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(cVar1 != '$')" ( (binary_expression "cVar1 != '$'" identifier != (char_literal "'$'" ' character ')) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar10 = 0x24;" (assignment_expression "uVar10 = 0x24" identifier = number_literal) ;) }))))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);" (assignment_expression "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2)" identifier = (cast_expression "(char *)(*(int *)(param_1 + 0xc) + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 2)" ( (binary_expression "*(int *)(param_1 + 0xc) + 2" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar11)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar11" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = iVar6 + -2;" (assignment_expression "iVar6 = iVar6 + -2" identifier = (binary_expression "iVar6 + -2" identifier + number_literal)) ;) (expression_statement "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar11 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar11 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar11 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar11 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = 0x40;" (assignment_expression "*puVar12 = 0x40" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[2] = uVar10;" (assignment_expression "puVar12[2] = uVar10" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" else (compound_statement "{\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));" do (compound_statement "{\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }" if (parenthesized_expression "(iVar6 <= iVar11)" ( (binary_expression "iVar6 <= iVar11" identifier <= identifier) )) (compound_statement "{\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }" { (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto code_r0x0043a2a8;" goto statement_identifier ;)) (goto_statement "goto code_r0x0043a253;" goto statement_identifier ;) })) }) while (parenthesized_expression "((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'))" ( (binary_expression "(pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0')" (parenthesized_expression "(pcVar13[iVar11] != '$')" ( (binary_expression "pcVar13[iVar11] != '$'" (subscript_expression "pcVar13[iVar11]" identifier [ identifier ]) != (char_literal "'$'" ' character ')) )) && (parenthesized_expression "(pcVar13[iVar11] != '\0')" ( (binary_expression "pcVar13[iVar11] != '\0'" (subscript_expression "pcVar13[iVar11]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" { (labeled_statement "code_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" statement_identifier : (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + identifier)) ;)) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "code_r0x0043a253:\n      iVar6 = iVar6 - iVar11;" statement_identifier : (expression_statement "iVar6 = iVar6 - iVar11;" (assignment_expression "iVar6 = iVar6 - iVar11" identifier = (binary_expression "iVar6 - iVar11" identifier - identifier)) ;)) (expression_statement "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar7 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar7 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar7 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar7 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar12[2] = pcVar13;" (assignment_expression "puVar12[2] = pcVar13" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar7 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar13 = (char *)(iVar7 + iVar11);" (assignment_expression "pcVar13 = (char *)(iVar7 + iVar11)" identifier = (cast_expression "(char *)(iVar7 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar11)" ( (binary_expression "iVar7 + iVar11" identifier + identifier) )))) ;) (expression_statement "*puVar12 = 0;" (assignment_expression "*puVar12 = 0" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[3] = iVar11;" (assignment_expression "puVar12[3] = iVar11" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0))" ( (binary_expression "(puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)" (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)" ( (comma_expression "puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0" (assignment_expression "puVar12 = (undefined4 *)FUN_00436ee0(puVar12)" identifier = (cast_expression "(undefined4 *)FUN_00436ee0(puVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(puVar12)" identifier (argument_list "(puVar12)" ( identifier ))))) , (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" identifier = identifier) ;) (if_statement "if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (compound_statement "{\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }" { (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) }))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nuint * __regparm3 d_encoding(int param_1,int param_2)\n\n{\n  char cVar1;\n  char *pcVar2;\n  uint uVar3;\n  uint *puVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  char *pcVar13;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }\n    }\n    return (uint *)0x0;\n  }\n  puVar4 = (uint *)d_name();\n  if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }\n  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }\n  if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }\n  puVar9 = puVar4;\n  if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }\n  do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);\nLAB_00439d08:\n  piVar5 = (int *)d_bare_function_type();\n  if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }\n  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }\n  puVar4 = (uint *)d_make_comp(piVar5);\n  return puVar4;\nLAB_00439cbd:\n  uVar3 = *puVar9;\n  if (8 < uVar3) goto LAB_00439d08;\n  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;\n  goto LAB_00439cbd;\n_L927:\n  iVar6 = d_number_isra_0();\n  if (iVar6 < 2) {\n    return (uint *)0x0;\n  }\n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }\n  pcVar13 = pcVar2 + 1;\n  *(char **)(param_1 + 0xc) = pcVar13;\n  if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }\n  iVar6 = iVar6 + -1;\n  puVar8 = (undefined4 *)0x0;\n  do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\nLAB_0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)d_make_comp(0);\n      return puVar4;\n    }\n  } while( true );\n}\n\n" comment (ERROR "uint * __regparm3 d_encoding(int param_1,int param_2)" (binary_expression "uint * __regparm3 d_encoding(int param_1,int param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "d_encoding(int param_1,int param_2)" identifier (argument_list "(int param_1,int param_2)" ( (ERROR "int" identifier) identifier , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  uint uVar3;\n  uint *puVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  char *pcVar13;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }\n    }\n    return (uint *)0x0;\n  }\n  puVar4 = (uint *)d_name();\n  if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }\n  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }\n  if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }\n  puVar9 = puVar4;\n  if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }\n  do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);\nLAB_00439d08:\n  piVar5 = (int *)d_bare_function_type();\n  if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }\n  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }\n  puVar4 = (uint *)d_make_comp(piVar5);\n  return puVar4;\nLAB_00439cbd:\n  uVar3 = *puVar9;\n  if (8 < uVar3) goto LAB_00439d08;\n  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;\n  goto LAB_00439cbd;\n_L927:\n  iVar6 = d_number_isra_0();\n  if (iVar6 < 2) {\n    return (uint *)0x0;\n  }\n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }\n  pcVar13 = pcVar2 + 1;\n  *(char **)(param_1 + 0xc) = pcVar13;\n  if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }\n  iVar6 = iVar6 + -1;\n  puVar8 = (undefined4 *)0x0;\n  do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\nLAB_0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)d_make_comp(0);\n      return puVar4;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }\n    }\n    return (uint *)0x0;\n  }" if (parenthesized_expression "((*pcVar2 == 'G') || (*pcVar2 == 'T'))" ( (binary_expression "(*pcVar2 == 'G') || (*pcVar2 == 'T')" (parenthesized_expression "(*pcVar2 == 'G')" ( (binary_expression "*pcVar2 == 'G'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'G'" ' character ')) )) || (parenthesized_expression "(*pcVar2 == 'T')" ( (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'T'" ' character ')) ))) )) (compound_statement "{\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }\n    }\n    return (uint *)0x0;\n  }" { (expression_statement "iVar6 = *(int *)(param_1 + 0x2c);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x2c)" identifier = (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0x14;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0x14" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 0x14" identifier + number_literal)) ;) (if_statement "if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" if (parenthesized_expression "(*pcVar2 == 'T')" ( (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'T'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(pcVar2[1] == '\0')" ( (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (switch_statement "switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n      case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;\n      case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      }" { (case_statement "case 'C':\n        uVar10 = d_type();\n        iVar6 = d_number_isra_0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'C'" ' character ') : (expression_statement "uVar10 = d_type();" (assignment_expression "uVar10 = d_type()" identifier = (call_expression "d_type()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = d_number_isra_0();" (assignment_expression "iVar6 = d_number_isra_0()" identifier = (call_expression "d_number_isra_0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 < 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == '_')" ( (binary_expression "**(char **)(param_1 + 0xc) == '_'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          d_type();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)d_make_comp(uVar10);\n          return puVar4;\n        }" { (expression_statement "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;" (assignment_expression "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar4 = (uint *)d_make_comp(uVar10);" (assignment_expression "puVar4 = (uint *)d_make_comp(uVar10)" identifier = (cast_expression "(uint *)d_make_comp(uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "default:\n        return (uint *)0x0;" default : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'F':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'F'" ' character ') : (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'H':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'H'" ' character ') : (expression_statement "d_name();" (call_expression "d_name()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'I':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'I'" ' character ') : (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'J':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'J'" ' character ') : (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'S':\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'S'" ' character ') : (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'T'" ' character ') : (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 10;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 10" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 10" identifier + number_literal)) ;) (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        d_type();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'V'" ' character ') : (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0xf;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0xf" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 0xf" identifier + number_literal)) ;) (expression_statement "d_type();" (call_expression "d_type()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'W':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        break;" case (char_literal "'W'" ' character ') : (expression_statement "d_name();" (call_expression "d_name()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'c':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'c'" ' character ') : (expression_statement "iVar6 = d_call_offset();" (assignment_expression "iVar6 = d_call_offset()" identifier = (call_expression "d_call_offset()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = d_call_offset();" (assignment_expression "iVar6 = d_call_offset()" identifier = (call_expression "d_call_offset()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }" { (expression_statement "d_encoding();" (call_expression "d_encoding()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'h':\n        iVar6 = d_call_offset();\n        if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'h'" ' character ') : (expression_statement "iVar6 = d_call_offset();" (assignment_expression "iVar6 = d_call_offset()" identifier = (call_expression "d_call_offset()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }" { (expression_statement "d_encoding();" (call_expression "d_encoding()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'v':\n        iVar6 = d_call_offset();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;" case (char_literal "'v'" ' character ') : (expression_statement "iVar6 = d_call_offset();" (assignment_expression "iVar6 = d_call_offset()" identifier = (call_expression "d_call_offset()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "d_encoding();" (call_expression "d_encoding()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) })) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(*pcVar2 != 'G')" ( (binary_expression "*pcVar2 != 'G'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'G'" ' character ')) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }\n    }" if (parenthesized_expression "(pcVar2[1] != '\0')" ( (binary_expression "pcVar2[1] != '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (switch_statement "switch(pcVar2[1]) {\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n      case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;\n      case 'r':\n        goto _L927;\n      }" { (case_statement "case 'A':\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;" case (char_literal "'A'" ' character ') : (expression_statement "d_encoding();" (call_expression "d_encoding()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "default:\n        return (uint *)0x0;" default : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'R':\n        d_name();\n        uVar10 = d_number_component();\n        puVar4 = (uint *)d_make_comp(uVar10);\n        return puVar4;" case (char_literal "'R'" ' character ') : (expression_statement "d_name();" (call_expression "d_name()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar10 = d_number_component();" (assignment_expression "uVar10 = d_number_component()" identifier = (call_expression "d_number_component()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(uVar10);" (assignment_expression "puVar4 = (uint *)d_make_comp(uVar10)" identifier = (cast_expression "(uint *)d_make_comp(uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }\n        d_encoding();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;" case (char_literal "'T'" ' character ') : (if_statement "if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }" if (parenthesized_expression "((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'))" ( (binary_expression "(pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" (parenthesized_expression "(pcVar2[2] != '\0')" ( (binary_expression "pcVar2[2] != '\0'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" ( (comma_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) , (binary_expression "pcVar2[2] == 'n'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) == (char_literal "'n'" ' character '))) ))) )) (compound_statement "{\n          d_encoding();\n          puVar4 = (uint *)d_make_comp(0);\n          return puVar4;\n        }" { (expression_statement "d_encoding();" (call_expression "d_encoding()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "d_encoding();" (call_expression "d_encoding()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'V':\n        d_name();\n        puVar4 = (uint *)d_make_comp(0);\n        return puVar4;" case (char_literal "'V'" ' character ') : (expression_statement "d_name();" (call_expression "d_name()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'r':\n        goto _L927;" case (char_literal "'r'" ' character ') : (goto_statement "goto _L927;" goto statement_identifier ;)) })) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar4 = (uint *)d_name();" (assignment_expression "puVar4 = (uint *)d_name()" identifier = (cast_expression "(uint *)d_name()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_name()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" if (parenthesized_expression "((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0))" ( (binary_expression "(param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 8) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 8) & 1)" ( (binary_expression "*(byte *)(param_1 + 8) & 1" (pointer_expression "*(byte *)(param_1 + 8)" * (cast_expression "(byte *)(param_1 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" { (do_statement "do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );" do (compound_statement "{\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    }" { (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" if (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) (compound_statement "{\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" { (if_statement "if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" if (parenthesized_expression "(uVar3 < 0x4d)" ( (binary_expression "uVar3 < 0x4d" identifier < number_literal) )) (compound_statement "{\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }" { (if_statement "if (4 < uVar3 - 0x1c) goto LAB_00439c16;" if (parenthesized_expression "(4 < uVar3 - 0x1c)" ( (binary_expression "4 < uVar3 - 0x1c" number_literal < (binary_expression "uVar3 - 0x1c" identifier - number_literal)) )) (goto_statement "goto LAB_00439c16;" goto statement_identifier ;)) }) (else_clause "else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" else (if_statement "if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" if (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) )) (compound_statement "{\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" { (labeled_statement "LAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }" statement_identifier : (if_statement "if (uVar3 != 2) {\n            return puVar4;\n          }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            return puVar4;\n          }" { (return_statement "return puVar4;" return identifier ;) }))) (expression_statement "puVar9 = (uint *)puVar4[3];" (assignment_expression "puVar9 = (uint *)puVar4[3]" identifier = (cast_expression "(uint *)puVar4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (do_statement "do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );" do (compound_statement "{\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          }" { (if_statement "if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" if (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) (compound_statement "{\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" { (if_statement "if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" if (parenthesized_expression "(uVar3 < 0x4d)" ( (binary_expression "uVar3 < 0x4d" identifier < number_literal) )) (compound_statement "{\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }" { (if_statement "if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }" if (parenthesized_expression "(4 < uVar3 - 0x1c)" ( (binary_expression "4 < uVar3 - 0x1c" number_literal < (binary_expression "uVar3 - 0x1c" identifier - number_literal)) )) (compound_statement "{\n                  return puVar4;\n                }" { (return_statement "return puVar4;" return identifier ;) })) }) (else_clause "else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" else (if_statement "if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" if (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) )) (compound_statement "{\n                return puVar4;\n              }" { (return_statement "return puVar4;" return identifier ;) })))) })) (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar4[3] = (uint)puVar9;" (assignment_expression "puVar4[3] = (uint)puVar9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))) })) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" identifier = (cast_expression "(uint *)puVar4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == '\0')" ( (binary_expression "**(char **)(param_1 + 0xc) == '\0'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" identifier = identifier) ;) (if_statement "if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'E')" ( (binary_expression "**(char **)(param_1 + 0xc) == 'E'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'E'" ' character ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (do_statement "do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);" do (compound_statement "{\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  }" { (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" if (parenthesized_expression "(uVar3 < 0x21)" ( (binary_expression "uVar3 < 0x21" identifier < number_literal) )) (compound_statement "{\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }" { (if_statement "if (0x1b < uVar3) goto LAB_00439d5f;" if (parenthesized_expression "(0x1b < uVar3)" ( (binary_expression "0x1b < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00439d5f;" goto statement_identifier ;)) (if_statement "if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" { (if_statement "if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;" if (parenthesized_expression "((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0))" ( (binary_expression "(uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" (parenthesized_expression "(uVar3 == 4)" ( (binary_expression "uVar3 == 4" identifier == number_literal) )) && (parenthesized_expression "(puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" ( (comma_expression "puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) , (binary_expression "puVar9 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00439cbd;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "puVar9 = (uint *)puVar9[3];" (assignment_expression "puVar9 = (uint *)puVar9[3]" identifier = (cast_expression "(uint *)puVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[3]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" else (compound_statement "{\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" { (if_statement "if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;" if (parenthesized_expression "((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e))))" ( (binary_expression "(uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) && (parenthesized_expression "((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" ( (parenthesized_expression "(uVar3 < 0x4c || (1 < uVar3 - 0x4e))" ( (binary_expression "uVar3 < 0x4c || (1 < uVar3 - 0x4e)" (binary_expression "uVar3 < 0x4c" identifier < number_literal) || (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];" statement_identifier : (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;)) }))) }) while (parenthesized_expression "(puVar9 != (uint *)0x0)" ( (binary_expression "puVar9 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_00439d08:\n  piVar5 = (int *)d_bare_function_type();" statement_identifier : (expression_statement "piVar5 = (int *)d_bare_function_type();" (assignment_expression "piVar5 = (int *)d_bare_function_type()" identifier = (cast_expression "(int *)d_bare_function_type()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "d_bare_function_type()" identifier (argument_list "()" ( ))))) ;)) (if_statement "if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }" if (parenthesized_expression "(((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29))" ( (binary_expression "((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)" (parenthesized_expression "((param_2 == 0) && (*puVar4 == 2))" ( (binary_expression "(param_2 == 0) && (*puVar4 == 2)" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) && (parenthesized_expression "(*puVar4 == 2)" ( (binary_expression "*puVar4 == 2" (pointer_expression "*puVar4" * identifier) == number_literal) ))) )) && (parenthesized_expression "(*piVar5 == 0x29)" ( (binary_expression "*piVar5 == 0x29" (pointer_expression "*piVar5" * identifier) == number_literal) ))) )) (compound_statement "{\n    piVar5[2] = 0;\n  }" { (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar4 = (uint *)d_make_comp(piVar5);" (assignment_expression "puVar4 = (uint *)d_make_comp(piVar5)" identifier = (cast_expression "(uint *)d_make_comp(piVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;) (labeled_statement "LAB_00439cbd:\n  uVar3 = *puVar9;" statement_identifier : (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;)) (if_statement "if (8 < uVar3) goto LAB_00439d08;" if (parenthesized_expression "(8 < uVar3)" ( (binary_expression "8 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00439d08;" goto statement_identifier ;)) (if_statement "if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;" if (parenthesized_expression "(((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))" ( (binary_expression "((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" (parenthesized_expression "((6 < uVar3) || (1 < uVar3 - 1))" ( (binary_expression "(6 < uVar3) || (1 < uVar3 - 1)" (parenthesized_expression "(6 < uVar3)" ( (binary_expression "6 < uVar3" number_literal < identifier) )) || (parenthesized_expression "(1 < uVar3 - 1)" ( (binary_expression "1 < uVar3 - 1" number_literal < (binary_expression "uVar3 - 1" identifier - number_literal)) ))) )) || (parenthesized_expression "(puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" ( (comma_expression "puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[3]" identifier = (cast_expression "(uint *)puVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[3]" identifier [ number_literal ]))) , (binary_expression "puVar9 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00439d08;" goto statement_identifier ;)) (goto_statement "goto LAB_00439cbd;" goto statement_identifier ;) (labeled_statement "_L927:\n  iVar6 = d_number_isra_0();" statement_identifier : (expression_statement "iVar6 = d_number_isra_0();" (assignment_expression "iVar6 = d_number_isra_0()" identifier = (call_expression "d_number_isra_0()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar6 < 2) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(iVar6 < 2)" ( (binary_expression "iVar6 < 2" identifier < number_literal) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(*pcVar2 == '\0')" ( (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar13 = pcVar2 + 1;" (assignment_expression "pcVar13 = pcVar2 + 1" identifier = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(*pcVar2 != '_')" ( (binary_expression "*pcVar2 != '_'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'_'" ' character ')) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)0x0;" (assignment_expression "puVar8 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\nLAB_0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)d_make_comp(0);\n      return puVar4;\n    }\n  } while( true );" do (compound_statement "{\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\nLAB_0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)d_make_comp(0);\n      return puVar4;\n    }\n  }" { (if_statement "if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(*pcVar13 == '\0')" ( (binary_expression "*pcVar13 == '\0'" (pointer_expression "*pcVar13" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\nLAB_0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" if (parenthesized_expression "(*pcVar13 == '$')" ( (binary_expression "*pcVar13 == '$'" (pointer_expression "*pcVar13" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" { (expression_statement "cVar1 = pcVar13[1];" (assignment_expression "cVar1 = pcVar13[1]" identifier = (subscript_expression "pcVar13[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" if (parenthesized_expression "(cVar1 == 'S')" ( (binary_expression "cVar1 == 'S'" identifier == (char_literal "'S'" ' character ')) )) (compound_statement "{\n        uVar10 = 0x2f;\n      }" { (expression_statement "uVar10 = 0x2f;" (assignment_expression "uVar10 = 0x2f" identifier = number_literal) ;) }) (else_clause "else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" else (if_statement "if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" if (parenthesized_expression "(cVar1 == '_')" ( (binary_expression "cVar1 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n        uVar10 = 0x2e;\n      }" { (expression_statement "uVar10 = 0x2e;" (assignment_expression "uVar10 = 0x2e" identifier = number_literal) ;) }) (else_clause "else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" else (compound_statement "{\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" { (if_statement "if (cVar1 != '$') {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(cVar1 != '$')" ( (binary_expression "cVar1 != '$'" identifier != (char_literal "'$'" ' character ')) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar10 = 0x24;" (assignment_expression "uVar10 = 0x24" identifier = number_literal) ;) }))))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);" (assignment_expression "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2)" identifier = (cast_expression "(char *)(*(int *)(param_1 + 0xc) + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 2)" ( (binary_expression "*(int *)(param_1 + 0xc) + 2" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar11)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar11" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = iVar6 + -2;" (assignment_expression "iVar6 = iVar6 + -2" identifier = (binary_expression "iVar6 + -2" identifier + number_literal)) ;) (expression_statement "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar11 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar11 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar11 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar11 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = 0x40;" (assignment_expression "*puVar12 = 0x40" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[2] = uVar10;" (assignment_expression "puVar12[2] = uVar10" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\nLAB_0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" else (compound_statement "{\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\nLAB_0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));" do (compound_statement "{\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }\n      }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }" if (parenthesized_expression "(iVar6 <= iVar11)" ( (binary_expression "iVar6 <= iVar11" identifier <= identifier) )) (compound_statement "{\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;\n          goto LAB_0043a253;\n        }" { (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) goto LAB_0043a2a8;" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_0043a2a8;" goto statement_identifier ;)) (goto_statement "goto LAB_0043a253;" goto statement_identifier ;) })) }) while (parenthesized_expression "((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'))" ( (binary_expression "(pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0')" (parenthesized_expression "(pcVar13[iVar11] != '$')" ( (binary_expression "pcVar13[iVar11] != '$'" (subscript_expression "pcVar13[iVar11]" identifier [ identifier ]) != (char_literal "'$'" ' character ')) )) && (parenthesized_expression "(pcVar13[iVar11] != '\0')" ( (binary_expression "pcVar13[iVar11] != '\0'" (subscript_expression "pcVar13[iVar11]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) {\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\nLAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" { (labeled_statement "LAB_0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" statement_identifier : (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + identifier)) ;)) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "LAB_0043a253:\n      iVar6 = iVar6 - iVar11;" statement_identifier : (expression_statement "iVar6 = iVar6 - iVar11;" (assignment_expression "iVar6 = iVar6 - iVar11" identifier = (binary_expression "iVar6 - iVar11" identifier - identifier)) ;)) (expression_statement "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar7 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar7 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar7 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar7 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar12[2] = pcVar13;" (assignment_expression "puVar12[2] = pcVar13" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar7 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar13 = (char *)(iVar7 + iVar11);" (assignment_expression "pcVar13 = (char *)(iVar7 + iVar11)" identifier = (cast_expression "(char *)(iVar7 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar11)" ( (binary_expression "iVar7 + iVar11" identifier + identifier) )))) ;) (expression_statement "*puVar12 = 0;" (assignment_expression "*puVar12 = 0" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[3] = iVar11;" (assignment_expression "puVar12[3] = iVar11" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0))" ( (binary_expression "(puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)" (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0)" ( (comma_expression "puVar12 = (undefined4 *)d_make_comp(puVar12), puVar12 == (undefined4 *)0x0" (assignment_expression "puVar12 = (undefined4 *)d_make_comp(puVar12)" identifier = (cast_expression "(undefined4 *)d_make_comp(puVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(puVar12)" identifier (argument_list "(puVar12)" ( identifier ))))) , (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" identifier = identifier) ;) (if_statement "if (iVar6 < 1) {\n      puVar4 = (uint *)d_make_comp(0);\n      return puVar4;\n    }" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (compound_statement "{\n      puVar4 = (uint *)d_make_comp(0);\n      return puVar4;\n    }" { (expression_statement "puVar4 = (uint *)d_make_comp(0);" (assignment_expression "puVar4 = (uint *)d_make_comp(0)" identifier = (cast_expression "(uint *)d_make_comp(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "d_make_comp(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) }))
(translation_unit "uint * __regparm3 FUN_00439bb0(int param_1,int param_2)\n\n{\n  char cVar1;\n  char *pcVar2;\n  uint uVar3;\n  uint *puVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  char *pcVar13;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }\n  puVar4 = (uint *)FUN_00438370();\n  if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }\n  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }\n  if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }\n  puVar9 = puVar4;\n  if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }\n  do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);\nLAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();\n  if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }\n  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }\n  puVar4 = (uint *)FUN_00436ee0(piVar5);\n  return puVar4;\nLAB_00439cbd:\n  uVar3 = *puVar9;\n  if (8 < uVar3) goto LAB_00439d08;\n  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;\n  goto LAB_00439cbd;\ncode_r0x00439dc8:\n  iVar6 = FUN_004370c0();\n  if (iVar6 < 2) {\n    return (uint *)0x0;\n  }\n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }\n  pcVar13 = pcVar2 + 1;\n  *(char **)(param_1 + 0xc) = pcVar13;\n  if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }\n  iVar6 = iVar6 + -1;\n  puVar8 = (undefined4 *)0x0;\n  do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );\n}\n\n" (ERROR "uint * __regparm3 FUN_00439bb0(int param_1,int param_2)" (binary_expression "uint * __regparm3 FUN_00439bb0(int param_1,int param_2)" identifier * (ERROR "__regparm3" identifier) (call_expression "FUN_00439bb0(int param_1,int param_2)" identifier (argument_list "(int param_1,int param_2)" ( (ERROR "int" identifier) identifier , (ERROR "int" identifier) identifier ))))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  uint uVar3;\n  uint *puVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  char *pcVar13;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }\n  puVar4 = (uint *)FUN_00438370();\n  if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }\n  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }\n  if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }\n  puVar9 = puVar4;\n  if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }\n  do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);\nLAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();\n  if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }\n  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }\n  puVar4 = (uint *)FUN_00436ee0(piVar5);\n  return puVar4;\nLAB_00439cbd:\n  uVar3 = *puVar9;\n  if (8 < uVar3) goto LAB_00439d08;\n  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;\n  goto LAB_00439cbd;\ncode_r0x00439dc8:\n  iVar6 = FUN_004370c0();\n  if (iVar6 < 2) {\n    return (uint *)0x0;\n  }\n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }\n  pcVar13 = pcVar2 + 1;\n  *(char **)(param_1 + 0xc) = pcVar13;\n  if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }\n  iVar6 = iVar6 + -1;\n  puVar8 = (undefined4 *)0x0;\n  do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }" if (parenthesized_expression "((*pcVar2 == 'G') || (*pcVar2 == 'T'))" ( (binary_expression "(*pcVar2 == 'G') || (*pcVar2 == 'T')" (parenthesized_expression "(*pcVar2 == 'G')" ( (binary_expression "*pcVar2 == 'G'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'G'" ' character ')) )) || (parenthesized_expression "(*pcVar2 == 'T')" ( (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'T'" ' character ')) ))) )) (compound_statement "{\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }" { (expression_statement "iVar6 = *(int *)(param_1 + 0x2c);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x2c)" identifier = (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0x14;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0x14" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 0x14" identifier + number_literal)) ;) (if_statement "if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" if (parenthesized_expression "(*pcVar2 == 'T')" ( (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'T'" ' character ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(pcVar2[1] == '\0')" ( (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return (uint *)0x0;\n      }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (switch_statement "switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }" { (case_statement "case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'C'" ' character ') : (expression_statement "uVar10 = FUN_00438890();" (assignment_expression "uVar10 = FUN_00438890()" identifier = (call_expression "FUN_00438890()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar6 = FUN_004370c0();" (assignment_expression "iVar6 = FUN_004370c0()" identifier = (call_expression "FUN_004370c0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 < 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 < 0)" ( (binary_expression "iVar6 < 0" identifier < number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == '_')" ( (binary_expression "**(char **)(param_1 + 0xc) == '_'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }" { (expression_statement "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;" (assignment_expression "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(uVar10);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(uVar10)" identifier = (cast_expression "(uint *)FUN_00436ee0(uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "default:\n        return (uint *)0x0;" default : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'F'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'H'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'I'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'J'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'S'" ' character ') : (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'T'" ' character ') : (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 10;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 10" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 10" identifier + number_literal)) ;) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'V'" ' character ') : (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0xf;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0xf" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) = (binary_expression "iVar6 + 0xf" identifier + number_literal)) ;) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" case (char_literal "'W'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (break_statement "break;" break ;)) (case_statement "case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'c'" ' character ') : (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" { (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" case (char_literal "'h'" ' character ') : (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" if (parenthesized_expression "(iVar6 != 0)" ( (binary_expression "iVar6 != 0" identifier != number_literal) )) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" { (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'v'" ' character ') : (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" identifier = (call_expression "FUN_00437640()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) })) (return_statement "return puVar4;" return identifier ;) })) (if_statement "if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(*pcVar2 != 'G')" ( (binary_expression "*pcVar2 != 'G'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'G'" ' character ')) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }" if (parenthesized_expression "(pcVar2[1] != '\0')" ( (binary_expression "pcVar2[1] != '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 2" identifier + number_literal)) ;) (switch_statement "switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }" switch (parenthesized_expression "(pcVar2[1])" ( (subscript_expression "pcVar2[1]" identifier [ number_literal ]) )) (compound_statement "{\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }" { (case_statement "case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'A'" ' character ') : (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "default:\n        return (uint *)0x0;" default : (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;)) (case_statement "case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;" case (char_literal "'R'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar10 = FUN_00437190();" (assignment_expression "uVar10 = FUN_00437190()" identifier = (call_expression "FUN_00437190()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(uVar10);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(uVar10)" identifier = (cast_expression "(uint *)FUN_00436ee0(uVar10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(uVar10)" identifier (argument_list "(uVar10)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'T'" ' character ') : (if_statement "if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" if (parenthesized_expression "((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'))" ( (binary_expression "(pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" (parenthesized_expression "(pcVar2[2] != '\0')" ( (binary_expression "pcVar2[2] != '\0'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" ( (comma_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "pcVar2 + 3" identifier + number_literal)) , (binary_expression "pcVar2[2] == 'n'" (subscript_expression "pcVar2[2]" identifier [ number_literal ]) == (char_literal "'n'" ' character '))) ))) )) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" { (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" case (char_literal "'V'" ' character ') : (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))) ;) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;)) (case_statement "case 'r':\n        goto code_r0x00439dc8;" case (char_literal "'r'" ' character ') : (goto_statement "goto code_r0x00439dc8;" goto statement_identifier ;)) })) })) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar4 = (uint *)FUN_00438370();" (assignment_expression "puVar4 = (uint *)FUN_00438370()" identifier = (cast_expression "(uint *)FUN_00438370()" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00438370()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(puVar4 == (uint *)0x0)" ( (binary_expression "puVar4 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" if (parenthesized_expression "((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0))" ( (binary_expression "(param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)" (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_1 + 8) & 1) == 0)" ( (binary_expression "(*(byte *)(param_1 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 8) & 1)" ( (binary_expression "*(byte *)(param_1 + 8) & 1" (pointer_expression "*(byte *)(param_1 + 8)" * (cast_expression "(byte *)(param_1 + 8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" { (do_statement "do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );" do (compound_statement "{\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    }" { (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" if (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) (compound_statement "{\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" { (if_statement "if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" if (parenthesized_expression "(uVar3 < 0x4d)" ( (binary_expression "uVar3 < 0x4d" identifier < number_literal) )) (compound_statement "{\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }" { (if_statement "if (4 < uVar3 - 0x1c) goto LAB_00439c16;" if (parenthesized_expression "(4 < uVar3 - 0x1c)" ( (binary_expression "4 < uVar3 - 0x1c" number_literal < (binary_expression "uVar3 - 0x1c" identifier - number_literal)) )) (goto_statement "goto LAB_00439c16;" goto statement_identifier ;)) }) (else_clause "else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" else (if_statement "if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" if (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) )) (compound_statement "{\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" { (labeled_statement "LAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }" statement_identifier : (if_statement "if (uVar3 != 2) {\n            return puVar4;\n          }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n            return puVar4;\n          }" { (return_statement "return puVar4;" return identifier ;) }))) (expression_statement "puVar9 = (uint *)puVar4[3];" (assignment_expression "puVar9 = (uint *)puVar4[3]" identifier = (cast_expression "(uint *)puVar4[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[3]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (do_statement "do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );" do (compound_statement "{\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          }" { (if_statement "if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" if (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) (compound_statement "{\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" { (if_statement "if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" if (parenthesized_expression "(uVar3 < 0x4d)" ( (binary_expression "uVar3 < 0x4d" identifier < number_literal) )) (compound_statement "{\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }" { (if_statement "if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }" if (parenthesized_expression "(4 < uVar3 - 0x1c)" ( (binary_expression "4 < uVar3 - 0x1c" number_literal < (binary_expression "uVar3 - 0x1c" identifier - number_literal)) )) (compound_statement "{\n                  return puVar4;\n                }" { (return_statement "return puVar4;" return identifier ;) })) }) (else_clause "else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" else (if_statement "if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" if (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) )) (compound_statement "{\n                return puVar4;\n              }" { (return_statement "return puVar4;" return identifier ;) })))) })) (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (expression_statement "puVar4[3] = (uint)puVar9;" (assignment_expression "puVar4[3] = (uint)puVar9" (subscript_expression "puVar4[3]" identifier [ number_literal ]) = (cast_expression "(uint)puVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))) })) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" identifier = (cast_expression "(uint *)puVar4[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar4[2]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == '\0')" ( (binary_expression "**(char **)(param_1 + 0xc) == '\0'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" identifier = identifier) ;) (if_statement "if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }" if (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'E')" ( (binary_expression "**(char **)(param_1 + 0xc) == 'E'" (pointer_expression "**(char **)(param_1 + 0xc)" * (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) == (char_literal "'E'" ' character ')) )) (compound_statement "{\n    return puVar4;\n  }" { (return_statement "return puVar4;" return identifier ;) })) (do_statement "do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);" do (compound_statement "{\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  }" { (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;) (if_statement "if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" if (parenthesized_expression "(uVar3 < 0x21)" ( (binary_expression "uVar3 < 0x21" identifier < number_literal) )) (compound_statement "{\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }" { (if_statement "if (0x1b < uVar3) goto LAB_00439d5f;" if (parenthesized_expression "(0x1b < uVar3)" ( (binary_expression "0x1b < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00439d5f;" goto statement_identifier ;)) (if_statement "if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" { (if_statement "if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;" if (parenthesized_expression "((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0))" ( (binary_expression "(uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" (parenthesized_expression "(uVar3 == 4)" ( (binary_expression "uVar3 == 4" identifier == number_literal) )) && (parenthesized_expression "(puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" ( (comma_expression "puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) , (binary_expression "puVar9 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00439cbd;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "puVar9 = (uint *)puVar9[3];" (assignment_expression "puVar9 = (uint *)puVar9[3]" identifier = (cast_expression "(uint *)puVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[3]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" else (compound_statement "{\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" { (if_statement "if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;" if (parenthesized_expression "((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e))))" ( (binary_expression "(uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" (parenthesized_expression "(uVar3 != 0x4c)" ( (binary_expression "uVar3 != 0x4c" identifier != number_literal) )) && (parenthesized_expression "((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" ( (parenthesized_expression "(uVar3 < 0x4c || (1 < uVar3 - 0x4e))" ( (binary_expression "uVar3 < 0x4c || (1 < uVar3 - 0x4e)" (binary_expression "uVar3 < 0x4c" identifier < number_literal) || (parenthesized_expression "(1 < uVar3 - 0x4e)" ( (binary_expression "1 < uVar3 - 0x4e" number_literal < (binary_expression "uVar3 - 0x4e" identifier - number_literal)) ))) )) ))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];" statement_identifier : (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" identifier = (cast_expression "(uint *)puVar9[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[2]" identifier [ number_literal ]))) ;)) }))) }) while (parenthesized_expression "(puVar9 != (uint *)0x0)" ( (binary_expression "puVar9 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (labeled_statement "LAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();" statement_identifier : (expression_statement "piVar5 = (int *)FUN_004396a0();" (assignment_expression "piVar5 = (int *)FUN_004396a0()" identifier = (cast_expression "(int *)FUN_004396a0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_004396a0()" identifier (argument_list "()" ( ))))) ;)) (if_statement "if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(piVar5 == (int *)0x0)" ( (binary_expression "piVar5 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }" if (parenthesized_expression "(((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29))" ( (binary_expression "((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)" (parenthesized_expression "((param_2 == 0) && (*puVar4 == 2))" ( (binary_expression "(param_2 == 0) && (*puVar4 == 2)" (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) && (parenthesized_expression "(*puVar4 == 2)" ( (binary_expression "*puVar4 == 2" (pointer_expression "*puVar4" * identifier) == number_literal) ))) )) && (parenthesized_expression "(*piVar5 == 0x29)" ( (binary_expression "*piVar5 == 0x29" (pointer_expression "*piVar5" * identifier) == number_literal) ))) )) (compound_statement "{\n    piVar5[2] = 0;\n  }" { (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar4 = (uint *)FUN_00436ee0(piVar5);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(piVar5)" identifier = (cast_expression "(uint *)FUN_00436ee0(piVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(piVar5)" identifier (argument_list "(piVar5)" ( identifier ))))) ;) (return_statement "return puVar4;" return identifier ;) (labeled_statement "LAB_00439cbd:\n  uVar3 = *puVar9;" statement_identifier : (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" identifier = (pointer_expression "*puVar9" * identifier)) ;)) (if_statement "if (8 < uVar3) goto LAB_00439d08;" if (parenthesized_expression "(8 < uVar3)" ( (binary_expression "8 < uVar3" number_literal < identifier) )) (goto_statement "goto LAB_00439d08;" goto statement_identifier ;)) (if_statement "if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;" if (parenthesized_expression "(((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))" ( (binary_expression "((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" (parenthesized_expression "((6 < uVar3) || (1 < uVar3 - 1))" ( (binary_expression "(6 < uVar3) || (1 < uVar3 - 1)" (parenthesized_expression "(6 < uVar3)" ( (binary_expression "6 < uVar3" number_literal < identifier) )) || (parenthesized_expression "(1 < uVar3 - 1)" ( (binary_expression "1 < uVar3 - 1" number_literal < (binary_expression "uVar3 - 1" identifier - number_literal)) ))) )) || (parenthesized_expression "(puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" ( (comma_expression "puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[3]" identifier = (cast_expression "(uint *)puVar9[3]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar9[3]" identifier [ number_literal ]))) , (binary_expression "puVar9 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (goto_statement "goto LAB_00439d08;" goto statement_identifier ;)) (goto_statement "goto LAB_00439cbd;" goto statement_identifier ;) (labeled_statement "code_r0x00439dc8:\n  iVar6 = FUN_004370c0();" statement_identifier : (expression_statement "iVar6 = FUN_004370c0();" (assignment_expression "iVar6 = FUN_004370c0()" identifier = (call_expression "FUN_004370c0()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar6 < 2) {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(iVar6 < 2)" ( (binary_expression "iVar6 < 2" identifier < number_literal) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" identifier = (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(*pcVar2 == '\0')" ( (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar13 = pcVar2 + 1;" (assignment_expression "pcVar13 = pcVar2 + 1" identifier = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }" if (parenthesized_expression "(*pcVar2 != '_')" ( (binary_expression "*pcVar2 != '_'" (pointer_expression "*pcVar2" * identifier) != (char_literal "'_'" ' character ')) )) (compound_statement "{\n    return (uint *)0x0;\n  }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" identifier = (binary_expression "iVar6 + -1" identifier + number_literal)) ;) (expression_statement "puVar8 = (undefined4 *)0x0;" (assignment_expression "puVar8 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );" do (compound_statement "{\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  }" { (if_statement "if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "(*pcVar13 == '\0')" ( (binary_expression "*pcVar13 == '\0'" (pointer_expression "*pcVar13" * identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" if (parenthesized_expression "(*pcVar13 == '$')" ( (binary_expression "*pcVar13 == '$'" (pointer_expression "*pcVar13" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" { (expression_statement "cVar1 = pcVar13[1];" (assignment_expression "cVar1 = pcVar13[1]" identifier = (subscript_expression "pcVar13[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" if (parenthesized_expression "(cVar1 == 'S')" ( (binary_expression "cVar1 == 'S'" identifier == (char_literal "'S'" ' character ')) )) (compound_statement "{\n        uVar10 = 0x2f;\n      }" { (expression_statement "uVar10 = 0x2f;" (assignment_expression "uVar10 = 0x2f" identifier = number_literal) ;) }) (else_clause "else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" else (if_statement "if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" if (parenthesized_expression "(cVar1 == '_')" ( (binary_expression "cVar1 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n        uVar10 = 0x2e;\n      }" { (expression_statement "uVar10 = 0x2e;" (assignment_expression "uVar10 = 0x2e" identifier = number_literal) ;) }) (else_clause "else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" else (compound_statement "{\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" { (if_statement "if (cVar1 != '$') {\n          return (uint *)0x0;\n        }" if (parenthesized_expression "(cVar1 != '$')" ( (binary_expression "cVar1 != '$'" identifier != (char_literal "'$'" ' character ')) )) (compound_statement "{\n          return (uint *)0x0;\n        }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar10 = 0x24;" (assignment_expression "uVar10 = 0x24" identifier = number_literal) ;) }))))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);" (assignment_expression "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2)" identifier = (cast_expression "(char *)(*(int *)(param_1 + 0xc) + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0xc) + 2)" ( (binary_expression "*(int *)(param_1 + 0xc) + 2" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar11)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar11" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" { (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "iVar6 = iVar6 + -2;" (assignment_expression "iVar6 = iVar6 + -2" identifier = (binary_expression "iVar6 + -2" identifier + number_literal)) ;) (expression_statement "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar11 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar11 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar11 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar11 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar12 = 0x40;" (assignment_expression "*puVar12 = 0x40" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[2] = uVar10;" (assignment_expression "puVar12[2] = uVar10" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" else (compound_statement "{\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));" do (compound_statement "{\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      }" { (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }" if (parenthesized_expression "(iVar6 <= iVar11)" ( (binary_expression "iVar6 <= iVar11" identifier <= identifier) )) (compound_statement "{\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }" { (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto code_r0x0043a2a8;" goto statement_identifier ;)) (goto_statement "goto code_r0x0043a253;" goto statement_identifier ;) })) }) while (parenthesized_expression "((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'))" ( (binary_expression "(pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0')" (parenthesized_expression "(pcVar13[iVar11] != '$')" ( (binary_expression "pcVar13[iVar11] != '$'" (subscript_expression "pcVar13[iVar11]" identifier [ identifier ]) != (char_literal "'$'" ' character ')) )) && (parenthesized_expression "(pcVar13[iVar11] != '\0')" ( (binary_expression "pcVar13[iVar11] != '\0'" (subscript_expression "pcVar13[iVar11]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" identifier = (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" ( (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) )))) <= identifier) )) (compound_statement "{\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" { (labeled_statement "code_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" statement_identifier : (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) + identifier)) ;)) (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (labeled_statement "code_r0x0043a253:\n      iVar6 = iVar6 - iVar11;" statement_identifier : (expression_statement "iVar6 = iVar6 - iVar11;" (assignment_expression "iVar6 = iVar6 - iVar11" identifier = (binary_expression "iVar6 - iVar11" identifier - identifier)) ;)) (expression_statement "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" identifier = (cast_expression "(undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" ( (binary_expression "iVar7 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar7 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) )))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(int *)(param_1 + 0x14) = iVar7 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar7 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" * (cast_expression "(int *)(param_1 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "puVar12[2] = pcVar13;" (assignment_expression "puVar12[2] = pcVar13" (subscript_expression "puVar12[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar7 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar13 = (char *)(iVar7 + iVar11);" (assignment_expression "pcVar13 = (char *)(iVar7 + iVar11)" identifier = (cast_expression "(char *)(iVar7 + iVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + iVar11)" ( (binary_expression "iVar7 + iVar11" identifier + identifier) )))) ;) (expression_statement "*puVar12 = 0;" (assignment_expression "*puVar12 = 0" (pointer_expression "*puVar12" * identifier) = number_literal) ;) (expression_statement "puVar12[3] = iVar11;" (assignment_expression "puVar12[3] = iVar11" (subscript_expression "puVar12[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" * (cast_expression "(char **)(param_1 + 0xc)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) }))) (if_statement "if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }" if (parenthesized_expression "((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0))" ( (binary_expression "(puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)" (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" ( (binary_expression "puVar8 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)" ( (comma_expression "puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0" (assignment_expression "puVar12 = (undefined4 *)FUN_00436ee0(puVar12)" identifier = (cast_expression "(undefined4 *)FUN_00436ee0(puVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(puVar12)" identifier (argument_list "(puVar12)" ( identifier ))))) , (binary_expression "puVar12 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      return (uint *)0x0;\n    }" { (return_statement "return (uint *)0x0;" return (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" identifier = identifier) ;) (if_statement "if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }" if (parenthesized_expression "(iVar6 < 1)" ( (binary_expression "iVar6 < 1" identifier < number_literal) )) (compound_statement "{\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }" { (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" identifier = (cast_expression "(uint *)FUN_00436ee0(0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00436ee0(0)" identifier (argument_list "(0)" ( number_literal ))))) ;) (return_statement "return puVar4;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) }))
(translation_unit (ERROR (binary_expression IDENT * (ERROR IDENT) (call_expression IDENT (argument_list ( (ERROR IDENT) IDENT , (ERROR IDENT) IDENT ))))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (switch_statement switch (parenthesized_expression ( (subscript_expression IDENT [ LIT ]) )) (compound_statement { (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (return_statement return IDENT ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) (case_statement default : (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (break_statement break ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) (case_statement case (char_literal ' character ') : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;)) })) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (switch_statement switch (parenthesized_expression ( (subscript_expression IDENT [ LIT ]) )) (compound_statement { (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;)) (case_statement default : (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (return_statement return IDENT ;)) (case_statement case (char_literal ' character ') : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) , (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character '))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;)) (case_statement case (char_literal ' character ') : (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;)) (case_statement case (char_literal ' character ') : (goto_statement goto statement_identifier ;)) })) })) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (return_statement return IDENT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) )) (compound_statement { (return_statement return IDENT ;) })))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == (char_literal ' character ')) )) (compound_statement { (return_statement return IDENT ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT < LIT) || (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) ))) )) ))) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) }))) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (return_statement return IDENT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression LIT < (binary_expression IDENT - LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != (char_literal ' escape_sequence ')) ))) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;)) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (return_statement return IDENT ;) })) }) while (parenthesized_expression ( BOOL )) ;) }))
(ERROR "uint * __regparm3 FUN_00439bb0(int param_1,int param_2)" (binary_expression "uint * __regparm3 FUN_00439bb0(int param_1,int param_2)" (identifier "uint") (* "*") (ERROR "__regparm3" (identifier "__regparm3")) (call_expression "FUN_00439bb0(int param_1,int param_2)" (identifier "FUN_00439bb0") (argument_list "(int param_1,int param_2)" (( "(") (ERROR "int" (identifier "int")) (identifier "param_1") (, ",") (ERROR "int" (identifier "int")) (identifier "param_2") () ")"))))) (compound_statement "{\n  char cVar1;\n  char *pcVar2;\n  uint uVar3;\n  uint *puVar4;\n  int *piVar5;\n  int iVar6;\n  int iVar7;\n  undefined4 *puVar8;\n  uint *puVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 *puVar12;\n  char *pcVar13;\n  \n  pcVar2 = *(char **)(param_1 + 0xc);\n  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }\n  puVar4 = (uint *)FUN_00438370();\n  if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }\n  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }\n  if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }\n  puVar9 = puVar4;\n  if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }\n  do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);\nLAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();\n  if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }\n  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }\n  puVar4 = (uint *)FUN_00436ee0(piVar5);\n  return puVar4;\nLAB_00439cbd:\n  uVar3 = *puVar9;\n  if (8 < uVar3) goto LAB_00439d08;\n  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;\n  goto LAB_00439cbd;\ncode_r0x00439dc8:\n  iVar6 = FUN_004370c0();\n  if (iVar6 < 2) {\n    return (uint *)0x0;\n  }\n  pcVar2 = *(char **)(param_1 + 0xc);\n  if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }\n  pcVar13 = pcVar2 + 1;\n  *(char **)(param_1 + 0xc) = pcVar13;\n  if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }\n  iVar6 = iVar6 + -1;\n  puVar8 = (undefined4 *)0x0;\n  do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char *pcVar2;" (primitive_type "char") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 *puVar8;" (type_identifier "undefined4") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar9;" (type_identifier "uint") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "char *pcVar13;" (primitive_type "char") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }" (if "if") (parenthesized_expression "((*pcVar2 == 'G') || (*pcVar2 == 'T'))" (( "(") (binary_expression "(*pcVar2 == 'G') || (*pcVar2 == 'T')" (parenthesized_expression "(*pcVar2 == 'G')" (( "(") (binary_expression "*pcVar2 == 'G'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'G'" (' "'") (character "G") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*pcVar2 == 'T')" (( "(") (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'T'" (' "'") (character "T") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    iVar6 = *(int *)(param_1 + 0x2c);\n    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;\n    if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }\n    if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }\n    *(char **)(param_1 + 0xc) = pcVar2 + 1;\n    if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }\n    return (uint *)0x0;\n  }" ({ "{") (expression_statement "iVar6 = *(int *)(param_1 + 0x2c);" (assignment_expression "iVar6 = *(int *)(param_1 + 0x2c)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0x14;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0x14" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14"))) (; ";")) (if_statement "if (*pcVar2 == 'T') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" (if "if") (parenthesized_expression "(*pcVar2 == 'T')" (( "(") (binary_expression "*pcVar2 == 'T'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'T'" (' "'") (character "T") (' "'"))) () ")")) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 1;\n      if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }\n      return puVar4;\n    }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar2[1] == '\0') {\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(pcVar2[1] == '\0')" (( "(") (binary_expression "pcVar2[1] == '\0'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return (uint *)0x0;\n      }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (switch_statement "switch(pcVar2[1]) {\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }" (switch "switch") (parenthesized_expression "(pcVar2[1])" (( "(") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) () ")")) (compound_statement "{\n      case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      default:\n        return (uint *)0x0;\n      case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;\n      case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;\n      case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      }" ({ "{") (case_statement "case 'C':\n        uVar10 = FUN_00438890();\n        iVar6 = FUN_004370c0();\n        if (iVar6 < 0) {\n          return (uint *)0x0;\n        }\n        if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }\n        return (uint *)0x0;" (case "case") (char_literal "'C'" (' "'") (character "C") (' "'")) (: ":") (expression_statement "uVar10 = FUN_00438890();" (assignment_expression "uVar10 = FUN_00438890()" (identifier "uVar10") (= "=") (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "iVar6 = FUN_004370c0();" (assignment_expression "iVar6 = FUN_004370c0()" (identifier "iVar6") (= "=") (call_expression "FUN_004370c0()" (identifier "FUN_004370c0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 < 0) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(iVar6 < 0)" (( "(") (binary_expression "iVar6 < 0" (identifier "iVar6") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (**(char **)(param_1 + 0xc) == '_') {\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }" (if "if") (parenthesized_expression "(**(char **)(param_1 + 0xc) == '_')" (( "(") (binary_expression "**(char **)(param_1 + 0xc) == '_'" (pointer_expression "**(char **)(param_1 + 0xc)" (* "*") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;\n          FUN_00438890();\n          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;\n          puVar4 = (uint *)FUN_00436ee0(uVar10);\n          return puVar4;\n        }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(char **)(param_1 + 0xc) + 1" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;" (assignment_expression "*(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0x2c) + 5" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (number_literal "5"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(uVar10);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(uVar10)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(uVar10)" (identifier "FUN_00436ee0") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (case_statement "default:\n        return (uint *)0x0;" (default "default") (: ":") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (case_statement "case 'F':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'F'" (' "'") (character "F") (' "'")) (: ":") (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'H':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'H'" (' "'") (character "H") (' "'")) (: ":") (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" (identifier "FUN_00438370") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'I':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'I'" (' "'") (character "I") (' "'")) (: ":") (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'J':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'J'" (' "'") (character "J") (' "'")) (: ":") (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'S':\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'S'" (' "'") (character "S") (' "'")) (: ":") (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'T':\n        *(int *)(param_1 + 0x2c) = iVar6 + 10;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'T'" (' "'") (character "T") (' "'")) (: ":") (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 10;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 10" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "iVar6 + 10" (identifier "iVar6") (+ "+") (number_literal "10"))) (; ";")) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'V':\n        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;\n        FUN_00438890();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'V'" (' "'") (character "V") (' "'")) (: ":") (expression_statement "*(int *)(param_1 + 0x2c) = iVar6 + 0xf;" (assignment_expression "*(int *)(param_1 + 0x2c) = iVar6 + 0xf" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (= "=") (binary_expression "iVar6 + 0xf" (identifier "iVar6") (+ "+") (number_literal "0xf"))) (; ";")) (expression_statement "FUN_00438890();" (call_expression "FUN_00438890()" (identifier "FUN_00438890") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'W':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        break;" (case "case") (char_literal "'W'" (' "'") (character "W") (' "'")) (: ":") (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" (identifier "FUN_00438370") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 'c':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" (case "case") (char_literal "'c'" (' "'") (character "c") (' "'")) (: ":") (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" (identifier "iVar6") (= "=") (call_expression "FUN_00437640()" (identifier "FUN_00437640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" (identifier "iVar6") (= "=") (call_expression "FUN_00437640()" (identifier "FUN_00437640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" ({ "{") (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" (identifier "FUN_00439bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (case_statement "case 'h':\n        iVar6 = FUN_00437640();\n        if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        return (uint *)0x0;" (case "case") (char_literal "'h'" (' "'") (character "h") (' "'")) (: ":") (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" (identifier "iVar6") (= "=") (call_expression "FUN_00437640()" (identifier "FUN_00437640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 != 0) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" (if "if") (parenthesized_expression "(iVar6 != 0)" (( "(") (binary_expression "iVar6 != 0" (identifier "iVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" ({ "{") (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" (identifier "FUN_00439bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (case_statement "case 'v':\n        iVar6 = FUN_00437640();\n        if (iVar6 == 0) {\n          return (uint *)0x0;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" (case "case") (char_literal "'v'" (' "'") (character "v") (' "'")) (: ":") (expression_statement "iVar6 = FUN_00437640();" (assignment_expression "iVar6 = FUN_00437640()" (identifier "iVar6") (= "=") (call_expression "FUN_00437640()" (identifier "FUN_00437640") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" (identifier "FUN_00439bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";"))) (} "}"))) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (if_statement "if (*pcVar2 != 'G') {\n      return (uint *)0x0;\n    }" (if "if") (parenthesized_expression "(*pcVar2 != 'G')" (( "(") (binary_expression "*pcVar2 != 'G'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (!= "!=") (char_literal "'G'" (' "'") (character "G") (' "'"))) () ")")) (compound_statement "{\n      return (uint *)0x0;\n    }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 1;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 1" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar2[1] != '\0') {\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }" (if "if") (parenthesized_expression "(pcVar2[1] != '\0')" (( "(") (binary_expression "pcVar2[1] != '\0'" (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      *(char **)(param_1 + 0xc) = pcVar2 + 2;\n      switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }\n    }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = pcVar2 + 2;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 2" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 2" (identifier "pcVar2") (+ "+") (number_literal "2"))) (; ";")) (switch_statement "switch(pcVar2[1]) {\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }" (switch "switch") (parenthesized_expression "(pcVar2[1])" (( "(") (subscript_expression "pcVar2[1]" (identifier "pcVar2") ([ "[") (number_literal "1") (] "]")) () ")")) (compound_statement "{\n      case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      default:\n        return (uint *)0x0;\n      case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;\n      case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;\n      case 'r':\n        goto code_r0x00439dc8;\n      }" ({ "{") (case_statement "case 'A':\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" (case "case") (char_literal "'A'" (' "'") (character "A") (' "'")) (: ":") (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" (identifier "FUN_00439bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";"))) (case_statement "default:\n        return (uint *)0x0;" (default "default") (: ":") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";"))) (case_statement "case 'R':\n        FUN_00438370();\n        uVar10 = FUN_00437190();\n        puVar4 = (uint *)FUN_00436ee0(uVar10);\n        return puVar4;" (case "case") (char_literal "'R'" (' "'") (character "R") (' "'")) (: ":") (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" (identifier "FUN_00438370") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar10 = FUN_00437190();" (assignment_expression "uVar10 = FUN_00437190()" (identifier "uVar10") (= "=") (call_expression "FUN_00437190()" (identifier "FUN_00437190") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(uVar10);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(uVar10)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(uVar10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(uVar10)" (identifier "FUN_00436ee0") (argument_list "(uVar10)" (( "(") (identifier "uVar10") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";"))) (case_statement "case 'T':\n        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }\n        FUN_00439bb0();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" (case "case") (char_literal "'T'" (' "'") (character "T") (' "'")) (: ":") (if_statement "if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" (if "if") (parenthesized_expression "((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'))" (( "(") (binary_expression "(pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" (parenthesized_expression "(pcVar2[2] != '\0')" (( "(") (binary_expression "pcVar2[2] != '\0'" (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')" (( "(") (comma_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n'" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar2 + 3" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "pcVar2 + 3" (identifier "pcVar2") (+ "+") (number_literal "3"))) (, ",") (binary_expression "pcVar2[2] == 'n'" (subscript_expression "pcVar2[2]" (identifier "pcVar2") ([ "[") (number_literal "2") (] "]")) (== "==") (char_literal "'n'" (' "'") (character "n") (' "'")))) () ")"))) () ")")) (compound_statement "{\n          FUN_00439bb0();\n          puVar4 = (uint *)FUN_00436ee0(0);\n          return puVar4;\n        }" ({ "{") (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" (identifier "FUN_00439bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "FUN_00439bb0();" (call_expression "FUN_00439bb0()" (identifier "FUN_00439bb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";"))) (case_statement "case 'V':\n        FUN_00438370();\n        puVar4 = (uint *)FUN_00436ee0(0);\n        return puVar4;" (case "case") (char_literal "'V'" (' "'") (character "V") (' "'")) (: ":") (expression_statement "FUN_00438370();" (call_expression "FUN_00438370()" (identifier "FUN_00438370") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";"))) (case_statement "case 'r':\n        goto code_r0x00439dc8;" (case "case") (char_literal "'r'" (' "'") (character "r") (' "'")) (: ":") (goto_statement "goto code_r0x00439dc8;" (goto "goto") (statement_identifier "code_r0x00439dc8") (; ";"))) (} "}"))) (} "}"))) (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "puVar4 = (uint *)FUN_00438370();" (assignment_expression "puVar4 = (uint *)FUN_00438370()" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00438370()" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00438370()" (identifier "FUN_00438370") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (puVar4 == (uint *)0x0) {\n    return (uint *)0x0;\n  }" (if "if") (parenthesized_expression "(puVar4 == (uint *)0x0)" (( "(") (binary_expression "puVar4 == (uint *)0x0" (identifier "puVar4") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return (uint *)0x0;\n  }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" (if "if") (parenthesized_expression "((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0))" (( "(") (binary_expression "(param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)" (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_1 + 8) & 1) == 0)" (( "(") (binary_expression "(*(byte *)(param_1 + 8) & 1) == 0" (parenthesized_expression "(*(byte *)(param_1 + 8) & 1)" (( "(") (binary_expression "*(byte *)(param_1 + 8) & 1" (pointer_expression "*(byte *)(param_1 + 8)" (* "*") (cast_expression "(byte *)(param_1 + 8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );\n  }" ({ "{") (do_statement "do {\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    } while( true );" (do "do") (compound_statement "{\n      uVar3 = *puVar4;\n      if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }\n      puVar4 = (uint *)puVar4[2];\n    }" ({ "{") (expression_statement "uVar3 = *puVar4;" (assignment_expression "uVar3 = *puVar4" (identifier "uVar3") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (if_statement "if (uVar3 != 0x4c) {\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" (if "if") (parenthesized_expression "(uVar3 != 0x4c)" (( "(") (binary_expression "uVar3 != 0x4c" (identifier "uVar3") (!= "!=") (number_literal "0x4c")) () ")")) (compound_statement "{\n        if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }\n      }" ({ "{") (if_statement "if (uVar3 < 0x4d) {\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }\n        else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" (if "if") (parenthesized_expression "(uVar3 < 0x4d)" (( "(") (binary_expression "uVar3 < 0x4d" (identifier "uVar3") (< "<") (number_literal "0x4d")) () ")")) (compound_statement "{\n          if (4 < uVar3 - 0x1c) goto LAB_00439c16;\n        }" ({ "{") (if_statement "if (4 < uVar3 - 0x1c) goto LAB_00439c16;" (if "if") (parenthesized_expression "(4 < uVar3 - 0x1c)" (( "(") (binary_expression "4 < uVar3 - 0x1c" (number_literal "4") (< "<") (binary_expression "uVar3 - 0x1c" (identifier "uVar3") (- "-") (number_literal "0x1c"))) () ")")) (goto_statement "goto LAB_00439c16;" (goto "goto") (statement_identifier "LAB_00439c16") (; ";"))) (} "}")) (else_clause "else if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" (else "else") (if_statement "if (1 < uVar3 - 0x4e) {\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" (if "if") (parenthesized_expression "(1 < uVar3 - 0x4e)" (( "(") (binary_expression "1 < uVar3 - 0x4e" (number_literal "1") (< "<") (binary_expression "uVar3 - 0x4e" (identifier "uVar3") (- "-") (number_literal "0x4e"))) () ")")) (compound_statement "{\nLAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }\n          puVar9 = (uint *)puVar4[3];\n          uVar3 = *puVar9;\n          do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );\n        }" ({ "{") (labeled_statement "LAB_00439c16:\n          if (uVar3 != 2) {\n            return puVar4;\n          }" (statement_identifier "LAB_00439c16") (: ":") (if_statement "if (uVar3 != 2) {\n            return puVar4;\n          }" (if "if") (parenthesized_expression "(uVar3 != 2)" (( "(") (binary_expression "uVar3 != 2" (identifier "uVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n            return puVar4;\n          }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}")))) (expression_statement "puVar9 = (uint *)puVar4[3];" (assignment_expression "puVar9 = (uint *)puVar4[3]" (identifier "puVar9") (= "=") (cast_expression "(uint *)puVar4[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" (identifier "uVar3") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (do_statement "do {\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          } while( true );" (do "do") (compound_statement "{\n            if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }\n            puVar9 = (uint *)puVar9[2];\n            uVar3 = *puVar9;\n            puVar4[3] = (uint)puVar9;\n          }" ({ "{") (if_statement "if (uVar3 != 0x4c) {\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" (if "if") (parenthesized_expression "(uVar3 != 0x4c)" (( "(") (binary_expression "uVar3 != 0x4c" (identifier "uVar3") (!= "!=") (number_literal "0x4c")) () ")")) (compound_statement "{\n              if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }\n            }" ({ "{") (if_statement "if (uVar3 < 0x4d) {\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }\n              else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" (if "if") (parenthesized_expression "(uVar3 < 0x4d)" (( "(") (binary_expression "uVar3 < 0x4d" (identifier "uVar3") (< "<") (number_literal "0x4d")) () ")")) (compound_statement "{\n                if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }\n              }" ({ "{") (if_statement "if (4 < uVar3 - 0x1c) {\n                  return puVar4;\n                }" (if "if") (parenthesized_expression "(4 < uVar3 - 0x1c)" (( "(") (binary_expression "4 < uVar3 - 0x1c" (number_literal "4") (< "<") (binary_expression "uVar3 - 0x1c" (identifier "uVar3") (- "-") (number_literal "0x1c"))) () ")")) (compound_statement "{\n                  return puVar4;\n                }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (} "}")) (else_clause "else if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" (else "else") (if_statement "if (1 < uVar3 - 0x4e) {\n                return puVar4;\n              }" (if "if") (parenthesized_expression "(1 < uVar3 - 0x4e)" (( "(") (binary_expression "1 < uVar3 - 0x4e" (number_literal "1") (< "<") (binary_expression "uVar3 - 0x4e" (identifier "uVar3") (- "-") (number_literal "0x4e"))) () ")")) (compound_statement "{\n                return puVar4;\n              }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))))) (} "}"))) (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" (identifier "puVar9") (= "=") (cast_expression "(uint *)puVar9[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" (identifier "uVar3") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (expression_statement "puVar4[3] = (uint)puVar9;" (assignment_expression "puVar4[3] = (uint)puVar9" (subscript_expression "puVar4[3]" (identifier "puVar4") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(uint)puVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))))) (} "}"))) (expression_statement "puVar4 = (uint *)puVar4[2];" (assignment_expression "puVar4 = (uint *)puVar4[2]" (identifier "puVar4") (= "=") (cast_expression "(uint *)puVar4[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (**(char **)(param_1 + 0xc) == '\0') {\n    return puVar4;\n  }" (if "if") (parenthesized_expression "(**(char **)(param_1 + 0xc) == '\0')" (( "(") (binary_expression "**(char **)(param_1 + 0xc) == '\0'" (pointer_expression "**(char **)(param_1 + 0xc)" (* "*") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return puVar4;\n  }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (expression_statement "puVar9 = puVar4;" (assignment_expression "puVar9 = puVar4" (identifier "puVar9") (= "=") (identifier "puVar4")) (; ";")) (if_statement "if (**(char **)(param_1 + 0xc) == 'E') {\n    return puVar4;\n  }" (if "if") (parenthesized_expression "(**(char **)(param_1 + 0xc) == 'E')" (( "(") (binary_expression "**(char **)(param_1 + 0xc) == 'E'" (pointer_expression "**(char **)(param_1 + 0xc)" (* "*") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (== "==") (char_literal "'E'" (' "'") (character "E") (' "'"))) () ")")) (compound_statement "{\n    return puVar4;\n  }" ({ "{") (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (do_statement "do {\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  } while (puVar9 != (uint *)0x0);" (do "do") (compound_statement "{\n    uVar3 = *puVar9;\n    if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }\n  }" ({ "{") (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" (identifier "uVar3") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";")) (if_statement "if (uVar3 < 0x21) {\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }\n    else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" (if "if") (parenthesized_expression "(uVar3 < 0x21)" (( "(") (binary_expression "uVar3 < 0x21" (identifier "uVar3") (< "<") (number_literal "0x21")) () ")")) (compound_statement "{\n      if (0x1b < uVar3) goto LAB_00439d5f;\n      if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }\n      puVar9 = (uint *)puVar9[3];\n    }" ({ "{") (if_statement "if (0x1b < uVar3) goto LAB_00439d5f;" (if "if") (parenthesized_expression "(0x1b < uVar3)" (( "(") (binary_expression "0x1b < uVar3" (number_literal "0x1b") (< "<") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_00439d5f;" (goto "goto") (statement_identifier "LAB_00439d5f") (; ";"))) (if_statement "if (uVar3 != 2) {\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" (if "if") (parenthesized_expression "(uVar3 != 2)" (( "(") (binary_expression "uVar3 != 2" (identifier "uVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;\n        break;\n      }" ({ "{") (if_statement "if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;" (if "if") (parenthesized_expression "((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0))" (( "(") (binary_expression "(uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" (parenthesized_expression "(uVar3 == 4)" (( "(") (binary_expression "uVar3 == 4" (identifier "uVar3") (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "(puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)" (( "(") (comma_expression "puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[2]" (identifier "puVar9") (= "=") (cast_expression "(uint *)puVar9[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")))) (, ",") (binary_expression "puVar9 != (uint *)0x0" (identifier "puVar9") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_00439cbd;" (goto "goto") (statement_identifier "LAB_00439cbd") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "puVar9 = (uint *)puVar9[3];" (assignment_expression "puVar9 = (uint *)puVar9[3]" (identifier "puVar9") (= "=") (cast_expression "(uint *)puVar9[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" (else "else") (compound_statement "{\n      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;\nLAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];\n    }" ({ "{") (if_statement "if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;" (if "if") (parenthesized_expression "((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e))))" (( "(") (binary_expression "(uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" (parenthesized_expression "(uVar3 != 0x4c)" (( "(") (binary_expression "uVar3 != 0x4c" (identifier "uVar3") (!= "!=") (number_literal "0x4c")) () ")")) (&& "&&") (parenthesized_expression "((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))" (( "(") (parenthesized_expression "(uVar3 < 0x4c || (1 < uVar3 - 0x4e))" (( "(") (binary_expression "uVar3 < 0x4c || (1 < uVar3 - 0x4e)" (binary_expression "uVar3 < 0x4c" (identifier "uVar3") (< "<") (number_literal "0x4c")) (|| "||") (parenthesized_expression "(1 < uVar3 - 0x4e)" (( "(") (binary_expression "1 < uVar3 - 0x4e" (number_literal "1") (< "<") (binary_expression "uVar3 - 0x4e" (identifier "uVar3") (- "-") (number_literal "0x4e"))) () ")"))) () ")")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00439d5f:\n      puVar9 = (uint *)puVar9[2];" (statement_identifier "LAB_00439d5f") (: ":") (expression_statement "puVar9 = (uint *)puVar9[2];" (assignment_expression "puVar9 = (uint *)puVar9[2]" (identifier "puVar9") (= "=") (cast_expression "(uint *)puVar9[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[2]" (identifier "puVar9") ([ "[") (number_literal "2") (] "]")))) (; ";"))) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(puVar9 != (uint *)0x0)" (( "(") (binary_expression "puVar9 != (uint *)0x0" (identifier "puVar9") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (labeled_statement "LAB_00439d08:\n  piVar5 = (int *)FUN_004396a0();" (statement_identifier "LAB_00439d08") (: ":") (expression_statement "piVar5 = (int *)FUN_004396a0();" (assignment_expression "piVar5 = (int *)FUN_004396a0()" (identifier "piVar5") (= "=") (cast_expression "(int *)FUN_004396a0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_004396a0()" (identifier "FUN_004396a0") (argument_list "()" (( "(") () ")"))))) (; ";"))) (if_statement "if (piVar5 == (int *)0x0) {\n    return (uint *)0x0;\n  }" (if "if") (parenthesized_expression "(piVar5 == (int *)0x0)" (( "(") (binary_expression "piVar5 == (int *)0x0" (identifier "piVar5") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return (uint *)0x0;\n  }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {\n    piVar5[2] = 0;\n  }" (if "if") (parenthesized_expression "(((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29))" (( "(") (binary_expression "((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)" (parenthesized_expression "((param_2 == 0) && (*puVar4 == 2))" (( "(") (binary_expression "(param_2 == 0) && (*puVar4 == 2)" (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*puVar4 == 2)" (( "(") (binary_expression "*puVar4 == 2" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (== "==") (number_literal "2")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*piVar5 == 0x29)" (( "(") (binary_expression "*piVar5 == 0x29" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (== "==") (number_literal "0x29")) () ")"))) () ")")) (compound_statement "{\n    piVar5[2] = 0;\n  }" ({ "{") (expression_statement "piVar5[2] = 0;" (assignment_expression "piVar5[2] = 0" (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar4 = (uint *)FUN_00436ee0(piVar5);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(piVar5)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(piVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(piVar5)" (identifier "FUN_00436ee0") (argument_list "(piVar5)" (( "(") (identifier "piVar5") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (labeled_statement "LAB_00439cbd:\n  uVar3 = *puVar9;" (statement_identifier "LAB_00439cbd") (: ":") (expression_statement "uVar3 = *puVar9;" (assignment_expression "uVar3 = *puVar9" (identifier "uVar3") (= "=") (pointer_expression "*puVar9" (* "*") (identifier "puVar9"))) (; ";"))) (if_statement "if (8 < uVar3) goto LAB_00439d08;" (if "if") (parenthesized_expression "(8 < uVar3)" (( "(") (binary_expression "8 < uVar3" (number_literal "8") (< "<") (identifier "uVar3")) () ")")) (goto_statement "goto LAB_00439d08;" (goto "goto") (statement_identifier "LAB_00439d08") (; ";"))) (if_statement "if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))\n  goto LAB_00439d08;" (if "if") (parenthesized_expression "(((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))" (( "(") (binary_expression "((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" (parenthesized_expression "((6 < uVar3) || (1 < uVar3 - 1))" (( "(") (binary_expression "(6 < uVar3) || (1 < uVar3 - 1)" (parenthesized_expression "(6 < uVar3)" (( "(") (binary_expression "6 < uVar3" (number_literal "6") (< "<") (identifier "uVar3")) () ")")) (|| "||") (parenthesized_expression "(1 < uVar3 - 1)" (( "(") (binary_expression "1 < uVar3 - 1" (number_literal "1") (< "<") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0)" (( "(") (comma_expression "puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0" (assignment_expression "puVar9 = (uint *)puVar9[3]" (identifier "puVar9") (= "=") (cast_expression "(uint *)puVar9[3]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")))) (, ",") (binary_expression "puVar9 == (uint *)0x0" (identifier "puVar9") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (goto_statement "goto LAB_00439d08;" (goto "goto") (statement_identifier "LAB_00439d08") (; ";"))) (goto_statement "goto LAB_00439cbd;" (goto "goto") (statement_identifier "LAB_00439cbd") (; ";")) (labeled_statement "code_r0x00439dc8:\n  iVar6 = FUN_004370c0();" (statement_identifier "code_r0x00439dc8") (: ":") (expression_statement "iVar6 = FUN_004370c0();" (assignment_expression "iVar6 = FUN_004370c0()" (identifier "iVar6") (= "=") (call_expression "FUN_004370c0()" (identifier "FUN_004370c0") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if (iVar6 < 2) {\n    return (uint *)0x0;\n  }" (if "if") (parenthesized_expression "(iVar6 < 2)" (( "(") (binary_expression "iVar6 < 2" (identifier "iVar6") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    return (uint *)0x0;\n  }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "pcVar2 = *(char **)(param_1 + 0xc);" (assignment_expression "pcVar2 = *(char **)(param_1 + 0xc)" (identifier "pcVar2") (= "=") (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (*pcVar2 == '\0') {\n    return (uint *)0x0;\n  }" (if "if") (parenthesized_expression "(*pcVar2 == '\0')" (( "(") (binary_expression "*pcVar2 == '\0'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    return (uint *)0x0;\n  }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "pcVar13 = pcVar2 + 1;" (assignment_expression "pcVar13 = pcVar2 + 1" (identifier "pcVar13") (= "=") (binary_expression "pcVar2 + 1" (identifier "pcVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "pcVar13")) (; ";")) (if_statement "if (*pcVar2 != '_') {\n    return (uint *)0x0;\n  }" (if "if") (parenthesized_expression "(*pcVar2 != '_')" (( "(") (binary_expression "*pcVar2 != '_'" (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) (!= "!=") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n    return (uint *)0x0;\n  }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + -1;" (assignment_expression "iVar6 = iVar6 + -1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -1" (identifier "iVar6") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar8 = (undefined4 *)0x0;" (assignment_expression "puVar8 = (undefined4 *)0x0" (identifier "puVar8") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }\n    if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }\n    puVar8 = puVar12;\n    if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }\n  }" ({ "{") (if_statement "if (*pcVar13 == '\0') {\n      return (uint *)0x0;\n    }" (if "if") (parenthesized_expression "(*pcVar13 == '\0')" (( "(") (binary_expression "*pcVar13 == '\0'" (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      return (uint *)0x0;\n    }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (*pcVar13 == '$') {\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }\n    else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" (if "if") (parenthesized_expression "(*pcVar13 == '$')" (( "(") (binary_expression "*pcVar13 == '$'" (pointer_expression "*pcVar13" (* "*") (identifier "pcVar13")) (== "==") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")")) (compound_statement "{\n      cVar1 = pcVar13[1];\n      if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }\n      iVar11 = *(int *)(param_1 + 0x14);\n      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);\n      if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }\n      iVar6 = iVar6 + -2;\n      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar11 + 1;\n      *puVar12 = 0x40;\n      puVar12[2] = uVar10;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" ({ "{") (expression_statement "cVar1 = pcVar13[1];" (assignment_expression "cVar1 = pcVar13[1]" (identifier "cVar1") (= "=") (subscript_expression "pcVar13[1]" (identifier "pcVar13") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (cVar1 == 'S') {\n        uVar10 = 0x2f;\n      }\n      else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" (if "if") (parenthesized_expression "(cVar1 == 'S')" (( "(") (binary_expression "cVar1 == 'S'" (identifier "cVar1") (== "==") (char_literal "'S'" (' "'") (character "S") (' "'"))) () ")")) (compound_statement "{\n        uVar10 = 0x2f;\n      }" ({ "{") (expression_statement "uVar10 = 0x2f;" (assignment_expression "uVar10 = 0x2f" (identifier "uVar10") (= "=") (number_literal "0x2f")) (; ";")) (} "}")) (else_clause "else if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" (else "else") (if_statement "if (cVar1 == '_') {\n        uVar10 = 0x2e;\n      }\n      else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" (if "if") (parenthesized_expression "(cVar1 == '_')" (( "(") (binary_expression "cVar1 == '_'" (identifier "cVar1") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n        uVar10 = 0x2e;\n      }" ({ "{") (expression_statement "uVar10 = 0x2e;" (assignment_expression "uVar10 = 0x2e" (identifier "uVar10") (= "=") (number_literal "0x2e")) (; ";")) (} "}")) (else_clause "else {\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" (else "else") (compound_statement "{\n        if (cVar1 != '$') {\n          return (uint *)0x0;\n        }\n        uVar10 = 0x24;\n      }" ({ "{") (if_statement "if (cVar1 != '$') {\n          return (uint *)0x0;\n        }" (if "if") (parenthesized_expression "(cVar1 != '$')" (( "(") (binary_expression "cVar1 != '$'" (identifier "cVar1") (!= "!=") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")")) (compound_statement "{\n          return (uint *)0x0;\n        }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar10 = 0x24;" (assignment_expression "uVar10 = 0x24" (identifier "uVar10") (= "=") (number_literal "0x24")) (; ";")) (} "}")))))) (expression_statement "iVar11 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x14)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);" (assignment_expression "pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2)" (identifier "pcVar13") (= "=") (cast_expression "(char *)(*(int *)(param_1 + 0xc) + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0xc) + 2)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) + 2" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar11) {\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar11)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) <= iVar11" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (<= "<=") (identifier "iVar11")) () ")")) (compound_statement "{\n        *(char **)(param_1 + 0xc) = pcVar13;\n        return (uint *)0x0;\n      }" ({ "{") (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "pcVar13")) (; ";")) (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "iVar6 = iVar6 + -2;" (assignment_expression "iVar6 = iVar6 + -2" (identifier "iVar6") (= "=") (binary_expression "iVar6 + -2" (identifier "iVar6") (+ "+") (number_literal "-2"))) (; ";")) (expression_statement "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (binary_expression "iVar11 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar11 * 0x10" (identifier "iVar11") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x14) = iVar11 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar11 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar12 = 0x40;" (assignment_expression "*puVar12 = 0x40" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (number_literal "0x40")) (; ";")) (expression_statement "puVar12[2] = uVar10;" (assignment_expression "puVar12[2] = uVar10" (subscript_expression "puVar12[2]" (identifier "puVar12") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "pcVar13")) (; ";")) (} "}")) (else_clause "else {\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" (else "else") (compound_statement "{\n      iVar11 = 0;\n      do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));\n      iVar7 = *(int *)(param_1 + 0x14);\n      if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }\ncode_r0x0043a253:\n      iVar6 = iVar6 - iVar11;\n      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));\n      puVar12[1] = 0;\n      *(int *)(param_1 + 0x14) = iVar7 + 1;\n      puVar12[2] = pcVar13;\n      iVar7 = *(int *)(param_1 + 0xc);\n      puVar12[1] = 0;\n      pcVar13 = (char *)(iVar7 + iVar11);\n      *puVar12 = 0;\n      puVar12[3] = iVar11;\n      *(char **)(param_1 + 0xc) = pcVar13;\n    }" ({ "{") (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));" (do "do") (compound_statement "{\n        iVar11 = iVar11 + 1;\n        if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }\n      }" ({ "{") (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 <= iVar11) {\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }" (if "if") (parenthesized_expression "(iVar6 <= iVar11)" (( "(") (binary_expression "iVar6 <= iVar11" (identifier "iVar6") (<= "<=") (identifier "iVar11")) () ")")) (compound_statement "{\n          iVar7 = *(int *)(param_1 + 0x14);\n          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;\n          goto code_r0x0043a253;\n        }" ({ "{") (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (<= "<=") (identifier "iVar7")) () ")")) (goto_statement "goto code_r0x0043a2a8;" (goto "goto") (statement_identifier "code_r0x0043a2a8") (; ";"))) (goto_statement "goto code_r0x0043a253;" (goto "goto") (statement_identifier "code_r0x0043a253") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'))" (( "(") (binary_expression "(pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0')" (parenthesized_expression "(pcVar13[iVar11] != '$')" (( "(") (binary_expression "pcVar13[iVar11] != '$'" (subscript_expression "pcVar13[iVar11]" (identifier "pcVar13") ([ "[") (identifier "iVar11") (] "]")) (!= "!=") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar13[iVar11] != '\0')" (( "(") (binary_expression "pcVar13[iVar11] != '\0'" (subscript_expression "pcVar13[iVar11]" (identifier "pcVar13") ([ "[") (identifier "iVar11") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (; ";")) (expression_statement "iVar7 = *(int *)(param_1 + 0x14);" (assignment_expression "iVar7 = *(int *)(param_1 + 0x14)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x18) <= iVar7) {\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x18) <= iVar7)" (( "(") (binary_expression "*(int *)(param_1 + 0x18) <= iVar7" (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")")))) (<= "<=") (identifier "iVar7")) () ")")) (compound_statement "{\ncode_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;\n        return (uint *)0x0;\n      }" ({ "{") (labeled_statement "code_r0x0043a2a8:\n        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" (statement_identifier "code_r0x0043a2a8") (: ":") (expression_statement "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;" (assignment_expression "*(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 0xc) + iVar11" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (identifier "iVar11"))) (; ";"))) (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (labeled_statement "code_r0x0043a253:\n      iVar6 = iVar6 - iVar11;" (statement_identifier "code_r0x0043a253") (: ":") (expression_statement "iVar6 = iVar6 - iVar11;" (assignment_expression "iVar6 = iVar6 - iVar11" (identifier "iVar6") (= "=") (binary_expression "iVar6 - iVar11" (identifier "iVar6") (- "-") (identifier "iVar11"))) (; ";"))) (expression_statement "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));" (assignment_expression "puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 * 0x10 + *(int *)(param_1 + 0x10))" (( "(") (binary_expression "iVar7 * 0x10 + *(int *)(param_1 + 0x10)" (binary_expression "iVar7 * 0x10" (identifier "iVar7") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) () ")")))) (; ";")) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int *)(param_1 + 0x14) = iVar7 + 1;" (assignment_expression "*(int *)(param_1 + 0x14) = iVar7 + 1" (pointer_expression "*(int *)(param_1 + 0x14)" (* "*") (cast_expression "(int *)(param_1 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar12[2] = pcVar13;" (assignment_expression "puVar12[2] = pcVar13" (subscript_expression "puVar12[2]" (identifier "puVar12") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "pcVar13")) (; ";")) (expression_statement "iVar7 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar7 = *(int *)(param_1 + 0xc)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "puVar12[1] = 0;" (assignment_expression "puVar12[1] = 0" (subscript_expression "puVar12[1]" (identifier "puVar12") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar13 = (char *)(iVar7 + iVar11);" (assignment_expression "pcVar13 = (char *)(iVar7 + iVar11)" (identifier "pcVar13") (= "=") (cast_expression "(char *)(iVar7 + iVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + iVar11)" (( "(") (binary_expression "iVar7 + iVar11" (identifier "iVar7") (+ "+") (identifier "iVar11")) () ")")))) (; ";")) (expression_statement "*puVar12 = 0;" (assignment_expression "*puVar12 = 0" (pointer_expression "*puVar12" (* "*") (identifier "puVar12")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar12[3] = iVar11;" (assignment_expression "puVar12[3] = iVar11" (subscript_expression "puVar12[3]" (identifier "puVar12") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar11")) (; ";")) (expression_statement "*(char **)(param_1 + 0xc) = pcVar13;" (assignment_expression "*(char **)(param_1 + 0xc) = pcVar13" (pointer_expression "*(char **)(param_1 + 0xc)" (* "*") (cast_expression "(char **)(param_1 + 0xc)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "pcVar13")) (; ";")) (} "}")))) (if_statement "if ((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {\n      return (uint *)0x0;\n    }" (if "if") (parenthesized_expression "((puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0))" (( "(") (binary_expression "(puVar8 != (undefined4 *)0x0) &&\n       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)" (parenthesized_expression "(puVar8 != (undefined4 *)0x0)" (( "(") (binary_expression "puVar8 != (undefined4 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)" (( "(") (comma_expression "puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0" (assignment_expression "puVar12 = (undefined4 *)FUN_00436ee0(puVar12)" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)FUN_00436ee0(puVar12)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(puVar12)" (identifier "FUN_00436ee0") (argument_list "(puVar12)" (( "(") (identifier "puVar12") () ")"))))) (, ",") (binary_expression "puVar12 == (undefined4 *)0x0" (identifier "puVar12") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      return (uint *)0x0;\n    }" ({ "{") (return_statement "return (uint *)0x0;" (return "return") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "puVar8 = puVar12;" (assignment_expression "puVar8 = puVar12" (identifier "puVar8") (= "=") (identifier "puVar12")) (; ";")) (if_statement "if (iVar6 < 1) {\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }" (if "if") (parenthesized_expression "(iVar6 < 1)" (( "(") (binary_expression "iVar6 < 1" (identifier "iVar6") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      puVar4 = (uint *)FUN_00436ee0(0);\n      return puVar4;\n    }" ({ "{") (expression_statement "puVar4 = (uint *)FUN_00436ee0(0);" (assignment_expression "puVar4 = (uint *)FUN_00436ee0(0)" (identifier "puVar4") (= "=") (cast_expression "(uint *)FUN_00436ee0(0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00436ee0(0)" (identifier "FUN_00436ee0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))))) (; ";")) (return_statement "return puVar4;" (return "return") (identifier "puVar4") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))

/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

type_1 * __regparm3 var_9(int var_1,int var_12)

{
  char var_17;
  char *var_3;
  type_1 var_13;
  type_1 *var_11;
  int *var_16;
  int var_2;
  int var_19;
  type_2 *var_20;
  type_1 *var_14;
  type_2 uVar10;
  int var_18;
  type_2 *var_21;
  char *pcVar13;
  
  var_3 = *(char **)(var_1 + 0xc);
  if ((*var_3 == 'G') || (*var_3 == 'T')) {
    var_2 = *(int *)(var_1 + 0x2c);
    *(int *)(var_1 + 0x2c) = var_2 + 0x14;
    if (*var_3 == 'T') {
      *(char **)(var_1 + 0xc) = var_3 + 1;
      if (var_3[1] == '\0') {
        return (type_1 *)0x0;
      }
      *(char **)(var_1 + 0xc) = var_3 + 2;
      switch(var_3[1]) {
      case 'C':
        uVar10 = var_4();
        var_2 = var_5();
        if (var_2 < 0) {
          return (type_1 *)0x0;
        }
        if (**(char **)(var_1 + 0xc) == '_') {
          *(char **)(var_1 + 0xc) = *(char **)(var_1 + 0xc) + 1;
          var_4();
          *(int *)(var_1 + 0x2c) = *(int *)(var_1 + 0x2c) + 5;
          var_11 = (type_1 *)var_6(uVar10);
          return var_11;
        }
        return (type_1 *)0x0;
      default:
        return (type_1 *)0x0;
      case 'F':
        var_4();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'H':
        var_7();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'I':
        var_4();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'J':
        var_4();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'S':
        var_4();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'T':
        *(int *)(var_1 + 0x2c) = var_2 + 10;
        var_4();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'V':
        *(int *)(var_1 + 0x2c) = var_2 + 0xf;
        var_4();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'W':
        var_7();
        var_11 = (type_1 *)var_6(0);
        break;
      case 'c':
        var_2 = var_8();
        if (var_2 == 0) {
          return (type_1 *)0x0;
        }
        var_2 = var_8();
        if (var_2 != 0) {
          var_9();
          var_11 = (type_1 *)var_6(0);
          return var_11;
        }
        return (type_1 *)0x0;
      case 'h':
        var_2 = var_8();
        if (var_2 != 0) {
          var_9();
          var_11 = (type_1 *)var_6(0);
          return var_11;
        }
        return (type_1 *)0x0;
      case 'v':
        var_2 = var_8();
        if (var_2 == 0) {
          return (type_1 *)0x0;
        }
        var_9();
        var_11 = (type_1 *)var_6(0);
        return var_11;
      }
      return var_11;
    }
    if (*var_3 != 'G') {
      return (type_1 *)0x0;
    }
    *(char **)(var_1 + 0xc) = var_3 + 1;
    if (var_3[1] != '\0') {
      *(char **)(var_1 + 0xc) = var_3 + 2;
      switch(var_3[1]) {
      case 'A':
        var_9();
        var_11 = (type_1 *)var_6(0);
        return var_11;
      default:
        return (type_1 *)0x0;
      case 'R':
        var_7();
        uVar10 = var_10();
        var_11 = (type_1 *)var_6(uVar10);
        return var_11;
      case 'T':
        if ((var_3[2] != '\0') && (*(char **)(var_1 + 0xc) = var_3 + 3, var_3[2] == 'n')) {
          var_9();
          var_11 = (type_1 *)var_6(0);
          return var_11;
        }
        var_9();
        var_11 = (type_1 *)var_6(0);
        return var_11;
      case 'V':
        var_7();
        var_11 = (type_1 *)var_6(0);
        return var_11;
      case 'r':
        goto _L927;
      }
    }
    return (type_1 *)0x0;
  }
  var_11 = (type_1 *)var_7();
  if (var_11 == (type_1 *)0x0) {
    return (type_1 *)0x0;
  }
  if ((var_12 != 0) && ((*(type_3 *)(var_1 + 8) & 1) == 0)) {
    do {
      var_13 = *var_11;
      if (var_13 != 0x4c) {
        if (var_13 < 0x4d) {
          if (4 < var_13 - 0x1c) goto LAB_00439c16;
        }
        else if (1 < var_13 - 0x4e) {
LAB_00439c16:
          if (var_13 != 2) {
            return var_11;
          }
          var_14 = (type_1 *)var_11[3];
          var_13 = *var_14;
          do {
            if (var_13 != 0x4c) {
              if (var_13 < 0x4d) {
                if (4 < var_13 - 0x1c) {
                  return var_11;
                }
              }
              else if (1 < var_13 - 0x4e) {
                return var_11;
              }
            }
            var_14 = (type_1 *)var_14[2];
            var_13 = *var_14;
            var_11[3] = (type_1)var_14;
          } while( true );
        }
      }
      var_11 = (type_1 *)var_11[2];
    } while( true );
  }
  if (**(char **)(var_1 + 0xc) == '\0') {
    return var_11;
  }
  var_14 = var_11;
  if (**(char **)(var_1 + 0xc) == 'E') {
    return var_11;
  }
  do {
    var_13 = *var_14;
    if (var_13 < 0x21) {
      if (0x1b < var_13) goto LAB_00439d5f;
      if (var_13 != 2) {
        if ((var_13 == 4) && (var_14 = (type_1 *)var_14[2], var_14 != (type_1 *)0x0)) goto LAB_00439cbd;
        break;
      }
      var_14 = (type_1 *)var_14[3];
    }
    else {
      if ((var_13 != 0x4c) && ((var_13 < 0x4c || (1 < var_13 - 0x4e)))) break;
LAB_00439d5f:
      var_14 = (type_1 *)var_14[2];
    }
  } while (var_14 != (type_1 *)0x0);
LAB_00439d08:
  var_16 = (int *)var_15();
  if (var_16 == (int *)0x0) {
    return (type_1 *)0x0;
  }
  if (((var_12 == 0) && (*var_11 == 2)) && (*var_16 == 0x29)) {
    var_16[2] = 0;
  }
  var_11 = (type_1 *)var_6(var_16);
  return var_11;
LAB_00439cbd:
  var_13 = *var_14;
  if (8 < var_13) goto LAB_00439d08;
  if (((6 < var_13) || (1 < var_13 - 1)) || (var_14 = (type_1 *)var_14[3], var_14 == (type_1 *)0x0))
  goto LAB_00439d08;
  goto LAB_00439cbd;
_L927:
  var_2 = var_5();
  if (var_2 < 2) {
    return (type_1 *)0x0;
  }
  var_3 = *(char **)(var_1 + 0xc);
  if (*var_3 == '\0') {
    return (type_1 *)0x0;
  }
  pcVar13 = var_3 + 1;
  *(char **)(var_1 + 0xc) = pcVar13;
  if (*var_3 != '_') {
    return (type_1 *)0x0;
  }
  var_2 = var_2 + -1;
  var_20 = (type_2 *)0x0;
  do {
    if (*pcVar13 == '\0') {
      return (type_1 *)0x0;
    }
    if (*pcVar13 == '$') {
      var_17 = pcVar13[1];
      if (var_17 == 'S') {
        uVar10 = 0x2f;
      }
      else if (var_17 == '_') {
        uVar10 = 0x2e;
      }
      else {
        if (var_17 != '$') {
          return (type_1 *)0x0;
        }
        uVar10 = 0x24;
      }
      var_18 = *(int *)(var_1 + 0x14);
      pcVar13 = (char *)(*(int *)(var_1 + 0xc) + 2);
      if (*(int *)(var_1 + 0x18) <= var_18) {
        *(char **)(var_1 + 0xc) = pcVar13;
        return (type_1 *)0x0;
      }
      var_2 = var_2 + -2;
      var_21 = (type_2 *)(var_18 * 0x10 + *(int *)(var_1 + 0x10));
      var_21[1] = 0;
      *(int *)(var_1 + 0x14) = var_18 + 1;
      *var_21 = 0x40;
      var_21[2] = uVar10;
      *(char **)(var_1 + 0xc) = pcVar13;
    }
    else {
      var_18 = 0;
      do {
        var_18 = var_18 + 1;
        if (var_2 <= var_18) {
          var_19 = *(int *)(var_1 + 0x14);
          if (*(int *)(var_1 + 0x18) <= var_19) goto LAB_0043a2a8;
          goto LAB_0043a253;
        }
      } while ((pcVar13[var_18] != '$') && (pcVar13[var_18] != '\0'));
      var_19 = *(int *)(var_1 + 0x14);
      if (*(int *)(var_1 + 0x18) <= var_19) {
LAB_0043a2a8:
        *(int *)(var_1 + 0xc) = *(int *)(var_1 + 0xc) + var_18;
        return (type_1 *)0x0;
      }
LAB_0043a253:
      var_2 = var_2 - var_18;
      var_21 = (type_2 *)(var_19 * 0x10 + *(int *)(var_1 + 0x10));
      var_21[1] = 0;
      *(int *)(var_1 + 0x14) = var_19 + 1;
      var_21[2] = pcVar13;
      var_19 = *(int *)(var_1 + 0xc);
      var_21[1] = 0;
      pcVar13 = (char *)(var_19 + var_18);
      *var_21 = 0;
      var_21[3] = var_18;
      *(char **)(var_1 + 0xc) = pcVar13;
    }
    if ((var_20 != (type_2 *)0x0) &&
       (var_21 = (type_2 *)var_6(var_21), var_21 == (type_2 *)0x0)) {
      return (type_1 *)0x0;
    }
    var_20 = var_21;
    if (var_2 < 1) {
      var_11 = (type_1 *)var_6(0);
      return var_11;
    }
  } while( true );
}


(translation_unit (ERROR (binary_expression left: (identifier) (ERROR (identifier)) right: (call_expression function: (identifier) arguments: (argument_list (ERROR (identifier)) (identifier) (ERROR (identifier)) (identifier))))) (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (switch_statement condition: (parenthesized_expression (subscript_expression argument: (identifier) index: (number_literal))) body: (compound_statement (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (return_statement (identifier)))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (case_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (break_statement)) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier)))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier)))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (case_statement value: (char_literal (character)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier))))) (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (switch_statement condition: (parenthesized_expression (subscript_expression argument: (identifier) index: (number_literal))) body: (compound_statement (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier))) (case_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (return_statement (identifier))) (case_statement value: (char_literal (character)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier))) (case_statement value: (char_literal (character)) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier))) (case_statement value: (char_literal (character)) (goto_statement label: (statement_identifier))))))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (return_statement (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (return_statement (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) condition: (parenthesized_expression (true))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) condition: (parenthesized_expression (true))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (char_literal (character)))) consequence: (compound_statement (return_statement (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal))))))))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (return_statement (identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))))) condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (escape_sequence))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))))) (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier))))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (return_statement (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (return_statement (identifier))))) condition: (parenthesized_expression (true)))))

/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */

uint * __regparm3 MASKED(int param_1,int param_2)

{
  char cVar1;
  char *pcVar2;
  uint uVar3;
  uint *puVar4;
  int *piVar5;
  int iVar6;
  int iVar7;
  undefined4 *puVar8;
  uint *puVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 *puVar12;
  char *pcVar13;
  
  pcVar2 = *(char **)(param_1 + 0xc);
  if ((*pcVar2 == 'G') || (*pcVar2 == 'T')) {
    iVar6 = *(int *)(param_1 + 0x2c);
    *(int *)(param_1 + 0x2c) = iVar6 + 0x14;
    if (*pcVar2 == 'T') {
      *(char **)(param_1 + 0xc) = pcVar2 + 1;
      if (pcVar2[1] == '\0') {
        return (uint *)0x0;
      }
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      switch(pcVar2[1]) {
      case 'C':
        uVar10 = FUN_00438890();
        iVar6 = FUN_004370c0();
        if (iVar6 < 0) {
          return (uint *)0x0;
        }
        if (**(char **)(param_1 + 0xc) == '_') {
          *(char **)(param_1 + 0xc) = *(char **)(param_1 + 0xc) + 1;
          FUN_00438890();
          *(int *)(param_1 + 0x2c) = *(int *)(param_1 + 0x2c) + 5;
          puVar4 = (uint *)FUN_00436ee0(uVar10);
          return puVar4;
        }
        return (uint *)0x0;
      default:
        return (uint *)0x0;
      case 'F':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'H':
        FUN_00438370();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'I':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'J':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'S':
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'T':
        *(int *)(param_1 + 0x2c) = iVar6 + 10;
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'V':
        *(int *)(param_1 + 0x2c) = iVar6 + 0xf;
        FUN_00438890();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'W':
        FUN_00438370();
        puVar4 = (uint *)FUN_00436ee0(0);
        break;
      case 'c':
        iVar6 = FUN_00437640();
        if (iVar6 == 0) {
          return (uint *)0x0;
        }
        iVar6 = FUN_00437640();
        if (iVar6 != 0) {
          MASKED();
          puVar4 = (uint *)FUN_00436ee0(0);
          return puVar4;
        }
        return (uint *)0x0;
      case 'h':
        iVar6 = FUN_00437640();
        if (iVar6 != 0) {
          MASKED();
          puVar4 = (uint *)FUN_00436ee0(0);
          return puVar4;
        }
        return (uint *)0x0;
      case 'v':
        iVar6 = FUN_00437640();
        if (iVar6 == 0) {
          return (uint *)0x0;
        }
        MASKED();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      }
      return puVar4;
    }
    if (*pcVar2 != 'G') {
      return (uint *)0x0;
    }
    *(char **)(param_1 + 0xc) = pcVar2 + 1;
    if (pcVar2[1] != '\0') {
      *(char **)(param_1 + 0xc) = pcVar2 + 2;
      switch(pcVar2[1]) {
      case 'A':
        MASKED();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      default:
        return (uint *)0x0;
      case 'R':
        FUN_00438370();
        uVar10 = FUN_00437190();
        puVar4 = (uint *)FUN_00436ee0(uVar10);
        return puVar4;
      case 'T':
        if ((pcVar2[2] != '\0') && (*(char **)(param_1 + 0xc) = pcVar2 + 3, pcVar2[2] == 'n')) {
          MASKED();
          puVar4 = (uint *)FUN_00436ee0(0);
          return puVar4;
        }
        MASKED();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      case 'V':
        FUN_00438370();
        puVar4 = (uint *)FUN_00436ee0(0);
        return puVar4;
      case 'r':
        goto code_r0x00439dc8;
      }
    }
    return (uint *)0x0;
  }
  puVar4 = (uint *)FUN_00438370();
  if (puVar4 == (uint *)0x0) {
    return (uint *)0x0;
  }
  if ((param_2 != 0) && ((*(byte *)(param_1 + 8) & 1) == 0)) {
    do {
      uVar3 = *puVar4;
      if (uVar3 != 0x4c) {
        if (uVar3 < 0x4d) {
          if (4 < uVar3 - 0x1c) goto LAB_00439c16;
        }
        else if (1 < uVar3 - 0x4e) {
LAB_00439c16:
          if (uVar3 != 2) {
            return puVar4;
          }
          puVar9 = (uint *)puVar4[3];
          uVar3 = *puVar9;
          do {
            if (uVar3 != 0x4c) {
              if (uVar3 < 0x4d) {
                if (4 < uVar3 - 0x1c) {
                  return puVar4;
                }
              }
              else if (1 < uVar3 - 0x4e) {
                return puVar4;
              }
            }
            puVar9 = (uint *)puVar9[2];
            uVar3 = *puVar9;
            puVar4[3] = (uint)puVar9;
          } while( true );
        }
      }
      puVar4 = (uint *)puVar4[2];
    } while( true );
  }
  if (**(char **)(param_1 + 0xc) == '\0') {
    return puVar4;
  }
  puVar9 = puVar4;
  if (**(char **)(param_1 + 0xc) == 'E') {
    return puVar4;
  }
  do {
    uVar3 = *puVar9;
    if (uVar3 < 0x21) {
      if (0x1b < uVar3) goto LAB_00439d5f;
      if (uVar3 != 2) {
        if ((uVar3 == 4) && (puVar9 = (uint *)puVar9[2], puVar9 != (uint *)0x0)) goto LAB_00439cbd;
        break;
      }
      puVar9 = (uint *)puVar9[3];
    }
    else {
      if ((uVar3 != 0x4c) && ((uVar3 < 0x4c || (1 < uVar3 - 0x4e)))) break;
LAB_00439d5f:
      puVar9 = (uint *)puVar9[2];
    }
  } while (puVar9 != (uint *)0x0);
LAB_00439d08:
  piVar5 = (int *)FUN_004396a0();
  if (piVar5 == (int *)0x0) {
    return (uint *)0x0;
  }
  if (((param_2 == 0) && (*puVar4 == 2)) && (*piVar5 == 0x29)) {
    piVar5[2] = 0;
  }
  puVar4 = (uint *)FUN_00436ee0(piVar5);
  return puVar4;
LAB_00439cbd:
  uVar3 = *puVar9;
  if (8 < uVar3) goto LAB_00439d08;
  if (((6 < uVar3) || (1 < uVar3 - 1)) || (puVar9 = (uint *)puVar9[3], puVar9 == (uint *)0x0))
  goto LAB_00439d08;
  goto LAB_00439cbd;
code_r0x00439dc8:
  iVar6 = FUN_004370c0();
  if (iVar6 < 2) {
    return (uint *)0x0;
  }
  pcVar2 = *(char **)(param_1 + 0xc);
  if (*pcVar2 == '\0') {
    return (uint *)0x0;
  }
  pcVar13 = pcVar2 + 1;
  *(char **)(param_1 + 0xc) = pcVar13;
  if (*pcVar2 != '_') {
    return (uint *)0x0;
  }
  iVar6 = iVar6 + -1;
  puVar8 = (undefined4 *)0x0;
  do {
    if (*pcVar13 == '\0') {
      return (uint *)0x0;
    }
    if (*pcVar13 == '$') {
      cVar1 = pcVar13[1];
      if (cVar1 == 'S') {
        uVar10 = 0x2f;
      }
      else if (cVar1 == '_') {
        uVar10 = 0x2e;
      }
      else {
        if (cVar1 != '$') {
          return (uint *)0x0;
        }
        uVar10 = 0x24;
      }
      iVar11 = *(int *)(param_1 + 0x14);
      pcVar13 = (char *)(*(int *)(param_1 + 0xc) + 2);
      if (*(int *)(param_1 + 0x18) <= iVar11) {
        *(char **)(param_1 + 0xc) = pcVar13;
        return (uint *)0x0;
      }
      iVar6 = iVar6 + -2;
      puVar12 = (undefined4 *)(iVar11 * 0x10 + *(int *)(param_1 + 0x10));
      puVar12[1] = 0;
      *(int *)(param_1 + 0x14) = iVar11 + 1;
      *puVar12 = 0x40;
      puVar12[2] = uVar10;
      *(char **)(param_1 + 0xc) = pcVar13;
    }
    else {
      iVar11 = 0;
      do {
        iVar11 = iVar11 + 1;
        if (iVar6 <= iVar11) {
          iVar7 = *(int *)(param_1 + 0x14);
          if (*(int *)(param_1 + 0x18) <= iVar7) goto code_r0x0043a2a8;
          goto code_r0x0043a253;
        }
      } while ((pcVar13[iVar11] != '$') && (pcVar13[iVar11] != '\0'));
      iVar7 = *(int *)(param_1 + 0x14);
      if (*(int *)(param_1 + 0x18) <= iVar7) {
code_r0x0043a2a8:
        *(int *)(param_1 + 0xc) = *(int *)(param_1 + 0xc) + iVar11;
        return (uint *)0x0;
      }
code_r0x0043a253:
      iVar6 = iVar6 - iVar11;
      puVar12 = (undefined4 *)(iVar7 * 0x10 + *(int *)(param_1 + 0x10));
      puVar12[1] = 0;
      *(int *)(param_1 + 0x14) = iVar7 + 1;
      puVar12[2] = pcVar13;
      iVar7 = *(int *)(param_1 + 0xc);
      puVar12[1] = 0;
      pcVar13 = (char *)(iVar7 + iVar11);
      *puVar12 = 0;
      puVar12[3] = iVar11;
      *(char **)(param_1 + 0xc) = pcVar13;
    }
    if ((puVar8 != (undefined4 *)0x0) &&
       (puVar12 = (undefined4 *)FUN_00436ee0(puVar12), puVar12 == (undefined4 *)0x0)) {
      return (uint *)0x0;
    }
    puVar8 = puVar12;
    if (iVar6 < 1) {
      puVar4 = (uint *)FUN_00436ee0(0);
      return puVar4;
    }
  } while( true );
}

