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

int __regparm3 longest_match(IPos cur_match)

{
  char *pcVar1;
  ushort uVar2;
  bool bVar3;
  char *pcVar4;
  char *pcVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  char local_27;
  char local_26;
  uint local_20;
  
  bVar3 = false;
  pcVar1 = &window + strstart;
  uVar9 = 0x7efa;
  if (0x7ef9 < strstart) {
    uVar9 = strstart;
  }
  local_26 = (&DAT_00067f5f)[prev_length + strstart];
  local_27 = pcVar1[prev_length];
  uVar8 = max_chain_length;
  if (good_match <= prev_length) {
    uVar8 = max_chain_length >> 2;
  }
  local_20 = match_start;
  uVar7 = prev_length;
  do {
    if (((((&window + cur_match)[uVar7] == local_27) &&
         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&
       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])) {
      pcVar4 = &DAT_00067f62 + cur_match;
      pcVar5 = &DAT_00067f62 + strstart;
      do {
        if (pcVar5[1] != pcVar4[1]) {
          pcVar5 = pcVar5 + 1;
          break;
        }
        if (pcVar5[2] != pcVar4[2]) {
          pcVar5 = pcVar5 + 2;
          break;
        }
        if (pcVar5[3] != pcVar4[3]) {
          pcVar5 = pcVar5 + 3;
          break;
        }
        if (pcVar5[4] != pcVar4[4]) {
          pcVar5 = pcVar5 + 4;
          break;
        }
        if (pcVar5[5] != pcVar4[5]) {
          pcVar5 = pcVar5 + 5;
          break;
        }
        if (pcVar5[6] != pcVar4[6]) {
          pcVar5 = pcVar5 + 6;
          break;
        }
        if (pcVar5[7] != pcVar4[7]) {
          pcVar5 = pcVar5 + 7;
          break;
        }
        pcVar5 = pcVar5 + 8;
        pcVar4 = pcVar4 + 8;
      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));
      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);
      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;
      if (nice_match <= (int)uVar6) {
        match_start = cur_match;
        return uVar6;
      }
      bVar3 = true;
      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);
      local_26 = (&DAT_00067f5f)[uVar6 + strstart];
      local_27 = pcVar1[uVar6];
      uVar7 = uVar6;
      local_20 = cur_match;
    }
    else {
LAB_00013410:
      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);
    }
    cur_match = (IPos)uVar2;
    if ((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {
      if (!bVar3) {
        return uVar7;
      }
      match_start = local_20;
      return uVar7;
    }
  } while( true );
}



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

uint __regparm3 FUN_00013360(uint param_1)

{
  char *pcVar1;
  ushort uVar2;
  bool bVar3;
  char *pcVar4;
  char *pcVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  char local_27;
  char local_26;
  uint local_20;
  
  bVar3 = false;
  pcVar1 = &DAT_00067f60 + DAT_00032ee8;
  uVar9 = 0x7efa;
  if (0x7ef9 < DAT_00032ee8) {
    uVar9 = DAT_00032ee8;
  }
  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);
  local_27 = pcVar1[DAT_00032ef8];
  uVar8 = DAT_00032ef4;
  if (DAT_00032ef0 <= DAT_00032ef8) {
    uVar8 = DAT_00032ef4 >> 2;
  }
  local_20 = DAT_00032efc;
  uVar7 = DAT_00032ef8;
  do {
    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&
         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&
        ((&DAT_00067f60)[param_1] == *pcVar1)) &&
       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {
      pcVar4 = &DAT_00067f62 + param_1;
      pcVar5 = &DAT_00067f62 + DAT_00032ee8;
      do {
        if (pcVar5[1] != pcVar4[1]) {
          pcVar5 = pcVar5 + 1;
          break;
        }
        if (pcVar5[2] != pcVar4[2]) {
          pcVar5 = pcVar5 + 2;
          break;
        }
        if (pcVar5[3] != pcVar4[3]) {
          pcVar5 = pcVar5 + 3;
          break;
        }
        if (pcVar5[4] != pcVar4[4]) {
          pcVar5 = pcVar5 + 4;
          break;
        }
        if (pcVar5[5] != pcVar4[5]) {
          pcVar5 = pcVar5 + 5;
          break;
        }
        if (pcVar5[6] != pcVar4[6]) {
          pcVar5 = pcVar5 + 6;
          break;
        }
        if (pcVar5[7] != pcVar4[7]) {
          pcVar5 = pcVar5 + 7;
          break;
        }
        pcVar5 = pcVar5 + 8;
        pcVar4 = pcVar4 + 8;
      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));
      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);
      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;
      if (DAT_0002f4b0 <= (int)uVar6) {
        DAT_00032efc = param_1;
        return uVar6;
      }
      bVar3 = true;
      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);
      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);
      local_27 = pcVar1[uVar6];
      uVar7 = uVar6;
      local_20 = param_1;
    }
    else {
LAB_00013410:
      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);
    }
    param_1 = (uint)uVar2;
    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {
      if (!bVar3) {
        return uVar7;
      }
      DAT_00032efc = local_20;
      return uVar7;
    }
  } while( true );
}


CALL 0x00014595
ADD ECX,0x1bc9b
PUSH EBP
PUSH EDI
MOV EDI,0x7efa
PUSH ESI
PUSH EBX
SUB ESP,0x24
LEA EBP,[ECX + 0x38f60]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[ECX + 0x3ef4]
MOV byte ptr [ESP + 0xf],0x0
MOV EBX,dword ptr [EAX]
LEA EAX,[ECX + 0x3ee8]
MOV ESI,dword ptr [EAX]
LEA EAX,[ECX + 0x3ef8]
CMP ESI,0x7efa
MOV EAX,dword ptr [EAX]
LEA EDX,[ESI + EBP*0x1]
CMOVNC EDI,ESI
MOV dword ptr [ESP + 0x4],EDX
SUB EDI,0x7efa
MOV dword ptr [ESP],EDI
LEA EDI,[ESI + EBP*0x1 + 0x102]
MOV ESI,EBX
MOV dword ptr [ESP + 0x8],EDI
MOV EDI,EDX
MOVZX EDX,byte ptr [EDX + EAX*0x1 + -0x1]
SHR ESI,0x2
MOV byte ptr [ESP + 0xe],DL
MOVZX EDX,byte ptr [EDI + EAX*0x1]
LEA EDI,[ECX + 0x3ef0]
MOV byte ptr [ESP + 0xd],DL
MOV EDX,dword ptr [ESP + 0x10]
CMP EAX,dword ptr [EDI]
CMOVNC EBX,ESI
LEA ESI,[ECX + 0x3efc]
MOV EDI,dword ptr [ESI]
MOV dword ptr [ESP + 0x18],ESI
MOV ESI,dword ptr [ECX + 0x4b0]
MOV dword ptr [ESP + 0x14],EDI
LEA EDI,[ECX + 0x4320]
MOV dword ptr [ESP + 0x1c],ESI
MOV ESI,EBX
MOV EBX,EAX
JMP 0x0001342c
AND EDX,0x7fff
MOVZX EDX,word ptr [EDI + EDX*0x2]
CMP dword ptr [ESP],EDX
JNC 0x00013540
SUB ESI,0x1
JZ 0x00013540
LEA EAX,[EDX + EBP*0x1]
MOVZX ECX,byte ptr [ESP + 0xd]
CMP byte ptr [EAX + EBX*0x1],CL
JNZ 0x00013410
MOVZX ECX,byte ptr [ESP + 0xe]
CMP byte ptr [EAX + EBX*0x1 + -0x1],CL
JNZ 0x00013410
MOV ECX,dword ptr [ESP + 0x4]
MOVZX ECX,byte ptr [ECX]
CMP byte ptr [EAX],CL
JNZ 0x00013410
MOV ECX,dword ptr [ESP + 0x4]
MOVZX ECX,byte ptr [ECX + 0x1]
CMP byte ptr [EAX + 0x1],CL
JNZ 0x00013410
MOV ECX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x20],EBX
ADD EAX,0x2
MOV dword ptr [ESP + 0x10],ESI
MOV ESI,EDX
ADD ECX,0x2
MOVZX EBX,byte ptr [EAX + 0x1]
CMP byte ptr [ECX + 0x1],BL
JNZ 0x0001356a
MOVZX EBX,byte ptr [EAX + 0x2]
CMP byte ptr [ECX + 0x2],BL
JNZ 0x0001357c
MOVZX EBX,byte ptr [EAX + 0x3]
CMP byte ptr [ECX + 0x3],BL
JNZ 0x0001358e
MOVZX EBX,byte ptr [EAX + 0x4]
CMP byte ptr [ECX + 0x4],BL
JNZ 0x000135a0
MOVZX EBX,byte ptr [EAX + 0x5]
CMP byte ptr [ECX + 0x5],BL
JNZ 0x000135c4
MOVZX EBX,byte ptr [EAX + 0x6]
CMP byte ptr [ECX + 0x6],BL
JNZ 0x000135b2
MOVZX EBX,byte ptr [EAX + 0x7]
CMP byte ptr [ECX + 0x7],BL
JNZ 0x000135d6
ADD ECX,0x8
ADD EAX,0x8
MOVZX EBX,byte ptr [EAX]
CMP byte ptr [ECX],BL
SETZ DL
CMP dword ptr [ESP + 0x8],ECX
SETA BL
TEST DL,BL
JNZ 0x00013470
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [ESP + 0x8]
SUB EAX,ECX
MOV ECX,0x102
SUB ECX,EAX
CMP EBX,ECX
JGE 0x00013410
CMP dword ptr [ESP + 0x1c],ECX
JLE 0x000135e8
MOV EBX,dword ptr [ESP + 0x4]
MOV dword ptr [ESP + 0x14],EDX
AND EDX,0x7fff
MOV byte ptr [ESP + 0xf],0x1
MOVZX EDX,word ptr [EDI + EDX*0x2]
MOVZX EAX,byte ptr [EBX + ECX*0x1 + -0x1]
MOV byte ptr [ESP + 0xe],AL
MOVZX EAX,byte ptr [EBX + ECX*0x1]
MOV EBX,ECX
MOV byte ptr [ESP + 0xd],AL
CMP dword ptr [ESP],EDX
JC 0x00013423
CMP byte ptr [ESP + 0xf],0x0
MOV EAX,EBX
JNZ 0x00013558
ADD ESP,0x24
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDI,dword ptr [ESP + 0x18]
MOV ESI,dword ptr [ESP + 0x14]
MOV dword ptr [EDI],ESI
ADD ESP,0x24
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
ADD ECX,0x1
JMP 0x000134ee
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
ADD ECX,0x2
JMP 0x000134ee
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
ADD ECX,0x3
JMP 0x000134ee
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
ADD ECX,0x4
JMP 0x000134ee
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
ADD ECX,0x6
JMP 0x000134ee
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
ADD ECX,0x5
JMP 0x000134ee
MOV EDX,ESI
MOV EBX,dword ptr [ESP + 0x20]
MOV ESI,dword ptr [ESP + 0x10]
ADD ECX,0x7
JMP 0x000134ee
MOV EAX,dword ptr [ESP + 0x18]
MOV dword ptr [EAX],EDX
MOV EAX,ECX
JMP 0x00013549
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nuint __regparm3 FUN_00013360(uint param_1)\n\n{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}\n\n" comment (function_definition "uint __regparm3 FUN_00013360(uint param_1)\n\n{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00013360(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char local_27;" primitive_type identifier ;) (declaration "char local_26;" primitive_type identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "pcVar1 = &DAT_00067f60 + DAT_00032ee8;" (assignment_expression "pcVar1 = &DAT_00067f60 + DAT_00032ee8" identifier = (binary_expression "&DAT_00067f60 + DAT_00032ee8" (pointer_expression "&DAT_00067f60" & identifier) + identifier)) ;) (expression_statement "uVar9 = 0x7efa;" (assignment_expression "uVar9 = 0x7efa" identifier = number_literal) ;) (if_statement "if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }" if (parenthesized_expression "(0x7ef9 < DAT_00032ee8)" ( (binary_expression "0x7ef9 < DAT_00032ee8" number_literal < identifier) )) (compound_statement "{\n    uVar9 = DAT_00032ee8;\n  }" { (expression_statement "uVar9 = DAT_00032ee8;" (assignment_expression "uVar9 = DAT_00032ee8" identifier = identifier) ;) })) (expression_statement "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);" (assignment_expression "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" identifier = (pointer_expression "*(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" * (cast_expression "(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" ( (binary_expression "DAT_00032ee8 + 0x67f5f + DAT_00032ef8" (binary_expression "DAT_00032ee8 + 0x67f5f" identifier + number_literal) + identifier) ))))) ;) (expression_statement "local_27 = pcVar1[DAT_00032ef8];" (assignment_expression "local_27 = pcVar1[DAT_00032ef8]" identifier = (subscript_expression "pcVar1[DAT_00032ef8]" identifier [ identifier ])) ;) (expression_statement "uVar8 = DAT_00032ef4;" (assignment_expression "uVar8 = DAT_00032ef4" identifier = identifier) ;) (if_statement "if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }" if (parenthesized_expression "(DAT_00032ef0 <= DAT_00032ef8)" ( (binary_expression "DAT_00032ef0 <= DAT_00032ef8" identifier <= identifier) )) (compound_statement "{\n    uVar8 = DAT_00032ef4 >> 2;\n  }" { (expression_statement "uVar8 = DAT_00032ef4 >> 2;" (assignment_expression "uVar8 = DAT_00032ef4 >> 2" identifier = (binary_expression "DAT_00032ef4 >> 2" identifier >> number_literal)) ;) })) (expression_statement "local_20 = DAT_00032efc;" (assignment_expression "local_20 = DAT_00032efc" identifier = identifier) ;) (expression_statement "uVar7 = DAT_00032ef8;" (assignment_expression "uVar7 = DAT_00032ef8" identifier = identifier) ;) (do_statement "do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );" do (compound_statement "{\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  }" { (if_statement "if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" if (parenthesized_expression "(((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8]))" ( (binary_expression "((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])" (parenthesized_expression "((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1))" ( (binary_expression "(((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)" (parenthesized_expression "(((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26))" ( (binary_expression "((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)" (parenthesized_expression "((&DAT_00067f60 + param_1)[uVar7] == local_27)" ( (binary_expression "(&DAT_00067f60 + param_1)[uVar7] == local_27" (subscript_expression "(&DAT_00067f60 + param_1)[uVar7]" (parenthesized_expression "(&DAT_00067f60 + param_1)" ( (binary_expression "&DAT_00067f60 + param_1" (pointer_expression "&DAT_00067f60" & identifier) + identifier) )) [ identifier ]) == identifier) )) && (parenthesized_expression "(*(char *)(param_1 + 0x67f5f + uVar7) == local_26)" ( (binary_expression "*(char *)(param_1 + 0x67f5f + uVar7) == local_26" (pointer_expression "*(char *)(param_1 + 0x67f5f + uVar7)" * (cast_expression "(char *)(param_1 + 0x67f5f + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x67f5f + uVar7)" ( (binary_expression "param_1 + 0x67f5f + uVar7" (binary_expression "param_1 + 0x67f5f" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "((&DAT_00067f60)[param_1] == *pcVar1)" ( (binary_expression "(&DAT_00067f60)[param_1] == *pcVar1" (subscript_expression "(&DAT_00067f60)[param_1]" (parenthesized_expression "(&DAT_00067f60)" ( (pointer_expression "&DAT_00067f60" & identifier) )) [ identifier ]) == (pointer_expression "*pcVar1" * identifier)) ))) )) && (parenthesized_expression "((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])" ( (binary_expression "(&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8]" (subscript_expression "(&DAT_00067f61)[param_1]" (parenthesized_expression "(&DAT_00067f61)" ( (pointer_expression "&DAT_00067f61" & identifier) )) [ identifier ]) == (subscript_expression "(&DAT_00067f61)[DAT_00032ee8]" (parenthesized_expression "(&DAT_00067f61)" ( (pointer_expression "&DAT_00067f61" & identifier) )) [ identifier ])) ))) )) (compound_statement "{\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }" { (expression_statement "pcVar4 = &DAT_00067f62 + param_1;" (assignment_expression "pcVar4 = &DAT_00067f62 + param_1" identifier = (binary_expression "&DAT_00067f62 + param_1" (pointer_expression "&DAT_00067f62" & identifier) + identifier)) ;) (expression_statement "pcVar5 = &DAT_00067f62 + DAT_00032ee8;" (assignment_expression "pcVar5 = &DAT_00067f62 + DAT_00032ee8" identifier = (binary_expression "&DAT_00067f62 + DAT_00032ee8" (pointer_expression "&DAT_00067f62" & identifier) + identifier)) ;) (do_statement "do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));" do (compound_statement "{\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      }" { (if_statement "if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" if (parenthesized_expression "(pcVar5[1] != pcVar4[1])" ( (binary_expression "pcVar5[1] != pcVar4[1]" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) != (subscript_expression "pcVar4[1]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" if (parenthesized_expression "(pcVar5[2] != pcVar4[2])" ( (binary_expression "pcVar5[2] != pcVar4[2]" (subscript_expression "pcVar5[2]" identifier [ number_literal ]) != (subscript_expression "pcVar4[2]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 2;" (assignment_expression "pcVar5 = pcVar5 + 2" identifier = (binary_expression "pcVar5 + 2" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" if (parenthesized_expression "(pcVar5[3] != pcVar4[3])" ( (binary_expression "pcVar5[3] != pcVar4[3]" (subscript_expression "pcVar5[3]" identifier [ number_literal ]) != (subscript_expression "pcVar4[3]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 3;" (assignment_expression "pcVar5 = pcVar5 + 3" identifier = (binary_expression "pcVar5 + 3" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" if (parenthesized_expression "(pcVar5[4] != pcVar4[4])" ( (binary_expression "pcVar5[4] != pcVar4[4]" (subscript_expression "pcVar5[4]" identifier [ number_literal ]) != (subscript_expression "pcVar4[4]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 4;" (assignment_expression "pcVar5 = pcVar5 + 4" identifier = (binary_expression "pcVar5 + 4" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" if (parenthesized_expression "(pcVar5[5] != pcVar4[5])" ( (binary_expression "pcVar5[5] != pcVar4[5]" (subscript_expression "pcVar5[5]" identifier [ number_literal ]) != (subscript_expression "pcVar4[5]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 5;" (assignment_expression "pcVar5 = pcVar5 + 5" identifier = (binary_expression "pcVar5 + 5" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" if (parenthesized_expression "(pcVar5[6] != pcVar4[6])" ( (binary_expression "pcVar5[6] != pcVar4[6]" (subscript_expression "pcVar5[6]" identifier [ number_literal ]) != (subscript_expression "pcVar4[6]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 6;" (assignment_expression "pcVar5 = pcVar5 + 6" identifier = (binary_expression "pcVar5 + 6" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" if (parenthesized_expression "(pcVar5[7] != pcVar4[7])" ( (binary_expression "pcVar5[7] != pcVar4[7]" (subscript_expression "pcVar5[7]" identifier [ number_literal ]) != (subscript_expression "pcVar4[7]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 7;" (assignment_expression "pcVar5 = pcVar5 + 7" identifier = (binary_expression "pcVar5 + 7" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar5 = pcVar5 + 8;" (assignment_expression "pcVar5 = pcVar5 + 8" identifier = (binary_expression "pcVar5 + 8" identifier + number_literal)) ;) (expression_statement "pcVar4 = pcVar4 + 8;" (assignment_expression "pcVar4 = pcVar4 + 8" identifier = (binary_expression "pcVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062))" ( (binary_expression "*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062)" (binary_expression "*pcVar5 == *pcVar4" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar4" * identifier)) && (binary_expression "pcVar5 < (char *)(DAT_00032ee8 + 0x68062)" identifier < (cast_expression "(char *)(DAT_00032ee8 + 0x68062)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00032ee8 + 0x68062)" ( (binary_expression "DAT_00032ee8 + 0x68062" identifier + number_literal) ))))) )) ;) (expression_statement "uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);" (assignment_expression "uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" identifier = (binary_expression "0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" number_literal - (parenthesized_expression "((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" ( (binary_expression "(int)(DAT_00032ee8 + 0x68062) - (int)pcVar5" (cast_expression "(int)(DAT_00032ee8 + 0x68062)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(DAT_00032ee8 + 0x68062)" ( (binary_expression "DAT_00032ee8 + 0x68062" identifier + number_literal) ))) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;" if (parenthesized_expression "((int)uVar6 <= (int)uVar7)" ( (binary_expression "(int)uVar6 <= (int)uVar7" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00013410;" goto statement_identifier ;)) (if_statement "if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }" if (parenthesized_expression "(DAT_0002f4b0 <= (int)uVar6)" ( (binary_expression "DAT_0002f4b0 <= (int)uVar6" identifier <= (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        DAT_00032efc = param_1;\n        return uVar6;\n      }" { (expression_statement "DAT_00032efc = param_1;" (assignment_expression "DAT_00032efc = param_1" identifier = identifier) ;) (return_statement "return uVar6;" return identifier ;) })) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" identifier = (pointer_expression "*(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" * (cast_expression "(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (binary_expression "(int)&DAT_00033320 + (param_1 & 0x7fff) * 2" (cast_expression "(int)&DAT_00033320" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_00033320" & identifier)) + (binary_expression "(param_1 & 0x7fff) * 2" (parenthesized_expression "(param_1 & 0x7fff)" ( (binary_expression "param_1 & 0x7fff" identifier & number_literal) )) * number_literal)) ))))) ;) (expression_statement "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);" (assignment_expression "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" identifier = (pointer_expression "*(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" * (cast_expression "(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00032ee8 + 0x67f5f + uVar6)" ( (binary_expression "DAT_00032ee8 + 0x67f5f + uVar6" (binary_expression "DAT_00032ee8 + 0x67f5f" identifier + number_literal) + identifier) ))))) ;) (expression_statement "local_27 = pcVar1[uVar6];" (assignment_expression "local_27 = pcVar1[uVar6]" identifier = (subscript_expression "pcVar1[uVar6]" identifier [ identifier ])) ;) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" identifier = identifier) ;) }) (else_clause "else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" else (compound_statement "{\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" { (labeled_statement "LAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" statement_identifier : (expression_statement "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" identifier = (pointer_expression "*(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" * (cast_expression "(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (binary_expression "(int)&DAT_00033320 + (param_1 & 0x7fff) * 2" (cast_expression "(int)&DAT_00033320" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_00033320" & identifier)) + (binary_expression "(param_1 & 0x7fff) * 2" (parenthesized_expression "(param_1 & 0x7fff)" ( (binary_expression "param_1 & 0x7fff" identifier & number_literal) )) * number_literal)) ))))) ;)) }))) (expression_statement "param_1 = (uint)uVar2;" (assignment_expression "param_1 = (uint)uVar2" identifier = (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }" if (parenthesized_expression "((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0))" ( (binary_expression "(param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)" (parenthesized_expression "(param_1 <= uVar9 - 0x7efa)" ( (binary_expression "param_1 <= uVar9 - 0x7efa" identifier <= (binary_expression "uVar9 - 0x7efa" identifier - number_literal)) )) || (parenthesized_expression "(uVar8 = uVar8 - 1, uVar8 == 0)" ( (comma_expression "uVar8 = uVar8 - 1, uVar8 == 0" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) , (binary_expression "uVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }" { (if_statement "if (!bVar3) {\n        return uVar7;\n      }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n        return uVar7;\n      }" { (return_statement "return uVar7;" return identifier ;) })) (expression_statement "DAT_00032efc = local_20;" (assignment_expression "DAT_00032efc = local_20" identifier = identifier) ;) (return_statement "return uVar7;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.cx replaced with injection: get_pc_thunk_cx */\n\nint __regparm3 longest_match(IPos cur_match)\n\n{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &window + strstart;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < strstart) {\n    uVar9 = strstart;\n  }\n  local_26 = (&DAT_00067f5f)[prev_length + strstart];\n  local_27 = pcVar1[prev_length];\n  uVar8 = max_chain_length;\n  if (good_match <= prev_length) {\n    uVar8 = max_chain_length >> 2;\n  }\n  local_20 = match_start;\n  uVar7 = prev_length;\n  do {\n    if (((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])) {\n      pcVar4 = &DAT_00067f62 + cur_match;\n      pcVar5 = &DAT_00067f62 + strstart;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));\n      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n      local_26 = (&DAT_00067f5f)[uVar6 + strstart];\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = cur_match;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }\n    cur_match = (IPos)uVar2;\n    if ((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      match_start = local_20;\n      return uVar7;\n    }\n  } while( true );\n}\n\n" comment (function_definition "int __regparm3 longest_match(IPos cur_match)\n\n{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &window + strstart;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < strstart) {\n    uVar9 = strstart;\n  }\n  local_26 = (&DAT_00067f5f)[prev_length + strstart];\n  local_27 = pcVar1[prev_length];\n  uVar8 = max_chain_length;\n  if (good_match <= prev_length) {\n    uVar8 = max_chain_length >> 2;\n  }\n  local_20 = match_start;\n  uVar7 = prev_length;\n  do {\n    if (((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])) {\n      pcVar4 = &DAT_00067f62 + cur_match;\n      pcVar5 = &DAT_00067f62 + strstart;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));\n      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n      local_26 = (&DAT_00067f5f)[uVar6 + strstart];\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = cur_match;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }\n    cur_match = (IPos)uVar2;\n    if ((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      match_start = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "longest_match(IPos cur_match)" identifier (parameter_list "(IPos cur_match)" ( (parameter_declaration "IPos cur_match" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &window + strstart;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < strstart) {\n    uVar9 = strstart;\n  }\n  local_26 = (&DAT_00067f5f)[prev_length + strstart];\n  local_27 = pcVar1[prev_length];\n  uVar8 = max_chain_length;\n  if (good_match <= prev_length) {\n    uVar8 = max_chain_length >> 2;\n  }\n  local_20 = match_start;\n  uVar7 = prev_length;\n  do {\n    if (((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])) {\n      pcVar4 = &DAT_00067f62 + cur_match;\n      pcVar5 = &DAT_00067f62 + strstart;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));\n      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n      local_26 = (&DAT_00067f5f)[uVar6 + strstart];\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = cur_match;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }\n    cur_match = (IPos)uVar2;\n    if ((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      match_start = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char local_27;" primitive_type identifier ;) (declaration "char local_26;" primitive_type identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "pcVar1 = &window + strstart;" (assignment_expression "pcVar1 = &window + strstart" identifier = (binary_expression "&window + strstart" (pointer_expression "&window" & identifier) + identifier)) ;) (expression_statement "uVar9 = 0x7efa;" (assignment_expression "uVar9 = 0x7efa" identifier = number_literal) ;) (if_statement "if (0x7ef9 < strstart) {\n    uVar9 = strstart;\n  }" if (parenthesized_expression "(0x7ef9 < strstart)" ( (binary_expression "0x7ef9 < strstart" number_literal < identifier) )) (compound_statement "{\n    uVar9 = strstart;\n  }" { (expression_statement "uVar9 = strstart;" (assignment_expression "uVar9 = strstart" identifier = identifier) ;) })) (expression_statement "local_26 = (&DAT_00067f5f)[prev_length + strstart];" (assignment_expression "local_26 = (&DAT_00067f5f)[prev_length + strstart]" identifier = (subscript_expression "(&DAT_00067f5f)[prev_length + strstart]" (parenthesized_expression "(&DAT_00067f5f)" ( (pointer_expression "&DAT_00067f5f" & identifier) )) [ (binary_expression "prev_length + strstart" identifier + identifier) ])) ;) (expression_statement "local_27 = pcVar1[prev_length];" (assignment_expression "local_27 = pcVar1[prev_length]" identifier = (subscript_expression "pcVar1[prev_length]" identifier [ identifier ])) ;) (expression_statement "uVar8 = max_chain_length;" (assignment_expression "uVar8 = max_chain_length" identifier = identifier) ;) (if_statement "if (good_match <= prev_length) {\n    uVar8 = max_chain_length >> 2;\n  }" if (parenthesized_expression "(good_match <= prev_length)" ( (binary_expression "good_match <= prev_length" identifier <= identifier) )) (compound_statement "{\n    uVar8 = max_chain_length >> 2;\n  }" { (expression_statement "uVar8 = max_chain_length >> 2;" (assignment_expression "uVar8 = max_chain_length >> 2" identifier = (binary_expression "max_chain_length >> 2" identifier >> number_literal)) ;) })) (expression_statement "local_20 = match_start;" (assignment_expression "local_20 = match_start" identifier = identifier) ;) (expression_statement "uVar7 = prev_length;" (assignment_expression "uVar7 = prev_length" identifier = identifier) ;) (do_statement "do {\n    if (((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])) {\n      pcVar4 = &DAT_00067f62 + cur_match;\n      pcVar5 = &DAT_00067f62 + strstart;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));\n      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n      local_26 = (&DAT_00067f5f)[uVar6 + strstart];\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = cur_match;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }\n    cur_match = (IPos)uVar2;\n    if ((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      match_start = local_20;\n      return uVar7;\n    }\n  } while( true );" do (compound_statement "{\n    if (((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])) {\n      pcVar4 = &DAT_00067f62 + cur_match;\n      pcVar5 = &DAT_00067f62 + strstart;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));\n      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n      local_26 = (&DAT_00067f5f)[uVar6 + strstart];\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = cur_match;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }\n    cur_match = (IPos)uVar2;\n    if ((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      match_start = local_20;\n      return uVar7;\n    }\n  }" { (if_statement "if (((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])) {\n      pcVar4 = &DAT_00067f62 + cur_match;\n      pcVar5 = &DAT_00067f62 + strstart;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));\n      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n      local_26 = (&DAT_00067f5f)[uVar6 + strstart];\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = cur_match;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }" if (parenthesized_expression "(((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart]))" ( (binary_expression "((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)) &&\n       ((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])" (parenthesized_expression "((((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1))" ( (binary_expression "(((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)) && ((&window)[cur_match] == *pcVar1)" (parenthesized_expression "(((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26))" ( (binary_expression "((&window + cur_match)[uVar7] == local_27) &&\n         ((&DAT_00067f5f)[uVar7 + cur_match] == local_26)" (parenthesized_expression "((&window + cur_match)[uVar7] == local_27)" ( (binary_expression "(&window + cur_match)[uVar7] == local_27" (subscript_expression "(&window + cur_match)[uVar7]" (parenthesized_expression "(&window + cur_match)" ( (binary_expression "&window + cur_match" (pointer_expression "&window" & identifier) + identifier) )) [ identifier ]) == identifier) )) && (parenthesized_expression "((&DAT_00067f5f)[uVar7 + cur_match] == local_26)" ( (binary_expression "(&DAT_00067f5f)[uVar7 + cur_match] == local_26" (subscript_expression "(&DAT_00067f5f)[uVar7 + cur_match]" (parenthesized_expression "(&DAT_00067f5f)" ( (pointer_expression "&DAT_00067f5f" & identifier) )) [ (binary_expression "uVar7 + cur_match" identifier + identifier) ]) == identifier) ))) )) && (parenthesized_expression "((&window)[cur_match] == *pcVar1)" ( (binary_expression "(&window)[cur_match] == *pcVar1" (subscript_expression "(&window)[cur_match]" (parenthesized_expression "(&window)" ( (pointer_expression "&window" & identifier) )) [ identifier ]) == (pointer_expression "*pcVar1" * identifier)) ))) )) && (parenthesized_expression "((&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart])" ( (binary_expression "(&DAT_00067f61)[cur_match] == (&DAT_00067f61)[strstart]" (subscript_expression "(&DAT_00067f61)[cur_match]" (parenthesized_expression "(&DAT_00067f61)" ( (pointer_expression "&DAT_00067f61" & identifier) )) [ identifier ]) == (subscript_expression "(&DAT_00067f61)[strstart]" (parenthesized_expression "(&DAT_00067f61)" ( (pointer_expression "&DAT_00067f61" & identifier) )) [ identifier ])) ))) )) (compound_statement "{\n      pcVar4 = &DAT_00067f62 + cur_match;\n      pcVar5 = &DAT_00067f62 + strstart;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));\n      uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n      local_26 = (&DAT_00067f5f)[uVar6 + strstart];\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = cur_match;\n    }" { (expression_statement "pcVar4 = &DAT_00067f62 + cur_match;" (assignment_expression "pcVar4 = &DAT_00067f62 + cur_match" identifier = (binary_expression "&DAT_00067f62 + cur_match" (pointer_expression "&DAT_00067f62" & identifier) + identifier)) ;) (expression_statement "pcVar5 = &DAT_00067f62 + strstart;" (assignment_expression "pcVar5 = &DAT_00067f62 + strstart" identifier = (binary_expression "&DAT_00067f62 + strstart" (pointer_expression "&DAT_00067f62" & identifier) + identifier)) ;) (do_statement "do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062));" do (compound_statement "{\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      }" { (if_statement "if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" if (parenthesized_expression "(pcVar5[1] != pcVar4[1])" ( (binary_expression "pcVar5[1] != pcVar4[1]" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) != (subscript_expression "pcVar4[1]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" if (parenthesized_expression "(pcVar5[2] != pcVar4[2])" ( (binary_expression "pcVar5[2] != pcVar4[2]" (subscript_expression "pcVar5[2]" identifier [ number_literal ]) != (subscript_expression "pcVar4[2]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 2;" (assignment_expression "pcVar5 = pcVar5 + 2" identifier = (binary_expression "pcVar5 + 2" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" if (parenthesized_expression "(pcVar5[3] != pcVar4[3])" ( (binary_expression "pcVar5[3] != pcVar4[3]" (subscript_expression "pcVar5[3]" identifier [ number_literal ]) != (subscript_expression "pcVar4[3]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 3;" (assignment_expression "pcVar5 = pcVar5 + 3" identifier = (binary_expression "pcVar5 + 3" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" if (parenthesized_expression "(pcVar5[4] != pcVar4[4])" ( (binary_expression "pcVar5[4] != pcVar4[4]" (subscript_expression "pcVar5[4]" identifier [ number_literal ]) != (subscript_expression "pcVar4[4]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 4;" (assignment_expression "pcVar5 = pcVar5 + 4" identifier = (binary_expression "pcVar5 + 4" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" if (parenthesized_expression "(pcVar5[5] != pcVar4[5])" ( (binary_expression "pcVar5[5] != pcVar4[5]" (subscript_expression "pcVar5[5]" identifier [ number_literal ]) != (subscript_expression "pcVar4[5]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 5;" (assignment_expression "pcVar5 = pcVar5 + 5" identifier = (binary_expression "pcVar5 + 5" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" if (parenthesized_expression "(pcVar5[6] != pcVar4[6])" ( (binary_expression "pcVar5[6] != pcVar4[6]" (subscript_expression "pcVar5[6]" identifier [ number_literal ]) != (subscript_expression "pcVar4[6]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 6;" (assignment_expression "pcVar5 = pcVar5 + 6" identifier = (binary_expression "pcVar5 + 6" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" if (parenthesized_expression "(pcVar5[7] != pcVar4[7])" ( (binary_expression "pcVar5[7] != pcVar4[7]" (subscript_expression "pcVar5[7]" identifier [ number_literal ]) != (subscript_expression "pcVar4[7]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 7;" (assignment_expression "pcVar5 = pcVar5 + 7" identifier = (binary_expression "pcVar5 + 7" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar5 = pcVar5 + 8;" (assignment_expression "pcVar5 = pcVar5 + 8" identifier = (binary_expression "pcVar5 + 8" identifier + number_literal)) ;) (expression_statement "pcVar4 = pcVar4 + 8;" (assignment_expression "pcVar4 = pcVar4 + 8" identifier = (binary_expression "pcVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062))" ( (binary_expression "*pcVar5 == *pcVar4 && pcVar5 < (char *)(strstart + 0x68062)" (binary_expression "*pcVar5 == *pcVar4" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar4" * identifier)) && (binary_expression "pcVar5 < (char *)(strstart + 0x68062)" identifier < (cast_expression "(char *)(strstart + 0x68062)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(strstart + 0x68062)" ( (binary_expression "strstart + 0x68062" identifier + number_literal) ))))) )) ;) (expression_statement "uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5);" (assignment_expression "uVar6 = 0x102 - ((int)(strstart + 0x68062) - (int)pcVar5)" identifier = (binary_expression "0x102 - ((int)(strstart + 0x68062) - (int)pcVar5)" number_literal - (parenthesized_expression "((int)(strstart + 0x68062) - (int)pcVar5)" ( (binary_expression "(int)(strstart + 0x68062) - (int)pcVar5" (cast_expression "(int)(strstart + 0x68062)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(strstart + 0x68062)" ( (binary_expression "strstart + 0x68062" identifier + number_literal) ))) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;" if (parenthesized_expression "((int)uVar6 <= (int)uVar7)" ( (binary_expression "(int)uVar6 <= (int)uVar7" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00013410;" goto statement_identifier ;)) (if_statement "if (nice_match <= (int)uVar6) {\n        match_start = cur_match;\n        return uVar6;\n      }" if (parenthesized_expression "(nice_match <= (int)uVar6)" ( (binary_expression "nice_match <= (int)uVar6" identifier <= (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        match_start = cur_match;\n        return uVar6;\n      }" { (expression_statement "match_start = cur_match;" (assignment_expression "match_start = cur_match" identifier = identifier) ;) (return_statement "return uVar6;" return identifier ;) })) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2)" identifier = (pointer_expression "*(ushort *)((int)&prev + (cur_match & 0x7fff) * 2)" * (cast_expression "(ushort *)((int)&prev + (cur_match & 0x7fff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prev + (cur_match & 0x7fff) * 2)" ( (binary_expression "(int)&prev + (cur_match & 0x7fff) * 2" (cast_expression "(int)&prev" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prev" & identifier)) + (binary_expression "(cur_match & 0x7fff) * 2" (parenthesized_expression "(cur_match & 0x7fff)" ( (binary_expression "cur_match & 0x7fff" identifier & number_literal) )) * number_literal)) ))))) ;) (expression_statement "local_26 = (&DAT_00067f5f)[uVar6 + strstart];" (assignment_expression "local_26 = (&DAT_00067f5f)[uVar6 + strstart]" identifier = (subscript_expression "(&DAT_00067f5f)[uVar6 + strstart]" (parenthesized_expression "(&DAT_00067f5f)" ( (pointer_expression "&DAT_00067f5f" & identifier) )) [ (binary_expression "uVar6 + strstart" identifier + identifier) ])) ;) (expression_statement "local_27 = pcVar1[uVar6];" (assignment_expression "local_27 = pcVar1[uVar6]" identifier = (subscript_expression "pcVar1[uVar6]" identifier [ identifier ])) ;) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "local_20 = cur_match;" (assignment_expression "local_20 = cur_match" identifier = identifier) ;) }) (else_clause "else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }" else (compound_statement "{\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);\n    }" { (labeled_statement "LAB_00013410:\n      uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);" statement_identifier : (expression_statement "uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&prev + (cur_match & 0x7fff) * 2)" identifier = (pointer_expression "*(ushort *)((int)&prev + (cur_match & 0x7fff) * 2)" * (cast_expression "(ushort *)((int)&prev + (cur_match & 0x7fff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&prev + (cur_match & 0x7fff) * 2)" ( (binary_expression "(int)&prev + (cur_match & 0x7fff) * 2" (cast_expression "(int)&prev" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prev" & identifier)) + (binary_expression "(cur_match & 0x7fff) * 2" (parenthesized_expression "(cur_match & 0x7fff)" ( (binary_expression "cur_match & 0x7fff" identifier & number_literal) )) * number_literal)) ))))) ;)) }))) (expression_statement "cur_match = (IPos)uVar2;" (assignment_expression "cur_match = (IPos)uVar2" identifier = (cast_expression "(IPos)uVar2" ( (type_descriptor "IPos" type_identifier) ) identifier)) ;) (if_statement "if ((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      match_start = local_20;\n      return uVar7;\n    }" if (parenthesized_expression "((cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0))" ( (binary_expression "(cur_match <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)" (parenthesized_expression "(cur_match <= uVar9 - 0x7efa)" ( (binary_expression "cur_match <= uVar9 - 0x7efa" identifier <= (binary_expression "uVar9 - 0x7efa" identifier - number_literal)) )) || (parenthesized_expression "(uVar8 = uVar8 - 1, uVar8 == 0)" ( (comma_expression "uVar8 = uVar8 - 1, uVar8 == 0" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) , (binary_expression "uVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      if (!bVar3) {\n        return uVar7;\n      }\n      match_start = local_20;\n      return uVar7;\n    }" { (if_statement "if (!bVar3) {\n        return uVar7;\n      }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n        return uVar7;\n      }" { (return_statement "return uVar7;" return identifier ;) })) (expression_statement "match_start = local_20;" (assignment_expression "match_start = local_20" identifier = identifier) ;) (return_statement "return uVar7;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "uint __regparm3 FUN_00013360(uint param_1)\n\n{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}\n\n" (function_definition "uint __regparm3 FUN_00013360(uint param_1)\n\n{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" type_identifier (ERROR "__regparm3" identifier) (function_declarator "FUN_00013360(uint param_1)" identifier (parameter_list "(uint param_1)" ( (parameter_declaration "uint param_1" type_identifier identifier) ))) (compound_statement "{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char local_27;" primitive_type identifier ;) (declaration "char local_26;" primitive_type identifier ;) (declaration "uint local_20;" type_identifier identifier ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "pcVar1 = &DAT_00067f60 + DAT_00032ee8;" (assignment_expression "pcVar1 = &DAT_00067f60 + DAT_00032ee8" identifier = (binary_expression "&DAT_00067f60 + DAT_00032ee8" (pointer_expression "&DAT_00067f60" & identifier) + identifier)) ;) (expression_statement "uVar9 = 0x7efa;" (assignment_expression "uVar9 = 0x7efa" identifier = number_literal) ;) (if_statement "if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }" if (parenthesized_expression "(0x7ef9 < DAT_00032ee8)" ( (binary_expression "0x7ef9 < DAT_00032ee8" number_literal < identifier) )) (compound_statement "{\n    uVar9 = DAT_00032ee8;\n  }" { (expression_statement "uVar9 = DAT_00032ee8;" (assignment_expression "uVar9 = DAT_00032ee8" identifier = identifier) ;) })) (expression_statement "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);" (assignment_expression "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" identifier = (pointer_expression "*(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" * (cast_expression "(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" ( (binary_expression "DAT_00032ee8 + 0x67f5f + DAT_00032ef8" (binary_expression "DAT_00032ee8 + 0x67f5f" identifier + number_literal) + identifier) ))))) ;) (expression_statement "local_27 = pcVar1[DAT_00032ef8];" (assignment_expression "local_27 = pcVar1[DAT_00032ef8]" identifier = (subscript_expression "pcVar1[DAT_00032ef8]" identifier [ identifier ])) ;) (expression_statement "uVar8 = DAT_00032ef4;" (assignment_expression "uVar8 = DAT_00032ef4" identifier = identifier) ;) (if_statement "if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }" if (parenthesized_expression "(DAT_00032ef0 <= DAT_00032ef8)" ( (binary_expression "DAT_00032ef0 <= DAT_00032ef8" identifier <= identifier) )) (compound_statement "{\n    uVar8 = DAT_00032ef4 >> 2;\n  }" { (expression_statement "uVar8 = DAT_00032ef4 >> 2;" (assignment_expression "uVar8 = DAT_00032ef4 >> 2" identifier = (binary_expression "DAT_00032ef4 >> 2" identifier >> number_literal)) ;) })) (expression_statement "local_20 = DAT_00032efc;" (assignment_expression "local_20 = DAT_00032efc" identifier = identifier) ;) (expression_statement "uVar7 = DAT_00032ef8;" (assignment_expression "uVar7 = DAT_00032ef8" identifier = identifier) ;) (do_statement "do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );" do (compound_statement "{\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  }" { (if_statement "if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" if (parenthesized_expression "(((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8]))" ( (binary_expression "((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])" (parenthesized_expression "((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1))" ( (binary_expression "(((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)" (parenthesized_expression "(((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26))" ( (binary_expression "((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)" (parenthesized_expression "((&DAT_00067f60 + param_1)[uVar7] == local_27)" ( (binary_expression "(&DAT_00067f60 + param_1)[uVar7] == local_27" (subscript_expression "(&DAT_00067f60 + param_1)[uVar7]" (parenthesized_expression "(&DAT_00067f60 + param_1)" ( (binary_expression "&DAT_00067f60 + param_1" (pointer_expression "&DAT_00067f60" & identifier) + identifier) )) [ identifier ]) == identifier) )) && (parenthesized_expression "(*(char *)(param_1 + 0x67f5f + uVar7) == local_26)" ( (binary_expression "*(char *)(param_1 + 0x67f5f + uVar7) == local_26" (pointer_expression "*(char *)(param_1 + 0x67f5f + uVar7)" * (cast_expression "(char *)(param_1 + 0x67f5f + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x67f5f + uVar7)" ( (binary_expression "param_1 + 0x67f5f + uVar7" (binary_expression "param_1 + 0x67f5f" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "((&DAT_00067f60)[param_1] == *pcVar1)" ( (binary_expression "(&DAT_00067f60)[param_1] == *pcVar1" (subscript_expression "(&DAT_00067f60)[param_1]" (parenthesized_expression "(&DAT_00067f60)" ( (pointer_expression "&DAT_00067f60" & identifier) )) [ identifier ]) == (pointer_expression "*pcVar1" * identifier)) ))) )) && (parenthesized_expression "((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])" ( (binary_expression "(&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8]" (subscript_expression "(&DAT_00067f61)[param_1]" (parenthesized_expression "(&DAT_00067f61)" ( (pointer_expression "&DAT_00067f61" & identifier) )) [ identifier ]) == (subscript_expression "(&DAT_00067f61)[DAT_00032ee8]" (parenthesized_expression "(&DAT_00067f61)" ( (pointer_expression "&DAT_00067f61" & identifier) )) [ identifier ])) ))) )) (compound_statement "{\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }" { (expression_statement "pcVar4 = &DAT_00067f62 + param_1;" (assignment_expression "pcVar4 = &DAT_00067f62 + param_1" identifier = (binary_expression "&DAT_00067f62 + param_1" (pointer_expression "&DAT_00067f62" & identifier) + identifier)) ;) (expression_statement "pcVar5 = &DAT_00067f62 + DAT_00032ee8;" (assignment_expression "pcVar5 = &DAT_00067f62 + DAT_00032ee8" identifier = (binary_expression "&DAT_00067f62 + DAT_00032ee8" (pointer_expression "&DAT_00067f62" & identifier) + identifier)) ;) (do_statement "do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));" do (compound_statement "{\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      }" { (if_statement "if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" if (parenthesized_expression "(pcVar5[1] != pcVar4[1])" ( (binary_expression "pcVar5[1] != pcVar4[1]" (subscript_expression "pcVar5[1]" identifier [ number_literal ]) != (subscript_expression "pcVar4[1]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" if (parenthesized_expression "(pcVar5[2] != pcVar4[2])" ( (binary_expression "pcVar5[2] != pcVar4[2]" (subscript_expression "pcVar5[2]" identifier [ number_literal ]) != (subscript_expression "pcVar4[2]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 2;" (assignment_expression "pcVar5 = pcVar5 + 2" identifier = (binary_expression "pcVar5 + 2" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" if (parenthesized_expression "(pcVar5[3] != pcVar4[3])" ( (binary_expression "pcVar5[3] != pcVar4[3]" (subscript_expression "pcVar5[3]" identifier [ number_literal ]) != (subscript_expression "pcVar4[3]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 3;" (assignment_expression "pcVar5 = pcVar5 + 3" identifier = (binary_expression "pcVar5 + 3" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" if (parenthesized_expression "(pcVar5[4] != pcVar4[4])" ( (binary_expression "pcVar5[4] != pcVar4[4]" (subscript_expression "pcVar5[4]" identifier [ number_literal ]) != (subscript_expression "pcVar4[4]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 4;" (assignment_expression "pcVar5 = pcVar5 + 4" identifier = (binary_expression "pcVar5 + 4" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" if (parenthesized_expression "(pcVar5[5] != pcVar4[5])" ( (binary_expression "pcVar5[5] != pcVar4[5]" (subscript_expression "pcVar5[5]" identifier [ number_literal ]) != (subscript_expression "pcVar4[5]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 5;" (assignment_expression "pcVar5 = pcVar5 + 5" identifier = (binary_expression "pcVar5 + 5" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" if (parenthesized_expression "(pcVar5[6] != pcVar4[6])" ( (binary_expression "pcVar5[6] != pcVar4[6]" (subscript_expression "pcVar5[6]" identifier [ number_literal ]) != (subscript_expression "pcVar4[6]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 6;" (assignment_expression "pcVar5 = pcVar5 + 6" identifier = (binary_expression "pcVar5 + 6" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (if_statement "if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" if (parenthesized_expression "(pcVar5[7] != pcVar4[7])" ( (binary_expression "pcVar5[7] != pcVar4[7]" (subscript_expression "pcVar5[7]" identifier [ number_literal ]) != (subscript_expression "pcVar4[7]" identifier [ number_literal ])) )) (compound_statement "{\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" { (expression_statement "pcVar5 = pcVar5 + 7;" (assignment_expression "pcVar5 = pcVar5 + 7" identifier = (binary_expression "pcVar5 + 7" identifier + number_literal)) ;) (break_statement "break;" break ;) })) (expression_statement "pcVar5 = pcVar5 + 8;" (assignment_expression "pcVar5 = pcVar5 + 8" identifier = (binary_expression "pcVar5 + 8" identifier + number_literal)) ;) (expression_statement "pcVar4 = pcVar4 + 8;" (assignment_expression "pcVar4 = pcVar4 + 8" identifier = (binary_expression "pcVar4 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062))" ( (binary_expression "*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062)" (binary_expression "*pcVar5 == *pcVar4" (pointer_expression "*pcVar5" * identifier) == (pointer_expression "*pcVar4" * identifier)) && (binary_expression "pcVar5 < (char *)(DAT_00032ee8 + 0x68062)" identifier < (cast_expression "(char *)(DAT_00032ee8 + 0x68062)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00032ee8 + 0x68062)" ( (binary_expression "DAT_00032ee8 + 0x68062" identifier + number_literal) ))))) )) ;) (expression_statement "uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);" (assignment_expression "uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" identifier = (binary_expression "0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" number_literal - (parenthesized_expression "((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" ( (binary_expression "(int)(DAT_00032ee8 + 0x68062) - (int)pcVar5" (cast_expression "(int)(DAT_00032ee8 + 0x68062)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(DAT_00032ee8 + 0x68062)" ( (binary_expression "DAT_00032ee8 + 0x68062" identifier + number_literal) ))) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;" if (parenthesized_expression "((int)uVar6 <= (int)uVar7)" ( (binary_expression "(int)uVar6 <= (int)uVar7" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00013410;" goto statement_identifier ;)) (if_statement "if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }" if (parenthesized_expression "(DAT_0002f4b0 <= (int)uVar6)" ( (binary_expression "DAT_0002f4b0 <= (int)uVar6" identifier <= (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        DAT_00032efc = param_1;\n        return uVar6;\n      }" { (expression_statement "DAT_00032efc = param_1;" (assignment_expression "DAT_00032efc = param_1" identifier = identifier) ;) (return_statement "return uVar6;" return identifier ;) })) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" identifier = (pointer_expression "*(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" * (cast_expression "(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (binary_expression "(int)&DAT_00033320 + (param_1 & 0x7fff) * 2" (cast_expression "(int)&DAT_00033320" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_00033320" & identifier)) + (binary_expression "(param_1 & 0x7fff) * 2" (parenthesized_expression "(param_1 & 0x7fff)" ( (binary_expression "param_1 & 0x7fff" identifier & number_literal) )) * number_literal)) ))))) ;) (expression_statement "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);" (assignment_expression "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" identifier = (pointer_expression "*(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" * (cast_expression "(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_00032ee8 + 0x67f5f + uVar6)" ( (binary_expression "DAT_00032ee8 + 0x67f5f + uVar6" (binary_expression "DAT_00032ee8 + 0x67f5f" identifier + number_literal) + identifier) ))))) ;) (expression_statement "local_27 = pcVar1[uVar6];" (assignment_expression "local_27 = pcVar1[uVar6]" identifier = (subscript_expression "pcVar1[uVar6]" identifier [ identifier ])) ;) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" identifier = identifier) ;) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" identifier = identifier) ;) }) (else_clause "else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" else (compound_statement "{\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" { (labeled_statement "LAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" statement_identifier : (expression_statement "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" identifier = (pointer_expression "*(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" * (cast_expression "(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" ( (binary_expression "(int)&DAT_00033320 + (param_1 & 0x7fff) * 2" (cast_expression "(int)&DAT_00033320" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_00033320" & identifier)) + (binary_expression "(param_1 & 0x7fff) * 2" (parenthesized_expression "(param_1 & 0x7fff)" ( (binary_expression "param_1 & 0x7fff" identifier & number_literal) )) * number_literal)) ))))) ;)) }))) (expression_statement "param_1 = (uint)uVar2;" (assignment_expression "param_1 = (uint)uVar2" identifier = (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }" if (parenthesized_expression "((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0))" ( (binary_expression "(param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)" (parenthesized_expression "(param_1 <= uVar9 - 0x7efa)" ( (binary_expression "param_1 <= uVar9 - 0x7efa" identifier <= (binary_expression "uVar9 - 0x7efa" identifier - number_literal)) )) || (parenthesized_expression "(uVar8 = uVar8 - 1, uVar8 == 0)" ( (comma_expression "uVar8 = uVar8 - 1, uVar8 == 0" (assignment_expression "uVar8 = uVar8 - 1" identifier = (binary_expression "uVar8 - 1" identifier - number_literal)) , (binary_expression "uVar8 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }" { (if_statement "if (!bVar3) {\n        return uVar7;\n      }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n        return uVar7;\n      }" { (return_statement "return uVar7;" return identifier ;) })) (expression_statement "DAT_00032efc = local_20;" (assignment_expression "DAT_00032efc = local_20" identifier = identifier) ;) (return_statement "return uVar7;" return identifier ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )) [ IDENT ]) == IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == IDENT) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) == (pointer_expression * IDENT)) ))) )) && (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) == (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ])) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression & IDENT) + IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) && (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression & IDENT)) + (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * LIT)) ))))) ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT - LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT - LIT)) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (return_statement return IDENT ;) })) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "uint __regparm3 FUN_00013360(uint param_1)\n\n{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" (type_identifier "uint") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_00013360(uint param_1)" (identifier "FUN_00013360") (parameter_list "(uint param_1)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) () ")"))) (compound_statement "{\n  char *pcVar1;\n  ushort uVar2;\n  bool bVar3;\n  char *pcVar4;\n  char *pcVar5;\n  uint uVar6;\n  uint uVar7;\n  uint uVar8;\n  uint uVar9;\n  char local_27;\n  char local_26;\n  uint local_20;\n  \n  bVar3 = false;\n  pcVar1 = &DAT_00067f60 + DAT_00032ee8;\n  uVar9 = 0x7efa;\n  if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }\n  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);\n  local_27 = pcVar1[DAT_00032ef8];\n  uVar8 = DAT_00032ef4;\n  if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }\n  local_20 = DAT_00032efc;\n  uVar7 = DAT_00032ef8;\n  do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );\n}" ({ "{") (declaration "char *pcVar1;" (primitive_type "char") (pointer_declarator "*pcVar1" (* "*") (identifier "pcVar1")) (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "char local_27;" (primitive_type "char") (identifier "local_27") (; ";")) (declaration "char local_26;" (primitive_type "char") (identifier "local_26") (; ";")) (declaration "uint local_20;" (type_identifier "uint") (identifier "local_20") (; ";")) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (expression_statement "pcVar1 = &DAT_00067f60 + DAT_00032ee8;" (assignment_expression "pcVar1 = &DAT_00067f60 + DAT_00032ee8" (identifier "pcVar1") (= "=") (binary_expression "&DAT_00067f60 + DAT_00032ee8" (pointer_expression "&DAT_00067f60" (& "&") (identifier "DAT_00067f60")) (+ "+") (identifier "DAT_00032ee8"))) (; ";")) (expression_statement "uVar9 = 0x7efa;" (assignment_expression "uVar9 = 0x7efa" (identifier "uVar9") (= "=") (number_literal "0x7efa")) (; ";")) (if_statement "if (0x7ef9 < DAT_00032ee8) {\n    uVar9 = DAT_00032ee8;\n  }" (if "if") (parenthesized_expression "(0x7ef9 < DAT_00032ee8)" (( "(") (binary_expression "0x7ef9 < DAT_00032ee8" (number_literal "0x7ef9") (< "<") (identifier "DAT_00032ee8")) () ")")) (compound_statement "{\n    uVar9 = DAT_00032ee8;\n  }" ({ "{") (expression_statement "uVar9 = DAT_00032ee8;" (assignment_expression "uVar9 = DAT_00032ee8" (identifier "uVar9") (= "=") (identifier "DAT_00032ee8")) (; ";")) (} "}"))) (expression_statement "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);" (assignment_expression "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" (identifier "local_26") (= "=") (pointer_expression "*(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" (* "*") (cast_expression "(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00032ee8 + 0x67f5f + DAT_00032ef8)" (( "(") (binary_expression "DAT_00032ee8 + 0x67f5f + DAT_00032ef8" (binary_expression "DAT_00032ee8 + 0x67f5f" (identifier "DAT_00032ee8") (+ "+") (number_literal "0x67f5f")) (+ "+") (identifier "DAT_00032ef8")) () ")"))))) (; ";")) (expression_statement "local_27 = pcVar1[DAT_00032ef8];" (assignment_expression "local_27 = pcVar1[DAT_00032ef8]" (identifier "local_27") (= "=") (subscript_expression "pcVar1[DAT_00032ef8]" (identifier "pcVar1") ([ "[") (identifier "DAT_00032ef8") (] "]"))) (; ";")) (expression_statement "uVar8 = DAT_00032ef4;" (assignment_expression "uVar8 = DAT_00032ef4" (identifier "uVar8") (= "=") (identifier "DAT_00032ef4")) (; ";")) (if_statement "if (DAT_00032ef0 <= DAT_00032ef8) {\n    uVar8 = DAT_00032ef4 >> 2;\n  }" (if "if") (parenthesized_expression "(DAT_00032ef0 <= DAT_00032ef8)" (( "(") (binary_expression "DAT_00032ef0 <= DAT_00032ef8" (identifier "DAT_00032ef0") (<= "<=") (identifier "DAT_00032ef8")) () ")")) (compound_statement "{\n    uVar8 = DAT_00032ef4 >> 2;\n  }" ({ "{") (expression_statement "uVar8 = DAT_00032ef4 >> 2;" (assignment_expression "uVar8 = DAT_00032ef4 >> 2" (identifier "uVar8") (= "=") (binary_expression "DAT_00032ef4 >> 2" (identifier "DAT_00032ef4") (>> ">>") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "local_20 = DAT_00032efc;" (assignment_expression "local_20 = DAT_00032efc" (identifier "local_20") (= "=") (identifier "DAT_00032efc")) (; ";")) (expression_statement "uVar7 = DAT_00032ef8;" (assignment_expression "uVar7 = DAT_00032ef8" (identifier "uVar7") (= "=") (identifier "DAT_00032ef8")) (; ";")) (do_statement "do {\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }\n    param_1 = (uint)uVar2;\n    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }\n  }" ({ "{") (if_statement "if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }\n    else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" (if "if") (parenthesized_expression "(((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8]))" (( "(") (binary_expression "((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)) &&\n       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])" (parenthesized_expression "((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1))" (( "(") (binary_expression "(((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&\n        ((&DAT_00067f60)[param_1] == *pcVar1)" (parenthesized_expression "(((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26))" (( "(") (binary_expression "((&DAT_00067f60 + param_1)[uVar7] == local_27) &&\n         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)" (parenthesized_expression "((&DAT_00067f60 + param_1)[uVar7] == local_27)" (( "(") (binary_expression "(&DAT_00067f60 + param_1)[uVar7] == local_27" (subscript_expression "(&DAT_00067f60 + param_1)[uVar7]" (parenthesized_expression "(&DAT_00067f60 + param_1)" (( "(") (binary_expression "&DAT_00067f60 + param_1" (pointer_expression "&DAT_00067f60" (& "&") (identifier "DAT_00067f60")) (+ "+") (identifier "param_1")) () ")")) ([ "[") (identifier "uVar7") (] "]")) (== "==") (identifier "local_27")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x67f5f + uVar7) == local_26)" (( "(") (binary_expression "*(char *)(param_1 + 0x67f5f + uVar7) == local_26" (pointer_expression "*(char *)(param_1 + 0x67f5f + uVar7)" (* "*") (cast_expression "(char *)(param_1 + 0x67f5f + uVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x67f5f + uVar7)" (( "(") (binary_expression "param_1 + 0x67f5f + uVar7" (binary_expression "param_1 + 0x67f5f" (identifier "param_1") (+ "+") (number_literal "0x67f5f")) (+ "+") (identifier "uVar7")) () ")")))) (== "==") (identifier "local_26")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((&DAT_00067f60)[param_1] == *pcVar1)" (( "(") (binary_expression "(&DAT_00067f60)[param_1] == *pcVar1" (subscript_expression "(&DAT_00067f60)[param_1]" (parenthesized_expression "(&DAT_00067f60)" (( "(") (pointer_expression "&DAT_00067f60" (& "&") (identifier "DAT_00067f60")) () ")")) ([ "[") (identifier "param_1") (] "]")) (== "==") (pointer_expression "*pcVar1" (* "*") (identifier "pcVar1"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])" (( "(") (binary_expression "(&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8]" (subscript_expression "(&DAT_00067f61)[param_1]" (parenthesized_expression "(&DAT_00067f61)" (( "(") (pointer_expression "&DAT_00067f61" (& "&") (identifier "DAT_00067f61")) () ")")) ([ "[") (identifier "param_1") (] "]")) (== "==") (subscript_expression "(&DAT_00067f61)[DAT_00032ee8]" (parenthesized_expression "(&DAT_00067f61)" (( "(") (pointer_expression "&DAT_00067f61" (& "&") (identifier "DAT_00067f61")) () ")")) ([ "[") (identifier "DAT_00032ee8") (] "]"))) () ")"))) () ")")) (compound_statement "{\n      pcVar4 = &DAT_00067f62 + param_1;\n      pcVar5 = &DAT_00067f62 + DAT_00032ee8;\n      do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));\n      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);\n      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;\n      if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }\n      bVar3 = true;\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);\n      local_27 = pcVar1[uVar6];\n      uVar7 = uVar6;\n      local_20 = param_1;\n    }" ({ "{") (expression_statement "pcVar4 = &DAT_00067f62 + param_1;" (assignment_expression "pcVar4 = &DAT_00067f62 + param_1" (identifier "pcVar4") (= "=") (binary_expression "&DAT_00067f62 + param_1" (pointer_expression "&DAT_00067f62" (& "&") (identifier "DAT_00067f62")) (+ "+") (identifier "param_1"))) (; ";")) (expression_statement "pcVar5 = &DAT_00067f62 + DAT_00032ee8;" (assignment_expression "pcVar5 = &DAT_00067f62 + DAT_00032ee8" (identifier "pcVar5") (= "=") (binary_expression "&DAT_00067f62 + DAT_00032ee8" (pointer_expression "&DAT_00067f62" (& "&") (identifier "DAT_00067f62")) (+ "+") (identifier "DAT_00032ee8"))) (; ";")) (do_statement "do {\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));" (do "do") (compound_statement "{\n        if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }\n        if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }\n        if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }\n        if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }\n        if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }\n        if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }\n        if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }\n        pcVar5 = pcVar5 + 8;\n        pcVar4 = pcVar4 + 8;\n      }" ({ "{") (if_statement "if (pcVar5[1] != pcVar4[1]) {\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" (if "if") (parenthesized_expression "(pcVar5[1] != pcVar4[1])" (( "(") (binary_expression "pcVar5[1] != pcVar4[1]" (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]")) (!= "!=") (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar5 + 1;\n          break;\n        }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (pcVar5[2] != pcVar4[2]) {\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" (if "if") (parenthesized_expression "(pcVar5[2] != pcVar4[2])" (( "(") (binary_expression "pcVar5[2] != pcVar4[2]" (subscript_expression "pcVar5[2]" (identifier "pcVar5") ([ "[") (number_literal "2") (] "]")) (!= "!=") (subscript_expression "pcVar4[2]" (identifier "pcVar4") ([ "[") (number_literal "2") (] "]"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar5 + 2;\n          break;\n        }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 2;" (assignment_expression "pcVar5 = pcVar5 + 2" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 2" (identifier "pcVar5") (+ "+") (number_literal "2"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (pcVar5[3] != pcVar4[3]) {\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" (if "if") (parenthesized_expression "(pcVar5[3] != pcVar4[3])" (( "(") (binary_expression "pcVar5[3] != pcVar4[3]" (subscript_expression "pcVar5[3]" (identifier "pcVar5") ([ "[") (number_literal "3") (] "]")) (!= "!=") (subscript_expression "pcVar4[3]" (identifier "pcVar4") ([ "[") (number_literal "3") (] "]"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar5 + 3;\n          break;\n        }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 3;" (assignment_expression "pcVar5 = pcVar5 + 3" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 3" (identifier "pcVar5") (+ "+") (number_literal "3"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (pcVar5[4] != pcVar4[4]) {\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" (if "if") (parenthesized_expression "(pcVar5[4] != pcVar4[4])" (( "(") (binary_expression "pcVar5[4] != pcVar4[4]" (subscript_expression "pcVar5[4]" (identifier "pcVar5") ([ "[") (number_literal "4") (] "]")) (!= "!=") (subscript_expression "pcVar4[4]" (identifier "pcVar4") ([ "[") (number_literal "4") (] "]"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar5 + 4;\n          break;\n        }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 4;" (assignment_expression "pcVar5 = pcVar5 + 4" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 4" (identifier "pcVar5") (+ "+") (number_literal "4"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (pcVar5[5] != pcVar4[5]) {\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" (if "if") (parenthesized_expression "(pcVar5[5] != pcVar4[5])" (( "(") (binary_expression "pcVar5[5] != pcVar4[5]" (subscript_expression "pcVar5[5]" (identifier "pcVar5") ([ "[") (number_literal "5") (] "]")) (!= "!=") (subscript_expression "pcVar4[5]" (identifier "pcVar4") ([ "[") (number_literal "5") (] "]"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar5 + 5;\n          break;\n        }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 5;" (assignment_expression "pcVar5 = pcVar5 + 5" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 5" (identifier "pcVar5") (+ "+") (number_literal "5"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (pcVar5[6] != pcVar4[6]) {\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" (if "if") (parenthesized_expression "(pcVar5[6] != pcVar4[6])" (( "(") (binary_expression "pcVar5[6] != pcVar4[6]" (subscript_expression "pcVar5[6]" (identifier "pcVar5") ([ "[") (number_literal "6") (] "]")) (!= "!=") (subscript_expression "pcVar4[6]" (identifier "pcVar4") ([ "[") (number_literal "6") (] "]"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar5 + 6;\n          break;\n        }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 6;" (assignment_expression "pcVar5 = pcVar5 + 6" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 6" (identifier "pcVar5") (+ "+") (number_literal "6"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (pcVar5[7] != pcVar4[7]) {\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" (if "if") (parenthesized_expression "(pcVar5[7] != pcVar4[7])" (( "(") (binary_expression "pcVar5[7] != pcVar4[7]" (subscript_expression "pcVar5[7]" (identifier "pcVar5") ([ "[") (number_literal "7") (] "]")) (!= "!=") (subscript_expression "pcVar4[7]" (identifier "pcVar4") ([ "[") (number_literal "7") (] "]"))) () ")")) (compound_statement "{\n          pcVar5 = pcVar5 + 7;\n          break;\n        }" ({ "{") (expression_statement "pcVar5 = pcVar5 + 7;" (assignment_expression "pcVar5 = pcVar5 + 7" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 7" (identifier "pcVar5") (+ "+") (number_literal "7"))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "pcVar5 = pcVar5 + 8;" (assignment_expression "pcVar5 = pcVar5 + 8" (identifier "pcVar5") (= "=") (binary_expression "pcVar5 + 8" (identifier "pcVar5") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "pcVar4 = pcVar4 + 8;" (assignment_expression "pcVar4 = pcVar4 + 8" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 8" (identifier "pcVar4") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062))" (( "(") (binary_expression "*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062)" (binary_expression "*pcVar5 == *pcVar4" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (== "==") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (&& "&&") (binary_expression "pcVar5 < (char *)(DAT_00032ee8 + 0x68062)" (identifier "pcVar5") (< "<") (cast_expression "(char *)(DAT_00032ee8 + 0x68062)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00032ee8 + 0x68062)" (( "(") (binary_expression "DAT_00032ee8 + 0x68062" (identifier "DAT_00032ee8") (+ "+") (number_literal "0x68062")) () ")"))))) () ")")) (; ";")) (expression_statement "uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);" (assignment_expression "uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" (identifier "uVar6") (= "=") (binary_expression "0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" (number_literal "0x102") (- "-") (parenthesized_expression "((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5)" (( "(") (binary_expression "(int)(DAT_00032ee8 + 0x68062) - (int)pcVar5" (cast_expression "(int)(DAT_00032ee8 + 0x68062)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(DAT_00032ee8 + 0x68062)" (( "(") (binary_expression "DAT_00032ee8 + 0x68062" (identifier "DAT_00032ee8") (+ "+") (number_literal "0x68062")) () ")"))) (- "-") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5"))) () ")")))) (; ";")) (if_statement "if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;" (if "if") (parenthesized_expression "((int)uVar6 <= (int)uVar7)" (( "(") (binary_expression "(int)uVar6 <= (int)uVar7" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (<= "<=") (cast_expression "(int)uVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar7"))) () ")")) (goto_statement "goto LAB_00013410;" (goto "goto") (statement_identifier "LAB_00013410") (; ";"))) (if_statement "if (DAT_0002f4b0 <= (int)uVar6) {\n        DAT_00032efc = param_1;\n        return uVar6;\n      }" (if "if") (parenthesized_expression "(DAT_0002f4b0 <= (int)uVar6)" (( "(") (binary_expression "DAT_0002f4b0 <= (int)uVar6" (identifier "DAT_0002f4b0") (<= "<=") (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6"))) () ")")) (compound_statement "{\n        DAT_00032efc = param_1;\n        return uVar6;\n      }" ({ "{") (expression_statement "DAT_00032efc = param_1;" (assignment_expression "DAT_00032efc = param_1" (identifier "DAT_00032efc") (= "=") (identifier "param_1")) (; ";")) (return_statement "return uVar6;" (return "return") (identifier "uVar6") (; ";")) (} "}"))) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (expression_statement "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (* "*") (cast_expression "(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (( "(") (binary_expression "(int)&DAT_00033320 + (param_1 & 0x7fff) * 2" (cast_expression "(int)&DAT_00033320" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&DAT_00033320" (& "&") (identifier "DAT_00033320"))) (+ "+") (binary_expression "(param_1 & 0x7fff) * 2" (parenthesized_expression "(param_1 & 0x7fff)" (( "(") (binary_expression "param_1 & 0x7fff" (identifier "param_1") (& "&") (number_literal "0x7fff")) () ")")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (expression_statement "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);" (assignment_expression "local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" (identifier "local_26") (= "=") (pointer_expression "*(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" (* "*") (cast_expression "(char *)(DAT_00032ee8 + 0x67f5f + uVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_00032ee8 + 0x67f5f + uVar6)" (( "(") (binary_expression "DAT_00032ee8 + 0x67f5f + uVar6" (binary_expression "DAT_00032ee8 + 0x67f5f" (identifier "DAT_00032ee8") (+ "+") (number_literal "0x67f5f")) (+ "+") (identifier "uVar6")) () ")"))))) (; ";")) (expression_statement "local_27 = pcVar1[uVar6];" (assignment_expression "local_27 = pcVar1[uVar6]" (identifier "local_27") (= "=") (subscript_expression "pcVar1[uVar6]" (identifier "pcVar1") ([ "[") (identifier "uVar6") (] "]"))) (; ";")) (expression_statement "uVar7 = uVar6;" (assignment_expression "uVar7 = uVar6" (identifier "uVar7") (= "=") (identifier "uVar6")) (; ";")) (expression_statement "local_20 = param_1;" (assignment_expression "local_20 = param_1" (identifier "local_20") (= "=") (identifier "param_1")) (; ";")) (} "}")) (else_clause "else {\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" (else "else") (compound_statement "{\nLAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);\n    }" ({ "{") (labeled_statement "LAB_00013410:\n      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" (statement_identifier "LAB_00013410") (: ":") (expression_statement "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);" (assignment_expression "uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (identifier "uVar2") (= "=") (pointer_expression "*(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (* "*") (cast_expression "(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)&DAT_00033320 + (param_1 & 0x7fff) * 2)" (( "(") (binary_expression "(int)&DAT_00033320 + (param_1 & 0x7fff) * 2" (cast_expression "(int)&DAT_00033320" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&DAT_00033320" (& "&") (identifier "DAT_00033320"))) (+ "+") (binary_expression "(param_1 & 0x7fff) * 2" (parenthesized_expression "(param_1 & 0x7fff)" (( "(") (binary_expression "param_1 & 0x7fff" (identifier "param_1") (& "&") (number_literal "0x7fff")) () ")")) (* "*") (number_literal "2"))) () ")"))))) (; ";"))) (} "}")))) (expression_statement "param_1 = (uint)uVar2;" (assignment_expression "param_1 = (uint)uVar2" (identifier "param_1") (= "=") (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2"))) (; ";")) (if_statement "if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }" (if "if") (parenthesized_expression "((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0))" (( "(") (binary_expression "(param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)" (parenthesized_expression "(param_1 <= uVar9 - 0x7efa)" (( "(") (binary_expression "param_1 <= uVar9 - 0x7efa" (identifier "param_1") (<= "<=") (binary_expression "uVar9 - 0x7efa" (identifier "uVar9") (- "-") (number_literal "0x7efa"))) () ")")) (|| "||") (parenthesized_expression "(uVar8 = uVar8 - 1, uVar8 == 0)" (( "(") (comma_expression "uVar8 = uVar8 - 1, uVar8 == 0" (assignment_expression "uVar8 = uVar8 - 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - 1" (identifier "uVar8") (- "-") (number_literal "1"))) (, ",") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      if (!bVar3) {\n        return uVar7;\n      }\n      DAT_00032efc = local_20;\n      return uVar7;\n    }" ({ "{") (if_statement "if (!bVar3) {\n        return uVar7;\n      }" (if "if") (parenthesized_expression "(!bVar3)" (( "(") (unary_expression "!bVar3" (! "!") (identifier "bVar3")) () ")")) (compound_statement "{\n        return uVar7;\n      }" ({ "{") (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (expression_statement "DAT_00032efc = local_20;" (assignment_expression "DAT_00032efc = local_20" (identifier "DAT_00032efc") (= "=") (identifier "local_20")) (; ";")) (return_statement "return uVar7;" (return "return") (identifier "uVar7") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

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

int __regparm3 function_1(type_1 var_5)

{
  char *pcVar1;
  type_2 uVar2;
  bool bVar3;
  char *var_10;
  char *var_9;
  type_3 var_12;
  type_3 var_7;
  type_3 var_14;
  type_3 var_13;
  char var_6;
  char var_8;
  type_3 local_20;
  
  bVar3 = false;
  pcVar1 = &window + var_1;
  var_13 = 0x7efa;
  if (0x7ef9 < var_1) {
    var_13 = var_1;
  }
  var_8 = (&DAT_00067f5f)[var_2 + var_1];
  var_6 = pcVar1[var_2];
  var_14 = var_4;
  if (var_3 <= var_2) {
    var_14 = var_4 >> 2;
  }
  local_20 = match_start;
  var_7 = var_2;
  do {
    if (((((&window + var_5)[var_7] == var_6) &&
         ((&DAT_00067f5f)[var_7 + var_5] == var_8)) && ((&window)[var_5] == *pcVar1)) &&
       ((&DAT_00067f61)[var_5] == (&DAT_00067f61)[var_1])) {
      var_10 = &DAT_00067f62 + var_5;
      var_9 = &DAT_00067f62 + var_1;
      do {
        if (var_9[1] != var_10[1]) {
          var_9 = var_9 + 1;
          break;
        }
        if (var_9[2] != var_10[2]) {
          var_9 = var_9 + 2;
          break;
        }
        if (var_9[3] != var_10[3]) {
          var_9 = var_9 + 3;
          break;
        }
        if (var_9[4] != var_10[4]) {
          var_9 = var_9 + 4;
          break;
        }
        if (var_9[5] != var_10[5]) {
          var_9 = var_9 + 5;
          break;
        }
        if (var_9[6] != var_10[6]) {
          var_9 = var_9 + 6;
          break;
        }
        if (var_9[7] != var_10[7]) {
          var_9 = var_9 + 7;
          break;
        }
        var_9 = var_9 + 8;
        var_10 = var_10 + 8;
      } while (*var_9 == *var_10 && var_9 < (char *)(var_1 + 0x68062));
      var_12 = 0x102 - ((int)(var_1 + 0x68062) - (int)var_9);
      if ((int)var_12 <= (int)var_7) goto LAB_00013410;
      if (var_11 <= (int)var_12) {
        match_start = var_5;
        return var_12;
      }
      bVar3 = true;
      uVar2 = *(type_2 *)((int)&prev + (var_5 & 0x7fff) * 2);
      var_8 = (&DAT_00067f5f)[var_12 + var_1];
      var_6 = pcVar1[var_12];
      var_7 = var_12;
      local_20 = var_5;
    }
    else {
LAB_00013410:
      uVar2 = *(type_2 *)((int)&prev + (var_5 & 0x7fff) * 2);
    }
    var_5 = (type_1)uVar2;
    if ((var_5 <= var_13 - 0x7efa) || (var_14 = var_14 - 1, var_14 == 0)) {
      if (!bVar3) {
        return var_7;
      }
      match_start = local_20;
      return var_7;
    }
  } while( true );
}


(translation_unit (function_definition type: (type_identifier) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) index: (identifier)) right: (identifier))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))) right: (identifier))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)) right: (pointer_expression argument: (identifier)))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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: (pointer_expression argument: (identifier))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (return_statement (identifier))))) condition: (parenthesized_expression (true))))))

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

uint __regparm3 MASKED(uint param_1)

{
  char *pcVar1;
  ushort uVar2;
  bool bVar3;
  char *pcVar4;
  char *pcVar5;
  uint uVar6;
  uint uVar7;
  uint uVar8;
  uint uVar9;
  char local_27;
  char local_26;
  uint local_20;
  
  bVar3 = false;
  pcVar1 = &DAT_00067f60 + DAT_00032ee8;
  uVar9 = 0x7efa;
  if (0x7ef9 < DAT_00032ee8) {
    uVar9 = DAT_00032ee8;
  }
  local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + DAT_00032ef8);
  local_27 = pcVar1[DAT_00032ef8];
  uVar8 = DAT_00032ef4;
  if (DAT_00032ef0 <= DAT_00032ef8) {
    uVar8 = DAT_00032ef4 >> 2;
  }
  local_20 = DAT_00032efc;
  uVar7 = DAT_00032ef8;
  do {
    if (((((&DAT_00067f60 + param_1)[uVar7] == local_27) &&
         (*(char *)(param_1 + 0x67f5f + uVar7) == local_26)) &&
        ((&DAT_00067f60)[param_1] == *pcVar1)) &&
       ((&DAT_00067f61)[param_1] == (&DAT_00067f61)[DAT_00032ee8])) {
      pcVar4 = &DAT_00067f62 + param_1;
      pcVar5 = &DAT_00067f62 + DAT_00032ee8;
      do {
        if (pcVar5[1] != pcVar4[1]) {
          pcVar5 = pcVar5 + 1;
          break;
        }
        if (pcVar5[2] != pcVar4[2]) {
          pcVar5 = pcVar5 + 2;
          break;
        }
        if (pcVar5[3] != pcVar4[3]) {
          pcVar5 = pcVar5 + 3;
          break;
        }
        if (pcVar5[4] != pcVar4[4]) {
          pcVar5 = pcVar5 + 4;
          break;
        }
        if (pcVar5[5] != pcVar4[5]) {
          pcVar5 = pcVar5 + 5;
          break;
        }
        if (pcVar5[6] != pcVar4[6]) {
          pcVar5 = pcVar5 + 6;
          break;
        }
        if (pcVar5[7] != pcVar4[7]) {
          pcVar5 = pcVar5 + 7;
          break;
        }
        pcVar5 = pcVar5 + 8;
        pcVar4 = pcVar4 + 8;
      } while (*pcVar5 == *pcVar4 && pcVar5 < (char *)(DAT_00032ee8 + 0x68062));
      uVar6 = 0x102 - ((int)(DAT_00032ee8 + 0x68062) - (int)pcVar5);
      if ((int)uVar6 <= (int)uVar7) goto LAB_00013410;
      if (DAT_0002f4b0 <= (int)uVar6) {
        DAT_00032efc = param_1;
        return uVar6;
      }
      bVar3 = true;
      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);
      local_26 = *(char *)(DAT_00032ee8 + 0x67f5f + uVar6);
      local_27 = pcVar1[uVar6];
      uVar7 = uVar6;
      local_20 = param_1;
    }
    else {
LAB_00013410:
      uVar2 = *(ushort *)((int)&DAT_00033320 + (param_1 & 0x7fff) * 2);
    }
    param_1 = (uint)uVar2;
    if ((param_1 <= uVar9 - 0x7efa) || (uVar8 = uVar8 - 1, uVar8 == 0)) {
      if (!bVar3) {
        return uVar7;
      }
      DAT_00032efc = local_20;
      return uVar7;
    }
  } while( true );
}

