
/* DWARF original prototype: int backupOnePage(sqlite3_backup * p, Pgno iSrcPg, u8 * zSrcData, int
   bUpdate, sqlite3_backup * p) */

int backupOnePage(sqlite3_backup *p,Pgno iSrcPg,u8 *zSrcData,int bUpdate,sqlite3_backup *p_1)

{
  undefined *puVar1;
  Vdbe *pVVar2;
  int iVar3;
  int iVar4;
  code *pcVar5;
  code *pcVar6;
  undefined4 uVar7;
  uint uVar8;
  int extraout_v1;
  int extraout_v1_00;
  int extraout_v1_01;
  int extraout_v1_02;
  uint uVar9;
  int iVar10;
  int iVar11;
  uint uVar12;
  uint uVar13;
  int iVar14;
  int iVar15;
  sqlite3 *psVar16;
  undefined *puVar17;
  uint uVar18;
  uint uVar19;
  DbPage *pDestPg;
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  puVar17 = PTR_DAT_000f52bc;
  pVVar2 = p->pDestDb->pVdbe;
  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24);
  uVar12 = pVVar2->pc;
  psVar16 = pVVar2->db;
  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);
  iVar3 = (int)uVar18 >> 0x1f;
  local_2c = *(int *)PTR___stack_chk_guard_000f5568;
  iVar15 = iVar3 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);
  uVar13 = uVar19 - uVar18;
  if (uVar18 == uVar12) {
    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);
  }
  else {
    iVar4 = 8;
    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;
    uVar13 = uVar19 - uVar18;
    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);
  }
  uVar8 = uVar12;
  if ((int)uVar18 <= (int)uVar12) {
    uVar8 = uVar18;
  }
  pcVar5 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);
  pcVar6 = (code *)(PTR_LAB_000f52c8 + 0x1a94);
  while( true ) {
    if (iVar15 <= iVar11) {
      iVar4 = 0;
      if (iVar15 != iVar11) goto LAB_000783d4;
      if (uVar19 <= uVar13) {
        iVar4 = 0;
        goto LAB_000783d4;
      }
    }
    iVar14 = (int)uVar12 >> 0x1f;
    pDestPg = (DbPage *)0x0;
    (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12);
    uVar9 = p->pDestDb->pVdbe->pc;
    if (uVar9 == 0) {
      trap(7);
    }
    iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1;
    if (iVar10 == extraout_v1 + 1) {
      do {
        uVar9 = uVar13 + uVar12;
        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;
        if (iVar15 <= iVar11) {
          iVar4 = 0;
          if (iVar11 != iVar15) goto LAB_000783d4;
          if (uVar19 <= uVar9) {
            iVar4 = 0;
            goto LAB_000783d4;
          }
        }
        pDestPg = (DbPage *)0x0;
        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);
        uVar13 = uVar9;
      } while (extraout_v1_00 + 1 == iVar10);
      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);
    }
    else {
      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);
      uVar9 = uVar13;
    }
    if ((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)) break;
    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12);
    iVar4 = (int)pDestPg->pData + extraout_v1_01;
    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18);
    (*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8);
    *(undefined1 *)pDestPg->pExtra = 0;
    if ((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)) {
      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);
      *(char *)(iVar4 + 0x1f) = (char)uVar7;
      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);
      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);
      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);
    }
    uVar13 = uVar9 + uVar12;
    iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14;
    if (pDestPg != (DbPage *)0x0) {
      (*pcVar6)();
    }
  }
  puVar17 = PTR_LAB_000f52c8;
  if (pDestPg != (DbPage *)0x0) goto LAB_000785c4;
LAB_000783d4:
  while (local_2c != *(int *)puVar1) {
    puVar17 = PTR___stack_chk_fail_000f5540;
    iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();
LAB_000785c4:
    (*(code *)(puVar17 + 0x1a94))();
  }
  return iVar4;
}



int FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  code *pcVar5;
  undefined4 uVar6;
  uint uVar7;
  int extraout_v1;
  int extraout_v1_00;
  int extraout_v1_01;
  int extraout_v1_02;
  uint uVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  undefined *puVar16;
  uint uVar17;
  uint uVar18;
  int local_30;
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  puVar16 = PTR_DAT_000f52bc;
  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);
  uVar11 = (*(int **)(*param_1 + 4))[9];
  iVar15 = **(int **)(*param_1 + 4);
  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);
  iVar2 = (int)uVar17 >> 0x1f;
  local_2c = *(int *)PTR___stack_chk_guard_000f5568;
  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);
  uVar12 = uVar18 - uVar17;
  if (uVar17 == uVar11) {
    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);
  }
  else {
    iVar3 = 8;
    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;
    uVar12 = uVar18 - uVar17;
    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);
  }
  uVar7 = uVar11;
  if ((int)uVar17 <= (int)uVar11) {
    uVar7 = uVar17;
  }
  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);
  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);
  while( true ) {
    if (iVar14 <= iVar10) {
      iVar3 = 0;
      if (iVar14 != iVar10) goto LAB_000783d4;
      if (uVar18 <= uVar12) {
        iVar3 = 0;
        goto LAB_000783d4;
      }
    }
    iVar13 = (int)uVar11 >> 0x1f;
    local_30 = 0;
    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);
    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);
    if (uVar8 == 0) {
      trap(7);
    }
    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;
    if (iVar9 == extraout_v1 + 1) {
      do {
        uVar8 = uVar12 + uVar11;
        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;
        if (iVar14 <= iVar10) {
          iVar3 = 0;
          if (iVar10 != iVar14) goto LAB_000783d4;
          if (uVar18 <= uVar8) {
            iVar3 = 0;
            goto LAB_000783d4;
          }
        }
        local_30 = 0;
        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);
        uVar12 = uVar8;
      } while (extraout_v1_00 + 1 == iVar9);
      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);
    }
    else {
      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);
      uVar8 = uVar12;
    }
    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;
    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);
    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;
    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);
    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);
    **(undefined1 **)(local_30 + 8) = 0;
    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {
      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);
      *(char *)(iVar3 + 0x1f) = (char)uVar6;
      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);
      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);
      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);
    }
    uVar12 = uVar8 + uVar11;
    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;
    if (local_30 != 0) {
      (*pcVar5)();
    }
  }
  puVar16 = PTR_LAB_000f52c8;
  if (local_30 != 0) goto LAB_000785c4;
LAB_000783d4:
  while (local_2c != *(int *)puVar1) {
    puVar16 = PTR___stack_chk_fail_000f5540;
    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();
LAB_000785c4:
    (*(code *)(puVar16 + 0x1a94))();
  }
  return iVar3;
}


lui gp,0x8
addiu gp,gp,0x5034
addu gp,gp,t9
lw v1,0x0(a1)
addiu sp,sp,-0x70
lw v0,0x0(a0)
lw t0,-0x7d38(gp)
sw s8,0x68(sp)
lw v1,0x4(v1)
lw v0,0x4(v0)
sw s6,0x60(sp)
sw s1,0x4c(sp)
lw s8,0x24(v1)
lw s1,0x24(v0)
lw s6,0x0(v0)
multu a2,s8
sw s5,0x5c(sp)
sra v0,s8,0x1f
sw s4,0x58(sp)
sw s7,0x64(sp)
or s7,a0,zero
sw gp,0x10(sp)
mfhi s4
sw ra,0x6c(sp)
mflo s5
sw s3,0x54(sp)
mul v1,v0,a2
sw s2,0x50(sp)
sw s0,0x48(sp)
sw a1,0x38(sp)
sw t0,0x28(sp)
sw a3,0x2c(sp)
sw v0,0x24(sp)
lw a0,0x0(t0)
addu s4,v1,s4
sw a0,0x44(sp)
beq s8,s1,0x0007858c
_subu s2,s5,s8
lbu v0,0xc(s6)
bne v0,zero,0x000783d4
_li v0,0x8
lw v0,0x24(sp)
subu s2,s5,s8
subu s0,s4,v0
sltu v0,s5,s2
subu s0,s0,v0
slt v0,s1,s8
or v1,s1,zero
movz v1,s8,v0
lw v0,-0x7fac(gp)
sw v1,0x34(sp)
addiu v0,v0,-0x7e2c
sw v0,0x20(sp)
lw v0,-0x7fe4(gp)
sw v0,0x1c(sp)
lw v0,-0x7fd8(gp)
addiu v0,v0,0x1a94
sw v0,0x3c(sp)
slt v0,s0,s4
beq v0,zero,0x00078570
_lw t9,-0x7fc8(gp)
sra s3,s1,0x1f
or a0,s0,zero
sw zero,0x40(sp)
or a1,s2,zero
or a3,s1,zero
jalr t9
_or a2,s3,zero
lw a0,0x0(s7)
addiu a1,v1,0x1
lw v0,0x1c(sp)
lw v1,0x4(a0)
lw v0,0x4098(v0)
lw t0,0x24(v1)
teq t0,zero
divu v0,t0
mflo v0
addiu t0,v0,0x1
beq t0,a1,0x00078414
_lw gp,0x10(sp)
lw t9,0xcc(s6)
or a3,zero,zero
addiu a2,sp,0x40
jalr t9
_or a0,s6,zero
beq v0,zero,0x00078478
_lw gp,0x10(sp)
lw a0,0x40(sp)
bne a0,zero,0x000785c4
_lw t9,-0x7fd8(gp)
lw v1,0x28(sp)
lw a0,0x44(sp)
lw v1,0x0(v1)
bne a0,v1,0x000785b8
_lw ra,0x6c(sp)
lw s8,0x68(sp)
lw s7,0x64(sp)
lw s6,0x60(sp)
lw s5,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x70
addu a1,s2,s1
addu s0,s0,s3
sltu s2,a1,s2
addu s0,s2,s0
slt v0,s0,s4
beq v0,zero,0x0007859c
_or s2,a1,zero
lw t9,-0x7fc8(gp)
or a2,s3,zero
sw t0,0x30(sp)
or a3,s1,zero
sw zero,0x40(sp)
jalr t9
_or a0,s0,zero
lw t0,0x30(sp)
addiu a1,v1,0x1
beq a1,t0,0x00078414
_lw gp,0x10(sp)
lw t9,0xcc(s6)
or a3,zero,zero
addiu a2,sp,0x40
jalr t9
_or a0,s6,zero
bne v0,zero,0x000783c8
_lw gp,0x10(sp)
lw t9,0x20(sp)
jalr t9
_lw a0,0x40(sp)
bne v0,zero,0x000783c8
_lw gp,0x10(sp)
lw t9,-0x7fbc(gp)
or a2,s3,zero
or a3,s1,zero
or a0,s0,zero
jalr t9
_or a1,s2,zero
or a0,s0,zero
lw v0,0x40(sp)
or a1,s2,zero
lw gp,0x10(sp)
or a3,s8,zero
lw a2,0x24(sp)
lw v0,0x4(v0)
lw t9,-0x7fbc(gp)
addu v0,v0,v1
jalr t9
_sw v0,0x30(sp)
lw gp,0x10(sp)
lw a0,0x2c(sp)
lw a2,0x34(sp)
lw t9,-0x7d34(gp)
addu a1,a0,v1
jalr t9
_lw a0,0x30(sp)
or v0,s0,s2
lw v1,0x40(sp)
lw gp,0x10(sp)
lw v1,0x8(v1)
bne v0,zero,0x00078540
_sb zero,0x0(v1)
lw v1,0x80(sp)
bne v1,zero,0x00078544
_addu v0,s2,s1
lw v1,0x38(sp)
lw a1,0x30(sp)
lw v0,0x0(v1)
lw v0,0x4(v0)
lw v0,0x30(v0)
srl a0,v0,0x18
sb v0,0x1f(a1)
srl v1,v0,0x10
srl v0,v0,0x8
sb a0,0x1c(a1)
sb v1,0x1d(a1)
sb v0,0x1e(a1)
addu v0,s2,s1
lw a0,0x40(sp)
addu s0,s0,s3
sltu s2,v0,s2
addu s0,s2,s0
beq a0,zero,0x00078354
_or s2,v0,zero
lw t9,0x3c(sp)
jalr t9
_nop
b 0x00078354
_lw gp,0x10(sp)
bne s4,s0,0x000783d4
_or v0,zero,zero
sltu v0,s2,s5
bne v0,zero,0x00078360
_lw t9,-0x7fc8(gp)
b 0x000783d4
_or v0,zero,zero
subu s0,s4,v0
sltu v0,s5,s2
b 0x00078324
_subu s0,s0,v0
bne s0,s4,0x000783d4
_or v0,zero,zero
sltu v0,a1,s5
bne v0,zero,0x00078434
_lw t9,-0x7fc8(gp)
b 0x000783d4
_or v0,zero,zero
lw t9,-0x7d60(gp)
jalr t9
_nop
addiu t9,t9,0x1a94
jalr t9
_sw v0,0x1c(sp)
lw gp,0x10(sp)
b 0x000783d4
_lw v0,0x1c(sp)
(translation_unit "int FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)" identifier (parameter_list "(int *param_1,int *param_2,uint param_3,int param_4,int param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int extraout_v1_01;" primitive_type identifier ;) (declaration "int extraout_v1_02;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "puVar16 = PTR_DAT_000f52bc;" (assignment_expression "puVar16 = PTR_DAT_000f52bc" identifier = identifier) ;) (expression_statement "uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);" (assignment_expression "uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_2 + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(*param_2 + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x24)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x24" (pointer_expression "*(int *)(*param_2 + 4)" * (cast_expression "(int *)(*param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 4)" ( (binary_expression "*param_2 + 4" (pointer_expression "*param_2" * identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar11 = (*(int **)(*param_1 + 4))[9];" (assignment_expression "uVar11 = (*(int **)(*param_1 + 4))[9]" identifier = (subscript_expression "(*(int **)(*param_1 + 4))[9]" (parenthesized_expression "(*(int **)(*param_1 + 4))" ( (pointer_expression "*(int **)(*param_1 + 4)" * (cast_expression "(int **)(*param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) )) [ number_literal ])) ;) (expression_statement "iVar15 = **(int **)(*param_1 + 4);" (assignment_expression "iVar15 = **(int **)(*param_1 + 4)" identifier = (pointer_expression "**(int **)(*param_1 + 4)" * (pointer_expression "*(int **)(*param_1 + 4)" * (cast_expression "(int **)(*param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))))) ;) (expression_statement "uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);" (assignment_expression "uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17)" identifier = (call_expression "(uint)((ulonglong)param_3 * (ulonglong)uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)param_3 * (ulonglong)uVar17)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar2 = (int)uVar17 >> 0x1f;" (assignment_expression "iVar2 = (int)uVar17 >> 0x1f" identifier = (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);" (assignment_expression "iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" identifier = (binary_expression "iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" (binary_expression "iVar2 * param_3" identifier * identifier) + (cast_expression "(int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17 >> 0x20" (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))))) ;) (expression_statement "uVar12 = uVar18 - uVar17;" (assignment_expression "uVar12 = uVar18 - uVar17" identifier = (binary_expression "uVar18 - uVar17" identifier - identifier)) ;) (if_statement "if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" if (parenthesized_expression "(uVar17 == uVar11)" ( (binary_expression "uVar17 == uVar11" identifier == identifier) )) (compound_statement "{\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" { (expression_statement "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);" (assignment_expression "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12)" identifier = (binary_expression "(iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (parenthesized_expression "(iVar14 - iVar2)" ( (binary_expression "iVar14 - iVar2" identifier - identifier) )) - (call_expression "(uint)(uVar18 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 < uVar12)" ( (binary_expression "uVar18 < uVar12" identifier < identifier) ))))) ;) }) (else_clause "else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" else (compound_statement "{\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;" if (parenthesized_expression "(*(char *)(iVar15 + 0xc) != '\0')" ( (binary_expression "*(char *)(iVar15 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar15 + 0xc)" * (cast_expression "(char *)(iVar15 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0xc)" ( (binary_expression "iVar15 + 0xc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (expression_statement "uVar12 = uVar18 - uVar17;" (assignment_expression "uVar12 = uVar18 - uVar17" identifier = (binary_expression "uVar18 - uVar17" identifier - identifier)) ;) (expression_statement "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);" (assignment_expression "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12)" identifier = (binary_expression "(iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (parenthesized_expression "(iVar14 - iVar2)" ( (binary_expression "iVar14 - iVar2" identifier - identifier) )) - (call_expression "(uint)(uVar18 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 < uVar12)" ( (binary_expression "uVar18 < uVar12" identifier < identifier) ))))) ;) }))) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) (if_statement "if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }" if (parenthesized_expression "((int)uVar17 <= (int)uVar11)" ( (binary_expression "(int)uVar17 <= (int)uVar11" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar7 = uVar17;\n  }" { (expression_statement "uVar7 = uVar17;" (assignment_expression "uVar7 = uVar17" identifier = identifier) ;) })) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52f4 + -0x7e2c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52f4 + -0x7e2c)" ( (binary_expression "PTR_LAB_000f52f4 + -0x7e2c" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94)" identifier = (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }" { (if_statement "if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }" if (parenthesized_expression "(iVar14 <= iVar10)" ( (binary_expression "iVar14 <= iVar10" identifier <= identifier) )) (compound_statement "{\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar14 != iVar10) goto LAB_000783d4;" if (parenthesized_expression "(iVar14 != iVar10)" ( (binary_expression "iVar14 != iVar10" identifier != identifier) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (if_statement "if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }" if (parenthesized_expression "(uVar18 <= uVar12)" ( (binary_expression "uVar18 <= uVar12" identifier <= identifier) )) (compound_statement "{\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;) })) })) (expression_statement "iVar13 = (int)uVar11 >> 0x1f;" (assignment_expression "iVar13 = (int)uVar11 >> 0x1f" identifier = (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52d8)" ( (pointer_expression "*(code *)PTR_FUN_000f52d8" * (cast_expression "(code *)PTR_FUN_000f52d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar12,iVar13,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);" (assignment_expression "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_1 + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(*param_1 + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 4) + 0x24)" ( (binary_expression "*(int *)(*param_1 + 4) + 0x24" (pointer_expression "*(int *)(*param_1 + 4)" * (cast_expression "(int *)(*param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar8 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;" (assignment_expression "iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1" identifier = (binary_expression "*(uint *)(puVar16 + 0x4098) / uVar8 + 1" (binary_expression "*(uint *)(puVar16 + 0x4098) / uVar8" (pointer_expression "*(uint *)(puVar16 + 0x4098)" * (cast_expression "(uint *)(puVar16 + 0x4098)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x4098)" ( (binary_expression "puVar16 + 0x4098" identifier + number_literal) )))) / identifier) + number_literal)) ;) (if_statement "if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" if (parenthesized_expression "(iVar9 == extraout_v1 + 1)" ( (binary_expression "iVar9 == extraout_v1 + 1" identifier == (binary_expression "extraout_v1 + 1" identifier + number_literal)) )) (compound_statement "{\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }" { (do_statement "do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);" do (compound_statement "{\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      }" { (expression_statement "uVar8 = uVar12 + uVar11;" (assignment_expression "uVar8 = uVar12 + uVar11" identifier = (binary_expression "uVar12 + uVar11" identifier + identifier)) ;) (expression_statement "iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;" (assignment_expression "iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13" identifier = (binary_expression "(uint)(uVar8 < uVar12) + iVar10 + iVar13" (binary_expression "(uint)(uVar8 < uVar12) + iVar10" (call_expression "(uint)(uVar8 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar12)" ( (binary_expression "uVar8 < uVar12" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }" if (parenthesized_expression "(iVar14 <= iVar10)" ( (binary_expression "iVar14 <= iVar10" identifier <= identifier) )) (compound_statement "{\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar10 != iVar14) goto LAB_000783d4;" if (parenthesized_expression "(iVar10 != iVar14)" ( (binary_expression "iVar10 != iVar14" identifier != identifier) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (if_statement "if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }" if (parenthesized_expression "(uVar18 <= uVar8)" ( (binary_expression "uVar18 <= uVar8" identifier <= identifier) )) (compound_statement "{\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;) })) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52d8)" ( (pointer_expression "*(code *)PTR_FUN_000f52d8" * (cast_expression "(code *)PTR_FUN_000f52d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar8,iVar13,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(extraout_v1_00 + 1 == iVar9)" ( (binary_expression "extraout_v1_00 + 1 == iVar9" (binary_expression "extraout_v1_00 + 1" identifier + number_literal) == identifier) )) ;) (expression_statement "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar15 + 0xcc))" ( (pointer_expression "**(code **)(iVar15 + 0xcc)" * (pointer_expression "*(code **)(iVar15 + 0xcc)" * (cast_expression "(code **)(iVar15 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0xcc)" ( (binary_expression "iVar15 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar15,extraout_v1_00 + 1,&local_30,0)" ( identifier , (binary_expression "extraout_v1_00 + 1" identifier + number_literal) , (pointer_expression "&local_30" & identifier) , number_literal )))) ;) }) (else_clause "else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" else (compound_statement "{\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" { (expression_statement "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar15 + 0xcc))" ( (pointer_expression "**(code **)(iVar15 + 0xcc)" * (pointer_expression "*(code **)(iVar15 + 0xcc)" * (cast_expression "(code **)(iVar15 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0xcc)" ( (binary_expression "iVar15 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar15,extraout_v1 + 1,&local_30,0)" ( identifier , (binary_expression "extraout_v1 + 1" identifier + number_literal) , (pointer_expression "&local_30" & identifier) , number_literal )))) ;) (expression_statement "uVar8 = uVar12;" (assignment_expression "uVar8 = uVar12" identifier = identifier) ;) }))) (if_statement "if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;" if (parenthesized_expression "((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0))" ( (binary_expression "(iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar3 = (*pcVar4)(local_30), iVar3 != 0)" ( (comma_expression "iVar3 = (*pcVar4)(local_30), iVar3 != 0" (assignment_expression "iVar3 = (*pcVar4)(local_30)" identifier = (call_expression "(*pcVar4)(local_30)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(local_30)" ( identifier )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52e4)" ( (pointer_expression "*(code *)PTR_FUN_000f52e4" * (cast_expression "(code *)PTR_FUN_000f52e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar8,iVar13,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;" (assignment_expression "iVar3 = *(int *)(local_30 + 4) + extraout_v1_01" identifier = (binary_expression "*(int *)(local_30 + 4) + extraout_v1_01" (pointer_expression "*(int *)(local_30 + 4)" * (cast_expression "(int *)(local_30 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + 4)" ( (binary_expression "local_30 + 4" identifier + number_literal) )))) + identifier)) ;) (expression_statement "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);" (call_expression "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_000f52e4)" ( (pointer_expression "*(code *)PTR_FUN_000f52e4" * (cast_expression "(code *)PTR_FUN_000f52e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar8,iVar2,uVar17)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);" (call_expression "(*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7)" (parenthesized_expression "(*(code *)PTR_memcpy_000f556c)" ( (pointer_expression "*(code *)PTR_memcpy_000f556c" * (cast_expression "(code *)PTR_memcpy_000f556c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3,param_4 + extraout_v1_02,uVar7)" ( identifier , (binary_expression "param_4 + extraout_v1_02" identifier + identifier) , identifier ))) ;) (expression_statement "**(undefined1 **)(local_30 + 8) = 0;" (assignment_expression "**(undefined1 **)(local_30 + 8) = 0" (pointer_expression "**(undefined1 **)(local_30 + 8)" * (pointer_expression "*(undefined1 **)(local_30 + 8)" * (cast_expression "(undefined1 **)(local_30 + 8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_30 + 8)" ( (binary_expression "local_30 + 8" identifier + number_literal) ))))) = number_literal) ;) (if_statement "if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }" if (parenthesized_expression "((iVar10 == 0 && uVar8 == 0) && (param_5 == 0))" ( (binary_expression "(iVar10 == 0 && uVar8 == 0) && (param_5 == 0)" (parenthesized_expression "(iVar10 == 0 && uVar8 == 0)" ( (binary_expression "iVar10 == 0 && uVar8 == 0" (binary_expression "iVar10 == 0" identifier == number_literal) && (binary_expression "uVar8 == 0" identifier == number_literal)) )) && (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }" { (expression_statement "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);" (assignment_expression "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x30)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x30" (pointer_expression "*(int *)(*param_2 + 4)" * (cast_expression "(int *)(*param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 4)" ( (binary_expression "*param_2 + 4" (pointer_expression "*param_2" * identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(char *)(iVar3 + 0x1f) = (char)uVar6;" (assignment_expression "*(char *)(iVar3 + 0x1f) = (char)uVar6" (pointer_expression "*(char *)(iVar3 + 0x1f)" * (cast_expression "(char *)(iVar3 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1f)" ( (binary_expression "iVar3 + 0x1f" identifier + number_literal) )))) = (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);" (assignment_expression "*(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18)" (pointer_expression "*(char *)(iVar3 + 0x1c)" * (cast_expression "(char *)(iVar3 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x18)" ( (binary_expression "(uint)uVar6 >> 0x18" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);" (assignment_expression "*(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10)" (pointer_expression "*(char *)(iVar3 + 0x1d)" * (cast_expression "(char *)(iVar3 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1d)" ( (binary_expression "iVar3 + 0x1d" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x10)" ( (binary_expression "(uint)uVar6 >> 0x10" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);" (assignment_expression "*(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8)" (pointer_expression "*(char *)(iVar3 + 0x1e)" * (cast_expression "(char *)(iVar3 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1e)" ( (binary_expression "iVar3 + 0x1e" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 8)" ( (binary_expression "(uint)uVar6 >> 8" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "uVar12 = uVar8 + uVar11;" (assignment_expression "uVar12 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) (expression_statement "iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;" (assignment_expression "iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13" identifier = (binary_expression "(uint)(uVar12 < uVar8) + iVar10 + iVar13" (binary_expression "(uint)(uVar12 < uVar8) + iVar10" (call_expression "(uint)(uVar12 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 < uVar8)" ( (binary_expression "uVar12 < uVar8" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (local_30 != 0) {\n      (*pcVar5)();\n    }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n      (*pcVar5)();\n    }" { (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) })) (expression_statement "puVar16 = PTR_LAB_000f52c8;" (assignment_expression "puVar16 = PTR_LAB_000f52c8" identifier = identifier) ;) (if_statement "if (local_30 != 0) goto LAB_000785c4;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000785c4;" goto statement_identifier ;)) (labeled_statement "LAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" statement_identifier : (while_statement "while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" while (parenthesized_expression "(local_2c != *(int *)puVar1)" ( (binary_expression "local_2c != *(int *)puVar1" identifier != (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" { (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();" (assignment_expression "iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();" statement_identifier : (expression_statement "(*(code *)(puVar16 + 0x1a94))();" (call_expression "(*(code *)(puVar16 + 0x1a94))()" (parenthesized_expression "(*(code *)(puVar16 + 0x1a94))" ( (pointer_expression "*(code *)(puVar16 + 0x1a94)" * (cast_expression "(code *)(puVar16 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1a94)" ( (binary_expression "puVar16 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* DWARF original prototype: int backupOnePage(sqlite3_backup * p, Pgno iSrcPg, u8 * zSrcData, int\n   bUpdate, sqlite3_backup * p) */\n\nint backupOnePage(sqlite3_backup *p,Pgno iSrcPg,u8 *zSrcData,int bUpdate,sqlite3_backup *p_1)\n\n{\n  undefined *puVar1;\n  Vdbe *pVVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  int iVar15;\n  sqlite3 *psVar16;\n  undefined *puVar17;\n  uint uVar18;\n  uint uVar19;\n  DbPage *pDestPg;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar17 = PTR_DAT_000f52bc;\n  pVVar2 = p->pDestDb->pVdbe;\n  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24);\n  uVar12 = pVVar2->pc;\n  psVar16 = pVVar2->db;\n  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);\n  iVar3 = (int)uVar18 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar15 = iVar3 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);\n  uVar13 = uVar19 - uVar18;\n  if (uVar18 == uVar12) {\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }\n  else {\n    iVar4 = 8;\n    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;\n    uVar13 = uVar19 - uVar18;\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }\n  uVar8 = uVar12;\n  if ((int)uVar18 <= (int)uVar12) {\n    uVar8 = uVar18;\n  }\n  pcVar5 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar6 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar15 <= iVar11) {\n      iVar4 = 0;\n      if (iVar15 != iVar11) goto LAB_000783d4;\n      if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar14 = (int)uVar12 >> 0x1f;\n    pDestPg = (DbPage *)0x0;\n    (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12);\n    uVar9 = p->pDestDb->pVdbe->pc;\n    if (uVar9 == 0) {\n      trap(7);\n    }\n    iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1;\n    if (iVar10 == extraout_v1 + 1) {\n      do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);\n    }\n    else {\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }\n    if ((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)) break;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12);\n    iVar4 = (int)pDestPg->pData + extraout_v1_01;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18);\n    (*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8);\n    *(undefined1 *)pDestPg->pExtra = 0;\n    if ((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);\n      *(char *)(iVar4 + 0x1f) = (char)uVar7;\n      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);\n    }\n    uVar13 = uVar9 + uVar12;\n    iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14;\n    if (pDestPg != (DbPage *)0x0) {\n      (*pcVar6)();\n    }\n  }\n  puVar17 = PTR_LAB_000f52c8;\n  if (pDestPg != (DbPage *)0x0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar17 = PTR___stack_chk_fail_000f5540;\n    iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar17 + 0x1a94))();\n  }\n  return iVar4;\n}\n\n" comment (function_definition "int backupOnePage(sqlite3_backup *p,Pgno iSrcPg,u8 *zSrcData,int bUpdate,sqlite3_backup *p_1)\n\n{\n  undefined *puVar1;\n  Vdbe *pVVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  int iVar15;\n  sqlite3 *psVar16;\n  undefined *puVar17;\n  uint uVar18;\n  uint uVar19;\n  DbPage *pDestPg;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar17 = PTR_DAT_000f52bc;\n  pVVar2 = p->pDestDb->pVdbe;\n  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24);\n  uVar12 = pVVar2->pc;\n  psVar16 = pVVar2->db;\n  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);\n  iVar3 = (int)uVar18 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar15 = iVar3 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);\n  uVar13 = uVar19 - uVar18;\n  if (uVar18 == uVar12) {\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }\n  else {\n    iVar4 = 8;\n    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;\n    uVar13 = uVar19 - uVar18;\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }\n  uVar8 = uVar12;\n  if ((int)uVar18 <= (int)uVar12) {\n    uVar8 = uVar18;\n  }\n  pcVar5 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar6 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar15 <= iVar11) {\n      iVar4 = 0;\n      if (iVar15 != iVar11) goto LAB_000783d4;\n      if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar14 = (int)uVar12 >> 0x1f;\n    pDestPg = (DbPage *)0x0;\n    (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12);\n    uVar9 = p->pDestDb->pVdbe->pc;\n    if (uVar9 == 0) {\n      trap(7);\n    }\n    iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1;\n    if (iVar10 == extraout_v1 + 1) {\n      do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);\n    }\n    else {\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }\n    if ((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)) break;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12);\n    iVar4 = (int)pDestPg->pData + extraout_v1_01;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18);\n    (*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8);\n    *(undefined1 *)pDestPg->pExtra = 0;\n    if ((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);\n      *(char *)(iVar4 + 0x1f) = (char)uVar7;\n      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);\n    }\n    uVar13 = uVar9 + uVar12;\n    iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14;\n    if (pDestPg != (DbPage *)0x0) {\n      (*pcVar6)();\n    }\n  }\n  puVar17 = PTR_LAB_000f52c8;\n  if (pDestPg != (DbPage *)0x0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar17 = PTR___stack_chk_fail_000f5540;\n    iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar17 + 0x1a94))();\n  }\n  return iVar4;\n}" primitive_type (function_declarator "backupOnePage(sqlite3_backup *p,Pgno iSrcPg,u8 *zSrcData,int bUpdate,sqlite3_backup *p_1)" identifier (parameter_list "(sqlite3_backup *p,Pgno iSrcPg,u8 *zSrcData,int bUpdate,sqlite3_backup *p_1)" ( (parameter_declaration "sqlite3_backup *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "Pgno iSrcPg" type_identifier identifier) , (parameter_declaration "u8 *zSrcData" type_identifier (pointer_declarator "*zSrcData" * identifier)) , (parameter_declaration "int bUpdate" primitive_type identifier) , (parameter_declaration "sqlite3_backup *p_1" type_identifier (pointer_declarator "*p_1" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  Vdbe *pVVar2;\n  int iVar3;\n  int iVar4;\n  code *pcVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  uint uVar8;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar9;\n  int iVar10;\n  int iVar11;\n  uint uVar12;\n  uint uVar13;\n  int iVar14;\n  int iVar15;\n  sqlite3 *psVar16;\n  undefined *puVar17;\n  uint uVar18;\n  uint uVar19;\n  DbPage *pDestPg;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar17 = PTR_DAT_000f52bc;\n  pVVar2 = p->pDestDb->pVdbe;\n  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24);\n  uVar12 = pVVar2->pc;\n  psVar16 = pVVar2->db;\n  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);\n  iVar3 = (int)uVar18 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar15 = iVar3 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);\n  uVar13 = uVar19 - uVar18;\n  if (uVar18 == uVar12) {\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }\n  else {\n    iVar4 = 8;\n    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;\n    uVar13 = uVar19 - uVar18;\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }\n  uVar8 = uVar12;\n  if ((int)uVar18 <= (int)uVar12) {\n    uVar8 = uVar18;\n  }\n  pcVar5 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar6 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar15 <= iVar11) {\n      iVar4 = 0;\n      if (iVar15 != iVar11) goto LAB_000783d4;\n      if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar14 = (int)uVar12 >> 0x1f;\n    pDestPg = (DbPage *)0x0;\n    (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12);\n    uVar9 = p->pDestDb->pVdbe->pc;\n    if (uVar9 == 0) {\n      trap(7);\n    }\n    iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1;\n    if (iVar10 == extraout_v1 + 1) {\n      do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);\n    }\n    else {\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }\n    if ((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)) break;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12);\n    iVar4 = (int)pDestPg->pData + extraout_v1_01;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18);\n    (*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8);\n    *(undefined1 *)pDestPg->pExtra = 0;\n    if ((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);\n      *(char *)(iVar4 + 0x1f) = (char)uVar7;\n      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);\n    }\n    uVar13 = uVar9 + uVar12;\n    iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14;\n    if (pDestPg != (DbPage *)0x0) {\n      (*pcVar6)();\n    }\n  }\n  puVar17 = PTR_LAB_000f52c8;\n  if (pDestPg != (DbPage *)0x0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar17 = PTR___stack_chk_fail_000f5540;\n    iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar17 + 0x1a94))();\n  }\n  return iVar4;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "Vdbe *pVVar2;" type_identifier (pointer_declarator "*pVVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int extraout_v1_01;" primitive_type identifier ;) (declaration "int extraout_v1_02;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type 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 "sqlite3 *psVar16;" type_identifier (pointer_declarator "*psVar16" * identifier) ;) (declaration "undefined *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "DbPage *pDestPg;" type_identifier (pointer_declarator "*pDestPg" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "puVar17 = PTR_DAT_000f52bc;" (assignment_expression "puVar17 = PTR_DAT_000f52bc" identifier = identifier) ;) (expression_statement "pVVar2 = p->pDestDb->pVdbe;" (assignment_expression "pVVar2 = p->pDestDb->pVdbe" identifier = (field_expression "p->pDestDb->pVdbe" (field_expression "p->pDestDb" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24);" (assignment_expression "uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)iSrcPg + 4) + 0x24)" ( (binary_expression "*(int *)(*(int *)iSrcPg + 4) + 0x24" (pointer_expression "*(int *)(*(int *)iSrcPg + 4)" * (cast_expression "(int *)(*(int *)iSrcPg + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)iSrcPg + 4)" ( (binary_expression "*(int *)iSrcPg + 4" (pointer_expression "*(int *)iSrcPg" * (cast_expression "(int *)iSrcPg" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar12 = pVVar2->pc;" (assignment_expression "uVar12 = pVVar2->pc" identifier = (field_expression "pVVar2->pc" identifier -> field_identifier)) ;) (expression_statement "psVar16 = pVVar2->db;" (assignment_expression "psVar16 = pVVar2->db" identifier = (field_expression "pVVar2->db" identifier -> field_identifier)) ;) (expression_statement "uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);" (assignment_expression "uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18)" identifier = (call_expression "(uint)(ZEXT48(zSrcData) * (ulonglong)uVar18)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(ZEXT48(zSrcData) * (ulonglong)uVar18)" ( (binary_expression "ZEXT48(zSrcData) * (ulonglong)uVar18" (call_expression "ZEXT48(zSrcData)" identifier (argument_list "(zSrcData)" ( identifier ))) * (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar3 = (int)uVar18 >> 0x1f;" (assignment_expression "iVar3 = (int)uVar18 >> 0x1f" identifier = (binary_expression "(int)uVar18 >> 0x1f" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar15 = iVar3 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);" (assignment_expression "iVar15 = iVar3 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20)" identifier = (binary_expression "iVar3 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20)" (binary_expression "iVar3 * (int)zSrcData" identifier * (cast_expression "(int)zSrcData" ( (type_descriptor "int" primitive_type) ) identifier)) + (cast_expression "(int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20)" ( (binary_expression "ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20" (binary_expression "ZEXT48(zSrcData) * (ulonglong)uVar18" (call_expression "ZEXT48(zSrcData)" identifier (argument_list "(zSrcData)" ( identifier ))) * (cast_expression "(ulonglong)uVar18" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))))) ;) (expression_statement "uVar13 = uVar19 - uVar18;" (assignment_expression "uVar13 = uVar19 - uVar18" identifier = (binary_expression "uVar19 - uVar18" identifier - identifier)) ;) (if_statement "if (uVar18 == uVar12) {\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }\n  else {\n    iVar4 = 8;\n    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;\n    uVar13 = uVar19 - uVar18;\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }" if (parenthesized_expression "(uVar18 == uVar12)" ( (binary_expression "uVar18 == uVar12" identifier == identifier) )) (compound_statement "{\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }" { (expression_statement "iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);" (assignment_expression "iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13)" identifier = (binary_expression "(iVar15 - iVar3) - (uint)(uVar19 < uVar13)" (parenthesized_expression "(iVar15 - iVar3)" ( (binary_expression "iVar15 - iVar3" identifier - identifier) )) - (call_expression "(uint)(uVar19 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 < uVar13)" ( (binary_expression "uVar19 < uVar13" identifier < identifier) ))))) ;) }) (else_clause "else {\n    iVar4 = 8;\n    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;\n    uVar13 = uVar19 - uVar18;\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }" else (compound_statement "{\n    iVar4 = 8;\n    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;\n    uVar13 = uVar19 - uVar18;\n    iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);\n  }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) (if_statement "if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;" if (parenthesized_expression "(*(char *)&psVar16->mutex != '\0')" ( (binary_expression "*(char *)&psVar16->mutex != '\0'" (pointer_expression "*(char *)&psVar16->mutex" * (cast_expression "(char *)&psVar16->mutex" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&psVar16->mutex" & (field_expression "psVar16->mutex" identifier -> field_identifier)))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (expression_statement "uVar13 = uVar19 - uVar18;" (assignment_expression "uVar13 = uVar19 - uVar18" identifier = (binary_expression "uVar19 - uVar18" identifier - identifier)) ;) (expression_statement "iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13);" (assignment_expression "iVar11 = (iVar15 - iVar3) - (uint)(uVar19 < uVar13)" identifier = (binary_expression "(iVar15 - iVar3) - (uint)(uVar19 < uVar13)" (parenthesized_expression "(iVar15 - iVar3)" ( (binary_expression "iVar15 - iVar3" identifier - identifier) )) - (call_expression "(uint)(uVar19 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 < uVar13)" ( (binary_expression "uVar19 < uVar13" identifier < identifier) ))))) ;) }))) (expression_statement "uVar8 = uVar12;" (assignment_expression "uVar8 = uVar12" identifier = identifier) ;) (if_statement "if ((int)uVar18 <= (int)uVar12) {\n    uVar8 = uVar18;\n  }" if (parenthesized_expression "((int)uVar18 <= (int)uVar12)" ( (binary_expression "(int)uVar18 <= (int)uVar12" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar8 = uVar18;\n  }" { (expression_statement "uVar8 = uVar18;" (assignment_expression "uVar8 = uVar18" identifier = identifier) ;) })) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f52f4 + -0x7e2c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52f4 + -0x7e2c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52f4 + -0x7e2c)" ( (binary_expression "PTR_LAB_000f52f4 + -0x7e2c" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_000f52c8 + 0x1a94);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_000f52c8 + 0x1a94)" identifier = (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    if (iVar15 <= iVar11) {\n      iVar4 = 0;\n      if (iVar15 != iVar11) goto LAB_000783d4;\n      if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar14 = (int)uVar12 >> 0x1f;\n    pDestPg = (DbPage *)0x0;\n    (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12);\n    uVar9 = p->pDestDb->pVdbe->pc;\n    if (uVar9 == 0) {\n      trap(7);\n    }\n    iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1;\n    if (iVar10 == extraout_v1 + 1) {\n      do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);\n    }\n    else {\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }\n    if ((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)) break;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12);\n    iVar4 = (int)pDestPg->pData + extraout_v1_01;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18);\n    (*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8);\n    *(undefined1 *)pDestPg->pExtra = 0;\n    if ((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);\n      *(char *)(iVar4 + 0x1f) = (char)uVar7;\n      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);\n    }\n    uVar13 = uVar9 + uVar12;\n    iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14;\n    if (pDestPg != (DbPage *)0x0) {\n      (*pcVar6)();\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (iVar15 <= iVar11) {\n      iVar4 = 0;\n      if (iVar15 != iVar11) goto LAB_000783d4;\n      if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar14 = (int)uVar12 >> 0x1f;\n    pDestPg = (DbPage *)0x0;\n    (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12);\n    uVar9 = p->pDestDb->pVdbe->pc;\n    if (uVar9 == 0) {\n      trap(7);\n    }\n    iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1;\n    if (iVar10 == extraout_v1 + 1) {\n      do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);\n    }\n    else {\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }\n    if ((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)) break;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12);\n    iVar4 = (int)pDestPg->pData + extraout_v1_01;\n    (*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18);\n    (*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8);\n    *(undefined1 *)pDestPg->pExtra = 0;\n    if ((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);\n      *(char *)(iVar4 + 0x1f) = (char)uVar7;\n      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);\n    }\n    uVar13 = uVar9 + uVar12;\n    iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14;\n    if (pDestPg != (DbPage *)0x0) {\n      (*pcVar6)();\n    }\n  }" { (if_statement "if (iVar15 <= iVar11) {\n      iVar4 = 0;\n      if (iVar15 != iVar11) goto LAB_000783d4;\n      if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }\n    }" if (parenthesized_expression "(iVar15 <= iVar11)" ( (binary_expression "iVar15 <= iVar11" identifier <= identifier) )) (compound_statement "{\n      iVar4 = 0;\n      if (iVar15 != iVar11) goto LAB_000783d4;\n      if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar15 != iVar11) goto LAB_000783d4;" if (parenthesized_expression "(iVar15 != iVar11)" ( (binary_expression "iVar15 != iVar11" identifier != identifier) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (if_statement "if (uVar19 <= uVar13) {\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }" if (parenthesized_expression "(uVar19 <= uVar13)" ( (binary_expression "uVar19 <= uVar13" identifier <= identifier) )) (compound_statement "{\n        iVar4 = 0;\n        goto LAB_000783d4;\n      }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;) })) })) (expression_statement "iVar14 = (int)uVar12 >> 0x1f;" (assignment_expression "iVar14 = (int)uVar12 >> 0x1f" identifier = (binary_expression "(int)uVar12 >> 0x1f" (cast_expression "(int)uVar12" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "pDestPg = (DbPage *)0x0;" (assignment_expression "pDestPg = (DbPage *)0x0" identifier = (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12);" (call_expression "(*(code *)PTR___divdi3_000f52d8)(iVar11,uVar13,iVar14,uVar12)" (parenthesized_expression "(*(code *)PTR___divdi3_000f52d8)" ( (pointer_expression "*(code *)PTR___divdi3_000f52d8" * (cast_expression "(code *)PTR___divdi3_000f52d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11,uVar13,iVar14,uVar12)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar9 = p->pDestDb->pVdbe->pc;" (assignment_expression "uVar9 = p->pDestDb->pVdbe->pc" identifier = (field_expression "p->pDestDb->pVdbe->pc" (field_expression "p->pDestDb->pVdbe" (field_expression "p->pDestDb" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (if_statement "if (uVar9 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar9 == 0)" ( (binary_expression "uVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1;" (assignment_expression "iVar10 = *(uint *)(puVar17 + 0x4098) / uVar9 + 1" identifier = (binary_expression "*(uint *)(puVar17 + 0x4098) / uVar9 + 1" (binary_expression "*(uint *)(puVar17 + 0x4098) / uVar9" (pointer_expression "*(uint *)(puVar17 + 0x4098)" * (cast_expression "(uint *)(puVar17 + 0x4098)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x4098)" ( (binary_expression "puVar17 + 0x4098" identifier + number_literal) )))) / identifier) + number_literal)) ;) (if_statement "if (iVar10 == extraout_v1 + 1) {\n      do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);\n    }\n    else {\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }" if (parenthesized_expression "(iVar10 == extraout_v1 + 1)" ( (binary_expression "iVar10 == extraout_v1 + 1" identifier == (binary_expression "extraout_v1 + 1" identifier + number_literal)) )) (compound_statement "{\n      do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);\n    }" { (do_statement "do {\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      } while (extraout_v1_00 + 1 == iVar10);" do (compound_statement "{\n        uVar9 = uVar13 + uVar12;\n        iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;\n        if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        pDestPg = (DbPage *)0x0;\n        (*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);\n        uVar13 = uVar9;\n      }" { (expression_statement "uVar9 = uVar13 + uVar12;" (assignment_expression "uVar9 = uVar13 + uVar12" identifier = (binary_expression "uVar13 + uVar12" identifier + identifier)) ;) (expression_statement "iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14;" (assignment_expression "iVar11 = (uint)(uVar9 < uVar13) + iVar11 + iVar14" identifier = (binary_expression "(uint)(uVar9 < uVar13) + iVar11 + iVar14" (binary_expression "(uint)(uVar9 < uVar13) + iVar11" (call_expression "(uint)(uVar9 < uVar13)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar9 < uVar13)" ( (binary_expression "uVar9 < uVar13" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (iVar15 <= iVar11) {\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }" if (parenthesized_expression "(iVar15 <= iVar11)" ( (binary_expression "iVar15 <= iVar11" identifier <= identifier) )) (compound_statement "{\n          iVar4 = 0;\n          if (iVar11 != iVar15) goto LAB_000783d4;\n          if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }\n        }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar11 != iVar15) goto LAB_000783d4;" if (parenthesized_expression "(iVar11 != iVar15)" ( (binary_expression "iVar11 != iVar15" identifier != identifier) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (if_statement "if (uVar19 <= uVar9) {\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }" if (parenthesized_expression "(uVar19 <= uVar9)" ( (binary_expression "uVar19 <= uVar9" identifier <= identifier) )) (compound_statement "{\n            iVar4 = 0;\n            goto LAB_000783d4;\n          }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;) })) })) (expression_statement "pDestPg = (DbPage *)0x0;" (assignment_expression "pDestPg = (DbPage *)0x0" identifier = (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12);" (call_expression "(*(code *)PTR___divdi3_000f52d8)(iVar11,uVar9,iVar14,uVar12)" (parenthesized_expression "(*(code *)PTR___divdi3_000f52d8)" ( (pointer_expression "*(code *)PTR___divdi3_000f52d8" * (cast_expression "(code *)PTR___divdi3_000f52d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11,uVar9,iVar14,uVar12)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar13 = uVar9;" (assignment_expression "uVar13 = uVar9" identifier = identifier) ;) }) while (parenthesized_expression "(extraout_v1_00 + 1 == iVar10)" ( (binary_expression "extraout_v1_00 + 1 == iVar10" (binary_expression "extraout_v1_00 + 1" identifier + number_literal) == identifier) )) ;) (expression_statement "iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0);" (assignment_expression "iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0)" identifier = (call_expression "(*(code *)psVar16->pTraceArg)(psVar16,extraout_v1_00 + 1,&pDestPg,0)" (parenthesized_expression "(*(code *)psVar16->pTraceArg)" ( (pointer_expression "*(code *)psVar16->pTraceArg" * (cast_expression "(code *)psVar16->pTraceArg" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "psVar16->pTraceArg" identifier -> field_identifier))) )) (argument_list "(psVar16,extraout_v1_00 + 1,&pDestPg,0)" ( identifier , (binary_expression "extraout_v1_00 + 1" identifier + number_literal) , (pointer_expression "&pDestPg" & identifier) , number_literal )))) ;) }) (else_clause "else {\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }" else (compound_statement "{\n      iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);\n      uVar9 = uVar13;\n    }" { (expression_statement "iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0);" (assignment_expression "iVar4 = (*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0)" identifier = (call_expression "(*(code *)psVar16->pTraceArg)(psVar16,extraout_v1 + 1,&pDestPg,0)" (parenthesized_expression "(*(code *)psVar16->pTraceArg)" ( (pointer_expression "*(code *)psVar16->pTraceArg" * (cast_expression "(code *)psVar16->pTraceArg" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "psVar16->pTraceArg" identifier -> field_identifier))) )) (argument_list "(psVar16,extraout_v1 + 1,&pDestPg,0)" ( identifier , (binary_expression "extraout_v1 + 1" identifier + number_literal) , (pointer_expression "&pDestPg" & identifier) , number_literal )))) ;) (expression_statement "uVar9 = uVar13;" (assignment_expression "uVar9 = uVar13" identifier = identifier) ;) }))) (if_statement "if ((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)) break;" if (parenthesized_expression "((iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0))" ( (binary_expression "(iVar4 != 0) || (iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)" (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar4 = (*pcVar5)(pDestPg), iVar4 != 0)" ( (comma_expression "iVar4 = (*pcVar5)(pDestPg), iVar4 != 0" (assignment_expression "iVar4 = (*pcVar5)(pDestPg)" identifier = (call_expression "(*pcVar5)(pDestPg)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(pDestPg)" ( identifier )))) , (binary_expression "iVar4 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12);" (call_expression "(*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar14,uVar12)" (parenthesized_expression "(*(code *)PTR___moddi3_000f52e4)" ( (pointer_expression "*(code *)PTR___moddi3_000f52e4" * (cast_expression "(code *)PTR___moddi3_000f52e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11,uVar9,iVar14,uVar12)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar4 = (int)pDestPg->pData + extraout_v1_01;" (assignment_expression "iVar4 = (int)pDestPg->pData + extraout_v1_01" identifier = (binary_expression "(int)pDestPg->pData + extraout_v1_01" (cast_expression "(int)pDestPg->pData" ( (type_descriptor "int" primitive_type) ) (field_expression "pDestPg->pData" identifier -> field_identifier)) + identifier)) ;) (expression_statement "(*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18);" (call_expression "(*(code *)PTR___moddi3_000f52e4)(iVar11,uVar9,iVar3,uVar18)" (parenthesized_expression "(*(code *)PTR___moddi3_000f52e4)" ( (pointer_expression "*(code *)PTR___moddi3_000f52e4" * (cast_expression "(code *)PTR___moddi3_000f52e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11,uVar9,iVar3,uVar18)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8);" (call_expression "(*(code *)PTR_memcpy_000f556c)(iVar4,bUpdate + extraout_v1_02,uVar8)" (parenthesized_expression "(*(code *)PTR_memcpy_000f556c)" ( (pointer_expression "*(code *)PTR_memcpy_000f556c" * (cast_expression "(code *)PTR_memcpy_000f556c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar4,bUpdate + extraout_v1_02,uVar8)" ( identifier , (binary_expression "bUpdate + extraout_v1_02" identifier + identifier) , identifier ))) ;) (expression_statement "*(undefined1 *)pDestPg->pExtra = 0;" (assignment_expression "*(undefined1 *)pDestPg->pExtra = 0" (pointer_expression "*(undefined1 *)pDestPg->pExtra" * (cast_expression "(undefined1 *)pDestPg->pExtra" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pDestPg->pExtra" identifier -> field_identifier))) = number_literal) ;) (if_statement "if ((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);\n      *(char *)(iVar4 + 0x1f) = (char)uVar7;\n      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);\n    }" if (parenthesized_expression "((iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0))" ( (binary_expression "(iVar11 == 0 && uVar9 == 0) && (p_1 == (sqlite3_backup *)0x0)" (parenthesized_expression "(iVar11 == 0 && uVar9 == 0)" ( (binary_expression "iVar11 == 0 && uVar9 == 0" (binary_expression "iVar11 == 0" identifier == number_literal) && (binary_expression "uVar9 == 0" identifier == number_literal)) )) && (parenthesized_expression "(p_1 == (sqlite3_backup *)0x0)" ( (binary_expression "p_1 == (sqlite3_backup *)0x0" identifier == (cast_expression "(sqlite3_backup *)0x0" ( (type_descriptor "sqlite3_backup *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);\n      *(char *)(iVar4 + 0x1f) = (char)uVar7;\n      *(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n      *(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n      *(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);\n    }" { (expression_statement "uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)iSrcPg + 4) + 0x30)" ( (binary_expression "*(int *)(*(int *)iSrcPg + 4) + 0x30" (pointer_expression "*(int *)(*(int *)iSrcPg + 4)" * (cast_expression "(int *)(*(int *)iSrcPg + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)iSrcPg + 4)" ( (binary_expression "*(int *)iSrcPg + 4" (pointer_expression "*(int *)iSrcPg" * (cast_expression "(int *)iSrcPg" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(char *)(iVar4 + 0x1f) = (char)uVar7;" (assignment_expression "*(char *)(iVar4 + 0x1f) = (char)uVar7" (pointer_expression "*(char *)(iVar4 + 0x1f)" * (cast_expression "(char *)(iVar4 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1f)" ( (binary_expression "iVar4 + 0x1f" identifier + number_literal) )))) = (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18);" (assignment_expression "*(char *)(iVar4 + 0x1c) = (char)((uint)uVar7 >> 0x18)" (pointer_expression "*(char *)(iVar4 + 0x1c)" * (cast_expression "(char *)(iVar4 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1c)" ( (binary_expression "iVar4 + 0x1c" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar7 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar7 >> 0x18)" ( (binary_expression "(uint)uVar7 >> 0x18" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10);" (assignment_expression "*(char *)(iVar4 + 0x1d) = (char)((uint)uVar7 >> 0x10)" (pointer_expression "*(char *)(iVar4 + 0x1d)" * (cast_expression "(char *)(iVar4 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1d)" ( (binary_expression "iVar4 + 0x1d" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar7 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar7 >> 0x10)" ( (binary_expression "(uint)uVar7 >> 0x10" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8);" (assignment_expression "*(char *)(iVar4 + 0x1e) = (char)((uint)uVar7 >> 8)" (pointer_expression "*(char *)(iVar4 + 0x1e)" * (cast_expression "(char *)(iVar4 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x1e)" ( (binary_expression "iVar4 + 0x1e" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar7 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar7 >> 8)" ( (binary_expression "(uint)uVar7 >> 8" (cast_expression "(uint)uVar7" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "uVar13 = uVar9 + uVar12;" (assignment_expression "uVar13 = uVar9 + uVar12" identifier = (binary_expression "uVar9 + uVar12" identifier + identifier)) ;) (expression_statement "iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14;" (assignment_expression "iVar11 = (uint)(uVar13 < uVar9) + iVar11 + iVar14" identifier = (binary_expression "(uint)(uVar13 < uVar9) + iVar11 + iVar14" (binary_expression "(uint)(uVar13 < uVar9) + iVar11" (call_expression "(uint)(uVar13 < uVar9)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar13 < uVar9)" ( (binary_expression "uVar13 < uVar9" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (pDestPg != (DbPage *)0x0) {\n      (*pcVar6)();\n    }" if (parenthesized_expression "(pDestPg != (DbPage *)0x0)" ( (binary_expression "pDestPg != (DbPage *)0x0" identifier != (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*pcVar6)();\n    }" { (expression_statement "(*pcVar6)();" (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( ))) ;) })) })) (expression_statement "puVar17 = PTR_LAB_000f52c8;" (assignment_expression "puVar17 = PTR_LAB_000f52c8" identifier = identifier) ;) (if_statement "if (pDestPg != (DbPage *)0x0) goto LAB_000785c4;" if (parenthesized_expression "(pDestPg != (DbPage *)0x0)" ( (binary_expression "pDestPg != (DbPage *)0x0" identifier != (cast_expression "(DbPage *)0x0" ( (type_descriptor "DbPage *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000785c4;" goto statement_identifier ;)) (labeled_statement "LAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar17 = PTR___stack_chk_fail_000f5540;\n    iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar17 + 0x1a94))();\n  }" statement_identifier : (while_statement "while (local_2c != *(int *)puVar1) {\n    puVar17 = PTR___stack_chk_fail_000f5540;\n    iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar17 + 0x1a94))();\n  }" while (parenthesized_expression "(local_2c != *(int *)puVar1)" ( (binary_expression "local_2c != *(int *)puVar1" identifier != (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar17 = PTR___stack_chk_fail_000f5540;\n    iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar17 + 0x1a94))();\n  }" { (expression_statement "puVar17 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar17 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)();" (assignment_expression "iVar4 = (*(code *)PTR___stack_chk_fail_000f5540)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_000785c4:\n    (*(code *)(puVar17 + 0x1a94))();" statement_identifier : (expression_statement "(*(code *)(puVar17 + 0x1a94))();" (call_expression "(*(code *)(puVar17 + 0x1a94))()" (parenthesized_expression "(*(code *)(puVar17 + 0x1a94))" ( (pointer_expression "*(code *)(puVar17 + 0x1a94)" * (cast_expression "(code *)(puVar17 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 0x1a94)" ( (binary_expression "puVar17 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) }))) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "int FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)" identifier (parameter_list "(int *param_1,int *param_2,uint param_3,int param_4,int param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "int extraout_v1;" primitive_type identifier ;) (declaration "int extraout_v1_00;" primitive_type identifier ;) (declaration "int extraout_v1_01;" primitive_type identifier ;) (declaration "int extraout_v1_02;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "undefined *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" identifier = identifier) ;) (expression_statement "puVar16 = PTR_DAT_000f52bc;" (assignment_expression "puVar16 = PTR_DAT_000f52bc" identifier = identifier) ;) (expression_statement "uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);" (assignment_expression "uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_2 + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(*param_2 + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x24)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x24" (pointer_expression "*(int *)(*param_2 + 4)" * (cast_expression "(int *)(*param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 4)" ( (binary_expression "*param_2 + 4" (pointer_expression "*param_2" * identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "uVar11 = (*(int **)(*param_1 + 4))[9];" (assignment_expression "uVar11 = (*(int **)(*param_1 + 4))[9]" identifier = (subscript_expression "(*(int **)(*param_1 + 4))[9]" (parenthesized_expression "(*(int **)(*param_1 + 4))" ( (pointer_expression "*(int **)(*param_1 + 4)" * (cast_expression "(int **)(*param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) )) [ number_literal ])) ;) (expression_statement "iVar15 = **(int **)(*param_1 + 4);" (assignment_expression "iVar15 = **(int **)(*param_1 + 4)" identifier = (pointer_expression "**(int **)(*param_1 + 4)" * (pointer_expression "*(int **)(*param_1 + 4)" * (cast_expression "(int **)(*param_1 + 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))))) ;) (expression_statement "uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);" (assignment_expression "uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17)" identifier = (call_expression "(uint)((ulonglong)param_3 * (ulonglong)uVar17)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)param_3 * (ulonglong)uVar17)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar2 = (int)uVar17 >> 0x1f;" (assignment_expression "iVar2 = (int)uVar17 >> 0x1f" identifier = (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000f5568" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" * (cast_expression "(int *)PTR___stack_chk_guard_000f5568" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);" (assignment_expression "iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" identifier = (binary_expression "iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" (binary_expression "iVar2 * param_3" identifier * identifier) + (cast_expression "(int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17 >> 0x20" (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar17" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))))) ;) (expression_statement "uVar12 = uVar18 - uVar17;" (assignment_expression "uVar12 = uVar18 - uVar17" identifier = (binary_expression "uVar18 - uVar17" identifier - identifier)) ;) (if_statement "if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" if (parenthesized_expression "(uVar17 == uVar11)" ( (binary_expression "uVar17 == uVar11" identifier == identifier) )) (compound_statement "{\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" { (expression_statement "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);" (assignment_expression "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12)" identifier = (binary_expression "(iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (parenthesized_expression "(iVar14 - iVar2)" ( (binary_expression "iVar14 - iVar2" identifier - identifier) )) - (call_expression "(uint)(uVar18 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 < uVar12)" ( (binary_expression "uVar18 < uVar12" identifier < identifier) ))))) ;) }) (else_clause "else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" else (compound_statement "{\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" { (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) (if_statement "if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;" if (parenthesized_expression "(*(char *)(iVar15 + 0xc) != '\0')" ( (binary_expression "*(char *)(iVar15 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar15 + 0xc)" * (cast_expression "(char *)(iVar15 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar15 + 0xc)" ( (binary_expression "iVar15 + 0xc" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (expression_statement "uVar12 = uVar18 - uVar17;" (assignment_expression "uVar12 = uVar18 - uVar17" identifier = (binary_expression "uVar18 - uVar17" identifier - identifier)) ;) (expression_statement "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);" (assignment_expression "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12)" identifier = (binary_expression "(iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (parenthesized_expression "(iVar14 - iVar2)" ( (binary_expression "iVar14 - iVar2" identifier - identifier) )) - (call_expression "(uint)(uVar18 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar18 < uVar12)" ( (binary_expression "uVar18 < uVar12" identifier < identifier) ))))) ;) }))) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) (if_statement "if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }" if (parenthesized_expression "((int)uVar17 <= (int)uVar11)" ( (binary_expression "(int)uVar17 <= (int)uVar11" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    uVar7 = uVar17;\n  }" { (expression_statement "uVar7 = uVar17;" (assignment_expression "uVar7 = uVar17" identifier = identifier) ;) })) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c)" identifier = (cast_expression "(code *)(PTR_LAB_000f52f4 + -0x7e2c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52f4 + -0x7e2c)" ( (binary_expression "PTR_LAB_000f52f4 + -0x7e2c" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94)" identifier = (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" ( (binary_expression "PTR_LAB_000f52c8 + 0x1a94" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }" { (if_statement "if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }" if (parenthesized_expression "(iVar14 <= iVar10)" ( (binary_expression "iVar14 <= iVar10" identifier <= identifier) )) (compound_statement "{\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar14 != iVar10) goto LAB_000783d4;" if (parenthesized_expression "(iVar14 != iVar10)" ( (binary_expression "iVar14 != iVar10" identifier != identifier) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (if_statement "if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }" if (parenthesized_expression "(uVar18 <= uVar12)" ( (binary_expression "uVar18 <= uVar12" identifier <= identifier) )) (compound_statement "{\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;) })) })) (expression_statement "iVar13 = (int)uVar11 >> 0x1f;" (assignment_expression "iVar13 = (int)uVar11 >> 0x1f" identifier = (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52d8)" ( (pointer_expression "*(code *)PTR_FUN_000f52d8" * (cast_expression "(code *)PTR_FUN_000f52d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar12,iVar13,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);" (assignment_expression "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_1 + 4) + 0x24)" * (cast_expression "(uint *)(*(int *)(*param_1 + 4) + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 4) + 0x24)" ( (binary_expression "*(int *)(*param_1 + 4) + 0x24" (pointer_expression "*(int *)(*param_1 + 4)" * (cast_expression "(int *)(*param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 4)" ( (binary_expression "*param_1 + 4" (pointer_expression "*param_1" * identifier) + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (uVar8 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;" (assignment_expression "iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1" identifier = (binary_expression "*(uint *)(puVar16 + 0x4098) / uVar8 + 1" (binary_expression "*(uint *)(puVar16 + 0x4098) / uVar8" (pointer_expression "*(uint *)(puVar16 + 0x4098)" * (cast_expression "(uint *)(puVar16 + 0x4098)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x4098)" ( (binary_expression "puVar16 + 0x4098" identifier + number_literal) )))) / identifier) + number_literal)) ;) (if_statement "if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" if (parenthesized_expression "(iVar9 == extraout_v1 + 1)" ( (binary_expression "iVar9 == extraout_v1 + 1" identifier == (binary_expression "extraout_v1 + 1" identifier + number_literal)) )) (compound_statement "{\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }" { (do_statement "do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);" do (compound_statement "{\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      }" { (expression_statement "uVar8 = uVar12 + uVar11;" (assignment_expression "uVar8 = uVar12 + uVar11" identifier = (binary_expression "uVar12 + uVar11" identifier + identifier)) ;) (expression_statement "iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;" (assignment_expression "iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13" identifier = (binary_expression "(uint)(uVar8 < uVar12) + iVar10 + iVar13" (binary_expression "(uint)(uVar8 < uVar12) + iVar10" (call_expression "(uint)(uVar8 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar12)" ( (binary_expression "uVar8 < uVar12" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }" if (parenthesized_expression "(iVar14 <= iVar10)" ( (binary_expression "iVar14 <= iVar10" identifier <= identifier) )) (compound_statement "{\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar10 != iVar14) goto LAB_000783d4;" if (parenthesized_expression "(iVar10 != iVar14)" ( (binary_expression "iVar10 != iVar14" identifier != identifier) )) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;)) (if_statement "if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }" if (parenthesized_expression "(uVar18 <= uVar8)" ( (binary_expression "uVar18 <= uVar8" identifier <= identifier) )) (compound_statement "{\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000783d4;" goto statement_identifier ;) })) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52d8)" ( (pointer_expression "*(code *)PTR_FUN_000f52d8" * (cast_expression "(code *)PTR_FUN_000f52d8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar8,iVar13,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(extraout_v1_00 + 1 == iVar9)" ( (binary_expression "extraout_v1_00 + 1 == iVar9" (binary_expression "extraout_v1_00 + 1" identifier + number_literal) == identifier) )) ;) (expression_statement "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar15 + 0xcc))" ( (pointer_expression "**(code **)(iVar15 + 0xcc)" * (pointer_expression "*(code **)(iVar15 + 0xcc)" * (cast_expression "(code **)(iVar15 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0xcc)" ( (binary_expression "iVar15 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar15,extraout_v1_00 + 1,&local_30,0)" ( identifier , (binary_expression "extraout_v1_00 + 1" identifier + number_literal) , (pointer_expression "&local_30" & identifier) , number_literal )))) ;) }) (else_clause "else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" else (compound_statement "{\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" { (expression_statement "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar15 + 0xcc))" ( (pointer_expression "**(code **)(iVar15 + 0xcc)" * (pointer_expression "*(code **)(iVar15 + 0xcc)" * (cast_expression "(code **)(iVar15 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar15 + 0xcc)" ( (binary_expression "iVar15 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar15,extraout_v1 + 1,&local_30,0)" ( identifier , (binary_expression "extraout_v1 + 1" identifier + number_literal) , (pointer_expression "&local_30" & identifier) , number_literal )))) ;) (expression_statement "uVar8 = uVar12;" (assignment_expression "uVar8 = uVar12" identifier = identifier) ;) }))) (if_statement "if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;" if (parenthesized_expression "((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0))" ( (binary_expression "(iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)" (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar3 = (*pcVar4)(local_30), iVar3 != 0)" ( (comma_expression "iVar3 = (*pcVar4)(local_30), iVar3 != 0" (assignment_expression "iVar3 = (*pcVar4)(local_30)" identifier = (call_expression "(*pcVar4)(local_30)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(local_30)" ( identifier )))) , (binary_expression "iVar3 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52e4)" ( (pointer_expression "*(code *)PTR_FUN_000f52e4" * (cast_expression "(code *)PTR_FUN_000f52e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar8,iVar13,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;" (assignment_expression "iVar3 = *(int *)(local_30 + 4) + extraout_v1_01" identifier = (binary_expression "*(int *)(local_30 + 4) + extraout_v1_01" (pointer_expression "*(int *)(local_30 + 4)" * (cast_expression "(int *)(local_30 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_30 + 4)" ( (binary_expression "local_30 + 4" identifier + number_literal) )))) + identifier)) ;) (expression_statement "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);" (call_expression "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_000f52e4)" ( (pointer_expression "*(code *)PTR_FUN_000f52e4" * (cast_expression "(code *)PTR_FUN_000f52e4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar10,uVar8,iVar2,uVar17)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);" (call_expression "(*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7)" (parenthesized_expression "(*(code *)PTR_memcpy_000f556c)" ( (pointer_expression "*(code *)PTR_memcpy_000f556c" * (cast_expression "(code *)PTR_memcpy_000f556c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar3,param_4 + extraout_v1_02,uVar7)" ( identifier , (binary_expression "param_4 + extraout_v1_02" identifier + identifier) , identifier ))) ;) (expression_statement "**(undefined1 **)(local_30 + 8) = 0;" (assignment_expression "**(undefined1 **)(local_30 + 8) = 0" (pointer_expression "**(undefined1 **)(local_30 + 8)" * (pointer_expression "*(undefined1 **)(local_30 + 8)" * (cast_expression "(undefined1 **)(local_30 + 8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(local_30 + 8)" ( (binary_expression "local_30 + 8" identifier + number_literal) ))))) = number_literal) ;) (if_statement "if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }" if (parenthesized_expression "((iVar10 == 0 && uVar8 == 0) && (param_5 == 0))" ( (binary_expression "(iVar10 == 0 && uVar8 == 0) && (param_5 == 0)" (parenthesized_expression "(iVar10 == 0 && uVar8 == 0)" ( (binary_expression "iVar10 == 0 && uVar8 == 0" (binary_expression "iVar10 == 0" identifier == number_literal) && (binary_expression "uVar8 == 0" identifier == number_literal)) )) && (parenthesized_expression "(param_5 == 0)" ( (binary_expression "param_5 == 0" identifier == number_literal) ))) )) (compound_statement "{\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }" { (expression_statement "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);" (assignment_expression "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" * (cast_expression "(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x30)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x30" (pointer_expression "*(int *)(*param_2 + 4)" * (cast_expression "(int *)(*param_2 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + 4)" ( (binary_expression "*param_2 + 4" (pointer_expression "*param_2" * identifier) + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(char *)(iVar3 + 0x1f) = (char)uVar6;" (assignment_expression "*(char *)(iVar3 + 0x1f) = (char)uVar6" (pointer_expression "*(char *)(iVar3 + 0x1f)" * (cast_expression "(char *)(iVar3 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1f)" ( (binary_expression "iVar3 + 0x1f" identifier + number_literal) )))) = (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);" (assignment_expression "*(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18)" (pointer_expression "*(char *)(iVar3 + 0x1c)" * (cast_expression "(char *)(iVar3 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1c)" ( (binary_expression "iVar3 + 0x1c" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 0x18)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x18)" ( (binary_expression "(uint)uVar6 >> 0x18" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);" (assignment_expression "*(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10)" (pointer_expression "*(char *)(iVar3 + 0x1d)" * (cast_expression "(char *)(iVar3 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1d)" ( (binary_expression "iVar3 + 0x1d" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 0x10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 0x10)" ( (binary_expression "(uint)uVar6 >> 0x10" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "*(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);" (assignment_expression "*(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8)" (pointer_expression "*(char *)(iVar3 + 0x1e)" * (cast_expression "(char *)(iVar3 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x1e)" ( (binary_expression "iVar3 + 0x1e" identifier + number_literal) )))) = (cast_expression "(char)((uint)uVar6 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((uint)uVar6 >> 8)" ( (binary_expression "(uint)uVar6 >> 8" (cast_expression "(uint)uVar6" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )))) ;) })) (expression_statement "uVar12 = uVar8 + uVar11;" (assignment_expression "uVar12 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) (expression_statement "iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;" (assignment_expression "iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13" identifier = (binary_expression "(uint)(uVar12 < uVar8) + iVar10 + iVar13" (binary_expression "(uint)(uVar12 < uVar8) + iVar10" (call_expression "(uint)(uVar12 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 < uVar8)" ( (binary_expression "uVar12 < uVar8" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (local_30 != 0) {\n      (*pcVar5)();\n    }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n      (*pcVar5)();\n    }" { (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) })) })) (expression_statement "puVar16 = PTR_LAB_000f52c8;" (assignment_expression "puVar16 = PTR_LAB_000f52c8" identifier = identifier) ;) (if_statement "if (local_30 != 0) goto LAB_000785c4;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000785c4;" goto statement_identifier ;)) (labeled_statement "LAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" statement_identifier : (while_statement "while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" while (parenthesized_expression "(local_2c != *(int *)puVar1)" ( (binary_expression "local_2c != *(int *)puVar1" identifier != (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" { (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" identifier = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();" (assignment_expression "iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" * (cast_expression "(code *)PTR___stack_chk_fail_000f5540" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();" statement_identifier : (expression_statement "(*(code *)(puVar16 + 0x1a94))();" (call_expression "(*(code *)(puVar16 + 0x1a94))()" (parenthesized_expression "(*(code *)(puVar16 + 0x1a94))" ( (pointer_expression "*(code *)(puVar16 + 0x1a94)" * (cast_expression "(code *)(puVar16 + 0x1a94)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0x1a94)" ( (binary_expression "puVar16 + 0x1a94" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_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) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) / IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression & IDENT) , LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , (pointer_expression & IDENT) , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (break_statement break ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + IDENT) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (binary_expression IDENT == LIT)) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) + IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (while_statement while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( )))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( ))) ;)) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "FUN_0007826c(int *param_1,int *param_2,uint param_3,int param_4,int param_5)" (identifier "FUN_0007826c") (parameter_list "(int *param_1,int *param_2,uint param_3,int param_4,int param_5)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  int iVar3;\n  code *pcVar4;\n  code *pcVar5;\n  undefined4 uVar6;\n  uint uVar7;\n  int extraout_v1;\n  int extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  uint uVar12;\n  int iVar13;\n  int iVar14;\n  int iVar15;\n  undefined *puVar16;\n  uint uVar17;\n  uint uVar18;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_000f5568;\n  puVar16 = PTR_DAT_000f52bc;\n  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);\n  uVar11 = (*(int **)(*param_1 + 4))[9];\n  iVar15 = **(int **)(*param_1 + 4);\n  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);\n  iVar2 = (int)uVar17 >> 0x1f;\n  local_2c = *(int *)PTR___stack_chk_guard_000f5568;\n  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);\n  uVar12 = uVar18 - uVar17;\n  if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  uVar7 = uVar11;\n  if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }\n  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);\n  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);\n  while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }\n  puVar16 = PTR_LAB_000f52c8;\n  if (local_30 != 0) goto LAB_000785c4;\nLAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }\n  return iVar3;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "int extraout_v1;" (primitive_type "int") (identifier "extraout_v1") (; ";")) (declaration "int extraout_v1_00;" (primitive_type "int") (identifier "extraout_v1_00") (; ";")) (declaration "int extraout_v1_01;" (primitive_type "int") (identifier "extraout_v1_01") (; ";")) (declaration "int extraout_v1_02;" (primitive_type "int") (identifier "extraout_v1_02") (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "undefined *puVar16;" (type_identifier "undefined") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_000f5568;" (assignment_expression "puVar1 = PTR___stack_chk_guard_000f5568" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_000f5568")) (; ";")) (expression_statement "puVar16 = PTR_DAT_000f52bc;" (assignment_expression "puVar16 = PTR_DAT_000f52bc" (identifier "puVar16") (= "=") (identifier "PTR_DAT_000f52bc")) (; ";")) (expression_statement "uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);" (assignment_expression "uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24)" (identifier "uVar17") (= "=") (pointer_expression "*(uint *)(*(int *)(*param_2 + 4) + 0x24)" (* "*") (cast_expression "(uint *)(*(int *)(*param_2 + 4) + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x24)" (( "(") (binary_expression "*(int *)(*param_2 + 4) + 0x24" (pointer_expression "*(int *)(*param_2 + 4)" (* "*") (cast_expression "(int *)(*param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 4)" (( "(") (binary_expression "*param_2 + 4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (expression_statement "uVar11 = (*(int **)(*param_1 + 4))[9];" (assignment_expression "uVar11 = (*(int **)(*param_1 + 4))[9]" (identifier "uVar11") (= "=") (subscript_expression "(*(int **)(*param_1 + 4))[9]" (parenthesized_expression "(*(int **)(*param_1 + 4))" (( "(") (pointer_expression "*(int **)(*param_1 + 4)" (* "*") (cast_expression "(int **)(*param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 4)" (( "(") (binary_expression "*param_1 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))) () ")")) ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "iVar15 = **(int **)(*param_1 + 4);" (assignment_expression "iVar15 = **(int **)(*param_1 + 4)" (identifier "iVar15") (= "=") (pointer_expression "**(int **)(*param_1 + 4)" (* "*") (pointer_expression "*(int **)(*param_1 + 4)" (* "*") (cast_expression "(int **)(*param_1 + 4)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_1 + 4)" (( "(") (binary_expression "*param_1 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);" (assignment_expression "uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17)" (identifier "uVar18") (= "=") (call_expression "(uint)((ulonglong)param_3 * (ulonglong)uVar17)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)param_3 * (ulonglong)uVar17)" (( "(") (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17" (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3")) (* "*") (cast_expression "(ulonglong)uVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar17"))) () ")")))) (; ";")) (expression_statement "iVar2 = (int)uVar17 >> 0x1f;" (assignment_expression "iVar2 = (int)uVar17 >> 0x1f" (identifier "iVar2") (= "=") (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000f5568;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000f5568" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000f5568" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000f5568" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000f5568")))) (; ";")) (expression_statement "iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);" (assignment_expression "iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" (identifier "iVar14") (= "=") (binary_expression "iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" (binary_expression "iVar2 * param_3" (identifier "iVar2") (* "*") (identifier "param_3")) (+ "+") (cast_expression "(int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20)" (( "(") (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17 >> 0x20" (binary_expression "(ulonglong)param_3 * (ulonglong)uVar17" (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3")) (* "*") (cast_expression "(ulonglong)uVar17" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar17"))) (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar18 - uVar17;" (assignment_expression "uVar12 = uVar18 - uVar17" (identifier "uVar12") (= "=") (binary_expression "uVar18 - uVar17" (identifier "uVar18") (- "-") (identifier "uVar17"))) (; ";")) (if_statement "if (uVar17 == uVar11) {\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }\n  else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" (if "if") (parenthesized_expression "(uVar17 == uVar11)" (( "(") (binary_expression "uVar17 == uVar11" (identifier "uVar17") (== "==") (identifier "uVar11")) () ")")) (compound_statement "{\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" ({ "{") (expression_statement "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);" (assignment_expression "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (identifier "iVar10") (= "=") (binary_expression "(iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (parenthesized_expression "(iVar14 - iVar2)" (( "(") (binary_expression "iVar14 - iVar2" (identifier "iVar14") (- "-") (identifier "iVar2")) () ")")) (- "-") (call_expression "(uint)(uVar18 < uVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar18 < uVar12)" (( "(") (binary_expression "uVar18 < uVar12" (identifier "uVar18") (< "<") (identifier "uVar12")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" (else "else") (compound_statement "{\n    iVar3 = 8;\n    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;\n    uVar12 = uVar18 - uVar17;\n    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);\n  }" ({ "{") (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (; ";")) (if_statement "if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;" (if "if") (parenthesized_expression "(*(char *)(iVar15 + 0xc) != '\0')" (( "(") (binary_expression "*(char *)(iVar15 + 0xc) != '\0'" (pointer_expression "*(char *)(iVar15 + 0xc)" (* "*") (cast_expression "(char *)(iVar15 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar15 + 0xc)" (( "(") (binary_expression "iVar15 + 0xc" (identifier "iVar15") (+ "+") (number_literal "0xc")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000783d4;" (goto "goto") (statement_identifier "LAB_000783d4") (; ";"))) (expression_statement "uVar12 = uVar18 - uVar17;" (assignment_expression "uVar12 = uVar18 - uVar17" (identifier "uVar12") (= "=") (binary_expression "uVar18 - uVar17" (identifier "uVar18") (- "-") (identifier "uVar17"))) (; ";")) (expression_statement "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);" (assignment_expression "iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (identifier "iVar10") (= "=") (binary_expression "(iVar14 - iVar2) - (uint)(uVar18 < uVar12)" (parenthesized_expression "(iVar14 - iVar2)" (( "(") (binary_expression "iVar14 - iVar2" (identifier "iVar14") (- "-") (identifier "iVar2")) () ")")) (- "-") (call_expression "(uint)(uVar18 < uVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar18 < uVar12)" (( "(") (binary_expression "uVar18 < uVar12" (identifier "uVar18") (< "<") (identifier "uVar12")) () ")"))))) (; ";")) (} "}")))) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" (identifier "uVar7") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if ((int)uVar17 <= (int)uVar11) {\n    uVar7 = uVar17;\n  }" (if "if") (parenthesized_expression "((int)uVar17 <= (int)uVar11)" (( "(") (binary_expression "(int)uVar17 <= (int)uVar11" (cast_expression "(int)uVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar17")) (<= "<=") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (compound_statement "{\n    uVar7 = uVar17;\n  }" ({ "{") (expression_statement "uVar7 = uVar17;" (assignment_expression "uVar7 = uVar17" (identifier "uVar7") (= "=") (identifier "uVar17")) (; ";")) (} "}"))) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_000f52f4 + -0x7e2c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52f4 + -0x7e2c)" (( "(") (binary_expression "PTR_LAB_000f52f4 + -0x7e2c" (identifier "PTR_LAB_000f52f4") (+ "+") (number_literal "-0x7e2c")) () ")")))) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_LAB_000f52c8 + 0x1a94)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52c8 + 0x1a94)" (( "(") (binary_expression "PTR_LAB_000f52c8 + 0x1a94" (identifier "PTR_LAB_000f52c8") (+ "+") (number_literal "0x1a94")) () ")")))) (; ";")) (while_statement "while( true ) {\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }\n    iVar13 = (int)uVar11 >> 0x1f;\n    local_30 = 0;\n    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);\n    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);\n    if (uVar8 == 0) {\n      trap(7);\n    }\n    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;\n    if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }\n    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);\n    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);\n    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);\n    **(undefined1 **)(local_30 + 8) = 0;\n    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }\n    uVar12 = uVar8 + uVar11;\n    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;\n    if (local_30 != 0) {\n      (*pcVar5)();\n    }\n  }" ({ "{") (if_statement "if (iVar14 <= iVar10) {\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }" (if "if") (parenthesized_expression "(iVar14 <= iVar10)" (( "(") (binary_expression "iVar14 <= iVar10" (identifier "iVar14") (<= "<=") (identifier "iVar10")) () ")")) (compound_statement "{\n      iVar3 = 0;\n      if (iVar14 != iVar10) goto LAB_000783d4;\n      if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }\n    }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar14 != iVar10) goto LAB_000783d4;" (if "if") (parenthesized_expression "(iVar14 != iVar10)" (( "(") (binary_expression "iVar14 != iVar10" (identifier "iVar14") (!= "!=") (identifier "iVar10")) () ")")) (goto_statement "goto LAB_000783d4;" (goto "goto") (statement_identifier "LAB_000783d4") (; ";"))) (if_statement "if (uVar18 <= uVar12) {\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }" (if "if") (parenthesized_expression "(uVar18 <= uVar12)" (( "(") (binary_expression "uVar18 <= uVar12" (identifier "uVar18") (<= "<=") (identifier "uVar12")) () ")")) (compound_statement "{\n        iVar3 = 0;\n        goto LAB_000783d4;\n      }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000783d4;" (goto "goto") (statement_identifier "LAB_000783d4") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar13 = (int)uVar11 >> 0x1f;" (assignment_expression "iVar13 = (int)uVar11 >> 0x1f" (identifier "iVar13") (= "=") (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52d8)" (( "(") (pointer_expression "*(code *)PTR_FUN_000f52d8" (* "*") (cast_expression "(code *)PTR_FUN_000f52d8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000f52d8"))) () ")")) (argument_list "(iVar10,uVar12,iVar13,uVar11)" (( "(") (identifier "iVar10") (, ",") (identifier "uVar12") (, ",") (identifier "iVar13") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);" (assignment_expression "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(*(int *)(*param_1 + 4) + 0x24)" (* "*") (cast_expression "(uint *)(*(int *)(*param_1 + 4) + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_1 + 4) + 0x24)" (( "(") (binary_expression "*(int *)(*param_1 + 4) + 0x24" (pointer_expression "*(int *)(*param_1 + 4)" (* "*") (cast_expression "(int *)(*param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 4)" (( "(") (binary_expression "*param_1 + 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x24")) () ")"))))) (; ";")) (if_statement "if (uVar8 == 0) {\n      trap(7);\n    }" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      trap(7);\n    }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;" (assignment_expression "iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1" (identifier "iVar9") (= "=") (binary_expression "*(uint *)(puVar16 + 0x4098) / uVar8 + 1" (binary_expression "*(uint *)(puVar16 + 0x4098) / uVar8" (pointer_expression "*(uint *)(puVar16 + 0x4098)" (* "*") (cast_expression "(uint *)(puVar16 + 0x4098)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x4098)" (( "(") (binary_expression "puVar16 + 0x4098" (identifier "puVar16") (+ "+") (number_literal "0x4098")) () ")")))) (/ "/") (identifier "uVar8")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar9 == extraout_v1 + 1) {\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }\n    else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" (if "if") (parenthesized_expression "(iVar9 == extraout_v1 + 1)" (( "(") (binary_expression "iVar9 == extraout_v1 + 1" (identifier "iVar9") (== "==") (binary_expression "extraout_v1 + 1" (identifier "extraout_v1") (+ "+") (number_literal "1"))) () ")")) (compound_statement "{\n      do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);\n    }" ({ "{") (do_statement "do {\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      } while (extraout_v1_00 + 1 == iVar9);" (do "do") (compound_statement "{\n        uVar8 = uVar12 + uVar11;\n        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;\n        if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }\n        local_30 = 0;\n        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);\n        uVar12 = uVar8;\n      }" ({ "{") (expression_statement "uVar8 = uVar12 + uVar11;" (assignment_expression "uVar8 = uVar12 + uVar11" (identifier "uVar8") (= "=") (binary_expression "uVar12 + uVar11" (identifier "uVar12") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;" (assignment_expression "iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13" (identifier "iVar10") (= "=") (binary_expression "(uint)(uVar8 < uVar12) + iVar10 + iVar13" (binary_expression "(uint)(uVar8 < uVar12) + iVar10" (call_expression "(uint)(uVar8 < uVar12)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uVar12)" (( "(") (binary_expression "uVar8 < uVar12" (identifier "uVar8") (< "<") (identifier "uVar12")) () ")"))) (+ "+") (identifier "iVar10")) (+ "+") (identifier "iVar13"))) (; ";")) (if_statement "if (iVar14 <= iVar10) {\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }" (if "if") (parenthesized_expression "(iVar14 <= iVar10)" (( "(") (binary_expression "iVar14 <= iVar10" (identifier "iVar14") (<= "<=") (identifier "iVar10")) () ")")) (compound_statement "{\n          iVar3 = 0;\n          if (iVar10 != iVar14) goto LAB_000783d4;\n          if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }\n        }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar10 != iVar14) goto LAB_000783d4;" (if "if") (parenthesized_expression "(iVar10 != iVar14)" (( "(") (binary_expression "iVar10 != iVar14" (identifier "iVar10") (!= "!=") (identifier "iVar14")) () ")")) (goto_statement "goto LAB_000783d4;" (goto "goto") (statement_identifier "LAB_000783d4") (; ";"))) (if_statement "if (uVar18 <= uVar8) {\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }" (if "if") (parenthesized_expression "(uVar18 <= uVar8)" (( "(") (binary_expression "uVar18 <= uVar8" (identifier "uVar18") (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n            iVar3 = 0;\n            goto LAB_000783d4;\n          }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000783d4;" (goto "goto") (statement_identifier "LAB_000783d4") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52d8)" (( "(") (pointer_expression "*(code *)PTR_FUN_000f52d8" (* "*") (cast_expression "(code *)PTR_FUN_000f52d8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000f52d8"))) () ")")) (argument_list "(iVar10,uVar8,iVar13,uVar11)" (( "(") (identifier "iVar10") (, ",") (identifier "uVar8") (, ",") (identifier "iVar13") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "uVar12 = uVar8;" (assignment_expression "uVar12 = uVar8" (identifier "uVar12") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(extraout_v1_00 + 1 == iVar9)" (( "(") (binary_expression "extraout_v1_00 + 1 == iVar9" (binary_expression "extraout_v1_00 + 1" (identifier "extraout_v1_00") (+ "+") (number_literal "1")) (== "==") (identifier "iVar9")) () ")")) (; ";")) (expression_statement "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar15 + 0xcc))" (( "(") (pointer_expression "**(code **)(iVar15 + 0xcc)" (* "*") (pointer_expression "*(code **)(iVar15 + 0xcc)" (* "*") (cast_expression "(code **)(iVar15 + 0xcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0xcc)" (( "(") (binary_expression "iVar15 + 0xcc" (identifier "iVar15") (+ "+") (number_literal "0xcc")) () ")"))))) () ")")) (argument_list "(iVar15,extraout_v1_00 + 1,&local_30,0)" (( "(") (identifier "iVar15") (, ",") (binary_expression "extraout_v1_00 + 1" (identifier "extraout_v1_00") (+ "+") (number_literal "1")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "0") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" (else "else") (compound_statement "{\n      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);\n      uVar8 = uVar12;\n    }" ({ "{") (expression_statement "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar15 + 0xcc))" (( "(") (pointer_expression "**(code **)(iVar15 + 0xcc)" (* "*") (pointer_expression "*(code **)(iVar15 + 0xcc)" (* "*") (cast_expression "(code **)(iVar15 + 0xcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar15 + 0xcc)" (( "(") (binary_expression "iVar15 + 0xcc" (identifier "iVar15") (+ "+") (number_literal "0xcc")) () ")"))))) () ")")) (argument_list "(iVar15,extraout_v1 + 1,&local_30,0)" (( "(") (identifier "iVar15") (, ",") (binary_expression "extraout_v1 + 1" (identifier "extraout_v1") (+ "+") (number_literal "1")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar8 = uVar12;" (assignment_expression "uVar8 = uVar12" (identifier "uVar8") (= "=") (identifier "uVar12")) (; ";")) (} "}")))) (if_statement "if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;" (if "if") (parenthesized_expression "((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0))" (( "(") (binary_expression "(iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)" (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = (*pcVar4)(local_30), iVar3 != 0)" (( "(") (comma_expression "iVar3 = (*pcVar4)(local_30), iVar3 != 0" (assignment_expression "iVar3 = (*pcVar4)(local_30)" (identifier "iVar3") (= "=") (call_expression "(*pcVar4)(local_30)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(local_30)" (( "(") (identifier "local_30") () ")")))) (, ",") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);" (call_expression "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_000f52e4)" (( "(") (pointer_expression "*(code *)PTR_FUN_000f52e4" (* "*") (cast_expression "(code *)PTR_FUN_000f52e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000f52e4"))) () ")")) (argument_list "(iVar10,uVar8,iVar13,uVar11)" (( "(") (identifier "iVar10") (, ",") (identifier "uVar8") (, ",") (identifier "iVar13") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;" (assignment_expression "iVar3 = *(int *)(local_30 + 4) + extraout_v1_01" (identifier "iVar3") (= "=") (binary_expression "*(int *)(local_30 + 4) + extraout_v1_01" (pointer_expression "*(int *)(local_30 + 4)" (* "*") (cast_expression "(int *)(local_30 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_30 + 4)" (( "(") (binary_expression "local_30 + 4" (identifier "local_30") (+ "+") (number_literal "4")) () ")")))) (+ "+") (identifier "extraout_v1_01"))) (; ";")) (expression_statement "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);" (call_expression "(*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17)" (parenthesized_expression "(*(code *)PTR_FUN_000f52e4)" (( "(") (pointer_expression "*(code *)PTR_FUN_000f52e4" (* "*") (cast_expression "(code *)PTR_FUN_000f52e4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000f52e4"))) () ")")) (argument_list "(iVar10,uVar8,iVar2,uVar17)" (( "(") (identifier "iVar10") (, ",") (identifier "uVar8") (, ",") (identifier "iVar2") (, ",") (identifier "uVar17") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);" (call_expression "(*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7)" (parenthesized_expression "(*(code *)PTR_memcpy_000f556c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_000f556c" (* "*") (cast_expression "(code *)PTR_memcpy_000f556c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_000f556c"))) () ")")) (argument_list "(iVar3,param_4 + extraout_v1_02,uVar7)" (( "(") (identifier "iVar3") (, ",") (binary_expression "param_4 + extraout_v1_02" (identifier "param_4") (+ "+") (identifier "extraout_v1_02")) (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "**(undefined1 **)(local_30 + 8) = 0;" (assignment_expression "**(undefined1 **)(local_30 + 8) = 0" (pointer_expression "**(undefined1 **)(local_30 + 8)" (* "*") (pointer_expression "*(undefined1 **)(local_30 + 8)" (* "*") (cast_expression "(undefined1 **)(local_30 + 8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(local_30 + 8)" (( "(") (binary_expression "local_30 + 8" (identifier "local_30") (+ "+") (number_literal "8")) () ")"))))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }" (if "if") (parenthesized_expression "((iVar10 == 0 && uVar8 == 0) && (param_5 == 0))" (( "(") (binary_expression "(iVar10 == 0 && uVar8 == 0) && (param_5 == 0)" (parenthesized_expression "(iVar10 == 0 && uVar8 == 0)" (( "(") (binary_expression "iVar10 == 0 && uVar8 == 0" (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) (&& "&&") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0"))) () ")")) (&& "&&") (parenthesized_expression "(param_5 == 0)" (( "(") (binary_expression "param_5 == 0" (identifier "param_5") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);\n      *(char *)(iVar3 + 0x1f) = (char)uVar6;\n      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);\n      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);\n      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);\n    }" ({ "{") (expression_statement "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);" (assignment_expression "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" (* "*") (cast_expression "(undefined4 *)(*(int *)(*param_2 + 4) + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x30)" (( "(") (binary_expression "*(int *)(*param_2 + 4) + 0x30" (pointer_expression "*(int *)(*param_2 + 4)" (* "*") (cast_expression "(int *)(*param_2 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + 4)" (( "(") (binary_expression "*param_2 + 4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "*(char *)(iVar3 + 0x1f) = (char)uVar6;" (assignment_expression "*(char *)(iVar3 + 0x1f) = (char)uVar6" (pointer_expression "*(char *)(iVar3 + 0x1f)" (* "*") (cast_expression "(char *)(iVar3 + 0x1f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1f)" (( "(") (binary_expression "iVar3 + 0x1f" (identifier "iVar3") (+ "+") (number_literal "0x1f")) () ")")))) (= "=") (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "*(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);" (assignment_expression "*(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18)" (pointer_expression "*(char *)(iVar3 + 0x1c)" (* "*") (cast_expression "(char *)(iVar3 + 0x1c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1c)" (( "(") (binary_expression "iVar3 + 0x1c" (identifier "iVar3") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar6 >> 0x18)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar6 >> 0x18)" (( "(") (binary_expression "(uint)uVar6 >> 0x18" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "*(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);" (assignment_expression "*(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10)" (pointer_expression "*(char *)(iVar3 + 0x1d)" (* "*") (cast_expression "(char *)(iVar3 + 0x1d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1d)" (( "(") (binary_expression "iVar3 + 0x1d" (identifier "iVar3") (+ "+") (number_literal "0x1d")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar6 >> 0x10)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar6 >> 0x10)" (( "(") (binary_expression "(uint)uVar6 >> 0x10" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);" (assignment_expression "*(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8)" (pointer_expression "*(char *)(iVar3 + 0x1e)" (* "*") (cast_expression "(char *)(iVar3 + 0x1e)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x1e)" (( "(") (binary_expression "iVar3 + 0x1e" (identifier "iVar3") (+ "+") (number_literal "0x1e")) () ")")))) (= "=") (cast_expression "(char)((uint)uVar6 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((uint)uVar6 >> 8)" (( "(") (binary_expression "(uint)uVar6 >> 8" (cast_expression "(uint)uVar6" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar12 = uVar8 + uVar11;" (assignment_expression "uVar12 = uVar8 + uVar11" (identifier "uVar12") (= "=") (binary_expression "uVar8 + uVar11" (identifier "uVar8") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;" (assignment_expression "iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13" (identifier "iVar10") (= "=") (binary_expression "(uint)(uVar12 < uVar8) + iVar10 + iVar13" (binary_expression "(uint)(uVar12 < uVar8) + iVar10" (call_expression "(uint)(uVar12 < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar12 < uVar8)" (( "(") (binary_expression "uVar12 < uVar8" (identifier "uVar12") (< "<") (identifier "uVar8")) () ")"))) (+ "+") (identifier "iVar10")) (+ "+") (identifier "iVar13"))) (; ";")) (if_statement "if (local_30 != 0) {\n      (*pcVar5)();\n    }" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar5)();\n    }" ({ "{") (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar16 = PTR_LAB_000f52c8;" (assignment_expression "puVar16 = PTR_LAB_000f52c8" (identifier "puVar16") (= "=") (identifier "PTR_LAB_000f52c8")) (; ";")) (if_statement "if (local_30 != 0) goto LAB_000785c4;" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000785c4;" (goto "goto") (statement_identifier "LAB_000785c4") (; ";"))) (labeled_statement "LAB_000783d4:\n  while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" (statement_identifier "LAB_000783d4") (: ":") (while_statement "while (local_2c != *(int *)puVar1) {\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" (while "while") (parenthesized_expression "(local_2c != *(int *)puVar1)" (( "(") (binary_expression "local_2c != *(int *)puVar1" (identifier "local_2c") (!= "!=") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    puVar16 = PTR___stack_chk_fail_000f5540;\n    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();\nLAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();\n  }" ({ "{") (expression_statement "puVar16 = PTR___stack_chk_fail_000f5540;" (assignment_expression "puVar16 = PTR___stack_chk_fail_000f5540" (identifier "puVar16") (= "=") (identifier "PTR___stack_chk_fail_000f5540")) (; ";")) (expression_statement "iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();" (assignment_expression "iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)()" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR___stack_chk_fail_000f5540)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000f5540)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000f5540" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000f5540" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000f5540"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_000785c4:\n    (*(code *)(puVar16 + 0x1a94))();" (statement_identifier "LAB_000785c4") (: ":") (expression_statement "(*(code *)(puVar16 + 0x1a94))();" (call_expression "(*(code *)(puVar16 + 0x1a94))()" (parenthesized_expression "(*(code *)(puVar16 + 0x1a94))" (( "(") (pointer_expression "*(code *)(puVar16 + 0x1a94)" (* "*") (cast_expression "(code *)(puVar16 + 0x1a94)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0x1a94)" (( "(") (binary_expression "puVar16 + 0x1a94" (identifier "puVar16") (+ "+") (number_literal "0x1a94")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))

/* DWARF original prototype: int backupOnePage(sqlite3_backup * p, Pgno iSrcPg, u8 * zSrcData, int
   bUpdate, sqlite3_backup * p) */

int function_1(type_1 *p,type_2 iSrcPg,type_3 *zSrcData,int var_20,type_1 *var_22)

{
  type_4 *puVar1;
  type_5 *pVVar2;
  int var_2;
  int var_18;
  type_6 *pcVar5;
  type_6 *pcVar6;
  type_7 uVar7;
  type_8 uVar8;
  int var_15;
  int var_17;
  int var_19;
  int var_21;
  type_8 var_11;
  int var_14;
  int var_10;
  type_8 var_5;
  type_8 var_7;
  int var_16;
  int var_6;
  type_9 *psVar16;
  type_4 *var_13;
  type_8 var_4;
  type_8 var_3;
  type_10 *var_23;
  int var_24;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  var_13 = PTR_DAT_000f52bc;
  pVVar2 = p->pDestDb->pVdbe;
  var_4 = *(type_8 *)(*(int *)(*(int *)iSrcPg + 4) + 0x24);
  var_5 = pVVar2->pc;
  psVar16 = pVVar2->db;
  var_3 = (type_8)(var_1(zSrcData) * (type_11)var_4);
  var_2 = (int)var_4 >> 0x1f;
  var_24 = *(int *)PTR___stack_chk_guard_000f5568;
  var_6 = var_2 * (int)zSrcData + (int)(var_1(zSrcData) * (type_11)var_4 >> 0x20);
  var_7 = var_3 - var_4;
  if (var_4 == var_5) {
    var_10 = (var_6 - var_2) - (type_8)(var_3 < var_7);
  }
  else {
    var_18 = 8;
    if (*(char *)&psVar16->mutex != '\0') goto LAB_000783d4;
    var_7 = var_3 - var_4;
    var_10 = (var_6 - var_2) - (type_8)(var_3 < var_7);
  }
  uVar8 = var_5;
  if ((int)var_4 <= (int)var_5) {
    uVar8 = var_4;
  }
  pcVar5 = (type_6 *)(var_8 + -0x7e2c);
  pcVar6 = (type_6 *)(var_9 + 0x1a94);
  while( true ) {
    if (var_6 <= var_10) {
      var_18 = 0;
      if (var_6 != var_10) goto LAB_000783d4;
      if (var_3 <= var_7) {
        var_18 = 0;
        goto LAB_000783d4;
      }
    }
    var_16 = (int)var_5 >> 0x1f;
    var_23 = (type_10 *)0x0;
    (*(type_6 *)PTR___divdi3_000f52d8)(var_10,var_7,var_16,var_5);
    var_11 = p->pDestDb->pVdbe->pc;
    if (var_11 == 0) {
      var_12(7);
    }
    var_14 = *(type_8 *)(var_13 + 0x4098) / var_11 + 1;
    if (var_14 == var_15 + 1) {
      do {
        var_11 = var_7 + var_5;
        var_10 = (type_8)(var_11 < var_7) + var_10 + var_16;
        if (var_6 <= var_10) {
          var_18 = 0;
          if (var_10 != var_6) goto LAB_000783d4;
          if (var_3 <= var_11) {
            var_18 = 0;
            goto LAB_000783d4;
          }
        }
        var_23 = (type_10 *)0x0;
        (*(type_6 *)PTR___divdi3_000f52d8)(var_10,var_11,var_16,var_5);
        var_7 = var_11;
      } while (var_17 + 1 == var_14);
      var_18 = (*(type_6 *)psVar16->pTraceArg)(psVar16,var_17 + 1,&var_23,0);
    }
    else {
      var_18 = (*(type_6 *)psVar16->pTraceArg)(psVar16,var_15 + 1,&var_23,0);
      var_11 = var_7;
    }
    if ((var_18 != 0) || (var_18 = (*pcVar5)(var_23), var_18 != 0)) break;
    (*(type_6 *)PTR___moddi3_000f52e4)(var_10,var_11,var_16,var_5);
    var_18 = (int)var_23->pData + var_19;
    (*(type_6 *)PTR___moddi3_000f52e4)(var_10,var_11,var_2,var_4);
    (*(type_6 *)PTR_memcpy_000f556c)(var_18,var_20 + var_21,uVar8);
    *(type_12 *)var_23->pExtra = 0;
    if ((var_10 == 0 && var_11 == 0) && (var_22 == (type_1 *)0x0)) {
      uVar7 = *(type_7 *)(*(int *)(*(int *)iSrcPg + 4) + 0x30);
      *(char *)(var_18 + 0x1f) = (char)uVar7;
      *(char *)(var_18 + 0x1c) = (char)((type_8)uVar7 >> 0x18);
      *(char *)(var_18 + 0x1d) = (char)((type_8)uVar7 >> 0x10);
      *(char *)(var_18 + 0x1e) = (char)((type_8)uVar7 >> 8);
    }
    var_7 = var_11 + var_5;
    var_10 = (type_8)(var_7 < var_11) + var_10 + var_16;
    if (var_23 != (type_10 *)0x0) {
      (*pcVar6)();
    }
  }
  var_13 = var_9;
  if (var_23 != (type_10 *)0x0) goto LAB_000785c4;
LAB_000783d4:
  while (var_24 != *(int *)puVar1) {
    var_13 = PTR___stack_chk_fail_000f5540;
    var_18 = (*(type_6 *)PTR___stack_chk_fail_000f5540)();
LAB_000785c4:
    (*(type_6 *)(var_13 + 0x1a94))();
  }
  return var_18;
}


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

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

{
  undefined *puVar1;
  int iVar2;
  int iVar3;
  code *pcVar4;
  code *pcVar5;
  undefined4 uVar6;
  uint uVar7;
  int extraout_v1;
  int extraout_v1_00;
  int extraout_v1_01;
  int extraout_v1_02;
  uint uVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  uint uVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  undefined *puVar16;
  uint uVar17;
  uint uVar18;
  int local_30;
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_000f5568;
  puVar16 = PTR_DAT_000f52bc;
  uVar17 = *(uint *)(*(int *)(*param_2 + 4) + 0x24);
  uVar11 = (*(int **)(*param_1 + 4))[9];
  iVar15 = **(int **)(*param_1 + 4);
  uVar18 = (uint)((ulonglong)param_3 * (ulonglong)uVar17);
  iVar2 = (int)uVar17 >> 0x1f;
  local_2c = *(int *)PTR___stack_chk_guard_000f5568;
  iVar14 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar17 >> 0x20);
  uVar12 = uVar18 - uVar17;
  if (uVar17 == uVar11) {
    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);
  }
  else {
    iVar3 = 8;
    if (*(char *)(iVar15 + 0xc) != '\0') goto LAB_000783d4;
    uVar12 = uVar18 - uVar17;
    iVar10 = (iVar14 - iVar2) - (uint)(uVar18 < uVar12);
  }
  uVar7 = uVar11;
  if ((int)uVar17 <= (int)uVar11) {
    uVar7 = uVar17;
  }
  pcVar4 = (code *)(PTR_LAB_000f52f4 + -0x7e2c);
  pcVar5 = (code *)(PTR_LAB_000f52c8 + 0x1a94);
  while( true ) {
    if (iVar14 <= iVar10) {
      iVar3 = 0;
      if (iVar14 != iVar10) goto LAB_000783d4;
      if (uVar18 <= uVar12) {
        iVar3 = 0;
        goto LAB_000783d4;
      }
    }
    iVar13 = (int)uVar11 >> 0x1f;
    local_30 = 0;
    (*(code *)PTR_FUN_000f52d8)(iVar10,uVar12,iVar13,uVar11);
    uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x24);
    if (uVar8 == 0) {
      trap(7);
    }
    iVar9 = *(uint *)(puVar16 + 0x4098) / uVar8 + 1;
    if (iVar9 == extraout_v1 + 1) {
      do {
        uVar8 = uVar12 + uVar11;
        iVar10 = (uint)(uVar8 < uVar12) + iVar10 + iVar13;
        if (iVar14 <= iVar10) {
          iVar3 = 0;
          if (iVar10 != iVar14) goto LAB_000783d4;
          if (uVar18 <= uVar8) {
            iVar3 = 0;
            goto LAB_000783d4;
          }
        }
        local_30 = 0;
        (*(code *)PTR_FUN_000f52d8)(iVar10,uVar8,iVar13,uVar11);
        uVar12 = uVar8;
      } while (extraout_v1_00 + 1 == iVar9);
      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1_00 + 1,&local_30,0);
    }
    else {
      iVar3 = (**(code **)(iVar15 + 0xcc))(iVar15,extraout_v1 + 1,&local_30,0);
      uVar8 = uVar12;
    }
    if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;
    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar13,uVar11);
    iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;
    (*(code *)PTR_FUN_000f52e4)(iVar10,uVar8,iVar2,uVar17);
    (*(code *)PTR_memcpy_000f556c)(iVar3,param_4 + extraout_v1_02,uVar7);
    **(undefined1 **)(local_30 + 8) = 0;
    if ((iVar10 == 0 && uVar8 == 0) && (param_5 == 0)) {
      uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x30);
      *(char *)(iVar3 + 0x1f) = (char)uVar6;
      *(char *)(iVar3 + 0x1c) = (char)((uint)uVar6 >> 0x18);
      *(char *)(iVar3 + 0x1d) = (char)((uint)uVar6 >> 0x10);
      *(char *)(iVar3 + 0x1e) = (char)((uint)uVar6 >> 8);
    }
    uVar12 = uVar8 + uVar11;
    iVar10 = (uint)(uVar12 < uVar8) + iVar10 + iVar13;
    if (local_30 != 0) {
      (*pcVar5)();
    }
  }
  puVar16 = PTR_LAB_000f52c8;
  if (local_30 != 0) goto LAB_000785c4;
LAB_000783d4:
  while (local_2c != *(int *)puVar1) {
    puVar16 = PTR___stack_chk_fail_000f5540;
    iVar3 = (*(code *)PTR___stack_chk_fail_000f5540)();
LAB_000785c4:
    (*(code *)(puVar16 + 0x1a94))();
  }
  return iVar3;
}

