
void sqlite3UpsertDoUpdate(Parse *pParse,Upsert *pUpsert,Table *pTab,Index *pIdx,int iCur)

{
  sqlite3 *psVar1;
  undefined4 uVar2;
  SrcList *pTabList;
  int iVar3;
  int iVar4;
  Vdbe *pVVar5;
  int iVar6;
  int iVar7;
  int iVar8;
  uint uVar9;
  int in_t9;
  int iVar10;
  
  pVVar5 = pParse->pVdbe;
  psVar1 = pParse->db;
  if ((pIdx != (Index *)0x0) && (iVar7 = pUpsert->iDataCur, iVar7 != iCur)) {
    if ((pTab->tabFlags & 0x80) == 0) {
      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();
      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);
      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);
      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);
    }
    else {
      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);
      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);
      iVar10 = pParse->nMem + 1;
      pParse->nMem = pParse->nMem + uVar9;
      iVar4 = *(int *)(in_t9 + 0x3ae54);
      iVar3 = *(int *)(in_t9 + 0x3ae8c);
      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {
        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));
        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);
      }
      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);
      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))
                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);
      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);
      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);
    }
  }
  pTabList = (SrcList *)
             (*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0);
  iVar8 = *(int *)(in_t9 + 0x3ae8c);
  for (iVar7 = 0; iVar7 < pTab->nCol; iVar7 = iVar7 + 1) {
    if (pTab->aCol[iVar7].affinity == 'E') {
      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);
    }
  }
  sqlite3Update(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(ExprList *)0x0,
                (Expr *)0x0,pUpsert);
  pUpsert->pUpsertSet = (ExprList *)0x0;
  pUpsert->pUpsertWhere = (Expr *)0x0;
  return;
}



void FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  code *pcVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  code *pcVar8;
  uint uVar9;
  int iVar10;
  
  uVar5 = param_1[2];
  uVar1 = *param_1;
  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {
    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {
      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();
      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);
      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);
      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);
    }
    else {
      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);
      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);
      iVar10 = param_1[0xb] + 1;
      param_1[0xb] = param_1[0xb] + uVar9;
      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);
      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);
      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {
        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));
        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);
      }
      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);
      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))
                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,
                 0xffffffff);
      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);
      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);
    }
  }
  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);
  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);
  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {
    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {
      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));
    }
  }
  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,
               param_2);
  *(undefined4 *)(param_2 + 8) = 0;
  *(undefined4 *)(param_2 + 0xc) = 0;
  return;
}


lui gp,0x4
addiu gp,gp,0x2e1c
addu gp,gp,t9
addiu sp,sp,-0x60
sw ra,0x5c(sp)
sw s8,0x58(sp)
sw s7,0x54(sp)
sw s6,0x50(sp)
sw s5,0x4c(sp)
sw s4,0x48(sp)
sw s3,0x44(sp)
sw s2,0x40(sp)
sw s1,0x3c(sp)
sw s0,0x38(sp)
sw gp,0x20(sp)
or s1,a0,zero
or s0,a1,zero
or s4,a2,zero
sw a3,0x6c(sp)
lw s2,0x8(a0)
lw v0,0x0(a0)
beq a3,zero,0x000bb580
_sw v0,0x28(sp)
lw s5,0x1c(a1)
lw v0,0x70(sp)
beq s5,v0,0x000bb580
_nop
lw v0,0x24(a2)
andi v0,v0,0x80
bne v0,zero,0x000bb638
_lw t9,-0x7fc8(gp)
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x1fc8
jalr t9
_nop
lw gp,0x20(sp)
or s3,v0,zero
or a3,v0,zero
lw a2,0x70(sp)
li a1,0x86
or a0,s2,zero
lw t9,-0x7f90(gp)
addiu t9,t9,-0x5fc0
jalr t9
_nop
lw gp,0x20(sp)
sw s3,0x10(sp)
or a3,zero,zero
or a2,s5,zero
li a1,0x1f
or a0,s2,zero
lw t9,-0x7f90(gp)
addiu t9,t9,-0x6054
jalr t9
_nop
lw gp,0x20(sp)
or a1,s3,zero
or a0,s1,zero
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x1f88
jalr t9
_nop
lw gp,0x20(sp)
or a2,zero,zero
lw a1,0x14(s0)
lw a0,0x28(sp)
lw t9,-0x7fb8(gp)
addiu t9,t9,-0x4110
jalr t9
_nop
lw gp,0x20(sp)
or s6,v0,zero
or s3,zero,zero
li s8,0x14
li s7,0x45
lw s5,-0x7f90(gp)
addiu s5,s5,-0x5ddc
lh v0,0x2a(s4)
slt v0,s3,v0
bne v0,zero,0x000bb78c
_mul v1,s3,s8
sw s0,0x1c(sp)
sw zero,0x18(sp)
sw zero,0x14(sp)
li v0,0x2
sw v0,0x10(sp)
lw a3,0xc(s0)
lw a2,0x8(s0)
or a1,s6,zero
or a0,s1,zero
lw t9,-0x7f80(gp)
addiu t9,t9,-0x785c
bal 0x000b87a4
_nop
lw gp,0x20(sp)
sw zero,0x8(s0)
sw zero,0xc(s0)
lw ra,0x5c(sp)
lw s8,0x58(sp)
lw s7,0x54(sp)
lw s6,0x50(sp)
lw s5,0x4c(sp)
lw s4,0x48(sp)
lw s3,0x44(sp)
lw s2,0x40(sp)
lw s1,0x3c(sp)
lw s0,0x38(sp)
jr ra
_addiu sp,sp,0x60
or a0,a2,zero
addiu t9,t9,-0x11d4
jalr t9
_nop
lw gp,0x20(sp)
or s7,v0,zero
lhu s6,0x32(v0)
lw v0,0x2c(s1)
addiu s8,v0,0x1
addu v1,v0,s6
sw v1,0x2c(s1)
or s3,zero,zero
lw v1,-0x7fc8(gp)
addiu v1,v1,-0x1194
sw v1,0x2c(sp)
sw s8,0x30(sp)
lw v0,-0x7f90(gp)
addiu v0,v0,-0x6054
sw v0,0x34(sp)
slt v0,s3,s6
bne v0,zero,0x000bb738
_sll v1,s3,0x1
sw s6,0x14(sp)
sw s8,0x10(sp)
or a3,zero,zero
or a2,s5,zero
li a1,0x1e
or a0,s2,zero
lw t9,-0x7f90(gp)
addiu t9,t9,-0x5e58
jalr t9
_nop
lw gp,0x20(sp)
or s3,v0,zero
li v0,-0x1
sw v0,0x18(sp)
lw v0,-0x7fcc(gp)
addiu v0,v0,-0x7720
sw v0,0x14(sp)
sw zero,0x10(sp)
li a3,0x2
li a2,0xb
li a1,0x44
or a0,s2,zero
lw t9,-0x7f90(gp)
addiu t9,t9,-0x4fa8
jalr t9
_nop
lw gp,0x20(sp)
or a0,s1,zero
lw t9,-0x7fc8(gp)
addiu t9,t9,-0xc40
jalr t9
_nop
lw gp,0x20(sp)
or a1,s3,zero
or a0,s2,zero
lw t9,-0x7fc8(gp)
addiu t9,t9,-0x4a08
jalr t9
_nop
lw gp,0x20(sp)
b 0x000bb584
_or a2,zero,zero
lw v0,0x4(s7)
addu v0,v0,v1
lh a1,0x0(v0)
lw a0,0x6c(sp)
lw t9,0x2c(sp)
jalr t9
_nop
lw gp,0x20(sp)
lw v1,0x30(sp)
addu v1,v1,s3
sw v1,0x10(sp)
or a3,v0,zero
lw a2,0x70(sp)
li a1,0x59
or a0,s2,zero
lw t9,0x34(sp)
jalr t9
_nop
lw gp,0x20(sp)
b 0x000bb684
_addiu s3,s3,0x1
lw v0,0x4(s4)
addu v0,v1,v0
lb v0,0xd(v0)
bne v0,s7,0x000bb7bc
_li a1,0x53
lw a2,0x18(s0)
addu a2,s3,a2
or a0,s2,zero
or t9,s5,zero
jalr t9
_nop
lw gp,0x20(sp)
b 0x000bb5b8
_addiu s3,s3,0x1
(translation_unit "void FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}\n\n" (function_definition "void FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }" if (parenthesized_expression "((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5))" ( (binary_expression "(param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)" ( (comma_expression "iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5" (assignment_expression "iVar7 = *(int *)(param_2 + 0x1c)" identifier = (pointer_expression "*(int *)(param_2 + 0x1c)" * (cast_expression "(int *)(param_2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) , (binary_expression "iVar7 != param_5" identifier != identifier)) ))) )) (compound_statement "{\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }" { (if_statement "if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" if (parenthesized_expression "((*(uint *)(param_3 + 0x24) & 0x80) == 0)" ( (binary_expression "(*(uint *)(param_3 + 0x24) & 0x80) == 0" (parenthesized_expression "(*(uint *)(param_3 + 0x24) & 0x80)" ( (binary_expression "*(uint *)(param_3 + 0x24) & 0x80" (pointer_expression "*(uint *)(param_3 + 0x24)" * (cast_expression "(uint *)(param_3 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }" { (expression_statement "uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();" (assignment_expression "uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))()" identifier = (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1fc8))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1fc8))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x1fc8)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1fc8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1fc8)" ( (binary_expression "PTR_LAB_000f62d8 + -0x1fc8" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x5fc0)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5fc0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x5fc0)" ( (binary_expression "PTR_LAB_000f6310 + -0x5fc0" identifier + number_literal) )))) )) (argument_list "(uVar5,0x86,param_5,uVar2)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x6054))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x6054)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x6054)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x6054)" ( (binary_expression "PTR_LAB_000f6310 + -0x6054" identifier + number_literal) )))) )) (argument_list "(uVar5,0x1f,iVar7,0,uVar2)" ( identifier , number_literal , identifier , number_literal , identifier ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x1f88)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1f88)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1f88)" ( (binary_expression "PTR_LAB_000f62d8 + -0x1f88" identifier + number_literal) )))) )) (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" else (compound_statement "{\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" { (expression_statement "iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);" (assignment_expression "iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3)" identifier = (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x11d4))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x11d4)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x11d4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x11d4)" ( (binary_expression "PTR_LAB_000f62d8 + -0x11d4" identifier + number_literal) )))) )) (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "uVar9 = (uint)*(ushort *)(iVar3 + 0x32);" (assignment_expression "uVar9 = (uint)*(ushort *)(iVar3 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar3 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x32)" ( (binary_expression "iVar3 + 0x32" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = param_1[0xb] + 1;" (assignment_expression "iVar10 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = param_1[0xb] + uVar9;" (assignment_expression "param_1[0xb] = param_1[0xb] + uVar9" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + uVar9" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194)" identifier = (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1194)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1194)" ( (binary_expression "PTR_LAB_000f62d8 + -0x1194" identifier + number_literal) )))) ;) (expression_statement "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054)" identifier = (cast_expression "(code *)(PTR_LAB_000f6310 + -0x6054)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x6054)" ( (binary_expression "PTR_LAB_000f6310 + -0x6054" identifier + number_literal) )))) ;) (for_statement "for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }" for ( (assignment_expression "iVar6 = 0" identifier = number_literal) ; (binary_expression "iVar6 < (int)uVar9" identifier < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }" { (expression_statement "uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));" (assignment_expression "uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" identifier = (call_expression "(*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" ( identifier , (cast_expression "(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" * (cast_expression "(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 4) + iVar6 * 2)" ( (binary_expression "*(int *)(iVar3 + 4) + iVar6 * 2" (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) + (binary_expression "iVar6 * 2" identifier * number_literal)) ))))) )))) ;) (expression_statement "(*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);" (call_expression "(*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(uVar5,0x59,param_5,uVar2,iVar10 + iVar6)" ( identifier , number_literal , identifier , identifier , (binary_expression "iVar10 + iVar6" identifier + identifier) ))) ;) })) (expression_statement "uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);" (assignment_expression "uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9)" identifier = (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x5e58))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x5e58)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5e58)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x5e58)" ( (binary_expression "PTR_LAB_000f6310 + -0x5e58" identifier + number_literal) )))) )) (argument_list "(uVar5,0x1e,iVar7,0,iVar10,uVar9)" ( identifier , number_literal , identifier , number_literal , identifier , identifier )))) ;) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x4fa8)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x4fa8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x4fa8)" ( (binary_expression "PTR_LAB_000f6310 + -0x4fa8" identifier + number_literal) )))) )) (argument_list "(uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff)" ( identifier , number_literal , number_literal , number_literal , number_literal , (binary_expression "PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720" identifier + number_literal) , number_literal ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0xc40))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0xc40)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0xc40)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0xc40)" ( (binary_expression "PTR_LAB_000f62d8 + -0xc40" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x4a08)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x4a08)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x4a08)" ( (binary_expression "PTR_LAB_000f62d8 + -0x4a08" identifier + number_literal) )))) )) (argument_list "(uVar5,uVar2)" ( identifier , identifier ))) ;) }))) })) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0)" identifier = (call_expression "(*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62e8 + -0x4110))" ( (pointer_expression "*(code *)(PTR_LAB_000f62e8 + -0x4110)" * (cast_expression "(code *)(PTR_LAB_000f62e8 + -0x4110)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62e8 + -0x4110)" ( (binary_expression "PTR_LAB_000f62e8 + -0x4110" identifier + number_literal) )))) )) (argument_list "(uVar1,*(undefined4 *)(param_2 + 0x14),0)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc)" identifier = (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5ddc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x5ddc)" ( (binary_expression "PTR_LAB_000f6310 + -0x5ddc" identifier + number_literal) )))) ;) (for_statement "for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }" for ( (assignment_expression "iVar7 = 0" identifier = number_literal) ; (binary_expression "iVar7 < *(short *)(param_3 + 0x2a)" identifier < (pointer_expression "*(short *)(param_3 + 0x2a)" * (cast_expression "(short *)(param_3 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2a)" ( (binary_expression "param_3 + 0x2a" identifier + number_literal) ))))) ; (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }" { (if_statement "if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }" if (parenthesized_expression "(*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E')" ( (binary_expression "*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E'" (pointer_expression "*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" * (cast_expression "(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" ( (binary_expression "iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd" (binary_expression "iVar7 * 0x14 + *(int *)(param_3 + 4)" (binary_expression "iVar7 * 0x14" identifier * number_literal) + (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) + number_literal) )))) == (char_literal "'E'" ' character ')) )) (compound_statement "{\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }" { (expression_statement "(*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));" (call_expression "(*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18))" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18))" ( identifier , number_literal , (binary_expression "iVar7 + *(int *)(param_2 + 0x18)" identifier + (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ))) ;) })) })) (expression_statement "FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);" (call_expression "FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2)" identifier (argument_list "(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , number_literal , number_literal , number_literal , identifier ))) ;) (expression_statement "*(undefined4 *)(param_2 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 8) = 0" (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "void sqlite3UpsertDoUpdate(Parse *pParse,Upsert *pUpsert,Table *pTab,Index *pIdx,int iCur)\n\n{\n  sqlite3 *psVar1;\n  undefined4 uVar2;\n  SrcList *pTabList;\n  int iVar3;\n  int iVar4;\n  Vdbe *pVVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  int in_t9;\n  int iVar10;\n  \n  pVVar5 = pParse->pVdbe;\n  psVar1 = pParse->db;\n  if ((pIdx != (Index *)0x0) && (iVar7 = pUpsert->iDataCur, iVar7 != iCur)) {\n    if ((pTab->tabFlags & 0x80) == 0) {\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);\n    }\n    else {\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }\n  }\n  pTabList = (SrcList *)\n             (*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0);\n  iVar8 = *(int *)(in_t9 + 0x3ae8c);\n  for (iVar7 = 0; iVar7 < pTab->nCol; iVar7 = iVar7 + 1) {\n    if (pTab->aCol[iVar7].affinity == 'E') {\n      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);\n    }\n  }\n  sqlite3Update(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(ExprList *)0x0,\n                (Expr *)0x0,pUpsert);\n  pUpsert->pUpsertSet = (ExprList *)0x0;\n  pUpsert->pUpsertWhere = (Expr *)0x0;\n  return;\n}\n\n" (function_definition "void sqlite3UpsertDoUpdate(Parse *pParse,Upsert *pUpsert,Table *pTab,Index *pIdx,int iCur)\n\n{\n  sqlite3 *psVar1;\n  undefined4 uVar2;\n  SrcList *pTabList;\n  int iVar3;\n  int iVar4;\n  Vdbe *pVVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  int in_t9;\n  int iVar10;\n  \n  pVVar5 = pParse->pVdbe;\n  psVar1 = pParse->db;\n  if ((pIdx != (Index *)0x0) && (iVar7 = pUpsert->iDataCur, iVar7 != iCur)) {\n    if ((pTab->tabFlags & 0x80) == 0) {\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);\n    }\n    else {\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }\n  }\n  pTabList = (SrcList *)\n             (*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0);\n  iVar8 = *(int *)(in_t9 + 0x3ae8c);\n  for (iVar7 = 0; iVar7 < pTab->nCol; iVar7 = iVar7 + 1) {\n    if (pTab->aCol[iVar7].affinity == 'E') {\n      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);\n    }\n  }\n  sqlite3Update(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(ExprList *)0x0,\n                (Expr *)0x0,pUpsert);\n  pUpsert->pUpsertSet = (ExprList *)0x0;\n  pUpsert->pUpsertWhere = (Expr *)0x0;\n  return;\n}" primitive_type (function_declarator "sqlite3UpsertDoUpdate(Parse *pParse,Upsert *pUpsert,Table *pTab,Index *pIdx,int iCur)" identifier (parameter_list "(Parse *pParse,Upsert *pUpsert,Table *pTab,Index *pIdx,int iCur)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Upsert *pUpsert" type_identifier (pointer_declarator "*pUpsert" * identifier)) , (parameter_declaration "Table *pTab" type_identifier (pointer_declarator "*pTab" * identifier)) , (parameter_declaration "Index *pIdx" type_identifier (pointer_declarator "*pIdx" * identifier)) , (parameter_declaration "int iCur" primitive_type identifier) ))) (compound_statement "{\n  sqlite3 *psVar1;\n  undefined4 uVar2;\n  SrcList *pTabList;\n  int iVar3;\n  int iVar4;\n  Vdbe *pVVar5;\n  int iVar6;\n  int iVar7;\n  int iVar8;\n  uint uVar9;\n  int in_t9;\n  int iVar10;\n  \n  pVVar5 = pParse->pVdbe;\n  psVar1 = pParse->db;\n  if ((pIdx != (Index *)0x0) && (iVar7 = pUpsert->iDataCur, iVar7 != iCur)) {\n    if ((pTab->tabFlags & 0x80) == 0) {\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);\n    }\n    else {\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }\n  }\n  pTabList = (SrcList *)\n             (*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0);\n  iVar8 = *(int *)(in_t9 + 0x3ae8c);\n  for (iVar7 = 0; iVar7 < pTab->nCol; iVar7 = iVar7 + 1) {\n    if (pTab->aCol[iVar7].affinity == 'E') {\n      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);\n    }\n  }\n  sqlite3Update(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(ExprList *)0x0,\n                (Expr *)0x0,pUpsert);\n  pUpsert->pUpsertSet = (ExprList *)0x0;\n  pUpsert->pUpsertWhere = (Expr *)0x0;\n  return;\n}" { (declaration "sqlite3 *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "SrcList *pTabList;" type_identifier (pointer_declarator "*pTabList" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Vdbe *pVVar5;" type_identifier (pointer_declarator "*pVVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "pVVar5 = pParse->pVdbe;" (assignment_expression "pVVar5 = pParse->pVdbe" identifier = (field_expression "pParse->pVdbe" identifier -> field_identifier)) ;) (expression_statement "psVar1 = pParse->db;" (assignment_expression "psVar1 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (if_statement "if ((pIdx != (Index *)0x0) && (iVar7 = pUpsert->iDataCur, iVar7 != iCur)) {\n    if ((pTab->tabFlags & 0x80) == 0) {\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);\n    }\n    else {\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }\n  }" if (parenthesized_expression "((pIdx != (Index *)0x0) && (iVar7 = pUpsert->iDataCur, iVar7 != iCur))" ( (binary_expression "(pIdx != (Index *)0x0) && (iVar7 = pUpsert->iDataCur, iVar7 != iCur)" (parenthesized_expression "(pIdx != (Index *)0x0)" ( (binary_expression "pIdx != (Index *)0x0" identifier != (cast_expression "(Index *)0x0" ( (type_descriptor "Index *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar7 = pUpsert->iDataCur, iVar7 != iCur)" ( (comma_expression "iVar7 = pUpsert->iDataCur, iVar7 != iCur" (assignment_expression "iVar7 = pUpsert->iDataCur" identifier = (field_expression "pUpsert->iDataCur" identifier -> field_identifier)) , (binary_expression "iVar7 != iCur" identifier != identifier)) ))) )) (compound_statement "{\n    if ((pTab->tabFlags & 0x80) == 0) {\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);\n    }\n    else {\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }\n  }" { (if_statement "if ((pTab->tabFlags & 0x80) == 0) {\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);\n    }\n    else {\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }" if (parenthesized_expression "((pTab->tabFlags & 0x80) == 0)" ( (binary_expression "(pTab->tabFlags & 0x80) == 0" (parenthesized_expression "(pTab->tabFlags & 0x80)" ( (binary_expression "pTab->tabFlags & 0x80" (field_expression "pTab->tabFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);\n    }" { (expression_statement "uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))();" (assignment_expression "uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))()" identifier = (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))()" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1fc8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae54) + -0x1fc8)" ( (binary_expression "*(int *)(in_t9 + 0x3ae54) + -0x1fc8" (pointer_expression "*(int *)(in_t9 + 0x3ae54)" * (cast_expression "(int *)(in_t9 + 0x3ae54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae54)" ( (binary_expression "in_t9 + 0x3ae54" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "()" ( )))) ;) (expression_statement "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2);" (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,iCur,uVar2)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae8c) + -0x5fc0)" ( (binary_expression "*(int *)(in_t9 + 0x3ae8c) + -0x5fc0" (pointer_expression "*(int *)(in_t9 + 0x3ae8c)" * (cast_expression "(int *)(in_t9 + 0x3ae8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae8c)" ( (binary_expression "in_t9 + 0x3ae8c" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pVVar5,0x86,iCur,uVar2)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2);" (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,iVar7,0,uVar2)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x6054)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae8c) + -0x6054)" ( (binary_expression "*(int *)(in_t9 + 0x3ae8c) + -0x6054" (pointer_expression "*(int *)(in_t9 + 0x3ae8c)" * (cast_expression "(int *)(in_t9 + 0x3ae8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae8c)" ( (binary_expression "in_t9 + 0x3ae8c" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pVVar5,0x1f,iVar7,0,uVar2)" ( identifier , number_literal , identifier , number_literal , identifier ))) ;) (expression_statement "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2);" (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))(pParse,uVar2)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae54) + -0x1f88)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae54) + -0x1f88)" ( (binary_expression "*(int *)(in_t9 + 0x3ae54) + -0x1f88" (pointer_expression "*(int *)(in_t9 + 0x3ae54)" * (cast_expression "(int *)(in_t9 + 0x3ae54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae54)" ( (binary_expression "in_t9 + 0x3ae54" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pParse,uVar2)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }" else (compound_statement "{\n      iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);\n      uVar9 = (uint)*(ushort *)(iVar8 + 0x32);\n      iVar10 = pParse->nMem + 1;\n      pParse->nMem = pParse->nMem + uVar9;\n      iVar4 = *(int *)(in_t9 + 0x3ae54);\n      iVar3 = *(int *)(in_t9 + 0x3ae8c);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);\n      (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);\n    }" { (expression_statement "iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab);" (assignment_expression "iVar8 = (*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab)" identifier = (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))(pTab)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae54) + -0x11d4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae54) + -0x11d4)" ( (binary_expression "*(int *)(in_t9 + 0x3ae54) + -0x11d4" (pointer_expression "*(int *)(in_t9 + 0x3ae54)" * (cast_expression "(int *)(in_t9 + 0x3ae54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae54)" ( (binary_expression "in_t9 + 0x3ae54" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pTab)" ( identifier )))) ;) (expression_statement "uVar9 = (uint)*(ushort *)(iVar8 + 0x32);" (assignment_expression "uVar9 = (uint)*(ushort *)(iVar8 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar8 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar8 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x32)" ( (binary_expression "iVar8 + 0x32" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = pParse->nMem + 1;" (assignment_expression "iVar10 = pParse->nMem + 1" identifier = (binary_expression "pParse->nMem + 1" (field_expression "pParse->nMem" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pParse->nMem = pParse->nMem + uVar9;" (assignment_expression "pParse->nMem = pParse->nMem + uVar9" (field_expression "pParse->nMem" identifier -> field_identifier) = (binary_expression "pParse->nMem + uVar9" (field_expression "pParse->nMem" identifier -> field_identifier) + identifier)) ;) (expression_statement "iVar4 = *(int *)(in_t9 + 0x3ae54);" (assignment_expression "iVar4 = *(int *)(in_t9 + 0x3ae54)" identifier = (pointer_expression "*(int *)(in_t9 + 0x3ae54)" * (cast_expression "(int *)(in_t9 + 0x3ae54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae54)" ( (binary_expression "in_t9 + 0x3ae54" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *(int *)(in_t9 + 0x3ae8c);" (assignment_expression "iVar3 = *(int *)(in_t9 + 0x3ae8c)" identifier = (pointer_expression "*(int *)(in_t9 + 0x3ae8c)" * (cast_expression "(int *)(in_t9 + 0x3ae8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae8c)" ( (binary_expression "in_t9 + 0x3ae8c" identifier + number_literal) ))))) ;) (for_statement "for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }" for ( (assignment_expression "iVar6 = 0" identifier = number_literal) ; (binary_expression "iVar6 < (int)uVar9" identifier < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n        uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));\n        (*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);\n      }" { (expression_statement "uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2));" (assignment_expression "uVar2 = (*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2))" identifier = (call_expression "(*(code *)(iVar4 + -0x1194))(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2))" (parenthesized_expression "(*(code *)(iVar4 + -0x1194))" ( (pointer_expression "*(code *)(iVar4 + -0x1194)" * (cast_expression "(code *)(iVar4 + -0x1194)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x1194)" ( (binary_expression "iVar4 + -0x1194" identifier + number_literal) )))) )) (argument_list "(pIdx,(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2))" ( identifier , (cast_expression "(int)*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(iVar8 + 4) + iVar6 * 2)" * (cast_expression "(short *)(*(int *)(iVar8 + 4) + iVar6 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar8 + 4) + iVar6 * 2)" ( (binary_expression "*(int *)(iVar8 + 4) + iVar6 * 2" (pointer_expression "*(int *)(iVar8 + 4)" * (cast_expression "(int *)(iVar8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 4)" ( (binary_expression "iVar8 + 4" identifier + number_literal) )))) + (binary_expression "iVar6 * 2" identifier * number_literal)) ))))) )))) ;) (expression_statement "(*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6);" (call_expression "(*(code *)(iVar3 + -0x6054))(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6)" (parenthesized_expression "(*(code *)(iVar3 + -0x6054))" ( (pointer_expression "*(code *)(iVar3 + -0x6054)" * (cast_expression "(code *)(iVar3 + -0x6054)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + -0x6054)" ( (binary_expression "iVar3 + -0x6054" identifier + number_literal) )))) )) (argument_list "(pVVar5,0x59,iCur,uVar2,iVar10 + iVar6)" ( identifier , number_literal , identifier , identifier , (binary_expression "iVar10 + iVar6" identifier + identifier) ))) ;) })) (expression_statement "uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9);" (assignment_expression "uVar2 = (*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9)" identifier = (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,iVar7,0,iVar10,uVar9)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x5e58)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae8c) + -0x5e58)" ( (binary_expression "*(int *)(in_t9 + 0x3ae8c) + -0x5e58" (pointer_expression "*(int *)(in_t9 + 0x3ae8c)" * (cast_expression "(int *)(in_t9 + 0x3ae8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae8c)" ( (binary_expression "in_t9 + 0x3ae8c" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pVVar5,0x1e,iVar7,0,iVar10,uVar9)" ( identifier , number_literal , identifier , number_literal , identifier , identifier )))) ;) (expression_statement "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff);" (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))\n                (pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae8c) + -0x4fa8)" ( (binary_expression "*(int *)(in_t9 + 0x3ae8c) + -0x4fa8" (pointer_expression "*(int *)(in_t9 + 0x3ae8c)" * (cast_expression "(int *)(in_t9 + 0x3ae8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae8c)" ( (binary_expression "in_t9 + 0x3ae8c" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pVVar5,0x44,0xb,2,0,*(int *)(in_t9 + 0x3ae50) + -0x7720,0xffffffff)" ( identifier , number_literal , number_literal , number_literal , number_literal , (binary_expression "*(int *)(in_t9 + 0x3ae50) + -0x7720" (pointer_expression "*(int *)(in_t9 + 0x3ae50)" * (cast_expression "(int *)(in_t9 + 0x3ae50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae50)" ( (binary_expression "in_t9 + 0x3ae50" identifier + number_literal) )))) + number_literal) , number_literal ))) ;) (expression_statement "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse);" (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))(pParse)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae54) + -0xc40)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae54) + -0xc40)" ( (binary_expression "*(int *)(in_t9 + 0x3ae54) + -0xc40" (pointer_expression "*(int *)(in_t9 + 0x3ae54)" * (cast_expression "(int *)(in_t9 + 0x3ae54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae54)" ( (binary_expression "in_t9 + 0x3ae54" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pParse)" ( identifier ))) ;) (expression_statement "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);" (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))(pVVar5,uVar2)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae54) + -0x4a08)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae54) + -0x4a08)" ( (binary_expression "*(int *)(in_t9 + 0x3ae54) + -0x4a08" (pointer_expression "*(int *)(in_t9 + 0x3ae54)" * (cast_expression "(int *)(in_t9 + 0x3ae54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae54)" ( (binary_expression "in_t9 + 0x3ae54" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(pVVar5,uVar2)" ( identifier , identifier ))) ;) }))) })) (expression_statement "pTabList = (SrcList *)\n             (*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0);" (assignment_expression "pTabList = (SrcList *)\n             (*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0)" identifier = (cast_expression "(SrcList *)\n             (*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0)" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0)" (parenthesized_expression "(*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110))" ( (pointer_expression "*(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110)" * (cast_expression "(code *)(*(int *)(in_t9 + 0x3ae64) + -0x4110)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(in_t9 + 0x3ae64) + -0x4110)" ( (binary_expression "*(int *)(in_t9 + 0x3ae64) + -0x4110" (pointer_expression "*(int *)(in_t9 + 0x3ae64)" * (cast_expression "(int *)(in_t9 + 0x3ae64)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae64)" ( (binary_expression "in_t9 + 0x3ae64" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(psVar1,pUpsert->pUpsertSrc,0)" ( identifier , (field_expression "pUpsert->pUpsertSrc" identifier -> field_identifier) , number_literal ))))) ;) (expression_statement "iVar8 = *(int *)(in_t9 + 0x3ae8c);" (assignment_expression "iVar8 = *(int *)(in_t9 + 0x3ae8c)" identifier = (pointer_expression "*(int *)(in_t9 + 0x3ae8c)" * (cast_expression "(int *)(in_t9 + 0x3ae8c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x3ae8c)" ( (binary_expression "in_t9 + 0x3ae8c" identifier + number_literal) ))))) ;) (for_statement "for (iVar7 = 0; iVar7 < pTab->nCol; iVar7 = iVar7 + 1) {\n    if (pTab->aCol[iVar7].affinity == 'E') {\n      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);\n    }\n  }" for ( (assignment_expression "iVar7 = 0" identifier = number_literal) ; (binary_expression "iVar7 < pTab->nCol" identifier < (field_expression "pTab->nCol" identifier -> field_identifier)) ; (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n    if (pTab->aCol[iVar7].affinity == 'E') {\n      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);\n    }\n  }" { (if_statement "if (pTab->aCol[iVar7].affinity == 'E') {\n      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);\n    }" if (parenthesized_expression "(pTab->aCol[iVar7].affinity == 'E')" ( (binary_expression "pTab->aCol[iVar7].affinity == 'E'" (field_expression "pTab->aCol[iVar7].affinity" (subscript_expression "pTab->aCol[iVar7]" (field_expression "pTab->aCol" identifier -> field_identifier) [ identifier ]) . field_identifier) == (char_literal "'E'" ' character ')) )) (compound_statement "{\n      (*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);\n    }" { (expression_statement "(*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData);" (call_expression "(*(code *)(iVar8 + -0x5ddc))(pVVar5,0x53,iVar7 + pUpsert->regData)" (parenthesized_expression "(*(code *)(iVar8 + -0x5ddc))" ( (pointer_expression "*(code *)(iVar8 + -0x5ddc)" * (cast_expression "(code *)(iVar8 + -0x5ddc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + -0x5ddc)" ( (binary_expression "iVar8 + -0x5ddc" identifier + number_literal) )))) )) (argument_list "(pVVar5,0x53,iVar7 + pUpsert->regData)" ( identifier , number_literal , (binary_expression "iVar7 + pUpsert->regData" identifier + (field_expression "pUpsert->regData" identifier -> field_identifier)) ))) ;) })) })) (expression_statement "sqlite3Update(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(ExprList *)0x0,\n                (Expr *)0x0,pUpsert);" (call_expression "sqlite3Update(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(ExprList *)0x0,\n                (Expr *)0x0,pUpsert)" identifier (argument_list "(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(ExprList *)0x0,\n                (Expr *)0x0,pUpsert)" ( identifier , identifier , (field_expression "pUpsert->pUpsertSet" identifier -> field_identifier) , (field_expression "pUpsert->pUpsertWhere" identifier -> field_identifier) , number_literal , (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier ))) ;) (expression_statement "pUpsert->pUpsertSet = (ExprList *)0x0;" (assignment_expression "pUpsert->pUpsertSet = (ExprList *)0x0" (field_expression "pUpsert->pUpsertSet" identifier -> field_identifier) = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pUpsert->pUpsertWhere = (Expr *)0x0;" (assignment_expression "pUpsert->pUpsertWhere = (Expr *)0x0" (field_expression "pUpsert->pUpsertWhere" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}\n\n" (function_definition "void FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "code *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }" if (parenthesized_expression "((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5))" ( (binary_expression "(param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)" (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)" ( (comma_expression "iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5" (assignment_expression "iVar7 = *(int *)(param_2 + 0x1c)" identifier = (pointer_expression "*(int *)(param_2 + 0x1c)" * (cast_expression "(int *)(param_2 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x1c)" ( (binary_expression "param_2 + 0x1c" identifier + number_literal) ))))) , (binary_expression "iVar7 != param_5" identifier != identifier)) ))) )) (compound_statement "{\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }" { (if_statement "if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" if (parenthesized_expression "((*(uint *)(param_3 + 0x24) & 0x80) == 0)" ( (binary_expression "(*(uint *)(param_3 + 0x24) & 0x80) == 0" (parenthesized_expression "(*(uint *)(param_3 + 0x24) & 0x80)" ( (binary_expression "*(uint *)(param_3 + 0x24) & 0x80" (pointer_expression "*(uint *)(param_3 + 0x24)" * (cast_expression "(uint *)(param_3 + 0x24)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x24)" ( (binary_expression "param_3 + 0x24" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }" { (expression_statement "uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();" (assignment_expression "uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))()" identifier = (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1fc8))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1fc8))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x1fc8)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1fc8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1fc8)" ( (binary_expression "PTR_LAB_000f62d8 + -0x1fc8" identifier + number_literal) )))) )) (argument_list "()" ( )))) ;) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x5fc0)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5fc0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x5fc0)" ( (binary_expression "PTR_LAB_000f6310 + -0x5fc0" identifier + number_literal) )))) )) (argument_list "(uVar5,0x86,param_5,uVar2)" ( identifier , number_literal , identifier , identifier ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x6054))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x6054)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x6054)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x6054)" ( (binary_expression "PTR_LAB_000f6310 + -0x6054" identifier + number_literal) )))) )) (argument_list "(uVar5,0x1f,iVar7,0,uVar2)" ( identifier , number_literal , identifier , number_literal , identifier ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x1f88)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1f88)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1f88)" ( (binary_expression "PTR_LAB_000f62d8 + -0x1f88" identifier + number_literal) )))) )) (argument_list "(param_1,uVar2)" ( identifier , identifier ))) ;) }) (else_clause "else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" else (compound_statement "{\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" { (expression_statement "iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);" (assignment_expression "iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3)" identifier = (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x11d4))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x11d4)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x11d4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x11d4)" ( (binary_expression "PTR_LAB_000f62d8 + -0x11d4" identifier + number_literal) )))) )) (argument_list "(param_3)" ( identifier )))) ;) (expression_statement "uVar9 = (uint)*(ushort *)(iVar3 + 0x32);" (assignment_expression "uVar9 = (uint)*(ushort *)(iVar3 + 0x32)" identifier = (binary_expression "(uint)*(ushort *)(iVar3 + 0x32)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar3 + 0x32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x32)" ( (binary_expression "iVar3 + 0x32" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = param_1[0xb] + 1;" (assignment_expression "iVar10 = param_1[0xb] + 1" identifier = (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "param_1[0xb] = param_1[0xb] + uVar9;" (assignment_expression "param_1[0xb] = param_1[0xb] + uVar9" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) = (binary_expression "param_1[0xb] + uVar9" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194)" identifier = (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1194)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1194)" ( (binary_expression "PTR_LAB_000f62d8 + -0x1194" identifier + number_literal) )))) ;) (expression_statement "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054)" identifier = (cast_expression "(code *)(PTR_LAB_000f6310 + -0x6054)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x6054)" ( (binary_expression "PTR_LAB_000f6310 + -0x6054" identifier + number_literal) )))) ;) (for_statement "for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }" for ( (assignment_expression "iVar6 = 0" identifier = number_literal) ; (binary_expression "iVar6 < (int)uVar9" identifier < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ; (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }" { (expression_statement "uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));" (assignment_expression "uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" identifier = (call_expression "(*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" ( identifier , (cast_expression "(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" * (cast_expression "(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar3 + 4) + iVar6 * 2)" ( (binary_expression "*(int *)(iVar3 + 4) + iVar6 * 2" (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) + (binary_expression "iVar6 * 2" identifier * number_literal)) ))))) )))) ;) (expression_statement "(*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);" (call_expression "(*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6)" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(uVar5,0x59,param_5,uVar2,iVar10 + iVar6)" ( identifier , number_literal , identifier , identifier , (binary_expression "iVar10 + iVar6" identifier + identifier) ))) ;) })) (expression_statement "uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);" (assignment_expression "uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9)" identifier = (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x5e58))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x5e58)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5e58)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x5e58)" ( (binary_expression "PTR_LAB_000f6310 + -0x5e58" identifier + number_literal) )))) )) (argument_list "(uVar5,0x1e,iVar7,0,iVar10,uVar9)" ( identifier , number_literal , identifier , number_literal , identifier , identifier )))) ;) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))" ( (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x4fa8)" * (cast_expression "(code *)(PTR_LAB_000f6310 + -0x4fa8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x4fa8)" ( (binary_expression "PTR_LAB_000f6310 + -0x4fa8" identifier + number_literal) )))) )) (argument_list "(uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff)" ( identifier , number_literal , number_literal , number_literal , number_literal , (binary_expression "PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720" identifier + number_literal) , number_literal ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0xc40))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0xc40)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0xc40)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0xc40)" ( (binary_expression "PTR_LAB_000f62d8 + -0xc40" identifier + number_literal) )))) )) (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))" ( (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x4a08)" * (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x4a08)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62d8 + -0x4a08)" ( (binary_expression "PTR_LAB_000f62d8 + -0x4a08" identifier + number_literal) )))) )) (argument_list "(uVar5,uVar2)" ( identifier , identifier ))) ;) }))) })) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0)" identifier = (call_expression "(*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62e8 + -0x4110))" ( (pointer_expression "*(code *)(PTR_LAB_000f62e8 + -0x4110)" * (cast_expression "(code *)(PTR_LAB_000f62e8 + -0x4110)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f62e8 + -0x4110)" ( (binary_expression "PTR_LAB_000f62e8 + -0x4110" identifier + number_literal) )))) )) (argument_list "(uVar1,*(undefined4 *)(param_2 + 0x14),0)" ( identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x14)" * (cast_expression "(undefined4 *)(param_2 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x14)" ( (binary_expression "param_2 + 0x14" identifier + number_literal) )))) , number_literal )))) ;) (expression_statement "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc)" identifier = (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5ddc)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f6310 + -0x5ddc)" ( (binary_expression "PTR_LAB_000f6310 + -0x5ddc" identifier + number_literal) )))) ;) (for_statement "for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }" for ( (assignment_expression "iVar7 = 0" identifier = number_literal) ; (binary_expression "iVar7 < *(short *)(param_3 + 0x2a)" identifier < (pointer_expression "*(short *)(param_3 + 0x2a)" * (cast_expression "(short *)(param_3 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x2a)" ( (binary_expression "param_3 + 0x2a" identifier + number_literal) ))))) ; (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }" { (if_statement "if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }" if (parenthesized_expression "(*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E')" ( (binary_expression "*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E'" (pointer_expression "*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" * (cast_expression "(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" ( (binary_expression "iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd" (binary_expression "iVar7 * 0x14 + *(int *)(param_3 + 4)" (binary_expression "iVar7 * 0x14" identifier * number_literal) + (pointer_expression "*(int *)(param_3 + 4)" * (cast_expression "(int *)(param_3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) + number_literal) )))) == (char_literal "'E'" ' character ')) )) (compound_statement "{\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }" { (expression_statement "(*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));" (call_expression "(*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18))" (parenthesized_expression "(*pcVar8)" ( (pointer_expression "*pcVar8" * identifier) )) (argument_list "(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18))" ( identifier , number_literal , (binary_expression "iVar7 + *(int *)(param_2 + 0x18)" identifier + (pointer_expression "*(int *)(param_2 + 0x18)" * (cast_expression "(int *)(param_2 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x18)" ( (binary_expression "param_2 + 0x18" identifier + number_literal) ))))) ))) ;) })) })) (expression_statement "FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);" (call_expression "FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2)" identifier (argument_list "(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) , number_literal , number_literal , number_literal , identifier ))) ;) (expression_statement "*(undefined4 *)(param_2 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 8) = 0" (pointer_expression "*(undefined4 *)(param_2 + 8)" * (cast_expression "(undefined4 *)(param_2 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(param_2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" * (cast_expression "(undefined4 *)(param_2 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xc)" ( (binary_expression "param_2 + 0xc" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT != IDENT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + 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) )))) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , IDENT , IDENT , (binary_expression IDENT + IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , IDENT , LIT , IDENT , IDENT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , LIT , LIT , LIT , LIT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT ))) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = LIT) ; (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) ;) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)\n\n{\n  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_000bb484(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)" (identifier "FUN_000bb484") (parameter_list "(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (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  undefined4 uVar1;\n  undefined4 uVar2;\n  int iVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int iVar7;\n  code *pcVar8;\n  uint uVar9;\n  int iVar10;\n  \n  uVar5 = param_1[2];\n  uVar1 = *param_1;\n  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }\n  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);\n  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);\n  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }\n  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);\n  *(undefined4 *)(param_2 + 8) = 0;\n  *(undefined4 *)(param_2 + 0xc) = 0;\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "code *pcVar8;" (type_identifier "code") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (expression_statement "uVar5 = param_1[2];" (assignment_expression "uVar5 = param_1[2]" (identifier "uVar5") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }" (if "if") (parenthesized_expression "((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5))" (( "(") (binary_expression "(param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)" (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)" (( "(") (comma_expression "iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5" (assignment_expression "iVar7 = *(int *)(param_2 + 0x1c)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(param_2 + 0x1c)" (* "*") (cast_expression "(int *)(param_2 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x1c)" (( "(") (binary_expression "param_2 + 0x1c" (identifier "param_2") (+ "+") (number_literal "0x1c")) () ")"))))) (, ",") (binary_expression "iVar7 != param_5" (identifier "iVar7") (!= "!=") (identifier "param_5"))) () ")"))) () ")")) (compound_statement "{\n    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }\n  }" ({ "{") (if_statement "if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }\n    else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" (if "if") (parenthesized_expression "((*(uint *)(param_3 + 0x24) & 0x80) == 0)" (( "(") (binary_expression "(*(uint *)(param_3 + 0x24) & 0x80) == 0" (parenthesized_expression "(*(uint *)(param_3 + 0x24) & 0x80)" (( "(") (binary_expression "*(uint *)(param_3 + 0x24) & 0x80" (pointer_expression "*(uint *)(param_3 + 0x24)" (* "*") (cast_expression "(uint *)(param_3 + 0x24)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x24)" (( "(") (binary_expression "param_3 + 0x24" (identifier "param_3") (+ "+") (number_literal "0x24")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();\n      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);\n      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);\n      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);\n    }" ({ "{") (expression_statement "uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();" (assignment_expression "uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))()" (identifier "uVar2") (= "=") (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1fc8))()" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1fc8))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x1fc8)" (* "*") (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1fc8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1fc8)" (( "(") (binary_expression "PTR_LAB_000f62d8 + -0x1fc8" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x1fc8")) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x5fc0))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x5fc0)" (* "*") (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5fc0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f6310 + -0x5fc0)" (( "(") (binary_expression "PTR_LAB_000f6310 + -0x5fc0" (identifier "PTR_LAB_000f6310") (+ "+") (number_literal "-0x5fc0")) () ")")))) () ")")) (argument_list "(uVar5,0x86,param_5,uVar2)" (( "(") (identifier "uVar5") (, ",") (number_literal "0x86") (, ",") (identifier "param_5") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x6054))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x6054)" (* "*") (cast_expression "(code *)(PTR_LAB_000f6310 + -0x6054)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f6310 + -0x6054)" (( "(") (binary_expression "PTR_LAB_000f6310 + -0x6054" (identifier "PTR_LAB_000f6310") (+ "+") (number_literal "-0x6054")) () ")")))) () ")")) (argument_list "(uVar5,0x1f,iVar7,0,uVar2)" (( "(") (identifier "uVar5") (, ",") (number_literal "0x1f") (, ",") (identifier "iVar7") (, ",") (number_literal "0") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x1f88))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x1f88)" (* "*") (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1f88)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1f88)" (( "(") (binary_expression "PTR_LAB_000f62d8 + -0x1f88" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x1f88")) () ")")))) () ")")) (argument_list "(param_1,uVar2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}")) (else_clause "else {\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" (else "else") (compound_statement "{\n      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);\n      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);\n      iVar10 = param_1[0xb] + 1;\n      param_1[0xb] = param_1[0xb] + uVar9;\n      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);\n      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);\n      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }\n      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);\n      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);\n      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);\n      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);\n    }" ({ "{") (expression_statement "iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);" (assignment_expression "iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3)" (identifier "iVar3") (= "=") (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x11d4))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x11d4)" (* "*") (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x11d4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f62d8 + -0x11d4)" (( "(") (binary_expression "PTR_LAB_000f62d8 + -0x11d4" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x11d4")) () ")")))) () ")")) (argument_list "(param_3)" (( "(") (identifier "param_3") () ")")))) (; ";")) (expression_statement "uVar9 = (uint)*(ushort *)(iVar3 + 0x32);" (assignment_expression "uVar9 = (uint)*(ushort *)(iVar3 + 0x32)" (identifier "uVar9") (= "=") (binary_expression "(uint)*(ushort *)(iVar3 + 0x32)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar3 + 0x32)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x32)" (( "(") (binary_expression "iVar3 + 0x32" (identifier "iVar3") (+ "+") (number_literal "0x32")) () ")"))))) (; ";")) (expression_statement "iVar10 = param_1[0xb] + 1;" (assignment_expression "iVar10 = param_1[0xb] + 1" (identifier "iVar10") (= "=") (binary_expression "param_1[0xb] + 1" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[0xb] = param_1[0xb] + uVar9;" (assignment_expression "param_1[0xb] = param_1[0xb] + uVar9" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (= "=") (binary_expression "param_1[0xb] + uVar9" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (+ "+") (identifier "uVar9"))) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x1194)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f62d8 + -0x1194)" (( "(") (binary_expression "PTR_LAB_000f62d8 + -0x1194" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x1194")) () ")")))) (; ";")) (expression_statement "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054)" (identifier "pcVar8") (= "=") (cast_expression "(code *)(PTR_LAB_000f6310 + -0x6054)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f6310 + -0x6054)" (( "(") (binary_expression "PTR_LAB_000f6310 + -0x6054" (identifier "PTR_LAB_000f6310") (+ "+") (number_literal "-0x6054")) () ")")))) (; ";")) (for_statement "for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }" (for "for") (( "(") (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar6 < (int)uVar9" (identifier "iVar6") (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) (; ";") (assignment_expression "iVar6 = iVar6 + 1" (identifier "iVar6") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));\n        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);\n      }" ({ "{") (expression_statement "uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));" (assignment_expression "uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" (identifier "uVar2") (= "=") (call_expression "(*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2))" (( "(") (identifier "param_4") (, ",") (cast_expression "(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" (* "*") (cast_expression "(short *)(*(int *)(iVar3 + 4) + iVar6 * 2)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar3 + 4) + iVar6 * 2)" (( "(") (binary_expression "*(int *)(iVar3 + 4) + iVar6 * 2" (pointer_expression "*(int *)(iVar3 + 4)" (* "*") (cast_expression "(int *)(iVar3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "iVar6 * 2" (identifier "iVar6") (* "*") (number_literal "2"))) () ")"))))) () ")")))) (; ";")) (expression_statement "(*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);" (call_expression "(*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6)" (parenthesized_expression "(*pcVar8)" (( "(") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) () ")")) (argument_list "(uVar5,0x59,param_5,uVar2,iVar10 + iVar6)" (( "(") (identifier "uVar5") (, ",") (number_literal "0x59") (, ",") (identifier "param_5") (, ",") (identifier "uVar2") (, ",") (binary_expression "iVar10 + iVar6" (identifier "iVar10") (+ "+") (identifier "iVar6")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);" (assignment_expression "uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9)" (identifier "uVar2") (= "=") (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x5e58))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x5e58)" (* "*") (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5e58)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f6310 + -0x5e58)" (( "(") (binary_expression "PTR_LAB_000f6310 + -0x5e58" (identifier "PTR_LAB_000f6310") (+ "+") (number_literal "-0x5e58")) () ")")))) () ")")) (argument_list "(uVar5,0x1e,iVar7,0,iVar10,uVar9)" (( "(") (identifier "uVar5") (, ",") (number_literal "0x1e") (, ",") (identifier "iVar7") (, ",") (number_literal "0") (, ",") (identifier "iVar10") (, ",") (identifier "uVar9") () ")")))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff);" (call_expression "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))\n                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff)" (parenthesized_expression "(*(code *)(PTR_LAB_000f6310 + -0x4fa8))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f6310 + -0x4fa8)" (* "*") (cast_expression "(code *)(PTR_LAB_000f6310 + -0x4fa8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f6310 + -0x4fa8)" (( "(") (binary_expression "PTR_LAB_000f6310 + -0x4fa8" (identifier "PTR_LAB_000f6310") (+ "+") (number_literal "-0x4fa8")) () ")")))) () ")")) (argument_list "(uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,\n                 0xffffffff)" (( "(") (identifier "uVar5") (, ",") (number_literal "0x44") (, ",") (number_literal "0xb") (, ",") (number_literal "2") (, ",") (number_literal "0") (, ",") (binary_expression "PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720" (identifier "PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4") (+ "+") (number_literal "-0x7720")) (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0xc40))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0xc40)" (* "*") (cast_expression "(code *)(PTR_LAB_000f62d8 + -0xc40)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f62d8 + -0xc40)" (( "(") (binary_expression "PTR_LAB_000f62d8 + -0xc40" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0xc40")) () ")")))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);" (call_expression "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62d8 + -0x4a08))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f62d8 + -0x4a08)" (* "*") (cast_expression "(code *)(PTR_LAB_000f62d8 + -0x4a08)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f62d8 + -0x4a08)" (( "(") (binary_expression "PTR_LAB_000f62d8 + -0x4a08" (identifier "PTR_LAB_000f62d8") (+ "+") (number_literal "-0x4a08")) () ")")))) () ")")) (argument_list "(uVar5,uVar2)" (( "(") (identifier "uVar5") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);" (assignment_expression "uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0)" (identifier "uVar1") (= "=") (call_expression "(*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0)" (parenthesized_expression "(*(code *)(PTR_LAB_000f62e8 + -0x4110))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f62e8 + -0x4110)" (* "*") (cast_expression "(code *)(PTR_LAB_000f62e8 + -0x4110)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f62e8 + -0x4110)" (( "(") (binary_expression "PTR_LAB_000f62e8 + -0x4110" (identifier "PTR_LAB_000f62e8") (+ "+") (number_literal "-0x4110")) () ")")))) () ")")) (argument_list "(uVar1,*(undefined4 *)(param_2 + 0x14),0)" (( "(") (identifier "uVar1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x14)" (( "(") (binary_expression "param_2 + 0x14" (identifier "param_2") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);" (assignment_expression "pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc)" (identifier "pcVar8") (= "=") (cast_expression "(code *)(PTR_LAB_000f6310 + -0x5ddc)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f6310 + -0x5ddc)" (( "(") (binary_expression "PTR_LAB_000f6310 + -0x5ddc" (identifier "PTR_LAB_000f6310") (+ "+") (number_literal "-0x5ddc")) () ")")))) (; ";")) (for_statement "for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }" (for "for") (( "(") (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";") (binary_expression "iVar7 < *(short *)(param_3 + 0x2a)" (identifier "iVar7") (< "<") (pointer_expression "*(short *)(param_3 + 0x2a)" (* "*") (cast_expression "(short *)(param_3 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x2a)" (( "(") (binary_expression "param_3 + 0x2a" (identifier "param_3") (+ "+") (number_literal "0x2a")) () ")"))))) (; ";") (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }\n  }" ({ "{") (if_statement "if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E')" (( "(") (binary_expression "*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E'" (pointer_expression "*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" (* "*") (cast_expression "(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd)" (( "(") (binary_expression "iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd" (binary_expression "iVar7 * 0x14 + *(int *)(param_3 + 4)" (binary_expression "iVar7 * 0x14" (identifier "iVar7") (* "*") (number_literal "0x14")) (+ "+") (pointer_expression "*(int *)(param_3 + 4)" (* "*") (cast_expression "(int *)(param_3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (+ "+") (number_literal "0xd")) () ")")))) (== "==") (char_literal "'E'" (' "'") (character "E") (' "'"))) () ")")) (compound_statement "{\n      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));\n    }" ({ "{") (expression_statement "(*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));" (call_expression "(*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18))" (parenthesized_expression "(*pcVar8)" (( "(") (pointer_expression "*pcVar8" (* "*") (identifier "pcVar8")) () ")")) (argument_list "(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18))" (( "(") (identifier "uVar5") (, ",") (number_literal "0x53") (, ",") (binary_expression "iVar7 + *(int *)(param_2 + 0x18)" (identifier "iVar7") (+ "+") (pointer_expression "*(int *)(param_2 + 0x18)" (* "*") (cast_expression "(int *)(param_2 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x18)" (( "(") (binary_expression "param_2 + 0x18" (identifier "param_2") (+ "+") (number_literal "0x18")) () ")"))))) () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2);" (call_expression "FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2)" (identifier "FUN_000b87a4") (argument_list "(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,\n               param_2)" (( "(") (identifier "param_1") (, ",") (identifier "uVar1") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (, ",") (number_literal "2") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (identifier "param_2") () ")"))) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 8) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 8) = 0" (pointer_expression "*(undefined4 *)(param_2 + 8)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(param_2 + 0xc) = 0;" (assignment_expression "*(undefined4 *)(param_2 + 0xc) = 0" (pointer_expression "*(undefined4 *)(param_2 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xc)" (( "(") (binary_expression "param_2 + 0xc" (identifier "param_2") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *pParse,type_2 *pUpsert,type_3 *pTab,type_4 *var_1,int var_3)

{
  type_5 *psVar1;
  type_6 uVar2;
  type_7 *pTabList;
  int var_9;
  int var_8;
  type_8 *pVVar5;
  int var_7;
  int var_2;
  int var_5;
  type_9 var_6;
  int var_4;
  int var_10;
  
  pVVar5 = pParse->pVdbe;
  psVar1 = pParse->db;
  if ((var_1 != (type_4 *)0x0) && (var_2 = pUpsert->iDataCur, var_2 != var_3)) {
    if ((pTab->tabFlags & 0x80) == 0) {
      uVar2 = (*(type_10 *)(*(int *)(var_4 + 0x3ae54) + -0x1fc8))();
      (*(type_10 *)(*(int *)(var_4 + 0x3ae8c) + -0x5fc0))(pVVar5,0x86,var_3,uVar2);
      (*(type_10 *)(*(int *)(var_4 + 0x3ae8c) + -0x6054))(pVVar5,0x1f,var_2,0,uVar2);
      (*(type_10 *)(*(int *)(var_4 + 0x3ae54) + -0x1f88))(pParse,uVar2);
    }
    else {
      var_5 = (*(type_10 *)(*(int *)(var_4 + 0x3ae54) + -0x11d4))(pTab);
      var_6 = (type_9)*(type_11 *)(var_5 + 0x32);
      var_10 = pParse->nMem + 1;
      pParse->nMem = pParse->nMem + var_6;
      var_8 = *(int *)(var_4 + 0x3ae54);
      var_9 = *(int *)(var_4 + 0x3ae8c);
      for (var_7 = 0; var_7 < (int)var_6; var_7 = var_7 + 1) {
        uVar2 = (*(type_10 *)(var_8 + -0x1194))(var_1,(int)*(short *)(*(int *)(var_5 + 4) + var_7 * 2));
        (*(type_10 *)(var_9 + -0x6054))(pVVar5,0x59,var_3,uVar2,var_10 + var_7);
      }
      uVar2 = (*(type_10 *)(*(int *)(var_4 + 0x3ae8c) + -0x5e58))(pVVar5,0x1e,var_2,0,var_10,var_6);
      (*(type_10 *)(*(int *)(var_4 + 0x3ae8c) + -0x4fa8))
                (pVVar5,0x44,0xb,2,0,*(int *)(var_4 + 0x3ae50) + -0x7720,0xffffffff);
      (*(type_10 *)(*(int *)(var_4 + 0x3ae54) + -0xc40))(pParse);
      (*(type_10 *)(*(int *)(var_4 + 0x3ae54) + -0x4a08))(pVVar5,uVar2);
    }
  }
  pTabList = (type_7 *)
             (*(type_10 *)(*(int *)(var_4 + 0x3ae64) + -0x4110))(psVar1,pUpsert->pUpsertSrc,0);
  var_5 = *(int *)(var_4 + 0x3ae8c);
  for (var_2 = 0; var_2 < pTab->nCol; var_2 = var_2 + 1) {
    if (pTab->aCol[var_2].affinity == 'E') {
      (*(type_10 *)(var_5 + -0x5ddc))(pVVar5,0x53,var_2 + pUpsert->regData);
    }
  }
  var_11(pParse,pTabList,pUpsert->pUpsertSet,pUpsert->pUpsertWhere,2,(type_12 *)0x0,
                (type_13 *)0x0,pUpsert);
  pUpsert->pUpsertSet = (type_12 *)0x0;
  pUpsert->pUpsertWhere = (type_13 *)0x0;
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (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: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (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: (number_literal))) right: (number_literal))) consequence: (compound_statement (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list)))) (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 (identifier) (number_literal) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (number_literal) (identifier) (number_literal) (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 (identifier) (identifier))))) alternative: (else_clause (compound_statement (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (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: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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)))))) (for_statement initializer: (assignment_expression left: (identifier) right: (number_literal)) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (number_literal) (identifier) (identifier) (binary_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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (number_literal) (identifier) (number_literal) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (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 (identifier) (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (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))))) (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)))))) (for_statement initializer: (assignment_expression left: (identifier) right: (number_literal)) condition: (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (number_literal) (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (number_literal) (number_literal) (number_literal) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement))))

void MASKED(undefined4 *param_1,int param_2,int param_3,int param_4,int param_5)

{
  undefined4 uVar1;
  undefined4 uVar2;
  int iVar3;
  code *pcVar4;
  undefined4 uVar5;
  int iVar6;
  int iVar7;
  code *pcVar8;
  uint uVar9;
  int iVar10;
  
  uVar5 = param_1[2];
  uVar1 = *param_1;
  if ((param_4 != 0) && (iVar7 = *(int *)(param_2 + 0x1c), iVar7 != param_5)) {
    if ((*(uint *)(param_3 + 0x24) & 0x80) == 0) {
      uVar2 = (*(code *)(PTR_LAB_000f62d8 + -0x1fc8))();
      (*(code *)(PTR_LAB_000f6310 + -0x5fc0))(uVar5,0x86,param_5,uVar2);
      (*(code *)(PTR_LAB_000f6310 + -0x6054))(uVar5,0x1f,iVar7,0,uVar2);
      (*(code *)(PTR_LAB_000f62d8 + -0x1f88))(param_1,uVar2);
    }
    else {
      iVar3 = (*(code *)(PTR_LAB_000f62d8 + -0x11d4))(param_3);
      uVar9 = (uint)*(ushort *)(iVar3 + 0x32);
      iVar10 = param_1[0xb] + 1;
      param_1[0xb] = param_1[0xb] + uVar9;
      pcVar4 = (code *)(PTR_LAB_000f62d8 + -0x1194);
      pcVar8 = (code *)(PTR_LAB_000f6310 + -0x6054);
      for (iVar6 = 0; iVar6 < (int)uVar9; iVar6 = iVar6 + 1) {
        uVar2 = (*pcVar4)(param_4,(int)*(short *)(*(int *)(iVar3 + 4) + iVar6 * 2));
        (*pcVar8)(uVar5,0x59,param_5,uVar2,iVar10 + iVar6);
      }
      uVar2 = (*(code *)(PTR_LAB_000f6310 + -0x5e58))(uVar5,0x1e,iVar7,0,iVar10,uVar9);
      (*(code *)(PTR_LAB_000f6310 + -0x4fa8))
                (uVar5,0x44,0xb,2,0,PTR_s_EFIRSTFOLLOWINGFROMFULLIMITIFORD_000f62d4 + -0x7720,
                 0xffffffff);
      (*(code *)(PTR_LAB_000f62d8 + -0xc40))(param_1);
      (*(code *)(PTR_LAB_000f62d8 + -0x4a08))(uVar5,uVar2);
    }
  }
  uVar1 = (*(code *)(PTR_LAB_000f62e8 + -0x4110))(uVar1,*(undefined4 *)(param_2 + 0x14),0);
  pcVar8 = (code *)(PTR_LAB_000f6310 + -0x5ddc);
  for (iVar7 = 0; iVar7 < *(short *)(param_3 + 0x2a); iVar7 = iVar7 + 1) {
    if (*(char *)(iVar7 * 0x14 + *(int *)(param_3 + 4) + 0xd) == 'E') {
      (*pcVar8)(uVar5,0x53,iVar7 + *(int *)(param_2 + 0x18));
    }
  }
  FUN_000b87a4(param_1,uVar1,*(undefined4 *)(param_2 + 8),*(undefined4 *)(param_2 + 0xc),2,0,0,
               param_2);
  *(undefined4 *)(param_2 + 8) = 0;
  *(undefined4 *)(param_2 + 0xc) = 0;
  return;
}

