
/* WARNING: Removing unreachable block (ram,0x0009c9b4) */
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* 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;
  undefined *puVar2;
  Vdbe *pVVar3;
  int iVar4;
  int iVar5;
  code *pcVar6;
  undefined4 uVar7;
  u32 uVar8;
  uint extraout_v1;
  uint extraout_v1_00;
  int extraout_v1_01;
  int extraout_v1_02;
  int iVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  u32 uVar13;
  sqlite3 *psVar14;
  int iVar15;
  int iVar16;
  code *pcVar17;
  uint uVar18;
  uint uVar19;
  undefined1 *puVar20;
  undefined4 in_stack_ffffffa4;
  DbPage *pDestPg;
  
  puVar2 = PTR___stack_chk_guard_0015ba2c;
  puVar1 = PTR_DAT_0015b5d8;
  puVar20 = &_gp;
  iVar9 = *(int *)PTR___stack_chk_guard_0015ba2c;
  pVVar3 = p->pDestDb->pVdbe;
  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x20);
  uVar13 = pVVar3->cacheCtr;
  psVar14 = pVVar3->db;
  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);
  iVar4 = (int)uVar18 >> 0x1f;
  iVar15 = iVar4 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);
  if ((uVar18 == uVar13) || (iVar5 = 8, *(char *)&psVar14->mutex == '\0')) {
    uVar12 = uVar19 - uVar18;
    iVar16 = (int)uVar13 >> 0x1f;
    iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12);
    uVar8 = uVar13;
    if ((int)uVar18 <= (int)uVar13) {
      uVar8 = uVar18;
    }
    pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4);
    while ((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))) {
      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);
      uVar10 = p->pDestDb->pVdbe->cacheCtr;
      if (uVar10 == 0) {
        trap(7);
      }
      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {
        do {
          uVar10 = uVar12 + uVar13;
          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;
          if (iVar11 < iVar15) {
            pcVar17 = *(code **)(puVar20 + -0x7f10);
          }
          else {
            iVar5 = 0;
            if (iVar11 != iVar15) goto LAB_0009c82c;
            pcVar17 = *(code **)(puVar20 + -0x7f10);
            if (uVar19 <= uVar10) {
              iVar5 = 0;
              goto LAB_0009c82c;
            }
          }
          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);
          uVar12 = uVar10;
        } while (extraout_v1_00 == extraout_v1);
        iVar5 = (*psVar14->xProfile)
                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))
        ;
      }
      else {
        iVar5 = (*psVar14->xProfile)
                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));
        uVar10 = uVar12;
      }
      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;
      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);
      iVar5 = _DAT_00000004 + extraout_v1_01;
      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);
      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);
      *_DAT_00000008 = 0;
      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {
        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);
        *(char *)(iVar5 + 0x1f) = (char)uVar7;
        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);
        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);
        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);
      }
      uVar12 = uVar10 + uVar13;
      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;
    }
  }
LAB_0009c82c:
  while (iVar9 != *(int *)puVar2) {
    pcVar6 = *(code **)(puVar20 + -0x7ba0);
    iVar5 = (*pcVar6)();
    (*(pcVar6 + -0x1cbc))();
  }
  return iVar5;
}



int FUN_0009c6c4(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;
  uint extraout_v1;
  uint extraout_v1_00;
  int extraout_v1_01;
  int extraout_v1_02;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  undefined *puVar15;
  uint uVar16;
  uint uVar17;
  int local_30;
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  puVar15 = PTR_DAT_0015b5d8;
  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;
  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);
  uVar11 = (*(int **)(*param_1 + 4))[8];
  iVar12 = **(int **)(*param_1 + 4);
  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);
  iVar2 = (int)uVar16 >> 0x1f;
  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);
  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {
    uVar10 = uVar17 - uVar16;
    iVar14 = (int)uVar11 >> 0x1f;
    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);
    uVar7 = uVar11;
    if ((int)uVar16 <= (int)uVar11) {
      uVar7 = uVar16;
    }
    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);
    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);
    while( true ) {
      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))
      goto LAB_0009c82c;
      local_30 = 0;
      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);
      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);
      if (uVar8 == 0) {
        trap(7);
      }
      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {
        do {
          uVar8 = uVar10 + uVar11;
          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;
          if (iVar13 <= iVar9) {
            iVar3 = 0;
            if (iVar9 != iVar13) goto LAB_0009c82c;
            if (uVar17 <= uVar8) {
              iVar3 = 0;
              goto LAB_0009c82c;
            }
          }
          local_30 = 0;
          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);
          uVar10 = uVar8;
        } while (extraout_v1_00 == extraout_v1);
        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);
      }
      else {
        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);
        uVar8 = uVar10;
      }
      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;
      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);
      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;
      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);
      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);
      **(undefined1 **)(local_30 + 8) = 0;
      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {
        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);
        *(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);
      }
      uVar10 = uVar8 + uVar11;
      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;
      if (local_30 != 0) {
        (*pcVar5)();
      }
    }
    puVar15 = PTR_LAB_0015b65c;
    if (local_30 != 0) goto LAB_0009ca0c;
  }
LAB_0009c82c:
  while (local_2c != *(int *)puVar1) {
    puVar15 = PTR___stack_chk_fail_0015ba10;
    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();
LAB_0009ca0c:
    (*(code *)(puVar15 + -0x1cbc))();
  }
  return iVar3;
}


lui gp,0xc
addiu gp,gp,0x6eec
addu gp,gp,t9
addiu sp,sp,-0x70
lw t0,-0x7b84(gp)
sw s7,0x64(sp)
or s7,a0,zero
sw s5,0x5c(sp)
sw s4,0x58(sp)
sw gp,0x10(sp)
sw ra,0x6c(sp)
sw s8,0x68(sp)
sw s6,0x60(sp)
sw s3,0x54(sp)
sw s2,0x50(sp)
sw s1,0x4c(sp)
sw s0,0x48(sp)
lw v1,0x0(a1)
lw v0,0x0(a0)
lw a0,0x0(t0)
sw a1,0x38(sp)
lw v1,0x4(v1)
lw v0,0x4(v0)
sw t0,0x2c(sp)
sw a3,0x30(sp)
lw s8,0x20(v1)
lw s2,0x20(v0)
lw s3,0x0(v0)
multu a2,s8
sw a0,0x44(sp)
sra v0,s8,0x1f
sw v0,0x28(sp)
mfhi s4
mflo s5
mul v1,v0,a2
beq s8,s2,0x0009c764
_addu s4,v1,s4
lbu v0,0xc(s3)
bne v0,zero,0x0009c82c
_li v0,0x8
lw v0,0x28(sp)
subu s1,s5,s8
or v1,s2,zero
sra s6,s2,0x1f
subu s0,s4,v0
sltu v0,s5,s1
subu s0,s0,v0
slt v0,s2,s8
movz v1,s8,v0
lw v0,-0x7eac(gp)
sw v1,0x34(sp)
addiu v0,v0,-0x39d4
sw v0,0x24(sp)
lw v0,-0x7fd8(gp)
sw v0,0x1c(sp)
lw v0,-0x7f54(gp)
addiu v0,v0,-0x1cbc
sw v0,0x3c(sp)
slt v0,s0,s4
beq v0,zero,0x0009c9c8
_nop
lw t9,-0x7f10(gp)
or a0,s0,zero
or a1,s1,zero
sw zero,0x40(sp)
or a2,s6,zero
jalr t9
_or a3,s2,zero
lw a0,0x0(s7)
or t0,v1,zero
lw v0,0x1c(sp)
addiu a1,v1,0x1
lw v1,0x4(a0)
lw v0,-0x5de0(v0)
lw a0,0x20(v1)
teq a0,zero
divu v0,a0
mflo v0
beq t0,v0,0x0009c86c
_lw gp,0x10(sp)
lw t9,0xcc(s3)
or a3,zero,zero
addiu a2,sp,0x40
jalr t9
_or a0,s3,zero
beq v0,zero,0x0009c8d0
_lw gp,0x10(sp)
lw a0,0x40(sp)
bne a0,zero,0x0009ca0c
_lw t9,-0x7f54(gp)
lw v1,0x2c(sp)
lw a0,0x44(sp)
lw v1,0x0(v1)
bne a0,v1,0x0009ca00
_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,s1,s2
addu s0,s0,s6
sltu s1,a1,s1
addu s0,s1,s0
slt v0,s0,s4
beq v0,zero,0x0009c9e4
_or s1,a1,zero
lw t9,-0x7f10(gp)
or a2,s6,zero
sw t0,0x20(sp)
or a3,s2,zero
sw zero,0x40(sp)
jalr t9
_or a0,s0,zero
lw t0,0x20(sp)
beq v1,t0,0x0009c86c
_lw gp,0x10(sp)
lw t9,0xcc(s3)
addiu a1,v1,0x1
or a3,zero,zero
addiu a2,sp,0x40
jalr t9
_or a0,s3,zero
bne v0,zero,0x0009c820
_lw gp,0x10(sp)
lw t9,0x24(sp)
jalr t9
_lw a0,0x40(sp)
bne v0,zero,0x0009c820
_lw gp,0x10(sp)
lw t9,-0x7f14(gp)
or a2,s6,zero
or a3,s2,zero
or a0,s0,zero
jalr t9
_or a1,s1,zero
or a0,s0,zero
lw v0,0x40(sp)
or a1,s1,zero
lw gp,0x10(sp)
or a3,s8,zero
lw a2,0x28(sp)
lw v0,0x4(v0)
lw t9,-0x7f14(gp)
addu v0,v0,v1
jalr t9
_sw v0,0x20(sp)
lw gp,0x10(sp)
lw a0,0x30(sp)
lw a2,0x34(sp)
lw t9,-0x7b80(gp)
addu a1,a0,v1
jalr t9
_lw a0,0x20(sp)
or v0,s0,s1
lw v1,0x40(sp)
lw gp,0x10(sp)
lw v1,0x8(v1)
bne v0,zero,0x0009c998
_sb zero,0x0(v1)
lw v1,0x80(sp)
bne v1,zero,0x0009c99c
_addu v0,s1,s2
lw v1,0x38(sp)
lw a1,0x20(sp)
lw v0,0x0(v1)
lw v0,0x4(v0)
lw v0,0x2c(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,s1,s2
lw a0,0x40(sp)
addu s0,s0,s6
sltu s1,v0,s1
addu s0,s1,s0
beq a0,zero,0x0009c7ac
_or s1,v0,zero
lw t9,0x3c(sp)
jalr t9
_nop
b 0x0009c7ac
_lw gp,0x10(sp)
bne s4,s0,0x0009c82c
_or v0,zero,zero
sltu v0,s1,s5
bne v0,zero,0x0009c7b8
_or v0,zero,zero
b 0x0009c82c
_nop
bne s0,s4,0x0009c82c
_or v0,zero,zero
sltu v0,a1,s5
bne v0,zero,0x0009c88c
_lw t9,-0x7f10(gp)
b 0x0009c82c
_or v0,zero,zero
lw t9,-0x7ba0(gp)
jalr t9
_nop
addiu t9,t9,-0x1cbc
jalr t9
_sw v0,0x1c(sp)
lw gp,0x10(sp)
b 0x0009c82c
_lw v0,0x1c(sp)
(translation_unit "int FUN_0009c6c4(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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_0009c6c4(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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_0009c6c4(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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\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 "uint extraout_v1;" type_identifier identifier ;) (declaration "uint extraout_v1_00;" type_identifier 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 "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "puVar15 = PTR_DAT_0015b5d8;" (assignment_expression "puVar15 = PTR_DAT_0015b5d8" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);" (assignment_expression "uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_2 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(*param_2 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x20)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x20" (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))[8];" (assignment_expression "uVar11 = (*(int **)(*param_1 + 4))[8]" identifier = (subscript_expression "(*(int **)(*param_1 + 4))[8]" (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 "iVar12 = **(int **)(*param_1 + 4);" (assignment_expression "iVar12 = **(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 "uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);" (assignment_expression "uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16)" identifier = (call_expression "(uint)((ulonglong)param_3 * (ulonglong)uVar16)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)param_3 * (ulonglong)uVar16)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar2 = (int)uVar16 >> 0x1f;" (assignment_expression "iVar2 = (int)uVar16 >> 0x1f" identifier = (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);" (assignment_expression "iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" identifier = (binary_expression "iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" (binary_expression "iVar2 * param_3" identifier * identifier) + (cast_expression "(int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16 >> 0x20" (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))))) ;) (if_statement "if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }" if (parenthesized_expression "((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0'))" ( (binary_expression "(uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')" (parenthesized_expression "(uVar16 == uVar11)" ( (binary_expression "uVar16 == uVar11" identifier == identifier) )) || (parenthesized_expression "(iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')" ( (comma_expression "iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0'" (assignment_expression "iVar3 = 8" identifier = number_literal) , (binary_expression "*(char *)(iVar12 + 0xc) == '\0'" (pointer_expression "*(char *)(iVar12 + 0xc)" * (cast_expression "(char *)(iVar12 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }" { (expression_statement "uVar10 = uVar17 - uVar16;" (assignment_expression "uVar10 = uVar17 - uVar16" identifier = (binary_expression "uVar17 - uVar16" identifier - identifier)) ;) (expression_statement "iVar14 = (int)uVar11 >> 0x1f;" (assignment_expression "iVar14 = (int)uVar11 >> 0x1f" identifier = (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);" (assignment_expression "iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10)" identifier = (binary_expression "(iVar13 - iVar2) - (uint)(uVar17 < uVar10)" (parenthesized_expression "(iVar13 - iVar2)" ( (binary_expression "iVar13 - iVar2" identifier - identifier) )) - (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))))) ;) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) (if_statement "if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }" if (parenthesized_expression "((int)uVar16 <= (int)uVar11)" ( (binary_expression "(int)uVar16 <= (int)uVar11" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar7 = uVar16;\n    }" { (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) })) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4)" identifier = (cast_expression "(code *)(PTR_LAB_0015b704 + -0x39d4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b704 + -0x39d4)" ( (binary_expression "PTR_LAB_0015b704 + -0x39d4" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc)" identifier = (cast_expression "(code *)(PTR_LAB_0015b65c + -0x1cbc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b65c + -0x1cbc)" ( (binary_expression "PTR_LAB_0015b65c + -0x1cbc" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }" { (if_statement "if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;" if (parenthesized_expression "((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))" ( (binary_expression "(iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)))" (parenthesized_expression "(iVar13 <= iVar9)" ( (binary_expression "iVar13 <= iVar9" identifier <= identifier) )) && (parenthesized_expression "((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)))" ( (parenthesized_expression "(iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))" ( (comma_expression "iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)" (assignment_expression "iVar3 = 0" identifier = number_literal) , (binary_expression "iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)" (binary_expression "iVar13 != iVar9" identifier != identifier) || (parenthesized_expression "(iVar3 = 0, uVar17 <= uVar10)" ( (comma_expression "iVar3 = 0, uVar17 <= uVar10" (assignment_expression "iVar3 = 0" identifier = number_literal) , (binary_expression "uVar17 <= uVar10" identifier <= identifier)) )))) )) ))) )) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;)) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b6a0)" ( (pointer_expression "*(code *)PTR_FUN_0015b6a0" * (cast_expression "(code *)PTR_FUN_0015b6a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar10,iVar14,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);" (assignment_expression "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_1 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(*param_1 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 4) + 0x20)" ( (binary_expression "*(int *)(*param_1 + 4) + 0x20" (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 ))) ;) })) (if_statement "if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" if (parenthesized_expression "(extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8)" ( (binary_expression "extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8" identifier == (binary_expression "*(uint *)(puVar15 + -0x5de0) / uVar8" (pointer_expression "*(uint *)(puVar15 + -0x5de0)" * (cast_expression "(uint *)(puVar15 + -0x5de0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x5de0)" ( (binary_expression "puVar15 + -0x5de0" identifier + number_literal) )))) / identifier)) )) (compound_statement "{\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }" { (do_statement "do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);" do (compound_statement "{\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        }" { (expression_statement "uVar8 = uVar10 + uVar11;" (assignment_expression "uVar8 = uVar10 + uVar11" identifier = (binary_expression "uVar10 + uVar11" identifier + identifier)) ;) (expression_statement "iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;" (assignment_expression "iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14" identifier = (binary_expression "(uint)(uVar8 < uVar10) + iVar9 + iVar14" (binary_expression "(uint)(uVar8 < uVar10) + iVar9" (call_expression "(uint)(uVar8 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar10)" ( (binary_expression "uVar8 < uVar10" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }" if (parenthesized_expression "(iVar13 <= iVar9)" ( (binary_expression "iVar13 <= iVar9" identifier <= identifier) )) (compound_statement "{\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar9 != iVar13) goto LAB_0009c82c;" if (parenthesized_expression "(iVar9 != iVar13)" ( (binary_expression "iVar9 != iVar13" identifier != identifier) )) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;)) (if_statement "if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }" if (parenthesized_expression "(uVar17 <= uVar8)" ( (binary_expression "uVar17 <= uVar8" identifier <= identifier) )) (compound_statement "{\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;) })) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b6a0)" ( (pointer_expression "*(code *)PTR_FUN_0015b6a0" * (cast_expression "(code *)PTR_FUN_0015b6a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar8,iVar14,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(extraout_v1_00 == extraout_v1)" ( (binary_expression "extraout_v1_00 == extraout_v1" identifier == identifier) )) ;) (expression_statement "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar12 + 0xcc))" ( (pointer_expression "**(code **)(iVar12 + 0xcc)" * (pointer_expression "*(code **)(iVar12 + 0xcc)" * (cast_expression "(code **)(iVar12 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xcc)" ( (binary_expression "iVar12 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar12,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 **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" else (compound_statement "{\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" { (expression_statement "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar12 + 0xcc))" ( (pointer_expression "**(code **)(iVar12 + 0xcc)" * (pointer_expression "*(code **)(iVar12 + 0xcc)" * (cast_expression "(code **)(iVar12 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xcc)" ( (binary_expression "iVar12 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar12,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 = uVar10;" (assignment_expression "uVar8 = uVar10" 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_0015b69c)(iVar9,uVar8,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b69c)" ( (pointer_expression "*(code *)PTR_FUN_0015b69c" * (cast_expression "(code *)PTR_FUN_0015b69c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar8,iVar14,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_0015b69c)(iVar9,uVar8,iVar2,uVar16);" (call_expression "(*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16)" (parenthesized_expression "(*(code *)PTR_FUN_0015b69c)" ( (pointer_expression "*(code *)PTR_FUN_0015b69c" * (cast_expression "(code *)PTR_FUN_0015b69c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar8,iVar2,uVar16)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (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 ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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 "((iVar9 == 0 && uVar8 == 0) && (param_5 == 0))" ( (binary_expression "(iVar9 == 0 && uVar8 == 0) && (param_5 == 0)" (parenthesized_expression "(iVar9 == 0 && uVar8 == 0)" ( (binary_expression "iVar9 == 0 && uVar8 == 0" (binary_expression "iVar9 == 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) + 0x2c);\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) + 0x2c);" (assignment_expression "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x2c)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x2c" (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 "uVar10 = uVar8 + uVar11;" (assignment_expression "uVar10 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) (expression_statement "iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;" (assignment_expression "iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14" identifier = (binary_expression "(uint)(uVar10 < uVar8) + iVar9 + iVar14" (binary_expression "(uint)(uVar10 < uVar8) + iVar9" (call_expression "(uint)(uVar10 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar8)" ( (binary_expression "uVar10 < 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 "puVar15 = PTR_LAB_0015b65c;" (assignment_expression "puVar15 = PTR_LAB_0015b65c" identifier = identifier) ;) (if_statement "if (local_30 != 0) goto LAB_0009ca0c;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0009ca0c;" goto statement_identifier ;)) })) (labeled_statement "LAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }" statement_identifier : (while_statement "while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\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    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }" { (expression_statement "puVar15 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar15 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();" (assignment_expression "iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();" statement_identifier : (expression_statement "(*(code *)(puVar15 + -0x1cbc))();" (call_expression "(*(code *)(puVar15 + -0x1cbc))()" (parenthesized_expression "(*(code *)(puVar15 + -0x1cbc))" ( (pointer_expression "*(code *)(puVar15 + -0x1cbc)" * (cast_expression "(code *)(puVar15 + -0x1cbc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x1cbc)" ( (binary_expression "puVar15 + -0x1cbc" identifier + number_literal) )))) )) (argument_list "()" ( ))) ;)) }))) (return_statement "return iVar3;" return identifier ;) })))
(translation_unit "/* WARNING: Removing unreachable block (ram,0x0009c9b4) */\n/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* 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  undefined *puVar2;\n  Vdbe *pVVar3;\n  int iVar4;\n  int iVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  u32 uVar8;\n  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  u32 uVar13;\n  sqlite3 *psVar14;\n  int iVar15;\n  int iVar16;\n  code *pcVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  undefined4 in_stack_ffffffa4;\n  DbPage *pDestPg;\n  \n  puVar2 = PTR___stack_chk_guard_0015ba2c;\n  puVar1 = PTR_DAT_0015b5d8;\n  puVar20 = &_gp;\n  iVar9 = *(int *)PTR___stack_chk_guard_0015ba2c;\n  pVVar3 = p->pDestDb->pVdbe;\n  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x20);\n  uVar13 = pVVar3->cacheCtr;\n  psVar14 = pVVar3->db;\n  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);\n  iVar4 = (int)uVar18 >> 0x1f;\n  iVar15 = iVar4 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);\n  if ((uVar18 == uVar13) || (iVar5 = 8, *(char *)&psVar14->mutex == '\0')) {\n    uVar12 = uVar19 - uVar18;\n    iVar16 = (int)uVar13 >> 0x1f;\n    iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12);\n    uVar8 = uVar13;\n    if ((int)uVar18 <= (int)uVar13) {\n      uVar8 = uVar18;\n    }\n    pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    while ((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))) {\n      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);\n      uVar10 = p->pDestDb->pVdbe->cacheCtr;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }\n      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);\n      iVar5 = _DAT_00000004 + extraout_v1_01;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);\n      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);\n      *_DAT_00000008 = 0;\n      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }\n      uVar12 = uVar10 + uVar13;\n      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;\n    }\n  }\nLAB_0009c82c:\n  while (iVar9 != *(int *)puVar2) {\n    pcVar6 = *(code **)(puVar20 + -0x7ba0);\n    iVar5 = (*pcVar6)();\n    (*(pcVar6 + -0x1cbc))();\n  }\n  return iVar5;\n}\n\n" comment comment comment (function_definition "int backupOnePage(sqlite3_backup *p,Pgno iSrcPg,u8 *zSrcData,int bUpdate,sqlite3_backup *p_1)\n\n{\n  undefined *puVar1;\n  undefined *puVar2;\n  Vdbe *pVVar3;\n  int iVar4;\n  int iVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  u32 uVar8;\n  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  u32 uVar13;\n  sqlite3 *psVar14;\n  int iVar15;\n  int iVar16;\n  code *pcVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  undefined4 in_stack_ffffffa4;\n  DbPage *pDestPg;\n  \n  puVar2 = PTR___stack_chk_guard_0015ba2c;\n  puVar1 = PTR_DAT_0015b5d8;\n  puVar20 = &_gp;\n  iVar9 = *(int *)PTR___stack_chk_guard_0015ba2c;\n  pVVar3 = p->pDestDb->pVdbe;\n  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x20);\n  uVar13 = pVVar3->cacheCtr;\n  psVar14 = pVVar3->db;\n  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);\n  iVar4 = (int)uVar18 >> 0x1f;\n  iVar15 = iVar4 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);\n  if ((uVar18 == uVar13) || (iVar5 = 8, *(char *)&psVar14->mutex == '\0')) {\n    uVar12 = uVar19 - uVar18;\n    iVar16 = (int)uVar13 >> 0x1f;\n    iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12);\n    uVar8 = uVar13;\n    if ((int)uVar18 <= (int)uVar13) {\n      uVar8 = uVar18;\n    }\n    pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    while ((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))) {\n      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);\n      uVar10 = p->pDestDb->pVdbe->cacheCtr;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }\n      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);\n      iVar5 = _DAT_00000004 + extraout_v1_01;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);\n      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);\n      *_DAT_00000008 = 0;\n      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }\n      uVar12 = uVar10 + uVar13;\n      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;\n    }\n  }\nLAB_0009c82c:\n  while (iVar9 != *(int *)puVar2) {\n    pcVar6 = *(code **)(puVar20 + -0x7ba0);\n    iVar5 = (*pcVar6)();\n    (*(pcVar6 + -0x1cbc))();\n  }\n  return iVar5;\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  undefined *puVar2;\n  Vdbe *pVVar3;\n  int iVar4;\n  int iVar5;\n  code *pcVar6;\n  undefined4 uVar7;\n  u32 uVar8;\n  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  u32 uVar13;\n  sqlite3 *psVar14;\n  int iVar15;\n  int iVar16;\n  code *pcVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  undefined4 in_stack_ffffffa4;\n  DbPage *pDestPg;\n  \n  puVar2 = PTR___stack_chk_guard_0015ba2c;\n  puVar1 = PTR_DAT_0015b5d8;\n  puVar20 = &_gp;\n  iVar9 = *(int *)PTR___stack_chk_guard_0015ba2c;\n  pVVar3 = p->pDestDb->pVdbe;\n  uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x20);\n  uVar13 = pVVar3->cacheCtr;\n  psVar14 = pVVar3->db;\n  uVar19 = (uint)(ZEXT48(zSrcData) * (ulonglong)uVar18);\n  iVar4 = (int)uVar18 >> 0x1f;\n  iVar15 = iVar4 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);\n  if ((uVar18 == uVar13) || (iVar5 = 8, *(char *)&psVar14->mutex == '\0')) {\n    uVar12 = uVar19 - uVar18;\n    iVar16 = (int)uVar13 >> 0x1f;\n    iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12);\n    uVar8 = uVar13;\n    if ((int)uVar18 <= (int)uVar13) {\n      uVar8 = uVar18;\n    }\n    pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    while ((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))) {\n      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);\n      uVar10 = p->pDestDb->pVdbe->cacheCtr;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }\n      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);\n      iVar5 = _DAT_00000004 + extraout_v1_01;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);\n      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);\n      *_DAT_00000008 = 0;\n      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }\n      uVar12 = uVar10 + uVar13;\n      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;\n    }\n  }\nLAB_0009c82c:\n  while (iVar9 != *(int *)puVar2) {\n    pcVar6 = *(code **)(puVar20 + -0x7ba0);\n    iVar5 = (*pcVar6)();\n    (*(pcVar6 + -0x1cbc))();\n  }\n  return iVar5;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Vdbe *pVVar3;" type_identifier (pointer_declarator "*pVVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "u32 uVar8;" type_identifier identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "uint extraout_v1_00;" type_identifier identifier ;) (declaration "int extraout_v1_01;" primitive_type identifier ;) (declaration "int extraout_v1_02;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "u32 uVar13;" type_identifier identifier ;) (declaration "sqlite3 *psVar14;" type_identifier (pointer_declarator "*psVar14" * identifier) ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "code *pcVar17;" type_identifier (pointer_declarator "*pcVar17" * identifier) ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "undefined4 in_stack_ffffffa4;" type_identifier identifier ;) (declaration "DbPage *pDestPg;" type_identifier (pointer_declarator "*pDestPg" * identifier) ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "puVar1 = PTR_DAT_0015b5d8;" (assignment_expression "puVar1 = PTR_DAT_0015b5d8" identifier = identifier) ;) (expression_statement "puVar20 = &_gp;" (assignment_expression "puVar20 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "iVar9 = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "iVar9 = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pVVar3 = p->pDestDb->pVdbe;" (assignment_expression "pVVar3 = 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) + 0x20);" (assignment_expression "uVar18 = *(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(*(int *)iSrcPg + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)iSrcPg + 4) + 0x20)" ( (binary_expression "*(int *)(*(int *)iSrcPg + 4) + 0x20" (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 "uVar13 = pVVar3->cacheCtr;" (assignment_expression "uVar13 = pVVar3->cacheCtr" identifier = (field_expression "pVVar3->cacheCtr" identifier -> field_identifier)) ;) (expression_statement "psVar14 = pVVar3->db;" (assignment_expression "psVar14 = pVVar3->db" identifier = (field_expression "pVVar3->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 "iVar4 = (int)uVar18 >> 0x1f;" (assignment_expression "iVar4 = (int)uVar18 >> 0x1f" identifier = (binary_expression "(int)uVar18 >> 0x1f" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar15 = iVar4 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20);" (assignment_expression "iVar15 = iVar4 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20)" identifier = (binary_expression "iVar4 * (int)zSrcData + (int)(ZEXT48(zSrcData) * (ulonglong)uVar18 >> 0x20)" (binary_expression "iVar4 * (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) ))))) ;) (if_statement "if ((uVar18 == uVar13) || (iVar5 = 8, *(char *)&psVar14->mutex == '\0')) {\n    uVar12 = uVar19 - uVar18;\n    iVar16 = (int)uVar13 >> 0x1f;\n    iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12);\n    uVar8 = uVar13;\n    if ((int)uVar18 <= (int)uVar13) {\n      uVar8 = uVar18;\n    }\n    pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    while ((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))) {\n      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);\n      uVar10 = p->pDestDb->pVdbe->cacheCtr;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }\n      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);\n      iVar5 = _DAT_00000004 + extraout_v1_01;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);\n      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);\n      *_DAT_00000008 = 0;\n      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }\n      uVar12 = uVar10 + uVar13;\n      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;\n    }\n  }" if (parenthesized_expression "((uVar18 == uVar13) || (iVar5 = 8, *(char *)&psVar14->mutex == '\0'))" ( (binary_expression "(uVar18 == uVar13) || (iVar5 = 8, *(char *)&psVar14->mutex == '\0')" (parenthesized_expression "(uVar18 == uVar13)" ( (binary_expression "uVar18 == uVar13" identifier == identifier) )) || (parenthesized_expression "(iVar5 = 8, *(char *)&psVar14->mutex == '\0')" ( (comma_expression "iVar5 = 8, *(char *)&psVar14->mutex == '\0'" (assignment_expression "iVar5 = 8" identifier = number_literal) , (binary_expression "*(char *)&psVar14->mutex == '\0'" (pointer_expression "*(char *)&psVar14->mutex" * (cast_expression "(char *)&psVar14->mutex" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&psVar14->mutex" & (field_expression "psVar14->mutex" identifier -> field_identifier)))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    uVar12 = uVar19 - uVar18;\n    iVar16 = (int)uVar13 >> 0x1f;\n    iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12);\n    uVar8 = uVar13;\n    if ((int)uVar18 <= (int)uVar13) {\n      uVar8 = uVar18;\n    }\n    pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    while ((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))) {\n      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);\n      uVar10 = p->pDestDb->pVdbe->cacheCtr;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }\n      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);\n      iVar5 = _DAT_00000004 + extraout_v1_01;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);\n      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);\n      *_DAT_00000008 = 0;\n      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }\n      uVar12 = uVar10 + uVar13;\n      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;\n    }\n  }" { (expression_statement "uVar12 = uVar19 - uVar18;" (assignment_expression "uVar12 = uVar19 - uVar18" identifier = (binary_expression "uVar19 - uVar18" identifier - identifier)) ;) (expression_statement "iVar16 = (int)uVar13 >> 0x1f;" (assignment_expression "iVar16 = (int)uVar13 >> 0x1f" identifier = (binary_expression "(int)uVar13 >> 0x1f" (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12);" (assignment_expression "iVar11 = (iVar15 - iVar4) - (uint)(uVar19 < uVar12)" identifier = (binary_expression "(iVar15 - iVar4) - (uint)(uVar19 < uVar12)" (parenthesized_expression "(iVar15 - iVar4)" ( (binary_expression "iVar15 - iVar4" identifier - identifier) )) - (call_expression "(uint)(uVar19 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar19 < uVar12)" ( (binary_expression "uVar19 < uVar12" identifier < identifier) ))))) ;) (expression_statement "uVar8 = uVar13;" (assignment_expression "uVar8 = uVar13" identifier = identifier) ;) (if_statement "if ((int)uVar18 <= (int)uVar13) {\n      uVar8 = uVar18;\n    }" if (parenthesized_expression "((int)uVar18 <= (int)uVar13)" ( (binary_expression "(int)uVar18 <= (int)uVar13" (cast_expression "(int)uVar18" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar8 = uVar18;\n    }" { (expression_statement "uVar8 = uVar18;" (assignment_expression "uVar8 = uVar18" identifier = identifier) ;) })) (expression_statement "pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0015b704 + -0x39d4)" identifier = (cast_expression "(code *)(PTR_LAB_0015b704 + -0x39d4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b704 + -0x39d4)" ( (binary_expression "PTR_LAB_0015b704 + -0x39d4" identifier + number_literal) )))) ;) (while_statement "while ((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))) {\n      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);\n      uVar10 = p->pDestDb->pVdbe->cacheCtr;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }\n      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);\n      iVar5 = _DAT_00000004 + extraout_v1_01;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);\n      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);\n      *_DAT_00000008 = 0;\n      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }\n      uVar12 = uVar10 + uVar13;\n      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;\n    }" while (parenthesized_expression "((iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19)))))" ( (parenthesized_expression "(iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))))" ( (binary_expression "iVar11 < iVar15 || ((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19)))" (binary_expression "iVar11 < iVar15" identifier < identifier) || (parenthesized_expression "((iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19)))" ( (parenthesized_expression "(iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19))" ( (comma_expression "iVar5 = 0, iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19)" (assignment_expression "iVar5 = 0" identifier = number_literal) , (binary_expression "iVar15 == iVar11 && (iVar5 = 0, uVar12 < uVar19)" (binary_expression "iVar15 == iVar11" identifier == identifier) && (parenthesized_expression "(iVar5 = 0, uVar12 < uVar19)" ( (comma_expression "iVar5 = 0, uVar12 < uVar19" (assignment_expression "iVar5 = 0" identifier = number_literal) , (binary_expression "uVar12 < uVar19" identifier < identifier)) )))) )) ))) )) )) (compound_statement "{\n      (**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);\n      uVar10 = p->pDestDb->pVdbe->cacheCtr;\n      if (uVar10 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }\n      if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);\n      iVar5 = _DAT_00000004 + extraout_v1_01;\n      (**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);\n      (**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);\n      *_DAT_00000008 = 0;\n      if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }\n      uVar12 = uVar10 + uVar13;\n      iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;\n    }" { (expression_statement "(**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13);" (call_expression "(**(code **)(puVar20 + -0x7f10))(iVar11,uVar12,iVar16,uVar13)" (parenthesized_expression "(**(code **)(puVar20 + -0x7f10))" ( (pointer_expression "**(code **)(puVar20 + -0x7f10)" * (pointer_expression "*(code **)(puVar20 + -0x7f10)" * (cast_expression "(code **)(puVar20 + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x7f10)" ( (binary_expression "puVar20 + -0x7f10" identifier + number_literal) ))))) )) (argument_list "(iVar11,uVar12,iVar16,uVar13)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar10 = p->pDestDb->pVdbe->cacheCtr;" (assignment_expression "uVar10 = p->pDestDb->pVdbe->cacheCtr" identifier = (field_expression "p->pDestDb->pVdbe->cacheCtr" (field_expression "p->pDestDb->pVdbe" (field_expression "p->pDestDb" identifier -> field_identifier) -> field_identifier) -> field_identifier)) ;) (if_statement "if (uVar10 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (if_statement "if (extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10) {\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }\n      else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }" if (parenthesized_expression "(extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10)" ( (binary_expression "extraout_v1 == *(uint *)(puVar1 + -0x5de0) / uVar10" identifier == (binary_expression "*(uint *)(puVar1 + -0x5de0) / uVar10" (pointer_expression "*(uint *)(puVar1 + -0x5de0)" * (cast_expression "(uint *)(puVar1 + -0x5de0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar1 + -0x5de0)" ( (binary_expression "puVar1 + -0x5de0" identifier + number_literal) )))) / identifier)) )) (compound_statement "{\n        do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;\n      }" { (do_statement "do {\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        } while (extraout_v1_00 == extraout_v1);" do (compound_statement "{\n          uVar10 = uVar12 + uVar13;\n          iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;\n          if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          (*pcVar17)(iVar11,uVar10,iVar16,uVar13);\n          uVar12 = uVar10;\n        }" { (expression_statement "uVar10 = uVar12 + uVar13;" (assignment_expression "uVar10 = uVar12 + uVar13" identifier = (binary_expression "uVar12 + uVar13" identifier + identifier)) ;) (expression_statement "iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16;" (assignment_expression "iVar11 = (uint)(uVar10 < uVar12) + iVar11 + iVar16" identifier = (binary_expression "(uint)(uVar10 < uVar12) + iVar11 + iVar16" (binary_expression "(uint)(uVar10 < uVar12) + iVar11" (call_expression "(uint)(uVar10 < uVar12)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar12)" ( (binary_expression "uVar10 < uVar12" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (iVar11 < iVar15) {\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }\n          else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }" if (parenthesized_expression "(iVar11 < iVar15)" ( (binary_expression "iVar11 < iVar15" identifier < identifier) )) (compound_statement "{\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n          }" { (expression_statement "pcVar17 = *(code **)(puVar20 + -0x7f10);" (assignment_expression "pcVar17 = *(code **)(puVar20 + -0x7f10)" identifier = (pointer_expression "*(code **)(puVar20 + -0x7f10)" * (cast_expression "(code **)(puVar20 + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x7f10)" ( (binary_expression "puVar20 + -0x7f10" identifier + number_literal) ))))) ;) }) (else_clause "else {\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }" else (compound_statement "{\n            iVar5 = 0;\n            if (iVar11 != iVar15) goto LAB_0009c82c;\n            pcVar17 = *(code **)(puVar20 + -0x7f10);\n            if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }\n          }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (if_statement "if (iVar11 != iVar15) goto LAB_0009c82c;" if (parenthesized_expression "(iVar11 != iVar15)" ( (binary_expression "iVar11 != iVar15" identifier != identifier) )) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;)) (expression_statement "pcVar17 = *(code **)(puVar20 + -0x7f10);" (assignment_expression "pcVar17 = *(code **)(puVar20 + -0x7f10)" identifier = (pointer_expression "*(code **)(puVar20 + -0x7f10)" * (cast_expression "(code **)(puVar20 + -0x7f10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x7f10)" ( (binary_expression "puVar20 + -0x7f10" identifier + number_literal) ))))) ;) (if_statement "if (uVar19 <= uVar10) {\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }" if (parenthesized_expression "(uVar19 <= uVar10)" ( (binary_expression "uVar19 <= uVar10" identifier <= identifier) )) (compound_statement "{\n              iVar5 = 0;\n              goto LAB_0009c82c;\n            }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;) })) }))) (expression_statement "(*pcVar17)(iVar11,uVar10,iVar16,uVar13);" (call_expression "(*pcVar17)(iVar11,uVar10,iVar16,uVar13)" (parenthesized_expression "(*pcVar17)" ( (pointer_expression "*pcVar17" * identifier) )) (argument_list "(iVar11,uVar10,iVar16,uVar13)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) }) while (parenthesized_expression "(extraout_v1_00 == extraout_v1)" ( (binary_expression "extraout_v1_00 == extraout_v1" identifier == identifier) )) ;) (expression_statement "iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))\n        ;" (assignment_expression "iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))" identifier = (call_expression "(*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))" (parenthesized_expression "(*psVar14->xProfile)" ( (pointer_expression "*psVar14->xProfile" * (field_expression "psVar14->xProfile" identifier -> field_identifier)) )) (argument_list "(psVar14,(char *)(extraout_v1_00 + 1),CONCAT44(puVar20,in_stack_ffffffa4))" ( identifier , (cast_expression "(char *)(extraout_v1_00 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_v1_00 + 1)" ( (binary_expression "extraout_v1_00 + 1" identifier + number_literal) ))) , (call_expression "CONCAT44(puVar20,in_stack_ffffffa4)" identifier (argument_list "(puVar20,in_stack_ffffffa4)" ( identifier , identifier ))) )))) ;) }) (else_clause "else {\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }" else (compound_statement "{\n        iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));\n        uVar10 = uVar12;\n      }" { (expression_statement "iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4));" (assignment_expression "iVar5 = (*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4))" identifier = (call_expression "(*psVar14->xProfile)\n                          (psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4))" (parenthesized_expression "(*psVar14->xProfile)" ( (pointer_expression "*psVar14->xProfile" * (field_expression "psVar14->xProfile" identifier -> field_identifier)) )) (argument_list "(psVar14,(char *)(extraout_v1 + 1),CONCAT44(puVar20,in_stack_ffffffa4))" ( identifier , (cast_expression "(char *)(extraout_v1 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(extraout_v1 + 1)" ( (binary_expression "extraout_v1 + 1" identifier + number_literal) ))) , (call_expression "CONCAT44(puVar20,in_stack_ffffffa4)" identifier (argument_list "(puVar20,in_stack_ffffffa4)" ( identifier , identifier ))) )))) ;) (expression_statement "uVar10 = uVar12;" (assignment_expression "uVar10 = uVar12" identifier = identifier) ;) }))) (if_statement "if ((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)) break;" if (parenthesized_expression "((iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0))" ( (binary_expression "(iVar5 != 0) || (iVar5 = (*pcVar6)(0), iVar5 != 0)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar5 = (*pcVar6)(0), iVar5 != 0)" ( (comma_expression "iVar5 = (*pcVar6)(0), iVar5 != 0" (assignment_expression "iVar5 = (*pcVar6)(0)" identifier = (call_expression "(*pcVar6)(0)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(0)" ( number_literal )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "(**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13);" (call_expression "(**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar16,uVar13)" (parenthesized_expression "(**(code **)(puVar20 + -0x7f14))" ( (pointer_expression "**(code **)(puVar20 + -0x7f14)" * (pointer_expression "*(code **)(puVar20 + -0x7f14)" * (cast_expression "(code **)(puVar20 + -0x7f14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x7f14)" ( (binary_expression "puVar20 + -0x7f14" identifier + number_literal) ))))) )) (argument_list "(iVar11,uVar10,iVar16,uVar13)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "iVar5 = _DAT_00000004 + extraout_v1_01;" (assignment_expression "iVar5 = _DAT_00000004 + extraout_v1_01" identifier = (binary_expression "_DAT_00000004 + extraout_v1_01" identifier + identifier)) ;) (expression_statement "(**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18);" (call_expression "(**(code **)(puVar20 + -0x7f14))(iVar11,uVar10,iVar4,uVar18)" (parenthesized_expression "(**(code **)(puVar20 + -0x7f14))" ( (pointer_expression "**(code **)(puVar20 + -0x7f14)" * (pointer_expression "*(code **)(puVar20 + -0x7f14)" * (cast_expression "(code **)(puVar20 + -0x7f14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x7f14)" ( (binary_expression "puVar20 + -0x7f14" identifier + number_literal) ))))) )) (argument_list "(iVar11,uVar10,iVar4,uVar18)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8);" (call_expression "(**(code **)(puVar20 + -0x7b80))(iVar5,bUpdate + extraout_v1_02,uVar8)" (parenthesized_expression "(**(code **)(puVar20 + -0x7b80))" ( (pointer_expression "**(code **)(puVar20 + -0x7b80)" * (pointer_expression "*(code **)(puVar20 + -0x7b80)" * (cast_expression "(code **)(puVar20 + -0x7b80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x7b80)" ( (binary_expression "puVar20 + -0x7b80" identifier + number_literal) ))))) )) (argument_list "(iVar5,bUpdate + extraout_v1_02,uVar8)" ( identifier , (binary_expression "bUpdate + extraout_v1_02" identifier + identifier) , identifier ))) ;) (expression_statement "*_DAT_00000008 = 0;" (assignment_expression "*_DAT_00000008 = 0" (pointer_expression "*_DAT_00000008" * identifier) = number_literal) ;) (if_statement "if ((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)) {\n        uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }" if (parenthesized_expression "((iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0))" ( (binary_expression "(iVar11 == 0 && uVar10 == 0) && (p_1 == (sqlite3_backup *)0x0)" (parenthesized_expression "(iVar11 == 0 && uVar10 == 0)" ( (binary_expression "iVar11 == 0 && uVar10 == 0" (binary_expression "iVar11 == 0" identifier == number_literal) && (binary_expression "uVar10 == 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) + 0x2c);\n        *(char *)(iVar5 + 0x1f) = (char)uVar7;\n        *(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);\n        *(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);\n        *(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);\n      }" { (expression_statement "uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c);" (assignment_expression "uVar7 = *(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(*(int *)iSrcPg + 4) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)iSrcPg + 4) + 0x2c)" ( (binary_expression "*(int *)(*(int *)iSrcPg + 4) + 0x2c" (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 *)(iVar5 + 0x1f) = (char)uVar7;" (assignment_expression "*(char *)(iVar5 + 0x1f) = (char)uVar7" (pointer_expression "*(char *)(iVar5 + 0x1f)" * (cast_expression "(char *)(iVar5 + 0x1f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1f)" ( (binary_expression "iVar5 + 0x1f" identifier + number_literal) )))) = (cast_expression "(char)uVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18);" (assignment_expression "*(char *)(iVar5 + 0x1c) = (char)((uint)uVar7 >> 0x18)" (pointer_expression "*(char *)(iVar5 + 0x1c)" * (cast_expression "(char *)(iVar5 + 0x1c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1c)" ( (binary_expression "iVar5 + 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 *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10);" (assignment_expression "*(char *)(iVar5 + 0x1d) = (char)((uint)uVar7 >> 0x10)" (pointer_expression "*(char *)(iVar5 + 0x1d)" * (cast_expression "(char *)(iVar5 + 0x1d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1d)" ( (binary_expression "iVar5 + 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 *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8);" (assignment_expression "*(char *)(iVar5 + 0x1e) = (char)((uint)uVar7 >> 8)" (pointer_expression "*(char *)(iVar5 + 0x1e)" * (cast_expression "(char *)(iVar5 + 0x1e)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1e)" ( (binary_expression "iVar5 + 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 "uVar12 = uVar10 + uVar13;" (assignment_expression "uVar12 = uVar10 + uVar13" identifier = (binary_expression "uVar10 + uVar13" identifier + identifier)) ;) (expression_statement "iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16;" (assignment_expression "iVar11 = (uint)(uVar12 < uVar10) + iVar11 + iVar16" identifier = (binary_expression "(uint)(uVar12 < uVar10) + iVar11 + iVar16" (binary_expression "(uint)(uVar12 < uVar10) + iVar11" (call_expression "(uint)(uVar12 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar12 < uVar10)" ( (binary_expression "uVar12 < uVar10" identifier < identifier) ))) + identifier) + identifier)) ;) })) })) (labeled_statement "LAB_0009c82c:\n  while (iVar9 != *(int *)puVar2) {\n    pcVar6 = *(code **)(puVar20 + -0x7ba0);\n    iVar5 = (*pcVar6)();\n    (*(pcVar6 + -0x1cbc))();\n  }" statement_identifier : (while_statement "while (iVar9 != *(int *)puVar2) {\n    pcVar6 = *(code **)(puVar20 + -0x7ba0);\n    iVar5 = (*pcVar6)();\n    (*(pcVar6 + -0x1cbc))();\n  }" while (parenthesized_expression "(iVar9 != *(int *)puVar2)" ( (binary_expression "iVar9 != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    pcVar6 = *(code **)(puVar20 + -0x7ba0);\n    iVar5 = (*pcVar6)();\n    (*(pcVar6 + -0x1cbc))();\n  }" { (expression_statement "pcVar6 = *(code **)(puVar20 + -0x7ba0);" (assignment_expression "pcVar6 = *(code **)(puVar20 + -0x7ba0)" identifier = (pointer_expression "*(code **)(puVar20 + -0x7ba0)" * (cast_expression "(code **)(puVar20 + -0x7ba0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar20 + -0x7ba0)" ( (binary_expression "puVar20 + -0x7ba0" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = (*pcVar6)();" (assignment_expression "iVar5 = (*pcVar6)()" identifier = (call_expression "(*pcVar6)()" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "()" ( )))) ;) (expression_statement "(*(pcVar6 + -0x1cbc))();" (call_expression "(*(pcVar6 + -0x1cbc))()" (parenthesized_expression "(*(pcVar6 + -0x1cbc))" ( (pointer_expression "*(pcVar6 + -0x1cbc)" * (parenthesized_expression "(pcVar6 + -0x1cbc)" ( (binary_expression "pcVar6 + -0x1cbc" identifier + number_literal) ))) )) (argument_list "()" ( ))) ;) }))) (return_statement "return iVar5;" return identifier ;) })))
(translation_unit "int FUN_0009c6c4(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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }\n  return iVar3;\n}\n\n" (function_definition "int FUN_0009c6c4(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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }\n  return iVar3;\n}" primitive_type (function_declarator "FUN_0009c6c4(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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\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 "uint extraout_v1;" type_identifier identifier ;) (declaration "uint extraout_v1_00;" type_identifier 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 "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "undefined *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "puVar15 = PTR_DAT_0015b5d8;" (assignment_expression "puVar15 = PTR_DAT_0015b5d8" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);" (assignment_expression "uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_2 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(*param_2 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x20)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x20" (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))[8];" (assignment_expression "uVar11 = (*(int **)(*param_1 + 4))[8]" identifier = (subscript_expression "(*(int **)(*param_1 + 4))[8]" (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 "iVar12 = **(int **)(*param_1 + 4);" (assignment_expression "iVar12 = **(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 "uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);" (assignment_expression "uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16)" identifier = (call_expression "(uint)((ulonglong)param_3 * (ulonglong)uVar16)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)param_3 * (ulonglong)uVar16)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) )))) ;) (expression_statement "iVar2 = (int)uVar16 >> 0x1f;" (assignment_expression "iVar2 = (int)uVar16 >> 0x1f" identifier = (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);" (assignment_expression "iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" identifier = (binary_expression "iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" (binary_expression "iVar2 * param_3" identifier * identifier) + (cast_expression "(int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16 >> 0x20" (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16" (cast_expression "(ulonglong)param_3" ( (type_descriptor "ulonglong" type_identifier) ) identifier) * (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier)) >> number_literal) ))))) ;) (if_statement "if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }" if (parenthesized_expression "((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0'))" ( (binary_expression "(uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')" (parenthesized_expression "(uVar16 == uVar11)" ( (binary_expression "uVar16 == uVar11" identifier == identifier) )) || (parenthesized_expression "(iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')" ( (comma_expression "iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0'" (assignment_expression "iVar3 = 8" identifier = number_literal) , (binary_expression "*(char *)(iVar12 + 0xc) == '\0'" (pointer_expression "*(char *)(iVar12 + 0xc)" * (cast_expression "(char *)(iVar12 + 0xc)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0xc)" ( (binary_expression "iVar12 + 0xc" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence '))) ))) )) (compound_statement "{\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }" { (expression_statement "uVar10 = uVar17 - uVar16;" (assignment_expression "uVar10 = uVar17 - uVar16" identifier = (binary_expression "uVar17 - uVar16" identifier - identifier)) ;) (expression_statement "iVar14 = (int)uVar11 >> 0x1f;" (assignment_expression "iVar14 = (int)uVar11 >> 0x1f" identifier = (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);" (assignment_expression "iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10)" identifier = (binary_expression "(iVar13 - iVar2) - (uint)(uVar17 < uVar10)" (parenthesized_expression "(iVar13 - iVar2)" ( (binary_expression "iVar13 - iVar2" identifier - identifier) )) - (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar17 < uVar10)" ( (binary_expression "uVar17 < uVar10" identifier < identifier) ))))) ;) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" identifier = identifier) ;) (if_statement "if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }" if (parenthesized_expression "((int)uVar16 <= (int)uVar11)" ( (binary_expression "(int)uVar16 <= (int)uVar11" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar7 = uVar16;\n    }" { (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" identifier = identifier) ;) })) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4)" identifier = (cast_expression "(code *)(PTR_LAB_0015b704 + -0x39d4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b704 + -0x39d4)" ( (binary_expression "PTR_LAB_0015b704 + -0x39d4" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc)" identifier = (cast_expression "(code *)(PTR_LAB_0015b65c + -0x1cbc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b65c + -0x1cbc)" ( (binary_expression "PTR_LAB_0015b65c + -0x1cbc" identifier + number_literal) )))) ;) (while_statement "while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }" { (if_statement "if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;" if (parenthesized_expression "((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))" ( (binary_expression "(iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)))" (parenthesized_expression "(iVar13 <= iVar9)" ( (binary_expression "iVar13 <= iVar9" identifier <= identifier) )) && (parenthesized_expression "((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)))" ( (parenthesized_expression "(iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))" ( (comma_expression "iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)" (assignment_expression "iVar3 = 0" identifier = number_literal) , (binary_expression "iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)" (binary_expression "iVar13 != iVar9" identifier != identifier) || (parenthesized_expression "(iVar3 = 0, uVar17 <= uVar10)" ( (comma_expression "iVar3 = 0, uVar17 <= uVar10" (assignment_expression "iVar3 = 0" identifier = number_literal) , (binary_expression "uVar17 <= uVar10" identifier <= identifier)) )))) )) ))) )) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;)) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b6a0)" ( (pointer_expression "*(code *)PTR_FUN_0015b6a0" * (cast_expression "(code *)PTR_FUN_0015b6a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar10,iVar14,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);" (assignment_expression "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20)" identifier = (pointer_expression "*(uint *)(*(int *)(*param_1 + 4) + 0x20)" * (cast_expression "(uint *)(*(int *)(*param_1 + 4) + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_1 + 4) + 0x20)" ( (binary_expression "*(int *)(*param_1 + 4) + 0x20" (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 ))) ;) })) (if_statement "if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" if (parenthesized_expression "(extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8)" ( (binary_expression "extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8" identifier == (binary_expression "*(uint *)(puVar15 + -0x5de0) / uVar8" (pointer_expression "*(uint *)(puVar15 + -0x5de0)" * (cast_expression "(uint *)(puVar15 + -0x5de0)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x5de0)" ( (binary_expression "puVar15 + -0x5de0" identifier + number_literal) )))) / identifier)) )) (compound_statement "{\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }" { (do_statement "do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);" do (compound_statement "{\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        }" { (expression_statement "uVar8 = uVar10 + uVar11;" (assignment_expression "uVar8 = uVar10 + uVar11" identifier = (binary_expression "uVar10 + uVar11" identifier + identifier)) ;) (expression_statement "iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;" (assignment_expression "iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14" identifier = (binary_expression "(uint)(uVar8 < uVar10) + iVar9 + iVar14" (binary_expression "(uint)(uVar8 < uVar10) + iVar9" (call_expression "(uint)(uVar8 < uVar10)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uVar10)" ( (binary_expression "uVar8 < uVar10" identifier < identifier) ))) + identifier) + identifier)) ;) (if_statement "if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }" if (parenthesized_expression "(iVar13 <= iVar9)" ( (binary_expression "iVar13 <= iVar9" identifier <= identifier) )) (compound_statement "{\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (if_statement "if (iVar9 != iVar13) goto LAB_0009c82c;" if (parenthesized_expression "(iVar9 != iVar13)" ( (binary_expression "iVar9 != iVar13" identifier != identifier) )) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;)) (if_statement "if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }" if (parenthesized_expression "(uVar17 <= uVar8)" ( (binary_expression "uVar17 <= uVar8" identifier <= identifier) )) (compound_statement "{\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }" { (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_0009c82c;" goto statement_identifier ;) })) })) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b6a0)" ( (pointer_expression "*(code *)PTR_FUN_0015b6a0" * (cast_expression "(code *)PTR_FUN_0015b6a0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar8,iVar14,uVar11)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" identifier = identifier) ;) }) while (parenthesized_expression "(extraout_v1_00 == extraout_v1)" ( (binary_expression "extraout_v1_00 == extraout_v1" identifier == identifier) )) ;) (expression_statement "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar12 + 0xcc))" ( (pointer_expression "**(code **)(iVar12 + 0xcc)" * (pointer_expression "*(code **)(iVar12 + 0xcc)" * (cast_expression "(code **)(iVar12 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xcc)" ( (binary_expression "iVar12 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar12,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 **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" else (compound_statement "{\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" { (expression_statement "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0)" identifier = (call_expression "(**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar12 + 0xcc))" ( (pointer_expression "**(code **)(iVar12 + 0xcc)" * (pointer_expression "*(code **)(iVar12 + 0xcc)" * (cast_expression "(code **)(iVar12 + 0xcc)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar12 + 0xcc)" ( (binary_expression "iVar12 + 0xcc" identifier + number_literal) ))))) )) (argument_list "(iVar12,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 = uVar10;" (assignment_expression "uVar8 = uVar10" 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_0015b69c)(iVar9,uVar8,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b69c)" ( (pointer_expression "*(code *)PTR_FUN_0015b69c" * (cast_expression "(code *)PTR_FUN_0015b69c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar8,iVar14,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_0015b69c)(iVar9,uVar8,iVar2,uVar16);" (call_expression "(*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16)" (parenthesized_expression "(*(code *)PTR_FUN_0015b69c)" ( (pointer_expression "*(code *)PTR_FUN_0015b69c" * (cast_expression "(code *)PTR_FUN_0015b69c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar9,uVar8,iVar2,uVar16)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" ( (pointer_expression "*(code *)PTR_memcpy_0015ba30" * (cast_expression "(code *)PTR_memcpy_0015ba30" ( (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 ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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 "((iVar9 == 0 && uVar8 == 0) && (param_5 == 0))" ( (binary_expression "(iVar9 == 0 && uVar8 == 0) && (param_5 == 0)" (parenthesized_expression "(iVar9 == 0 && uVar8 == 0)" ( (binary_expression "iVar9 == 0 && uVar8 == 0" (binary_expression "iVar9 == 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) + 0x2c);\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) + 0x2c);" (assignment_expression "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" * (cast_expression "(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x2c)" ( (binary_expression "*(int *)(*param_2 + 4) + 0x2c" (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 "uVar10 = uVar8 + uVar11;" (assignment_expression "uVar10 = uVar8 + uVar11" identifier = (binary_expression "uVar8 + uVar11" identifier + identifier)) ;) (expression_statement "iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;" (assignment_expression "iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14" identifier = (binary_expression "(uint)(uVar10 < uVar8) + iVar9 + iVar14" (binary_expression "(uint)(uVar10 < uVar8) + iVar9" (call_expression "(uint)(uVar10 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar10 < uVar8)" ( (binary_expression "uVar10 < 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 "puVar15 = PTR_LAB_0015b65c;" (assignment_expression "puVar15 = PTR_LAB_0015b65c" identifier = identifier) ;) (if_statement "if (local_30 != 0) goto LAB_0009ca0c;" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0009ca0c;" goto statement_identifier ;)) })) (labeled_statement "LAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }" statement_identifier : (while_statement "while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\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    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }" { (expression_statement "puVar15 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar15 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();" (assignment_expression "iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)()" identifier = (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( )))) ;) (labeled_statement "LAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();" statement_identifier : (expression_statement "(*(code *)(puVar15 + -0x1cbc))();" (call_expression "(*(code *)(puVar15 + -0x1cbc))()" (parenthesized_expression "(*(code *)(puVar15 + -0x1cbc))" ( (pointer_expression "*(code *)(puVar15 + -0x1cbc)" * (cast_expression "(code *)(puVar15 + -0x1cbc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -0x1cbc)" ( (binary_expression "puVar15 + -0x1cbc" 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 (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 *)) ) 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 = (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) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence '))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = 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 (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT <= IDENT)) )))) )) ))) )) (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 = (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 ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) / IDENT)) )) (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 IDENT == 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_0009c6c4(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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }\n  return iVar3;\n}" (primitive_type "int") (function_declarator "FUN_0009c6c4(int *param_1,int *param_2,uint param_3,int param_4,int param_5)" (identifier "FUN_0009c6c4") (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  uint extraout_v1;\n  uint extraout_v1_00;\n  int extraout_v1_01;\n  int extraout_v1_02;\n  uint uVar8;\n  int iVar9;\n  uint uVar10;\n  uint uVar11;\n  int iVar12;\n  int iVar13;\n  int iVar14;\n  undefined *puVar15;\n  uint uVar16;\n  uint uVar17;\n  int local_30;\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  puVar15 = PTR_DAT_0015b5d8;\n  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;\n  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);\n  uVar11 = (*(int **)(*param_1 + 4))[8];\n  iVar12 = **(int **)(*param_1 + 4);\n  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);\n  iVar2 = (int)uVar16 >> 0x1f;\n  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);\n  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }\nLAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\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 "uint extraout_v1;" (type_identifier "uint") (identifier "extraout_v1") (; ";")) (declaration "uint extraout_v1_00;" (type_identifier "uint") (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 "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "undefined *puVar15;" (type_identifier "undefined") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "uint uVar17;" (type_identifier "uint") (identifier "uVar17") (; ";")) (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_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_0015ba2c")) (; ";")) (expression_statement "puVar15 = PTR_DAT_0015b5d8;" (assignment_expression "puVar15 = PTR_DAT_0015b5d8" (identifier "puVar15") (= "=") (identifier "PTR_DAT_0015b5d8")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0015ba2c" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0015ba2c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0015ba2c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0015ba2c")))) (; ";")) (expression_statement "uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);" (assignment_expression "uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20)" (identifier "uVar16") (= "=") (pointer_expression "*(uint *)(*(int *)(*param_2 + 4) + 0x20)" (* "*") (cast_expression "(uint *)(*(int *)(*param_2 + 4) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x20)" (( "(") (binary_expression "*(int *)(*param_2 + 4) + 0x20" (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 "0x20")) () ")"))))) (; ";")) (expression_statement "uVar11 = (*(int **)(*param_1 + 4))[8];" (assignment_expression "uVar11 = (*(int **)(*param_1 + 4))[8]" (identifier "uVar11") (= "=") (subscript_expression "(*(int **)(*param_1 + 4))[8]" (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 "8") (] "]"))) (; ";")) (expression_statement "iVar12 = **(int **)(*param_1 + 4);" (assignment_expression "iVar12 = **(int **)(*param_1 + 4)" (identifier "iVar12") (= "=") (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 "uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);" (assignment_expression "uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16)" (identifier "uVar17") (= "=") (call_expression "(uint)((ulonglong)param_3 * (ulonglong)uVar16)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)param_3 * (ulonglong)uVar16)" (( "(") (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16" (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3")) (* "*") (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16"))) () ")")))) (; ";")) (expression_statement "iVar2 = (int)uVar16 >> 0x1f;" (assignment_expression "iVar2 = (int)uVar16 >> 0x1f" (identifier "iVar2") (= "=") (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);" (assignment_expression "iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" (identifier "iVar13") (= "=") (binary_expression "iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" (binary_expression "iVar2 * param_3" (identifier "iVar2") (* "*") (identifier "param_3")) (+ "+") (cast_expression "(int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16 >> 0x20" (binary_expression "(ulonglong)param_3 * (ulonglong)uVar16" (cast_expression "(ulonglong)param_3" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "param_3")) (* "*") (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16"))) (>> ">>") (number_literal "0x20")) () ")"))))) (; ";")) (if_statement "if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }" (if "if") (parenthesized_expression "((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0'))" (( "(") (binary_expression "(uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')" (parenthesized_expression "(uVar16 == uVar11)" (( "(") (binary_expression "uVar16 == uVar11" (identifier "uVar16") (== "==") (identifier "uVar11")) () ")")) (|| "||") (parenthesized_expression "(iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')" (( "(") (comma_expression "iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0'" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (, ",") (binary_expression "*(char *)(iVar12 + 0xc) == '\0'" (pointer_expression "*(char *)(iVar12 + 0xc)" (* "*") (cast_expression "(char *)(iVar12 + 0xc)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar12 + 0xc)" (( "(") (binary_expression "iVar12 + 0xc" (identifier "iVar12") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'")))) () ")"))) () ")")) (compound_statement "{\n    uVar10 = uVar17 - uVar16;\n    iVar14 = (int)uVar11 >> 0x1f;\n    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);\n    uVar7 = uVar11;\n    if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }\n    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);\n    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);\n    while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }\n    puVar15 = PTR_LAB_0015b65c;\n    if (local_30 != 0) goto LAB_0009ca0c;\n  }" ({ "{") (expression_statement "uVar10 = uVar17 - uVar16;" (assignment_expression "uVar10 = uVar17 - uVar16" (identifier "uVar10") (= "=") (binary_expression "uVar17 - uVar16" (identifier "uVar17") (- "-") (identifier "uVar16"))) (; ";")) (expression_statement "iVar14 = (int)uVar11 >> 0x1f;" (assignment_expression "iVar14 = (int)uVar11 >> 0x1f" (identifier "iVar14") (= "=") (binary_expression "(int)uVar11 >> 0x1f" (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);" (assignment_expression "iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10)" (identifier "iVar9") (= "=") (binary_expression "(iVar13 - iVar2) - (uint)(uVar17 < uVar10)" (parenthesized_expression "(iVar13 - iVar2)" (( "(") (binary_expression "iVar13 - iVar2" (identifier "iVar13") (- "-") (identifier "iVar2")) () ")")) (- "-") (call_expression "(uint)(uVar17 < uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar17 < uVar10)" (( "(") (binary_expression "uVar17 < uVar10" (identifier "uVar17") (< "<") (identifier "uVar10")) () ")"))))) (; ";")) (expression_statement "uVar7 = uVar11;" (assignment_expression "uVar7 = uVar11" (identifier "uVar7") (= "=") (identifier "uVar11")) (; ";")) (if_statement "if ((int)uVar16 <= (int)uVar11) {\n      uVar7 = uVar16;\n    }" (if "if") (parenthesized_expression "((int)uVar16 <= (int)uVar11)" (( "(") (binary_expression "(int)uVar16 <= (int)uVar11" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (<= "<=") (cast_expression "(int)uVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar11"))) () ")")) (compound_statement "{\n      uVar7 = uVar16;\n    }" ({ "{") (expression_statement "uVar7 = uVar16;" (assignment_expression "uVar7 = uVar16" (identifier "uVar7") (= "=") (identifier "uVar16")) (; ";")) (} "}"))) (expression_statement "pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_0015b704 + -0x39d4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b704 + -0x39d4)" (( "(") (binary_expression "PTR_LAB_0015b704 + -0x39d4" (identifier "PTR_LAB_0015b704") (+ "+") (number_literal "-0x39d4")) () ")")))) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_LAB_0015b65c + -0x1cbc)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_0015b65c + -0x1cbc)" (( "(") (binary_expression "PTR_LAB_0015b65c + -0x1cbc" (identifier "PTR_LAB_0015b65c") (+ "+") (number_literal "-0x1cbc")) () ")")))) (; ";")) (while_statement "while( true ) {\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;\n      local_30 = 0;\n      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);\n      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);\n      if (uVar8 == 0) {\n        trap(7);\n      }\n      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }\n      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);\n      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;\n      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);\n      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);\n      **(undefined1 **)(local_30 + 8) = 0;\n      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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      uVar10 = uVar8 + uVar11;\n      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;\n      if (local_30 != 0) {\n        (*pcVar5)();\n      }\n    }" ({ "{") (if_statement "if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))\n      goto LAB_0009c82c;" (if "if") (parenthesized_expression "((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))" (( "(") (binary_expression "(iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)))" (parenthesized_expression "(iVar13 <= iVar9)" (( "(") (binary_expression "iVar13 <= iVar9" (identifier "iVar13") (<= "<=") (identifier "iVar9")) () ")")) (&& "&&") (parenthesized_expression "((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)))" (( "(") (parenthesized_expression "(iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))" (( "(") (comma_expression "iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (, ",") (binary_expression "iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10)" (binary_expression "iVar13 != iVar9" (identifier "iVar13") (!= "!=") (identifier "iVar9")) (|| "||") (parenthesized_expression "(iVar3 = 0, uVar17 <= uVar10)" (( "(") (comma_expression "iVar3 = 0, uVar17 <= uVar10" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (, ",") (binary_expression "uVar17 <= uVar10" (identifier "uVar17") (<= "<=") (identifier "uVar10"))) () ")")))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_0009c82c;" (goto "goto") (statement_identifier "LAB_0009c82c") (; ";"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b6a0)" (( "(") (pointer_expression "*(code *)PTR_FUN_0015b6a0" (* "*") (cast_expression "(code *)PTR_FUN_0015b6a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0015b6a0"))) () ")")) (argument_list "(iVar9,uVar10,iVar14,uVar11)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar10") (, ",") (identifier "iVar14") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);" (assignment_expression "uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(*(int *)(*param_1 + 4) + 0x20)" (* "*") (cast_expression "(uint *)(*(int *)(*param_1 + 4) + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_1 + 4) + 0x20)" (( "(") (binary_expression "*(int *)(*param_1 + 4) + 0x20" (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 "0x20")) () ")"))))) (; ";")) (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") () ")"))) (; ";")) (} "}"))) (if_statement "if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }\n      else {\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" (if "if") (parenthesized_expression "(extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8)" (( "(") (binary_expression "extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8" (identifier "extraout_v1") (== "==") (binary_expression "*(uint *)(puVar15 + -0x5de0) / uVar8" (pointer_expression "*(uint *)(puVar15 + -0x5de0)" (* "*") (cast_expression "(uint *)(puVar15 + -0x5de0)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x5de0)" (( "(") (binary_expression "puVar15 + -0x5de0" (identifier "puVar15") (+ "+") (number_literal "-0x5de0")) () ")")))) (/ "/") (identifier "uVar8"))) () ")")) (compound_statement "{\n        do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);\n      }" ({ "{") (do_statement "do {\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        } while (extraout_v1_00 == extraout_v1);" (do "do") (compound_statement "{\n          uVar8 = uVar10 + uVar11;\n          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;\n          if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }\n          local_30 = 0;\n          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);\n          uVar10 = uVar8;\n        }" ({ "{") (expression_statement "uVar8 = uVar10 + uVar11;" (assignment_expression "uVar8 = uVar10 + uVar11" (identifier "uVar8") (= "=") (binary_expression "uVar10 + uVar11" (identifier "uVar10") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;" (assignment_expression "iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14" (identifier "iVar9") (= "=") (binary_expression "(uint)(uVar8 < uVar10) + iVar9 + iVar14" (binary_expression "(uint)(uVar8 < uVar10) + iVar9" (call_expression "(uint)(uVar8 < uVar10)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uVar10)" (( "(") (binary_expression "uVar8 < uVar10" (identifier "uVar8") (< "<") (identifier "uVar10")) () ")"))) (+ "+") (identifier "iVar9")) (+ "+") (identifier "iVar14"))) (; ";")) (if_statement "if (iVar13 <= iVar9) {\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }" (if "if") (parenthesized_expression "(iVar13 <= iVar9)" (( "(") (binary_expression "iVar13 <= iVar9" (identifier "iVar13") (<= "<=") (identifier "iVar9")) () ")")) (compound_statement "{\n            iVar3 = 0;\n            if (iVar9 != iVar13) goto LAB_0009c82c;\n            if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }\n          }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar9 != iVar13) goto LAB_0009c82c;" (if "if") (parenthesized_expression "(iVar9 != iVar13)" (( "(") (binary_expression "iVar9 != iVar13" (identifier "iVar9") (!= "!=") (identifier "iVar13")) () ")")) (goto_statement "goto LAB_0009c82c;" (goto "goto") (statement_identifier "LAB_0009c82c") (; ";"))) (if_statement "if (uVar17 <= uVar8) {\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }" (if "if") (parenthesized_expression "(uVar17 <= uVar8)" (( "(") (binary_expression "uVar17 <= uVar8" (identifier "uVar17") (<= "<=") (identifier "uVar8")) () ")")) (compound_statement "{\n              iVar3 = 0;\n              goto LAB_0009c82c;\n            }" ({ "{") (expression_statement "iVar3 = 0;" (assignment_expression "iVar3 = 0" (identifier "iVar3") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_0009c82c;" (goto "goto") (statement_identifier "LAB_0009c82c") (; ";")) (} "}"))) (} "}"))) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b6a0)" (( "(") (pointer_expression "*(code *)PTR_FUN_0015b6a0" (* "*") (cast_expression "(code *)PTR_FUN_0015b6a0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0015b6a0"))) () ")")) (argument_list "(iVar9,uVar8,iVar14,uVar11)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar8") (, ",") (identifier "iVar14") (, ",") (identifier "uVar11") () ")"))) (; ";")) (expression_statement "uVar10 = uVar8;" (assignment_expression "uVar10 = uVar8" (identifier "uVar10") (= "=") (identifier "uVar8")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(extraout_v1_00 == extraout_v1)" (( "(") (binary_expression "extraout_v1_00 == extraout_v1" (identifier "extraout_v1_00") (== "==") (identifier "extraout_v1")) () ")")) (; ";")) (expression_statement "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar12 + 0xcc))" (( "(") (pointer_expression "**(code **)(iVar12 + 0xcc)" (* "*") (pointer_expression "*(code **)(iVar12 + 0xcc)" (* "*") (cast_expression "(code **)(iVar12 + 0xcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0xcc)" (( "(") (binary_expression "iVar12 + 0xcc" (identifier "iVar12") (+ "+") (number_literal "0xcc")) () ")"))))) () ")")) (argument_list "(iVar12,extraout_v1_00 + 1,&local_30,0)" (( "(") (identifier "iVar12") (, ",") (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 **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" (else "else") (compound_statement "{\n        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);\n        uVar8 = uVar10;\n      }" ({ "{") (expression_statement "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);" (assignment_expression "iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0)" (identifier "iVar3") (= "=") (call_expression "(**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0)" (parenthesized_expression "(**(code **)(iVar12 + 0xcc))" (( "(") (pointer_expression "**(code **)(iVar12 + 0xcc)" (* "*") (pointer_expression "*(code **)(iVar12 + 0xcc)" (* "*") (cast_expression "(code **)(iVar12 + 0xcc)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar12 + 0xcc)" (( "(") (binary_expression "iVar12 + 0xcc" (identifier "iVar12") (+ "+") (number_literal "0xcc")) () ")"))))) () ")")) (argument_list "(iVar12,extraout_v1 + 1,&local_30,0)" (( "(") (identifier "iVar12") (, ",") (binary_expression "extraout_v1 + 1" (identifier "extraout_v1") (+ "+") (number_literal "1")) (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar8 = uVar10;" (assignment_expression "uVar8 = uVar10" (identifier "uVar8") (= "=") (identifier "uVar10")) (; ";")) (} "}")))) (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_0015b69c)(iVar9,uVar8,iVar14,uVar11);" (call_expression "(*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11)" (parenthesized_expression "(*(code *)PTR_FUN_0015b69c)" (( "(") (pointer_expression "*(code *)PTR_FUN_0015b69c" (* "*") (cast_expression "(code *)PTR_FUN_0015b69c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0015b69c"))) () ")")) (argument_list "(iVar9,uVar8,iVar14,uVar11)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar8") (, ",") (identifier "iVar14") (, ",") (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_0015b69c)(iVar9,uVar8,iVar2,uVar16);" (call_expression "(*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16)" (parenthesized_expression "(*(code *)PTR_FUN_0015b69c)" (( "(") (pointer_expression "*(code *)PTR_FUN_0015b69c" (* "*") (cast_expression "(code *)PTR_FUN_0015b69c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_0015b69c"))) () ")")) (argument_list "(iVar9,uVar8,iVar2,uVar16)" (( "(") (identifier "iVar9") (, ",") (identifier "uVar8") (, ",") (identifier "iVar2") (, ",") (identifier "uVar16") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);" (call_expression "(*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7)" (parenthesized_expression "(*(code *)PTR_memcpy_0015ba30)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0015ba30" (* "*") (cast_expression "(code *)PTR_memcpy_0015ba30" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0015ba30"))) () ")")) (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 ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {\n        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);\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 "((iVar9 == 0 && uVar8 == 0) && (param_5 == 0))" (( "(") (binary_expression "(iVar9 == 0 && uVar8 == 0) && (param_5 == 0)" (parenthesized_expression "(iVar9 == 0 && uVar8 == 0)" (( "(") (binary_expression "iVar9 == 0 && uVar8 == 0" (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (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) + 0x2c);\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) + 0x2c);" (assignment_expression "uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" (identifier "uVar6") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" (* "*") (cast_expression "(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(*param_2 + 4) + 0x2c)" (( "(") (binary_expression "*(int *)(*param_2 + 4) + 0x2c" (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 "0x2c")) () ")"))))) (; ";")) (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 "uVar10 = uVar8 + uVar11;" (assignment_expression "uVar10 = uVar8 + uVar11" (identifier "uVar10") (= "=") (binary_expression "uVar8 + uVar11" (identifier "uVar8") (+ "+") (identifier "uVar11"))) (; ";")) (expression_statement "iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;" (assignment_expression "iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14" (identifier "iVar9") (= "=") (binary_expression "(uint)(uVar10 < uVar8) + iVar9 + iVar14" (binary_expression "(uint)(uVar10 < uVar8) + iVar9" (call_expression "(uint)(uVar10 < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar10 < uVar8)" (( "(") (binary_expression "uVar10 < uVar8" (identifier "uVar10") (< "<") (identifier "uVar8")) () ")"))) (+ "+") (identifier "iVar9")) (+ "+") (identifier "iVar14"))) (; ";")) (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 "puVar15 = PTR_LAB_0015b65c;" (assignment_expression "puVar15 = PTR_LAB_0015b65c" (identifier "puVar15") (= "=") (identifier "PTR_LAB_0015b65c")) (; ";")) (if_statement "if (local_30 != 0) goto LAB_0009ca0c;" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0009ca0c;" (goto "goto") (statement_identifier "LAB_0009ca0c") (; ";"))) (} "}"))) (labeled_statement "LAB_0009c82c:\n  while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }" (statement_identifier "LAB_0009c82c") (: ":") (while_statement "while (local_2c != *(int *)puVar1) {\n    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\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    puVar15 = PTR___stack_chk_fail_0015ba10;\n    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();\nLAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();\n  }" ({ "{") (expression_statement "puVar15 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar15 = PTR___stack_chk_fail_0015ba10" (identifier "puVar15") (= "=") (identifier "PTR___stack_chk_fail_0015ba10")) (; ";")) (expression_statement "iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();" (assignment_expression "iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)()" (identifier "iVar3") (= "=") (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0015ba10"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (labeled_statement "LAB_0009ca0c:\n    (*(code *)(puVar15 + -0x1cbc))();" (statement_identifier "LAB_0009ca0c") (: ":") (expression_statement "(*(code *)(puVar15 + -0x1cbc))();" (call_expression "(*(code *)(puVar15 + -0x1cbc))()" (parenthesized_expression "(*(code *)(puVar15 + -0x1cbc))" (( "(") (pointer_expression "*(code *)(puVar15 + -0x1cbc)" (* "*") (cast_expression "(code *)(puVar15 + -0x1cbc)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar15 + -0x1cbc)" (( "(") (binary_expression "puVar15 + -0x1cbc" (identifier "puVar15") (+ "+") (number_literal "-0x1cbc")) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}")))) (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}")))
(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: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence))))))) consequence: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (identifier)))))))))) consequence: (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: (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)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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)))) 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: (identifier) 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;
  uint extraout_v1;
  uint extraout_v1_00;
  int extraout_v1_01;
  int extraout_v1_02;
  uint uVar8;
  int iVar9;
  uint uVar10;
  uint uVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  undefined *puVar15;
  uint uVar16;
  uint uVar17;
  int local_30;
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  puVar15 = PTR_DAT_0015b5d8;
  local_2c = *(int *)PTR___stack_chk_guard_0015ba2c;
  uVar16 = *(uint *)(*(int *)(*param_2 + 4) + 0x20);
  uVar11 = (*(int **)(*param_1 + 4))[8];
  iVar12 = **(int **)(*param_1 + 4);
  uVar17 = (uint)((ulonglong)param_3 * (ulonglong)uVar16);
  iVar2 = (int)uVar16 >> 0x1f;
  iVar13 = iVar2 * param_3 + (int)((ulonglong)param_3 * (ulonglong)uVar16 >> 0x20);
  if ((uVar16 == uVar11) || (iVar3 = 8, *(char *)(iVar12 + 0xc) == '\0')) {
    uVar10 = uVar17 - uVar16;
    iVar14 = (int)uVar11 >> 0x1f;
    iVar9 = (iVar13 - iVar2) - (uint)(uVar17 < uVar10);
    uVar7 = uVar11;
    if ((int)uVar16 <= (int)uVar11) {
      uVar7 = uVar16;
    }
    pcVar4 = (code *)(PTR_LAB_0015b704 + -0x39d4);
    pcVar5 = (code *)(PTR_LAB_0015b65c + -0x1cbc);
    while( true ) {
      if ((iVar13 <= iVar9) && ((iVar3 = 0, iVar13 != iVar9 || (iVar3 = 0, uVar17 <= uVar10))))
      goto LAB_0009c82c;
      local_30 = 0;
      (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar10,iVar14,uVar11);
      uVar8 = *(uint *)(*(int *)(*param_1 + 4) + 0x20);
      if (uVar8 == 0) {
        trap(7);
      }
      if (extraout_v1 == *(uint *)(puVar15 + -0x5de0) / uVar8) {
        do {
          uVar8 = uVar10 + uVar11;
          iVar9 = (uint)(uVar8 < uVar10) + iVar9 + iVar14;
          if (iVar13 <= iVar9) {
            iVar3 = 0;
            if (iVar9 != iVar13) goto LAB_0009c82c;
            if (uVar17 <= uVar8) {
              iVar3 = 0;
              goto LAB_0009c82c;
            }
          }
          local_30 = 0;
          (*(code *)PTR_FUN_0015b6a0)(iVar9,uVar8,iVar14,uVar11);
          uVar10 = uVar8;
        } while (extraout_v1_00 == extraout_v1);
        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1_00 + 1,&local_30,0);
      }
      else {
        iVar3 = (**(code **)(iVar12 + 0xcc))(iVar12,extraout_v1 + 1,&local_30,0);
        uVar8 = uVar10;
      }
      if ((iVar3 != 0) || (iVar3 = (*pcVar4)(local_30), iVar3 != 0)) break;
      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar14,uVar11);
      iVar3 = *(int *)(local_30 + 4) + extraout_v1_01;
      (*(code *)PTR_FUN_0015b69c)(iVar9,uVar8,iVar2,uVar16);
      (*(code *)PTR_memcpy_0015ba30)(iVar3,param_4 + extraout_v1_02,uVar7);
      **(undefined1 **)(local_30 + 8) = 0;
      if ((iVar9 == 0 && uVar8 == 0) && (param_5 == 0)) {
        uVar6 = *(undefined4 *)(*(int *)(*param_2 + 4) + 0x2c);
        *(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);
      }
      uVar10 = uVar8 + uVar11;
      iVar9 = (uint)(uVar10 < uVar8) + iVar9 + iVar14;
      if (local_30 != 0) {
        (*pcVar5)();
      }
    }
    puVar15 = PTR_LAB_0015b65c;
    if (local_30 != 0) goto LAB_0009ca0c;
  }
LAB_0009c82c:
  while (local_2c != *(int *)puVar1) {
    puVar15 = PTR___stack_chk_fail_0015ba10;
    iVar3 = (*(code *)PTR___stack_chk_fail_0015ba10)();
LAB_0009ca0c:
    (*(code *)(puVar15 + -0x1cbc))();
  }
  return iVar3;
}

