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

int __regparm3 vdbeIncrPopulate(IncrMerger *pIncr)

{
  int iVar1;
  int iVar2;
  uint uVar3;
  MergeEngine *pMVar4;
  PmaReader *pPVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  int iVar15;
  int in_GS_OFFSET;
  undefined8 uVar16;
  sqlite3_file *psVar17;
  undefined4 in_stack_ffffff88;
  int dummy;
  PmaWriter writer;
  
  iVar2 = *(int *)((int)&pIncr->iStartOff + 4);
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  uVar3 = (uint)pIncr->iStartOff;
  pMVar4 = pIncr->pMerger;
  iVar7 = pIncr->pTask->pSorter->pgsz;
  psVar17 = pIncr->aFile[1].pFd;
  uVar6 = 0;
  do {
    *(undefined4 *)((int)&writer.eFWErr + uVar6) = 0;
    uVar6 = uVar6 + 4;
  } while (uVar6 < 0x20);
  writer.aBuffer = (u8 *)sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17));
  if (writer.aBuffer == (u8 *)0x0) {
    writer.eFWErr = 7;
  }
  else {
    uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);
    writer.iBufStart = (int)uVar16;
    writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;
    writer.iWriteOff._4_4_ =
         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);
    writer.nBuffer = iVar7;
    writer.iBufEnd = writer.iBufStart;
    writer.pFd = psVar17;
  }
  do {
    iVar7 = pMVar4->aTree[1];
    pPVar5 = pMVar4->aReadr;
    uVar6 = pPVar5[iVar7].nKey;
    if (pPVar5[iVar7].pFd == (sqlite3_file *)0x0) {
LAB_0003b3e9:
      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);
      goto LAB_0003b3fb;
    }
    uVar8 = (int)uVar6 >> 0x1f;
    uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6;
    uVar10 = uVar6 >> 7 | uVar8 << 0x19;
    uVar13 = uVar8 >> 7;
    if (uVar13 == 0 && uVar10 == 0) {
      uVar11 = 1;
      iVar14 = 0;
    }
    else {
      uVar11 = 1;
      do {
        uVar10 = uVar10 >> 7 | uVar13 << 0x19;
        uVar13 = uVar13 >> 7;
        uVar11 = uVar11 + 1;
      } while (uVar13 != 0 || uVar10 != 0);
      iVar14 = (int)uVar11 >> 0x1f;
    }
    iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +
                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +
                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +
             (uint)CARRY4(uVar11,uVar12);
    uVar8 = pIncr->mxSz;
    iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3);
    uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12);
    iVar14 = iVar9 - iVar15;
    if ((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)
    goto LAB_0003b3e9;
    vdbePmaWriteVarint(&writer,(longlong)(int)uVar6);
    vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6);
    iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy);
  } while (iVar7 == 0);
  vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);
LAB_0003b3fb:
  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return iVar7;
}



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

int __regparm3 FUN_0003b230(int *param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int in_GS_OFFSET;
  undefined8 uVar15;
  int local_40 [8];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x3b23b;
  iVar1 = param_1[3];
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar2 = param_1[2];
  iVar3 = param_1[1];
  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);
  uVar8 = param_1[10];
  uVar4 = 0;
  do {
    *(undefined4 *)((int)local_40 + uVar4) = 0;
    uVar4 = uVar4 + 4;
  } while (uVar4 < 0x20);
  local_40[1] = FUN_00024830();
  if (local_40[1] == 0) {
    local_40[0] = 7;
  }
  else {
    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);
    local_40[3] = (int)uVar15;
    local_40[5] = uVar2 - local_40[3];
    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);
    local_40[2] = iVar7;
    local_40[4] = local_40[3];
    local_40[7] = uVar8;
  }
  do {
    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);
    uVar4 = *(uint *)(iVar7 + 0x14);
    if (*(int *)(iVar7 + 0x18) == 0) {
LAB_0003b3e9:
      iVar7 = FUN_00025aa0(uVar8);
      goto LAB_0003b3fb;
    }
    uVar5 = (int)uVar4 >> 0x1f;
    uVar10 = local_40[4] + local_40[5] + uVar4;
    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +
             (uint)CARRY4(local_40[4] + local_40[5],uVar4);
    uVar8 = uVar4 >> 7 | uVar5 << 0x19;
    uVar11 = uVar5 >> 7;
    if (uVar11 == 0 && uVar8 == 0) {
      uVar9 = 1;
      iVar13 = 0;
    }
    else {
      uVar9 = 1;
      do {
        uVar8 = uVar8 >> 7 | uVar11 << 0x19;
        uVar11 = uVar11 >> 7;
        uVar9 = uVar9 + 1;
      } while (uVar11 != 0 || uVar8 != 0);
      iVar13 = (int)uVar9 >> 0x1f;
    }
    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);
    uVar8 = param_1[4];
    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);
    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);
    iVar13 = iVar6 - iVar14;
    uVar8 = uVar4;
    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)
    goto LAB_0003b3e9;
    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);
    FUN_000215c0();
    iVar7 = FUN_0003b610();
    uVar8 = uVar4;
  } while (iVar7 == 0);
  FUN_00025aa0();
LAB_0003b3fb:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f4bf0();
  }
  return iVar7;
}


PUSH EBP
MOV ECX,EAX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00014cf0
ADD EBX,0x10dc99
SUB ESP,0x6c
MOV EDX,dword ptr [ECX + 0xc]
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x5c],EAX
XOR EAX,EAX
MOV EAX,dword ptr [ECX + 0x8]
MOV dword ptr [ESP + 0x1c],EDX
XOR EDX,EDX
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ECX + 0x4]
MOV dword ptr [ESP + 0x28],EAX
MOV EAX,dword ptr [ECX]
MOV EAX,dword ptr [EAX + 0x8]
MOV EBP,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [ECX + 0x28]
LEA ECX,[ESP + 0x3c]
MOV dword ptr [ESP + 0x24],ECX
MOV dword ptr [ESP],EAX
XOR EAX,EAX
MOV dword ptr [ECX + EAX*0x1],EDX
ADD EAX,0x4
CMP EAX,0x20
JC 0x0003b283
MOV EDI,EBP
MOV EAX,EBP
SAR EDI,0x1f
MOV EDX,EDI
CALL 0x00024830
MOV dword ptr [ESP + 0x40],EAX
TEST EAX,EAX
JZ 0x0003b426
PUSH EDI
PUSH EBP
MOV ESI,dword ptr [ESP + 0x20]
MOV EDI,dword ptr [ESP + 0x24]
PUSH EDI
PUSH ESI
CALL 0x000f4340
ADD ESP,0x10
SUB ESI,EAX
MOV ECX,EAX
MOV dword ptr [ESP + 0x48],EAX
MOV dword ptr [ESP + 0x4c],EAX
MOV EAX,ESI
SBB EDI,EDX
MOV dword ptr [ESP + 0x50],ESI
MOV ESI,dword ptr [ESP]
MOV EDX,EDI
MOV dword ptr [ESP + 0x54],EDI
MOV dword ptr [ESP + 0x44],EBP
MOV dword ptr [ESP + 0x58],ESI
LEA ESI,[ESP + 0x38]
MOV dword ptr [ESP + 0x2c],ESI
MOV ESI,ECX
LEA ESI,[ESI]
NOP
MOV EDI,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [EDI + 0x8]
IMUL EBX,dword ptr [ECX + 0x4],0x34
ADD EBX,dword ptr [EDI + 0xc]
MOV EDI,ESI
MOV ECX,EBX
MOV dword ptr [ESP + 0x10],EBX
MOV EBX,dword ptr [EBX + 0x14]
SAR EDI,0x1f
MOV EBP,dword ptr [ECX + 0x18]
ADD ESI,EAX
MOV dword ptr [ESP + 0x14],EBX
ADC EDI,EDX
TEST EBP,EBP
JZ 0x0003b3e9
MOV ECX,EBX
MOV EDX,EBX
MOV dword ptr [ESP],EBX
SAR ECX,0x1f
ADD ESI,EBX
MOV dword ptr [ESP + 0x8],ESI
MOV ESI,ECX
ADC EDI,ECX
SHRD EBX,ECX,0x7
SHR ESI,0x7
MOV dword ptr [ESP + 0xc],EDI
MOV EDI,ESI
MOV dword ptr [ESP + 0x4],ECX
OR EDI,EBX
JZ 0x0003b3e0
MOV EBP,0x1
LEA ESI,[ESI]
SHRD EBX,ESI,0x7
SHR ESI,0x7
ADD EBP,0x1
MOV EDI,ESI
OR EDI,EBX
JNZ 0x0003b358
MOV dword ptr [ESP],EDX
MOV EDI,EBP
MOV ESI,EBP
MOV dword ptr [ESP + 0x4],ECX
SAR EDI,0x1f
MOV EBP,dword ptr [ESP + 0x20]
ADD ESI,dword ptr [ESP + 0x8]
ADC EDI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EBP + 0x10]
CDQ
ADD EAX,dword ptr [ESP + 0x18]
ADC EDX,dword ptr [ESP + 0x1c]
CMP EAX,ESI
MOV EAX,EDX
SBB EAX,EDI
JL 0x0003b3e9
MOV ESI,dword ptr [ESP + 0x24]
MOV EDX,dword ptr [ESP]
MOV ECX,dword ptr [ESP + 0x4]
MOV EAX,ESI
CALL 0x000289e0
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [EAX + 0x20]
MOV EAX,ESI
CALL 0x000215c0
MOV EAX,dword ptr [EBP + 0x4]
MOV EDX,dword ptr [ESP + 0x2c]
CALL 0x0003b610
TEST EAX,EAX
JNZ 0x0003b412
MOV EAX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x54]
MOV ESI,dword ptr [ESP + 0x4c]
JMP 0x0003b2f0
MOV ESI,0x1
XOR EDI,EDI
JMP 0x0003b376
MOV EDX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x24]
ADD EDX,0x2c
CALL 0x00025aa0
MOV EBX,EAX
MOV ECX,dword ptr [ESP + 0x5c]
XOR ECX,dword ptr GS:[0x14]
MOV EAX,EBX
JNZ 0x0003b43f
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EDX,dword ptr [ESP + 0x20]
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x24]
ADD EDX,0x2c
CALL 0x00025aa0
JMP 0x0003b3fb
MOV EAX,dword ptr [ESP + 0x50]
MOV EDX,dword ptr [ESP + 0x54]
MOV dword ptr [ESP + 0x3c],0x7
MOV ECX,dword ptr [ESP + 0x4c]
JMP 0x0003b2e1
CALL 0x000f4bf0
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_0003b230(int *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }\n  return iVar7;\n}\n\n" comment (function_definition "int __regparm3 FUN_0003b230(int *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }\n  return iVar7;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0003b230(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }\n  return iVar7;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar15;" type_identifier identifier ;) (declaration "int local_40 [8];" primitive_type (array_declarator "local_40 [8]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x3b23b;" (assignment_expression "uStack_14 = 0x3b23b" identifier = number_literal) ;) (expression_statement "iVar1 = param_1[3];" (assignment_expression "iVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);" (assignment_expression "iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc)" identifier = (pointer_expression "*(int *)(*(int *)(*param_1 + 8) + 0xc)" * (cast_expression "(int *)(*(int *)(*param_1 + 8) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 8) + 0xc)" ( (binary_expression "*(int *)(*param_1 + 8) + 0xc" (pointer_expression "*(int *)(*param_1 + 8)" * (cast_expression "(int *)(*param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar8 = param_1[10];" (assignment_expression "uVar8 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);" do (compound_statement "{\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)local_40 + uVar4) = 0;" (assignment_expression "*(undefined4 *)((int)local_40 + uVar4) = 0" (pointer_expression "*(undefined4 *)((int)local_40 + uVar4)" * (cast_expression "(undefined4 *)((int)local_40 + uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + uVar4)" ( (binary_expression "(int)local_40 + uVar4" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar4 = uVar4 + 4;" (assignment_expression "uVar4 = uVar4 + 4" identifier = (binary_expression "uVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < 0x20)" ( (binary_expression "uVar4 < 0x20" identifier < number_literal) )) ;) (expression_statement "local_40[1] = FUN_00024830();" (assignment_expression "local_40[1] = FUN_00024830()" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (call_expression "FUN_00024830()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" if (parenthesized_expression "(local_40[1] == 0)" ( (binary_expression "local_40[1] == 0" (subscript_expression "local_40[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    local_40[0] = 7;\n  }" { (expression_statement "local_40[0] = 7;" (assignment_expression "local_40[0] = 7" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" else (compound_statement "{\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" { (expression_statement "uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);" (assignment_expression "uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" identifier = (call_expression "FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" identifier (argument_list "(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "iVar7 >> 0x1f" identifier >> number_literal) )))) ;) (expression_statement "local_40[3] = (int)uVar15;" (assignment_expression "local_40[3] = (int)uVar15" (subscript_expression "local_40[3]" identifier [ number_literal ]) = (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_40[5] = uVar2 - local_40[3];" (assignment_expression "local_40[5] = uVar2 - local_40[3]" (subscript_expression "local_40[5]" identifier [ number_literal ]) = (binary_expression "uVar2 - local_40[3]" identifier - (subscript_expression "local_40[3]" identifier [ number_literal ]))) ;) (expression_statement "local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);" (assignment_expression "local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3])" (subscript_expression "local_40[6]" identifier [ number_literal ]) = (binary_expression "(iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3])" (parenthesized_expression "(iVar1 - (int)((ulonglong)uVar15 >> 0x20))" ( (binary_expression "iVar1 - (int)((ulonglong)uVar15 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)uVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar15 >> 0x20)" ( (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(uVar2 < (uint)local_40[3])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < (uint)local_40[3])" ( (binary_expression "uVar2 < (uint)local_40[3]" identifier < (cast_expression "(uint)local_40[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))) ))))) ;) (expression_statement "local_40[2] = iVar7;" (assignment_expression "local_40[2] = iVar7" (subscript_expression "local_40[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_40[4] = local_40[3];" (assignment_expression "local_40[4] = local_40[3]" (subscript_expression "local_40[4]" identifier [ number_literal ]) = (subscript_expression "local_40[3]" identifier [ number_literal ])) ;) (expression_statement "local_40[7] = uVar8;" (assignment_expression "local_40[7] = uVar8" (subscript_expression "local_40[7]" identifier [ number_literal ]) = identifier) ;) }))) (do_statement "do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);" do (compound_statement "{\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  }" { (expression_statement "iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);" (assignment_expression "iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc)" identifier = (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc)" (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) * 0x34" (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 4)" * (cast_expression "(int *)(*(int *)(iVar3 + 8) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 8) + 4)" ( (binary_expression "*(int *)(iVar3 + 8) + 4" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) + number_literal) )))) * number_literal) + (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar4 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }" if (parenthesized_expression "(*(int *)(iVar7 + 0x18) == 0)" ( (binary_expression "*(int *)(iVar7 + 0x18) == 0" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }" { (labeled_statement "LAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);" statement_identifier : (expression_statement "iVar7 = FUN_00025aa0(uVar8);" (assignment_expression "iVar7 = FUN_00025aa0(uVar8)" identifier = (call_expression "FUN_00025aa0(uVar8)" identifier (argument_list "(uVar8)" ( identifier )))) ;)) (goto_statement "goto LAB_0003b3fb;" goto statement_identifier ;) })) (expression_statement "uVar5 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar5 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar10 = local_40[4] + local_40[5] + uVar4;" (assignment_expression "uVar10 = local_40[4] + local_40[5] + uVar4" identifier = (binary_expression "local_40[4] + local_40[5] + uVar4" (binary_expression "local_40[4] + local_40[5]" (subscript_expression "local_40[4]" identifier [ number_literal ]) + (subscript_expression "local_40[5]" identifier [ number_literal ])) + identifier)) ;) (expression_statement "iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);" (assignment_expression "iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4)" identifier = (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4)" (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5" (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5])" (binary_expression "(local_40[4] >> 0x1f) + local_40[6]" (parenthesized_expression "(local_40[4] >> 0x1f)" ( (binary_expression "local_40[4] >> 0x1f" (subscript_expression "local_40[4]" identifier [ number_literal ]) >> number_literal) )) + (subscript_expression "local_40[6]" identifier [ number_literal ])) + (cast_expression "(uint)CARRY4(local_40[4],local_40[5])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_40[4],local_40[5])" identifier (argument_list "(local_40[4],local_40[5])" ( (subscript_expression "local_40[4]" identifier [ number_literal ]) , (subscript_expression "local_40[5]" identifier [ number_literal ]) ))))) + identifier) + (cast_expression "(uint)CARRY4(local_40[4] + local_40[5],uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_40[4] + local_40[5],uVar4)" identifier (argument_list "(local_40[4] + local_40[5],uVar4)" ( (binary_expression "local_40[4] + local_40[5]" (subscript_expression "local_40[4]" identifier [ number_literal ]) + (subscript_expression "local_40[5]" identifier [ number_literal ])) , identifier )))))) ;) (expression_statement "uVar8 = uVar4 >> 7 | uVar5 << 0x19;" (assignment_expression "uVar8 = uVar4 >> 7 | uVar5 << 0x19" identifier = (binary_expression "uVar4 >> 7 | uVar5 << 0x19" (binary_expression "uVar4 >> 7" identifier >> number_literal) | (binary_expression "uVar5 << 0x19" identifier << number_literal))) ;) (expression_statement "uVar11 = uVar5 >> 7;" (assignment_expression "uVar11 = uVar5 >> 7" identifier = (binary_expression "uVar5 >> 7" identifier >> number_literal)) ;) (if_statement "if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" if (parenthesized_expression "(uVar11 == 0 && uVar8 == 0)" ( (binary_expression "uVar11 == 0 && uVar8 == 0" (binary_expression "uVar11 == 0" identifier == number_literal) && (binary_expression "uVar8 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar9 = 1;\n      iVar13 = 0;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" else (compound_statement "{\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (do_statement "do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);" do (compound_statement "{\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      }" { (expression_statement "uVar8 = uVar8 >> 7 | uVar11 << 0x19;" (assignment_expression "uVar8 = uVar8 >> 7 | uVar11 << 0x19" identifier = (binary_expression "uVar8 >> 7 | uVar11 << 0x19" (binary_expression "uVar8 >> 7" identifier >> number_literal) | (binary_expression "uVar11 << 0x19" identifier << number_literal))) ;) (expression_statement "uVar11 = uVar11 >> 7;" (assignment_expression "uVar11 = uVar11 >> 7" identifier = (binary_expression "uVar11 >> 7" identifier >> number_literal)) ;) (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 != 0 || uVar8 != 0)" ( (binary_expression "uVar11 != 0 || uVar8 != 0" (binary_expression "uVar11 != 0" identifier != number_literal) || (binary_expression "uVar8 != 0" identifier != number_literal)) )) ;) (expression_statement "iVar13 = (int)uVar9 >> 0x1f;" (assignment_expression "iVar13 = (int)uVar9 >> 0x1f" identifier = (binary_expression "(int)uVar9 >> 0x1f" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }))) (expression_statement "iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);" (assignment_expression "iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10)" identifier = (binary_expression "iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10)" (binary_expression "iVar13 + iVar12" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar9,uVar10)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar9,uVar10)" identifier (argument_list "(uVar9,uVar10)" ( identifier , identifier )))))) ;) (expression_statement "uVar8 = param_1[4];" (assignment_expression "uVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);" (assignment_expression "iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2)" identifier = (binary_expression "((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2)" (binary_expression "((int)uVar8 >> 0x1f) + iVar1" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar8,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8,uVar2)" identifier (argument_list "(uVar8,uVar2)" ( identifier , identifier )))))) ;) (expression_statement "uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);" (assignment_expression "uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10)" identifier = (call_expression "(uint)(uVar8 + uVar2 < uVar9 + uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 + uVar2 < uVar9 + uVar10)" ( (binary_expression "uVar8 + uVar2 < uVar9 + uVar10" (binary_expression "uVar8 + uVar2" identifier + identifier) < (binary_expression "uVar9 + uVar10" identifier + identifier)) )))) ;) (expression_statement "iVar13 = iVar6 - iVar14;" (assignment_expression "iVar13 = iVar6 - iVar14" identifier = (binary_expression "iVar6 - iVar14" identifier - identifier)) ;) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;" if (parenthesized_expression "((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)" ( (binary_expression "(SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0" (parenthesized_expression "(SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11))" ( (binary_expression "SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)" (call_expression "SBORROW4(iVar6,iVar14)" identifier (argument_list "(iVar6,iVar14)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar13,uVar11)" identifier (argument_list "(iVar13,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar13 - uVar11) < 0" (cast_expression "(int)(iVar13 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar13 - uVar11)" ( (binary_expression "iVar13 - uVar11" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_0003b3e9;" goto statement_identifier ;)) (expression_statement "FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);" (call_expression "FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4)" identifier (argument_list "(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000215c0();" (call_expression "FUN_000215c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar7 = FUN_0003b610();" (assignment_expression "iVar7 = FUN_0003b610()" identifier = (call_expression "FUN_0003b610()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) ;) (expression_statement "FUN_00025aa0();" (call_expression "FUN_00025aa0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000f4bf0();\n  }" { comment (expression_statement "FUN_000f4bf0();" (call_expression "FUN_000f4bf0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar7;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 vdbeIncrPopulate(IncrMerger *pIncr)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  MergeEngine *pMVar4;\n  PmaReader *pPVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  int iVar15;\n  int in_GS_OFFSET;\n  undefined8 uVar16;\n  sqlite3_file *psVar17;\n  undefined4 in_stack_ffffff88;\n  int dummy;\n  PmaWriter writer;\n  \n  iVar2 = *(int *)((int)&pIncr->iStartOff + 4);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = (uint)pIncr->iStartOff;\n  pMVar4 = pIncr->pMerger;\n  iVar7 = pIncr->pTask->pSorter->pgsz;\n  psVar17 = pIncr->aFile[1].pFd;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((int)&writer.eFWErr + uVar6) = 0;\n    uVar6 = uVar6 + 4;\n  } while (uVar6 < 0x20);\n  writer.aBuffer = (u8 *)sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17));\n  if (writer.aBuffer == (u8 *)0x0) {\n    writer.eFWErr = 7;\n  }\n  else {\n    uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);\n    writer.iBufStart = (int)uVar16;\n    writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;\n    writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);\n    writer.nBuffer = iVar7;\n    writer.iBufEnd = writer.iBufStart;\n    writer.pFd = psVar17;\n  }\n  do {\n    iVar7 = pMVar4->aTree[1];\n    pPVar5 = pMVar4->aReadr;\n    uVar6 = pPVar5[iVar7].nKey;\n    if (pPVar5[iVar7].pFd == (sqlite3_file *)0x0) {\nLAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\n      goto LAB_0003b3fb;\n    }\n    uVar8 = (int)uVar6 >> 0x1f;\n    uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6;\n    uVar10 = uVar6 >> 7 | uVar8 << 0x19;\n    uVar13 = uVar8 >> 7;\n    if (uVar13 == 0 && uVar10 == 0) {\n      uVar11 = 1;\n      iVar14 = 0;\n    }\n    else {\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }\n    iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12);\n    uVar8 = pIncr->mxSz;\n    iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3);\n    uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12);\n    iVar14 = iVar9 - iVar15;\n    if ((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)\n    goto LAB_0003b3e9;\n    vdbePmaWriteVarint(&writer,(longlong)(int)uVar6);\n    vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6);\n    iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy);\n  } while (iVar7 == 0);\n  vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\nLAB_0003b3fb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar7;\n}\n\n" comment (function_definition "int __regparm3 vdbeIncrPopulate(IncrMerger *pIncr)\n\n{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  MergeEngine *pMVar4;\n  PmaReader *pPVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  int iVar15;\n  int in_GS_OFFSET;\n  undefined8 uVar16;\n  sqlite3_file *psVar17;\n  undefined4 in_stack_ffffff88;\n  int dummy;\n  PmaWriter writer;\n  \n  iVar2 = *(int *)((int)&pIncr->iStartOff + 4);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = (uint)pIncr->iStartOff;\n  pMVar4 = pIncr->pMerger;\n  iVar7 = pIncr->pTask->pSorter->pgsz;\n  psVar17 = pIncr->aFile[1].pFd;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((int)&writer.eFWErr + uVar6) = 0;\n    uVar6 = uVar6 + 4;\n  } while (uVar6 < 0x20);\n  writer.aBuffer = (u8 *)sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17));\n  if (writer.aBuffer == (u8 *)0x0) {\n    writer.eFWErr = 7;\n  }\n  else {\n    uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);\n    writer.iBufStart = (int)uVar16;\n    writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;\n    writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);\n    writer.nBuffer = iVar7;\n    writer.iBufEnd = writer.iBufStart;\n    writer.pFd = psVar17;\n  }\n  do {\n    iVar7 = pMVar4->aTree[1];\n    pPVar5 = pMVar4->aReadr;\n    uVar6 = pPVar5[iVar7].nKey;\n    if (pPVar5[iVar7].pFd == (sqlite3_file *)0x0) {\nLAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\n      goto LAB_0003b3fb;\n    }\n    uVar8 = (int)uVar6 >> 0x1f;\n    uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6;\n    uVar10 = uVar6 >> 7 | uVar8 << 0x19;\n    uVar13 = uVar8 >> 7;\n    if (uVar13 == 0 && uVar10 == 0) {\n      uVar11 = 1;\n      iVar14 = 0;\n    }\n    else {\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }\n    iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12);\n    uVar8 = pIncr->mxSz;\n    iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3);\n    uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12);\n    iVar14 = iVar9 - iVar15;\n    if ((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)\n    goto LAB_0003b3e9;\n    vdbePmaWriteVarint(&writer,(longlong)(int)uVar6);\n    vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6);\n    iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy);\n  } while (iVar7 == 0);\n  vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\nLAB_0003b3fb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar7;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "vdbeIncrPopulate(IncrMerger *pIncr)" identifier (parameter_list "(IncrMerger *pIncr)" ( (parameter_declaration "IncrMerger *pIncr" type_identifier (pointer_declarator "*pIncr" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  uint uVar3;\n  MergeEngine *pMVar4;\n  PmaReader *pPVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  int iVar15;\n  int in_GS_OFFSET;\n  undefined8 uVar16;\n  sqlite3_file *psVar17;\n  undefined4 in_stack_ffffff88;\n  int dummy;\n  PmaWriter writer;\n  \n  iVar2 = *(int *)((int)&pIncr->iStartOff + 4);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar3 = (uint)pIncr->iStartOff;\n  pMVar4 = pIncr->pMerger;\n  iVar7 = pIncr->pTask->pSorter->pgsz;\n  psVar17 = pIncr->aFile[1].pFd;\n  uVar6 = 0;\n  do {\n    *(undefined4 *)((int)&writer.eFWErr + uVar6) = 0;\n    uVar6 = uVar6 + 4;\n  } while (uVar6 < 0x20);\n  writer.aBuffer = (u8 *)sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17));\n  if (writer.aBuffer == (u8 *)0x0) {\n    writer.eFWErr = 7;\n  }\n  else {\n    uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);\n    writer.iBufStart = (int)uVar16;\n    writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;\n    writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);\n    writer.nBuffer = iVar7;\n    writer.iBufEnd = writer.iBufStart;\n    writer.pFd = psVar17;\n  }\n  do {\n    iVar7 = pMVar4->aTree[1];\n    pPVar5 = pMVar4->aReadr;\n    uVar6 = pPVar5[iVar7].nKey;\n    if (pPVar5[iVar7].pFd == (sqlite3_file *)0x0) {\nLAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\n      goto LAB_0003b3fb;\n    }\n    uVar8 = (int)uVar6 >> 0x1f;\n    uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6;\n    uVar10 = uVar6 >> 7 | uVar8 << 0x19;\n    uVar13 = uVar8 >> 7;\n    if (uVar13 == 0 && uVar10 == 0) {\n      uVar11 = 1;\n      iVar14 = 0;\n    }\n    else {\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }\n    iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12);\n    uVar8 = pIncr->mxSz;\n    iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3);\n    uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12);\n    iVar14 = iVar9 - iVar15;\n    if ((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)\n    goto LAB_0003b3e9;\n    vdbePmaWriteVarint(&writer,(longlong)(int)uVar6);\n    vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6);\n    iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy);\n  } while (iVar7 == 0);\n  vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\nLAB_0003b3fb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return iVar7;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "MergeEngine *pMVar4;" type_identifier (pointer_declarator "*pMVar4" * identifier) ;) (declaration "PmaReader *pPVar5;" type_identifier (pointer_declarator "*pPVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "sqlite3_file *psVar17;" type_identifier (pointer_declarator "*psVar17" * identifier) ;) (declaration "undefined4 in_stack_ffffff88;" type_identifier identifier ;) (declaration "int dummy;" primitive_type identifier ;) (declaration "PmaWriter writer;" type_identifier identifier ;) (expression_statement "iVar2 = *(int *)((int)&pIncr->iStartOff + 4);" (assignment_expression "iVar2 = *(int *)((int)&pIncr->iStartOff + 4)" identifier = (pointer_expression "*(int *)((int)&pIncr->iStartOff + 4)" * (cast_expression "(int *)((int)&pIncr->iStartOff + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pIncr->iStartOff + 4)" ( (binary_expression "(int)&pIncr->iStartOff + 4" (cast_expression "(int)&pIncr->iStartOff" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pIncr->iStartOff" & (field_expression "pIncr->iStartOff" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = (uint)pIncr->iStartOff;" (assignment_expression "uVar3 = (uint)pIncr->iStartOff" identifier = (cast_expression "(uint)pIncr->iStartOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "pIncr->iStartOff" identifier -> field_identifier))) ;) (expression_statement "pMVar4 = pIncr->pMerger;" (assignment_expression "pMVar4 = pIncr->pMerger" identifier = (field_expression "pIncr->pMerger" identifier -> field_identifier)) ;) (expression_statement "iVar7 = pIncr->pTask->pSorter->pgsz;" (assignment_expression "iVar7 = pIncr->pTask->pSorter->pgsz" identifier = (field_expression "pIncr->pTask->pSorter->pgsz" (field_expression "pIncr->pTask->pSorter" (field_expression "pIncr->pTask" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (expression_statement "psVar17 = pIncr->aFile[1].pFd;" (assignment_expression "psVar17 = pIncr->aFile[1].pFd" identifier = (field_expression "pIncr->aFile[1].pFd" (subscript_expression "pIncr->aFile[1]" (field_expression "pIncr->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)&writer.eFWErr + uVar6) = 0;\n    uVar6 = uVar6 + 4;\n  } while (uVar6 < 0x20);" do (compound_statement "{\n    *(undefined4 *)((int)&writer.eFWErr + uVar6) = 0;\n    uVar6 = uVar6 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)&writer.eFWErr + uVar6) = 0;" (assignment_expression "*(undefined4 *)((int)&writer.eFWErr + uVar6) = 0" (pointer_expression "*(undefined4 *)((int)&writer.eFWErr + uVar6)" * (cast_expression "(undefined4 *)((int)&writer.eFWErr + uVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&writer.eFWErr + uVar6)" ( (binary_expression "(int)&writer.eFWErr + uVar6" (cast_expression "(int)&writer.eFWErr" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&writer.eFWErr" & (field_expression "writer.eFWErr" identifier . field_identifier))) + identifier) )))) = number_literal) ;) (expression_statement "uVar6 = uVar6 + 4;" (assignment_expression "uVar6 = uVar6 + 4" identifier = (binary_expression "uVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 < 0x20)" ( (binary_expression "uVar6 < 0x20" identifier < number_literal) )) ;) (expression_statement "writer.aBuffer = (u8 *)sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17));" (assignment_expression "writer.aBuffer = (u8 *)sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17))" (field_expression "writer.aBuffer" identifier . field_identifier) = (cast_expression "(u8 *)sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17))" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3Malloc(CONCAT44(in_stack_ffffff88,psVar17))" identifier (argument_list "(CONCAT44(in_stack_ffffff88,psVar17))" ( (call_expression "CONCAT44(in_stack_ffffff88,psVar17)" identifier (argument_list "(in_stack_ffffff88,psVar17)" ( identifier , identifier ))) ))))) ;) (if_statement "if (writer.aBuffer == (u8 *)0x0) {\n    writer.eFWErr = 7;\n  }\n  else {\n    uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);\n    writer.iBufStart = (int)uVar16;\n    writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;\n    writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);\n    writer.nBuffer = iVar7;\n    writer.iBufEnd = writer.iBufStart;\n    writer.pFd = psVar17;\n  }" if (parenthesized_expression "(writer.aBuffer == (u8 *)0x0)" ( (binary_expression "writer.aBuffer == (u8 *)0x0" (field_expression "writer.aBuffer" identifier . field_identifier) == (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    writer.eFWErr = 7;\n  }" { (expression_statement "writer.eFWErr = 7;" (assignment_expression "writer.eFWErr = 7" (field_expression "writer.eFWErr" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n    uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);\n    writer.iBufStart = (int)uVar16;\n    writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;\n    writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);\n    writer.nBuffer = iVar7;\n    writer.iBufEnd = writer.iBufStart;\n    writer.pFd = psVar17;\n  }" else (compound_statement "{\n    uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);\n    writer.iBufStart = (int)uVar16;\n    writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;\n    writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);\n    writer.nBuffer = iVar7;\n    writer.iBufEnd = writer.iBufStart;\n    writer.pFd = psVar17;\n  }" { (expression_statement "uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f);" (assignment_expression "uVar16 = __moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f)" identifier = (call_expression "__moddi3(uVar3,iVar2,iVar7,iVar7 >> 0x1f)" identifier (argument_list "(uVar3,iVar2,iVar7,iVar7 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "iVar7 >> 0x1f" identifier >> number_literal) )))) ;) (expression_statement "writer.iBufStart = (int)uVar16;" (assignment_expression "writer.iBufStart = (int)uVar16" (field_expression "writer.iBufStart" identifier . field_identifier) = (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart;" (assignment_expression "writer.iWriteOff._0_4_ = uVar3 - writer.iBufStart" (field_expression "writer.iWriteOff._0_4_" (field_expression "writer.iWriteOff" identifier . field_identifier) . field_identifier) = (binary_expression "uVar3 - writer.iBufStart" identifier - (field_expression "writer.iBufStart" identifier . field_identifier))) ;) (expression_statement "writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart);" (assignment_expression "writer.iWriteOff._4_4_ =\n         (iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart)" (field_expression "writer.iWriteOff._4_4_" (field_expression "writer.iWriteOff" identifier . field_identifier) . field_identifier) = (binary_expression "(iVar2 - (int)((ulonglong)uVar16 >> 0x20)) - (uint)(uVar3 < (uint)writer.iBufStart)" (parenthesized_expression "(iVar2 - (int)((ulonglong)uVar16 >> 0x20))" ( (binary_expression "iVar2 - (int)((ulonglong)uVar16 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(uVar3 < (uint)writer.iBufStart)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar3 < (uint)writer.iBufStart)" ( (binary_expression "uVar3 < (uint)writer.iBufStart" identifier < (cast_expression "(uint)writer.iBufStart" ( (type_descriptor "uint" type_identifier) ) (field_expression "writer.iBufStart" identifier . field_identifier))) ))))) ;) (expression_statement "writer.nBuffer = iVar7;" (assignment_expression "writer.nBuffer = iVar7" (field_expression "writer.nBuffer" identifier . field_identifier) = identifier) ;) (expression_statement "writer.iBufEnd = writer.iBufStart;" (assignment_expression "writer.iBufEnd = writer.iBufStart" (field_expression "writer.iBufEnd" identifier . field_identifier) = (field_expression "writer.iBufStart" identifier . field_identifier)) ;) (expression_statement "writer.pFd = psVar17;" (assignment_expression "writer.pFd = psVar17" (field_expression "writer.pFd" identifier . field_identifier) = identifier) ;) }))) (do_statement "do {\n    iVar7 = pMVar4->aTree[1];\n    pPVar5 = pMVar4->aReadr;\n    uVar6 = pPVar5[iVar7].nKey;\n    if (pPVar5[iVar7].pFd == (sqlite3_file *)0x0) {\nLAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\n      goto LAB_0003b3fb;\n    }\n    uVar8 = (int)uVar6 >> 0x1f;\n    uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6;\n    uVar10 = uVar6 >> 7 | uVar8 << 0x19;\n    uVar13 = uVar8 >> 7;\n    if (uVar13 == 0 && uVar10 == 0) {\n      uVar11 = 1;\n      iVar14 = 0;\n    }\n    else {\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }\n    iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12);\n    uVar8 = pIncr->mxSz;\n    iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3);\n    uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12);\n    iVar14 = iVar9 - iVar15;\n    if ((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)\n    goto LAB_0003b3e9;\n    vdbePmaWriteVarint(&writer,(longlong)(int)uVar6);\n    vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6);\n    iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy);\n  } while (iVar7 == 0);" do (compound_statement "{\n    iVar7 = pMVar4->aTree[1];\n    pPVar5 = pMVar4->aReadr;\n    uVar6 = pPVar5[iVar7].nKey;\n    if (pPVar5[iVar7].pFd == (sqlite3_file *)0x0) {\nLAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\n      goto LAB_0003b3fb;\n    }\n    uVar8 = (int)uVar6 >> 0x1f;\n    uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6;\n    uVar10 = uVar6 >> 7 | uVar8 << 0x19;\n    uVar13 = uVar8 >> 7;\n    if (uVar13 == 0 && uVar10 == 0) {\n      uVar11 = 1;\n      iVar14 = 0;\n    }\n    else {\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }\n    iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12);\n    uVar8 = pIncr->mxSz;\n    iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3);\n    uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12);\n    iVar14 = iVar9 - iVar15;\n    if ((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)\n    goto LAB_0003b3e9;\n    vdbePmaWriteVarint(&writer,(longlong)(int)uVar6);\n    vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6);\n    iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy);\n  }" { (expression_statement "iVar7 = pMVar4->aTree[1];" (assignment_expression "iVar7 = pMVar4->aTree[1]" identifier = (subscript_expression "pMVar4->aTree[1]" (field_expression "pMVar4->aTree" identifier -> field_identifier) [ number_literal ])) ;) (expression_statement "pPVar5 = pMVar4->aReadr;" (assignment_expression "pPVar5 = pMVar4->aReadr" identifier = (field_expression "pMVar4->aReadr" identifier -> field_identifier)) ;) (expression_statement "uVar6 = pPVar5[iVar7].nKey;" (assignment_expression "uVar6 = pPVar5[iVar7].nKey" identifier = (field_expression "pPVar5[iVar7].nKey" (subscript_expression "pPVar5[iVar7]" identifier [ identifier ]) . field_identifier)) ;) (if_statement "if (pPVar5[iVar7].pFd == (sqlite3_file *)0x0) {\nLAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\n      goto LAB_0003b3fb;\n    }" if (parenthesized_expression "(pPVar5[iVar7].pFd == (sqlite3_file *)0x0)" ( (binary_expression "pPVar5[iVar7].pFd == (sqlite3_file *)0x0" (field_expression "pPVar5[iVar7].pFd" (subscript_expression "pPVar5[iVar7]" identifier [ identifier ]) . field_identifier) == (cast_expression "(sqlite3_file *)0x0" ( (type_descriptor "sqlite3_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);\n      goto LAB_0003b3fb;\n    }" { (labeled_statement "LAB_0003b3e9:\n      iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);" statement_identifier : (expression_statement "iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);" (assignment_expression "iVar7 = vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof)" identifier = (call_expression "vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof)" identifier (argument_list "(&writer,&pIncr->aFile[1].iEof)" ( (pointer_expression "&writer" & identifier) , (pointer_expression "&pIncr->aFile[1].iEof" & (field_expression "pIncr->aFile[1].iEof" (subscript_expression "pIncr->aFile[1]" (field_expression "pIncr->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)) )))) ;)) (goto_statement "goto LAB_0003b3fb;" goto statement_identifier ;) })) (expression_statement "uVar8 = (int)uVar6 >> 0x1f;" (assignment_expression "uVar8 = (int)uVar6 >> 0x1f" identifier = (binary_expression "(int)uVar6 >> 0x1f" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6;" (assignment_expression "uVar12 = writer.iBufEnd + (uint)writer.iWriteOff + uVar6" identifier = (binary_expression "writer.iBufEnd + (uint)writer.iWriteOff + uVar6" (binary_expression "writer.iBufEnd + (uint)writer.iWriteOff" (field_expression "writer.iBufEnd" identifier . field_identifier) + (cast_expression "(uint)writer.iWriteOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "writer.iWriteOff" identifier . field_identifier))) + identifier)) ;) (expression_statement "uVar10 = uVar6 >> 7 | uVar8 << 0x19;" (assignment_expression "uVar10 = uVar6 >> 7 | uVar8 << 0x19" identifier = (binary_expression "uVar6 >> 7 | uVar8 << 0x19" (binary_expression "uVar6 >> 7" identifier >> number_literal) | (binary_expression "uVar8 << 0x19" identifier << number_literal))) ;) (expression_statement "uVar13 = uVar8 >> 7;" (assignment_expression "uVar13 = uVar8 >> 7" identifier = (binary_expression "uVar8 >> 7" identifier >> number_literal)) ;) (if_statement "if (uVar13 == 0 && uVar10 == 0) {\n      uVar11 = 1;\n      iVar14 = 0;\n    }\n    else {\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }" if (parenthesized_expression "(uVar13 == 0 && uVar10 == 0)" ( (binary_expression "uVar13 == 0 && uVar10 == 0" (binary_expression "uVar13 == 0" identifier == number_literal) && (binary_expression "uVar10 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar11 = 1;\n      iVar14 = 0;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }" else (compound_statement "{\n      uVar11 = 1;\n      do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);\n      iVar14 = (int)uVar11 >> 0x1f;\n    }" { (expression_statement "uVar11 = 1;" (assignment_expression "uVar11 = 1" identifier = number_literal) ;) (do_statement "do {\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      } while (uVar13 != 0 || uVar10 != 0);" do (compound_statement "{\n        uVar10 = uVar10 >> 7 | uVar13 << 0x19;\n        uVar13 = uVar13 >> 7;\n        uVar11 = uVar11 + 1;\n      }" { (expression_statement "uVar10 = uVar10 >> 7 | uVar13 << 0x19;" (assignment_expression "uVar10 = uVar10 >> 7 | uVar13 << 0x19" identifier = (binary_expression "uVar10 >> 7 | uVar13 << 0x19" (binary_expression "uVar10 >> 7" identifier >> number_literal) | (binary_expression "uVar13 << 0x19" identifier << number_literal))) ;) (expression_statement "uVar13 = uVar13 >> 7;" (assignment_expression "uVar13 = uVar13 >> 7" identifier = (binary_expression "uVar13 >> 7" identifier >> number_literal)) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 != 0 || uVar10 != 0)" ( (binary_expression "uVar13 != 0 || uVar10 != 0" (binary_expression "uVar13 != 0" identifier != number_literal) || (binary_expression "uVar10 != 0" identifier != number_literal)) )) ;) (expression_statement "iVar14 = (int)uVar11 >> 0x1f;" (assignment_expression "iVar14 = (int)uVar11 >> 0x1f" identifier = (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }))) (expression_statement "iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12);" (assignment_expression "iVar15 = iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12)" identifier = (binary_expression "iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6) +\n             (uint)CARRY4(uVar11,uVar12)" (binary_expression "iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8 +\n                      (uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6)" (binary_expression "iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff) + uVar8" (binary_expression "iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +\n                      (uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff)" (binary_expression "iVar14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_" (binary_expression "iVar14 + (writer.iBufEnd >> 0x1f)" identifier + (parenthesized_expression "(writer.iBufEnd >> 0x1f)" ( (binary_expression "writer.iBufEnd >> 0x1f" (field_expression "writer.iBufEnd" identifier . field_identifier) >> number_literal) ))) + (field_expression "writer.iWriteOff._4_4_" (field_expression "writer.iWriteOff" identifier . field_identifier) . field_identifier)) + (cast_expression "(uint)CARRY4(writer.iBufEnd,(uint)writer.iWriteOff)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(writer.iBufEnd,(uint)writer.iWriteOff)" identifier (argument_list "(writer.iBufEnd,(uint)writer.iWriteOff)" ( (field_expression "writer.iBufEnd" identifier . field_identifier) , (cast_expression "(uint)writer.iWriteOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "writer.iWriteOff" identifier . field_identifier)) ))))) + identifier) + (cast_expression "(uint)CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(writer.iBufEnd + (uint)writer.iWriteOff,uVar6)" identifier (argument_list "(writer.iBufEnd + (uint)writer.iWriteOff,uVar6)" ( (binary_expression "writer.iBufEnd + (uint)writer.iWriteOff" (field_expression "writer.iBufEnd" identifier . field_identifier) + (cast_expression "(uint)writer.iWriteOff" ( (type_descriptor "uint" type_identifier) ) (field_expression "writer.iWriteOff" identifier . field_identifier))) , identifier ))))) + (cast_expression "(uint)CARRY4(uVar11,uVar12)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar11,uVar12)" identifier (argument_list "(uVar11,uVar12)" ( identifier , identifier )))))) ;) (expression_statement "uVar8 = pIncr->mxSz;" (assignment_expression "uVar8 = pIncr->mxSz" identifier = (field_expression "pIncr->mxSz" identifier -> field_identifier)) ;) (expression_statement "iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3);" (assignment_expression "iVar9 = ((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3)" identifier = (binary_expression "((int)uVar8 >> 0x1f) + iVar2 + (uint)CARRY4(uVar8,uVar3)" (binary_expression "((int)uVar8 >> 0x1f) + iVar2" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar8,uVar3)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8,uVar3)" identifier (argument_list "(uVar8,uVar3)" ( identifier , identifier )))))) ;) (expression_statement "uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12);" (assignment_expression "uVar8 = (uint)(uVar8 + uVar3 < uVar11 + uVar12)" identifier = (call_expression "(uint)(uVar8 + uVar3 < uVar11 + uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 + uVar3 < uVar11 + uVar12)" ( (binary_expression "uVar8 + uVar3 < uVar11 + uVar12" (binary_expression "uVar8 + uVar3" identifier + identifier) < (binary_expression "uVar11 + uVar12" identifier + identifier)) )))) ;) (expression_statement "iVar14 = iVar9 - iVar15;" (assignment_expression "iVar14 = iVar9 - iVar15" identifier = (binary_expression "iVar9 - iVar15" identifier - identifier)) ;) (if_statement "if ((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)\n    goto LAB_0003b3e9;" if (parenthesized_expression "((SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0)" ( (binary_expression "(SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)) != (int)(iVar14 - uVar8) < 0" (parenthesized_expression "(SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8))" ( (binary_expression "SBORROW4(iVar9,iVar15) != SBORROW4(iVar14,uVar8)" (call_expression "SBORROW4(iVar9,iVar15)" identifier (argument_list "(iVar9,iVar15)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar14,uVar8)" identifier (argument_list "(iVar14,uVar8)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar14 - uVar8) < 0" (cast_expression "(int)(iVar14 - uVar8)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar14 - uVar8)" ( (binary_expression "iVar14 - uVar8" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_0003b3e9;" goto statement_identifier ;)) (expression_statement "vdbePmaWriteVarint(&writer,(longlong)(int)uVar6);" (call_expression "vdbePmaWriteVarint(&writer,(longlong)(int)uVar6)" identifier (argument_list "(&writer,(longlong)(int)uVar6)" ( (pointer_expression "&writer" & identifier) , (cast_expression "(longlong)(int)uVar6" ( (type_descriptor "longlong" type_identifier) ) (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ;) (expression_statement "vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6);" (call_expression "vdbePmaWriteBlob(&writer,pPVar5[iVar7].aKey,uVar6)" identifier (argument_list "(&writer,pPVar5[iVar7].aKey,uVar6)" ( (pointer_expression "&writer" & identifier) , (field_expression "pPVar5[iVar7].aKey" (subscript_expression "pPVar5[iVar7]" identifier [ identifier ]) . field_identifier) , identifier ))) ;) (expression_statement "iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy);" (assignment_expression "iVar7 = vdbeMergeEngineStep(pIncr->pMerger,&dummy)" identifier = (call_expression "vdbeMergeEngineStep(pIncr->pMerger,&dummy)" identifier (argument_list "(pIncr->pMerger,&dummy)" ( (field_expression "pIncr->pMerger" identifier -> field_identifier) , (pointer_expression "&dummy" & identifier) )))) ;) }) while (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) ;) (expression_statement "vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof);" (call_expression "vdbePmaWriterFinish(&writer,&pIncr->aFile[1].iEof)" identifier (argument_list "(&writer,&pIncr->aFile[1].iEof)" ( (pointer_expression "&writer" & identifier) , (pointer_expression "&pIncr->aFile[1].iEof" & (field_expression "pIncr->aFile[1].iEof" (subscript_expression "pIncr->aFile[1]" (field_expression "pIncr->aFile" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ))) ;) (labeled_statement "LAB_0003b3fb:\n  if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (iVar1 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" if (parenthesized_expression "(iVar1 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar7;" return identifier ;) })))
(translation_unit "int __regparm3 FUN_0003b230(int *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar7;\n}\n\n" (function_definition "int __regparm3 FUN_0003b230(int *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar7;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0003b230(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar7;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined8 uVar15;" type_identifier identifier ;) (declaration "int local_40 [8];" primitive_type (array_declarator "local_40 [8]" identifier [ number_literal ]) ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x3b23b;" (assignment_expression "uStack_14 = 0x3b23b" identifier = number_literal) ;) (expression_statement "iVar1 = param_1[3];" (assignment_expression "iVar1 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);" (assignment_expression "iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc)" identifier = (pointer_expression "*(int *)(*(int *)(*param_1 + 8) + 0xc)" * (cast_expression "(int *)(*(int *)(*param_1 + 8) + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 8) + 0xc)" ( (binary_expression "*(int *)(*param_1 + 8) + 0xc" (pointer_expression "*(int *)(*param_1 + 8)" * (cast_expression "(int *)(*param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 8)" ( (binary_expression "*param_1 + 8" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar8 = param_1[10];" (assignment_expression "uVar8 = param_1[10]" identifier = (subscript_expression "param_1[10]" identifier [ number_literal ])) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);" do (compound_statement "{\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  }" { (expression_statement "*(undefined4 *)((int)local_40 + uVar4) = 0;" (assignment_expression "*(undefined4 *)((int)local_40 + uVar4) = 0" (pointer_expression "*(undefined4 *)((int)local_40 + uVar4)" * (cast_expression "(undefined4 *)((int)local_40 + uVar4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_40 + uVar4)" ( (binary_expression "(int)local_40 + uVar4" (cast_expression "(int)local_40" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "uVar4 = uVar4 + 4;" (assignment_expression "uVar4 = uVar4 + 4" identifier = (binary_expression "uVar4 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 < 0x20)" ( (binary_expression "uVar4 < 0x20" identifier < number_literal) )) ;) (expression_statement "local_40[1] = FUN_00024830();" (assignment_expression "local_40[1] = FUN_00024830()" (subscript_expression "local_40[1]" identifier [ number_literal ]) = (call_expression "FUN_00024830()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" if (parenthesized_expression "(local_40[1] == 0)" ( (binary_expression "local_40[1] == 0" (subscript_expression "local_40[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    local_40[0] = 7;\n  }" { (expression_statement "local_40[0] = 7;" (assignment_expression "local_40[0] = 7" (subscript_expression "local_40[0]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" else (compound_statement "{\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" { (expression_statement "uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);" (assignment_expression "uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" identifier = (call_expression "FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" identifier (argument_list "(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" ( identifier , identifier , identifier , (binary_expression "iVar7 >> 0x1f" identifier >> number_literal) )))) ;) (expression_statement "local_40[3] = (int)uVar15;" (assignment_expression "local_40[3] = (int)uVar15" (subscript_expression "local_40[3]" identifier [ number_literal ]) = (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_40[5] = uVar2 - local_40[3];" (assignment_expression "local_40[5] = uVar2 - local_40[3]" (subscript_expression "local_40[5]" identifier [ number_literal ]) = (binary_expression "uVar2 - local_40[3]" identifier - (subscript_expression "local_40[3]" identifier [ number_literal ]))) ;) (expression_statement "local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);" (assignment_expression "local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3])" (subscript_expression "local_40[6]" identifier [ number_literal ]) = (binary_expression "(iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3])" (parenthesized_expression "(iVar1 - (int)((ulonglong)uVar15 >> 0x20))" ( (binary_expression "iVar1 - (int)((ulonglong)uVar15 >> 0x20)" identifier - (cast_expression "(int)((ulonglong)uVar15 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)uVar15 >> 0x20)" ( (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) )) - (call_expression "(uint)(uVar2 < (uint)local_40[3])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar2 < (uint)local_40[3])" ( (binary_expression "uVar2 < (uint)local_40[3]" identifier < (cast_expression "(uint)local_40[3]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ]))) ))))) ;) (expression_statement "local_40[2] = iVar7;" (assignment_expression "local_40[2] = iVar7" (subscript_expression "local_40[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_40[4] = local_40[3];" (assignment_expression "local_40[4] = local_40[3]" (subscript_expression "local_40[4]" identifier [ number_literal ]) = (subscript_expression "local_40[3]" identifier [ number_literal ])) ;) (expression_statement "local_40[7] = uVar8;" (assignment_expression "local_40[7] = uVar8" (subscript_expression "local_40[7]" identifier [ number_literal ]) = identifier) ;) }))) (do_statement "do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);" do (compound_statement "{\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  }" { (expression_statement "iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);" (assignment_expression "iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc)" identifier = (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc)" (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) * 0x34" (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 4)" * (cast_expression "(int *)(*(int *)(iVar3 + 8) + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 8) + 4)" ( (binary_expression "*(int *)(iVar3 + 8) + 4" (pointer_expression "*(int *)(iVar3 + 8)" * (cast_expression "(int *)(iVar3 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) + number_literal) )))) * number_literal) + (pointer_expression "*(int *)(iVar3 + 0xc)" * (cast_expression "(int *)(iVar3 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0xc)" ( (binary_expression "iVar3 + 0xc" identifier + number_literal) )))))) ;) (expression_statement "uVar4 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar4 = *(uint *)(iVar7 + 0x14)" identifier = (pointer_expression "*(uint *)(iVar7 + 0x14)" * (cast_expression "(uint *)(iVar7 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x14)" ( (binary_expression "iVar7 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }" if (parenthesized_expression "(*(int *)(iVar7 + 0x18) == 0)" ( (binary_expression "*(int *)(iVar7 + 0x18) == 0" (pointer_expression "*(int *)(iVar7 + 0x18)" * (cast_expression "(int *)(iVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x18)" ( (binary_expression "iVar7 + 0x18" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }" { (labeled_statement "LAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);" statement_identifier : (expression_statement "iVar7 = FUN_00025aa0(uVar8);" (assignment_expression "iVar7 = FUN_00025aa0(uVar8)" identifier = (call_expression "FUN_00025aa0(uVar8)" identifier (argument_list "(uVar8)" ( identifier )))) ;)) (goto_statement "goto LAB_0003b3fb;" goto statement_identifier ;) })) (expression_statement "uVar5 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar5 = (int)uVar4 >> 0x1f" identifier = (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "uVar10 = local_40[4] + local_40[5] + uVar4;" (assignment_expression "uVar10 = local_40[4] + local_40[5] + uVar4" identifier = (binary_expression "local_40[4] + local_40[5] + uVar4" (binary_expression "local_40[4] + local_40[5]" (subscript_expression "local_40[4]" identifier [ number_literal ]) + (subscript_expression "local_40[5]" identifier [ number_literal ])) + identifier)) ;) (expression_statement "iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);" (assignment_expression "iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4)" identifier = (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4)" (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5" (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5])" (binary_expression "(local_40[4] >> 0x1f) + local_40[6]" (parenthesized_expression "(local_40[4] >> 0x1f)" ( (binary_expression "local_40[4] >> 0x1f" (subscript_expression "local_40[4]" identifier [ number_literal ]) >> number_literal) )) + (subscript_expression "local_40[6]" identifier [ number_literal ])) + (cast_expression "(uint)CARRY4(local_40[4],local_40[5])" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_40[4],local_40[5])" identifier (argument_list "(local_40[4],local_40[5])" ( (subscript_expression "local_40[4]" identifier [ number_literal ]) , (subscript_expression "local_40[5]" identifier [ number_literal ]) ))))) + identifier) + (cast_expression "(uint)CARRY4(local_40[4] + local_40[5],uVar4)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(local_40[4] + local_40[5],uVar4)" identifier (argument_list "(local_40[4] + local_40[5],uVar4)" ( (binary_expression "local_40[4] + local_40[5]" (subscript_expression "local_40[4]" identifier [ number_literal ]) + (subscript_expression "local_40[5]" identifier [ number_literal ])) , identifier )))))) ;) (expression_statement "uVar8 = uVar4 >> 7 | uVar5 << 0x19;" (assignment_expression "uVar8 = uVar4 >> 7 | uVar5 << 0x19" identifier = (binary_expression "uVar4 >> 7 | uVar5 << 0x19" (binary_expression "uVar4 >> 7" identifier >> number_literal) | (binary_expression "uVar5 << 0x19" identifier << number_literal))) ;) (expression_statement "uVar11 = uVar5 >> 7;" (assignment_expression "uVar11 = uVar5 >> 7" identifier = (binary_expression "uVar5 >> 7" identifier >> number_literal)) ;) (if_statement "if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" if (parenthesized_expression "(uVar11 == 0 && uVar8 == 0)" ( (binary_expression "uVar11 == 0 && uVar8 == 0" (binary_expression "uVar11 == 0" identifier == number_literal) && (binary_expression "uVar8 == 0" identifier == number_literal)) )) (compound_statement "{\n      uVar9 = 1;\n      iVar13 = 0;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" else (compound_statement "{\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) (do_statement "do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);" do (compound_statement "{\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      }" { (expression_statement "uVar8 = uVar8 >> 7 | uVar11 << 0x19;" (assignment_expression "uVar8 = uVar8 >> 7 | uVar11 << 0x19" identifier = (binary_expression "uVar8 >> 7 | uVar11 << 0x19" (binary_expression "uVar8 >> 7" identifier >> number_literal) | (binary_expression "uVar11 << 0x19" identifier << number_literal))) ;) (expression_statement "uVar11 = uVar11 >> 7;" (assignment_expression "uVar11 = uVar11 >> 7" identifier = (binary_expression "uVar11 >> 7" identifier >> number_literal)) ;) (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 != 0 || uVar8 != 0)" ( (binary_expression "uVar11 != 0 || uVar8 != 0" (binary_expression "uVar11 != 0" identifier != number_literal) || (binary_expression "uVar8 != 0" identifier != number_literal)) )) ;) (expression_statement "iVar13 = (int)uVar9 >> 0x1f;" (assignment_expression "iVar13 = (int)uVar9 >> 0x1f" identifier = (binary_expression "(int)uVar9 >> 0x1f" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }))) (expression_statement "iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);" (assignment_expression "iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10)" identifier = (binary_expression "iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10)" (binary_expression "iVar13 + iVar12" identifier + identifier) + (cast_expression "(uint)CARRY4(uVar9,uVar10)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar9,uVar10)" identifier (argument_list "(uVar9,uVar10)" ( identifier , identifier )))))) ;) (expression_statement "uVar8 = param_1[4];" (assignment_expression "uVar8 = param_1[4]" identifier = (subscript_expression "param_1[4]" identifier [ number_literal ])) ;) (expression_statement "iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);" (assignment_expression "iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2)" identifier = (binary_expression "((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2)" (binary_expression "((int)uVar8 >> 0x1f) + iVar1" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) + identifier) + (cast_expression "(uint)CARRY4(uVar8,uVar2)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar8,uVar2)" identifier (argument_list "(uVar8,uVar2)" ( identifier , identifier )))))) ;) (expression_statement "uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);" (assignment_expression "uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10)" identifier = (call_expression "(uint)(uVar8 + uVar2 < uVar9 + uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 + uVar2 < uVar9 + uVar10)" ( (binary_expression "uVar8 + uVar2 < uVar9 + uVar10" (binary_expression "uVar8 + uVar2" identifier + identifier) < (binary_expression "uVar9 + uVar10" identifier + identifier)) )))) ;) (expression_statement "iVar13 = iVar6 - iVar14;" (assignment_expression "iVar13 = iVar6 - iVar14" identifier = (binary_expression "iVar6 - iVar14" identifier - identifier)) ;) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) (if_statement "if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;" if (parenthesized_expression "((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)" ( (binary_expression "(SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0" (parenthesized_expression "(SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11))" ( (binary_expression "SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)" (call_expression "SBORROW4(iVar6,iVar14)" identifier (argument_list "(iVar6,iVar14)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar13,uVar11)" identifier (argument_list "(iVar13,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar13 - uVar11) < 0" (cast_expression "(int)(iVar13 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar13 - uVar11)" ( (binary_expression "iVar13 - uVar11" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_0003b3e9;" goto statement_identifier ;)) (expression_statement "FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);" (call_expression "FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4)" identifier (argument_list "(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4)" ( identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "FUN_000215c0();" (call_expression "FUN_000215c0()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar7 = FUN_0003b610();" (assignment_expression "iVar7 = FUN_0003b610()" identifier = (call_expression "FUN_0003b610()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) ;) (expression_statement "FUN_00025aa0();" (call_expression "FUN_00025aa0()" identifier (argument_list "()" ( ))) ;) (labeled_statement "LAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000f4bf0();\n  }" { (expression_statement "FUN_000f4bf0();" (call_expression "FUN_000f4bf0()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return iVar7;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * 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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_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 = (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) * LIT) + (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) >> LIT) )) + (subscript_expression IDENT [ LIT ])) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) ))))) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) | (binary_expression IDENT << LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) || (binary_expression IDENT != LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) + IDENT) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT + IDENT) < (binary_expression IDENT + IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_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 ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int __regparm3 FUN_0003b230(int *param_1)\n\n{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar7;\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0003b230(int *param_1)" (identifier "FUN_0003b230") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  uint uVar2;\n  int iVar3;\n  uint uVar4;\n  uint uVar5;\n  int iVar6;\n  int iVar7;\n  uint uVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  int in_GS_OFFSET;\n  undefined8 uVar15;\n  int local_40 [8];\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x3b23b;\n  iVar1 = param_1[3];\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  uVar2 = param_1[2];\n  iVar3 = param_1[1];\n  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);\n  uVar8 = param_1[10];\n  uVar4 = 0;\n  do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);\n  local_40[1] = FUN_00024830();\n  if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }\n  do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);\n  FUN_00025aa0();\nLAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }\n  return iVar7;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined8 uVar15;" (type_identifier "undefined8") (identifier "uVar15") (; ";")) (declaration "int local_40 [8];" (primitive_type "int") (array_declarator "local_40 [8]" (identifier "local_40") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x3b23b;" (assignment_expression "uStack_14 = 0x3b23b" (identifier "uStack_14") (= "=") (number_literal "0x3b23b")) (; ";")) (expression_statement "iVar1 = param_1[3];" (assignment_expression "iVar1 = param_1[3]" (identifier "iVar1") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar2 = param_1[2];" (assignment_expression "uVar2 = param_1[2]" (identifier "uVar2") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar3 = param_1[1];" (assignment_expression "iVar3 = param_1[1]" (identifier "iVar3") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);" (assignment_expression "iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(*(int *)(*param_1 + 8) + 0xc)" (* "*") (cast_expression "(int *)(*(int *)(*param_1 + 8) + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_1 + 8) + 0xc)" (( "(") (binary_expression "*(int *)(*param_1 + 8) + 0xc" (pointer_expression "*(int *)(*param_1 + 8)" (* "*") (cast_expression "(int *)(*param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 8)" (( "(") (binary_expression "*param_1 + 8" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar8 = param_1[10];" (assignment_expression "uVar8 = param_1[10]" (identifier "uVar8") (= "=") (subscript_expression "param_1[10]" (identifier "param_1") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  } while (uVar4 < 0x20);" (do "do") (compound_statement "{\n    *(undefined4 *)((int)local_40 + uVar4) = 0;\n    uVar4 = uVar4 + 4;\n  }" ({ "{") (expression_statement "*(undefined4 *)((int)local_40 + uVar4) = 0;" (assignment_expression "*(undefined4 *)((int)local_40 + uVar4) = 0" (pointer_expression "*(undefined4 *)((int)local_40 + uVar4)" (* "*") (cast_expression "(undefined4 *)((int)local_40 + uVar4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_40 + uVar4)" (( "(") (binary_expression "(int)local_40 + uVar4" (cast_expression "(int)local_40" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_40")) (+ "+") (identifier "uVar4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar4 = uVar4 + 4;" (assignment_expression "uVar4 = uVar4 + 4" (identifier "uVar4") (= "=") (binary_expression "uVar4 + 4" (identifier "uVar4") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 < 0x20)" (( "(") (binary_expression "uVar4 < 0x20" (identifier "uVar4") (< "<") (number_literal "0x20")) () ")")) (; ";")) (expression_statement "local_40[1] = FUN_00024830();" (assignment_expression "local_40[1] = FUN_00024830()" (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) (= "=") (call_expression "FUN_00024830()" (identifier "FUN_00024830") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_40[1] == 0) {\n    local_40[0] = 7;\n  }\n  else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" (if "if") (parenthesized_expression "(local_40[1] == 0)" (( "(") (binary_expression "local_40[1] == 0" (subscript_expression "local_40[1]" (identifier "local_40") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_40[0] = 7;\n  }" ({ "{") (expression_statement "local_40[0] = 7;" (assignment_expression "local_40[0] = 7" (subscript_expression "local_40[0]" (identifier "local_40") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" (else "else") (compound_statement "{\n    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);\n    local_40[3] = (int)uVar15;\n    local_40[5] = uVar2 - local_40[3];\n    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);\n    local_40[2] = iVar7;\n    local_40[4] = local_40[3];\n    local_40[7] = uVar8;\n  }" ({ "{") (expression_statement "uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);" (assignment_expression "uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" (identifier "uVar15") (= "=") (call_expression "FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" (identifier "FUN_000f4340") (argument_list "(uVar2,iVar1,iVar7,iVar7 >> 0x1f)" (( "(") (identifier "uVar2") (, ",") (identifier "iVar1") (, ",") (identifier "iVar7") (, ",") (binary_expression "iVar7 >> 0x1f" (identifier "iVar7") (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "local_40[3] = (int)uVar15;" (assignment_expression "local_40[3] = (int)uVar15" (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "local_40[5] = uVar2 - local_40[3];" (assignment_expression "local_40[5] = uVar2 - local_40[3]" (subscript_expression "local_40[5]" (identifier "local_40") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "uVar2 - local_40[3]" (identifier "uVar2") (- "-") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);" (assignment_expression "local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3])" (subscript_expression "local_40[6]" (identifier "local_40") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "(iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3])" (parenthesized_expression "(iVar1 - (int)((ulonglong)uVar15 >> 0x20))" (( "(") (binary_expression "iVar1 - (int)((ulonglong)uVar15 >> 0x20)" (identifier "iVar1") (- "-") (cast_expression "(int)((ulonglong)uVar15 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)uVar15 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar15 >> 0x20" (cast_expression "(ulonglong)uVar15" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x20")) () ")")))) () ")")) (- "-") (call_expression "(uint)(uVar2 < (uint)local_40[3])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar2 < (uint)local_40[3])" (( "(") (binary_expression "uVar2 < (uint)local_40[3]" (identifier "uVar2") (< "<") (cast_expression "(uint)local_40[3]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]")))) () ")"))))) (; ";")) (expression_statement "local_40[2] = iVar7;" (assignment_expression "local_40[2] = iVar7" (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "local_40[4] = local_40[3];" (assignment_expression "local_40[4] = local_40[3]" (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "local_40[7] = uVar8;" (assignment_expression "local_40[7] = uVar8" (subscript_expression "local_40[7]" (identifier "local_40") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (} "}")))) (do_statement "do {\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  } while (iVar7 == 0);" (do "do") (compound_statement "{\n    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);\n    uVar4 = *(uint *)(iVar7 + 0x14);\n    if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }\n    uVar5 = (int)uVar4 >> 0x1f;\n    uVar10 = local_40[4] + local_40[5] + uVar4;\n    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);\n    uVar8 = uVar4 >> 7 | uVar5 << 0x19;\n    uVar11 = uVar5 >> 7;\n    if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }\n    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);\n    uVar8 = param_1[4];\n    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);\n    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);\n    iVar13 = iVar6 - iVar14;\n    uVar8 = uVar4;\n    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;\n    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);\n    FUN_000215c0();\n    iVar7 = FUN_0003b610();\n    uVar8 = uVar4;\n  }" ({ "{") (expression_statement "iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);" (assignment_expression "iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc)" (identifier "iVar7") (= "=") (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc)" (binary_expression "*(int *)(*(int *)(iVar3 + 8) + 4) * 0x34" (pointer_expression "*(int *)(*(int *)(iVar3 + 8) + 4)" (* "*") (cast_expression "(int *)(*(int *)(iVar3 + 8) + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 8) + 4)" (( "(") (binary_expression "*(int *)(iVar3 + 8) + 4" (pointer_expression "*(int *)(iVar3 + 8)" (* "*") (cast_expression "(int *)(iVar3 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "4")) () ")")))) (* "*") (number_literal "0x34")) (+ "+") (pointer_expression "*(int *)(iVar3 + 0xc)" (* "*") (cast_expression "(int *)(iVar3 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0xc)" (( "(") (binary_expression "iVar3 + 0xc" (identifier "iVar3") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (expression_statement "uVar4 = *(uint *)(iVar7 + 0x14);" (assignment_expression "uVar4 = *(uint *)(iVar7 + 0x14)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(iVar7 + 0x14)" (* "*") (cast_expression "(uint *)(iVar7 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x14)" (( "(") (binary_expression "iVar7 + 0x14" (identifier "iVar7") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (*(int *)(iVar7 + 0x18) == 0) {\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar7 + 0x18) == 0)" (( "(") (binary_expression "*(int *)(iVar7 + 0x18) == 0" (pointer_expression "*(int *)(iVar7 + 0x18)" (* "*") (cast_expression "(int *)(iVar7 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x18)" (( "(") (binary_expression "iVar7 + 0x18" (identifier "iVar7") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);\n      goto LAB_0003b3fb;\n    }" ({ "{") (labeled_statement "LAB_0003b3e9:\n      iVar7 = FUN_00025aa0(uVar8);" (statement_identifier "LAB_0003b3e9") (: ":") (expression_statement "iVar7 = FUN_00025aa0(uVar8);" (assignment_expression "iVar7 = FUN_00025aa0(uVar8)" (identifier "iVar7") (= "=") (call_expression "FUN_00025aa0(uVar8)" (identifier "FUN_00025aa0") (argument_list "(uVar8)" (( "(") (identifier "uVar8") () ")")))) (; ";"))) (goto_statement "goto LAB_0003b3fb;" (goto "goto") (statement_identifier "LAB_0003b3fb") (; ";")) (} "}"))) (expression_statement "uVar5 = (int)uVar4 >> 0x1f;" (assignment_expression "uVar5 = (int)uVar4 >> 0x1f" (identifier "uVar5") (= "=") (binary_expression "(int)uVar4 >> 0x1f" (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "uVar10 = local_40[4] + local_40[5] + uVar4;" (assignment_expression "uVar10 = local_40[4] + local_40[5] + uVar4" (identifier "uVar10") (= "=") (binary_expression "local_40[4] + local_40[5] + uVar4" (binary_expression "local_40[4] + local_40[5]" (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (+ "+") (subscript_expression "local_40[5]" (identifier "local_40") ([ "[") (number_literal "5") (] "]"))) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4);" (assignment_expression "iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4)" (identifier "iVar12") (= "=") (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +\n             (uint)CARRY4(local_40[4] + local_40[5],uVar4)" (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5" (binary_expression "(local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5])" (binary_expression "(local_40[4] >> 0x1f) + local_40[6]" (parenthesized_expression "(local_40[4] >> 0x1f)" (( "(") (binary_expression "local_40[4] >> 0x1f" (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (subscript_expression "local_40[6]" (identifier "local_40") ([ "[") (number_literal "6") (] "]"))) (+ "+") (cast_expression "(uint)CARRY4(local_40[4],local_40[5])" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(local_40[4],local_40[5])" (identifier "CARRY4") (argument_list "(local_40[4],local_40[5])" (( "(") (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "local_40[5]" (identifier "local_40") ([ "[") (number_literal "5") (] "]")) () ")"))))) (+ "+") (identifier "uVar5")) (+ "+") (cast_expression "(uint)CARRY4(local_40[4] + local_40[5],uVar4)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(local_40[4] + local_40[5],uVar4)" (identifier "CARRY4") (argument_list "(local_40[4] + local_40[5],uVar4)" (( "(") (binary_expression "local_40[4] + local_40[5]" (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]")) (+ "+") (subscript_expression "local_40[5]" (identifier "local_40") ([ "[") (number_literal "5") (] "]"))) (, ",") (identifier "uVar4") () ")")))))) (; ";")) (expression_statement "uVar8 = uVar4 >> 7 | uVar5 << 0x19;" (assignment_expression "uVar8 = uVar4 >> 7 | uVar5 << 0x19" (identifier "uVar8") (= "=") (binary_expression "uVar4 >> 7 | uVar5 << 0x19" (binary_expression "uVar4 >> 7" (identifier "uVar4") (>> ">>") (number_literal "7")) (| "|") (binary_expression "uVar5 << 0x19" (identifier "uVar5") (<< "<<") (number_literal "0x19")))) (; ";")) (expression_statement "uVar11 = uVar5 >> 7;" (assignment_expression "uVar11 = uVar5 >> 7" (identifier "uVar11") (= "=") (binary_expression "uVar5 >> 7" (identifier "uVar5") (>> ">>") (number_literal "7"))) (; ";")) (if_statement "if (uVar11 == 0 && uVar8 == 0) {\n      uVar9 = 1;\n      iVar13 = 0;\n    }\n    else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" (if "if") (parenthesized_expression "(uVar11 == 0 && uVar8 == 0)" (( "(") (binary_expression "uVar11 == 0 && uVar8 == 0" (binary_expression "uVar11 == 0" (identifier "uVar11") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n      uVar9 = 1;\n      iVar13 = 0;\n    }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" (else "else") (compound_statement "{\n      uVar9 = 1;\n      do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);\n      iVar13 = (int)uVar9 >> 0x1f;\n    }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      } while (uVar11 != 0 || uVar8 != 0);" (do "do") (compound_statement "{\n        uVar8 = uVar8 >> 7 | uVar11 << 0x19;\n        uVar11 = uVar11 >> 7;\n        uVar9 = uVar9 + 1;\n      }" ({ "{") (expression_statement "uVar8 = uVar8 >> 7 | uVar11 << 0x19;" (assignment_expression "uVar8 = uVar8 >> 7 | uVar11 << 0x19" (identifier "uVar8") (= "=") (binary_expression "uVar8 >> 7 | uVar11 << 0x19" (binary_expression "uVar8 >> 7" (identifier "uVar8") (>> ">>") (number_literal "7")) (| "|") (binary_expression "uVar11 << 0x19" (identifier "uVar11") (<< "<<") (number_literal "0x19")))) (; ";")) (expression_statement "uVar11 = uVar11 >> 7;" (assignment_expression "uVar11 = uVar11 >> 7" (identifier "uVar11") (= "=") (binary_expression "uVar11 >> 7" (identifier "uVar11") (>> ">>") (number_literal "7"))) (; ";")) (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 != 0 || uVar8 != 0)" (( "(") (binary_expression "uVar11 != 0 || uVar8 != 0" (binary_expression "uVar11 != 0" (identifier "uVar11") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "uVar8 != 0" (identifier "uVar8") (!= "!=") (number_literal "0"))) () ")")) (; ";")) (expression_statement "iVar13 = (int)uVar9 >> 0x1f;" (assignment_expression "iVar13 = (int)uVar9 >> 0x1f" (identifier "iVar13") (= "=") (binary_expression "(int)uVar9 >> 0x1f" (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9")) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}")))) (expression_statement "iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);" (assignment_expression "iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10)" (identifier "iVar14") (= "=") (binary_expression "iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10)" (binary_expression "iVar13 + iVar12" (identifier "iVar13") (+ "+") (identifier "iVar12")) (+ "+") (cast_expression "(uint)CARRY4(uVar9,uVar10)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar9,uVar10)" (identifier "CARRY4") (argument_list "(uVar9,uVar10)" (( "(") (identifier "uVar9") (, ",") (identifier "uVar10") () ")")))))) (; ";")) (expression_statement "uVar8 = param_1[4];" (assignment_expression "uVar8 = param_1[4]" (identifier "uVar8") (= "=") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);" (assignment_expression "iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2)" (identifier "iVar6") (= "=") (binary_expression "((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2)" (binary_expression "((int)uVar8 >> 0x1f) + iVar1" (parenthesized_expression "((int)uVar8 >> 0x1f)" (( "(") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f")) () ")")) (+ "+") (identifier "iVar1")) (+ "+") (cast_expression "(uint)CARRY4(uVar8,uVar2)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar8,uVar2)" (identifier "CARRY4") (argument_list "(uVar8,uVar2)" (( "(") (identifier "uVar8") (, ",") (identifier "uVar2") () ")")))))) (; ";")) (expression_statement "uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);" (assignment_expression "uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10)" (identifier "uVar11") (= "=") (call_expression "(uint)(uVar8 + uVar2 < uVar9 + uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 + uVar2 < uVar9 + uVar10)" (( "(") (binary_expression "uVar8 + uVar2 < uVar9 + uVar10" (binary_expression "uVar8 + uVar2" (identifier "uVar8") (+ "+") (identifier "uVar2")) (< "<") (binary_expression "uVar9 + uVar10" (identifier "uVar9") (+ "+") (identifier "uVar10"))) () ")")))) (; ";")) (expression_statement "iVar13 = iVar6 - iVar14;" (assignment_expression "iVar13 = iVar6 - iVar14" (identifier "iVar13") (= "=") (binary_expression "iVar6 - iVar14" (identifier "iVar6") (- "-") (identifier "iVar14"))) (; ";")) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" (identifier "uVar8") (= "=") (identifier "uVar4")) (; ";")) (if_statement "if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)\n    goto LAB_0003b3e9;" (if "if") (parenthesized_expression "((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)" (( "(") (binary_expression "(SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0" (parenthesized_expression "(SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11))" (( "(") (binary_expression "SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)" (call_expression "SBORROW4(iVar6,iVar14)" (identifier "SBORROW4") (argument_list "(iVar6,iVar14)" (( "(") (identifier "iVar6") (, ",") (identifier "iVar14") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar13,uVar11)" (identifier "SBORROW4") (argument_list "(iVar13,uVar11)" (( "(") (identifier "iVar13") (, ",") (identifier "uVar11") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar13 - uVar11) < 0" (cast_expression "(int)(iVar13 - uVar11)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar13 - uVar11)" (( "(") (binary_expression "iVar13 - uVar11" (identifier "iVar13") (- "-") (identifier "uVar11")) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto LAB_0003b3e9;" (goto "goto") (statement_identifier "LAB_0003b3e9") (; ";"))) (expression_statement "FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);" (call_expression "FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4)" (identifier "FUN_000289e0") (argument_list "(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4)" (( "(") (identifier "uVar4") (, ",") (identifier "uVar5") (, ",") (identifier "uVar10") (, ",") (identifier "iVar12") (, ",") (identifier "iVar7") (, ",") (identifier "uVar4") () ")"))) (; ";")) (expression_statement "FUN_000215c0();" (call_expression "FUN_000215c0()" (identifier "FUN_000215c0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar7 = FUN_0003b610();" (assignment_expression "iVar7 = FUN_0003b610()" (identifier "iVar7") (= "=") (call_expression "FUN_0003b610()" (identifier "FUN_0003b610") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar8 = uVar4;" (assignment_expression "uVar8 = uVar4" (identifier "uVar8") (= "=") (identifier "uVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "FUN_00025aa0();" (call_expression "FUN_00025aa0()" (identifier "FUN_00025aa0") (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_0003b3fb:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }" (statement_identifier "LAB_0003b3fb") (: ":") (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f4bf0();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000f4bf0();\n  }" ({ "{") (expression_statement "FUN_000f4bf0();" (call_expression "FUN_000f4bf0()" (identifier "FUN_000f4bf0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar7;" (return "return") (identifier "iVar7") (; ";")) (} "}")))

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

int __regparm3 function_1(type_1 *pIncr)

{
  int var_23;
  int var_8;
  type_2 var_7;
  type_3 *pMVar4;
  type_4 *pPVar5;
  type_2 var_2;
  int var_6;
  type_2 var_10;
  int var_17;
  type_2 var_12;
  type_2 var_13;
  type_2 var_16;
  type_2 var_11;
  int var_14;
  int var_18;
  int var_1;
  type_5 uVar16;
  type_6 *psVar17;
  type_7 in_stack_ffffff88;
  int dummy;
  type_8 writer;
  
  var_8 = *(int *)((int)&pIncr->iStartOff + 4);
  var_23 = *(int *)(var_1 + 0x14);
  var_7 = (type_2)pIncr->iStartOff;
  pMVar4 = pIncr->pMerger;
  var_6 = pIncr->pTask->pSorter->pgsz;
  psVar17 = pIncr->aFile[1].pFd;
  var_2 = 0;
  do {
    *(type_7 *)((int)&writer.eFWErr + var_2) = 0;
    var_2 = var_2 + 4;
  } while (var_2 < 0x20);
  writer.aBuffer = (type_9 *)var_3(var_4(in_stack_ffffff88,psVar17));
  if (writer.aBuffer == (type_9 *)0x0) {
    writer.eFWErr = 7;
  }
  else {
    uVar16 = var_5(var_7,var_8,var_6,var_6 >> 0x1f);
    writer.iBufStart = (int)uVar16;
    writer.iWriteOff._0_4_ = var_7 - writer.iBufStart;
    writer.iWriteOff._4_4_ =
         (var_8 - (int)((type_10)uVar16 >> 0x20)) - (type_2)(var_7 < (type_2)writer.iBufStart);
    writer.nBuffer = var_6;
    writer.iBufEnd = writer.iBufStart;
    writer.pFd = psVar17;
  }
  do {
    var_6 = pMVar4->aTree[1];
    pPVar5 = pMVar4->aReadr;
    var_2 = pPVar5[var_6].nKey;
    if (pPVar5[var_6].pFd == (type_6 *)0x0) {
LAB_0003b3e9:
      var_6 = var_9(&writer,&pIncr->aFile[1].iEof);
      goto LAB_0003b3fb;
    }
    var_10 = (int)var_2 >> 0x1f;
    var_16 = writer.iBufEnd + (type_2)writer.iWriteOff + var_2;
    var_12 = var_2 >> 7 | var_10 << 0x19;
    var_11 = var_10 >> 7;
    if (var_11 == 0 && var_12 == 0) {
      var_13 = 1;
      var_14 = 0;
    }
    else {
      var_13 = 1;
      do {
        var_12 = var_12 >> 7 | var_11 << 0x19;
        var_11 = var_11 >> 7;
        var_13 = var_13 + 1;
      } while (var_11 != 0 || var_12 != 0);
      var_14 = (int)var_13 >> 0x1f;
    }
    var_18 = var_14 + (writer.iBufEnd >> 0x1f) + writer.iWriteOff._4_4_ +
                      (type_2)var_15(writer.iBufEnd,(type_2)writer.iWriteOff) + var_10 +
                      (type_2)var_15(writer.iBufEnd + (type_2)writer.iWriteOff,var_2) +
             (type_2)var_15(var_13,var_16);
    var_10 = pIncr->mxSz;
    var_17 = ((int)var_10 >> 0x1f) + var_8 + (type_2)var_15(var_10,var_7);
    var_10 = (type_2)(var_10 + var_7 < var_13 + var_16);
    var_14 = var_17 - var_18;
    if ((var_19(var_17,var_18) != var_19(var_14,var_10)) != (int)(var_14 - var_10) < 0)
    goto LAB_0003b3e9;
    var_20(&writer,(type_11)(int)var_2);
    var_21(&writer,pPVar5[var_6].aKey,var_2);
    var_6 = var_22(pIncr->pMerger,&dummy);
  } while (var_6 == 0);
  var_9(&writer,&pIncr->aFile[1].iEof);
LAB_0003b3fb:
  if (var_23 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_24();
  }
  return var_6;
}


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

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

int __regparm3 MASKED(int *param_1)

{
  int iVar1;
  uint uVar2;
  int iVar3;
  uint uVar4;
  uint uVar5;
  int iVar6;
  int iVar7;
  uint uVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int in_GS_OFFSET;
  undefined8 uVar15;
  int local_40 [8];
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x3b23b;
  iVar1 = param_1[3];
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  uVar2 = param_1[2];
  iVar3 = param_1[1];
  iVar7 = *(int *)(*(int *)(*param_1 + 8) + 0xc);
  uVar8 = param_1[10];
  uVar4 = 0;
  do {
    *(undefined4 *)((int)local_40 + uVar4) = 0;
    uVar4 = uVar4 + 4;
  } while (uVar4 < 0x20);
  local_40[1] = FUN_00024830();
  if (local_40[1] == 0) {
    local_40[0] = 7;
  }
  else {
    uVar15 = FUN_000f4340(uVar2,iVar1,iVar7,iVar7 >> 0x1f);
    local_40[3] = (int)uVar15;
    local_40[5] = uVar2 - local_40[3];
    local_40[6] = (iVar1 - (int)((ulonglong)uVar15 >> 0x20)) - (uint)(uVar2 < (uint)local_40[3]);
    local_40[2] = iVar7;
    local_40[4] = local_40[3];
    local_40[7] = uVar8;
  }
  do {
    iVar7 = *(int *)(*(int *)(iVar3 + 8) + 4) * 0x34 + *(int *)(iVar3 + 0xc);
    uVar4 = *(uint *)(iVar7 + 0x14);
    if (*(int *)(iVar7 + 0x18) == 0) {
LAB_0003b3e9:
      iVar7 = FUN_00025aa0(uVar8);
      goto LAB_0003b3fb;
    }
    uVar5 = (int)uVar4 >> 0x1f;
    uVar10 = local_40[4] + local_40[5] + uVar4;
    iVar12 = (local_40[4] >> 0x1f) + local_40[6] + (uint)CARRY4(local_40[4],local_40[5]) + uVar5 +
             (uint)CARRY4(local_40[4] + local_40[5],uVar4);
    uVar8 = uVar4 >> 7 | uVar5 << 0x19;
    uVar11 = uVar5 >> 7;
    if (uVar11 == 0 && uVar8 == 0) {
      uVar9 = 1;
      iVar13 = 0;
    }
    else {
      uVar9 = 1;
      do {
        uVar8 = uVar8 >> 7 | uVar11 << 0x19;
        uVar11 = uVar11 >> 7;
        uVar9 = uVar9 + 1;
      } while (uVar11 != 0 || uVar8 != 0);
      iVar13 = (int)uVar9 >> 0x1f;
    }
    iVar14 = iVar13 + iVar12 + (uint)CARRY4(uVar9,uVar10);
    uVar8 = param_1[4];
    iVar6 = ((int)uVar8 >> 0x1f) + iVar1 + (uint)CARRY4(uVar8,uVar2);
    uVar11 = (uint)(uVar8 + uVar2 < uVar9 + uVar10);
    iVar13 = iVar6 - iVar14;
    uVar8 = uVar4;
    if ((SBORROW4(iVar6,iVar14) != SBORROW4(iVar13,uVar11)) != (int)(iVar13 - uVar11) < 0)
    goto LAB_0003b3e9;
    FUN_000289e0(uVar4,uVar5,uVar10,iVar12,iVar7,uVar4);
    FUN_000215c0();
    iVar7 = FUN_0003b610();
    uVar8 = uVar4;
  } while (iVar7 == 0);
  FUN_00025aa0();
LAB_0003b3fb:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f4bf0();
  }
  return iVar7;
}

