
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int do_shape(bidi_char *line,bidi_char *to,int count)

{
  int iVar1;
  uint uVar2;
  undefined2 uVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  bool bVar7;
  bool bVar8;
  wchar_t local_20;
  
  if (count < 1) {
    return 1;
  }
  iVar5 = 0;
  do {
    to->origwc = line->origwc;
    to->wc = line->wc;
    uVar3 = *(undefined2 *)&line->field_0xa;
    to->index = line->index;
    *(undefined2 *)&to->field_0xa = uVar3;
    uVar4 = line->wc;
    iVar1 = iVar5 + 1;
    uVar2 = uVar4 - 0x621;
    if (uVar2 < 0xb2) {
      if (shapetypes[uVar2].type != '\x01') {
        if (shapetypes[uVar2].type == '\x02') {
          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {
            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;
            bVar8 = shapetypes[uVar6].type != 4;
            if (uVar4 == 0x644 && 0 < iVar5) {
              uVar4 = line[-1].wc;
              if (uVar4 == 0x623) {
                if (bVar7 && bVar8) goto LAB_0002ae90;
                to->wc = 0xfef8;
              }
              else if (uVar4 < 0x624) {
                if (uVar4 != 0x622) goto LAB_0002aca9;
                if (bVar7 && bVar8) goto LAB_0002ae0c;
                to->wc = 0xfef6;
              }
              else if (uVar4 == 0x625) {
                if (bVar7 && bVar8) goto LAB_0002ae80;
                to->wc = 0xfefa;
              }
              else {
                if (uVar4 != 0x627) goto LAB_0002aca9;
                if (bVar7 && bVar8) goto LAB_0002ad4f;
                to->wc = 0xfefc;
              }
LAB_0002ad60:
              to[-1].wc = 0x20;
              if (count <= iVar1) {
                return 1;
              }
              goto LAB_0002ad06;
            }
LAB_0002aca9:
            if (bVar7 && bVar8) goto LAB_0002ae20;
            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||
               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {
              to->wc = shapetypes[uVar2].form_b + L'\x01';
            }
            else {
              to->wc = shapetypes[uVar2].form_b + L'\x03';
            }
          }
          else {
            if (uVar4 == 0x644 && 0 < iVar5) {
              uVar4 = line[-1].wc;
              if (uVar4 == 0x623) {
LAB_0002ae90:
                to->wc = 0xfef7;
              }
              else if (uVar4 < 0x624) {
                if (uVar4 != 0x622) {
LAB_0002aefa:
                  local_20 = shapetypes[uVar2].form_b;
                  goto LAB_0002ae38;
                }
LAB_0002ae0c:
                to->wc = 0xfef5;
              }
              else if (uVar4 == 0x625) {
LAB_0002ae80:
                to->wc = 0xfef9;
              }
              else {
                if (uVar4 != 0x627) goto LAB_0002aefa;
LAB_0002ad4f:
                to->wc = 0xfefb;
              }
              goto LAB_0002ad60;
            }
LAB_0002ae20:
            local_20 = shapetypes[uVar2].form_b;
            if (0 < iVar5) {
              uVar4 = line[-1].wc;
LAB_0002ae38:
              if ((uVar4 - 0x621 < 0xb2) &&
                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||
                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {
                to->wc = local_20 + L'\x02';
                goto LAB_0002ad00;
              }
            }
            to->wc = local_20;
          }
        }
        goto LAB_0002ad00;
      }
      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||
         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {
        to->wc = shapetypes[uVar2].form_b;
        goto LAB_0002ad00;
      }
      to->wc = shapetypes[uVar2].form_b + L'\x01';
    }
    else {
LAB_0002ad00:
      if (count <= iVar1) {
        return 1;
      }
    }
LAB_0002ad06:
    line = line + 1;
    to = to + 1;
    iVar5 = iVar1;
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  bool bVar6;
  bool bVar7;
  int local_20;
  
  if (param_3 < 1) {
    return 1;
  }
  iVar4 = 0;
  do {
    *param_2 = *param_1;
    param_2[1] = param_1[1];
    param_2[2] = param_1[2];
    iVar3 = param_1[1];
    iVar1 = iVar4 + 1;
    uVar2 = iVar3 - 0x621;
    if (uVar2 < 0xb2) {
      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {
        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {
          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {
            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;
            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;
            if (iVar3 == 0x644 && 0 < iVar4) {
              uVar5 = param_1[-2];
              if (uVar5 == 0x623) {
                if (bVar6 && bVar7) goto LAB_0002ae90;
                param_2[1] = 0xfef8;
              }
              else if (uVar5 < 0x624) {
                if (uVar5 != 0x622) goto LAB_0002aca9;
                if (bVar6 && bVar7) goto LAB_0002ae0c;
                param_2[1] = 0xfef6;
              }
              else if (uVar5 == 0x625) {
                if (bVar6 && bVar7) goto LAB_0002ae80;
                param_2[1] = 0xfefa;
              }
              else {
                if (uVar5 != 0x627) goto LAB_0002aca9;
                if (bVar6 && bVar7) goto LAB_0002ad4f;
                param_2[1] = 0xfefc;
              }
LAB_0002ad60:
              param_2[-2] = 0x20;
              if (param_3 <= iVar1) {
                return 1;
              }
              goto LAB_0002ad06;
            }
LAB_0002aca9:
            if (bVar6 && bVar7) goto LAB_0002ae20;
            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||
               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&
                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {
              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;
            }
            else {
              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;
            }
          }
          else {
            if (iVar3 == 0x644 && 0 < iVar4) {
              uVar5 = param_1[-2];
              if (uVar5 == 0x623) {
LAB_0002ae90:
                param_2[1] = 0xfef7;
              }
              else if (uVar5 < 0x624) {
                if (uVar5 != 0x622) {
LAB_0002aefa:
                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);
                  goto LAB_0002ae38;
                }
LAB_0002ae0c:
                param_2[1] = 0xfef5;
              }
              else if (uVar5 == 0x625) {
LAB_0002ae80:
                param_2[1] = 0xfef9;
              }
              else {
                if (uVar5 != 0x627) goto LAB_0002aefa;
LAB_0002ad4f:
                param_2[1] = 0xfefb;
              }
              goto LAB_0002ad60;
            }
LAB_0002ae20:
            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);
            if (0 < iVar4) {
              uVar5 = param_1[-2];
LAB_0002ae38:
              if ((uVar5 - 0x621 < 0xb2) &&
                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||
                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {
                param_2[1] = local_20 + 2;
                goto LAB_0002ad00;
              }
            }
            param_2[1] = local_20;
          }
        }
        goto LAB_0002ad00;
      }
      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||
         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&
          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {
        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);
        goto LAB_0002ad00;
      }
      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;
    }
    else {
LAB_0002ad00:
      if (param_3 <= iVar1) {
        return 1;
      }
    }
LAB_0002ad06:
    param_1 = param_1 + 3;
    param_2 = param_2 + 3;
    iVar4 = iVar1;
  } while( true );
}


CALL 0x0001ba5e
ADD EAX,0x85bdf
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x10
MOV dword ptr [ESP + 0x4],EAX
MOV EAX,dword ptr [ESP + 0x2c]
TEST EAX,EAX
JLE 0x0002ad6d
MOV EAX,dword ptr [ESP + 0x24]
MOV EBX,dword ptr [ESP + 0x28]
XOR EBP,EBP
LEA ESI,[ESI]
NOP
MOV EDX,dword ptr [EAX]
MOV dword ptr [EBX],EDX
MOV EDX,dword ptr [EAX + 0x4]
MOV dword ptr [EBX + 0x4],EDX
MOV EDX,dword ptr [EAX + 0x8]
MOV dword ptr [EBX + 0x8],EDX
MOV ESI,dword ptr [EAX + 0x4]
LEA EDX,[EBP + 0x1]
LEA ECX,[ESI + 0xfffff9df]
MOV dword ptr [ESP],ECX
CMP ECX,0xb1
JA 0x0002ad00
MOV ECX,dword ptr [ESP + 0x4]
LEA EDI,[ECX + 0xfffce7dc]
MOV ECX,dword ptr [ESP]
MOV dword ptr [ESP + 0x8],EDI
MOVZX EDI,byte ptr [EDI + ECX*0x8]
MOV ECX,EDI
CMP CL,0x1
JZ 0x0002ad80
CMP CL,0x2
JNZ 0x0002ad00
CMP ESI,0x644
SETZ CL
TEST EBP,EBP
MOV EDI,ECX
SETG CL
MOV ESI,ECX
AND EDI,ESI
CMP dword ptr [ESP + 0x2c],EDX
JLE 0x0002ad18
MOV ESI,dword ptr [EAX + 0x10]
SUB ESI,0x621
CMP ESI,0xb1
JA 0x0002ad18
MOV ECX,dword ptr [ESP + 0x8]
MOVZX ESI,byte ptr [ECX + ESI*0x8]
TEST ESI,0xfd
MOV ECX,ESI
SETZ byte ptr [ESP + 0xf]
CMP CL,0x4
SETZ CL
MOV ESI,ECX
MOVZX ECX,byte ptr [ESP + 0xf]
OR ECX,ESI
MOV byte ptr [ESP + 0xf],CL
MOV ECX,EDI
TEST CL,CL
JNZ 0x0002ae9c
MOV ESI,dword ptr [ESP + 0x4]
MOV EDI,dword ptr [ESP]
CMP byte ptr [ESP + 0xf],0x0
MOV ESI,dword ptr [ESI + EDI*0x8 + 0xfffce7e0]
JZ 0x0002ae20
TEST EBP,EBP
JLE 0x0002adf0
MOV ECX,dword ptr [EAX + -0x8]
SUB ECX,0x621
CMP ECX,0xb1
JA 0x0002adf0
MOV EDI,dword ptr [ESP + 0x8]
MOVZX EDI,byte ptr [EDI + ECX*0x8]
MOV ECX,EDI
MOVSX ECX,CL
SUB ECX,0x1
CMP ECX,0x1
JA 0x0002ade0
ADD ESI,0x3
MOV dword ptr [EBX + 0x4],ESI
NOP
CMP dword ptr [ESP + 0x2c],EDX
JLE 0x0002ad6d
ADD EAX,0xc
ADD EBX,0xc
MOV EBP,EDX
JMP 0x0002abf0
MOV ECX,EDI
TEST CL,CL
JZ 0x0002ae20
MOV ESI,dword ptr [EAX + -0x8]
CMP ESI,0x623
JZ 0x0002ae90
JBE 0x0002ae00
CMP ESI,0x625
JZ 0x0002ae80
CMP ESI,0x627
JNZ 0x0002aefa
MOV dword ptr [EBX + 0x4],0xfefb
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV dword ptr [EBX + -0x8],0x20
CMP dword ptr [ESP + 0x2c],EDX
JG 0x0002ad06
ADD ESP,0x10
MOV EAX,0x1
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [ESP + 0x4]
MOV EDI,dword ptr [ESP]
MOV EDI,dword ptr [ESI + EDI*0x8 + 0xfffce7e0]
CMP dword ptr [ESP + 0x2c],EDX
JLE 0x0002add0
MOV ESI,dword ptr [EAX + 0x10]
SUB ESI,0x621
CMP ESI,0xb1
JA 0x0002add0
MOV ECX,dword ptr [ESP + 0x8]
MOVZX ESI,byte ptr [ECX + ESI*0x8]
TEST ESI,0xfd
JZ 0x0002adbc
MOV ECX,ESI
CMP CL,0x4
JNZ 0x0002add0
LEA ECX,[EDI + 0x1]
MOV dword ptr [EBX + 0x4],ECX
JMP 0x0002ad06
MOV dword ptr [EBX + 0x4],EDI
JMP 0x0002ad00
MOV ECX,EDI
CMP CL,0x4
JZ 0x0002acf8
LEA ESI,[ESI]
NOP
ADD ESI,0x1
MOV dword ptr [EBX + 0x4],ESI
JMP 0x0002ad00
CMP ESI,0x622
JNZ 0x0002aefa
MOV dword ptr [EBX + 0x4],0xfef5
JMP 0x0002ad60
MOV EDI,dword ptr [ESP]
MOV ESI,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [ESI + EDI*0x8 + 0xfffce7e0]
MOV dword ptr [ESP],ESI
TEST EBP,EBP
JLE 0x0002ae70
MOV ESI,dword ptr [EAX + -0x8]
SUB ESI,0x621
CMP ESI,0xb1
JA 0x0002ae70
MOV EDI,dword ptr [ESP + 0x8]
MOVZX EDI,byte ptr [EDI + ESI*0x8]
MOV ECX,EDI
MOVSX ESI,CL
SUB ESI,0x1
CMP ESI,0x1
JBE 0x0002ae60
CMP CL,0x4
JNZ 0x0002ae70
MOV ECX,dword ptr [ESP]
ADD ECX,0x2
MOV dword ptr [EBX + 0x4],ECX
JMP 0x0002ad00
MOV ESI,dword ptr [ESP]
MOV dword ptr [EBX + 0x4],ESI
JMP 0x0002ad00
MOV dword ptr [EBX + 0x4],0xfef9
JMP 0x0002ad60
MOV dword ptr [EBX + 0x4],0xfef7
JMP 0x0002ad60
MOV ESI,dword ptr [EAX + -0x8]
CMP ESI,0x623
JZ 0x0002aed4
JBE 0x0002af10
CMP ESI,0x625
JZ 0x0002aee7
CMP ESI,0x627
JNZ 0x0002aca9
CMP byte ptr [ESP + 0xf],0x0
JZ 0x0002ad4f
MOV dword ptr [EBX + 0x4],0xfefc
JMP 0x0002ad60
CMP byte ptr [ESP + 0xf],0x0
JZ 0x0002ae90
MOV dword ptr [EBX + 0x4],0xfef8
JMP 0x0002ad60
CMP byte ptr [ESP + 0xf],0x0
JZ 0x0002ae80
MOV dword ptr [EBX + 0x4],0xfefa
JMP 0x0002ad60
MOV ECX,dword ptr [ESP]
MOV EDI,dword ptr [ESP + 0x4]
MOV EDI,dword ptr [EDI + ECX*0x8 + 0xfffce7e0]
MOV dword ptr [ESP],EDI
JMP 0x0002ae38
CMP ESI,0x622
JNZ 0x0002aca9
CMP byte ptr [ESP + 0xf],0x0
JZ 0x0002ae0c
MOV dword ptr [EBX + 0x4],0xfef6
JMP 0x0002ad60
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined4 FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}\n\n" comment (function_definition "undefined4 FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}" type_identifier (function_declarator "FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (if_statement "if (param_3 < 1) {\n    return 1;\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );" do (compound_statement "{\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  }" { (expression_statement "*param_2 = *param_1;" (assignment_expression "*param_2 = *param_1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_2[1] = param_1[1];" (assignment_expression "param_2[1] = param_1[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_2[2] = param_1[2];" (assignment_expression "param_2[2] = param_1[2]" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = iVar4 + 1;" (assignment_expression "iVar1 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = iVar3 - 0x621;" (assignment_expression "uVar2 = iVar3 - 0x621" identifier = (binary_expression "iVar3 - 0x621" identifier - number_literal)) ;) (if_statement "if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" if (parenthesized_expression "(uVar2 < 0xb2)" ( (binary_expression "uVar2 < 0xb2" identifier < number_literal) )) (compound_statement "{\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }" { (if_statement "if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" if (parenthesized_expression "((&DAT_0007ef80)[uVar2 * 8] != '\x01')" ( (binary_expression "(&DAT_0007ef80)[uVar2 * 8] != '\x01'" (subscript_expression "(&DAT_0007ef80)[uVar2 * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "uVar2 * 8" identifier * number_literal) ]) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" { (if_statement "if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }" if (parenthesized_expression "((&DAT_0007ef80)[uVar2 * 8] == '\x02')" ( (binary_expression "(&DAT_0007ef80)[uVar2 * 8] == '\x02'" (subscript_expression "(&DAT_0007ef80)[uVar2 * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "uVar2 * 8" identifier * number_literal) ]) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }" { (if_statement "if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" if (parenthesized_expression "((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2))" ( (binary_expression "(iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)" (parenthesized_expression "(iVar1 < param_3)" ( (binary_expression "iVar1 < param_3" identifier < identifier) )) && (parenthesized_expression "(param_1[4] - 0x621 < 0xb2)" ( (binary_expression "param_1[4] - 0x621 < 0xb2" (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) < number_literal) ))) )) (compound_statement "{\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }" { (expression_statement "bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;" (assignment_expression "bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" identifier = (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd)" ( (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) & number_literal) )) != number_literal)) ;) (expression_statement "bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;" (assignment_expression "bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" identifier = (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) != number_literal)) ;) (if_statement "if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" if (parenthesized_expression "(iVar3 == 0x644 && 0 < iVar4)" ( (binary_expression "iVar3 == 0x644 && 0 < iVar4" (binary_expression "iVar3 == 0x644" identifier == number_literal) && (binary_expression "0 < iVar4" number_literal < identifier)) )) (compound_statement "{\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" { (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" identifier = (subscript_expression "param_1[-2]" identifier [ number_literal ])) ;) (if_statement "if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" if (parenthesized_expression "(uVar5 == 0x623)" ( (binary_expression "uVar5 == 0x623" identifier == number_literal) )) (compound_statement "{\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }" { (if_statement "if (bVar6 && bVar7) goto LAB_0002ae90;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae90;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfef8;" (assignment_expression "param_2[1] = 0xfef8" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" else (if_statement "if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" if (parenthesized_expression "(uVar5 < 0x624)" ( (binary_expression "uVar5 < 0x624" identifier < number_literal) )) (compound_statement "{\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }" { (if_statement "if (uVar5 != 0x622) goto LAB_0002aca9;" if (parenthesized_expression "(uVar5 != 0x622)" ( (binary_expression "uVar5 != 0x622" identifier != number_literal) )) (goto_statement "goto LAB_0002aca9;" goto statement_identifier ;)) (if_statement "if (bVar6 && bVar7) goto LAB_0002ae0c;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae0c;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfef6;" (assignment_expression "param_2[1] = 0xfef6" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" else (if_statement "if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" if (parenthesized_expression "(uVar5 == 0x625)" ( (binary_expression "uVar5 == 0x625" identifier == number_literal) )) (compound_statement "{\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }" { (if_statement "if (bVar6 && bVar7) goto LAB_0002ae80;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae80;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfefa;" (assignment_expression "param_2[1] = 0xfefa" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" else (compound_statement "{\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" { (if_statement "if (uVar5 != 0x627) goto LAB_0002aca9;" if (parenthesized_expression "(uVar5 != 0x627)" ( (binary_expression "uVar5 != 0x627" identifier != number_literal) )) (goto_statement "goto LAB_0002aca9;" goto statement_identifier ;)) (if_statement "if (bVar6 && bVar7) goto LAB_0002ad4f;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ad4f;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfefc;" (assignment_expression "param_2[1] = 0xfefc" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }))))))) (labeled_statement "LAB_0002ad60:\n              param_2[-2] = 0x20;" statement_identifier : (expression_statement "param_2[-2] = 0x20;" (assignment_expression "param_2[-2] = 0x20" (subscript_expression "param_2[-2]" identifier [ number_literal ]) = number_literal) ;)) (if_statement "if (param_3 <= iVar1) {\n                return 1;\n              }" if (parenthesized_expression "(param_3 <= iVar1)" ( (binary_expression "param_3 <= iVar1" identifier <= identifier) )) (compound_statement "{\n                return 1;\n              }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_0002ad06;" goto statement_identifier ;) })) (labeled_statement "LAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;" statement_identifier : (if_statement "if (bVar6 && bVar7) goto LAB_0002ae20;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae20;" goto statement_identifier ;))) (if_statement "if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" if (parenthesized_expression "(((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'))))" ( (binary_expression "((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))" (parenthesized_expression "((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621))" ( (binary_expression "(iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)" (parenthesized_expression "(iVar4 < 1)" ( (binary_expression "iVar4 < 1" identifier < number_literal) )) || (parenthesized_expression "(0xb1 < param_1[-2] - 0x621)" ( (binary_expression "0xb1 < param_1[-2] - 0x621" number_literal < (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" identifier [ number_literal ]) - number_literal)) ))) )) || (parenthesized_expression "((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))" ( (parenthesized_expression "(1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'))" ( (binary_expression "1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')" (binary_expression "1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U" number_literal < (binary_expression "(int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U" (cast_expression "(int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[-2] - 0x621) * 8" (parenthesized_expression "(param_1[-2] - 0x621)" ( (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]))) - number_literal)) && (parenthesized_expression "((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')" ( (binary_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'" (subscript_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[-2] - 0x621) * 8" (parenthesized_expression "(param_1[-2] - 0x621)" ( (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) != (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }" { (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) + number_literal)) ;) }) (else_clause "else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" else (compound_statement "{\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" { (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 3" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) + number_literal)) ;) }))) }) (else_clause "else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" else (compound_statement "{\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" { (if_statement "if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" if (parenthesized_expression "(iVar3 == 0x644 && 0 < iVar4)" ( (binary_expression "iVar3 == 0x644 && 0 < iVar4" (binary_expression "iVar3 == 0x644" identifier == number_literal) && (binary_expression "0 < iVar4" number_literal < identifier)) )) (compound_statement "{\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" { (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" identifier = (subscript_expression "param_1[-2]" identifier [ number_literal ])) ;) (if_statement "if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" if (parenthesized_expression "(uVar5 == 0x623)" ( (binary_expression "uVar5 == 0x623" identifier == number_literal) )) (compound_statement "{\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }" { (labeled_statement "LAB_0002ae90:\n                param_2[1] = 0xfef7;" statement_identifier : (expression_statement "param_2[1] = 0xfef7;" (assignment_expression "param_2[1] = 0xfef7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" else (if_statement "if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" if (parenthesized_expression "(uVar5 < 0x624)" ( (binary_expression "uVar5 < 0x624" identifier < number_literal) )) (compound_statement "{\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }" { (if_statement "if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }" if (parenthesized_expression "(uVar5 != 0x622)" ( (binary_expression "uVar5 != 0x622" identifier != number_literal) )) (compound_statement "{\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }" { (labeled_statement "LAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" statement_identifier : (expression_statement "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8)" identifier = (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) ))))) ;)) (goto_statement "goto LAB_0002ae38;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ae0c:\n                param_2[1] = 0xfef5;" statement_identifier : (expression_statement "param_2[1] = 0xfef5;" (assignment_expression "param_2[1] = 0xfef5" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" else (if_statement "if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" if (parenthesized_expression "(uVar5 == 0x625)" ( (binary_expression "uVar5 == 0x625" identifier == number_literal) )) (compound_statement "{\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }" { (labeled_statement "LAB_0002ae80:\n                param_2[1] = 0xfef9;" statement_identifier : (expression_statement "param_2[1] = 0xfef9;" (assignment_expression "param_2[1] = 0xfef9" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" else (compound_statement "{\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" { (if_statement "if (uVar5 != 0x627) goto LAB_0002aefa;" if (parenthesized_expression "(uVar5 != 0x627)" ( (binary_expression "uVar5 != 0x627" identifier != number_literal) )) (goto_statement "goto LAB_0002aefa;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad4f:\n                param_2[1] = 0xfefb;" statement_identifier : (expression_statement "param_2[1] = 0xfefb;" (assignment_expression "param_2[1] = 0xfefb" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }))))))) (goto_statement "goto LAB_0002ad60;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" statement_identifier : (expression_statement "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8)" identifier = (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) ))))) ;)) (if_statement "if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }" { (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" identifier = (subscript_expression "param_1[-2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" statement_identifier : (if_statement "if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" if (parenthesized_expression "((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'))))" ( (binary_expression "(uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))" (parenthesized_expression "(uVar5 - 0x621 < 0xb2)" ( (binary_expression "uVar5 - 0x621 < 0xb2" (binary_expression "uVar5 - 0x621" identifier - number_literal) < number_literal) )) && (parenthesized_expression "(((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))" ( (parenthesized_expression "((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'))" ( (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')" (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2" (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U" (cast_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(uVar5 - 0x621) * 8" (parenthesized_expression "(uVar5 - 0x621)" ( (binary_expression "uVar5 - 0x621" identifier - number_literal) )) * number_literal) ]))) - number_literal) < number_literal) || (parenthesized_expression "((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')" ( (binary_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'" (subscript_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(uVar5 - 0x621) * 8" (parenthesized_expression "(uVar5 - 0x621)" ( (binary_expression "uVar5 - 0x621" identifier - number_literal) )) * number_literal) ]) == (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" { (expression_statement "param_2[1] = local_20 + 2;" (assignment_expression "param_2[1] = local_20 + 2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_20 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) }))) })) (expression_statement "param_2[1] = local_20;" (assignment_expression "param_2[1] = local_20" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) }))) })) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) })) (if_statement "if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }" if (parenthesized_expression "(((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4))))" ( (binary_expression "((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))" (parenthesized_expression "((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621))" ( (binary_expression "(param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)" (parenthesized_expression "(param_3 <= iVar1)" ( (binary_expression "param_3 <= iVar1" identifier <= identifier) )) || (parenthesized_expression "(0xb1 < param_1[4] - 0x621)" ( (binary_expression "0xb1 < param_1[4] - 0x621" number_literal < (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal)) ))) )) || (parenthesized_expression "((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))" ( (parenthesized_expression "(((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4))" ( (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)" (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd)" ( (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) & number_literal) )) != number_literal) && (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)" ( (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) != number_literal) ))) )) ))) )) (compound_statement "{\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }" { (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) ))))) ;) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) })) (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) + number_literal)) ;) }) (else_clause "else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" else (compound_statement "{\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" { (labeled_statement "LAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }" statement_identifier : (if_statement "if (param_3 <= iVar1) {\n        return 1;\n      }" if (parenthesized_expression "(param_3 <= iVar1)" ( (binary_expression "param_3 <= iVar1" identifier <= identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) }))) }))) (labeled_statement "LAB_0002ad06:\n    param_1 = param_1 + 3;" statement_identifier : (expression_statement "param_1 = param_1 + 3;" (assignment_expression "param_1 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;)) (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar1;" (assignment_expression "iVar4 = iVar1" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nint do_shape(bidi_char *line,bidi_char *to,int count)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined2 uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  bool bVar7;\n  bool bVar8;\n  wchar_t local_20;\n  \n  if (count < 1) {\n    return 1;\n  }\n  iVar5 = 0;\n  do {\n    to->origwc = line->origwc;\n    to->wc = line->wc;\n    uVar3 = *(undefined2 *)&line->field_0xa;\n    to->index = line->index;\n    *(undefined2 *)&to->field_0xa = uVar3;\n    uVar4 = line->wc;\n    iVar1 = iVar5 + 1;\n    uVar2 = uVar4 - 0x621;\n    if (uVar2 < 0xb2) {\n      if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }\n      to->wc = shapetypes[uVar2].form_b + L'\x01';\n    }\n    else {\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    line = line + 1;\n    to = to + 1;\n    iVar5 = iVar1;\n  } while( true );\n}\n\n" comment comment (function_definition "int do_shape(bidi_char *line,bidi_char *to,int count)\n\n{\n  int iVar1;\n  uint uVar2;\n  undefined2 uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  bool bVar7;\n  bool bVar8;\n  wchar_t local_20;\n  \n  if (count < 1) {\n    return 1;\n  }\n  iVar5 = 0;\n  do {\n    to->origwc = line->origwc;\n    to->wc = line->wc;\n    uVar3 = *(undefined2 *)&line->field_0xa;\n    to->index = line->index;\n    *(undefined2 *)&to->field_0xa = uVar3;\n    uVar4 = line->wc;\n    iVar1 = iVar5 + 1;\n    uVar2 = uVar4 - 0x621;\n    if (uVar2 < 0xb2) {\n      if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }\n      to->wc = shapetypes[uVar2].form_b + L'\x01';\n    }\n    else {\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    line = line + 1;\n    to = to + 1;\n    iVar5 = iVar1;\n  } while( true );\n}" primitive_type (function_declarator "do_shape(bidi_char *line,bidi_char *to,int count)" identifier (parameter_list "(bidi_char *line,bidi_char *to,int count)" ( (parameter_declaration "bidi_char *line" type_identifier (pointer_declarator "*line" * identifier)) , (parameter_declaration "bidi_char *to" type_identifier (pointer_declarator "*to" * identifier)) , (parameter_declaration "int count" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  undefined2 uVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  bool bVar7;\n  bool bVar8;\n  wchar_t local_20;\n  \n  if (count < 1) {\n    return 1;\n  }\n  iVar5 = 0;\n  do {\n    to->origwc = line->origwc;\n    to->wc = line->wc;\n    uVar3 = *(undefined2 *)&line->field_0xa;\n    to->index = line->index;\n    *(undefined2 *)&to->field_0xa = uVar3;\n    uVar4 = line->wc;\n    iVar1 = iVar5 + 1;\n    uVar2 = uVar4 - 0x621;\n    if (uVar2 < 0xb2) {\n      if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }\n      to->wc = shapetypes[uVar2].form_b + L'\x01';\n    }\n    else {\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    line = line + 1;\n    to = to + 1;\n    iVar5 = iVar1;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined2 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "wchar_t local_20;" type_identifier identifier ;) (if_statement "if (count < 1) {\n    return 1;\n  }" if (parenthesized_expression "(count < 1)" ( (binary_expression "count < 1" identifier < number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n    to->origwc = line->origwc;\n    to->wc = line->wc;\n    uVar3 = *(undefined2 *)&line->field_0xa;\n    to->index = line->index;\n    *(undefined2 *)&to->field_0xa = uVar3;\n    uVar4 = line->wc;\n    iVar1 = iVar5 + 1;\n    uVar2 = uVar4 - 0x621;\n    if (uVar2 < 0xb2) {\n      if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }\n      to->wc = shapetypes[uVar2].form_b + L'\x01';\n    }\n    else {\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    line = line + 1;\n    to = to + 1;\n    iVar5 = iVar1;\n  } while( true );" do (compound_statement "{\n    to->origwc = line->origwc;\n    to->wc = line->wc;\n    uVar3 = *(undefined2 *)&line->field_0xa;\n    to->index = line->index;\n    *(undefined2 *)&to->field_0xa = uVar3;\n    uVar4 = line->wc;\n    iVar1 = iVar5 + 1;\n    uVar2 = uVar4 - 0x621;\n    if (uVar2 < 0xb2) {\n      if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }\n      to->wc = shapetypes[uVar2].form_b + L'\x01';\n    }\n    else {\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    line = line + 1;\n    to = to + 1;\n    iVar5 = iVar1;\n  }" { (expression_statement "to->origwc = line->origwc;" (assignment_expression "to->origwc = line->origwc" (field_expression "to->origwc" identifier -> field_identifier) = (field_expression "line->origwc" identifier -> field_identifier)) ;) (expression_statement "to->wc = line->wc;" (assignment_expression "to->wc = line->wc" (field_expression "to->wc" identifier -> field_identifier) = (field_expression "line->wc" identifier -> field_identifier)) ;) (expression_statement "uVar3 = *(undefined2 *)&line->field_0xa;" (assignment_expression "uVar3 = *(undefined2 *)&line->field_0xa" identifier = (pointer_expression "*(undefined2 *)&line->field_0xa" * (cast_expression "(undefined2 *)&line->field_0xa" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&line->field_0xa" & (field_expression "line->field_0xa" identifier -> field_identifier))))) ;) (expression_statement "to->index = line->index;" (assignment_expression "to->index = line->index" (field_expression "to->index" identifier -> field_identifier) = (field_expression "line->index" identifier -> field_identifier)) ;) (expression_statement "*(undefined2 *)&to->field_0xa = uVar3;" (assignment_expression "*(undefined2 *)&to->field_0xa = uVar3" (pointer_expression "*(undefined2 *)&to->field_0xa" * (cast_expression "(undefined2 *)&to->field_0xa" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&to->field_0xa" & (field_expression "to->field_0xa" identifier -> field_identifier)))) = identifier) ;) (expression_statement "uVar4 = line->wc;" (assignment_expression "uVar4 = line->wc" identifier = (field_expression "line->wc" identifier -> field_identifier)) ;) (expression_statement "iVar1 = iVar5 + 1;" (assignment_expression "iVar1 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = uVar4 - 0x621;" (assignment_expression "uVar2 = uVar4 - 0x621" identifier = (binary_expression "uVar4 - 0x621" identifier - number_literal)) ;) (if_statement "if (uVar2 < 0xb2) {\n      if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }\n      to->wc = shapetypes[uVar2].form_b + L'\x01';\n    }\n    else {\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }" if (parenthesized_expression "(uVar2 < 0xb2)" ( (binary_expression "uVar2 < 0xb2" identifier < number_literal) )) (compound_statement "{\n      if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }\n      to->wc = shapetypes[uVar2].form_b + L'\x01';\n    }" { (if_statement "if (shapetypes[uVar2].type != '\x01') {\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" if (parenthesized_expression "(shapetypes[uVar2].type != '\x01')" ( (binary_expression "shapetypes[uVar2].type != '\x01'" (field_expression "shapetypes[uVar2].type" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" { (if_statement "if (shapetypes[uVar2].type == '\x02') {\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }" if (parenthesized_expression "(shapetypes[uVar2].type == '\x02')" ( (binary_expression "shapetypes[uVar2].type == '\x02'" (field_expression "shapetypes[uVar2].type" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }\n        }" { (if_statement "if ((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)) {\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }\n          else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }" if (parenthesized_expression "((iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2))" ( (binary_expression "(iVar1 < count) && (uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)" (parenthesized_expression "(iVar1 < count)" ( (binary_expression "iVar1 < count" identifier < identifier) )) && (parenthesized_expression "(uVar6 = line[1].wc - 0x621, uVar6 < 0xb2)" ( (comma_expression "uVar6 = line[1].wc - 0x621, uVar6 < 0xb2" (assignment_expression "uVar6 = line[1].wc - 0x621" identifier = (binary_expression "line[1].wc - 0x621" (field_expression "line[1].wc" (subscript_expression "line[1]" identifier [ number_literal ]) . field_identifier) - number_literal)) , (binary_expression "uVar6 < 0xb2" identifier < number_literal)) ))) )) (compound_statement "{\n            bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;\n            bVar8 = shapetypes[uVar6].type != 4;\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;\n            if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }\n          }" { (expression_statement "bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0;" (assignment_expression "bVar7 = (shapetypes[uVar6].type & 0xfdU) != 0" identifier = (binary_expression "(shapetypes[uVar6].type & 0xfdU) != 0" (parenthesized_expression "(shapetypes[uVar6].type & 0xfdU)" ( (binary_expression "shapetypes[uVar6].type & 0xfdU" (field_expression "shapetypes[uVar6].type" (subscript_expression "shapetypes[uVar6]" identifier [ identifier ]) . field_identifier) & number_literal) )) != number_literal)) ;) (expression_statement "bVar8 = shapetypes[uVar6].type != 4;" (assignment_expression "bVar8 = shapetypes[uVar6].type != 4" identifier = (binary_expression "shapetypes[uVar6].type != 4" (field_expression "shapetypes[uVar6].type" (subscript_expression "shapetypes[uVar6]" identifier [ identifier ]) . field_identifier) != number_literal)) ;) (if_statement "if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" if (parenthesized_expression "(uVar4 == 0x644 && 0 < iVar5)" ( (binary_expression "uVar4 == 0x644 && 0 < iVar5" (binary_expression "uVar4 == 0x644" identifier == number_literal) && (binary_expression "0 < iVar5" number_literal < identifier)) )) (compound_statement "{\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }\nLAB_0002ad60:\n              to[-1].wc = 0x20;\n              if (count <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" { (expression_statement "uVar4 = line[-1].wc;" (assignment_expression "uVar4 = line[-1].wc" identifier = (field_expression "line[-1].wc" (subscript_expression "line[-1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (uVar4 == 0x623) {\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }" if (parenthesized_expression "(uVar4 == 0x623)" ( (binary_expression "uVar4 == 0x623" identifier == number_literal) )) (compound_statement "{\n                if (bVar7 && bVar8) goto LAB_0002ae90;\n                to->wc = 0xfef8;\n              }" { (if_statement "if (bVar7 && bVar8) goto LAB_0002ae90;" if (parenthesized_expression "(bVar7 && bVar8)" ( (binary_expression "bVar7 && bVar8" identifier && identifier) )) (goto_statement "goto LAB_0002ae90;" goto statement_identifier ;)) (expression_statement "to->wc = 0xfef8;" (assignment_expression "to->wc = 0xfef8" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }" else (if_statement "if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }\n              else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }" if (parenthesized_expression "(uVar4 < 0x624)" ( (binary_expression "uVar4 < 0x624" identifier < number_literal) )) (compound_statement "{\n                if (uVar4 != 0x622) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ae0c;\n                to->wc = 0xfef6;\n              }" { (if_statement "if (uVar4 != 0x622) goto LAB_0002aca9;" if (parenthesized_expression "(uVar4 != 0x622)" ( (binary_expression "uVar4 != 0x622" identifier != number_literal) )) (goto_statement "goto LAB_0002aca9;" goto statement_identifier ;)) (if_statement "if (bVar7 && bVar8) goto LAB_0002ae0c;" if (parenthesized_expression "(bVar7 && bVar8)" ( (binary_expression "bVar7 && bVar8" identifier && identifier) )) (goto_statement "goto LAB_0002ae0c;" goto statement_identifier ;)) (expression_statement "to->wc = 0xfef6;" (assignment_expression "to->wc = 0xfef6" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }" else (if_statement "if (uVar4 == 0x625) {\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }" if (parenthesized_expression "(uVar4 == 0x625)" ( (binary_expression "uVar4 == 0x625" identifier == number_literal) )) (compound_statement "{\n                if (bVar7 && bVar8) goto LAB_0002ae80;\n                to->wc = 0xfefa;\n              }" { (if_statement "if (bVar7 && bVar8) goto LAB_0002ae80;" if (parenthesized_expression "(bVar7 && bVar8)" ( (binary_expression "bVar7 && bVar8" identifier && identifier) )) (goto_statement "goto LAB_0002ae80;" goto statement_identifier ;)) (expression_statement "to->wc = 0xfefa;" (assignment_expression "to->wc = 0xfefa" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;) }) (else_clause "else {\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }" else (compound_statement "{\n                if (uVar4 != 0x627) goto LAB_0002aca9;\n                if (bVar7 && bVar8) goto LAB_0002ad4f;\n                to->wc = 0xfefc;\n              }" { (if_statement "if (uVar4 != 0x627) goto LAB_0002aca9;" if (parenthesized_expression "(uVar4 != 0x627)" ( (binary_expression "uVar4 != 0x627" identifier != number_literal) )) (goto_statement "goto LAB_0002aca9;" goto statement_identifier ;)) (if_statement "if (bVar7 && bVar8) goto LAB_0002ad4f;" if (parenthesized_expression "(bVar7 && bVar8)" ( (binary_expression "bVar7 && bVar8" identifier && identifier) )) (goto_statement "goto LAB_0002ad4f;" goto statement_identifier ;)) (expression_statement "to->wc = 0xfefc;" (assignment_expression "to->wc = 0xfefc" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;) }))))))) (labeled_statement "LAB_0002ad60:\n              to[-1].wc = 0x20;" statement_identifier : (expression_statement "to[-1].wc = 0x20;" (assignment_expression "to[-1].wc = 0x20" (field_expression "to[-1].wc" (subscript_expression "to[-1]" identifier [ number_literal ]) . field_identifier) = number_literal) ;)) (if_statement "if (count <= iVar1) {\n                return 1;\n              }" if (parenthesized_expression "(count <= iVar1)" ( (binary_expression "count <= iVar1" identifier <= identifier) )) (compound_statement "{\n                return 1;\n              }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_0002ad06;" goto statement_identifier ;) })) (labeled_statement "LAB_0002aca9:\n            if (bVar7 && bVar8) goto LAB_0002ae20;" statement_identifier : (if_statement "if (bVar7 && bVar8) goto LAB_0002ae20;" if (parenthesized_expression "(bVar7 && bVar8)" ( (binary_expression "bVar7 && bVar8" identifier && identifier) )) (goto_statement "goto LAB_0002ae20;" goto statement_identifier ;))) (if_statement "if (((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))) {\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }\n            else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }" if (parenthesized_expression "(((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04'))))" ( (binary_expression "((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)) ||\n               ((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))" (parenthesized_expression "((iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4))" ( (binary_expression "(iVar5 < 1) || (uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)" (parenthesized_expression "(iVar5 < 1)" ( (binary_expression "iVar5 < 1" identifier < number_literal) )) || (parenthesized_expression "(uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4)" ( (comma_expression "uVar4 = line[-1].wc - 0x621, 0xb1 < uVar4" (assignment_expression "uVar4 = line[-1].wc - 0x621" identifier = (binary_expression "line[-1].wc - 0x621" (field_expression "line[-1].wc" (subscript_expression "line[-1]" identifier [ number_literal ]) . field_identifier) - number_literal)) , (binary_expression "0xb1 < uVar4" number_literal < identifier)) ))) )) || (parenthesized_expression "((1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')))" ( (parenthesized_expression "(1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04'))" ( (binary_expression "1 < (int)shapetypes[uVar4].type - 1U && (shapetypes[uVar4].type != '\x04')" (binary_expression "1 < (int)shapetypes[uVar4].type - 1U" number_literal < (binary_expression "(int)shapetypes[uVar4].type - 1U" (cast_expression "(int)shapetypes[uVar4].type" ( (type_descriptor "int" primitive_type) ) (field_expression "shapetypes[uVar4].type" (subscript_expression "shapetypes[uVar4]" identifier [ identifier ]) . field_identifier)) - number_literal)) && (parenthesized_expression "(shapetypes[uVar4].type != '\x04')" ( (binary_expression "shapetypes[uVar4].type != '\x04'" (field_expression "shapetypes[uVar4].type" (subscript_expression "shapetypes[uVar4]" identifier [ identifier ]) . field_identifier) != (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n              to->wc = shapetypes[uVar2].form_b + L'\x01';\n            }" { (expression_statement "to->wc = shapetypes[uVar2].form_b + L'\x01';" (assignment_expression "to->wc = shapetypes[uVar2].form_b + L'\x01'" (field_expression "to->wc" identifier -> field_identifier) = (binary_expression "shapetypes[uVar2].form_b + L'\x01'" (field_expression "shapetypes[uVar2].form_b" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier) + (char_literal "L'\x01'" L' escape_sequence '))) ;) }) (else_clause "else {\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }" else (compound_statement "{\n              to->wc = shapetypes[uVar2].form_b + L'\x03';\n            }" { (expression_statement "to->wc = shapetypes[uVar2].form_b + L'\x03';" (assignment_expression "to->wc = shapetypes[uVar2].form_b + L'\x03'" (field_expression "to->wc" identifier -> field_identifier) = (binary_expression "shapetypes[uVar2].form_b + L'\x03'" (field_expression "shapetypes[uVar2].form_b" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier) + (char_literal "L'\x03'" L' escape_sequence '))) ;) }))) }) (else_clause "else {\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }" else (compound_statement "{\n            if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;\n            if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }\n            to->wc = local_20;\n          }" { (if_statement "if (uVar4 == 0x644 && 0 < iVar5) {\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" if (parenthesized_expression "(uVar4 == 0x644 && 0 < iVar5)" ( (binary_expression "uVar4 == 0x644 && 0 < iVar5" (binary_expression "uVar4 == 0x644" identifier == number_literal) && (binary_expression "0 < iVar5" number_literal < identifier)) )) (compound_statement "{\n              uVar4 = line[-1].wc;\n              if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" { (expression_statement "uVar4 = line[-1].wc;" (assignment_expression "uVar4 = line[-1].wc" identifier = (field_expression "line[-1].wc" (subscript_expression "line[-1]" identifier [ number_literal ]) . field_identifier)) ;) (if_statement "if (uVar4 == 0x623) {\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }\n              else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }" if (parenthesized_expression "(uVar4 == 0x623)" ( (binary_expression "uVar4 == 0x623" identifier == number_literal) )) (compound_statement "{\nLAB_0002ae90:\n                to->wc = 0xfef7;\n              }" { (labeled_statement "LAB_0002ae90:\n                to->wc = 0xfef7;" statement_identifier : (expression_statement "to->wc = 0xfef7;" (assignment_expression "to->wc = 0xfef7" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;)) }) (else_clause "else if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }" else (if_statement "if (uVar4 < 0x624) {\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }\n              else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }" if (parenthesized_expression "(uVar4 < 0x624)" ( (binary_expression "uVar4 < 0x624" identifier < number_literal) )) (compound_statement "{\n                if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                to->wc = 0xfef5;\n              }" { (if_statement "if (uVar4 != 0x622) {\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }" if (parenthesized_expression "(uVar4 != 0x622)" ( (binary_expression "uVar4 != 0x622" identifier != number_literal) )) (compound_statement "{\nLAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;\n                  goto LAB_0002ae38;\n                }" { (labeled_statement "LAB_0002aefa:\n                  local_20 = shapetypes[uVar2].form_b;" statement_identifier : (expression_statement "local_20 = shapetypes[uVar2].form_b;" (assignment_expression "local_20 = shapetypes[uVar2].form_b" identifier = (field_expression "shapetypes[uVar2].form_b" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier)) ;)) (goto_statement "goto LAB_0002ae38;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ae0c:\n                to->wc = 0xfef5;" statement_identifier : (expression_statement "to->wc = 0xfef5;" (assignment_expression "to->wc = 0xfef5" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;)) }) (else_clause "else if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }" else (if_statement "if (uVar4 == 0x625) {\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }\n              else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }" if (parenthesized_expression "(uVar4 == 0x625)" ( (binary_expression "uVar4 == 0x625" identifier == number_literal) )) (compound_statement "{\nLAB_0002ae80:\n                to->wc = 0xfef9;\n              }" { (labeled_statement "LAB_0002ae80:\n                to->wc = 0xfef9;" statement_identifier : (expression_statement "to->wc = 0xfef9;" (assignment_expression "to->wc = 0xfef9" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;)) }) (else_clause "else {\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }" else (compound_statement "{\n                if (uVar4 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                to->wc = 0xfefb;\n              }" { (if_statement "if (uVar4 != 0x627) goto LAB_0002aefa;" if (parenthesized_expression "(uVar4 != 0x627)" ( (binary_expression "uVar4 != 0x627" identifier != number_literal) )) (goto_statement "goto LAB_0002aefa;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad4f:\n                to->wc = 0xfefb;" statement_identifier : (expression_statement "to->wc = 0xfefb;" (assignment_expression "to->wc = 0xfefb" (field_expression "to->wc" identifier -> field_identifier) = number_literal) ;)) }))))))) (goto_statement "goto LAB_0002ad60;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ae20:\n            local_20 = shapetypes[uVar2].form_b;" statement_identifier : (expression_statement "local_20 = shapetypes[uVar2].form_b;" (assignment_expression "local_20 = shapetypes[uVar2].form_b" identifier = (field_expression "shapetypes[uVar2].form_b" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier)) ;)) (if_statement "if (0 < iVar5) {\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n              uVar4 = line[-1].wc;\nLAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }\n            }" { (expression_statement "uVar4 = line[-1].wc;" (assignment_expression "uVar4 = line[-1].wc" identifier = (field_expression "line[-1].wc" (subscript_expression "line[-1]" identifier [ number_literal ]) . field_identifier)) ;) (labeled_statement "LAB_0002ae38:\n              if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }" statement_identifier : (if_statement "if ((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))) {\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }" if (parenthesized_expression "((uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04'))))" ( (binary_expression "(uVar4 - 0x621 < 0xb2) &&\n                 (((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))" (parenthesized_expression "(uVar4 - 0x621 < 0xb2)" ( (binary_expression "uVar4 - 0x621 < 0xb2" (binary_expression "uVar4 - 0x621" identifier - number_literal) < number_literal) )) && (parenthesized_expression "(((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')))" ( (parenthesized_expression "((int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04'))" ( (binary_expression "(int)shapetypes[uVar4 - 0x621].type - 1U < 2 ||\n                  (shapetypes[uVar4 - 0x621].type == '\x04')" (binary_expression "(int)shapetypes[uVar4 - 0x621].type - 1U < 2" (binary_expression "(int)shapetypes[uVar4 - 0x621].type - 1U" (cast_expression "(int)shapetypes[uVar4 - 0x621].type" ( (type_descriptor "int" primitive_type) ) (field_expression "shapetypes[uVar4 - 0x621].type" (subscript_expression "shapetypes[uVar4 - 0x621]" identifier [ (binary_expression "uVar4 - 0x621" identifier - number_literal) ]) . field_identifier)) - number_literal) < number_literal) || (parenthesized_expression "(shapetypes[uVar4 - 0x621].type == '\x04')" ( (binary_expression "shapetypes[uVar4 - 0x621].type == '\x04'" (field_expression "shapetypes[uVar4 - 0x621].type" (subscript_expression "shapetypes[uVar4 - 0x621]" identifier [ (binary_expression "uVar4 - 0x621" identifier - number_literal) ]) . field_identifier) == (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n                to->wc = local_20 + L'\x02';\n                goto LAB_0002ad00;\n              }" { (expression_statement "to->wc = local_20 + L'\x02';" (assignment_expression "to->wc = local_20 + L'\x02'" (field_expression "to->wc" identifier -> field_identifier) = (binary_expression "local_20 + L'\x02'" identifier + (char_literal "L'\x02'" L' escape_sequence '))) ;) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) }))) })) (expression_statement "to->wc = local_20;" (assignment_expression "to->wc = local_20" (field_expression "to->wc" identifier -> field_identifier) = identifier) ;) }))) })) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) })) (if_statement "if (((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))) {\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }" if (parenthesized_expression "(((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4))))" ( (binary_expression "((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)) ||\n         (((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))" (parenthesized_expression "((count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4))" ( (binary_expression "(count <= iVar1) || (uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)" (parenthesized_expression "(count <= iVar1)" ( (binary_expression "count <= iVar1" identifier <= identifier) )) || (parenthesized_expression "(uVar4 = line[1].wc - 0x621, 0xb1 < uVar4)" ( (comma_expression "uVar4 = line[1].wc - 0x621, 0xb1 < uVar4" (assignment_expression "uVar4 = line[1].wc - 0x621" identifier = (binary_expression "line[1].wc - 0x621" (field_expression "line[1].wc" (subscript_expression "line[1]" identifier [ number_literal ]) . field_identifier) - number_literal)) , (binary_expression "0xb1 < uVar4" number_literal < identifier)) ))) )) || (parenthesized_expression "(((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)))" ( (parenthesized_expression "((shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4))" ( (binary_expression "(shapetypes[uVar4].type & 0xfdU) != 0 && (shapetypes[uVar4].type != 4)" (binary_expression "(shapetypes[uVar4].type & 0xfdU) != 0" (parenthesized_expression "(shapetypes[uVar4].type & 0xfdU)" ( (binary_expression "shapetypes[uVar4].type & 0xfdU" (field_expression "shapetypes[uVar4].type" (subscript_expression "shapetypes[uVar4]" identifier [ identifier ]) . field_identifier) & number_literal) )) != number_literal) && (parenthesized_expression "(shapetypes[uVar4].type != 4)" ( (binary_expression "shapetypes[uVar4].type != 4" (field_expression "shapetypes[uVar4].type" (subscript_expression "shapetypes[uVar4]" identifier [ identifier ]) . field_identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n        to->wc = shapetypes[uVar2].form_b;\n        goto LAB_0002ad00;\n      }" { (expression_statement "to->wc = shapetypes[uVar2].form_b;" (assignment_expression "to->wc = shapetypes[uVar2].form_b" (field_expression "to->wc" identifier -> field_identifier) = (field_expression "shapetypes[uVar2].form_b" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier)) ;) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) })) (expression_statement "to->wc = shapetypes[uVar2].form_b + L'\x01';" (assignment_expression "to->wc = shapetypes[uVar2].form_b + L'\x01'" (field_expression "to->wc" identifier -> field_identifier) = (binary_expression "shapetypes[uVar2].form_b + L'\x01'" (field_expression "shapetypes[uVar2].form_b" (subscript_expression "shapetypes[uVar2]" identifier [ identifier ]) . field_identifier) + (char_literal "L'\x01'" L' escape_sequence '))) ;) }) (else_clause "else {\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }" else (compound_statement "{\nLAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }\n    }" { (labeled_statement "LAB_0002ad00:\n      if (count <= iVar1) {\n        return 1;\n      }" statement_identifier : (if_statement "if (count <= iVar1) {\n        return 1;\n      }" if (parenthesized_expression "(count <= iVar1)" ( (binary_expression "count <= iVar1" identifier <= identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) }))) }))) (labeled_statement "LAB_0002ad06:\n    line = line + 1;" statement_identifier : (expression_statement "line = line + 1;" (assignment_expression "line = line + 1" identifier = (binary_expression "line + 1" identifier + number_literal)) ;)) (expression_statement "to = to + 1;" (assignment_expression "to = to + 1" identifier = (binary_expression "to + 1" identifier + number_literal)) ;) (expression_statement "iVar5 = iVar1;" (assignment_expression "iVar5 = iVar1" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "undefined4 FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}\n\n" (function_definition "undefined4 FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}" type_identifier (function_declarator "FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,undefined4 *param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "bool bVar6;" primitive_type identifier ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (if_statement "if (param_3 < 1) {\n    return 1;\n  }" if (parenthesized_expression "(param_3 < 1)" ( (binary_expression "param_3 < 1" identifier < number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );" do (compound_statement "{\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  }" { (expression_statement "*param_2 = *param_1;" (assignment_expression "*param_2 = *param_1" (pointer_expression "*param_2" * identifier) = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "param_2[1] = param_1[1];" (assignment_expression "param_2[1] = param_1[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_2[2] = param_1[2];" (assignment_expression "param_2[2] = param_1[2]" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar1 = iVar4 + 1;" (assignment_expression "iVar1 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar2 = iVar3 - 0x621;" (assignment_expression "uVar2 = iVar3 - 0x621" identifier = (binary_expression "iVar3 - 0x621" identifier - number_literal)) ;) (if_statement "if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" if (parenthesized_expression "(uVar2 < 0xb2)" ( (binary_expression "uVar2 < 0xb2" identifier < number_literal) )) (compound_statement "{\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }" { (if_statement "if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" if (parenthesized_expression "((&DAT_0007ef80)[uVar2 * 8] != '\x01')" ( (binary_expression "(&DAT_0007ef80)[uVar2 * 8] != '\x01'" (subscript_expression "(&DAT_0007ef80)[uVar2 * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "uVar2 * 8" identifier * number_literal) ]) != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" { (if_statement "if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }" if (parenthesized_expression "((&DAT_0007ef80)[uVar2 * 8] == '\x02')" ( (binary_expression "(&DAT_0007ef80)[uVar2 * 8] == '\x02'" (subscript_expression "(&DAT_0007ef80)[uVar2 * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "uVar2 * 8" identifier * number_literal) ]) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }" { (if_statement "if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" if (parenthesized_expression "((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2))" ( (binary_expression "(iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)" (parenthesized_expression "(iVar1 < param_3)" ( (binary_expression "iVar1 < param_3" identifier < identifier) )) && (parenthesized_expression "(param_1[4] - 0x621 < 0xb2)" ( (binary_expression "param_1[4] - 0x621 < 0xb2" (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) < number_literal) ))) )) (compound_statement "{\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }" { (expression_statement "bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;" (assignment_expression "bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" identifier = (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd)" ( (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) & number_literal) )) != number_literal)) ;) (expression_statement "bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;" (assignment_expression "bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" identifier = (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) != number_literal)) ;) (if_statement "if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" if (parenthesized_expression "(iVar3 == 0x644 && 0 < iVar4)" ( (binary_expression "iVar3 == 0x644 && 0 < iVar4" (binary_expression "iVar3 == 0x644" identifier == number_literal) && (binary_expression "0 < iVar4" number_literal < identifier)) )) (compound_statement "{\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" { (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" identifier = (subscript_expression "param_1[-2]" identifier [ number_literal ])) ;) (if_statement "if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" if (parenthesized_expression "(uVar5 == 0x623)" ( (binary_expression "uVar5 == 0x623" identifier == number_literal) )) (compound_statement "{\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }" { (if_statement "if (bVar6 && bVar7) goto LAB_0002ae90;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae90;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfef8;" (assignment_expression "param_2[1] = 0xfef8" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" else (if_statement "if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" if (parenthesized_expression "(uVar5 < 0x624)" ( (binary_expression "uVar5 < 0x624" identifier < number_literal) )) (compound_statement "{\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }" { (if_statement "if (uVar5 != 0x622) goto LAB_0002aca9;" if (parenthesized_expression "(uVar5 != 0x622)" ( (binary_expression "uVar5 != 0x622" identifier != number_literal) )) (goto_statement "goto LAB_0002aca9;" goto statement_identifier ;)) (if_statement "if (bVar6 && bVar7) goto LAB_0002ae0c;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae0c;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfef6;" (assignment_expression "param_2[1] = 0xfef6" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" else (if_statement "if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" if (parenthesized_expression "(uVar5 == 0x625)" ( (binary_expression "uVar5 == 0x625" identifier == number_literal) )) (compound_statement "{\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }" { (if_statement "if (bVar6 && bVar7) goto LAB_0002ae80;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae80;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfefa;" (assignment_expression "param_2[1] = 0xfefa" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" else (compound_statement "{\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" { (if_statement "if (uVar5 != 0x627) goto LAB_0002aca9;" if (parenthesized_expression "(uVar5 != 0x627)" ( (binary_expression "uVar5 != 0x627" identifier != number_literal) )) (goto_statement "goto LAB_0002aca9;" goto statement_identifier ;)) (if_statement "if (bVar6 && bVar7) goto LAB_0002ad4f;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ad4f;" goto statement_identifier ;)) (expression_statement "param_2[1] = 0xfefc;" (assignment_expression "param_2[1] = 0xfefc" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;) }))))))) (labeled_statement "LAB_0002ad60:\n              param_2[-2] = 0x20;" statement_identifier : (expression_statement "param_2[-2] = 0x20;" (assignment_expression "param_2[-2] = 0x20" (subscript_expression "param_2[-2]" identifier [ number_literal ]) = number_literal) ;)) (if_statement "if (param_3 <= iVar1) {\n                return 1;\n              }" if (parenthesized_expression "(param_3 <= iVar1)" ( (binary_expression "param_3 <= iVar1" identifier <= identifier) )) (compound_statement "{\n                return 1;\n              }" { (return_statement "return 1;" return number_literal ;) })) (goto_statement "goto LAB_0002ad06;" goto statement_identifier ;) })) (labeled_statement "LAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;" statement_identifier : (if_statement "if (bVar6 && bVar7) goto LAB_0002ae20;" if (parenthesized_expression "(bVar6 && bVar7)" ( (binary_expression "bVar6 && bVar7" identifier && identifier) )) (goto_statement "goto LAB_0002ae20;" goto statement_identifier ;))) (if_statement "if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" if (parenthesized_expression "(((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'))))" ( (binary_expression "((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))" (parenthesized_expression "((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621))" ( (binary_expression "(iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)" (parenthesized_expression "(iVar4 < 1)" ( (binary_expression "iVar4 < 1" identifier < number_literal) )) || (parenthesized_expression "(0xb1 < param_1[-2] - 0x621)" ( (binary_expression "0xb1 < param_1[-2] - 0x621" number_literal < (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" identifier [ number_literal ]) - number_literal)) ))) )) || (parenthesized_expression "((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))" ( (parenthesized_expression "(1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'))" ( (binary_expression "1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')" (binary_expression "1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U" number_literal < (binary_expression "(int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U" (cast_expression "(int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[-2] - 0x621) * 8" (parenthesized_expression "(param_1[-2] - 0x621)" ( (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]))) - number_literal)) && (parenthesized_expression "((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')" ( (binary_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'" (subscript_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[-2] - 0x621) * 8" (parenthesized_expression "(param_1[-2] - 0x621)" ( (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) != (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }" { (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) + number_literal)) ;) }) (else_clause "else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" else (compound_statement "{\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" { (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 3" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) + number_literal)) ;) }))) }) (else_clause "else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" else (compound_statement "{\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" { (if_statement "if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" if (parenthesized_expression "(iVar3 == 0x644 && 0 < iVar4)" ( (binary_expression "iVar3 == 0x644 && 0 < iVar4" (binary_expression "iVar3 == 0x644" identifier == number_literal) && (binary_expression "0 < iVar4" number_literal < identifier)) )) (compound_statement "{\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" { (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" identifier = (subscript_expression "param_1[-2]" identifier [ number_literal ])) ;) (if_statement "if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" if (parenthesized_expression "(uVar5 == 0x623)" ( (binary_expression "uVar5 == 0x623" identifier == number_literal) )) (compound_statement "{\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }" { (labeled_statement "LAB_0002ae90:\n                param_2[1] = 0xfef7;" statement_identifier : (expression_statement "param_2[1] = 0xfef7;" (assignment_expression "param_2[1] = 0xfef7" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" else (if_statement "if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" if (parenthesized_expression "(uVar5 < 0x624)" ( (binary_expression "uVar5 < 0x624" identifier < number_literal) )) (compound_statement "{\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }" { (if_statement "if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }" if (parenthesized_expression "(uVar5 != 0x622)" ( (binary_expression "uVar5 != 0x622" identifier != number_literal) )) (compound_statement "{\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }" { (labeled_statement "LAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" statement_identifier : (expression_statement "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8)" identifier = (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) ))))) ;)) (goto_statement "goto LAB_0002ae38;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ae0c:\n                param_2[1] = 0xfef5;" statement_identifier : (expression_statement "param_2[1] = 0xfef5;" (assignment_expression "param_2[1] = 0xfef5" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" else (if_statement "if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" if (parenthesized_expression "(uVar5 == 0x625)" ( (binary_expression "uVar5 == 0x625" identifier == number_literal) )) (compound_statement "{\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }" { (labeled_statement "LAB_0002ae80:\n                param_2[1] = 0xfef9;" statement_identifier : (expression_statement "param_2[1] = 0xfef9;" (assignment_expression "param_2[1] = 0xfef9" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }) (else_clause "else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" else (compound_statement "{\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" { (if_statement "if (uVar5 != 0x627) goto LAB_0002aefa;" if (parenthesized_expression "(uVar5 != 0x627)" ( (binary_expression "uVar5 != 0x627" identifier != number_literal) )) (goto_statement "goto LAB_0002aefa;" goto statement_identifier ;)) (labeled_statement "LAB_0002ad4f:\n                param_2[1] = 0xfefb;" statement_identifier : (expression_statement "param_2[1] = 0xfefb;" (assignment_expression "param_2[1] = 0xfefb" (subscript_expression "param_2[1]" identifier [ number_literal ]) = number_literal) ;)) }))))))) (goto_statement "goto LAB_0002ad60;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" statement_identifier : (expression_statement "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8)" identifier = (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) ))))) ;)) (if_statement "if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }" { (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" identifier = (subscript_expression "param_1[-2]" identifier [ number_literal ])) ;) (labeled_statement "LAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" statement_identifier : (if_statement "if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" if (parenthesized_expression "((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'))))" ( (binary_expression "(uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))" (parenthesized_expression "(uVar5 - 0x621 < 0xb2)" ( (binary_expression "uVar5 - 0x621 < 0xb2" (binary_expression "uVar5 - 0x621" identifier - number_literal) < number_literal) )) && (parenthesized_expression "(((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))" ( (parenthesized_expression "((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'))" ( (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')" (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2" (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U" (cast_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(uVar5 - 0x621) * 8" (parenthesized_expression "(uVar5 - 0x621)" ( (binary_expression "uVar5 - 0x621" identifier - number_literal) )) * number_literal) ]))) - number_literal) < number_literal) || (parenthesized_expression "((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')" ( (binary_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'" (subscript_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(uVar5 - 0x621) * 8" (parenthesized_expression "(uVar5 - 0x621)" ( (binary_expression "uVar5 - 0x621" identifier - number_literal) )) * number_literal) ]) == (char_literal "'\x04'" ' escape_sequence ')) ))) )) ))) )) (compound_statement "{\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" { (expression_statement "param_2[1] = local_20 + 2;" (assignment_expression "param_2[1] = local_20 + 2" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "local_20 + 2" identifier + number_literal)) ;) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) }))) })) (expression_statement "param_2[1] = local_20;" (assignment_expression "param_2[1] = local_20" (subscript_expression "param_2[1]" identifier [ number_literal ]) = identifier) ;) }))) })) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) })) (if_statement "if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }" if (parenthesized_expression "(((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4))))" ( (binary_expression "((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))" (parenthesized_expression "((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621))" ( (binary_expression "(param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)" (parenthesized_expression "(param_3 <= iVar1)" ( (binary_expression "param_3 <= iVar1" identifier <= identifier) )) || (parenthesized_expression "(0xb1 < param_1[4] - 0x621)" ( (binary_expression "0xb1 < param_1[4] - 0x621" number_literal < (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal)) ))) )) || (parenthesized_expression "((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))" ( (parenthesized_expression "(((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4))" ( (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)" (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd)" ( (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) & number_literal) )) != number_literal) && (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)" ( (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" ( (pointer_expression "&DAT_0007ef80" & identifier) )) [ (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" ( (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" identifier [ number_literal ]) - number_literal) )) * number_literal) ]) != number_literal) ))) )) ))) )) (compound_statement "{\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }" { (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8)" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) ))))) ;) (goto_statement "goto LAB_0002ad00;" goto statement_identifier ;) })) (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" * (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" ( (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" & identifier) + (binary_expression "uVar2 * 8" identifier * number_literal)) )))) + number_literal)) ;) }) (else_clause "else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" else (compound_statement "{\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" { (labeled_statement "LAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }" statement_identifier : (if_statement "if (param_3 <= iVar1) {\n        return 1;\n      }" if (parenthesized_expression "(param_3 <= iVar1)" ( (binary_expression "param_3 <= iVar1" identifier <= identifier) )) (compound_statement "{\n        return 1;\n      }" { (return_statement "return 1;" return number_literal ;) }))) }))) (labeled_statement "LAB_0002ad06:\n    param_1 = param_1 + 3;" statement_identifier : (expression_statement "param_1 = param_1 + 3;" (assignment_expression "param_1 = param_1 + 3" identifier = (binary_expression "param_1 + 3" identifier + number_literal)) ;)) (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" identifier = (binary_expression "param_2 + 3" identifier + number_literal)) ;) (expression_statement "iVar4 = iVar1;" (assignment_expression "iVar4 = iVar1" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) < LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) * LIT) ]) & LIT) )) != LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) * LIT) ]) != LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression LIT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT && IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT && IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT && IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT && IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))))))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT && IDENT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression LIT < (binary_expression (subscript_expression IDENT [ LIT ]) - LIT)) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression LIT < (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) * LIT) ]))) - LIT)) && (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) * LIT) ]) != (char_literal ' escape_sequence ')) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) + LIT)) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression LIT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) }))))))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) ]))) - LIT) < LIT) || (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression IDENT - LIT) )) * LIT) ]) == (char_literal ' escape_sequence ')) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) }))) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (binary_expression LIT < (binary_expression (subscript_expression IDENT [ LIT ]) - LIT)) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) * LIT) ]) & LIT) )) != LIT) && (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - LIT) )) * LIT) ]) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression IDENT * LIT)) )))) + LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return LIT ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "undefined4 FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}" (type_identifier "undefined4") (function_declarator "FUN_0002abc0(undefined4 *param_1,undefined4 *param_2,int param_3)" (identifier "FUN_0002abc0") (parameter_list "(undefined4 *param_1,undefined4 *param_2,int param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  int iVar4;\n  uint uVar5;\n  bool bVar6;\n  bool bVar7;\n  int local_20;\n  \n  if (param_3 < 1) {\n    return 1;\n  }\n  iVar4 = 0;\n  do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "bool bVar6;" (primitive_type "bool") (identifier "bVar6") (; ";")) (declaration "bool bVar7;" (primitive_type "bool") (identifier "bVar7") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (if_statement "if (param_3 < 1) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(param_3 < 1)" (( "(") (binary_expression "param_3 < 1" (identifier "param_3") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  } while( true );" (do "do") (compound_statement "{\n    *param_2 = *param_1;\n    param_2[1] = param_1[1];\n    param_2[2] = param_1[2];\n    iVar3 = param_1[1];\n    iVar1 = iVar4 + 1;\n    uVar2 = iVar3 - 0x621;\n    if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }\nLAB_0002ad06:\n    param_1 = param_1 + 3;\n    param_2 = param_2 + 3;\n    iVar4 = iVar1;\n  }" ({ "{") (expression_statement "*param_2 = *param_1;" (assignment_expression "*param_2 = *param_1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "param_2[1] = param_1[1];" (assignment_expression "param_2[1] = param_1[1]" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_2[2] = param_1[2];" (assignment_expression "param_2[2] = param_1[2]" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" (identifier "iVar3") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar1 = iVar4 + 1;" (assignment_expression "iVar1 = iVar4 + 1" (identifier "iVar1") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar2 = iVar3 - 0x621;" (assignment_expression "uVar2 = iVar3 - 0x621" (identifier "uVar2") (= "=") (binary_expression "iVar3 - 0x621" (identifier "iVar3") (- "-") (number_literal "0x621"))) (; ";")) (if_statement "if (uVar2 < 0xb2) {\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }\n    else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" (if "if") (parenthesized_expression "(uVar2 < 0xb2)" (( "(") (binary_expression "uVar2 < 0xb2" (identifier "uVar2") (< "<") (number_literal "0xb2")) () ")")) (compound_statement "{\n      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }\n      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }\n      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n    }" ({ "{") (if_statement "if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" (if "if") (parenthesized_expression "((&DAT_0007ef80)[uVar2 * 8] != '\x01')" (( "(") (binary_expression "(&DAT_0007ef80)[uVar2 * 8] != '\x01'" (subscript_expression "(&DAT_0007ef80)[uVar2 * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8")) (] "]")) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }\n        goto LAB_0002ad00;\n      }" ({ "{") (if_statement "if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }" (if "if") (parenthesized_expression "((&DAT_0007ef80)[uVar2 * 8] == '\x02')" (( "(") (binary_expression "(&DAT_0007ef80)[uVar2 * 8] == '\x02'" (subscript_expression "(&DAT_0007ef80)[uVar2 * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8")) (] "]")) (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }\n        }" ({ "{") (if_statement "if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }\n          else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" (if "if") (parenthesized_expression "((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2))" (( "(") (binary_expression "(iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)" (parenthesized_expression "(iVar1 < param_3)" (( "(") (binary_expression "iVar1 < param_3" (identifier "iVar1") (< "<") (identifier "param_3")) () ")")) (&& "&&") (parenthesized_expression "(param_1[4] - 0x621 < 0xb2)" (( "(") (binary_expression "param_1[4] - 0x621 < 0xb2" (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (- "-") (number_literal "0x621")) (< "<") (number_literal "0xb2")) () ")"))) () ")")) (compound_statement "{\n            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;\n            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }\nLAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;\n            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }\n          }" ({ "{") (expression_statement "bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;" (assignment_expression "bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" (identifier "bVar6") (= "=") (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd)" (( "(") (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" (( "(") (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")) (& "&") (number_literal "0xfd")) () ")")) (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;" (assignment_expression "bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" (identifier "bVar7") (= "=") (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" (( "(") (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")) (!= "!=") (number_literal "4"))) (; ";")) (if_statement "if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" (if "if") (parenthesized_expression "(iVar3 == 0x644 && 0 < iVar4)" (( "(") (binary_expression "iVar3 == 0x644 && 0 < iVar4" (binary_expression "iVar3 == 0x644" (identifier "iVar3") (== "==") (number_literal "0x644")) (&& "&&") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4"))) () ")")) (compound_statement "{\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }\nLAB_0002ad60:\n              param_2[-2] = 0x20;\n              if (param_3 <= iVar1) {\n                return 1;\n              }\n              goto LAB_0002ad06;\n            }" ({ "{") (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" (identifier "uVar5") (= "=") (subscript_expression "param_1[-2]" (identifier "param_1") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (if_statement "if (uVar5 == 0x623) {\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" (if "if") (parenthesized_expression "(uVar5 == 0x623)" (( "(") (binary_expression "uVar5 == 0x623" (identifier "uVar5") (== "==") (number_literal "0x623")) () ")")) (compound_statement "{\n                if (bVar6 && bVar7) goto LAB_0002ae90;\n                param_2[1] = 0xfef8;\n              }" ({ "{") (if_statement "if (bVar6 && bVar7) goto LAB_0002ae90;" (if "if") (parenthesized_expression "(bVar6 && bVar7)" (( "(") (binary_expression "bVar6 && bVar7" (identifier "bVar6") (&& "&&") (identifier "bVar7")) () ")")) (goto_statement "goto LAB_0002ae90;" (goto "goto") (statement_identifier "LAB_0002ae90") (; ";"))) (expression_statement "param_2[1] = 0xfef8;" (assignment_expression "param_2[1] = 0xfef8" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfef8")) (; ";")) (} "}")) (else_clause "else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" (else "else") (if_statement "if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }\n              else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" (if "if") (parenthesized_expression "(uVar5 < 0x624)" (( "(") (binary_expression "uVar5 < 0x624" (identifier "uVar5") (< "<") (number_literal "0x624")) () ")")) (compound_statement "{\n                if (uVar5 != 0x622) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ae0c;\n                param_2[1] = 0xfef6;\n              }" ({ "{") (if_statement "if (uVar5 != 0x622) goto LAB_0002aca9;" (if "if") (parenthesized_expression "(uVar5 != 0x622)" (( "(") (binary_expression "uVar5 != 0x622" (identifier "uVar5") (!= "!=") (number_literal "0x622")) () ")")) (goto_statement "goto LAB_0002aca9;" (goto "goto") (statement_identifier "LAB_0002aca9") (; ";"))) (if_statement "if (bVar6 && bVar7) goto LAB_0002ae0c;" (if "if") (parenthesized_expression "(bVar6 && bVar7)" (( "(") (binary_expression "bVar6 && bVar7" (identifier "bVar6") (&& "&&") (identifier "bVar7")) () ")")) (goto_statement "goto LAB_0002ae0c;" (goto "goto") (statement_identifier "LAB_0002ae0c") (; ";"))) (expression_statement "param_2[1] = 0xfef6;" (assignment_expression "param_2[1] = 0xfef6" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfef6")) (; ";")) (} "}")) (else_clause "else if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" (else "else") (if_statement "if (uVar5 == 0x625) {\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" (if "if") (parenthesized_expression "(uVar5 == 0x625)" (( "(") (binary_expression "uVar5 == 0x625" (identifier "uVar5") (== "==") (number_literal "0x625")) () ")")) (compound_statement "{\n                if (bVar6 && bVar7) goto LAB_0002ae80;\n                param_2[1] = 0xfefa;\n              }" ({ "{") (if_statement "if (bVar6 && bVar7) goto LAB_0002ae80;" (if "if") (parenthesized_expression "(bVar6 && bVar7)" (( "(") (binary_expression "bVar6 && bVar7" (identifier "bVar6") (&& "&&") (identifier "bVar7")) () ")")) (goto_statement "goto LAB_0002ae80;" (goto "goto") (statement_identifier "LAB_0002ae80") (; ";"))) (expression_statement "param_2[1] = 0xfefa;" (assignment_expression "param_2[1] = 0xfefa" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfefa")) (; ";")) (} "}")) (else_clause "else {\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" (else "else") (compound_statement "{\n                if (uVar5 != 0x627) goto LAB_0002aca9;\n                if (bVar6 && bVar7) goto LAB_0002ad4f;\n                param_2[1] = 0xfefc;\n              }" ({ "{") (if_statement "if (uVar5 != 0x627) goto LAB_0002aca9;" (if "if") (parenthesized_expression "(uVar5 != 0x627)" (( "(") (binary_expression "uVar5 != 0x627" (identifier "uVar5") (!= "!=") (number_literal "0x627")) () ")")) (goto_statement "goto LAB_0002aca9;" (goto "goto") (statement_identifier "LAB_0002aca9") (; ";"))) (if_statement "if (bVar6 && bVar7) goto LAB_0002ad4f;" (if "if") (parenthesized_expression "(bVar6 && bVar7)" (( "(") (binary_expression "bVar6 && bVar7" (identifier "bVar6") (&& "&&") (identifier "bVar7")) () ")")) (goto_statement "goto LAB_0002ad4f;" (goto "goto") (statement_identifier "LAB_0002ad4f") (; ";"))) (expression_statement "param_2[1] = 0xfefc;" (assignment_expression "param_2[1] = 0xfefc" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfefc")) (; ";")) (} "}")))))))) (labeled_statement "LAB_0002ad60:\n              param_2[-2] = 0x20;" (statement_identifier "LAB_0002ad60") (: ":") (expression_statement "param_2[-2] = 0x20;" (assignment_expression "param_2[-2] = 0x20" (subscript_expression "param_2[-2]" (identifier "param_2") ([ "[") (number_literal "-2") (] "]")) (= "=") (number_literal "0x20")) (; ";"))) (if_statement "if (param_3 <= iVar1) {\n                return 1;\n              }" (if "if") (parenthesized_expression "(param_3 <= iVar1)" (( "(") (binary_expression "param_3 <= iVar1" (identifier "param_3") (<= "<=") (identifier "iVar1")) () ")")) (compound_statement "{\n                return 1;\n              }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (goto_statement "goto LAB_0002ad06;" (goto "goto") (statement_identifier "LAB_0002ad06") (; ";")) (} "}"))) (labeled_statement "LAB_0002aca9:\n            if (bVar6 && bVar7) goto LAB_0002ae20;" (statement_identifier "LAB_0002aca9") (: ":") (if_statement "if (bVar6 && bVar7) goto LAB_0002ae20;" (if "if") (parenthesized_expression "(bVar6 && bVar7)" (( "(") (binary_expression "bVar6 && bVar7" (identifier "bVar6") (&& "&&") (identifier "bVar7")) () ")")) (goto_statement "goto LAB_0002ae20;" (goto "goto") (statement_identifier "LAB_0002ae20") (; ";")))) (if_statement "if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }\n            else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" (if "if") (parenthesized_expression "(((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'))))" (( "(") (binary_expression "((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||\n               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))" (parenthesized_expression "((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621))" (( "(") (binary_expression "(iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)" (parenthesized_expression "(iVar4 < 1)" (( "(") (binary_expression "iVar4 < 1" (identifier "iVar4") (< "<") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(0xb1 < param_1[-2] - 0x621)" (( "(") (binary_expression "0xb1 < param_1[-2] - 0x621" (number_literal "0xb1") (< "<") (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" (identifier "param_1") ([ "[") (number_literal "-2") (] "]")) (- "-") (number_literal "0x621"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))" (( "(") (parenthesized_expression "(1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'))" (( "(") (binary_expression "1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&\n                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')" (binary_expression "1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U" (number_literal "1") (< "<") (binary_expression "(int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U" (cast_expression "(int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(param_1[-2] - 0x621) * 8" (parenthesized_expression "(param_1[-2] - 0x621)" (( "(") (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" (identifier "param_1") ([ "[") (number_literal "-2") (] "]")) (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")))) (- "-") (number_literal "1U"))) (&& "&&") (parenthesized_expression "((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')" (( "(") (binary_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04'" (subscript_expression "(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(param_1[-2] - 0x621) * 8" (parenthesized_expression "(param_1[-2] - 0x621)" (( "(") (binary_expression "param_1[-2] - 0x621" (subscript_expression "param_1[-2]" (identifier "param_1") ([ "[") (number_literal "-2") (] "]")) (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")) (!= "!=") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;\n            }" ({ "{") (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" (* "*") (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" (( "(") (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" (& "&") (identifier "DAT_0007ef84")) (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" (else "else") (compound_statement "{\n              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;\n            }" ({ "{") (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 3" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" (* "*") (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" (( "(") (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" (& "&") (identifier "DAT_0007ef84")) (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) () ")")))) (+ "+") (number_literal "3"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" (else "else") (compound_statement "{\n            if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }\nLAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n            if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }\n            param_2[1] = local_20;\n          }" ({ "{") (if_statement "if (iVar3 == 0x644 && 0 < iVar4) {\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" (if "if") (parenthesized_expression "(iVar3 == 0x644 && 0 < iVar4)" (( "(") (binary_expression "iVar3 == 0x644 && 0 < iVar4" (binary_expression "iVar3 == 0x644" (identifier "iVar3") (== "==") (number_literal "0x644")) (&& "&&") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4"))) () ")")) (compound_statement "{\n              uVar5 = param_1[-2];\n              if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }\n              goto LAB_0002ad60;\n            }" ({ "{") (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" (identifier "uVar5") (= "=") (subscript_expression "param_1[-2]" (identifier "param_1") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (if_statement "if (uVar5 == 0x623) {\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }\n              else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" (if "if") (parenthesized_expression "(uVar5 == 0x623)" (( "(") (binary_expression "uVar5 == 0x623" (identifier "uVar5") (== "==") (number_literal "0x623")) () ")")) (compound_statement "{\nLAB_0002ae90:\n                param_2[1] = 0xfef7;\n              }" ({ "{") (labeled_statement "LAB_0002ae90:\n                param_2[1] = 0xfef7;" (statement_identifier "LAB_0002ae90") (: ":") (expression_statement "param_2[1] = 0xfef7;" (assignment_expression "param_2[1] = 0xfef7" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfef7")) (; ";"))) (} "}")) (else_clause "else if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" (else "else") (if_statement "if (uVar5 < 0x624) {\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }\n              else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" (if "if") (parenthesized_expression "(uVar5 < 0x624)" (( "(") (binary_expression "uVar5 < 0x624" (identifier "uVar5") (< "<") (number_literal "0x624")) () ")")) (compound_statement "{\n                if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }\nLAB_0002ae0c:\n                param_2[1] = 0xfef5;\n              }" ({ "{") (if_statement "if (uVar5 != 0x622) {\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }" (if "if") (parenthesized_expression "(uVar5 != 0x622)" (( "(") (binary_expression "uVar5 != 0x622" (identifier "uVar5") (!= "!=") (number_literal "0x622")) () ")")) (compound_statement "{\nLAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n                  goto LAB_0002ae38;\n                }" ({ "{") (labeled_statement "LAB_0002aefa:\n                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (statement_identifier "LAB_0002aefa") (: ":") (expression_statement "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" (* "*") (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" (( "(") (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" (& "&") (identifier "DAT_0007ef84")) (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) () ")"))))) (; ";"))) (goto_statement "goto LAB_0002ae38;" (goto "goto") (statement_identifier "LAB_0002ae38") (; ";")) (} "}"))) (labeled_statement "LAB_0002ae0c:\n                param_2[1] = 0xfef5;" (statement_identifier "LAB_0002ae0c") (: ":") (expression_statement "param_2[1] = 0xfef5;" (assignment_expression "param_2[1] = 0xfef5" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfef5")) (; ";"))) (} "}")) (else_clause "else if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" (else "else") (if_statement "if (uVar5 == 0x625) {\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }\n              else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" (if "if") (parenthesized_expression "(uVar5 == 0x625)" (( "(") (binary_expression "uVar5 == 0x625" (identifier "uVar5") (== "==") (number_literal "0x625")) () ")")) (compound_statement "{\nLAB_0002ae80:\n                param_2[1] = 0xfef9;\n              }" ({ "{") (labeled_statement "LAB_0002ae80:\n                param_2[1] = 0xfef9;" (statement_identifier "LAB_0002ae80") (: ":") (expression_statement "param_2[1] = 0xfef9;" (assignment_expression "param_2[1] = 0xfef9" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfef9")) (; ";"))) (} "}")) (else_clause "else {\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" (else "else") (compound_statement "{\n                if (uVar5 != 0x627) goto LAB_0002aefa;\nLAB_0002ad4f:\n                param_2[1] = 0xfefb;\n              }" ({ "{") (if_statement "if (uVar5 != 0x627) goto LAB_0002aefa;" (if "if") (parenthesized_expression "(uVar5 != 0x627)" (( "(") (binary_expression "uVar5 != 0x627" (identifier "uVar5") (!= "!=") (number_literal "0x627")) () ")")) (goto_statement "goto LAB_0002aefa;" (goto "goto") (statement_identifier "LAB_0002aefa") (; ";"))) (labeled_statement "LAB_0002ad4f:\n                param_2[1] = 0xfefb;" (statement_identifier "LAB_0002ad4f") (: ":") (expression_statement "param_2[1] = 0xfefb;" (assignment_expression "param_2[1] = 0xfefb" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0xfefb")) (; ";"))) (} "}")))))))) (goto_statement "goto LAB_0002ad60;" (goto "goto") (statement_identifier "LAB_0002ad60") (; ";")) (} "}"))) (labeled_statement "LAB_0002ae20:\n            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (statement_identifier "LAB_0002ae20") (: ":") (expression_statement "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" (* "*") (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" (( "(") (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" (& "&") (identifier "DAT_0007ef84")) (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) () ")"))))) (; ";"))) (if_statement "if (0 < iVar4) {\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }" (if "if") (parenthesized_expression "(0 < iVar4)" (( "(") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n              uVar5 = param_1[-2];\nLAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }\n            }" ({ "{") (expression_statement "uVar5 = param_1[-2];" (assignment_expression "uVar5 = param_1[-2]" (identifier "uVar5") (= "=") (subscript_expression "param_1[-2]" (identifier "param_1") ([ "[") (number_literal "-2") (] "]"))) (; ";")) (labeled_statement "LAB_0002ae38:\n              if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" (statement_identifier "LAB_0002ae38") (: ":") (if_statement "if ((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" (if "if") (parenthesized_expression "((uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'))))" (( "(") (binary_expression "(uVar5 - 0x621 < 0xb2) &&\n                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))" (parenthesized_expression "(uVar5 - 0x621 < 0xb2)" (( "(") (binary_expression "uVar5 - 0x621 < 0xb2" (binary_expression "uVar5 - 0x621" (identifier "uVar5") (- "-") (number_literal "0x621")) (< "<") (number_literal "0xb2")) () ")")) (&& "&&") (parenthesized_expression "(((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))" (( "(") (parenthesized_expression "((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'))" (( "(") (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||\n                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')" (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2" (binary_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U" (cast_expression "(int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(uVar5 - 0x621) * 8" (parenthesized_expression "(uVar5 - 0x621)" (( "(") (binary_expression "uVar5 - 0x621" (identifier "uVar5") (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")))) (- "-") (number_literal "1U")) (< "<") (number_literal "2")) (|| "||") (parenthesized_expression "((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')" (( "(") (binary_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04'" (subscript_expression "(&DAT_0007ef80)[(uVar5 - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(uVar5 - 0x621) * 8" (parenthesized_expression "(uVar5 - 0x621)" (( "(") (binary_expression "uVar5 - 0x621" (identifier "uVar5") (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")) (== "==") (char_literal "'\x04'" (' "'") (escape_sequence "\x04") (' "'"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                param_2[1] = local_20 + 2;\n                goto LAB_0002ad00;\n              }" ({ "{") (expression_statement "param_2[1] = local_20 + 2;" (assignment_expression "param_2[1] = local_20 + 2" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "local_20 + 2" (identifier "local_20") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto LAB_0002ad00;" (goto "goto") (statement_identifier "LAB_0002ad00") (; ";")) (} "}")))) (} "}"))) (expression_statement "param_2[1] = local_20;" (assignment_expression "param_2[1] = local_20" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "local_20")) (; ";")) (} "}")))) (} "}"))) (goto_statement "goto LAB_0002ad00;" (goto "goto") (statement_identifier "LAB_0002ad00") (; ";")) (} "}"))) (if_statement "if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }" (if "if") (parenthesized_expression "(((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4))))" (( "(") (binary_expression "((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||\n         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))" (parenthesized_expression "((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621))" (( "(") (binary_expression "(param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)" (parenthesized_expression "(param_3 <= iVar1)" (( "(") (binary_expression "param_3 <= iVar1" (identifier "param_3") (<= "<=") (identifier "iVar1")) () ")")) (|| "||") (parenthesized_expression "(0xb1 < param_1[4] - 0x621)" (( "(") (binary_expression "0xb1 < param_1[4] - 0x621" (number_literal "0xb1") (< "<") (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (- "-") (number_literal "0x621"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))" (( "(") (parenthesized_expression "(((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4))" (( "(") (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&\n          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)" (binary_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0" (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd)" (( "(") (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" (( "(") (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")) (& "&") (number_literal "0xfd")) () ")")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)" (( "(") (binary_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4" (subscript_expression "(&DAT_0007ef80)[(param_1[4] - 0x621) * 8]" (parenthesized_expression "(&DAT_0007ef80)" (( "(") (pointer_expression "&DAT_0007ef80" (& "&") (identifier "DAT_0007ef80")) () ")")) ([ "[") (binary_expression "(param_1[4] - 0x621) * 8" (parenthesized_expression "(param_1[4] - 0x621)" (( "(") (binary_expression "param_1[4] - 0x621" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (- "-") (number_literal "0x621")) () ")")) (* "*") (number_literal "8")) (] "]")) (!= "!=") (number_literal "4")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);\n        goto LAB_0002ad00;\n      }" ({ "{") (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8)" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" (* "*") (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" (( "(") (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" (& "&") (identifier "DAT_0007ef84")) (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) () ")"))))) (; ";")) (goto_statement "goto LAB_0002ad00;" (goto "goto") (statement_identifier "LAB_0002ad00") (; ";")) (} "}"))) (expression_statement "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;" (assignment_expression "param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8) + 1" (pointer_expression "*(int *)(&DAT_0007ef84 + uVar2 * 8)" (* "*") (cast_expression "(int *)(&DAT_0007ef84 + uVar2 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0007ef84 + uVar2 * 8)" (( "(") (binary_expression "&DAT_0007ef84 + uVar2 * 8" (pointer_expression "&DAT_0007ef84" (& "&") (identifier "DAT_0007ef84")) (+ "+") (binary_expression "uVar2 * 8" (identifier "uVar2") (* "*") (number_literal "8"))) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" (else "else") (compound_statement "{\nLAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }\n    }" ({ "{") (labeled_statement "LAB_0002ad00:\n      if (param_3 <= iVar1) {\n        return 1;\n      }" (statement_identifier "LAB_0002ad00") (: ":") (if_statement "if (param_3 <= iVar1) {\n        return 1;\n      }" (if "if") (parenthesized_expression "(param_3 <= iVar1)" (( "(") (binary_expression "param_3 <= iVar1" (identifier "param_3") (<= "<=") (identifier "iVar1")) () ")")) (compound_statement "{\n        return 1;\n      }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_0002ad06:\n    param_1 = param_1 + 3;" (statement_identifier "LAB_0002ad06") (: ":") (expression_statement "param_1 = param_1 + 3;" (assignment_expression "param_1 = param_1 + 3" (identifier "param_1") (= "=") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3"))) (; ";"))) (expression_statement "param_2 = param_2 + 3;" (assignment_expression "param_2 = param_2 + 3" (identifier "param_2") (= "=") (binary_expression "param_2 + 3" (identifier "param_2") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "iVar4 = iVar1;" (assignment_expression "iVar4 = iVar1" (identifier "iVar4") (= "=") (identifier "iVar1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int function_1(type_1 *var_10,type_1 *var_11,int var_1)

{
  int var_5;
  type_2 var_4;
  type_3 uVar3;
  type_2 var_3;
  int var_2;
  type_2 var_6;
  bool var_7;
  bool var_8;
  type_4 var_9;
  
  if (var_1 < 1) {
    return 1;
  }
  var_2 = 0;
  do {
    var_11->origwc = var_10->origwc;
    var_11->wc = var_10->wc;
    uVar3 = *(type_3 *)&var_10->field_0xa;
    var_11->index = var_10->index;
    *(type_3 *)&var_11->field_0xa = uVar3;
    var_3 = var_10->wc;
    var_5 = var_2 + 1;
    var_4 = var_3 - 0x621;
    if (var_4 < 0xb2) {
      if (shapetypes[var_4].type != '\x01') {
        if (shapetypes[var_4].type == '\x02') {
          if ((var_5 < var_1) && (var_6 = var_10[1].wc - 0x621, var_6 < 0xb2)) {
            var_7 = (shapetypes[var_6].type & 0xfdU) != 0;
            var_8 = shapetypes[var_6].type != 4;
            if (var_3 == 0x644 && 0 < var_2) {
              var_3 = var_10[-1].wc;
              if (var_3 == 0x623) {
                if (var_7 && var_8) goto LAB_0002ae90;
                var_11->wc = 0xfef8;
              }
              else if (var_3 < 0x624) {
                if (var_3 != 0x622) goto LAB_0002aca9;
                if (var_7 && var_8) goto LAB_0002ae0c;
                var_11->wc = 0xfef6;
              }
              else if (var_3 == 0x625) {
                if (var_7 && var_8) goto LAB_0002ae80;
                var_11->wc = 0xfefa;
              }
              else {
                if (var_3 != 0x627) goto LAB_0002aca9;
                if (var_7 && var_8) goto LAB_0002ad4f;
                var_11->wc = 0xfefc;
              }
LAB_0002ad60:
              var_11[-1].wc = 0x20;
              if (var_1 <= var_5) {
                return 1;
              }
              goto LAB_0002ad06;
            }
LAB_0002aca9:
            if (var_7 && var_8) goto LAB_0002ae20;
            if (((var_2 < 1) || (var_3 = var_10[-1].wc - 0x621, 0xb1 < var_3)) ||
               ((1 < (int)shapetypes[var_3].type - 1U && (shapetypes[var_3].type != '\x04')))) {
              var_11->wc = shapetypes[var_4].form_b + L'\x01';
            }
            else {
              var_11->wc = shapetypes[var_4].form_b + L'\x03';
            }
          }
          else {
            if (var_3 == 0x644 && 0 < var_2) {
              var_3 = var_10[-1].wc;
              if (var_3 == 0x623) {
LAB_0002ae90:
                var_11->wc = 0xfef7;
              }
              else if (var_3 < 0x624) {
                if (var_3 != 0x622) {
LAB_0002aefa:
                  var_9 = shapetypes[var_4].form_b;
                  goto LAB_0002ae38;
                }
LAB_0002ae0c:
                var_11->wc = 0xfef5;
              }
              else if (var_3 == 0x625) {
LAB_0002ae80:
                var_11->wc = 0xfef9;
              }
              else {
                if (var_3 != 0x627) goto LAB_0002aefa;
LAB_0002ad4f:
                var_11->wc = 0xfefb;
              }
              goto LAB_0002ad60;
            }
LAB_0002ae20:
            var_9 = shapetypes[var_4].form_b;
            if (0 < var_2) {
              var_3 = var_10[-1].wc;
LAB_0002ae38:
              if ((var_3 - 0x621 < 0xb2) &&
                 (((int)shapetypes[var_3 - 0x621].type - 1U < 2 ||
                  (shapetypes[var_3 - 0x621].type == '\x04')))) {
                var_11->wc = var_9 + L'\x02';
                goto LAB_0002ad00;
              }
            }
            var_11->wc = var_9;
          }
        }
        goto LAB_0002ad00;
      }
      if (((var_1 <= var_5) || (var_3 = var_10[1].wc - 0x621, 0xb1 < var_3)) ||
         (((shapetypes[var_3].type & 0xfdU) != 0 && (shapetypes[var_3].type != 4)))) {
        var_11->wc = shapetypes[var_4].form_b;
        goto LAB_0002ad00;
      }
      var_11->wc = shapetypes[var_4].form_b + L'\x01';
    }
    else {
LAB_0002ad00:
      if (var_1 <= var_5) {
        return 1;
      }
    }
LAB_0002ad06:
    var_10 = var_10 + 1;
    var_11 = var_11 + 1;
    var_2 = var_5;
  } while( true );
}


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

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

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

{
  int iVar1;
  uint uVar2;
  int iVar3;
  int iVar4;
  uint uVar5;
  bool bVar6;
  bool bVar7;
  int local_20;
  
  if (param_3 < 1) {
    return 1;
  }
  iVar4 = 0;
  do {
    *param_2 = *param_1;
    param_2[1] = param_1[1];
    param_2[2] = param_1[2];
    iVar3 = param_1[1];
    iVar1 = iVar4 + 1;
    uVar2 = iVar3 - 0x621;
    if (uVar2 < 0xb2) {
      if ((&DAT_0007ef80)[uVar2 * 8] != '\x01') {
        if ((&DAT_0007ef80)[uVar2 * 8] == '\x02') {
          if ((iVar1 < param_3) && (param_1[4] - 0x621 < 0xb2)) {
            bVar6 = ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0;
            bVar7 = (&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4;
            if (iVar3 == 0x644 && 0 < iVar4) {
              uVar5 = param_1[-2];
              if (uVar5 == 0x623) {
                if (bVar6 && bVar7) goto LAB_0002ae90;
                param_2[1] = 0xfef8;
              }
              else if (uVar5 < 0x624) {
                if (uVar5 != 0x622) goto LAB_0002aca9;
                if (bVar6 && bVar7) goto LAB_0002ae0c;
                param_2[1] = 0xfef6;
              }
              else if (uVar5 == 0x625) {
                if (bVar6 && bVar7) goto LAB_0002ae80;
                param_2[1] = 0xfefa;
              }
              else {
                if (uVar5 != 0x627) goto LAB_0002aca9;
                if (bVar6 && bVar7) goto LAB_0002ad4f;
                param_2[1] = 0xfefc;
              }
LAB_0002ad60:
              param_2[-2] = 0x20;
              if (param_3 <= iVar1) {
                return 1;
              }
              goto LAB_0002ad06;
            }
LAB_0002aca9:
            if (bVar6 && bVar7) goto LAB_0002ae20;
            if (((iVar4 < 1) || (0xb1 < param_1[-2] - 0x621)) ||
               ((1 < (int)(char)(&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] - 1U &&
                ((&DAT_0007ef80)[(param_1[-2] - 0x621) * 8] != '\x04')))) {
              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;
            }
            else {
              param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 3;
            }
          }
          else {
            if (iVar3 == 0x644 && 0 < iVar4) {
              uVar5 = param_1[-2];
              if (uVar5 == 0x623) {
LAB_0002ae90:
                param_2[1] = 0xfef7;
              }
              else if (uVar5 < 0x624) {
                if (uVar5 != 0x622) {
LAB_0002aefa:
                  local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);
                  goto LAB_0002ae38;
                }
LAB_0002ae0c:
                param_2[1] = 0xfef5;
              }
              else if (uVar5 == 0x625) {
LAB_0002ae80:
                param_2[1] = 0xfef9;
              }
              else {
                if (uVar5 != 0x627) goto LAB_0002aefa;
LAB_0002ad4f:
                param_2[1] = 0xfefb;
              }
              goto LAB_0002ad60;
            }
LAB_0002ae20:
            local_20 = *(int *)(&DAT_0007ef84 + uVar2 * 8);
            if (0 < iVar4) {
              uVar5 = param_1[-2];
LAB_0002ae38:
              if ((uVar5 - 0x621 < 0xb2) &&
                 (((int)(char)(&DAT_0007ef80)[(uVar5 - 0x621) * 8] - 1U < 2 ||
                  ((&DAT_0007ef80)[(uVar5 - 0x621) * 8] == '\x04')))) {
                param_2[1] = local_20 + 2;
                goto LAB_0002ad00;
              }
            }
            param_2[1] = local_20;
          }
        }
        goto LAB_0002ad00;
      }
      if (((param_3 <= iVar1) || (0xb1 < param_1[4] - 0x621)) ||
         ((((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] & 0xfd) != 0 &&
          ((&DAT_0007ef80)[(param_1[4] - 0x621) * 8] != 4)))) {
        param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8);
        goto LAB_0002ad00;
      }
      param_2[1] = *(int *)(&DAT_0007ef84 + uVar2 * 8) + 1;
    }
    else {
LAB_0002ad00:
      if (param_3 <= iVar1) {
        return 1;
      }
    }
LAB_0002ad06:
    param_1 = param_1 + 3;
    param_2 = param_2 + 3;
    iVar4 = iVar1;
  } while( true );
}

