
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int demangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)

{
  char num [2];
  string temp;
  string last_name;
  
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)

{
  char *pcVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  size_t __n;
  void *__dest;
  char *pcVar5;
  int iVar6;
  int local_50;
  char local_36;
  undefined1 local_35;
  void *local_34;
  void *local_30;
  undefined4 local_2c;
  void *local_28;
  void *local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x232fcd;
  uVar3 = FUN_0022eff0();
  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {
    param_4 = param_1[0xb] & 1;
  }
  pcVar5 = (char *)*param_2;
  local_2c = 0;
  local_30 = (void *)0x0;
  local_34 = (void *)0x0;
  local_20 = 0;
  local_24 = (void *)0x0;
  local_28 = (void *)0x0;
  if (*pcVar5 == 'K') {
    *param_2 = (int)(pcVar5 + 1);
    iVar4 = FUN_0022f300();
    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {
      local_50 = 1;
      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);
      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
        FUN_0022f6a0();
      }
      goto LAB_002331b0;
    }
  }
  else {
    cVar2 = pcVar5[1];
    if ('0' < cVar2) {
      if (cVar2 < ':') {
        local_35 = 0;
        local_36 = cVar2;
        iVar4 = strtol(&local_36,(char **)0x0,10);
        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');
      }
      else {
        if (cVar2 != '_') {
          return 0;
        }
        *param_2 = (int)(pcVar5 + 1);
        iVar4 = FUN_0022f300();
        if (iVar4 == -1) {
          return 0;
        }
      }
      local_50 = 1;
      for (; 0 < iVar4; iVar4 = iVar4 + -1) {
        pcVar1 = (char *)*param_2;
        cVar2 = *pcVar1;
        pcVar5 = pcVar1;
        if (cVar2 == '_') {
          pcVar5 = pcVar1 + 1;
          *param_2 = (int)pcVar5;
          cVar2 = pcVar1[1];
        }
        local_24 = local_28;
        if (cVar2 == 't') {
          local_50 = FUN_002328c0(&local_28,1,0);
          if (local_50 != 0) goto LAB_00233160;
LAB_00233390:
          local_50 = 0;
          break;
        }
        if (cVar2 == 'K') {
          *param_2 = (int)(pcVar5 + 1);
          iVar6 = FUN_0022f300();
          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;
          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);
          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
            FUN_0022f6a0();
          }
        }
        else {
          if ((*param_1 & 0x2000) == 0) {
            if (local_28 != (void *)0x0) {
              free(local_28);
              local_24 = (void *)0x0;
              local_20 = 0;
            }
            local_28 = local_24;
            local_50 = FUN_00230c20();
            if (local_50 == 0) goto LAB_00233390;
            FUN_0022f7f0();
          }
          else {
            __n = FUN_0022f250();
            if (__n == 0xffffffff) goto LAB_00233390;
            __dest = (void *)FUN_00246130(__n + 1);
            memcpy(__dest,(void *)*param_2,__n);
            *(undefined1 *)((int)__dest + __n) = 0;
            pcVar5 = (char *)FUN_00230360(__dest,*param_1);
            if (pcVar5 == (char *)0x0) {
              iVar6 = *param_2;
              if (__n != 0) {
                FUN_0022f5c0();
                iVar6 = *param_2;
              }
            }
            else {
              if (*pcVar5 != '\0') {
                FUN_0022f6a0();
              }
              free(pcVar5);
              iVar6 = *param_2;
            }
            free(__dest);
            *param_2 = iVar6 + __n;
          }
LAB_00233160:
          FUN_0022f090();
        }
        if (iVar4 != 1) {
          FUN_0022f6a0();
        }
      }
LAB_002331b0:
      FUN_0022f4d0(uVar3);
      if (param_4 != 0) {
        FUN_0022f6a0();
        if ((param_1[0xb] & 1) != 0) {
          FUN_0022f6a0();
        }
        FUN_0022f7f0();
      }
      if (param_5 == 0) {
        if (*param_3 != param_3[1]) {
          FUN_0022f6a0();
        }
        if (local_34 != local_30) {
          FUN_0022f600();
        }
      }
      else {
        FUN_0022f7f0();
      }
      if (local_28 != (void *)0x0) {
        free(local_28);
        local_24 = (void *)0x0;
        local_20 = 0;
        local_28 = (void *)0x0;
      }
      if (local_34 != (void *)0x0) {
        free(local_34);
        return local_50;
      }
      return local_50;
    }
  }
  return 0;
}


PUSH EBP
PUSH EDI
MOV EDI,EDX
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x0003a210
ADD EBX,0x1e1033
SUB ESP,0x4c
MOV dword ptr [ESP + 0x18],ECX
CALL 0x0022eff0
MOV ECX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x1c],EAX
TEST ECX,ECX
JZ 0x00232ffb
MOV EAX,dword ptr [ESI + 0x28]
AND EAX,0x1
MOV dword ptr [ESP + 0x60],EAX
JZ 0x002332b0
MOV EAX,dword ptr [EDI]
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x28],0x0
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x34],0x0
CMP byte ptr [EAX],0x4b
JZ 0x00233408
MOVZX EDX,byte ptr [EAX + 0x1]
CMP DL,0x31
JL 0x00233068
CMP DL,0x39
JLE 0x00233080
MOV dword ptr [ESP + 0xc],0x0
CMP DL,0x5f
JNZ 0x00233070
ADD EAX,0x1
MOV dword ptr [EDI],EAX
MOV EAX,EDI
CALL 0x0022f300
CMP EAX,-0x1
JNZ 0x002330ae
LEA ESI,[ESI]
MOV dword ptr [ESP + 0xc],0x0
MOV EAX,dword ptr [ESP + 0xc]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV byte ptr [ESP + 0x26],DL
SUB ESP,0x4
MOV byte ptr [ESP + 0x2b],0x0
PUSH 0xa
PUSH 0x0
LEA EAX,[ESP + 0x32]
PUSH EAX
CALL 0x0002c6c0
MOV EDX,dword ptr [EDI]
XOR ECX,ECX
ADD ESP,0x10
CMP byte ptr [EDX + 0x2],0x5f
SETZ CL
LEA EDX,[EDX + ECX*0x1 + 0x2]
MOV dword ptr [EDI],EDX
MOV EBP,EAX
LEA EAX,[ESP + 0x34]
MOV dword ptr [ESP + 0xc],0x1
MOV dword ptr [ESP + 0x4],EAX
TEST EBP,EBP
JLE 0x002331b0
LEA ESI,[ESI]
NOP
MOV ECX,dword ptr [ESP + 0x34]
MOV EDX,dword ptr [EDI]
MOV dword ptr [ESP + 0x38],ECX
MOVZX EAX,byte ptr [EDX]
CMP AL,0x5f
JNZ 0x002330f2
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x8],EAX
MOV dword ptr [EDI],EAX
MOVZX EAX,byte ptr [EDX + 0x1]
MOV EDX,dword ptr [ESP + 0x8]
CMP AL,0x74
JZ 0x00233360
CMP AL,0x4b
JZ 0x002333a0
TEST dword ptr [ESI],0x2000
JNZ 0x002332c0
TEST ECX,ECX
JZ 0x00233136
SUB ESP,0xc
PUSH ECX
CALL 0x0002c700
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x44],0x0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,EDI
MOV EAX,ESI
CALL 0x00230c20
MOV dword ptr [ESP + 0xc],EAX
TEST EAX,EAX
JZ 0x00233390
MOV ECX,dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x4]
LEA EAX,[ESP + 0x28]
CALL 0x0022f7f0
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,EAX
SUB ECX,EDX
CMP EDX,EAX
MOV EAX,0x0
CMOVZ ECX,EAX
MOV EAX,ESI
CALL 0x0022f090
CMP EBP,0x1
JZ 0x0023319d
LEA EAX,[EBX + 0xffeeca23]
TEST byte ptr [ESI],0x4
LEA EDX,[EBX + 0xfff000d9]
CMOVNZ EDX,EAX
LEA EAX,[ESP + 0x28]
CALL 0x0022f6a0
SUB EBP,0x1
TEST EBP,EBP
JG 0x002330d0
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,EAX
SUB ECX,EDX
CMP EDX,EAX
MOV EAX,0x0
CMOVZ ECX,EAX
SUB ESP,0xc
LEA EAX,[ESI + 0xc]
PUSH dword ptr [ESP + 0x28]
CALL 0x0022f4d0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x60]
TEST EDX,EDX
JZ 0x00233216
TEST byte ptr [ESI],0x4
LEA EAX,[EBX + 0xfff000d9]
LEA EDX,[EBX + 0xffeeca23]
CMOVZ EDX,EAX
LEA EDI,[ESP + 0x28]
MOV EAX,EDI
CALL 0x0022f6a0
TEST byte ptr [ESI + 0x2c],0x1
JNZ 0x00233453
MOV ECX,dword ptr [ESP + 0x38]
LEA EDX,[ESP + 0x34]
MOV EAX,EDI
CALL 0x0022f7f0
MOV EAX,dword ptr [ESP + 0x64]
TEST EAX,EAX
JNZ 0x00233468
MOV EAX,dword ptr [ESP + 0x18]
MOV EDI,dword ptr [EAX + 0x4]
CMP dword ptr [EAX],EDI
JZ 0x00233248
LEA EAX,[EBX + 0xfff000d9]
TEST byte ptr [ESI],0x4
LEA EDX,[EBX + 0xffeeca23]
CMOVZ EDX,EAX
LEA EAX,[ESP + 0x28]
CALL 0x0022f6a0
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x2c]
CMP EDX,ECX
JZ 0x0023325f
MOV EAX,dword ptr [ESP + 0x18]
SUB ECX,EDX
CALL 0x0022f600
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x0023328b
SUB ESP,0xc
PUSH EAX
CALL 0x0002c700
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x44],0x0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x00233070
SUB ESP,0xc
PUSH EAX
CALL 0x0002c700
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x2c]
AND EAX,0x1
MOV dword ptr [ESP + 0x60],EAX
JMP 0x00232ffb
MOV EAX,EDI
CALL 0x0022f250
CMP EAX,-0x1
JZ 0x00233390
SUB ESP,0xc
MOV dword ptr [ESP + 0x14],EAX
ADD EAX,0x1
PUSH EAX
CALL 0x00246130
ADD ESP,0xc
PUSH dword ptr [ESP + 0xc]
PUSH dword ptr [EDI]
MOV dword ptr [ESP + 0x1c],EAX
PUSH EAX
CALL 0x0002c2d0
MOV ECX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x18]
MOV byte ptr [ECX + EAX*0x1],0x0
POP EAX
POP EDX
PUSH dword ptr [ESI]
PUSH ECX
CALL 0x00230360
ADD ESP,0x10
MOV ECX,EAX
TEST EAX,EAX
JZ 0x002333e0
CMP byte ptr [EAX],0x0
JZ 0x0023332e
MOV EDX,ECX
LEA EAX,[ESP + 0x28]
MOV dword ptr [ESP + 0x14],ECX
CALL 0x0022f6a0
MOV ECX,dword ptr [ESP + 0x14]
SUB ESP,0xc
PUSH ECX
CALL 0x0002c700
MOV EDX,dword ptr [EDI]
ADD ESP,0x10
MOV dword ptr [ESP + 0x14],EDX
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x0002c700
MOV EDX,dword ptr [ESP + 0x24]
ADD EDX,dword ptr [ESP + 0x18]
ADD ESP,0x10
MOV dword ptr [EDI],EDX
JMP 0x00233160
LEA ECX,[ESP + 0x28]
SUB ESP,0x4
MOV EDX,EDI
MOV EAX,ESI
PUSH 0x0
PUSH 0x1
PUSH dword ptr [ESP + 0x10]
CALL 0x002328c0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00233160
LEA ESI,[ESI]
NOP
MOV dword ptr [ESP + 0xc],0x0
JMP 0x002331b0
ADD EDX,0x1
MOV EAX,EDI
MOV dword ptr [EDI],EDX
CALL 0x0022f300
CMP EAX,-0x1
JZ 0x00233390
CMP dword ptr [ESI + 0x10],EAX
JLE 0x00233390
MOV EDX,dword ptr [ESI + 0x8]
MOV EDX,dword ptr [EDX + EAX*0x4]
TEST EDX,EDX
JZ 0x0023317d
CMP byte ptr [EDX],0x0
JZ 0x0023317d
LEA EAX,[ESP + 0x28]
CALL 0x0022f6a0
JMP 0x0023317d
MOV ECX,dword ptr [ESP + 0x8]
MOV EDX,dword ptr [EDI]
TEST ECX,ECX
JZ 0x0023333c
MOV ECX,dword ptr [ESP + 0x8]
LEA EAX,[ESP + 0x28]
CALL 0x0022f5c0
MOV EDX,dword ptr [EDI]
JMP 0x0023333c
ADD EAX,0x1
MOV dword ptr [EDI],EAX
MOV EAX,EDI
CALL 0x0022f300
CMP EAX,-0x1
JZ 0x00233068
CMP dword ptr [ESI + 0x10],EAX
JLE 0x00233068
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0xc],0x1
MOV EDX,dword ptr [EDX + EAX*0x4]
TEST EDX,EDX
JZ 0x002331b0
CMP byte ptr [EDX],0x0
JZ 0x002331b0
LEA EAX,[ESP + 0x28]
CALL 0x0022f6a0
JMP 0x002331b0
LEA EDX,[EBX + 0xffefdc92]
MOV EAX,EDI
CALL 0x0022f6a0
JMP 0x00233207
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x18]
LEA EDX,[ESP + 0x28]
CALL 0x0022f7f0
JMP 0x0023325f
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}\n\n" comment (function_definition "int __regparm3 FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" identifier (parameter_list "(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "char local_36;" primitive_type identifier ;) (declaration "undefined1 local_35;" type_identifier identifier ;) (declaration "void *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "void *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "void *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x232fcd;" (assignment_expression "uStack_14 = 0x232fcd" identifier = number_literal) ;) (expression_statement "uVar3 = FUN_0022eff0();" (assignment_expression "uVar3 = FUN_0022eff0()" identifier = (call_expression "FUN_0022eff0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }" if (parenthesized_expression "((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0))" ( (binary_expression "(param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_4 = param_1[10] & 1, param_4 == 0)" ( (comma_expression "param_4 = param_1[10] & 1, param_4 == 0" (assignment_expression "param_4 = param_1[10] & 1" identifier = (binary_expression "param_1[10] & 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) & number_literal)) , (binary_expression "param_4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_4 = param_1[0xb] & 1;\n  }" { (expression_statement "param_4 = param_1[0xb] & 1;" (assignment_expression "param_4 = param_1[0xb] & 1" identifier = (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal)) ;) })) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_30 = (void *)0x0;" (assignment_expression "local_30 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = (void *)0x0;" (assignment_expression "local_34 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" if (parenthesized_expression "(*pcVar5 == 'K')" ( (binary_expression "*pcVar5 == 'K'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'K'" ' character ')) )) (compound_statement "{\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_0022f300();" (assignment_expression "iVar4 = FUN_0022f300()" identifier = (call_expression "FUN_0022f300()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }" if (parenthesized_expression "((iVar4 != -1) && (iVar4 < (int)param_1[4]))" ( (binary_expression "(iVar4 != -1) && (iVar4 < (int)param_1[4])" (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar4 < (int)param_1[4])" ( (binary_expression "iVar4 < (int)param_1[4]" identifier < (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar4 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar4 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar4 * 4)" * (cast_expression "(char **)(param_1[2] + iVar4 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar4 * 4)" ( (binary_expression "param_1[2] + iVar4 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar4 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_0022f6a0();\n      }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_002331b0;" goto statement_identifier ;) })) }) (else_clause "else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" else (compound_statement "{\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" { (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (if_statement "if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" if (parenthesized_expression "('0' < cVar2)" ( (binary_expression "'0' < cVar2" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" { (if_statement "if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(cVar2 < ':')" ( (binary_expression "cVar2 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }" { (expression_statement "local_35 = 0;" (assignment_expression "local_35 = 0" identifier = number_literal) ;) (expression_statement "local_36 = cVar2;" (assignment_expression "local_36 = cVar2" identifier = identifier) ;) (expression_statement "iVar4 = strtol(&local_36,(char **)0x0,10);" (assignment_expression "iVar4 = strtol(&local_36,(char **)0x0,10)" identifier = (call_expression "strtol(&local_36,(char **)0x0,10)" identifier (argument_list "(&local_36,(char **)0x0,10)" ( (pointer_expression "&local_36" & identifier) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');" (assignment_expression "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) + (call_expression "(uint)(*(char *)(*param_2 + 2) == '_')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(*param_2 + 2) == '_')" ( (binary_expression "*(char *)(*param_2 + 2) == '_'" (pointer_expression "*(char *)(*param_2 + 2)" * (cast_expression "(char *)(*param_2 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 2)" ( (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'_'" ' character ')) ))))) ;) }) (else_clause "else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" else (compound_statement "{\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" { (if_statement "if (cVar2 != '_') {\n          return 0;\n        }" if (parenthesized_expression "(cVar2 != '_')" ( (binary_expression "cVar2 != '_'" identifier != (char_literal "'_'" ' character ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_0022f300();" (assignment_expression "iVar4 = FUN_0022f300()" identifier = (call_expression "FUN_0022f300()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == -1) {\n          return 0;\n        }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (for_statement "for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }" for ( ; (binary_expression "0 < iVar4" number_literal < identifier) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }" { (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "cVar2 = *pcVar1;" (assignment_expression "cVar2 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (expression_statement "pcVar5 = pcVar1;" (assignment_expression "pcVar5 = pcVar1" identifier = identifier) ;) (if_statement "if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" if (parenthesized_expression "(cVar2 == '_')" ( (binary_expression "cVar2 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" { (expression_statement "pcVar5 = pcVar1 + 1;" (assignment_expression "pcVar5 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pcVar5;" (assignment_expression "*param_2 = (int)pcVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "cVar2 = pcVar1[1];" (assignment_expression "cVar2 = pcVar1[1]" identifier = (subscript_expression "pcVar1[1]" identifier [ number_literal ])) ;) })) (expression_statement "local_24 = local_28;" (assignment_expression "local_24 = local_28" identifier = identifier) ;) (if_statement "if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }" if (parenthesized_expression "(cVar2 == 't')" ( (binary_expression "cVar2 == 't'" identifier == (char_literal "'t'" ' character ')) )) (compound_statement "{\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }" { (expression_statement "local_50 = FUN_002328c0(&local_28,1,0);" (assignment_expression "local_50 = FUN_002328c0(&local_28,1,0)" identifier = (call_expression "FUN_002328c0(&local_28,1,0)" identifier (argument_list "(&local_28,1,0)" ( (pointer_expression "&local_28" & identifier) , number_literal , number_literal )))) ;) (if_statement "if (local_50 != 0) goto LAB_00233160;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00233160;" goto statement_identifier ;)) (labeled_statement "LAB_00233390:\n          local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (if_statement "if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" if (parenthesized_expression "(cVar2 == 'K')" ( (binary_expression "cVar2 == 'K'" identifier == (char_literal "'K'" ' character ')) )) (compound_statement "{\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar6 = FUN_0022f300();" (assignment_expression "iVar6 = FUN_0022f300()" identifier = (call_expression "FUN_0022f300()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;" if (parenthesized_expression "((iVar6 == -1) || ((int)param_1[4] <= iVar6))" ( (binary_expression "(iVar6 == -1) || ((int)param_1[4] <= iVar6)" (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) || (parenthesized_expression "((int)param_1[4] <= iVar6)" ( (binary_expression "(int)param_1[4] <= iVar6" (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) <= identifier) ))) )) (goto_statement "goto LAB_00233390;" goto statement_identifier ;)) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar6 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar6 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar6 * 4)" * (cast_expression "(char **)(param_1[2] + iVar6 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar6 * 4)" ( (binary_expression "param_1[2] + iVar6 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar6 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            FUN_0022f6a0();\n          }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" else (compound_statement "{\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" { (if_statement "if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" if (parenthesized_expression "((*param_1 & 0x2000) == 0)" ( (binary_expression "(*param_1 & 0x2000) == 0" (parenthesized_expression "(*param_1 & 0x2000)" ( (binary_expression "*param_1 & 0x2000" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }" { (if_statement "if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) })) (expression_statement "local_28 = local_24;" (assignment_expression "local_28 = local_24" identifier = identifier) ;) (expression_statement "local_50 = FUN_00230c20();" (assignment_expression "local_50 = FUN_00230c20()" identifier = (call_expression "FUN_00230c20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_50 == 0) goto LAB_00233390;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00233390;" goto statement_identifier ;)) (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" else (compound_statement "{\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" { (expression_statement "__n = FUN_0022f250();" (assignment_expression "__n = FUN_0022f250()" identifier = (call_expression "FUN_0022f250()" identifier (argument_list "()" ( )))) ;) (if_statement "if (__n == 0xffffffff) goto LAB_00233390;" if (parenthesized_expression "(__n == 0xffffffff)" ( (binary_expression "__n == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00233390;" goto statement_identifier ;)) (expression_statement "__dest = (void *)FUN_00246130(__n + 1);" (assignment_expression "__dest = (void *)FUN_00246130(__n + 1)" identifier = (cast_expression "(void *)FUN_00246130(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246130(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" identifier (argument_list "(__dest,(void *)*param_2,__n)" ( identifier , (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "pcVar5 = (char *)FUN_00230360(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_00230360(__dest,*param_1)" identifier = (cast_expression "(char *)FUN_00230360(__dest,*param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00230360(__dest,*param_1)" identifier (argument_list "(__dest,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }" { (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }" { (expression_statement "FUN_0022f5c0();" (call_expression "FUN_0022f5c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) }) (else_clause "else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" else (compound_statement "{\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" { (if_statement "if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }" if (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_0022f6a0();\n              }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (expression_statement "*param_2 = iVar6 + __n;" (assignment_expression "*param_2 = iVar6 + __n" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar6 + __n" identifier + identifier)) ;) }))) (labeled_statement "LAB_00233160:\n          FUN_0022f090();" statement_identifier : (expression_statement "FUN_0022f090();" (call_expression "FUN_0022f090()" identifier (argument_list "()" ( ))) ;)) }))) (if_statement "if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n          FUN_0022f6a0();\n        }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) })) (labeled_statement "LAB_002331b0:\n      FUN_0022f4d0(uVar3);" statement_identifier : (expression_statement "FUN_0022f4d0(uVar3);" (call_expression "FUN_0022f4d0(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;)) (if_statement "if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }" if (parenthesized_expression "((param_1[0xb] & 1) != 0)" ( (binary_expression "(param_1[0xb] & 1) != 0" (parenthesized_expression "(param_1[0xb] & 1)" ( (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n          FUN_0022f6a0();\n        }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }" { (if_statement "if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }" if (parenthesized_expression "(*param_3 != param_3[1])" ( (binary_expression "*param_3 != param_3[1]" (pointer_expression "*param_3" * identifier) != (subscript_expression "param_3[1]" identifier [ number_literal ])) )) (compound_statement "{\n          FUN_0022f6a0();\n        }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_34 != local_30) {\n          FUN_0022f600();\n        }" if (parenthesized_expression "(local_34 != local_30)" ( (binary_expression "local_34 != local_30" identifier != identifier) )) (compound_statement "{\n          FUN_0022f600();\n        }" { (expression_statement "FUN_0022f600();" (call_expression "FUN_0022f600()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n        FUN_0022f7f0();\n      }" else (compound_statement "{\n        FUN_0022f7f0();\n      }" { (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }" if (parenthesized_expression "(local_34 != (void *)0x0)" ( (binary_expression "local_34 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_34);\n        return local_50;\n      }" { (expression_statement "free(local_34);" (call_expression "free(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (return_statement "return local_50;" return identifier ;) })) (return_statement "return local_50;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint demangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)\n\n{\n  char num [2];\n  string temp;\n  string last_name;\n  \n}\n\n" comment (function_definition "int demangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)\n\n{\n  char num [2];\n  string temp;\n  string last_name;\n  \n}" primitive_type (function_declarator "demangle_qualified(work_stuff *work,char **mangled,string *result,int isfuncname,int append)" identifier (parameter_list "(work_stuff *work,char **mangled,string *result,int isfuncname,int append)" ( (parameter_declaration "work_stuff *work" type_identifier (pointer_declarator "*work" * identifier)) , (parameter_declaration "char **mangled" primitive_type (pointer_declarator "**mangled" * (pointer_declarator "*mangled" * identifier))) , (parameter_declaration "string *result" type_identifier (pointer_declarator "*result" * identifier)) , (parameter_declaration "int isfuncname" primitive_type identifier) , (parameter_declaration "int append" primitive_type identifier) ))) (compound_statement "{\n  char num [2];\n  string temp;\n  string last_name;\n  \n}" { (declaration "char num [2];" primitive_type (array_declarator "num [2]" identifier [ number_literal ]) ;) (declaration "string temp;" type_identifier identifier ;) (declaration "string last_name;" type_identifier identifier ;) })))
(translation_unit "int __regparm3 FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}\n\n" (function_definition "int __regparm3 FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" identifier (parameter_list "(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "uint param_4" type_identifier identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "char local_36;" primitive_type identifier ;) (declaration "undefined1 local_35;" type_identifier identifier ;) (declaration "void *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "void *local_30;" primitive_type (pointer_declarator "*local_30" * identifier) ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "void *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x232fcd;" (assignment_expression "uStack_14 = 0x232fcd" identifier = number_literal) ;) (expression_statement "uVar3 = FUN_0022eff0();" (assignment_expression "uVar3 = FUN_0022eff0()" identifier = (call_expression "FUN_0022eff0()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }" if (parenthesized_expression "((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0))" ( (binary_expression "(param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "(param_4 = param_1[10] & 1, param_4 == 0)" ( (comma_expression "param_4 = param_1[10] & 1, param_4 == 0" (assignment_expression "param_4 = param_1[10] & 1" identifier = (binary_expression "param_1[10] & 1" (subscript_expression "param_1[10]" identifier [ number_literal ]) & number_literal)) , (binary_expression "param_4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n    param_4 = param_1[0xb] & 1;\n  }" { (expression_statement "param_4 = param_1[0xb] & 1;" (assignment_expression "param_4 = param_1[0xb] & 1" identifier = (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal)) ;) })) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_30 = (void *)0x0;" (assignment_expression "local_30 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = (void *)0x0;" (assignment_expression "local_34 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" if (parenthesized_expression "(*pcVar5 == 'K')" ( (binary_expression "*pcVar5 == 'K'" (pointer_expression "*pcVar5" * identifier) == (char_literal "'K'" ' character ')) )) (compound_statement "{\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_0022f300();" (assignment_expression "iVar4 = FUN_0022f300()" identifier = (call_expression "FUN_0022f300()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }" if (parenthesized_expression "((iVar4 != -1) && (iVar4 < (int)param_1[4]))" ( (binary_expression "(iVar4 != -1) && (iVar4 < (int)param_1[4])" (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar4 < (int)param_1[4])" ( (binary_expression "iVar4 < (int)param_1[4]" identifier < (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }" { (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar4 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar4 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar4 * 4)" * (cast_expression "(char **)(param_1[2] + iVar4 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar4 * 4)" ( (binary_expression "param_1[2] + iVar4 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar4 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_0022f6a0();\n      }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_002331b0;" goto statement_identifier ;) })) }) (else_clause "else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" else (compound_statement "{\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" { (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (if_statement "if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" if (parenthesized_expression "('0' < cVar2)" ( (binary_expression "'0' < cVar2" (char_literal "'0'" ' character ') < identifier) )) (compound_statement "{\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" { (if_statement "if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" if (parenthesized_expression "(cVar2 < ':')" ( (binary_expression "cVar2 < ':'" identifier < (char_literal "':'" ' character ')) )) (compound_statement "{\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }" { (expression_statement "local_35 = 0;" (assignment_expression "local_35 = 0" identifier = number_literal) ;) (expression_statement "local_36 = cVar2;" (assignment_expression "local_36 = cVar2" identifier = identifier) ;) (expression_statement "iVar4 = strtol(&local_36,(char **)0x0,10);" (assignment_expression "iVar4 = strtol(&local_36,(char **)0x0,10)" identifier = (call_expression "strtol(&local_36,(char **)0x0,10)" identifier (argument_list "(&local_36,(char **)0x0,10)" ( (pointer_expression "&local_36" & identifier) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');" (assignment_expression "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) + (call_expression "(uint)(*(char *)(*param_2 + 2) == '_')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(char *)(*param_2 + 2) == '_')" ( (binary_expression "*(char *)(*param_2 + 2) == '_'" (pointer_expression "*(char *)(*param_2 + 2)" * (cast_expression "(char *)(*param_2 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 2)" ( (binary_expression "*param_2 + 2" (pointer_expression "*param_2" * identifier) + number_literal) )))) == (char_literal "'_'" ' character ')) ))))) ;) }) (else_clause "else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" else (compound_statement "{\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" { (if_statement "if (cVar2 != '_') {\n          return 0;\n        }" if (parenthesized_expression "(cVar2 != '_')" ( (binary_expression "cVar2 != '_'" identifier != (char_literal "'_'" ' character ')) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_0022f300();" (assignment_expression "iVar4 = FUN_0022f300()" identifier = (call_expression "FUN_0022f300()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == -1) {\n          return 0;\n        }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;) (for_statement "for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }" for ( ; (binary_expression "0 < iVar4" number_literal < identifier) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }" { (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "cVar2 = *pcVar1;" (assignment_expression "cVar2 = *pcVar1" identifier = (pointer_expression "*pcVar1" * identifier)) ;) (expression_statement "pcVar5 = pcVar1;" (assignment_expression "pcVar5 = pcVar1" identifier = identifier) ;) (if_statement "if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" if (parenthesized_expression "(cVar2 == '_')" ( (binary_expression "cVar2 == '_'" identifier == (char_literal "'_'" ' character ')) )) (compound_statement "{\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" { (expression_statement "pcVar5 = pcVar1 + 1;" (assignment_expression "pcVar5 = pcVar1 + 1" identifier = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pcVar5;" (assignment_expression "*param_2 = (int)pcVar5" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "cVar2 = pcVar1[1];" (assignment_expression "cVar2 = pcVar1[1]" identifier = (subscript_expression "pcVar1[1]" identifier [ number_literal ])) ;) })) (expression_statement "local_24 = local_28;" (assignment_expression "local_24 = local_28" identifier = identifier) ;) (if_statement "if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }" if (parenthesized_expression "(cVar2 == 't')" ( (binary_expression "cVar2 == 't'" identifier == (char_literal "'t'" ' character ')) )) (compound_statement "{\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }" { (expression_statement "local_50 = FUN_002328c0(&local_28,1,0);" (assignment_expression "local_50 = FUN_002328c0(&local_28,1,0)" identifier = (call_expression "FUN_002328c0(&local_28,1,0)" identifier (argument_list "(&local_28,1,0)" ( (pointer_expression "&local_28" & identifier) , number_literal , number_literal )))) ;) (if_statement "if (local_50 != 0) goto LAB_00233160;" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00233160;" goto statement_identifier ;)) (labeled_statement "LAB_00233390:\n          local_50 = 0;" statement_identifier : (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;) })) (if_statement "if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" if (parenthesized_expression "(cVar2 == 'K')" ( (binary_expression "cVar2 == 'K'" identifier == (char_literal "'K'" ' character ')) )) (compound_statement "{\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }" { (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar6 = FUN_0022f300();" (assignment_expression "iVar6 = FUN_0022f300()" identifier = (call_expression "FUN_0022f300()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;" if (parenthesized_expression "((iVar6 == -1) || ((int)param_1[4] <= iVar6))" ( (binary_expression "(iVar6 == -1) || ((int)param_1[4] <= iVar6)" (parenthesized_expression "(iVar6 == -1)" ( (binary_expression "iVar6 == -1" identifier == number_literal) )) || (parenthesized_expression "((int)param_1[4] <= iVar6)" ( (binary_expression "(int)param_1[4] <= iVar6" (cast_expression "(int)param_1[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) <= identifier) ))) )) (goto_statement "goto LAB_00233390;" goto statement_identifier ;)) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar6 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar6 * 4)" identifier = (pointer_expression "*(char **)(param_1[2] + iVar6 * 4)" * (cast_expression "(char **)(param_1[2] + iVar6 * 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[2] + iVar6 * 4)" ( (binary_expression "param_1[2] + iVar6 * 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) + (binary_expression "iVar6 * 4" identifier * number_literal)) ))))) ;) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }" if (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" ( (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n            FUN_0022f6a0();\n          }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" else (compound_statement "{\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" { (if_statement "if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" if (parenthesized_expression "((*param_1 & 0x2000) == 0)" ( (binary_expression "(*param_1 & 0x2000) == 0" (parenthesized_expression "(*param_1 & 0x2000)" ( (binary_expression "*param_1 & 0x2000" (pointer_expression "*param_1" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }" { (if_statement "if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) })) (expression_statement "local_28 = local_24;" (assignment_expression "local_28 = local_24" identifier = identifier) ;) (expression_statement "local_50 = FUN_00230c20();" (assignment_expression "local_50 = FUN_00230c20()" identifier = (call_expression "FUN_00230c20()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_50 == 0) goto LAB_00233390;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00233390;" goto statement_identifier ;)) (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" else (compound_statement "{\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" { (expression_statement "__n = FUN_0022f250();" (assignment_expression "__n = FUN_0022f250()" identifier = (call_expression "FUN_0022f250()" identifier (argument_list "()" ( )))) ;) (if_statement "if (__n == 0xffffffff) goto LAB_00233390;" if (parenthesized_expression "(__n == 0xffffffff)" ( (binary_expression "__n == 0xffffffff" identifier == number_literal) )) (goto_statement "goto LAB_00233390;" goto statement_identifier ;)) (expression_statement "__dest = (void *)FUN_00246130(__n + 1);" (assignment_expression "__dest = (void *)FUN_00246130(__n + 1)" identifier = (cast_expression "(void *)FUN_00246130(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00246130(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" identifier (argument_list "(__dest,(void *)*param_2,__n)" ( identifier , (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "pcVar5 = (char *)FUN_00230360(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_00230360(__dest,*param_1)" identifier = (cast_expression "(char *)FUN_00230360(__dest,*param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00230360(__dest,*param_1)" identifier (argument_list "(__dest,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }" { (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }" if (parenthesized_expression "(__n != 0)" ( (binary_expression "__n != 0" identifier != number_literal) )) (compound_statement "{\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }" { (expression_statement "FUN_0022f5c0();" (call_expression "FUN_0022f5c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) })) }) (else_clause "else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" else (compound_statement "{\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" { (if_statement "if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }" if (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n                FUN_0022f6a0();\n              }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }))) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) (expression_statement "*param_2 = iVar6 + __n;" (assignment_expression "*param_2 = iVar6 + __n" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar6 + __n" identifier + identifier)) ;) }))) (labeled_statement "LAB_00233160:\n          FUN_0022f090();" statement_identifier : (expression_statement "FUN_0022f090();" (call_expression "FUN_0022f090()" identifier (argument_list "()" ( ))) ;)) }))) (if_statement "if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }" if (parenthesized_expression "(iVar4 != 1)" ( (binary_expression "iVar4 != 1" identifier != number_literal) )) (compound_statement "{\n          FUN_0022f6a0();\n        }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) })) (labeled_statement "LAB_002331b0:\n      FUN_0022f4d0(uVar3);" statement_identifier : (expression_statement "FUN_0022f4d0(uVar3);" (call_expression "FUN_0022f4d0(uVar3)" identifier (argument_list "(uVar3)" ( identifier ))) ;)) (if_statement "if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }" if (parenthesized_expression "((param_1[0xb] & 1) != 0)" ( (binary_expression "(param_1[0xb] & 1) != 0" (parenthesized_expression "(param_1[0xb] & 1)" ( (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n          FUN_0022f6a0();\n        }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }" if (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) )) (compound_statement "{\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }" { (if_statement "if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }" if (parenthesized_expression "(*param_3 != param_3[1])" ( (binary_expression "*param_3 != param_3[1]" (pointer_expression "*param_3" * identifier) != (subscript_expression "param_3[1]" identifier [ number_literal ])) )) (compound_statement "{\n          FUN_0022f6a0();\n        }" { (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (local_34 != local_30) {\n          FUN_0022f600();\n        }" if (parenthesized_expression "(local_34 != local_30)" ( (binary_expression "local_34 != local_30" identifier != identifier) )) (compound_statement "{\n          FUN_0022f600();\n        }" { (expression_statement "FUN_0022f600();" (call_expression "FUN_0022f600()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else {\n        FUN_0022f7f0();\n      }" else (compound_statement "{\n        FUN_0022f7f0();\n      }" { (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" identifier (argument_list "()" ( ))) ;) }))) (if_statement "if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }" if (parenthesized_expression "(local_34 != (void *)0x0)" ( (binary_expression "local_34 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(local_34);\n        return local_50;\n      }" { (expression_statement "free(local_34);" (call_expression "free(local_34)" identifier (argument_list "(local_34)" ( identifier ))) ;) (return_statement "return local_50;" return identifier ;) })) (return_statement "return local_50;" return identifier ;) })) }))) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (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 (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (char_literal ' character ') < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == (char_literal ' character ')) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (for_statement for ( ; (binary_expression LIT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })) }))) (return_statement return LIT ;) })))
(function_definition "int __regparm3 FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)\n\n{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00232fc0(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" (identifier "FUN_00232fc0") (parameter_list "(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "uint param_4" (type_identifier "uint") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  char cVar2;\n  undefined4 uVar3;\n  int iVar4;\n  size_t __n;\n  void *__dest;\n  char *pcVar5;\n  int iVar6;\n  int local_50;\n  char local_36;\n  undefined1 local_35;\n  void *local_34;\n  void *local_30;\n  undefined4 local_2c;\n  void *local_28;\n  void *local_24;\n  undefined4 local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x232fcd;\n  uVar3 = FUN_0022eff0();\n  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }\n  pcVar5 = (char *)*param_2;\n  local_2c = 0;\n  local_30 = (void *)0x0;\n  local_34 = (void *)0x0;\n  local_20 = 0;\n  local_24 = (void *)0x0;\n  local_28 = (void *)0x0;\n  if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }\n  return 0;\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "char local_36;" (primitive_type "char") (identifier "local_36") (; ";")) (declaration "undefined1 local_35;" (type_identifier "undefined1") (identifier "local_35") (; ";")) (declaration "void *local_34;" (primitive_type "void") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "void *local_30;" (primitive_type "void") (pointer_declarator "*local_30" (* "*") (identifier "local_30")) (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "void *local_28;" (primitive_type "void") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "void *local_24;" (primitive_type "void") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x232fcd;" (assignment_expression "uStack_14 = 0x232fcd" (identifier "uStack_14") (= "=") (number_literal "0x232fcd")) (; ";")) (expression_statement "uVar3 = FUN_0022eff0();" (assignment_expression "uVar3 = FUN_0022eff0()" (identifier "uVar3") (= "=") (call_expression "FUN_0022eff0()" (identifier "FUN_0022eff0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {\n    param_4 = param_1[0xb] & 1;\n  }" (if "if") (parenthesized_expression "((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0))" (( "(") (binary_expression "(param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)" (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_4 = param_1[10] & 1, param_4 == 0)" (( "(") (comma_expression "param_4 = param_1[10] & 1, param_4 == 0" (assignment_expression "param_4 = param_1[10] & 1" (identifier "param_4") (= "=") (binary_expression "param_1[10] & 1" (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]")) (& "&") (number_literal "1"))) (, ",") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    param_4 = param_1[0xb] & 1;\n  }" ({ "{") (expression_statement "param_4 = param_1[0xb] & 1;" (assignment_expression "param_4 = param_1[0xb] & 1" (identifier "param_4") (= "=") (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" (identifier "pcVar5") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_30 = (void *)0x0;" (assignment_expression "local_30 = (void *)0x0" (identifier "local_30") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_34 = (void *)0x0;" (assignment_expression "local_34 = (void *)0x0" (identifier "local_34") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" (identifier "local_24") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" (identifier "local_28") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (*pcVar5 == 'K') {\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }\n  else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" (if "if") (parenthesized_expression "(*pcVar5 == 'K')" (( "(") (binary_expression "*pcVar5 == 'K'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (char_literal "'K'" (' "'") (character "K") (' "'"))) () ")")) (compound_statement "{\n    *param_2 = (int)(pcVar5 + 1);\n    iVar4 = FUN_0022f300();\n    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }\n  }" ({ "{") (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar4 = FUN_0022f300();" (assignment_expression "iVar4 = FUN_0022f300()" (identifier "iVar4") (= "=") (call_expression "FUN_0022f300()" (identifier "FUN_0022f300") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }" (if "if") (parenthesized_expression "((iVar4 != -1) && (iVar4 < (int)param_1[4]))" (( "(") (binary_expression "(iVar4 != -1) && (iVar4 < (int)param_1[4])" (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(iVar4 < (int)param_1[4])" (( "(") (binary_expression "iVar4 < (int)param_1[4]" (identifier "iVar4") (< "<") (cast_expression "(int)param_1[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      local_50 = 1;\n      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);\n      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }\n      goto LAB_002331b0;\n    }" ({ "{") (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar4 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar4 * 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(param_1[2] + iVar4 * 4)" (* "*") (cast_expression "(char **)(param_1[2] + iVar4 * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[2] + iVar4 * 4)" (( "(") (binary_expression "param_1[2] + iVar4 * 4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "iVar4 * 4" (identifier "iVar4") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n        FUN_0022f6a0();\n      }" (if "if") (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" (( "(") (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" (( "(") (binary_expression "pcVar5 != (char *)0x0" (identifier "pcVar5") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        FUN_0022f6a0();\n      }" ({ "{") (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" (identifier "FUN_0022f6a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_002331b0;" (goto "goto") (statement_identifier "LAB_002331b0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" (else "else") (compound_statement "{\n    cVar2 = pcVar5[1];\n    if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }\n  }" ({ "{") (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" (identifier "cVar2") (= "=") (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if ('0' < cVar2) {\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" (if "if") (parenthesized_expression "('0' < cVar2)" (( "(") (binary_expression "'0' < cVar2" (char_literal "'0'" (' "'") (character "0") (' "'")) (< "<") (identifier "cVar2")) () ")")) (compound_statement "{\n      if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }\n      local_50 = 1;\n      for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }\nLAB_002331b0:\n      FUN_0022f4d0(uVar3);\n      if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }\n      if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }\n      if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }\n      if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }\n      return local_50;\n    }" ({ "{") (if_statement "if (cVar2 < ':') {\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }\n      else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" (if "if") (parenthesized_expression "(cVar2 < ':')" (( "(") (binary_expression "cVar2 < ':'" (identifier "cVar2") (< "<") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")")) (compound_statement "{\n        local_35 = 0;\n        local_36 = cVar2;\n        iVar4 = strtol(&local_36,(char **)0x0,10);\n        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');\n      }" ({ "{") (expression_statement "local_35 = 0;" (assignment_expression "local_35 = 0" (identifier "local_35") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_36 = cVar2;" (assignment_expression "local_36 = cVar2" (identifier "local_36") (= "=") (identifier "cVar2")) (; ";")) (expression_statement "iVar4 = strtol(&local_36,(char **)0x0,10);" (assignment_expression "iVar4 = strtol(&local_36,(char **)0x0,10)" (identifier "iVar4") (= "=") (call_expression "strtol(&local_36,(char **)0x0,10)" (identifier "strtol") (argument_list "(&local_36,(char **)0x0,10)" (( "(") (pointer_expression "&local_36" (& "&") (identifier "local_36")) (, ",") (cast_expression "(char **)0x0" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0")) (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');" (assignment_expression "*param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_')" (binary_expression "*param_2 + 2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "2")) (+ "+") (call_expression "(uint)(*(char *)(*param_2 + 2) == '_')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(char *)(*param_2 + 2) == '_')" (( "(") (binary_expression "*(char *)(*param_2 + 2) == '_'" (pointer_expression "*(char *)(*param_2 + 2)" (* "*") (cast_expression "(char *)(*param_2 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 2)" (( "(") (binary_expression "*param_2 + 2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "2")) () ")")))) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" (else "else") (compound_statement "{\n        if (cVar2 != '_') {\n          return 0;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_0022f300();\n        if (iVar4 == -1) {\n          return 0;\n        }\n      }" ({ "{") (if_statement "if (cVar2 != '_') {\n          return 0;\n        }" (if "if") (parenthesized_expression "(cVar2 != '_')" (( "(") (binary_expression "cVar2 != '_'" (identifier "cVar2") (!= "!=") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar4 = FUN_0022f300();" (assignment_expression "iVar4 = FUN_0022f300()" (identifier "iVar4") (= "=") (call_expression "FUN_0022f300()" (identifier "FUN_0022f300") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 == -1) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(iVar4 == -1)" (( "(") (binary_expression "iVar4 == -1" (identifier "iVar4") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";")) (for_statement "for (; 0 < iVar4; iVar4 = iVar4 + -1) {\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }" (for "for") (( "(") (; ";") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) (; ";") (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n        pcVar1 = (char *)*param_2;\n        cVar2 = *pcVar1;\n        pcVar5 = pcVar1;\n        if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }\n        local_24 = local_28;\n        if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }\n        if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }\n        if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }\n      }" ({ "{") (expression_statement "pcVar1 = (char *)*param_2;" (assignment_expression "pcVar1 = (char *)*param_2" (identifier "pcVar1") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "cVar2 = *pcVar1;" (assignment_expression "cVar2 = *pcVar1" (identifier "cVar2") (= "=") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) (; ";")) (expression_statement "pcVar5 = pcVar1;" (assignment_expression "pcVar5 = pcVar1" (identifier "pcVar5") (= "=") (identifier "pcVar1")) (; ";")) (if_statement "if (cVar2 == '_') {\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" (if "if") (parenthesized_expression "(cVar2 == '_')" (( "(") (binary_expression "cVar2 == '_'" (identifier "cVar2") (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar1 + 1;\n          *param_2 = (int)pcVar5;\n          cVar2 = pcVar1[1];\n        }" ({ "{") (expression_statement "pcVar5 = pcVar1 + 1;" (assignment_expression "pcVar5 = pcVar1 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar1 + 1" (identifier "pcVar1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_2 = (int)pcVar5;" (assignment_expression "*param_2 = (int)pcVar5" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5"))) (; ";")) (expression_statement "cVar2 = pcVar1[1];" (assignment_expression "cVar2 = pcVar1[1]" (identifier "cVar2") (= "=") (subscript_expression "pcVar1[1]" (identifier "pcVar1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_24 = local_28;" (assignment_expression "local_24 = local_28" (identifier "local_24") (= "=") (identifier "local_28")) (; ";")) (if_statement "if (cVar2 == 't') {\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }" (if "if") (parenthesized_expression "(cVar2 == 't')" (( "(") (binary_expression "cVar2 == 't'" (identifier "cVar2") (== "==") (char_literal "'t'" (' "'") (character "t") (' "'"))) () ")")) (compound_statement "{\n          local_50 = FUN_002328c0(&local_28,1,0);\n          if (local_50 != 0) goto LAB_00233160;\nLAB_00233390:\n          local_50 = 0;\n          break;\n        }" ({ "{") (expression_statement "local_50 = FUN_002328c0(&local_28,1,0);" (assignment_expression "local_50 = FUN_002328c0(&local_28,1,0)" (identifier "local_50") (= "=") (call_expression "FUN_002328c0(&local_28,1,0)" (identifier "FUN_002328c0") (argument_list "(&local_28,1,0)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (number_literal "1") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (local_50 != 0) goto LAB_00233160;" (if "if") (parenthesized_expression "(local_50 != 0)" (( "(") (binary_expression "local_50 != 0" (identifier "local_50") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00233160;" (goto "goto") (statement_identifier "LAB_00233160") (; ";"))) (labeled_statement "LAB_00233390:\n          local_50 = 0;" (statement_identifier "LAB_00233390") (: ":") (expression_statement "local_50 = 0;" (assignment_expression "local_50 = 0" (identifier "local_50") (= "=") (number_literal "0")) (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (cVar2 == 'K') {\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }\n        else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" (if "if") (parenthesized_expression "(cVar2 == 'K')" (( "(") (binary_expression "cVar2 == 'K'" (identifier "cVar2") (== "==") (char_literal "'K'" (' "'") (character "K") (' "'"))) () ")")) (compound_statement "{\n          *param_2 = (int)(pcVar5 + 1);\n          iVar6 = FUN_0022f300();\n          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;\n          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);\n          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }\n        }" ({ "{") (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar6 = FUN_0022f300();" (assignment_expression "iVar6 = FUN_0022f300()" (identifier "iVar6") (= "=") (call_expression "FUN_0022f300()" (identifier "FUN_0022f300") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;" (if "if") (parenthesized_expression "((iVar6 == -1) || ((int)param_1[4] <= iVar6))" (( "(") (binary_expression "(iVar6 == -1) || ((int)param_1[4] <= iVar6)" (parenthesized_expression "(iVar6 == -1)" (( "(") (binary_expression "iVar6 == -1" (identifier "iVar6") (== "==") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "((int)param_1[4] <= iVar6)" (( "(") (binary_expression "(int)param_1[4] <= iVar6" (cast_expression "(int)param_1[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (<= "<=") (identifier "iVar6")) () ")"))) () ")")) (goto_statement "goto LAB_00233390;" (goto "goto") (statement_identifier "LAB_00233390") (; ";"))) (expression_statement "pcVar5 = *(char **)(param_1[2] + iVar6 * 4);" (assignment_expression "pcVar5 = *(char **)(param_1[2] + iVar6 * 4)" (identifier "pcVar5") (= "=") (pointer_expression "*(char **)(param_1[2] + iVar6 * 4)" (* "*") (cast_expression "(char **)(param_1[2] + iVar6 * 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[2] + iVar6 * 4)" (( "(") (binary_expression "param_1[2] + iVar6 * 4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {\n            FUN_0022f6a0();\n          }" (if "if") (parenthesized_expression "((pcVar5 != (char *)0x0) && (*pcVar5 != '\0'))" (( "(") (binary_expression "(pcVar5 != (char *)0x0) && (*pcVar5 != '\0')" (parenthesized_expression "(pcVar5 != (char *)0x0)" (( "(") (binary_expression "pcVar5 != (char *)0x0" (identifier "pcVar5") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            FUN_0022f6a0();\n          }" ({ "{") (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" (identifier "FUN_0022f6a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" (else "else") (compound_statement "{\n          if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }\nLAB_00233160:\n          FUN_0022f090();\n        }" ({ "{") (if_statement "if ((*param_1 & 0x2000) == 0) {\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }\n          else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" (if "if") (parenthesized_expression "((*param_1 & 0x2000) == 0)" (( "(") (binary_expression "(*param_1 & 0x2000) == 0" (parenthesized_expression "(*param_1 & 0x2000)" (( "(") (binary_expression "*param_1 & 0x2000" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (& "&") (number_literal "0x2000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }\n            local_28 = local_24;\n            local_50 = FUN_00230c20();\n            if (local_50 == 0) goto LAB_00233390;\n            FUN_0022f7f0();\n          }" ({ "{") (if_statement "if (local_28 != (void *)0x0) {\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" (if "if") (parenthesized_expression "(local_28 != (void *)0x0)" (( "(") (binary_expression "local_28 != (void *)0x0" (identifier "local_28") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              free(local_28);\n              local_24 = (void *)0x0;\n              local_20 = 0;\n            }" ({ "{") (expression_statement "free(local_28);" (call_expression "free(local_28)" (identifier "free") (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" (identifier "local_24") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "local_28 = local_24;" (assignment_expression "local_28 = local_24" (identifier "local_28") (= "=") (identifier "local_24")) (; ";")) (expression_statement "local_50 = FUN_00230c20();" (assignment_expression "local_50 = FUN_00230c20()" (identifier "local_50") (= "=") (call_expression "FUN_00230c20()" (identifier "FUN_00230c20") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_50 == 0) goto LAB_00233390;" (if "if") (parenthesized_expression "(local_50 == 0)" (( "(") (binary_expression "local_50 == 0" (identifier "local_50") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00233390;" (goto "goto") (statement_identifier "LAB_00233390") (; ";"))) (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" (identifier "FUN_0022f7f0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" (else "else") (compound_statement "{\n            __n = FUN_0022f250();\n            if (__n == 0xffffffff) goto LAB_00233390;\n            __dest = (void *)FUN_00246130(__n + 1);\n            memcpy(__dest,(void *)*param_2,__n);\n            *(undefined1 *)((int)__dest + __n) = 0;\n            pcVar5 = (char *)FUN_00230360(__dest,*param_1);\n            if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }\n            free(__dest);\n            *param_2 = iVar6 + __n;\n          }" ({ "{") (expression_statement "__n = FUN_0022f250();" (assignment_expression "__n = FUN_0022f250()" (identifier "__n") (= "=") (call_expression "FUN_0022f250()" (identifier "FUN_0022f250") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (__n == 0xffffffff) goto LAB_00233390;" (if "if") (parenthesized_expression "(__n == 0xffffffff)" (( "(") (binary_expression "__n == 0xffffffff" (identifier "__n") (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_00233390;" (goto "goto") (statement_identifier "LAB_00233390") (; ";"))) (expression_statement "__dest = (void *)FUN_00246130(__n + 1);" (assignment_expression "__dest = (void *)FUN_00246130(__n + 1)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_00246130(__n + 1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00246130(__n + 1)" (identifier "FUN_00246130") (argument_list "(__n + 1)" (( "(") (binary_expression "__n + 1" (identifier "__n") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" (identifier "memcpy") (argument_list "(__dest,(void *)*param_2,__n)" (( "(") (identifier "__dest") (, ",") (cast_expression "(void *)*param_2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" (* "*") (cast_expression "(undefined1 *)((int)__dest + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__dest + __n)" (( "(") (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = (char *)FUN_00230360(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_00230360(__dest,*param_1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)FUN_00230360(__dest,*param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00230360(__dest,*param_1)" (identifier "FUN_00230360") (argument_list "(__dest,*param_1)" (( "(") (identifier "__dest") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }\n            else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" (if "if") (parenthesized_expression "(pcVar5 == (char *)0x0)" (( "(") (binary_expression "pcVar5 == (char *)0x0" (identifier "pcVar5") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar6 = *param_2;\n              if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }\n            }" ({ "{") (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" (identifier "iVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (__n != 0) {\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }" (if "if") (parenthesized_expression "(__n != 0)" (( "(") (binary_expression "__n != 0" (identifier "__n") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_0022f5c0();\n                iVar6 = *param_2;\n              }" ({ "{") (expression_statement "FUN_0022f5c0();" (call_expression "FUN_0022f5c0()" (identifier "FUN_0022f5c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" (identifier "iVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" (else "else") (compound_statement "{\n              if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }\n              free(pcVar5);\n              iVar6 = *param_2;\n            }" ({ "{") (if_statement "if (*pcVar5 != '\0') {\n                FUN_0022f6a0();\n              }" (if "if") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n                FUN_0022f6a0();\n              }" ({ "{") (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" (identifier "FUN_0022f6a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" (identifier "free") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (expression_statement "iVar6 = *param_2;" (assignment_expression "iVar6 = *param_2" (identifier "iVar6") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")))) (expression_statement "free(__dest);" (call_expression "free(__dest)" (identifier "free") (argument_list "(__dest)" (( "(") (identifier "__dest") () ")"))) (; ";")) (expression_statement "*param_2 = iVar6 + __n;" (assignment_expression "*param_2 = iVar6 + __n" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "iVar6 + __n" (identifier "iVar6") (+ "+") (identifier "__n"))) (; ";")) (} "}")))) (labeled_statement "LAB_00233160:\n          FUN_0022f090();" (statement_identifier "LAB_00233160") (: ":") (expression_statement "FUN_0022f090();" (call_expression "FUN_0022f090()" (identifier "FUN_0022f090") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (if_statement "if (iVar4 != 1) {\n          FUN_0022f6a0();\n        }" (if "if") (parenthesized_expression "(iVar4 != 1)" (( "(") (binary_expression "iVar4 != 1" (identifier "iVar4") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          FUN_0022f6a0();\n        }" ({ "{") (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" (identifier "FUN_0022f6a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_002331b0:\n      FUN_0022f4d0(uVar3);" (statement_identifier "LAB_002331b0") (: ":") (expression_statement "FUN_0022f4d0(uVar3);" (call_expression "FUN_0022f4d0(uVar3)" (identifier "FUN_0022f4d0") (argument_list "(uVar3)" (( "(") (identifier "uVar3") () ")"))) (; ";"))) (if_statement "if (param_4 != 0) {\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0022f6a0();\n        if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }\n        FUN_0022f7f0();\n      }" ({ "{") (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" (identifier "FUN_0022f6a0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((param_1[0xb] & 1) != 0) {\n          FUN_0022f6a0();\n        }" (if "if") (parenthesized_expression "((param_1[0xb] & 1) != 0)" (( "(") (binary_expression "(param_1[0xb] & 1) != 0" (parenthesized_expression "(param_1[0xb] & 1)" (( "(") (binary_expression "param_1[0xb] & 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_0022f6a0();\n        }" ({ "{") (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" (identifier "FUN_0022f6a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" (identifier "FUN_0022f7f0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_5 == 0) {\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }\n      else {\n        FUN_0022f7f0();\n      }" (if "if") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }\n        if (local_34 != local_30) {\n          FUN_0022f600();\n        }\n      }" ({ "{") (if_statement "if (*param_3 != param_3[1]) {\n          FUN_0022f6a0();\n        }" (if "if") (parenthesized_expression "(*param_3 != param_3[1])" (( "(") (binary_expression "*param_3 != param_3[1]" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (!= "!=") (subscript_expression "param_3[1]" (identifier "param_3") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n          FUN_0022f6a0();\n        }" ({ "{") (expression_statement "FUN_0022f6a0();" (call_expression "FUN_0022f6a0()" (identifier "FUN_0022f6a0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (local_34 != local_30) {\n          FUN_0022f600();\n        }" (if "if") (parenthesized_expression "(local_34 != local_30)" (( "(") (binary_expression "local_34 != local_30" (identifier "local_34") (!= "!=") (identifier "local_30")) () ")")) (compound_statement "{\n          FUN_0022f600();\n        }" ({ "{") (expression_statement "FUN_0022f600();" (call_expression "FUN_0022f600()" (identifier "FUN_0022f600") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        FUN_0022f7f0();\n      }" (else "else") (compound_statement "{\n        FUN_0022f7f0();\n      }" ({ "{") (expression_statement "FUN_0022f7f0();" (call_expression "FUN_0022f7f0()" (identifier "FUN_0022f7f0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (if_statement "if (local_28 != (void *)0x0) {\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" (if "if") (parenthesized_expression "(local_28 != (void *)0x0)" (( "(") (binary_expression "local_28 != (void *)0x0" (identifier "local_28") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(local_28);\n        local_24 = (void *)0x0;\n        local_20 = 0;\n        local_28 = (void *)0x0;\n      }" ({ "{") (expression_statement "free(local_28);" (call_expression "free(local_28)" (identifier "free") (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (expression_statement "local_24 = (void *)0x0;" (assignment_expression "local_24 = (void *)0x0" (identifier "local_24") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" (identifier "local_28") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (if_statement "if (local_34 != (void *)0x0) {\n        free(local_34);\n        return local_50;\n      }" (if "if") (parenthesized_expression "(local_34 != (void *)0x0)" (( "(") (binary_expression "local_34 != (void *)0x0" (identifier "local_34") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        free(local_34);\n        return local_50;\n      }" ({ "{") (expression_statement "free(local_34);" (call_expression "free(local_34)" (identifier "free") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (return_statement "return local_50;" (return "return") (identifier "local_50") (; ";")) (} "}"))) (return_statement "return local_50;" (return "return") (identifier "local_50") (; ";")) (} "}"))) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int function_1(type_1 *work,char **mangled,type_2 *result,int isfuncname,int append)

{
  char num [2];
  type_2 temp;
  type_2 last_name;
  
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) 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: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_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: (pointer_expression argument: (identifier))))) (expression_statement (assignment_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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_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: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) 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: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) consequence: (compound_statement (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 declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (char_literal (character)) right: (identifier))) consequence: (compound_statement (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))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)) (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (char_literal (character))))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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 (return_statement (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (for_statement condition: (binary_expression left: (number_literal) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (number_literal) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))))) consequence: (goto_statement label: (statement_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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) alternative: (else_clause (compound_statement (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: (goto_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 (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (number_literal))) (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 (identifier) (pointer_expression argument: (identifier))))))) (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 (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (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))))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list)))))) alternative: (else_clause (compound_statement (expression_statement (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_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: (number_literal)))))) (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 (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement (identifier)))) (return_statement (identifier))))))) (return_statement (number_literal)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 MASKED(uint *param_1,int *param_2,int *param_3,uint param_4,int param_5)

{
  char *pcVar1;
  char cVar2;
  undefined4 uVar3;
  int iVar4;
  size_t __n;
  void *__dest;
  char *pcVar5;
  int iVar6;
  int local_50;
  char local_36;
  undefined1 local_35;
  void *local_34;
  void *local_30;
  undefined4 local_2c;
  void *local_28;
  void *local_24;
  undefined4 local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x232fcd;
  uVar3 = FUN_0022eff0();
  if ((param_4 != 0) && (param_4 = param_1[10] & 1, param_4 == 0)) {
    param_4 = param_1[0xb] & 1;
  }
  pcVar5 = (char *)*param_2;
  local_2c = 0;
  local_30 = (void *)0x0;
  local_34 = (void *)0x0;
  local_20 = 0;
  local_24 = (void *)0x0;
  local_28 = (void *)0x0;
  if (*pcVar5 == 'K') {
    *param_2 = (int)(pcVar5 + 1);
    iVar4 = FUN_0022f300();
    if ((iVar4 != -1) && (iVar4 < (int)param_1[4])) {
      local_50 = 1;
      pcVar5 = *(char **)(param_1[2] + iVar4 * 4);
      if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
        FUN_0022f6a0();
      }
      goto LAB_002331b0;
    }
  }
  else {
    cVar2 = pcVar5[1];
    if ('0' < cVar2) {
      if (cVar2 < ':') {
        local_35 = 0;
        local_36 = cVar2;
        iVar4 = strtol(&local_36,(char **)0x0,10);
        *param_2 = *param_2 + 2 + (uint)(*(char *)(*param_2 + 2) == '_');
      }
      else {
        if (cVar2 != '_') {
          return 0;
        }
        *param_2 = (int)(pcVar5 + 1);
        iVar4 = FUN_0022f300();
        if (iVar4 == -1) {
          return 0;
        }
      }
      local_50 = 1;
      for (; 0 < iVar4; iVar4 = iVar4 + -1) {
        pcVar1 = (char *)*param_2;
        cVar2 = *pcVar1;
        pcVar5 = pcVar1;
        if (cVar2 == '_') {
          pcVar5 = pcVar1 + 1;
          *param_2 = (int)pcVar5;
          cVar2 = pcVar1[1];
        }
        local_24 = local_28;
        if (cVar2 == 't') {
          local_50 = FUN_002328c0(&local_28,1,0);
          if (local_50 != 0) goto LAB_00233160;
LAB_00233390:
          local_50 = 0;
          break;
        }
        if (cVar2 == 'K') {
          *param_2 = (int)(pcVar5 + 1);
          iVar6 = FUN_0022f300();
          if ((iVar6 == -1) || ((int)param_1[4] <= iVar6)) goto LAB_00233390;
          pcVar5 = *(char **)(param_1[2] + iVar6 * 4);
          if ((pcVar5 != (char *)0x0) && (*pcVar5 != '\0')) {
            FUN_0022f6a0();
          }
        }
        else {
          if ((*param_1 & 0x2000) == 0) {
            if (local_28 != (void *)0x0) {
              free(local_28);
              local_24 = (void *)0x0;
              local_20 = 0;
            }
            local_28 = local_24;
            local_50 = FUN_00230c20();
            if (local_50 == 0) goto LAB_00233390;
            FUN_0022f7f0();
          }
          else {
            __n = FUN_0022f250();
            if (__n == 0xffffffff) goto LAB_00233390;
            __dest = (void *)FUN_00246130(__n + 1);
            memcpy(__dest,(void *)*param_2,__n);
            *(undefined1 *)((int)__dest + __n) = 0;
            pcVar5 = (char *)FUN_00230360(__dest,*param_1);
            if (pcVar5 == (char *)0x0) {
              iVar6 = *param_2;
              if (__n != 0) {
                FUN_0022f5c0();
                iVar6 = *param_2;
              }
            }
            else {
              if (*pcVar5 != '\0') {
                FUN_0022f6a0();
              }
              free(pcVar5);
              iVar6 = *param_2;
            }
            free(__dest);
            *param_2 = iVar6 + __n;
          }
LAB_00233160:
          FUN_0022f090();
        }
        if (iVar4 != 1) {
          FUN_0022f6a0();
        }
      }
LAB_002331b0:
      FUN_0022f4d0(uVar3);
      if (param_4 != 0) {
        FUN_0022f6a0();
        if ((param_1[0xb] & 1) != 0) {
          FUN_0022f6a0();
        }
        FUN_0022f7f0();
      }
      if (param_5 == 0) {
        if (*param_3 != param_3[1]) {
          FUN_0022f6a0();
        }
        if (local_34 != local_30) {
          FUN_0022f600();
        }
      }
      else {
        FUN_0022f7f0();
      }
      if (local_28 != (void *)0x0) {
        free(local_28);
        local_24 = (void *)0x0;
        local_20 = 0;
        local_28 = (void *)0x0;
      }
      if (local_34 != (void *)0x0) {
        free(local_34);
        return local_50;
      }
      return local_50;
    }
  }
  return 0;
}

