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

POSITION find_pos(LINENUM linenum)

{
  POSITION pos;
  LINENUM linenum_00;
  undefined4 uVar1;
  int iVar2;
  undefined4 uVar3;
  int iVar4;
  linenum_info *plVar5;
  uint uVar6;
  int iVar7;
  bool bVar8;
  POSITION PVar9;
  linenum_info *local_2c;
  
  uVar1 = 0;
  uVar3 = 0;
  if ((int)(uint)(1 < (uint)linenum) <= -linenum._4_4_) goto LAB_00022af8;
  local_2c = anchor.next;
  if (anchor.next == &anchor) {
LAB_00022c0f:
    plVar5 = anchor.prev;
    local_2c = &anchor;
    if (linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)) {
LAB_00022b37:
      return local_2c->pos;
    }
LAB_00022a75:
    iVar2 = ch_seek(plVar5->pos);
    if (iVar2 == 0) {
      iVar2 = *(int *)((int)&plVar5->line + 4);
      uVar6 = (uint)plVar5->line;
      linenum_00 = plVar5->line;
      pos = plVar5->pos;
      PVar9 = plVar5->pos;
      if ((SBORROW4(iVar2,linenum._4_4_) !=
          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=
          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {
        do {
          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);
          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;
          bVar8 = 0xfffffffe < uVar6;
          uVar6 = uVar6 + 1;
          iVar2 = iVar2 + (uint)bVar8;
          pos = PVar9;
          linenum_00 = linenum;
        } while (linenum != CONCAT44(iVar2,uVar6));
      }
LAB_00022b51:
      add_lnum(linenum_00,pos);
      return pos;
    }
  }
  else {
    iVar2 = *(int *)((int)&(anchor.next)->line + 4);
    uVar6 = (uint)(anchor.next)->line;
    if ((SBORROW4(iVar2,linenum._4_4_) !=
        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=
        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {
      do {
        local_2c = local_2c->next;
        if (local_2c == &anchor) goto LAB_00022c0f;
        uVar6 = (uint)local_2c->line;
        iVar2 = *(int *)((int)&local_2c->line + 4);
      } while ((SBORROW4(iVar2,linenum._4_4_) !=
               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=
               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);
    }
    if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;
    plVar5 = local_2c->prev;
    iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -
            (uint)((uint)linenum < (uint)plVar5->line);
    iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);
    uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);
    iVar2 = iVar7 - iVar4;
    if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)
    goto LAB_00022a75;
    iVar2 = ch_seek(local_2c->pos);
    if (iVar2 == 0) {
      uVar6 = (uint)local_2c->line;
      iVar2 = *(int *)((int)&local_2c->line + 4);
      linenum_00 = local_2c->line;
      pos = local_2c->pos;
      PVar9 = local_2c->pos;
      if ((SBORROW4(linenum._4_4_,iVar2) !=
          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=
          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {
        do {
          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);
          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;
          bVar8 = uVar6 != 0;
          uVar6 = uVar6 - 1;
          iVar2 = iVar2 + -1 + (uint)bVar8;
          pos = PVar9;
          linenum_00 = linenum;
        } while (linenum != CONCAT44(iVar2,uVar6));
      }
      goto LAB_00022b51;
    }
  }
LAB_00022aee:
  uVar1 = 0xffffffff;
  uVar3 = 0xffffffff;
LAB_00022af8:
  return CONCAT44(uVar3,uVar1);
}



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

longlong FUN_000229c0(uint param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  bool bVar9;
  longlong lVar10;
  longlong lVar11;
  uint local_34;
  int local_30;
  undefined4 *local_2c;
  
  local_34 = param_1;
  local_30 = param_2;
  uVar2 = 0;
  uVar4 = 0;
  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;
  local_2c = DAT_00040740;
  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {
LAB_00022c0f:
    iVar6 = DAT_00040744;
    local_2c = &DAT_00040740;
    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {
LAB_00022b37:
      return *(longlong *)(local_2c + 2);
    }
LAB_00022a75:
    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));
    if (iVar3 == 0) {
      iVar3 = *(int *)(iVar6 + 0x1c);
      uVar7 = *(uint *)(iVar6 + 0x18);
      lVar11 = *(longlong *)(iVar6 + 8);
      lVar10 = *(longlong *)(iVar6 + 8);
      uVar1 = uVar7;
      iVar6 = iVar3;
      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=
          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {
        do {
          lVar10 = FUN_00021fd0(lVar10,0,0);
          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;
          bVar9 = 0xfffffffe < uVar7;
          uVar7 = uVar7 + 1;
          iVar3 = iVar3 + (uint)bVar9;
          uVar1 = local_34;
          iVar6 = local_30;
          lVar11 = lVar10;
        } while (param_2 != iVar3 || param_1 != uVar7);
      }
LAB_00022b51:
      local_30 = iVar6;
      local_34 = uVar1;
      FUN_00022420(local_34,local_30,lVar11);
      return lVar11;
    }
  }
  else {
    iVar3 = DAT_00040740[7];
    uVar7 = DAT_00040740[6];
    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=
        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {
      do {
        local_2c = (undefined4 *)*local_2c;
        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;
        uVar7 = local_2c[6];
        iVar3 = local_2c[7];
      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=
               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);
    }
    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;
    iVar6 = local_2c[1];
    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));
    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);
    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);
    iVar3 = iVar8 - iVar5;
    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)
    goto LAB_00022a75;
    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);
    if (iVar3 == 0) {
      uVar7 = local_2c[6];
      iVar3 = local_2c[7];
      lVar11 = *(longlong *)(local_2c + 2);
      uVar1 = uVar7;
      iVar6 = iVar3;
      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=
          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {
        do {
          lVar11 = FUN_00022100(lVar11,0,0);
          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;
          bVar9 = uVar7 != 0;
          uVar7 = uVar7 - 1;
          iVar3 = iVar3 + -1 + (uint)bVar9;
          uVar1 = local_34;
          iVar6 = local_30;
        } while (param_2 != iVar3 || param_1 != uVar7);
      }
      goto LAB_00022b51;
    }
  }
LAB_00022aee:
  uVar2 = 0xffffffff;
  uVar4 = 0xffffffff;
LAB_00022af8:
  return CONCAT44(uVar4,uVar2);
}


PUSH EBP
MOV EAX,0x1
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000129a0
ADD EBX,0x194ca
SUB ESP,0x2c
MOV EDX,dword ptr [ESP + 0x40]
MOV ECX,dword ptr [ESP + 0x44]
CMP EAX,EDX
MOV EAX,0x0
MOV EDI,EDX
MOV dword ptr [ESP + 0x8],EDX
SBB EAX,ECX
MOV dword ptr [ESP + 0xc],ECX
MOV EAX,0x0
MOV EDX,0x0
JGE 0x00022af8
MOV EAX,dword ptr [EBX + 0x48a8]
MOV EBP,ECX
LEA ECX,[EBX + 0x48a8]
MOV dword ptr [ESP + 0x10],EAX
CMP EAX,ECX
JZ 0x00022c0f
MOV EDX,dword ptr [EAX + 0x1c]
MOV EAX,dword ptr [EAX + 0x18]
MOV ESI,EDX
CMP EAX,EDI
SBB ESI,EBP
JL 0x00022b00
MOV EDI,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xc]
MOV ECX,EDI
MOV EDI,EBP
XOR ECX,EAX
XOR EDI,EDX
OR EDI,ECX
JZ 0x00022b37
MOV EDI,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [EDI + 0x4]
MOV EDI,dword ptr [ESP + 0xc]
SUB ESI,dword ptr [EBP + 0x18]
SBB EDI,dword ptr [EBP + 0x1c]
SUB EAX,dword ptr [ESP + 0x8]
SBB EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x1c],EDI
CMP ESI,EAX
MOV dword ptr [ESP + 0x18],ESI
SBB EDI,EDX
JGE 0x00022b80
SUB ESP,0x8
PUSH dword ptr [EBP + 0xc]
PUSH dword ptr [EBP + 0x8]
CALL 0x00015290
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00022aee
MOV EDI,dword ptr [EBP + 0x1c]
MOV ESI,dword ptr [EBP + 0x18]
CMP ESI,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EBP + 0x8]
MOV ECX,EDI
SBB ECX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EBP + 0xc]
JGE 0x00022c3a
LEA ECX,[EBX + 0x5b60]
MOV dword ptr [ESP + 0x10],ECX
JMP 0x00022ad7
MOV ECX,EAX
AND ECX,EDX
CMP ECX,-0x1
JZ 0x00022aee
ADD ESI,0x1
MOV ECX,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xc]
ADC EDI,0x0
XOR EBP,EDI
XOR ECX,ESI
OR EBP,ECX
JZ 0x00022b51
PUSH 0x0
PUSH 0x0
PUSH EDX
PUSH EAX
CALL 0x00021fd0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x10]
TEST byte ptr [ECX],0x3
JZ 0x00022ab8
MOV EAX,0xffffffff
MOV EDX,0xffffffff
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ESI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x10],ECX
MOV ESI,dword ptr [ESI]
CMP ESI,dword ptr [ESP + 0x10]
JZ 0x00022c0b
MOV EAX,dword ptr [ESI + 0x18]
MOV EDX,dword ptr [ESI + 0x1c]
MOV EDI,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xc]
MOV ECX,EDX
CMP EAX,EDI
SBB ECX,EBP
JL 0x00022b08
MOV dword ptr [ESP + 0x10],ESI
JMP 0x00022a2e
MOV dword ptr [ESP + 0x10],ECX
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EAX + 0x8]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x8],EDI
MOV dword ptr [ESP + 0xc],EBP
PUSH EDX
PUSH EAX
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
PUSH dword ptr [ESP + 0x14]
PUSH dword ptr [ESP + 0x14]
CALL 0x00022420
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESP + 0x14]
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
MOV EDI,dword ptr [ESP + 0x18]
PUSH dword ptr [EDI + 0xc]
PUSH dword ptr [EDI + 0x8]
CALL 0x00015290
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x00022aee
MOV EAX,EDI
MOV ESI,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [EDI + 0x18]
MOV EBP,dword ptr [EAX + 0x1c]
CMP dword ptr [ESP + 0x8],EDI
MOV EDX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [EAX + 0x8]
SBB ESI,EBP
JGE 0x00022b49
LEA ESI,[EBX + 0x5b60]
MOV dword ptr [ESP + 0x10],ESI
JMP 0x00022bef
MOV ECX,EAX
AND ECX,EDX
CMP ECX,-0x1
JZ 0x00022aee
ADD EDI,-0x1
MOV ECX,dword ptr [ESP + 0x8]
MOV ESI,dword ptr [ESP + 0xc]
ADC EBP,-0x1
XOR ESI,EBP
XOR ECX,EDI
OR ESI,ECX
JZ 0x00022b51
PUSH 0x0
PUSH 0x0
PUSH EDX
PUSH EAX
CALL 0x00022100
ADD ESP,0x10
MOV ESI,dword ptr [ESP + 0x10]
TEST byte ptr [ESI],0x3
JZ 0x00022bc8
JMP 0x00022aee
MOV ECX,dword ptr [ESP + 0x10]
MOV EDI,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EBX + 0x48c0]
MOV EDX,dword ptr [EBX + 0x48c4]
XOR EAX,EDI
XOR EDX,EBP
OR EDX,EAX
JZ 0x00022b33
MOV EBP,dword ptr [EBX + 0x48ac]
JMP 0x00022a75
MOV dword ptr [ESP + 0x8],ESI
MOV dword ptr [ESP + 0xc],EDI
JMP 0x00022b51
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nlonglong FUN_000229c0(uint param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}\n\n" comment (function_definition "longlong FUN_000229c0(uint param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}" type_identifier (function_declarator "FUN_000229c0(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "longlong lVar10;" type_identifier identifier ;) (declaration "longlong lVar11;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "local_34 = param_1;" (assignment_expression "local_34 = param_1" identifier = identifier) ;) (expression_statement "local_30 = param_2;" (assignment_expression "local_30 = param_2" identifier = identifier) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;" if (parenthesized_expression "((int)(uint)(1 < param_1) <= -param_2)" ( (binary_expression "(int)(uint)(1 < param_1) <= -param_2" (cast_expression "(int)(uint)(1 < param_1)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(1 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < param_1)" ( (binary_expression "1 < param_1" number_literal < identifier) )))) <= (unary_expression "-param_2" - identifier)) )) (goto_statement "goto LAB_00022af8;" goto statement_identifier ;)) (expression_statement "local_2c = DAT_00040740;" (assignment_expression "local_2c = DAT_00040740" identifier = identifier) ;) (if_statement "if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" if (parenthesized_expression "((undefined4 **)DAT_00040740 == &DAT_00040740)" ( (binary_expression "(undefined4 **)DAT_00040740 == &DAT_00040740" (cast_expression "(undefined4 **)DAT_00040740" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) == (pointer_expression "&DAT_00040740" & identifier)) )) (compound_statement "{\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }" { (labeled_statement "LAB_00022c0f:\n    iVar6 = DAT_00040744;" statement_identifier : (expression_statement "iVar6 = DAT_00040744;" (assignment_expression "iVar6 = DAT_00040744" identifier = identifier) ;)) (expression_statement "local_2c = &DAT_00040740;" (assignment_expression "local_2c = &DAT_00040740" identifier = (pointer_expression "&DAT_00040740" & identifier)) ;) (if_statement "if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }" if (parenthesized_expression "(DAT_0004075c == param_2 && DAT_00040758 == param_1)" ( (binary_expression "DAT_0004075c == param_2 && DAT_00040758 == param_1" (binary_expression "DAT_0004075c == param_2" identifier == identifier) && (binary_expression "DAT_00040758 == param_1" identifier == identifier)) )) (compound_statement "{\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }" { (labeled_statement "LAB_00022b37:\n      return *(longlong *)(local_2c + 2);" statement_identifier : (return_statement "return *(longlong *)(local_2c + 2);" return (pointer_expression "*(longlong *)(local_2c + 2)" * (cast_expression "(longlong *)(local_2c + 2)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 2)" ( (binary_expression "local_2c + 2" identifier + number_literal) )))) ;)) })) (labeled_statement "LAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));" statement_identifier : (expression_statement "iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));" (assignment_expression "iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" identifier = (call_expression "FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" identifier (argument_list "(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" * (cast_expression "(undefined4 *)(iVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) )))) ;)) (if_statement "if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }" { (expression_statement "iVar3 = *(int *)(iVar6 + 0x1c);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(uint *)(iVar6 + 0x18);" (assignment_expression "uVar7 = *(uint *)(iVar6 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = *(longlong *)(iVar6 + 8);" (assignment_expression "lVar11 = *(longlong *)(iVar6 + 8)" identifier = (pointer_expression "*(longlong *)(iVar6 + 8)" * (cast_expression "(longlong *)(iVar6 + 8)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar10 = *(longlong *)(iVar6 + 8);" (assignment_expression "lVar10 = *(longlong *)(iVar6 + 8)" identifier = (pointer_expression "*(longlong *)(iVar6 + 8)" * (cast_expression "(longlong *)(iVar6 + 8)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" identifier = identifier) ;) (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" if (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" ( (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" ( (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" identifier (argument_list "(iVar3,param_2)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" identifier (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" ( (binary_expression "iVar3 - param_2" identifier - identifier) , (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" { (do_statement "do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);" do (compound_statement "{\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        }" { (expression_statement "lVar10 = FUN_00021fd0(lVar10,0,0);" (assignment_expression "lVar10 = FUN_00021fd0(lVar10,0,0)" identifier = (call_expression "FUN_00021fd0(lVar10,0,0)" identifier (argument_list "(lVar10,0,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;" if (parenthesized_expression "(((DAT_000419f8 & 3) != 0) || (lVar10 == -1))" ( (binary_expression "((DAT_000419f8 & 3) != 0) || (lVar10 == -1)" (parenthesized_expression "((DAT_000419f8 & 3) != 0)" ( (binary_expression "(DAT_000419f8 & 3) != 0" (parenthesized_expression "(DAT_000419f8 & 3)" ( (binary_expression "DAT_000419f8 & 3" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022aee;" goto statement_identifier ;)) (expression_statement "bVar9 = 0xfffffffe < uVar7;" (assignment_expression "bVar9 = 0xfffffffe < uVar7" identifier = (binary_expression "0xfffffffe < uVar7" number_literal < identifier)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = iVar3 + (uint)bVar9;" (assignment_expression "iVar3 = iVar3 + (uint)bVar9" identifier = (binary_expression "iVar3 + (uint)bVar9" identifier + (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" identifier = identifier) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) (expression_statement "lVar11 = lVar10;" (assignment_expression "lVar11 = lVar10" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != iVar3 || param_1 != uVar7)" ( (binary_expression "param_2 != iVar3 || param_1 != uVar7" (binary_expression "param_2 != iVar3" identifier != identifier) || (binary_expression "param_1 != uVar7" identifier != identifier)) )) ;) })) (labeled_statement "LAB_00022b51:\n      local_30 = iVar6;" statement_identifier : (expression_statement "local_30 = iVar6;" (assignment_expression "local_30 = iVar6" identifier = identifier) ;)) (expression_statement "local_34 = uVar1;" (assignment_expression "local_34 = uVar1" identifier = identifier) ;) (expression_statement "FUN_00022420(local_34,local_30,lVar11);" (call_expression "FUN_00022420(local_34,local_30,lVar11)" identifier (argument_list "(local_34,local_30,lVar11)" ( identifier , identifier , identifier ))) ;) (return_statement "return lVar11;" return identifier ;) })) }) (else_clause "else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" else (compound_statement "{\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" { (expression_statement "iVar3 = DAT_00040740[7];" (assignment_expression "iVar3 = DAT_00040740[7]" identifier = (subscript_expression "DAT_00040740[7]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = DAT_00040740[6];" (assignment_expression "uVar7 = DAT_00040740[6]" identifier = (subscript_expression "DAT_00040740[6]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }" if (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" ( (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" ( (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" identifier (argument_list "(iVar3,param_2)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" identifier (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" ( (binary_expression "iVar3 - param_2" identifier - identifier) , (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }" { (do_statement "do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);" do (compound_statement "{\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      }" { (expression_statement "local_2c = (undefined4 *)*local_2c;" (assignment_expression "local_2c = (undefined4 *)*local_2c" identifier = (cast_expression "(undefined4 *)*local_2c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_2c" * identifier))) ;) (if_statement "if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;" if (parenthesized_expression "((undefined4 **)local_2c == &DAT_00040740)" ( (binary_expression "(undefined4 **)local_2c == &DAT_00040740" (cast_expression "(undefined4 **)local_2c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) == (pointer_expression "&DAT_00040740" & identifier)) )) (goto_statement "goto LAB_00022c0f;" goto statement_identifier ;)) (expression_statement "uVar7 = local_2c[6];" (assignment_expression "uVar7 = local_2c[6]" identifier = (subscript_expression "local_2c[6]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = local_2c[7];" (assignment_expression "iVar3 = local_2c[7]" identifier = (subscript_expression "local_2c[7]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" ( (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" ( (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" identifier (argument_list "(iVar3,param_2)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" identifier (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" ( (binary_expression "iVar3 - param_2" identifier - identifier) , (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) )))) ))) < number_literal)) )) ;) })) (if_statement "if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;" if (parenthesized_expression "(param_2 == iVar3 && param_1 == uVar7)" ( (binary_expression "param_2 == iVar3 && param_1 == uVar7" (binary_expression "param_2 == iVar3" identifier == identifier) && (binary_expression "param_1 == uVar7" identifier == identifier)) )) (goto_statement "goto LAB_00022b37;" goto statement_identifier ;)) (expression_statement "iVar6 = local_2c[1];" (assignment_expression "iVar6 = local_2c[1]" identifier = (subscript_expression "local_2c[1]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));" (assignment_expression "iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18))" identifier = (binary_expression "(param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(param_2 - *(int *)(iVar6 + 0x1c))" ( (binary_expression "param_2 - *(int *)(iVar6 + 0x1c)" identifier - (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) )) - (call_expression "(uint)(param_1 < *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < *(uint *)(iVar6 + 0x18))" ( (binary_expression "param_1 < *(uint *)(iVar6 + 0x18)" identifier < (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ))))) ;) (expression_statement "iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);" (assignment_expression "iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1)" identifier = (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))))) ;) (expression_statement "uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);" (assignment_expression "uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" identifier = (call_expression "(uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" ( (binary_expression "param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1" (binary_expression "param_1 - *(uint *)(iVar6 + 0x18)" identifier - (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) < (binary_expression "uVar7 - param_1" identifier - identifier)) )))) ;) (expression_statement "iVar3 = iVar8 - iVar5;" (assignment_expression "iVar3 = iVar8 - iVar5" identifier = (binary_expression "iVar8 - iVar5" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;" if (parenthesized_expression "((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)" ( (binary_expression "(SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0" (parenthesized_expression "(SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7))" ( (binary_expression "SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)" (call_expression "SBORROW4(iVar8,iVar5)" identifier (argument_list "(iVar8,iVar5)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3,uVar7)" identifier (argument_list "(iVar3,uVar7)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar3 - uVar7) < 0" (cast_expression "(int)(iVar3 - uVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar3 - uVar7)" ( (binary_expression "iVar3 - uVar7" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_00022a75;" goto statement_identifier ;)) (expression_statement "iVar3 = FUN_00015290(local_2c[2],local_2c[3]);" (assignment_expression "iVar3 = FUN_00015290(local_2c[2],local_2c[3])" identifier = (call_expression "FUN_00015290(local_2c[2],local_2c[3])" identifier (argument_list "(local_2c[2],local_2c[3])" ( (subscript_expression "local_2c[2]" identifier [ number_literal ]) , (subscript_expression "local_2c[3]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }" { (expression_statement "uVar7 = local_2c[6];" (assignment_expression "uVar7 = local_2c[6]" identifier = (subscript_expression "local_2c[6]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = local_2c[7];" (assignment_expression "iVar3 = local_2c[7]" identifier = (subscript_expression "local_2c[7]" identifier [ number_literal ])) ;) (expression_statement "lVar11 = *(longlong *)(local_2c + 2);" (assignment_expression "lVar11 = *(longlong *)(local_2c + 2)" identifier = (pointer_expression "*(longlong *)(local_2c + 2)" * (cast_expression "(longlong *)(local_2c + 2)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 2)" ( (binary_expression "local_2c + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" identifier = identifier) ;) (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" identifier = identifier) ;) (if_statement "if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" if (parenthesized_expression "((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0)" ( (binary_expression "(SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0" (parenthesized_expression "(SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7)))" ( (binary_expression "SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))" (call_expression "SBORROW4(param_2,iVar3)" identifier (argument_list "(param_2,iVar3)" ( identifier , identifier ))) != (call_expression "SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))" identifier (argument_list "(param_2 - iVar3,(uint)(param_1 < uVar7))" ( (binary_expression "param_2 - iVar3" identifier - identifier) , (call_expression "(uint)(param_1 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < uVar7)" ( (binary_expression "param_1 < uVar7" identifier < identifier) ))) )))) )) != (binary_expression "(int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0" (cast_expression "(int)((param_2 - iVar3) - (uint)(param_1 < uVar7))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((param_2 - iVar3) - (uint)(param_1 < uVar7))" ( (binary_expression "(param_2 - iVar3) - (uint)(param_1 < uVar7)" (parenthesized_expression "(param_2 - iVar3)" ( (binary_expression "param_2 - iVar3" identifier - identifier) )) - (call_expression "(uint)(param_1 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < uVar7)" ( (binary_expression "param_1 < uVar7" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" { (do_statement "do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);" do (compound_statement "{\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        }" { (expression_statement "lVar11 = FUN_00022100(lVar11,0,0);" (assignment_expression "lVar11 = FUN_00022100(lVar11,0,0)" identifier = (call_expression "FUN_00022100(lVar11,0,0)" identifier (argument_list "(lVar11,0,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;" if (parenthesized_expression "(((DAT_000419f8 & 3) != 0) || (lVar11 == -1))" ( (binary_expression "((DAT_000419f8 & 3) != 0) || (lVar11 == -1)" (parenthesized_expression "((DAT_000419f8 & 3) != 0)" ( (binary_expression "(DAT_000419f8 & 3) != 0" (parenthesized_expression "(DAT_000419f8 & 3)" ( (binary_expression "DAT_000419f8 & 3" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(lVar11 == -1)" ( (binary_expression "lVar11 == -1" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022aee;" goto statement_identifier ;)) (expression_statement "bVar9 = uVar7 != 0;" (assignment_expression "bVar9 = uVar7 != 0" identifier = (binary_expression "uVar7 != 0" identifier != number_literal)) ;) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (expression_statement "iVar3 = iVar3 + -1 + (uint)bVar9;" (assignment_expression "iVar3 = iVar3 + -1 + (uint)bVar9" identifier = (binary_expression "iVar3 + -1 + (uint)bVar9" (binary_expression "iVar3 + -1" identifier + number_literal) + (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" identifier = identifier) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != iVar3 || param_1 != uVar7)" ( (binary_expression "param_2 != iVar3 || param_1 != uVar7" (binary_expression "param_2 != iVar3" identifier != identifier) || (binary_expression "param_1 != uVar7" identifier != identifier)) )) ;) })) (goto_statement "goto LAB_00022b51;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00022aee:\n  uVar2 = 0xffffffff;" statement_identifier : (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00022af8:\n  return CONCAT44(uVar4,uVar2);" statement_identifier : (return_statement "return CONCAT44(uVar4,uVar2);" return (call_expression "CONCAT44(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier ))) ;)) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nPOSITION find_pos(LINENUM linenum)\n\n{\n  POSITION pos;\n  LINENUM linenum_00;\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  linenum_info *plVar5;\n  uint uVar6;\n  int iVar7;\n  bool bVar8;\n  POSITION PVar9;\n  linenum_info *local_2c;\n  \n  uVar1 = 0;\n  uVar3 = 0;\n  if ((int)(uint)(1 < (uint)linenum) <= -linenum._4_4_) goto LAB_00022af8;\n  local_2c = anchor.next;\n  if (anchor.next == &anchor) {\nLAB_00022c0f:\n    plVar5 = anchor.prev;\n    local_2c = &anchor;\n    if (linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)) {\nLAB_00022b37:\n      return local_2c->pos;\n    }\nLAB_00022a75:\n    iVar2 = ch_seek(plVar5->pos);\n    if (iVar2 == 0) {\n      iVar2 = *(int *)((int)&plVar5->line + 4);\n      uVar6 = (uint)plVar5->line;\n      linenum_00 = plVar5->line;\n      pos = plVar5->pos;\n      PVar9 = plVar5->pos;\n      if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\nLAB_00022b51:\n      add_lnum(linenum_00,pos);\n      return pos;\n    }\n  }\n  else {\n    iVar2 = *(int *)((int)&(anchor.next)->line + 4);\n    uVar6 = (uint)(anchor.next)->line;\n    if ((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }\n    if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;\n    plVar5 = local_2c->prev;\n    iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line);\n    iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);\n    uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);\n    iVar2 = iVar7 - iVar4;\n    if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)\n    goto LAB_00022a75;\n    iVar2 = ch_seek(local_2c->pos);\n    if (iVar2 == 0) {\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar1 = 0xffffffff;\n  uVar3 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar3,uVar1);\n}\n\n" comment comment (function_definition "POSITION find_pos(LINENUM linenum)\n\n{\n  POSITION pos;\n  LINENUM linenum_00;\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  linenum_info *plVar5;\n  uint uVar6;\n  int iVar7;\n  bool bVar8;\n  POSITION PVar9;\n  linenum_info *local_2c;\n  \n  uVar1 = 0;\n  uVar3 = 0;\n  if ((int)(uint)(1 < (uint)linenum) <= -linenum._4_4_) goto LAB_00022af8;\n  local_2c = anchor.next;\n  if (anchor.next == &anchor) {\nLAB_00022c0f:\n    plVar5 = anchor.prev;\n    local_2c = &anchor;\n    if (linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)) {\nLAB_00022b37:\n      return local_2c->pos;\n    }\nLAB_00022a75:\n    iVar2 = ch_seek(plVar5->pos);\n    if (iVar2 == 0) {\n      iVar2 = *(int *)((int)&plVar5->line + 4);\n      uVar6 = (uint)plVar5->line;\n      linenum_00 = plVar5->line;\n      pos = plVar5->pos;\n      PVar9 = plVar5->pos;\n      if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\nLAB_00022b51:\n      add_lnum(linenum_00,pos);\n      return pos;\n    }\n  }\n  else {\n    iVar2 = *(int *)((int)&(anchor.next)->line + 4);\n    uVar6 = (uint)(anchor.next)->line;\n    if ((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }\n    if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;\n    plVar5 = local_2c->prev;\n    iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line);\n    iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);\n    uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);\n    iVar2 = iVar7 - iVar4;\n    if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)\n    goto LAB_00022a75;\n    iVar2 = ch_seek(local_2c->pos);\n    if (iVar2 == 0) {\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar1 = 0xffffffff;\n  uVar3 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar3,uVar1);\n}" type_identifier (function_declarator "find_pos(LINENUM linenum)" identifier (parameter_list "(LINENUM linenum)" ( (parameter_declaration "LINENUM linenum" type_identifier identifier) ))) (compound_statement "{\n  POSITION pos;\n  LINENUM linenum_00;\n  undefined4 uVar1;\n  int iVar2;\n  undefined4 uVar3;\n  int iVar4;\n  linenum_info *plVar5;\n  uint uVar6;\n  int iVar7;\n  bool bVar8;\n  POSITION PVar9;\n  linenum_info *local_2c;\n  \n  uVar1 = 0;\n  uVar3 = 0;\n  if ((int)(uint)(1 < (uint)linenum) <= -linenum._4_4_) goto LAB_00022af8;\n  local_2c = anchor.next;\n  if (anchor.next == &anchor) {\nLAB_00022c0f:\n    plVar5 = anchor.prev;\n    local_2c = &anchor;\n    if (linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)) {\nLAB_00022b37:\n      return local_2c->pos;\n    }\nLAB_00022a75:\n    iVar2 = ch_seek(plVar5->pos);\n    if (iVar2 == 0) {\n      iVar2 = *(int *)((int)&plVar5->line + 4);\n      uVar6 = (uint)plVar5->line;\n      linenum_00 = plVar5->line;\n      pos = plVar5->pos;\n      PVar9 = plVar5->pos;\n      if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\nLAB_00022b51:\n      add_lnum(linenum_00,pos);\n      return pos;\n    }\n  }\n  else {\n    iVar2 = *(int *)((int)&(anchor.next)->line + 4);\n    uVar6 = (uint)(anchor.next)->line;\n    if ((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }\n    if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;\n    plVar5 = local_2c->prev;\n    iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line);\n    iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);\n    uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);\n    iVar2 = iVar7 - iVar4;\n    if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)\n    goto LAB_00022a75;\n    iVar2 = ch_seek(local_2c->pos);\n    if (iVar2 == 0) {\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar1 = 0xffffffff;\n  uVar3 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar3,uVar1);\n}" { (declaration "POSITION pos;" type_identifier identifier ;) (declaration "LINENUM linenum_00;" type_identifier identifier ;) (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "linenum_info *plVar5;" type_identifier (pointer_declarator "*plVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "POSITION PVar9;" type_identifier identifier ;) (declaration "linenum_info *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "uVar1 = 0;" (assignment_expression "uVar1 = 0" identifier = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (if_statement "if ((int)(uint)(1 < (uint)linenum) <= -linenum._4_4_) goto LAB_00022af8;" if (parenthesized_expression "((int)(uint)(1 < (uint)linenum) <= -linenum._4_4_)" ( (binary_expression "(int)(uint)(1 < (uint)linenum) <= -linenum._4_4_" (cast_expression "(int)(uint)(1 < (uint)linenum)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(1 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < (uint)linenum)" ( (binary_expression "1 < (uint)linenum" number_literal < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) <= (unary_expression "-linenum._4_4_" - (field_expression "linenum._4_4_" identifier . field_identifier))) )) (goto_statement "goto LAB_00022af8;" goto statement_identifier ;)) (expression_statement "local_2c = anchor.next;" (assignment_expression "local_2c = anchor.next" identifier = (field_expression "anchor.next" identifier . field_identifier)) ;) (if_statement "if (anchor.next == &anchor) {\nLAB_00022c0f:\n    plVar5 = anchor.prev;\n    local_2c = &anchor;\n    if (linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)) {\nLAB_00022b37:\n      return local_2c->pos;\n    }\nLAB_00022a75:\n    iVar2 = ch_seek(plVar5->pos);\n    if (iVar2 == 0) {\n      iVar2 = *(int *)((int)&plVar5->line + 4);\n      uVar6 = (uint)plVar5->line;\n      linenum_00 = plVar5->line;\n      pos = plVar5->pos;\n      PVar9 = plVar5->pos;\n      if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\nLAB_00022b51:\n      add_lnum(linenum_00,pos);\n      return pos;\n    }\n  }\n  else {\n    iVar2 = *(int *)((int)&(anchor.next)->line + 4);\n    uVar6 = (uint)(anchor.next)->line;\n    if ((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }\n    if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;\n    plVar5 = local_2c->prev;\n    iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line);\n    iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);\n    uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);\n    iVar2 = iVar7 - iVar4;\n    if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)\n    goto LAB_00022a75;\n    iVar2 = ch_seek(local_2c->pos);\n    if (iVar2 == 0) {\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }\n  }" if (parenthesized_expression "(anchor.next == &anchor)" ( (binary_expression "anchor.next == &anchor" (field_expression "anchor.next" identifier . field_identifier) == (pointer_expression "&anchor" & identifier)) )) (compound_statement "{\nLAB_00022c0f:\n    plVar5 = anchor.prev;\n    local_2c = &anchor;\n    if (linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)) {\nLAB_00022b37:\n      return local_2c->pos;\n    }\nLAB_00022a75:\n    iVar2 = ch_seek(plVar5->pos);\n    if (iVar2 == 0) {\n      iVar2 = *(int *)((int)&plVar5->line + 4);\n      uVar6 = (uint)plVar5->line;\n      linenum_00 = plVar5->line;\n      pos = plVar5->pos;\n      PVar9 = plVar5->pos;\n      if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\nLAB_00022b51:\n      add_lnum(linenum_00,pos);\n      return pos;\n    }\n  }" { (labeled_statement "LAB_00022c0f:\n    plVar5 = anchor.prev;" statement_identifier : (expression_statement "plVar5 = anchor.prev;" (assignment_expression "plVar5 = anchor.prev" identifier = (field_expression "anchor.prev" identifier . field_identifier)) ;)) (expression_statement "local_2c = &anchor;" (assignment_expression "local_2c = &anchor" identifier = (pointer_expression "&anchor" & identifier)) ;) (if_statement "if (linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)) {\nLAB_00022b37:\n      return local_2c->pos;\n    }" if (parenthesized_expression "(linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line))" ( (binary_expression "linenum == CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)" identifier == (call_expression "CONCAT44(anchor.line._4_4_,(undefined4)anchor.line)" identifier (argument_list "(anchor.line._4_4_,(undefined4)anchor.line)" ( (field_expression "anchor.line._4_4_" (field_expression "anchor.line" identifier . field_identifier) . field_identifier) , (cast_expression "(undefined4)anchor.line" ( (type_descriptor "undefined4" type_identifier) ) (field_expression "anchor.line" identifier . field_identifier)) )))) )) (compound_statement "{\nLAB_00022b37:\n      return local_2c->pos;\n    }" { (labeled_statement "LAB_00022b37:\n      return local_2c->pos;" statement_identifier : (return_statement "return local_2c->pos;" return (field_expression "local_2c->pos" identifier -> field_identifier) ;)) })) (labeled_statement "LAB_00022a75:\n    iVar2 = ch_seek(plVar5->pos);" statement_identifier : (expression_statement "iVar2 = ch_seek(plVar5->pos);" (assignment_expression "iVar2 = ch_seek(plVar5->pos)" identifier = (call_expression "ch_seek(plVar5->pos)" identifier (argument_list "(plVar5->pos)" ( (field_expression "plVar5->pos" identifier -> field_identifier) )))) ;)) (if_statement "if (iVar2 == 0) {\n      iVar2 = *(int *)((int)&plVar5->line + 4);\n      uVar6 = (uint)plVar5->line;\n      linenum_00 = plVar5->line;\n      pos = plVar5->pos;\n      PVar9 = plVar5->pos;\n      if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\nLAB_00022b51:\n      add_lnum(linenum_00,pos);\n      return pos;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar2 = *(int *)((int)&plVar5->line + 4);\n      uVar6 = (uint)plVar5->line;\n      linenum_00 = plVar5->line;\n      pos = plVar5->pos;\n      PVar9 = plVar5->pos;\n      if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\nLAB_00022b51:\n      add_lnum(linenum_00,pos);\n      return pos;\n    }" { (expression_statement "iVar2 = *(int *)((int)&plVar5->line + 4);" (assignment_expression "iVar2 = *(int *)((int)&plVar5->line + 4)" identifier = (pointer_expression "*(int *)((int)&plVar5->line + 4)" * (cast_expression "(int *)((int)&plVar5->line + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&plVar5->line + 4)" ( (binary_expression "(int)&plVar5->line + 4" (cast_expression "(int)&plVar5->line" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&plVar5->line" & (field_expression "plVar5->line" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar6 = (uint)plVar5->line;" (assignment_expression "uVar6 = (uint)plVar5->line" identifier = (cast_expression "(uint)plVar5->line" ( (type_descriptor "uint" type_identifier) ) (field_expression "plVar5->line" identifier -> field_identifier))) ;) (expression_statement "linenum_00 = plVar5->line;" (assignment_expression "linenum_00 = plVar5->line" identifier = (field_expression "plVar5->line" identifier -> field_identifier)) ;) (expression_statement "pos = plVar5->pos;" (assignment_expression "pos = plVar5->pos" identifier = (field_expression "plVar5->pos" identifier -> field_identifier)) ;) (expression_statement "PVar9 = plVar5->pos;" (assignment_expression "PVar9 = plVar5->pos" identifier = (field_expression "plVar5->pos" identifier -> field_identifier)) ;) (if_statement "if ((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }" if (parenthesized_expression "((SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0)" ( (binary_expression "(SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n          (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0" (parenthesized_expression "(SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum)))" ( (binary_expression "SBORROW4(iVar2,linenum._4_4_) !=\n          SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" (call_expression "SBORROW4(iVar2,linenum._4_4_)" identifier (argument_list "(iVar2,linenum._4_4_)" ( identifier , (field_expression "linenum._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" identifier (argument_list "(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" ( (binary_expression "iVar2 - linenum._4_4_" identifier - (field_expression "linenum._4_4_" identifier . field_identifier)) , (call_expression "(uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)linenum)" ( (binary_expression "uVar6 < (uint)linenum" identifier < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )))) )) != (binary_expression "(int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0" (cast_expression "(int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum))" ( (binary_expression "(iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(iVar2 - linenum._4_4_)" ( (binary_expression "iVar2 - linenum._4_4_" identifier - (field_expression "linenum._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)linenum)" ( (binary_expression "uVar6 < (uint)linenum" identifier < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ))) < number_literal)) )) (compound_statement "{\n        do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }" { (do_statement "do {\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));" do (compound_statement "{\n          PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = 0xfffffffe < uVar6;\n          uVar6 = uVar6 + 1;\n          iVar2 = iVar2 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        }" { (expression_statement "PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0);" (assignment_expression "PVar9 = forw_raw_line(PVar9,(char **)0x0,(int *)0x0)" identifier = (call_expression "forw_raw_line(PVar9,(char **)0x0,(int *)0x0)" identifier (argument_list "(PVar9,(char **)0x0,(int *)0x0)" ( identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;" if (parenthesized_expression "((((byte)sigs & 3) != 0) || (PVar9 == -1))" ( (binary_expression "(((byte)sigs & 3) != 0) || (PVar9 == -1)" (parenthesized_expression "(((byte)sigs & 3) != 0)" ( (binary_expression "((byte)sigs & 3) != 0" (parenthesized_expression "((byte)sigs & 3)" ( (binary_expression "(byte)sigs & 3" (cast_expression "(byte)sigs" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(PVar9 == -1)" ( (binary_expression "PVar9 == -1" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022aee;" goto statement_identifier ;)) (expression_statement "bVar8 = 0xfffffffe < uVar6;" (assignment_expression "bVar8 = 0xfffffffe < uVar6" identifier = (binary_expression "0xfffffffe < uVar6" number_literal < identifier)) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "iVar2 = iVar2 + (uint)bVar8;" (assignment_expression "iVar2 = iVar2 + (uint)bVar8" identifier = (binary_expression "iVar2 + (uint)bVar8" identifier + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pos = PVar9;" (assignment_expression "pos = PVar9" identifier = identifier) ;) (expression_statement "linenum_00 = linenum;" (assignment_expression "linenum_00 = linenum" identifier = identifier) ;) }) while (parenthesized_expression "(linenum != CONCAT44(iVar2,uVar6))" ( (binary_expression "linenum != CONCAT44(iVar2,uVar6)" identifier != (call_expression "CONCAT44(iVar2,uVar6)" identifier (argument_list "(iVar2,uVar6)" ( identifier , identifier )))) )) ;) })) (labeled_statement "LAB_00022b51:\n      add_lnum(linenum_00,pos);" statement_identifier : (expression_statement "add_lnum(linenum_00,pos);" (call_expression "add_lnum(linenum_00,pos)" identifier (argument_list "(linenum_00,pos)" ( identifier , identifier ))) ;)) (return_statement "return pos;" return identifier ;) })) }) (else_clause "else {\n    iVar2 = *(int *)((int)&(anchor.next)->line + 4);\n    uVar6 = (uint)(anchor.next)->line;\n    if ((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }\n    if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;\n    plVar5 = local_2c->prev;\n    iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line);\n    iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);\n    uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);\n    iVar2 = iVar7 - iVar4;\n    if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)\n    goto LAB_00022a75;\n    iVar2 = ch_seek(local_2c->pos);\n    if (iVar2 == 0) {\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }\n  }" else (compound_statement "{\n    iVar2 = *(int *)((int)&(anchor.next)->line + 4);\n    uVar6 = (uint)(anchor.next)->line;\n    if ((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }\n    if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;\n    plVar5 = local_2c->prev;\n    iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line);\n    iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);\n    uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);\n    iVar2 = iVar7 - iVar4;\n    if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)\n    goto LAB_00022a75;\n    iVar2 = ch_seek(local_2c->pos);\n    if (iVar2 == 0) {\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }\n  }" { (expression_statement "iVar2 = *(int *)((int)&(anchor.next)->line + 4);" (assignment_expression "iVar2 = *(int *)((int)&(anchor.next)->line + 4)" identifier = (pointer_expression "*(int *)((int)&(anchor.next)->line + 4)" * (cast_expression "(int *)((int)&(anchor.next)->line + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(anchor.next)->line + 4)" ( (binary_expression "(int)&(anchor.next)->line + 4" (cast_expression "(int)&(anchor.next)->line" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(anchor.next)->line" & (field_expression "(anchor.next)->line" (parenthesized_expression "(anchor.next)" ( (field_expression "anchor.next" identifier . field_identifier) )) -> field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar6 = (uint)(anchor.next)->line;" (assignment_expression "uVar6 = (uint)(anchor.next)->line" identifier = (field_expression "(uint)(anchor.next)->line" (call_expression "(uint)(anchor.next)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(anchor.next)" ( (field_expression "anchor.next" identifier . field_identifier) ))) -> field_identifier)) ;) (if_statement "if ((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0) {\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }" if (parenthesized_expression "((SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0)" ( (binary_expression "(SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n        (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0" (parenthesized_expression "(SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum)))" ( (binary_expression "SBORROW4(iVar2,linenum._4_4_) !=\n        SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" (call_expression "SBORROW4(iVar2,linenum._4_4_)" identifier (argument_list "(iVar2,linenum._4_4_)" ( identifier , (field_expression "linenum._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" identifier (argument_list "(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" ( (binary_expression "iVar2 - linenum._4_4_" identifier - (field_expression "linenum._4_4_" identifier . field_identifier)) , (call_expression "(uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)linenum)" ( (binary_expression "uVar6 < (uint)linenum" identifier < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )))) )) != (binary_expression "(int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0" (cast_expression "(int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum))" ( (binary_expression "(iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(iVar2 - linenum._4_4_)" ( (binary_expression "iVar2 - linenum._4_4_" identifier - (field_expression "linenum._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)linenum)" ( (binary_expression "uVar6 < (uint)linenum" identifier < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ))) < number_literal)) )) (compound_statement "{\n      do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);\n    }" { (do_statement "do {\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      } while ((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0);" do (compound_statement "{\n        local_2c = local_2c->next;\n        if (local_2c == &anchor) goto LAB_00022c0f;\n        uVar6 = (uint)local_2c->line;\n        iVar2 = *(int *)((int)&local_2c->line + 4);\n      }" { (expression_statement "local_2c = local_2c->next;" (assignment_expression "local_2c = local_2c->next" identifier = (field_expression "local_2c->next" identifier -> field_identifier)) ;) (if_statement "if (local_2c == &anchor) goto LAB_00022c0f;" if (parenthesized_expression "(local_2c == &anchor)" ( (binary_expression "local_2c == &anchor" identifier == (pointer_expression "&anchor" & identifier)) )) (goto_statement "goto LAB_00022c0f;" goto statement_identifier ;)) (expression_statement "uVar6 = (uint)local_2c->line;" (assignment_expression "uVar6 = (uint)local_2c->line" identifier = (cast_expression "(uint)local_2c->line" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_2c->line" identifier -> field_identifier))) ;) (expression_statement "iVar2 = *(int *)((int)&local_2c->line + 4);" (assignment_expression "iVar2 = *(int *)((int)&local_2c->line + 4)" identifier = (pointer_expression "*(int *)((int)&local_2c->line + 4)" * (cast_expression "(int *)((int)&local_2c->line + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_2c->line + 4)" ( (binary_expression "(int)&local_2c->line + 4" (cast_expression "(int)&local_2c->line" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_2c->line" & (field_expression "local_2c->line" identifier -> field_identifier))) + number_literal) ))))) ;) }) while (parenthesized_expression "((SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0)" ( (binary_expression "(SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))) !=\n               (int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0" (parenthesized_expression "(SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum)))" ( (binary_expression "SBORROW4(iVar2,linenum._4_4_) !=\n               SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" (call_expression "SBORROW4(iVar2,linenum._4_4_)" identifier (argument_list "(iVar2,linenum._4_4_)" ( identifier , (field_expression "linenum._4_4_" identifier . field_identifier) ))) != (call_expression "SBORROW4(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" identifier (argument_list "(iVar2 - linenum._4_4_,(uint)(uVar6 < (uint)linenum))" ( (binary_expression "iVar2 - linenum._4_4_" identifier - (field_expression "linenum._4_4_" identifier . field_identifier)) , (call_expression "(uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)linenum)" ( (binary_expression "uVar6 < (uint)linenum" identifier < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) )))) )) != (binary_expression "(int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)) < 0" (cast_expression "(int)((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum))" ( (binary_expression "(iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(iVar2 - linenum._4_4_)" ( (binary_expression "iVar2 - linenum._4_4_" identifier - (field_expression "linenum._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)linenum)" ( (binary_expression "uVar6 < (uint)linenum" identifier < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) )))) ))) < number_literal)) )) ;) })) (if_statement "if (linenum == CONCAT44(iVar2,uVar6)) goto LAB_00022b37;" if (parenthesized_expression "(linenum == CONCAT44(iVar2,uVar6))" ( (binary_expression "linenum == CONCAT44(iVar2,uVar6)" identifier == (call_expression "CONCAT44(iVar2,uVar6)" identifier (argument_list "(iVar2,uVar6)" ( identifier , identifier )))) )) (goto_statement "goto LAB_00022b37;" goto statement_identifier ;)) (expression_statement "plVar5 = local_2c->prev;" (assignment_expression "plVar5 = local_2c->prev" identifier = (field_expression "local_2c->prev" identifier -> field_identifier)) ;) (expression_statement "iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line);" (assignment_expression "iVar7 = (linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line)" identifier = (binary_expression "(linenum._4_4_ - *(int *)((int)&plVar5->line + 4)) -\n            (uint)((uint)linenum < (uint)plVar5->line)" (parenthesized_expression "(linenum._4_4_ - *(int *)((int)&plVar5->line + 4))" ( (binary_expression "linenum._4_4_ - *(int *)((int)&plVar5->line + 4)" (field_expression "linenum._4_4_" identifier . field_identifier) - (pointer_expression "*(int *)((int)&plVar5->line + 4)" * (cast_expression "(int *)((int)&plVar5->line + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&plVar5->line + 4)" ( (binary_expression "(int)&plVar5->line + 4" (cast_expression "(int)&plVar5->line" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&plVar5->line" & (field_expression "plVar5->line" identifier -> field_identifier))) + number_literal) ))))) )) - (call_expression "(uint)((uint)linenum < (uint)plVar5->line)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)linenum < (uint)plVar5->line)" ( (binary_expression "(uint)linenum < (uint)plVar5->line" (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier) < (cast_expression "(uint)plVar5->line" ( (type_descriptor "uint" type_identifier) ) (field_expression "plVar5->line" identifier -> field_identifier))) ))))) ;) (expression_statement "iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum);" (assignment_expression "iVar4 = (iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)" identifier = (binary_expression "(iVar2 - linenum._4_4_) - (uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(iVar2 - linenum._4_4_)" ( (binary_expression "iVar2 - linenum._4_4_" identifier - (field_expression "linenum._4_4_" identifier . field_identifier)) )) - (call_expression "(uint)(uVar6 < (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar6 < (uint)linenum)" ( (binary_expression "uVar6 < (uint)linenum" identifier < (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) ;) (expression_statement "uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum);" (assignment_expression "uVar6 = (uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum)" identifier = (call_expression "(uint)((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum)" ( (binary_expression "(uint)linenum - (int)plVar5->line < uVar6 - (uint)linenum" (binary_expression "(uint)linenum - (int)plVar5->line" (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier) - (cast_expression "(int)plVar5->line" ( (type_descriptor "int" primitive_type) ) (field_expression "plVar5->line" identifier -> field_identifier))) < (binary_expression "uVar6 - (uint)linenum" identifier - (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier))) )))) ;) (expression_statement "iVar2 = iVar7 - iVar4;" (assignment_expression "iVar2 = iVar7 - iVar4" identifier = (binary_expression "iVar7 - iVar4" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)\n    goto LAB_00022a75;" if (parenthesized_expression "((SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0)" ( (binary_expression "(SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)) != (int)(iVar2 - uVar6) < 0" (parenthesized_expression "(SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6))" ( (binary_expression "SBORROW4(iVar7,iVar4) != SBORROW4(iVar2,uVar6)" (call_expression "SBORROW4(iVar7,iVar4)" identifier (argument_list "(iVar7,iVar4)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar2,uVar6)" identifier (argument_list "(iVar2,uVar6)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar2 - uVar6) < 0" (cast_expression "(int)(iVar2 - uVar6)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar2 - uVar6)" ( (binary_expression "iVar2 - uVar6" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_00022a75;" goto statement_identifier ;)) (expression_statement "iVar2 = ch_seek(local_2c->pos);" (assignment_expression "iVar2 = ch_seek(local_2c->pos)" identifier = (call_expression "ch_seek(local_2c->pos)" identifier (argument_list "(local_2c->pos)" ( (field_expression "local_2c->pos" identifier -> field_identifier) )))) ;) (if_statement "if (iVar2 == 0) {\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar6 = (uint)local_2c->line;\n      iVar2 = *(int *)((int)&local_2c->line + 4);\n      linenum_00 = local_2c->line;\n      pos = local_2c->pos;\n      PVar9 = local_2c->pos;\n      if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }\n      goto LAB_00022b51;\n    }" { (expression_statement "uVar6 = (uint)local_2c->line;" (assignment_expression "uVar6 = (uint)local_2c->line" identifier = (cast_expression "(uint)local_2c->line" ( (type_descriptor "uint" type_identifier) ) (field_expression "local_2c->line" identifier -> field_identifier))) ;) (expression_statement "iVar2 = *(int *)((int)&local_2c->line + 4);" (assignment_expression "iVar2 = *(int *)((int)&local_2c->line + 4)" identifier = (pointer_expression "*(int *)((int)&local_2c->line + 4)" * (cast_expression "(int *)((int)&local_2c->line + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&local_2c->line + 4)" ( (binary_expression "(int)&local_2c->line + 4" (cast_expression "(int)&local_2c->line" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_2c->line" & (field_expression "local_2c->line" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "linenum_00 = local_2c->line;" (assignment_expression "linenum_00 = local_2c->line" identifier = (field_expression "local_2c->line" identifier -> field_identifier)) ;) (expression_statement "pos = local_2c->pos;" (assignment_expression "pos = local_2c->pos" identifier = (field_expression "local_2c->pos" identifier -> field_identifier)) ;) (expression_statement "PVar9 = local_2c->pos;" (assignment_expression "PVar9 = local_2c->pos" identifier = (field_expression "local_2c->pos" identifier -> field_identifier)) ;) (if_statement "if ((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0) {\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }" if (parenthesized_expression "((SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0)" ( (binary_expression "(SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))) !=\n          (int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0" (parenthesized_expression "(SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6)))" ( (binary_expression "SBORROW4(linenum._4_4_,iVar2) !=\n          SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))" (call_expression "SBORROW4(linenum._4_4_,iVar2)" identifier (argument_list "(linenum._4_4_,iVar2)" ( (field_expression "linenum._4_4_" identifier . field_identifier) , identifier ))) != (call_expression "SBORROW4(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))" identifier (argument_list "(linenum._4_4_ - iVar2,(uint)((uint)linenum < uVar6))" ( (binary_expression "linenum._4_4_ - iVar2" (field_expression "linenum._4_4_" identifier . field_identifier) - identifier) , (call_expression "(uint)((uint)linenum < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)linenum < uVar6)" ( (binary_expression "(uint)linenum < uVar6" (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) ))) )))) )) != (binary_expression "(int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)) < 0" (cast_expression "(int)((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6))" ( (binary_expression "(linenum._4_4_ - iVar2) - (uint)((uint)linenum < uVar6)" (parenthesized_expression "(linenum._4_4_ - iVar2)" ( (binary_expression "linenum._4_4_ - iVar2" (field_expression "linenum._4_4_" identifier . field_identifier) - identifier) )) - (call_expression "(uint)((uint)linenum < uVar6)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((uint)linenum < uVar6)" ( (binary_expression "(uint)linenum < uVar6" (cast_expression "(uint)linenum" ( (type_descriptor "uint" type_identifier) ) identifier) < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n        do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));\n      }" { (do_statement "do {\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        } while (linenum != CONCAT44(iVar2,uVar6));" do (compound_statement "{\n          PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);\n          if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;\n          bVar8 = uVar6 != 0;\n          uVar6 = uVar6 - 1;\n          iVar2 = iVar2 + -1 + (uint)bVar8;\n          pos = PVar9;\n          linenum_00 = linenum;\n        }" { (expression_statement "PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0);" (assignment_expression "PVar9 = back_raw_line(PVar9,(char **)0x0,(int *)0x0)" identifier = (call_expression "back_raw_line(PVar9,(char **)0x0,(int *)0x0)" identifier (argument_list "(PVar9,(char **)0x0,(int *)0x0)" ( identifier , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (if_statement "if ((((byte)sigs & 3) != 0) || (PVar9 == -1)) goto LAB_00022aee;" if (parenthesized_expression "((((byte)sigs & 3) != 0) || (PVar9 == -1))" ( (binary_expression "(((byte)sigs & 3) != 0) || (PVar9 == -1)" (parenthesized_expression "(((byte)sigs & 3) != 0)" ( (binary_expression "((byte)sigs & 3) != 0" (parenthesized_expression "((byte)sigs & 3)" ( (binary_expression "(byte)sigs & 3" (cast_expression "(byte)sigs" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )) != number_literal) )) || (parenthesized_expression "(PVar9 == -1)" ( (binary_expression "PVar9 == -1" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022aee;" goto statement_identifier ;)) (expression_statement "bVar8 = uVar6 != 0;" (assignment_expression "bVar8 = uVar6 != 0" identifier = (binary_expression "uVar6 != 0" identifier != number_literal)) ;) (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "iVar2 = iVar2 + -1 + (uint)bVar8;" (assignment_expression "iVar2 = iVar2 + -1 + (uint)bVar8" identifier = (binary_expression "iVar2 + -1 + (uint)bVar8" (binary_expression "iVar2 + -1" identifier + number_literal) + (cast_expression "(uint)bVar8" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pos = PVar9;" (assignment_expression "pos = PVar9" identifier = identifier) ;) (expression_statement "linenum_00 = linenum;" (assignment_expression "linenum_00 = linenum" identifier = identifier) ;) }) while (parenthesized_expression "(linenum != CONCAT44(iVar2,uVar6))" ( (binary_expression "linenum != CONCAT44(iVar2,uVar6)" identifier != (call_expression "CONCAT44(iVar2,uVar6)" identifier (argument_list "(iVar2,uVar6)" ( identifier , identifier )))) )) ;) })) (goto_statement "goto LAB_00022b51;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00022aee:\n  uVar1 = 0xffffffff;" statement_identifier : (expression_statement "uVar1 = 0xffffffff;" (assignment_expression "uVar1 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "uVar3 = 0xffffffff;" (assignment_expression "uVar3 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00022af8:\n  return CONCAT44(uVar3,uVar1);" statement_identifier : (return_statement "return CONCAT44(uVar3,uVar1);" return (call_expression "CONCAT44(uVar3,uVar1)" identifier (argument_list "(uVar3,uVar1)" ( identifier , identifier ))) ;)) })))
(translation_unit "longlong FUN_000229c0(uint param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}\n\n" (function_definition "longlong FUN_000229c0(uint param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}" type_identifier (function_declarator "FUN_000229c0(uint param_1,int param_2)" identifier (parameter_list "(uint param_1,int param_2)" ( (parameter_declaration "uint param_1" type_identifier identifier) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "longlong lVar10;" type_identifier identifier ;) (declaration "longlong lVar11;" type_identifier identifier ;) (declaration "uint local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "undefined4 *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (expression_statement "local_34 = param_1;" (assignment_expression "local_34 = param_1" identifier = identifier) ;) (expression_statement "local_30 = param_2;" (assignment_expression "local_30 = param_2" identifier = identifier) ;) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" identifier = number_literal) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;" if (parenthesized_expression "((int)(uint)(1 < param_1) <= -param_2)" ( (binary_expression "(int)(uint)(1 < param_1) <= -param_2" (cast_expression "(int)(uint)(1 < param_1)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(1 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(1 < param_1)" ( (binary_expression "1 < param_1" number_literal < identifier) )))) <= (unary_expression "-param_2" - identifier)) )) (goto_statement "goto LAB_00022af8;" goto statement_identifier ;)) (expression_statement "local_2c = DAT_00040740;" (assignment_expression "local_2c = DAT_00040740" identifier = identifier) ;) (if_statement "if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" if (parenthesized_expression "((undefined4 **)DAT_00040740 == &DAT_00040740)" ( (binary_expression "(undefined4 **)DAT_00040740 == &DAT_00040740" (cast_expression "(undefined4 **)DAT_00040740" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) == (pointer_expression "&DAT_00040740" & identifier)) )) (compound_statement "{\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }" { (labeled_statement "LAB_00022c0f:\n    iVar6 = DAT_00040744;" statement_identifier : (expression_statement "iVar6 = DAT_00040744;" (assignment_expression "iVar6 = DAT_00040744" identifier = identifier) ;)) (expression_statement "local_2c = &DAT_00040740;" (assignment_expression "local_2c = &DAT_00040740" identifier = (pointer_expression "&DAT_00040740" & identifier)) ;) (if_statement "if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }" if (parenthesized_expression "(DAT_0004075c == param_2 && DAT_00040758 == param_1)" ( (binary_expression "DAT_0004075c == param_2 && DAT_00040758 == param_1" (binary_expression "DAT_0004075c == param_2" identifier == identifier) && (binary_expression "DAT_00040758 == param_1" identifier == identifier)) )) (compound_statement "{\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }" { (labeled_statement "LAB_00022b37:\n      return *(longlong *)(local_2c + 2);" statement_identifier : (return_statement "return *(longlong *)(local_2c + 2);" return (pointer_expression "*(longlong *)(local_2c + 2)" * (cast_expression "(longlong *)(local_2c + 2)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 2)" ( (binary_expression "local_2c + 2" identifier + number_literal) )))) ;)) })) (labeled_statement "LAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));" statement_identifier : (expression_statement "iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));" (assignment_expression "iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" identifier = (call_expression "FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" identifier (argument_list "(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" ( (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" * (cast_expression "(undefined4 *)(iVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0xc)" ( (binary_expression "iVar6 + 0xc" identifier + number_literal) )))) )))) ;)) (if_statement "if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }" { (expression_statement "iVar3 = *(int *)(iVar6 + 0x1c);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = *(uint *)(iVar6 + 0x18);" (assignment_expression "uVar7 = *(uint *)(iVar6 + 0x18)" identifier = (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = *(longlong *)(iVar6 + 8);" (assignment_expression "lVar11 = *(longlong *)(iVar6 + 8)" identifier = (pointer_expression "*(longlong *)(iVar6 + 8)" * (cast_expression "(longlong *)(iVar6 + 8)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar10 = *(longlong *)(iVar6 + 8);" (assignment_expression "lVar10 = *(longlong *)(iVar6 + 8)" identifier = (pointer_expression "*(longlong *)(iVar6 + 8)" * (cast_expression "(longlong *)(iVar6 + 8)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" identifier = identifier) ;) (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" if (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" ( (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" ( (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" identifier (argument_list "(iVar3,param_2)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" identifier (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" ( (binary_expression "iVar3 - param_2" identifier - identifier) , (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" { (do_statement "do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);" do (compound_statement "{\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        }" { (expression_statement "lVar10 = FUN_00021fd0(lVar10,0,0);" (assignment_expression "lVar10 = FUN_00021fd0(lVar10,0,0)" identifier = (call_expression "FUN_00021fd0(lVar10,0,0)" identifier (argument_list "(lVar10,0,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;" if (parenthesized_expression "(((DAT_000419f8 & 3) != 0) || (lVar10 == -1))" ( (binary_expression "((DAT_000419f8 & 3) != 0) || (lVar10 == -1)" (parenthesized_expression "((DAT_000419f8 & 3) != 0)" ( (binary_expression "(DAT_000419f8 & 3) != 0" (parenthesized_expression "(DAT_000419f8 & 3)" ( (binary_expression "DAT_000419f8 & 3" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(lVar10 == -1)" ( (binary_expression "lVar10 == -1" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022aee;" goto statement_identifier ;)) (expression_statement "bVar9 = 0xfffffffe < uVar7;" (assignment_expression "bVar9 = 0xfffffffe < uVar7" identifier = (binary_expression "0xfffffffe < uVar7" number_literal < identifier)) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) (expression_statement "iVar3 = iVar3 + (uint)bVar9;" (assignment_expression "iVar3 = iVar3 + (uint)bVar9" identifier = (binary_expression "iVar3 + (uint)bVar9" identifier + (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" identifier = identifier) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) (expression_statement "lVar11 = lVar10;" (assignment_expression "lVar11 = lVar10" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != iVar3 || param_1 != uVar7)" ( (binary_expression "param_2 != iVar3 || param_1 != uVar7" (binary_expression "param_2 != iVar3" identifier != identifier) || (binary_expression "param_1 != uVar7" identifier != identifier)) )) ;) })) (labeled_statement "LAB_00022b51:\n      local_30 = iVar6;" statement_identifier : (expression_statement "local_30 = iVar6;" (assignment_expression "local_30 = iVar6" identifier = identifier) ;)) (expression_statement "local_34 = uVar1;" (assignment_expression "local_34 = uVar1" identifier = identifier) ;) (expression_statement "FUN_00022420(local_34,local_30,lVar11);" (call_expression "FUN_00022420(local_34,local_30,lVar11)" identifier (argument_list "(local_34,local_30,lVar11)" ( identifier , identifier , identifier ))) ;) (return_statement "return lVar11;" return identifier ;) })) }) (else_clause "else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" else (compound_statement "{\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" { (expression_statement "iVar3 = DAT_00040740[7];" (assignment_expression "iVar3 = DAT_00040740[7]" identifier = (subscript_expression "DAT_00040740[7]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = DAT_00040740[6];" (assignment_expression "uVar7 = DAT_00040740[6]" identifier = (subscript_expression "DAT_00040740[6]" identifier [ number_literal ])) ;) (if_statement "if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }" if (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" ( (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" ( (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" identifier (argument_list "(iVar3,param_2)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" identifier (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" ( (binary_expression "iVar3 - param_2" identifier - identifier) , (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }" { (do_statement "do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);" do (compound_statement "{\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      }" { (expression_statement "local_2c = (undefined4 *)*local_2c;" (assignment_expression "local_2c = (undefined4 *)*local_2c" identifier = (cast_expression "(undefined4 *)*local_2c" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_2c" * identifier))) ;) (if_statement "if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;" if (parenthesized_expression "((undefined4 **)local_2c == &DAT_00040740)" ( (binary_expression "(undefined4 **)local_2c == &DAT_00040740" (cast_expression "(undefined4 **)local_2c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier) == (pointer_expression "&DAT_00040740" & identifier)) )) (goto_statement "goto LAB_00022c0f;" goto statement_identifier ;)) (expression_statement "uVar7 = local_2c[6];" (assignment_expression "uVar7 = local_2c[6]" identifier = (subscript_expression "local_2c[6]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = local_2c[7];" (assignment_expression "iVar3 = local_2c[7]" identifier = (subscript_expression "local_2c[7]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" ( (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" ( (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" identifier (argument_list "(iVar3,param_2)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" identifier (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" ( (binary_expression "iVar3 - param_2" identifier - identifier) , (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" ( (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) )))) ))) < number_literal)) )) ;) })) (if_statement "if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;" if (parenthesized_expression "(param_2 == iVar3 && param_1 == uVar7)" ( (binary_expression "param_2 == iVar3 && param_1 == uVar7" (binary_expression "param_2 == iVar3" identifier == identifier) && (binary_expression "param_1 == uVar7" identifier == identifier)) )) (goto_statement "goto LAB_00022b37;" goto statement_identifier ;)) (expression_statement "iVar6 = local_2c[1];" (assignment_expression "iVar6 = local_2c[1]" identifier = (subscript_expression "local_2c[1]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));" (assignment_expression "iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18))" identifier = (binary_expression "(param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(param_2 - *(int *)(iVar6 + 0x1c))" ( (binary_expression "param_2 - *(int *)(iVar6 + 0x1c)" identifier - (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) )) - (call_expression "(uint)(param_1 < *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < *(uint *)(iVar6 + 0x18))" ( (binary_expression "param_1 < *(uint *)(iVar6 + 0x18)" identifier < (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ))))) ;) (expression_statement "iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);" (assignment_expression "iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1)" identifier = (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" ( (binary_expression "iVar3 - param_2" identifier - identifier) )) - (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar7 < param_1)" ( (binary_expression "uVar7 < param_1" identifier < identifier) ))))) ;) (expression_statement "uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);" (assignment_expression "uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" identifier = (call_expression "(uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" ( (binary_expression "param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1" (binary_expression "param_1 - *(uint *)(iVar6 + 0x18)" identifier - (pointer_expression "*(uint *)(iVar6 + 0x18)" * (cast_expression "(uint *)(iVar6 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) < (binary_expression "uVar7 - param_1" identifier - identifier)) )))) ;) (expression_statement "iVar3 = iVar8 - iVar5;" (assignment_expression "iVar3 = iVar8 - iVar5" identifier = (binary_expression "iVar8 - iVar5" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;" if (parenthesized_expression "((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)" ( (binary_expression "(SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0" (parenthesized_expression "(SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7))" ( (binary_expression "SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)" (call_expression "SBORROW4(iVar8,iVar5)" identifier (argument_list "(iVar8,iVar5)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar3,uVar7)" identifier (argument_list "(iVar3,uVar7)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar3 - uVar7) < 0" (cast_expression "(int)(iVar3 - uVar7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar3 - uVar7)" ( (binary_expression "iVar3 - uVar7" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_00022a75;" goto statement_identifier ;)) (expression_statement "iVar3 = FUN_00015290(local_2c[2],local_2c[3]);" (assignment_expression "iVar3 = FUN_00015290(local_2c[2],local_2c[3])" identifier = (call_expression "FUN_00015290(local_2c[2],local_2c[3])" identifier (argument_list "(local_2c[2],local_2c[3])" ( (subscript_expression "local_2c[2]" identifier [ number_literal ]) , (subscript_expression "local_2c[3]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }" { (expression_statement "uVar7 = local_2c[6];" (assignment_expression "uVar7 = local_2c[6]" identifier = (subscript_expression "local_2c[6]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = local_2c[7];" (assignment_expression "iVar3 = local_2c[7]" identifier = (subscript_expression "local_2c[7]" identifier [ number_literal ])) ;) (expression_statement "lVar11 = *(longlong *)(local_2c + 2);" (assignment_expression "lVar11 = *(longlong *)(local_2c + 2)" identifier = (pointer_expression "*(longlong *)(local_2c + 2)" * (cast_expression "(longlong *)(local_2c + 2)" ( (type_descriptor "longlong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_2c + 2)" ( (binary_expression "local_2c + 2" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" identifier = identifier) ;) (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" identifier = identifier) ;) (if_statement "if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" if (parenthesized_expression "((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0)" ( (binary_expression "(SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0" (parenthesized_expression "(SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7)))" ( (binary_expression "SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))" (call_expression "SBORROW4(param_2,iVar3)" identifier (argument_list "(param_2,iVar3)" ( identifier , identifier ))) != (call_expression "SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))" identifier (argument_list "(param_2 - iVar3,(uint)(param_1 < uVar7))" ( (binary_expression "param_2 - iVar3" identifier - identifier) , (call_expression "(uint)(param_1 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < uVar7)" ( (binary_expression "param_1 < uVar7" identifier < identifier) ))) )))) )) != (binary_expression "(int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0" (cast_expression "(int)((param_2 - iVar3) - (uint)(param_1 < uVar7))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((param_2 - iVar3) - (uint)(param_1 < uVar7))" ( (binary_expression "(param_2 - iVar3) - (uint)(param_1 < uVar7)" (parenthesized_expression "(param_2 - iVar3)" ( (binary_expression "param_2 - iVar3" identifier - identifier) )) - (call_expression "(uint)(param_1 < uVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_1 < uVar7)" ( (binary_expression "param_1 < uVar7" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" { (do_statement "do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);" do (compound_statement "{\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        }" { (expression_statement "lVar11 = FUN_00022100(lVar11,0,0);" (assignment_expression "lVar11 = FUN_00022100(lVar11,0,0)" identifier = (call_expression "FUN_00022100(lVar11,0,0)" identifier (argument_list "(lVar11,0,0)" ( identifier , number_literal , number_literal )))) ;) (if_statement "if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;" if (parenthesized_expression "(((DAT_000419f8 & 3) != 0) || (lVar11 == -1))" ( (binary_expression "((DAT_000419f8 & 3) != 0) || (lVar11 == -1)" (parenthesized_expression "((DAT_000419f8 & 3) != 0)" ( (binary_expression "(DAT_000419f8 & 3) != 0" (parenthesized_expression "(DAT_000419f8 & 3)" ( (binary_expression "DAT_000419f8 & 3" identifier & number_literal) )) != number_literal) )) || (parenthesized_expression "(lVar11 == -1)" ( (binary_expression "lVar11 == -1" identifier == number_literal) ))) )) (goto_statement "goto LAB_00022aee;" goto statement_identifier ;)) (expression_statement "bVar9 = uVar7 != 0;" (assignment_expression "bVar9 = uVar7 != 0" identifier = (binary_expression "uVar7 != 0" identifier != number_literal)) ;) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" identifier = (binary_expression "uVar7 - 1" identifier - number_literal)) ;) (expression_statement "iVar3 = iVar3 + -1 + (uint)bVar9;" (assignment_expression "iVar3 = iVar3 + -1 + (uint)bVar9" identifier = (binary_expression "iVar3 + -1 + (uint)bVar9" (binary_expression "iVar3 + -1" identifier + number_literal) + (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" identifier = identifier) ;) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" identifier = identifier) ;) }) while (parenthesized_expression "(param_2 != iVar3 || param_1 != uVar7)" ( (binary_expression "param_2 != iVar3 || param_1 != uVar7" (binary_expression "param_2 != iVar3" identifier != identifier) || (binary_expression "param_1 != uVar7" identifier != identifier)) )) ;) })) (goto_statement "goto LAB_00022b51;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_00022aee:\n  uVar2 = 0xffffffff;" statement_identifier : (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" identifier = number_literal) ;)) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" identifier = number_literal) ;) (labeled_statement "LAB_00022af8:\n  return CONCAT44(uVar4,uVar2);" statement_identifier : (return_statement "return CONCAT44(uVar4,uVar2);" return (call_expression "CONCAT44(uVar4,uVar2)" identifier (argument_list "(uVar4,uVar2)" ( identifier , identifier ))) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE 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 ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) )))) <= (unary_expression - IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT) == (pointer_expression & IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (return_statement return (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT) == (pointer_expression & IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (binary_expression IDENT == IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (binary_expression IDENT - IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto 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 = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (binary_expression IDENT != IDENT)) )) ;) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (return_statement return (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) })))
(function_definition "longlong FUN_000229c0(uint param_1,int param_2)\n\n{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}" (type_identifier "longlong") (function_declarator "FUN_000229c0(uint param_1,int param_2)" (identifier "FUN_000229c0") (parameter_list "(uint param_1,int param_2)" (( "(") (parameter_declaration "uint param_1" (type_identifier "uint") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined4 uVar4;\n  int iVar5;\n  int iVar6;\n  uint uVar7;\n  int iVar8;\n  bool bVar9;\n  longlong lVar10;\n  longlong lVar11;\n  uint local_34;\n  int local_30;\n  undefined4 *local_2c;\n  \n  local_34 = param_1;\n  local_30 = param_2;\n  uVar2 = 0;\n  uVar4 = 0;\n  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;\n  local_2c = DAT_00040740;\n  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }\nLAB_00022aee:\n  uVar2 = 0xffffffff;\n  uVar4 = 0xffffffff;\nLAB_00022af8:\n  return CONCAT44(uVar4,uVar2);\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "longlong lVar10;" (type_identifier "longlong") (identifier "lVar10") (; ";")) (declaration "longlong lVar11;" (type_identifier "longlong") (identifier "lVar11") (; ";")) (declaration "uint local_34;" (type_identifier "uint") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "undefined4 *local_2c;" (type_identifier "undefined4") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (expression_statement "local_34 = param_1;" (assignment_expression "local_34 = param_1" (identifier "local_34") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_30 = param_2;" (assignment_expression "local_30 = param_2" (identifier "local_30") (= "=") (identifier "param_2")) (; ";")) (expression_statement "uVar2 = 0;" (assignment_expression "uVar2 = 0" (identifier "uVar2") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;" (if "if") (parenthesized_expression "((int)(uint)(1 < param_1) <= -param_2)" (( "(") (binary_expression "(int)(uint)(1 < param_1) <= -param_2" (cast_expression "(int)(uint)(1 < param_1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(1 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(1 < param_1)" (( "(") (binary_expression "1 < param_1" (number_literal "1") (< "<") (identifier "param_1")) () ")")))) (<= "<=") (unary_expression "-param_2" (- "-") (identifier "param_2"))) () ")")) (goto_statement "goto LAB_00022af8;" (goto "goto") (statement_identifier "LAB_00022af8") (; ";"))) (expression_statement "local_2c = DAT_00040740;" (assignment_expression "local_2c = DAT_00040740" (identifier "local_2c") (= "=") (identifier "DAT_00040740")) (; ";")) (if_statement "if ((undefined4 **)DAT_00040740 == &DAT_00040740) {\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }\n  else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" (if "if") (parenthesized_expression "((undefined4 **)DAT_00040740 == &DAT_00040740)" (( "(") (binary_expression "(undefined4 **)DAT_00040740 == &DAT_00040740" (cast_expression "(undefined4 **)DAT_00040740" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "DAT_00040740")) (== "==") (pointer_expression "&DAT_00040740" (& "&") (identifier "DAT_00040740"))) () ")")) (compound_statement "{\nLAB_00022c0f:\n    iVar6 = DAT_00040744;\n    local_2c = &DAT_00040740;\n    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }\nLAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));\n    if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }\n  }" ({ "{") (labeled_statement "LAB_00022c0f:\n    iVar6 = DAT_00040744;" (statement_identifier "LAB_00022c0f") (: ":") (expression_statement "iVar6 = DAT_00040744;" (assignment_expression "iVar6 = DAT_00040744" (identifier "iVar6") (= "=") (identifier "DAT_00040744")) (; ";"))) (expression_statement "local_2c = &DAT_00040740;" (assignment_expression "local_2c = &DAT_00040740" (identifier "local_2c") (= "=") (pointer_expression "&DAT_00040740" (& "&") (identifier "DAT_00040740"))) (; ";")) (if_statement "if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }" (if "if") (parenthesized_expression "(DAT_0004075c == param_2 && DAT_00040758 == param_1)" (( "(") (binary_expression "DAT_0004075c == param_2 && DAT_00040758 == param_1" (binary_expression "DAT_0004075c == param_2" (identifier "DAT_0004075c") (== "==") (identifier "param_2")) (&& "&&") (binary_expression "DAT_00040758 == param_1" (identifier "DAT_00040758") (== "==") (identifier "param_1"))) () ")")) (compound_statement "{\nLAB_00022b37:\n      return *(longlong *)(local_2c + 2);\n    }" ({ "{") (labeled_statement "LAB_00022b37:\n      return *(longlong *)(local_2c + 2);" (statement_identifier "LAB_00022b37") (: ":") (return_statement "return *(longlong *)(local_2c + 2);" (return "return") (pointer_expression "*(longlong *)(local_2c + 2)" (* "*") (cast_expression "(longlong *)(local_2c + 2)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 2)" (( "(") (binary_expression "local_2c + 2" (identifier "local_2c") (+ "+") (number_literal "2")) () ")")))) (; ";"))) (} "}"))) (labeled_statement "LAB_00022a75:\n    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));" (statement_identifier "LAB_00022a75") (: ":") (expression_statement "iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));" (assignment_expression "iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" (identifier "iVar3") (= "=") (call_expression "FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" (identifier "FUN_00015290") (argument_list "(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(iVar6 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(iVar6 + 0xc)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0xc)" (( "(") (binary_expression "iVar6 + 0xc" (identifier "iVar6") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";"))) (if_statement "if (iVar3 == 0) {\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar3 = *(int *)(iVar6 + 0x1c);\n      uVar7 = *(uint *)(iVar6 + 0x18);\n      lVar11 = *(longlong *)(iVar6 + 8);\n      lVar10 = *(longlong *)(iVar6 + 8);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\nLAB_00022b51:\n      local_30 = iVar6;\n      local_34 = uVar1;\n      FUN_00022420(local_34,local_30,lVar11);\n      return lVar11;\n    }" ({ "{") (expression_statement "iVar3 = *(int *)(iVar6 + 0x1c);" (assignment_expression "iVar3 = *(int *)(iVar6 + 0x1c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(iVar6 + 0x1c)" (* "*") (cast_expression "(int *)(iVar6 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "uVar7 = *(uint *)(iVar6 + 0x18);" (assignment_expression "uVar7 = *(uint *)(iVar6 + 0x18)" (identifier "uVar7") (= "=") (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "lVar11 = *(longlong *)(iVar6 + 8);" (assignment_expression "lVar11 = *(longlong *)(iVar6 + 8)" (identifier "lVar11") (= "=") (pointer_expression "*(longlong *)(iVar6 + 8)" (* "*") (cast_expression "(longlong *)(iVar6 + 8)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar10 = *(longlong *)(iVar6 + 8);" (assignment_expression "lVar10 = *(longlong *)(iVar6 + 8)" (identifier "lVar10") (= "=") (pointer_expression "*(longlong *)(iVar6 + 8)" (* "*") (cast_expression "(longlong *)(iVar6 + 8)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" (identifier "uVar1") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" (identifier "iVar6") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" (if "if") (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" (( "(") (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" (identifier "SBORROW4") (argument_list "(iVar3,param_2)" (( "(") (identifier "iVar3") (, ",") (identifier "param_2") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (identifier "SBORROW4") (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" (( "(") (binary_expression "iVar3 - param_2" (identifier "iVar3") (- "-") (identifier "param_2")) (, ",") (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < param_1)" (( "(") (binary_expression "uVar7 < param_1" (identifier "uVar7") (< "<") (identifier "param_1")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" (( "(") (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" (( "(") (binary_expression "iVar3 - param_2" (identifier "iVar3") (- "-") (identifier "param_2")) () ")")) (- "-") (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < param_1)" (( "(") (binary_expression "uVar7 < param_1" (identifier "uVar7") (< "<") (identifier "param_1")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n        do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" ({ "{") (do_statement "do {\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        } while (param_2 != iVar3 || param_1 != uVar7);" (do "do") (compound_statement "{\n          lVar10 = FUN_00021fd0(lVar10,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;\n          bVar9 = 0xfffffffe < uVar7;\n          uVar7 = uVar7 + 1;\n          iVar3 = iVar3 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n          lVar11 = lVar10;\n        }" ({ "{") (expression_statement "lVar10 = FUN_00021fd0(lVar10,0,0);" (assignment_expression "lVar10 = FUN_00021fd0(lVar10,0,0)" (identifier "lVar10") (= "=") (call_expression "FUN_00021fd0(lVar10,0,0)" (identifier "FUN_00021fd0") (argument_list "(lVar10,0,0)" (( "(") (identifier "lVar10") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;" (if "if") (parenthesized_expression "(((DAT_000419f8 & 3) != 0) || (lVar10 == -1))" (( "(") (binary_expression "((DAT_000419f8 & 3) != 0) || (lVar10 == -1)" (parenthesized_expression "((DAT_000419f8 & 3) != 0)" (( "(") (binary_expression "(DAT_000419f8 & 3) != 0" (parenthesized_expression "(DAT_000419f8 & 3)" (( "(") (binary_expression "DAT_000419f8 & 3" (identifier "DAT_000419f8") (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar10 == -1)" (( "(") (binary_expression "lVar10 == -1" (identifier "lVar10") (== "==") (number_literal "-1")) () ")"))) () ")")) (goto_statement "goto LAB_00022aee;" (goto "goto") (statement_identifier "LAB_00022aee") (; ";"))) (expression_statement "bVar9 = 0xfffffffe < uVar7;" (assignment_expression "bVar9 = 0xfffffffe < uVar7" (identifier "bVar9") (= "=") (binary_expression "0xfffffffe < uVar7" (number_literal "0xfffffffe") (< "<") (identifier "uVar7"))) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = iVar3 + (uint)bVar9;" (assignment_expression "iVar3 = iVar3 + (uint)bVar9" (identifier "iVar3") (= "=") (binary_expression "iVar3 + (uint)bVar9" (identifier "iVar3") (+ "+") (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9")))) (; ";")) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" (identifier "uVar1") (= "=") (identifier "local_34")) (; ";")) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" (identifier "iVar6") (= "=") (identifier "local_30")) (; ";")) (expression_statement "lVar11 = lVar10;" (assignment_expression "lVar11 = lVar10" (identifier "lVar11") (= "=") (identifier "lVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != iVar3 || param_1 != uVar7)" (( "(") (binary_expression "param_2 != iVar3 || param_1 != uVar7" (binary_expression "param_2 != iVar3" (identifier "param_2") (!= "!=") (identifier "iVar3")) (|| "||") (binary_expression "param_1 != uVar7" (identifier "param_1") (!= "!=") (identifier "uVar7"))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00022b51:\n      local_30 = iVar6;" (statement_identifier "LAB_00022b51") (: ":") (expression_statement "local_30 = iVar6;" (assignment_expression "local_30 = iVar6" (identifier "local_30") (= "=") (identifier "iVar6")) (; ";"))) (expression_statement "local_34 = uVar1;" (assignment_expression "local_34 = uVar1" (identifier "local_34") (= "=") (identifier "uVar1")) (; ";")) (expression_statement "FUN_00022420(local_34,local_30,lVar11);" (call_expression "FUN_00022420(local_34,local_30,lVar11)" (identifier "FUN_00022420") (argument_list "(local_34,local_30,lVar11)" (( "(") (identifier "local_34") (, ",") (identifier "local_30") (, ",") (identifier "lVar11") () ")"))) (; ";")) (return_statement "return lVar11;" (return "return") (identifier "lVar11") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" (else "else") (compound_statement "{\n    iVar3 = DAT_00040740[7];\n    uVar7 = DAT_00040740[6];\n    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }\n    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;\n    iVar6 = local_2c[1];\n    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));\n    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);\n    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);\n    iVar3 = iVar8 - iVar5;\n    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;\n    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);\n    if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }\n  }" ({ "{") (expression_statement "iVar3 = DAT_00040740[7];" (assignment_expression "iVar3 = DAT_00040740[7]" (identifier "iVar3") (= "=") (subscript_expression "DAT_00040740[7]" (identifier "DAT_00040740") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar7 = DAT_00040740[6];" (assignment_expression "uVar7 = DAT_00040740[6]" (identifier "uVar7") (= "=") (subscript_expression "DAT_00040740[6]" (identifier "DAT_00040740") ([ "[") (number_literal "6") (] "]"))) (; ";")) (if_statement "if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }" (if "if") (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" (( "(") (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" (identifier "SBORROW4") (argument_list "(iVar3,param_2)" (( "(") (identifier "iVar3") (, ",") (identifier "param_2") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (identifier "SBORROW4") (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" (( "(") (binary_expression "iVar3 - param_2" (identifier "iVar3") (- "-") (identifier "param_2")) (, ",") (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < param_1)" (( "(") (binary_expression "uVar7 < param_1" (identifier "uVar7") (< "<") (identifier "param_1")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" (( "(") (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" (( "(") (binary_expression "iVar3 - param_2" (identifier "iVar3") (- "-") (identifier "param_2")) () ")")) (- "-") (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < param_1)" (( "(") (binary_expression "uVar7 < param_1" (identifier "uVar7") (< "<") (identifier "param_1")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n      do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);\n    }" ({ "{") (do_statement "do {\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);" (do "do") (compound_statement "{\n        local_2c = (undefined4 *)*local_2c;\n        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;\n        uVar7 = local_2c[6];\n        iVar3 = local_2c[7];\n      }" ({ "{") (expression_statement "local_2c = (undefined4 *)*local_2c;" (assignment_expression "local_2c = (undefined4 *)*local_2c" (identifier "local_2c") (= "=") (cast_expression "(undefined4 *)*local_2c" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_2c" (* "*") (identifier "local_2c")))) (; ";")) (if_statement "if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;" (if "if") (parenthesized_expression "((undefined4 **)local_2c == &DAT_00040740)" (( "(") (binary_expression "(undefined4 **)local_2c == &DAT_00040740" (cast_expression "(undefined4 **)local_2c" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "local_2c")) (== "==") (pointer_expression "&DAT_00040740" (& "&") (identifier "DAT_00040740"))) () ")")) (goto_statement "goto LAB_00022c0f;" (goto "goto") (statement_identifier "LAB_00022c0f") (; ";"))) (expression_statement "uVar7 = local_2c[6];" (assignment_expression "uVar7 = local_2c[6]" (identifier "uVar7") (= "=") (subscript_expression "local_2c[6]" (identifier "local_2c") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar3 = local_2c[7];" (assignment_expression "iVar3 = local_2c[7]" (identifier "iVar3") (= "=") (subscript_expression "local_2c[7]" (identifier "local_2c") ([ "[") (number_literal "7") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=\n               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (parenthesized_expression "(SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1)))" (( "(") (binary_expression "SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (call_expression "SBORROW4(iVar3,param_2)" (identifier "SBORROW4") (argument_list "(iVar3,param_2)" (( "(") (identifier "iVar3") (, ",") (identifier "param_2") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))" (identifier "SBORROW4") (argument_list "(iVar3 - param_2,(uint)(uVar7 < param_1))" (( "(") (binary_expression "iVar3 - param_2" (identifier "iVar3") (- "-") (identifier "param_2")) (, ",") (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < param_1)" (( "(") (binary_expression "uVar7 < param_1" (identifier "uVar7") (< "<") (identifier "param_1")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0" (cast_expression "(int)((iVar3 - param_2) - (uint)(uVar7 < param_1))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar3 - param_2) - (uint)(uVar7 < param_1))" (( "(") (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" (( "(") (binary_expression "iVar3 - param_2" (identifier "iVar3") (- "-") (identifier "param_2")) () ")")) (- "-") (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < param_1)" (( "(") (binary_expression "uVar7 < param_1" (identifier "uVar7") (< "<") (identifier "param_1")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (if_statement "if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;" (if "if") (parenthesized_expression "(param_2 == iVar3 && param_1 == uVar7)" (( "(") (binary_expression "param_2 == iVar3 && param_1 == uVar7" (binary_expression "param_2 == iVar3" (identifier "param_2") (== "==") (identifier "iVar3")) (&& "&&") (binary_expression "param_1 == uVar7" (identifier "param_1") (== "==") (identifier "uVar7"))) () ")")) (goto_statement "goto LAB_00022b37;" (goto "goto") (statement_identifier "LAB_00022b37") (; ";"))) (expression_statement "iVar6 = local_2c[1];" (assignment_expression "iVar6 = local_2c[1]" (identifier "iVar6") (= "=") (subscript_expression "local_2c[1]" (identifier "local_2c") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));" (assignment_expression "iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18))" (identifier "iVar8") (= "=") (binary_expression "(param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(param_2 - *(int *)(iVar6 + 0x1c))" (( "(") (binary_expression "param_2 - *(int *)(iVar6 + 0x1c)" (identifier "param_2") (- "-") (pointer_expression "*(int *)(iVar6 + 0x1c)" (* "*") (cast_expression "(int *)(iVar6 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")"))))) () ")")) (- "-") (call_expression "(uint)(param_1 < *(uint *)(iVar6 + 0x18))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 < *(uint *)(iVar6 + 0x18))" (( "(") (binary_expression "param_1 < *(uint *)(iVar6 + 0x18)" (identifier "param_1") (< "<") (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))))) (; ";")) (expression_statement "iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);" (assignment_expression "iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1)" (identifier "iVar5") (= "=") (binary_expression "(iVar3 - param_2) - (uint)(uVar7 < param_1)" (parenthesized_expression "(iVar3 - param_2)" (( "(") (binary_expression "iVar3 - param_2" (identifier "iVar3") (- "-") (identifier "param_2")) () ")")) (- "-") (call_expression "(uint)(uVar7 < param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar7 < param_1)" (( "(") (binary_expression "uVar7 < param_1" (identifier "uVar7") (< "<") (identifier "param_1")) () ")"))))) (; ";")) (expression_statement "uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);" (assignment_expression "uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" (identifier "uVar7") (= "=") (call_expression "(uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1)" (( "(") (binary_expression "param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1" (binary_expression "param_1 - *(uint *)(iVar6 + 0x18)" (identifier "param_1") (- "-") (pointer_expression "*(uint *)(iVar6 + 0x18)" (* "*") (cast_expression "(uint *)(iVar6 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) (< "<") (binary_expression "uVar7 - param_1" (identifier "uVar7") (- "-") (identifier "param_1"))) () ")")))) (; ";")) (expression_statement "iVar3 = iVar8 - iVar5;" (assignment_expression "iVar3 = iVar8 - iVar5" (identifier "iVar3") (= "=") (binary_expression "iVar8 - iVar5" (identifier "iVar8") (- "-") (identifier "iVar5"))) (; ";")) (if_statement "if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)\n    goto LAB_00022a75;" (if "if") (parenthesized_expression "((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)" (( "(") (binary_expression "(SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0" (parenthesized_expression "(SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7))" (( "(") (binary_expression "SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)" (call_expression "SBORROW4(iVar8,iVar5)" (identifier "SBORROW4") (argument_list "(iVar8,iVar5)" (( "(") (identifier "iVar8") (, ",") (identifier "iVar5") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar3,uVar7)" (identifier "SBORROW4") (argument_list "(iVar3,uVar7)" (( "(") (identifier "iVar3") (, ",") (identifier "uVar7") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar3 - uVar7) < 0" (cast_expression "(int)(iVar3 - uVar7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar3 - uVar7)" (( "(") (binary_expression "iVar3 - uVar7" (identifier "iVar3") (- "-") (identifier "uVar7")) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_00022a75;" (goto "goto") (statement_identifier "LAB_00022a75") (; ";"))) (expression_statement "iVar3 = FUN_00015290(local_2c[2],local_2c[3]);" (assignment_expression "iVar3 = FUN_00015290(local_2c[2],local_2c[3])" (identifier "iVar3") (= "=") (call_expression "FUN_00015290(local_2c[2],local_2c[3])" (identifier "FUN_00015290") (argument_list "(local_2c[2],local_2c[3])" (( "(") (subscript_expression "local_2c[2]" (identifier "local_2c") ([ "[") (number_literal "2") (] "]")) (, ",") (subscript_expression "local_2c[3]" (identifier "local_2c") ([ "[") (number_literal "3") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = local_2c[6];\n      iVar3 = local_2c[7];\n      lVar11 = *(longlong *)(local_2c + 2);\n      uVar1 = uVar7;\n      iVar6 = iVar3;\n      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }\n      goto LAB_00022b51;\n    }" ({ "{") (expression_statement "uVar7 = local_2c[6];" (assignment_expression "uVar7 = local_2c[6]" (identifier "uVar7") (= "=") (subscript_expression "local_2c[6]" (identifier "local_2c") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar3 = local_2c[7];" (assignment_expression "iVar3 = local_2c[7]" (identifier "iVar3") (= "=") (subscript_expression "local_2c[7]" (identifier "local_2c") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "lVar11 = *(longlong *)(local_2c + 2);" (assignment_expression "lVar11 = *(longlong *)(local_2c + 2)" (identifier "lVar11") (= "=") (pointer_expression "*(longlong *)(local_2c + 2)" (* "*") (cast_expression "(longlong *)(local_2c + 2)" (( "(") (type_descriptor "longlong *" (type_identifier "longlong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_2c + 2)" (( "(") (binary_expression "local_2c + 2" (identifier "local_2c") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "uVar1 = uVar7;" (assignment_expression "uVar1 = uVar7" (identifier "uVar1") (= "=") (identifier "uVar7")) (; ";")) (expression_statement "iVar6 = iVar3;" (assignment_expression "iVar6 = iVar3" (identifier "iVar6") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" (if "if") (parenthesized_expression "((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0)" (( "(") (binary_expression "(SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=\n          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0" (parenthesized_expression "(SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7)))" (( "(") (binary_expression "SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))" (call_expression "SBORROW4(param_2,iVar3)" (identifier "SBORROW4") (argument_list "(param_2,iVar3)" (( "(") (identifier "param_2") (, ",") (identifier "iVar3") () ")"))) (!= "!=") (call_expression "SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))" (identifier "SBORROW4") (argument_list "(param_2 - iVar3,(uint)(param_1 < uVar7))" (( "(") (binary_expression "param_2 - iVar3" (identifier "param_2") (- "-") (identifier "iVar3")) (, ",") (call_expression "(uint)(param_1 < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 < uVar7)" (( "(") (binary_expression "param_1 < uVar7" (identifier "param_1") (< "<") (identifier "uVar7")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0" (cast_expression "(int)((param_2 - iVar3) - (uint)(param_1 < uVar7))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((param_2 - iVar3) - (uint)(param_1 < uVar7))" (( "(") (binary_expression "(param_2 - iVar3) - (uint)(param_1 < uVar7)" (parenthesized_expression "(param_2 - iVar3)" (( "(") (binary_expression "param_2 - iVar3" (identifier "param_2") (- "-") (identifier "iVar3")) () ")")) (- "-") (call_expression "(uint)(param_1 < uVar7)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_1 < uVar7)" (( "(") (binary_expression "param_1 < uVar7" (identifier "param_1") (< "<") (identifier "uVar7")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n        do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);\n      }" ({ "{") (do_statement "do {\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        } while (param_2 != iVar3 || param_1 != uVar7);" (do "do") (compound_statement "{\n          lVar11 = FUN_00022100(lVar11,0,0);\n          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;\n          bVar9 = uVar7 != 0;\n          uVar7 = uVar7 - 1;\n          iVar3 = iVar3 + -1 + (uint)bVar9;\n          uVar1 = local_34;\n          iVar6 = local_30;\n        }" ({ "{") (expression_statement "lVar11 = FUN_00022100(lVar11,0,0);" (assignment_expression "lVar11 = FUN_00022100(lVar11,0,0)" (identifier "lVar11") (= "=") (call_expression "FUN_00022100(lVar11,0,0)" (identifier "FUN_00022100") (argument_list "(lVar11,0,0)" (( "(") (identifier "lVar11") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;" (if "if") (parenthesized_expression "(((DAT_000419f8 & 3) != 0) || (lVar11 == -1))" (( "(") (binary_expression "((DAT_000419f8 & 3) != 0) || (lVar11 == -1)" (parenthesized_expression "((DAT_000419f8 & 3) != 0)" (( "(") (binary_expression "(DAT_000419f8 & 3) != 0" (parenthesized_expression "(DAT_000419f8 & 3)" (( "(") (binary_expression "DAT_000419f8 & 3" (identifier "DAT_000419f8") (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(lVar11 == -1)" (( "(") (binary_expression "lVar11 == -1" (identifier "lVar11") (== "==") (number_literal "-1")) () ")"))) () ")")) (goto_statement "goto LAB_00022aee;" (goto "goto") (statement_identifier "LAB_00022aee") (; ";"))) (expression_statement "bVar9 = uVar7 != 0;" (assignment_expression "bVar9 = uVar7 != 0" (identifier "bVar9") (= "=") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0"))) (; ";")) (expression_statement "uVar7 = uVar7 - 1;" (assignment_expression "uVar7 = uVar7 - 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 - 1" (identifier "uVar7") (- "-") (number_literal "1"))) (; ";")) (expression_statement "iVar3 = iVar3 + -1 + (uint)bVar9;" (assignment_expression "iVar3 = iVar3 + -1 + (uint)bVar9" (identifier "iVar3") (= "=") (binary_expression "iVar3 + -1 + (uint)bVar9" (binary_expression "iVar3 + -1" (identifier "iVar3") (+ "+") (number_literal "-1")) (+ "+") (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9")))) (; ";")) (expression_statement "uVar1 = local_34;" (assignment_expression "uVar1 = local_34" (identifier "uVar1") (= "=") (identifier "local_34")) (; ";")) (expression_statement "iVar6 = local_30;" (assignment_expression "iVar6 = local_30" (identifier "iVar6") (= "=") (identifier "local_30")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 != iVar3 || param_1 != uVar7)" (( "(") (binary_expression "param_2 != iVar3 || param_1 != uVar7" (binary_expression "param_2 != iVar3" (identifier "param_2") (!= "!=") (identifier "iVar3")) (|| "||") (binary_expression "param_1 != uVar7" (identifier "param_1") (!= "!=") (identifier "uVar7"))) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00022b51;" (goto "goto") (statement_identifier "LAB_00022b51") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_00022aee:\n  uVar2 = 0xffffffff;" (statement_identifier "LAB_00022aee") (: ":") (expression_statement "uVar2 = 0xffffffff;" (assignment_expression "uVar2 = 0xffffffff" (identifier "uVar2") (= "=") (number_literal "0xffffffff")) (; ";"))) (expression_statement "uVar4 = 0xffffffff;" (assignment_expression "uVar4 = 0xffffffff" (identifier "uVar4") (= "=") (number_literal "0xffffffff")) (; ";")) (labeled_statement "LAB_00022af8:\n  return CONCAT44(uVar4,uVar2);" (statement_identifier "LAB_00022af8") (: ":") (return_statement "return CONCAT44(uVar4,uVar2);" (return "return") (call_expression "CONCAT44(uVar4,uVar2)" (identifier "CONCAT44") (argument_list "(uVar4,uVar2)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar2") () ")"))) (; ";"))) (} "}")))

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

type_1 function_1(type_2 var_1)

{
  type_1 pos;
  type_2 linenum_00;
  type_3 uVar1;
  int var_4;
  type_3 uVar3;
  int var_12;
  type_4 *plVar5;
  type_5 var_6;
  int var_11;
  bool bVar8;
  type_1 var_8;
  type_4 *var_10;
  
  uVar1 = 0;
  uVar3 = 0;
  if ((int)(type_5)(1 < (type_5)var_1) <= -var_1._4_4_) goto LAB_00022af8;
  var_10 = anchor.next;
  if (anchor.next == &anchor) {
LAB_00022c0f:
    plVar5 = anchor.prev;
    var_10 = &anchor;
    if (var_1 == var_2(anchor.line._4_4_,(type_3)anchor.line)) {
LAB_00022b37:
      return var_10->pos;
    }
LAB_00022a75:
    var_4 = var_3(plVar5->pos);
    if (var_4 == 0) {
      var_4 = *(int *)((int)&plVar5->line + 4);
      var_6 = (type_5)plVar5->line;
      linenum_00 = plVar5->line;
      pos = plVar5->pos;
      var_8 = plVar5->pos;
      if ((var_5(var_4,var_1._4_4_) !=
          var_5(var_4 - var_1._4_4_,(type_5)(var_6 < (type_5)var_1))) !=
          (int)((var_4 - var_1._4_4_) - (type_5)(var_6 < (type_5)var_1)) < 0) {
        do {
          var_8 = var_7(var_8,(char **)0x0,(int *)0x0);
          if ((((type_6)sigs & 3) != 0) || (var_8 == -1)) goto LAB_00022aee;
          bVar8 = 0xfffffffe < var_6;
          var_6 = var_6 + 1;
          var_4 = var_4 + (type_5)bVar8;
          pos = var_8;
          linenum_00 = var_1;
        } while (var_1 != var_2(var_4,var_6));
      }
LAB_00022b51:
      var_9(linenum_00,pos);
      return pos;
    }
  }
  else {
    var_4 = *(int *)((int)&(anchor.next)->line + 4);
    var_6 = (type_5)(anchor.next)->line;
    if ((var_5(var_4,var_1._4_4_) !=
        var_5(var_4 - var_1._4_4_,(type_5)(var_6 < (type_5)var_1))) !=
        (int)((var_4 - var_1._4_4_) - (type_5)(var_6 < (type_5)var_1)) < 0) {
      do {
        var_10 = var_10->next;
        if (var_10 == &anchor) goto LAB_00022c0f;
        var_6 = (type_5)var_10->line;
        var_4 = *(int *)((int)&var_10->line + 4);
      } while ((var_5(var_4,var_1._4_4_) !=
               var_5(var_4 - var_1._4_4_,(type_5)(var_6 < (type_5)var_1))) !=
               (int)((var_4 - var_1._4_4_) - (type_5)(var_6 < (type_5)var_1)) < 0);
    }
    if (var_1 == var_2(var_4,var_6)) goto LAB_00022b37;
    plVar5 = var_10->prev;
    var_11 = (var_1._4_4_ - *(int *)((int)&plVar5->line + 4)) -
            (type_5)((type_5)var_1 < (type_5)plVar5->line);
    var_12 = (var_4 - var_1._4_4_) - (type_5)(var_6 < (type_5)var_1);
    var_6 = (type_5)((type_5)var_1 - (int)plVar5->line < var_6 - (type_5)var_1);
    var_4 = var_11 - var_12;
    if ((var_5(var_11,var_12) != var_5(var_4,var_6)) != (int)(var_4 - var_6) < 0)
    goto LAB_00022a75;
    var_4 = var_3(var_10->pos);
    if (var_4 == 0) {
      var_6 = (type_5)var_10->line;
      var_4 = *(int *)((int)&var_10->line + 4);
      linenum_00 = var_10->line;
      pos = var_10->pos;
      var_8 = var_10->pos;
      if ((var_5(var_1._4_4_,var_4) !=
          var_5(var_1._4_4_ - var_4,(type_5)((type_5)var_1 < var_6))) !=
          (int)((var_1._4_4_ - var_4) - (type_5)((type_5)var_1 < var_6)) < 0) {
        do {
          var_8 = var_13(var_8,(char **)0x0,(int *)0x0);
          if ((((type_6)sigs & 3) != 0) || (var_8 == -1)) goto LAB_00022aee;
          bVar8 = var_6 != 0;
          var_6 = var_6 - 1;
          var_4 = var_4 + -1 + (type_5)bVar8;
          pos = var_8;
          linenum_00 = var_1;
        } while (var_1 != var_2(var_4,var_6));
      }
      goto LAB_00022b51;
    }
  }
LAB_00022aee:
  uVar1 = 0xffffffff;
  uVar3 = 0xffffffff;
LAB_00022af8:
  return var_2(uVar3,uVar1);
}


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

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

longlong MASKED(uint param_1,int param_2)

{
  uint uVar1;
  undefined4 uVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  int iVar6;
  uint uVar7;
  int iVar8;
  bool bVar9;
  longlong lVar10;
  longlong lVar11;
  uint local_34;
  int local_30;
  undefined4 *local_2c;
  
  local_34 = param_1;
  local_30 = param_2;
  uVar2 = 0;
  uVar4 = 0;
  if ((int)(uint)(1 < param_1) <= -param_2) goto LAB_00022af8;
  local_2c = DAT_00040740;
  if ((undefined4 **)DAT_00040740 == &DAT_00040740) {
LAB_00022c0f:
    iVar6 = DAT_00040744;
    local_2c = &DAT_00040740;
    if (DAT_0004075c == param_2 && DAT_00040758 == param_1) {
LAB_00022b37:
      return *(longlong *)(local_2c + 2);
    }
LAB_00022a75:
    iVar3 = FUN_00015290(*(undefined4 *)(iVar6 + 8),*(undefined4 *)(iVar6 + 0xc));
    if (iVar3 == 0) {
      iVar3 = *(int *)(iVar6 + 0x1c);
      uVar7 = *(uint *)(iVar6 + 0x18);
      lVar11 = *(longlong *)(iVar6 + 8);
      lVar10 = *(longlong *)(iVar6 + 8);
      uVar1 = uVar7;
      iVar6 = iVar3;
      if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=
          (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {
        do {
          lVar10 = FUN_00021fd0(lVar10,0,0);
          if (((DAT_000419f8 & 3) != 0) || (lVar10 == -1)) goto LAB_00022aee;
          bVar9 = 0xfffffffe < uVar7;
          uVar7 = uVar7 + 1;
          iVar3 = iVar3 + (uint)bVar9;
          uVar1 = local_34;
          iVar6 = local_30;
          lVar11 = lVar10;
        } while (param_2 != iVar3 || param_1 != uVar7);
      }
LAB_00022b51:
      local_30 = iVar6;
      local_34 = uVar1;
      FUN_00022420(local_34,local_30,lVar11);
      return lVar11;
    }
  }
  else {
    iVar3 = DAT_00040740[7];
    uVar7 = DAT_00040740[6];
    if ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=
        (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0) {
      do {
        local_2c = (undefined4 *)*local_2c;
        if ((undefined4 **)local_2c == &DAT_00040740) goto LAB_00022c0f;
        uVar7 = local_2c[6];
        iVar3 = local_2c[7];
      } while ((SBORROW4(iVar3,param_2) != SBORROW4(iVar3 - param_2,(uint)(uVar7 < param_1))) !=
               (int)((iVar3 - param_2) - (uint)(uVar7 < param_1)) < 0);
    }
    if (param_2 == iVar3 && param_1 == uVar7) goto LAB_00022b37;
    iVar6 = local_2c[1];
    iVar8 = (param_2 - *(int *)(iVar6 + 0x1c)) - (uint)(param_1 < *(uint *)(iVar6 + 0x18));
    iVar5 = (iVar3 - param_2) - (uint)(uVar7 < param_1);
    uVar7 = (uint)(param_1 - *(uint *)(iVar6 + 0x18) < uVar7 - param_1);
    iVar3 = iVar8 - iVar5;
    if ((SBORROW4(iVar8,iVar5) != SBORROW4(iVar3,uVar7)) != (int)(iVar3 - uVar7) < 0)
    goto LAB_00022a75;
    iVar3 = FUN_00015290(local_2c[2],local_2c[3]);
    if (iVar3 == 0) {
      uVar7 = local_2c[6];
      iVar3 = local_2c[7];
      lVar11 = *(longlong *)(local_2c + 2);
      uVar1 = uVar7;
      iVar6 = iVar3;
      if ((SBORROW4(param_2,iVar3) != SBORROW4(param_2 - iVar3,(uint)(param_1 < uVar7))) !=
          (int)((param_2 - iVar3) - (uint)(param_1 < uVar7)) < 0) {
        do {
          lVar11 = FUN_00022100(lVar11,0,0);
          if (((DAT_000419f8 & 3) != 0) || (lVar11 == -1)) goto LAB_00022aee;
          bVar9 = uVar7 != 0;
          uVar7 = uVar7 - 1;
          iVar3 = iVar3 + -1 + (uint)bVar9;
          uVar1 = local_34;
          iVar6 = local_30;
        } while (param_2 != iVar3 || param_1 != uVar7);
      }
      goto LAB_00022b51;
    }
  }
LAB_00022aee:
  uVar2 = 0xffffffff;
  uVar4 = 0xffffffff;
LAB_00022af8:
  return CONCAT44(uVar4,uVar2);
}

