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

int __regparm2 sqlite3Fts5StorageIndexInsert(Fts5Storage *p,sqlite3_value **apVal,i64 iRowid)

{
  uint *puVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  Fts5Config *pFVar5;
  i64 *piVar6;
  i64 iVar7;
  uchar *puVar8;
  int iVar9;
  int in_GS_OFFSET;
  int rc;
  Fts5InsertCtx ctx;
  Fts5Buffer buf;
  
  pFVar5 = p->pConfig;
  iVar4 = *(int *)(in_GS_OFFSET + 0x14);
  rc = 0;
  buf.p = (u8 *)0x0;
  buf.n = 0;
  buf.nSpace = 0;
  ctx.pStorage = p;
  if (p->bTotalsValid == 0) {
    rc = fts5StorageLoadTotals(p,1);
    if (rc == 0) goto LAB_000dfe55;
    ctx.iCol = 0;
  }
  else {
LAB_000dfe55:
    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);
    ctx.iCol = 0;
    if (rc == 0) {
      iVar9 = 0;
      if (0 < pFVar5->nCol) {
        do {
          ctx.szCol = 0;
          iVar9 = 0;
          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {
            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);
            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);
            if (puVar8 == (uchar *)0x0) {
              rc = 0;
            }
            else {
              rc = (*pFVar5->pTokApi->xTokenize)
                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);
            }
            iVar9 = ctx.szCol >> 0x1f;
          }
          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));
          piVar6 = p->aTotalSize;
          puVar1 = (uint *)(piVar6 + ctx.iCol);
          uVar3 = *puVar1;
          *puVar1 = *puVar1 + ctx.szCol;
          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);
          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);
          ctx.iCol = ctx.iCol + 1;
          if (rc != 0) goto LAB_000dff90;
          iVar9 = rc;
        } while (ctx.iCol < pFVar5->nCol);
      }
      rc = iVar9;
      pFVar5 = p->pConfig;
      piVar6 = &p->nTotalRow;
      iVar7 = *piVar6;
      *(int *)piVar6 = (int)*piVar6 + 1;
      piVar2 = (int *)((int)&p->nTotalRow + 4);
      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);
      if (pFVar5->bColumnsize == 0) {
        rc = 0;
      }
      else {
        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);
      }
      goto LAB_000dff98;
    }
  }
LAB_000dff90:
  piVar6 = &p->nTotalRow;
  iVar7 = *piVar6;
  *(int *)piVar6 = (int)*piVar6 + 1;
  piVar2 = (int *)((int)&p->nTotalRow + 4);
  *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);
LAB_000dff98:
  sqlite3_free(buf.p);
  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {
    return rc;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



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

int __regparm2 FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  uint *puVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int in_GS_OFFSET;
  int local_3c;
  int *local_38;
  int local_34;
  uint local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0xdfdfb;
  iVar4 = *param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_2c = 0;
  local_28 = 0;
  local_24 = 0;
  local_38 = param_1;
  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {
    local_34 = 0;
  }
  else {
    local_3c = FUN_000dfa60(param_3,param_4);
    local_34 = 0;
    if (local_3c == 0) {
      if (0 < *(int *)(iVar4 + 0xc)) {
        do {
          local_30 = 0;
          iVar6 = 0;
          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {
            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));
            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));
            if (iVar6 == 0) {
              local_3c = 0;
            }
            else {
              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))
                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,
                                    FUN_0006b900);
            }
            iVar6 = (int)local_30 >> 0x1f;
          }
          FUN_0006a320(local_30,iVar6);
          iVar6 = param_1[5];
          puVar1 = (uint *)(iVar6 + local_34 * 8);
          uVar3 = *puVar1;
          *puVar1 = *puVar1 + local_30;
          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);
          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);
          local_34 = local_34 + 1;
          if (local_3c != 0) goto LAB_000dff90;
        } while (local_34 < *(int *)(iVar4 + 0xc));
      }
      puVar1 = (uint *)(param_1 + 3);
      uVar3 = *puVar1;
      *puVar1 = *puVar1 + 1;
      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);
      if (*(int *)(*param_1 + 0x2c) == 0) {
        local_3c = 0;
      }
      else {
        local_3c = FUN_000cd970(&local_2c,&local_28);
      }
      goto LAB_000dff98;
    }
  }
LAB_000dff90:
  puVar1 = (uint *)(param_1 + 3);
  uVar3 = *puVar1;
  *puVar1 = *puVar1 + 1;
  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);
LAB_000dff98:
  FUN_000264d0(local_2c);
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return local_3c;
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00014d20
ADD EBX,0x6b0d9
SUB ESP,0x4c
MOV EBP,dword ptr [ESI + 0x8]
MOV EDI,dword ptr [ESI]
MOV dword ptr [ESP + 0x10],EDX
MOV EAX,dword ptr [ESP + 0x60]
MOV EDX,dword ptr [ESP + 0x64]
MOV dword ptr [ESP + 0x18],EAX
MOV dword ptr [ESP + 0x1c],EDX
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x3c],EAX
XOR EAX,EAX
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x34],0x0
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x24],ESI
TEST EBP,EBP
JZ 0x000dff70
SUB ESP,0x8
MOV EAX,dword ptr [ESI + 0x4]
XOR EDX,EDX
PUSH dword ptr [ESP + 0x24]
PUSH dword ptr [ESP + 0x24]
CALL 0x000dfa60
MOV dword ptr [ESP + 0x38],0x0
MOV dword ptr [ESP + 0x30],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x000dff90
MOV ECX,dword ptr [EDI + 0xc]
TEST ECX,ECX
JLE 0x000dffc0
LEA EAX,[ESP + 0x30]
XOR ECX,ECX
MOV dword ptr [ESP + 0xc],EAX
LEA EAX,[ESP + 0x20]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[EBX + 0xfff20a2c]
MOV dword ptr [ESP + 0x14],EAX
JMP 0x000dfef8
SUB ESP,0x8
PUSH EDX
PUSH EAX
MOV EDX,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ESP + 0x18]
CALL 0x0006a320
MOV EAX,dword ptr [ESP + 0x3c]
MOV EBP,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESI + 0x14]
CDQ
ADD dword ptr [ECX + EBP*0x8],EAX
ADC dword ptr [ECX + EBP*0x8 + 0x4],EDX
MOV EAX,dword ptr [ESP + 0x38]
LEA ECX,[EAX + 0x1]
MOV dword ptr [ESP + 0x38],ECX
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
JNZ 0x000dff90
CMP ECX,dword ptr [EDI + 0xc]
JGE 0x000dffc0
MOV EBP,dword ptr [EDI + 0x14]
MOV dword ptr [ESP + 0x2c],0x0
XOR EAX,EAX
XOR EDX,EDX
CMP byte ptr [EBP + ECX*0x1],0x0
JNZ 0x000dfeb0
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x1c]
PUSH dword ptr [EAX + ECX*0x4 + 0x8]
CALL 0x0004e4c0
POP EDX
MOV EDX,dword ptr [ESP + 0x1c]
MOV EBP,EAX
MOV EAX,dword ptr [ESP + 0x34]
PUSH dword ptr [EDX + EAX*0x4 + 0x8]
CALL 0x0004e670
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000dffe0
SUB ESP,0x8
MOV EDX,dword ptr [EDI + 0x3c]
PUSH dword ptr [ESP + 0x1c]
PUSH EBP
PUSH EAX
PUSH 0x4
LEA EAX,[ESP + 0x3c]
PUSH EAX
PUSH dword ptr [EDI + 0x38]
CALL dword ptr [EDX + 0x8]
ADD ESP,0x20
MOV dword ptr [ESP + 0x20],EAX
MOV EAX,dword ptr [ESP + 0x2c]
CDQ
JMP 0x000dfeb0
MOV EDX,0x1
MOV EAX,ESI
CALL 0x000dfbf0
MOV dword ptr [ESP + 0x20],EAX
TEST EAX,EAX
JZ 0x000dfe55
MOV dword ptr [ESP + 0x28],0x0
ADD dword ptr [ESI + 0xc],0x1
ADC dword ptr [ESI + 0x10],0x0
SUB ESP,0xc
PUSH dword ptr [ESP + 0x3c]
CALL 0x000264d0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x20]
MOV EBX,dword ptr [ESP + 0x3c]
XOR EBX,dword ptr GS:[0x14]
JNZ 0x000e0015
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI]
ADD dword ptr [ESI + 0xc],0x1
ADC dword ptr [ESI + 0x10],0x0
MOV EAX,dword ptr [EAX + 0x2c]
TEST EAX,EAX
JNZ 0x000dfff0
MOV dword ptr [ESP + 0x20],EAX
JMP 0x000dff98
XOR EAX,EAX
JMP 0x000dff59
SUB ESP,0x8
LEA EAX,[ESP + 0x38]
LEA EDX,[ESP + 0x3c]
PUSH EDX
PUSH EAX
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,ESI
MOV ECX,dword ptr [ESP + 0x2c]
CALL 0x000cd970
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],EAX
JMP 0x000dff98
CALL 0x000f6410
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm2 FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_3c;\n}\n\n" comment (function_definition "int __regparm2 FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_3c;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }\n  return local_3c;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xdfdfb;" (assignment_expression "uStack_14 = 0xdfdfb" identifier = number_literal) ;) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_38 = param_1;" (assignment_expression "local_38 = param_1" identifier = identifier) ;) (if_statement "if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" if (parenthesized_expression "((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0))" ( (binary_expression "(param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)" (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(local_3c = FUN_000dfbf0(), local_3c != 0)" ( (comma_expression "local_3c = FUN_000dfbf0(), local_3c != 0" (assignment_expression "local_3c = FUN_000dfbf0()" identifier = (call_expression "FUN_000dfbf0()" identifier (argument_list "()" ( )))) , (binary_expression "local_3c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    local_34 = 0;\n  }" { (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" else (compound_statement "{\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" { (expression_statement "local_3c = FUN_000dfa60(param_3,param_4);" (assignment_expression "local_3c = FUN_000dfa60(param_3,param_4)" identifier = (call_expression "FUN_000dfa60(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (if_statement "if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }" { (if_statement "if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }" if (parenthesized_expression "(0 < *(int *)(iVar4 + 0xc))" ( (binary_expression "0 < *(int *)(iVar4 + 0xc)" number_literal < (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }" { (do_statement "do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));" do (compound_statement "{\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }" if (parenthesized_expression "(*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar4 + 0x14) + local_34)" * (cast_expression "(char *)(*(int *)(iVar4 + 0x14) + local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x14) + local_34)" ( (binary_expression "*(int *)(iVar4 + 0x14) + local_34" (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }" { (expression_statement "uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));" (assignment_expression "uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier = (call_expression "FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier (argument_list "(*(undefined4 *)(param_2 + 8 + local_34 * 4))" ( (pointer_expression "*(undefined4 *)(param_2 + 8 + local_34 * 4)" * (cast_expression "(undefined4 *)(param_2 + 8 + local_34 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8 + local_34 * 4)" ( (binary_expression "param_2 + 8 + local_34 * 4" (binary_expression "param_2 + 8" identifier + number_literal) + (binary_expression "local_34 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));" (assignment_expression "iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier = (call_expression "FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier (argument_list "(*(undefined4 *)(param_2 + 8 + local_34 * 4))" ( (pointer_expression "*(undefined4 *)(param_2 + 8 + local_34 * 4)" * (cast_expression "(undefined4 *)(param_2 + 8 + local_34 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8 + local_34 * 4)" ( (binary_expression "param_2 + 8 + local_34 * 4" (binary_expression "param_2 + 8" identifier + number_literal) + (binary_expression "local_34 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              local_3c = 0;\n            }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) }) (else_clause "else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" else (compound_statement "{\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" { (expression_statement "local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);" (assignment_expression "local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" identifier = (call_expression "(**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 0x3c) + 8))" ( (pointer_expression "**(code **)(*(int *)(iVar4 + 0x3c) + 8)" * (pointer_expression "*(code **)(*(int *)(iVar4 + 0x3c) + 8)" * (cast_expression "(code **)(*(int *)(iVar4 + 0x3c) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar4 + 0x3c) + 8)" ( (binary_expression "*(int *)(iVar4 + 0x3c) + 8" (pointer_expression "*(int *)(iVar4 + 0x3c)" * (cast_expression "(int *)(iVar4 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" ( (pointer_expression "*(undefined4 *)(iVar4 + 0x38)" * (cast_expression "(undefined4 *)(iVar4 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x38)" ( (binary_expression "iVar4 + 0x38" identifier + number_literal) )))) , (pointer_expression "&local_38" & identifier) , number_literal , identifier , identifier , identifier )))) ;) }))) (expression_statement "iVar6 = (int)local_30 >> 0x1f;" (assignment_expression "iVar6 = (int)local_30 >> 0x1f" identifier = (binary_expression "(int)local_30 >> 0x1f" (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) })) (expression_statement "FUN_0006a320(local_30,iVar6);" (call_expression "FUN_0006a320(local_30,iVar6)" identifier (argument_list "(local_30,iVar6)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = param_1[5];" (assignment_expression "iVar6 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar1 = (uint *)(iVar6 + local_34 * 8);" (assignment_expression "puVar1 = (uint *)(iVar6 + local_34 * 8)" identifier = (cast_expression "(uint *)(iVar6 + local_34 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + local_34 * 8)" ( (binary_expression "iVar6 + local_34 * 8" identifier + (binary_expression "local_34 * 8" identifier * number_literal)) )))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + local_30;" (assignment_expression "*puVar1 = *puVar1 + local_30" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + local_30" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "piVar2 = (int *)(iVar6 + 4 + local_34 * 8);" (assignment_expression "piVar2 = (int *)(iVar6 + 4 + local_34 * 8)" identifier = (cast_expression "(int *)(iVar6 + 4 + local_34 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4 + local_34 * 8)" ( (binary_expression "iVar6 + 4 + local_34 * 8" (binary_expression "iVar6 + 4" identifier + number_literal) + (binary_expression "local_34 * 8" identifier * number_literal)) )))) ;) (expression_statement "*piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);" (assignment_expression "*piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30)" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30)" (binary_expression "*piVar2 + ((int)local_30 >> 0x1f)" (pointer_expression "*piVar2" * identifier) + (parenthesized_expression "((int)local_30 >> 0x1f)" ( (binary_expression "(int)local_30 >> 0x1f" (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar3,local_30)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar3,local_30)" identifier (argument_list "(uVar3,local_30)" ( identifier , identifier )))))) ;) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (if_statement "if (local_3c != 0) goto LAB_000dff90;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000dff90;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_34 < *(int *)(iVar4 + 0xc))" ( (binary_expression "local_34 < *(int *)(iVar4 + 0xc)" identifier < (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) )) ;) })) (expression_statement "puVar1 = (uint *)(param_1 + 3);" (assignment_expression "puVar1 = (uint *)(param_1 + 3)" identifier = (cast_expression "(uint *)(param_1 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);" (assignment_expression "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (call_expression "(uint)(0xfffffffe < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar3)" ( (binary_expression "0xfffffffe < uVar3" number_literal < identifier) ))))) ;) (if_statement "if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" if (parenthesized_expression "(*(int *)(*param_1 + 0x2c) == 0)" ( (binary_expression "*(int *)(*param_1 + 0x2c) == 0" (pointer_expression "*(int *)(*param_1 + 0x2c)" * (cast_expression "(int *)(*param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x2c)" ( (binary_expression "*param_1 + 0x2c" (pointer_expression "*param_1" * identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_3c = 0;\n      }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) }) (else_clause "else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" else (compound_statement "{\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" { (expression_statement "local_3c = FUN_000cd970(&local_2c,&local_28);" (assignment_expression "local_3c = FUN_000cd970(&local_2c,&local_28)" identifier = (call_expression "FUN_000cd970(&local_2c,&local_28)" identifier (argument_list "(&local_2c,&local_28)" ( (pointer_expression "&local_2c" & identifier) , (pointer_expression "&local_28" & identifier) )))) ;) }))) (goto_statement "goto LAB_000dff98;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);" statement_identifier : (expression_statement "puVar1 = (uint *)(param_1 + 3);" (assignment_expression "puVar1 = (uint *)(param_1 + 3)" identifier = (cast_expression "(uint *)(param_1 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);" (assignment_expression "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (call_expression "(uint)(0xfffffffe < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar3)" ( (binary_expression "0xfffffffe < uVar3" number_literal < identifier) ))))) ;) (labeled_statement "LAB_000dff98:\n  FUN_000264d0(local_2c);" statement_identifier : (expression_statement "FUN_000264d0(local_2c);" (call_expression "FUN_000264d0(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;)) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    FUN_000f6410();\n  }" { comment (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_3c;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm2 sqlite3Fts5StorageIndexInsert(Fts5Storage *p,sqlite3_value **apVal,i64 iRowid)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  Fts5Config *pFVar5;\n  i64 *piVar6;\n  i64 iVar7;\n  uchar *puVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  int rc;\n  Fts5InsertCtx ctx;\n  Fts5Buffer buf;\n  \n  pFVar5 = p->pConfig;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  rc = 0;\n  buf.p = (u8 *)0x0;\n  buf.n = 0;\n  buf.nSpace = 0;\n  ctx.pStorage = p;\n  if (p->bTotalsValid == 0) {\n    rc = fts5StorageLoadTotals(p,1);\n    if (rc == 0) goto LAB_000dfe55;\n    ctx.iCol = 0;\n  }\n  else {\nLAB_000dfe55:\n    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);\n    ctx.iCol = 0;\n    if (rc == 0) {\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  piVar6 = &p->nTotalRow;\n  iVar7 = *piVar6;\n  *(int *)piVar6 = (int)*piVar6 + 1;\n  piVar2 = (int *)((int)&p->nTotalRow + 4);\n  *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\nLAB_000dff98:\n  sqlite3_free(buf.p);\n  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return rc;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment (function_definition "int __regparm2 sqlite3Fts5StorageIndexInsert(Fts5Storage *p,sqlite3_value **apVal,i64 iRowid)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  Fts5Config *pFVar5;\n  i64 *piVar6;\n  i64 iVar7;\n  uchar *puVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  int rc;\n  Fts5InsertCtx ctx;\n  Fts5Buffer buf;\n  \n  pFVar5 = p->pConfig;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  rc = 0;\n  buf.p = (u8 *)0x0;\n  buf.n = 0;\n  buf.nSpace = 0;\n  ctx.pStorage = p;\n  if (p->bTotalsValid == 0) {\n    rc = fts5StorageLoadTotals(p,1);\n    if (rc == 0) goto LAB_000dfe55;\n    ctx.iCol = 0;\n  }\n  else {\nLAB_000dfe55:\n    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);\n    ctx.iCol = 0;\n    if (rc == 0) {\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  piVar6 = &p->nTotalRow;\n  iVar7 = *piVar6;\n  *(int *)piVar6 = (int)*piVar6 + 1;\n  piVar2 = (int *)((int)&p->nTotalRow + 4);\n  *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\nLAB_000dff98:\n  sqlite3_free(buf.p);\n  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return rc;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "sqlite3Fts5StorageIndexInsert(Fts5Storage *p,sqlite3_value **apVal,i64 iRowid)" identifier (parameter_list "(Fts5Storage *p,sqlite3_value **apVal,i64 iRowid)" ( (parameter_declaration "Fts5Storage *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "sqlite3_value **apVal" type_identifier (pointer_declarator "**apVal" * (pointer_declarator "*apVal" * identifier))) , (parameter_declaration "i64 iRowid" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  Fts5Config *pFVar5;\n  i64 *piVar6;\n  i64 iVar7;\n  uchar *puVar8;\n  int iVar9;\n  int in_GS_OFFSET;\n  int rc;\n  Fts5InsertCtx ctx;\n  Fts5Buffer buf;\n  \n  pFVar5 = p->pConfig;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  rc = 0;\n  buf.p = (u8 *)0x0;\n  buf.n = 0;\n  buf.nSpace = 0;\n  ctx.pStorage = p;\n  if (p->bTotalsValid == 0) {\n    rc = fts5StorageLoadTotals(p,1);\n    if (rc == 0) goto LAB_000dfe55;\n    ctx.iCol = 0;\n  }\n  else {\nLAB_000dfe55:\n    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);\n    ctx.iCol = 0;\n    if (rc == 0) {\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  piVar6 = &p->nTotalRow;\n  iVar7 = *piVar6;\n  *(int *)piVar6 = (int)*piVar6 + 1;\n  piVar2 = (int *)((int)&p->nTotalRow + 4);\n  *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\nLAB_000dff98:\n  sqlite3_free(buf.p);\n  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return rc;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Fts5Config *pFVar5;" type_identifier (pointer_declarator "*pFVar5" * identifier) ;) (declaration "i64 *piVar6;" type_identifier (pointer_declarator "*piVar6" * identifier) ;) (declaration "i64 iVar7;" type_identifier identifier ;) (declaration "uchar *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int rc;" primitive_type identifier ;) (declaration "Fts5InsertCtx ctx;" type_identifier identifier ;) (declaration "Fts5Buffer buf;" type_identifier identifier ;) (expression_statement "pFVar5 = p->pConfig;" (assignment_expression "pFVar5 = p->pConfig" identifier = (field_expression "p->pConfig" identifier -> field_identifier)) ;) (expression_statement "iVar4 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar4 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "rc = 0;" (assignment_expression "rc = 0" identifier = number_literal) ;) (expression_statement "buf.p = (u8 *)0x0;" (assignment_expression "buf.p = (u8 *)0x0" (field_expression "buf.p" identifier . field_identifier) = (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "buf.n = 0;" (assignment_expression "buf.n = 0" (field_expression "buf.n" identifier . field_identifier) = number_literal) ;) (expression_statement "buf.nSpace = 0;" (assignment_expression "buf.nSpace = 0" (field_expression "buf.nSpace" identifier . field_identifier) = number_literal) ;) (expression_statement "ctx.pStorage = p;" (assignment_expression "ctx.pStorage = p" (field_expression "ctx.pStorage" identifier . field_identifier) = identifier) ;) (if_statement "if (p->bTotalsValid == 0) {\n    rc = fts5StorageLoadTotals(p,1);\n    if (rc == 0) goto LAB_000dfe55;\n    ctx.iCol = 0;\n  }\n  else {\nLAB_000dfe55:\n    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);\n    ctx.iCol = 0;\n    if (rc == 0) {\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }\n  }" if (parenthesized_expression "(p->bTotalsValid == 0)" ( (binary_expression "p->bTotalsValid == 0" (field_expression "p->bTotalsValid" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    rc = fts5StorageLoadTotals(p,1);\n    if (rc == 0) goto LAB_000dfe55;\n    ctx.iCol = 0;\n  }" { (expression_statement "rc = fts5StorageLoadTotals(p,1);" (assignment_expression "rc = fts5StorageLoadTotals(p,1)" identifier = (call_expression "fts5StorageLoadTotals(p,1)" identifier (argument_list "(p,1)" ( identifier , number_literal )))) ;) (if_statement "if (rc == 0) goto LAB_000dfe55;" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (goto_statement "goto LAB_000dfe55;" goto statement_identifier ;)) (expression_statement "ctx.iCol = 0;" (assignment_expression "ctx.iCol = 0" (field_expression "ctx.iCol" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\nLAB_000dfe55:\n    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);\n    ctx.iCol = 0;\n    if (rc == 0) {\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }\n  }" else (compound_statement "{\nLAB_000dfe55:\n    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);\n    ctx.iCol = 0;\n    if (rc == 0) {\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }\n  }" { (labeled_statement "LAB_000dfe55:\n    rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);" statement_identifier : (expression_statement "rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid);" (assignment_expression "rc = sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid)" identifier = (call_expression "sqlite3Fts5IndexBeginWrite(p->pIndex,0,iRowid)" identifier (argument_list "(p->pIndex,0,iRowid)" ( (field_expression "p->pIndex" identifier -> field_identifier) , number_literal , identifier )))) ;)) (expression_statement "ctx.iCol = 0;" (assignment_expression "ctx.iCol = 0" (field_expression "ctx.iCol" identifier . field_identifier) = number_literal) ;) (if_statement "if (rc == 0) {\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }" if (parenthesized_expression "(rc == 0)" ( (binary_expression "rc == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = 0;\n      if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }\n      rc = iVar9;\n      pFVar5 = p->pConfig;\n      piVar6 = &p->nTotalRow;\n      iVar7 = *piVar6;\n      *(int *)piVar6 = (int)*piVar6 + 1;\n      piVar2 = (int *)((int)&p->nTotalRow + 4);\n      *piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);\n      if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }\n      goto LAB_000dff98;\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (0 < pFVar5->nCol) {\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }" if (parenthesized_expression "(0 < pFVar5->nCol)" ( (binary_expression "0 < pFVar5->nCol" number_literal < (field_expression "pFVar5->nCol" identifier -> field_identifier)) )) (compound_statement "{\n        do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);\n      }" { (do_statement "do {\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        } while (ctx.iCol < pFVar5->nCol);" do (compound_statement "{\n          ctx.szCol = 0;\n          iVar9 = 0;\n          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }\n          sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));\n          piVar6 = p->aTotalSize;\n          puVar1 = (uint *)(piVar6 + ctx.iCol);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + ctx.szCol;\n          piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);\n          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);\n          ctx.iCol = ctx.iCol + 1;\n          if (rc != 0) goto LAB_000dff90;\n          iVar9 = rc;\n        }" { (expression_statement "ctx.szCol = 0;" (assignment_expression "ctx.szCol = 0" (field_expression "ctx.szCol" identifier . field_identifier) = number_literal) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (if_statement "if (pFVar5->abUnindexed[ctx.iCol] == '\0') {\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }" if (parenthesized_expression "(pFVar5->abUnindexed[ctx.iCol] == '\0')" ( (binary_expression "pFVar5->abUnindexed[ctx.iCol] == '\0'" (subscript_expression "pFVar5->abUnindexed[ctx.iCol]" (field_expression "pFVar5->abUnindexed" identifier -> field_identifier) [ (field_expression "ctx.iCol" identifier . field_identifier) ]) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);\n            puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);\n            if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }\n            iVar9 = ctx.szCol >> 0x1f;\n          }" { (expression_statement "iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2]);" (assignment_expression "iVar9 = sqlite3_value_bytes(apVal[ctx.iCol + 2])" identifier = (call_expression "sqlite3_value_bytes(apVal[ctx.iCol + 2])" identifier (argument_list "(apVal[ctx.iCol + 2])" ( (subscript_expression "apVal[ctx.iCol + 2]" identifier [ (binary_expression "ctx.iCol + 2" (field_expression "ctx.iCol" identifier . field_identifier) + number_literal) ]) )))) ;) (expression_statement "puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2]);" (assignment_expression "puVar8 = sqlite3_value_text(apVal[ctx.iCol + 2])" identifier = (call_expression "sqlite3_value_text(apVal[ctx.iCol + 2])" identifier (argument_list "(apVal[ctx.iCol + 2])" ( (subscript_expression "apVal[ctx.iCol + 2]" identifier [ (binary_expression "ctx.iCol + 2" (field_expression "ctx.iCol" identifier . field_identifier) + number_literal) ]) )))) ;) (if_statement "if (puVar8 == (uchar *)0x0) {\n              rc = 0;\n            }\n            else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }" if (parenthesized_expression "(puVar8 == (uchar *)0x0)" ( (binary_expression "puVar8 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              rc = 0;\n            }" { (expression_statement "rc = 0;" (assignment_expression "rc = 0" identifier = number_literal) ;) }) (else_clause "else {\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }" else (compound_statement "{\n              rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);\n            }" { (expression_statement "rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback);" (assignment_expression "rc = (*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback)" identifier = (call_expression "(*pFVar5->pTokApi->xTokenize)\n                             (pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback)" (parenthesized_expression "(*pFVar5->pTokApi->xTokenize)" ( (pointer_expression "*pFVar5->pTokApi->xTokenize" * (field_expression "pFVar5->pTokApi->xTokenize" (field_expression "pFVar5->pTokApi" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pFVar5->pTok,&ctx,4,(char *)puVar8,iVar9,fts5StorageInsertCallback)" ( (field_expression "pFVar5->pTok" identifier -> field_identifier) , (pointer_expression "&ctx" & identifier) , number_literal , (cast_expression "(char *)puVar8" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier )))) ;) }))) (expression_statement "iVar9 = ctx.szCol >> 0x1f;" (assignment_expression "iVar9 = ctx.szCol >> 0x1f" identifier = (binary_expression "ctx.szCol >> 0x1f" (field_expression "ctx.szCol" identifier . field_identifier) >> number_literal)) ;) })) (expression_statement "sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol));" (call_expression "sqlite3Fts5BufferAppendVarint(&rc,&buf,CONCAT44(iVar9,ctx.szCol))" identifier (argument_list "(&rc,&buf,CONCAT44(iVar9,ctx.szCol))" ( (pointer_expression "&rc" & identifier) , (pointer_expression "&buf" & identifier) , (call_expression "CONCAT44(iVar9,ctx.szCol)" identifier (argument_list "(iVar9,ctx.szCol)" ( identifier , (field_expression "ctx.szCol" identifier . field_identifier) ))) ))) ;) (expression_statement "piVar6 = p->aTotalSize;" (assignment_expression "piVar6 = p->aTotalSize" identifier = (field_expression "p->aTotalSize" identifier -> field_identifier)) ;) (expression_statement "puVar1 = (uint *)(piVar6 + ctx.iCol);" (assignment_expression "puVar1 = (uint *)(piVar6 + ctx.iCol)" identifier = (cast_expression "(uint *)(piVar6 + ctx.iCol)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6 + ctx.iCol)" ( (binary_expression "piVar6 + ctx.iCol" identifier + (field_expression "ctx.iCol" identifier . field_identifier)) )))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + ctx.szCol;" (assignment_expression "*puVar1 = *puVar1 + ctx.szCol" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + ctx.szCol" (pointer_expression "*puVar1" * identifier) + (field_expression "ctx.szCol" identifier . field_identifier))) ;) (expression_statement "piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4);" (assignment_expression "piVar2 = (int *)((int)piVar6 + ctx.iCol * 8 + 4)" identifier = (cast_expression "(int *)((int)piVar6 + ctx.iCol * 8 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar6 + ctx.iCol * 8 + 4)" ( (binary_expression "(int)piVar6 + ctx.iCol * 8 + 4" (binary_expression "(int)piVar6 + ctx.iCol * 8" (cast_expression "(int)piVar6" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "ctx.iCol * 8" (field_expression "ctx.iCol" identifier . field_identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol);" (assignment_expression "*piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol)" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + (ctx.szCol >> 0x1f) + (uint)CARRY4(uVar3,ctx.szCol)" (binary_expression "*piVar2 + (ctx.szCol >> 0x1f)" (pointer_expression "*piVar2" * identifier) + (parenthesized_expression "(ctx.szCol >> 0x1f)" ( (binary_expression "ctx.szCol >> 0x1f" (field_expression "ctx.szCol" identifier . field_identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar3,ctx.szCol)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar3,ctx.szCol)" identifier (argument_list "(uVar3,ctx.szCol)" ( identifier , (field_expression "ctx.szCol" identifier . field_identifier) )))))) ;) (expression_statement "ctx.iCol = ctx.iCol + 1;" (assignment_expression "ctx.iCol = ctx.iCol + 1" (field_expression "ctx.iCol" identifier . field_identifier) = (binary_expression "ctx.iCol + 1" (field_expression "ctx.iCol" identifier . field_identifier) + number_literal)) ;) (if_statement "if (rc != 0) goto LAB_000dff90;" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (goto_statement "goto LAB_000dff90;" goto statement_identifier ;)) (expression_statement "iVar9 = rc;" (assignment_expression "iVar9 = rc" identifier = identifier) ;) }) while (parenthesized_expression "(ctx.iCol < pFVar5->nCol)" ( (binary_expression "ctx.iCol < pFVar5->nCol" (field_expression "ctx.iCol" identifier . field_identifier) < (field_expression "pFVar5->nCol" identifier -> field_identifier)) )) ;) })) (expression_statement "rc = iVar9;" (assignment_expression "rc = iVar9" identifier = identifier) ;) (expression_statement "pFVar5 = p->pConfig;" (assignment_expression "pFVar5 = p->pConfig" identifier = (field_expression "p->pConfig" identifier -> field_identifier)) ;) (expression_statement "piVar6 = &p->nTotalRow;" (assignment_expression "piVar6 = &p->nTotalRow" identifier = (pointer_expression "&p->nTotalRow" & (field_expression "p->nTotalRow" identifier -> field_identifier))) ;) (expression_statement "iVar7 = *piVar6;" (assignment_expression "iVar7 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*(int *)piVar6 = (int)*piVar6 + 1;" (assignment_expression "*(int *)piVar6 = (int)*piVar6 + 1" (pointer_expression "*(int *)piVar6" * (cast_expression "(int *)piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(int)*piVar6 + 1" (cast_expression "(int)*piVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*piVar6" * identifier)) + number_literal)) ;) (expression_statement "piVar2 = (int *)((int)&p->nTotalRow + 4);" (assignment_expression "piVar2 = (int *)((int)&p->nTotalRow + 4)" identifier = (cast_expression "(int *)((int)&p->nTotalRow + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p->nTotalRow + 4)" ( (binary_expression "(int)&p->nTotalRow + 4" (cast_expression "(int)&p->nTotalRow" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p->nTotalRow" & (field_expression "p->nTotalRow" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);" (assignment_expression "*piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7)" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + (uint)(0xfffffffe < (uint)iVar7)" (pointer_expression "*piVar2" * identifier) + (call_expression "(uint)(0xfffffffe < (uint)iVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < (uint)iVar7)" ( (binary_expression "0xfffffffe < (uint)iVar7" number_literal < (cast_expression "(uint)iVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) ;) (if_statement "if (pFVar5->bColumnsize == 0) {\n        rc = 0;\n      }\n      else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }" if (parenthesized_expression "(pFVar5->bColumnsize == 0)" ( (binary_expression "pFVar5->bColumnsize == 0" (field_expression "pFVar5->bColumnsize" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        rc = 0;\n      }" { (expression_statement "rc = 0;" (assignment_expression "rc = 0" identifier = number_literal) ;) }) (else_clause "else {\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }" else (compound_statement "{\n        rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);\n      }" { (expression_statement "rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_);" (assignment_expression "rc = fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_)" identifier = (call_expression "fts5StorageInsertDocsize(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_)" identifier (argument_list "(p,CONCAT44(&buf.n,&buf),(Fts5Buffer *)iRowid,iRowid._4_4_)" ( identifier , (call_expression "CONCAT44(&buf.n,&buf)" identifier (argument_list "(&buf.n,&buf)" ( (pointer_expression "&buf.n" & (field_expression "buf.n" identifier . field_identifier)) , (pointer_expression "&buf" & identifier) ))) , (cast_expression "(Fts5Buffer *)iRowid" ( (type_descriptor "Fts5Buffer *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "iRowid._4_4_" identifier . field_identifier) )))) ;) }))) (goto_statement "goto LAB_000dff98;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000dff90:\n  piVar6 = &p->nTotalRow;" statement_identifier : (expression_statement "piVar6 = &p->nTotalRow;" (assignment_expression "piVar6 = &p->nTotalRow" identifier = (pointer_expression "&p->nTotalRow" & (field_expression "p->nTotalRow" identifier -> field_identifier))) ;)) (expression_statement "iVar7 = *piVar6;" (assignment_expression "iVar7 = *piVar6" identifier = (pointer_expression "*piVar6" * identifier)) ;) (expression_statement "*(int *)piVar6 = (int)*piVar6 + 1;" (assignment_expression "*(int *)piVar6 = (int)*piVar6 + 1" (pointer_expression "*(int *)piVar6" * (cast_expression "(int *)piVar6" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(int)*piVar6 + 1" (cast_expression "(int)*piVar6" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*piVar6" * identifier)) + number_literal)) ;) (expression_statement "piVar2 = (int *)((int)&p->nTotalRow + 4);" (assignment_expression "piVar2 = (int *)((int)&p->nTotalRow + 4)" identifier = (cast_expression "(int *)((int)&p->nTotalRow + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&p->nTotalRow + 4)" ( (binary_expression "(int)&p->nTotalRow + 4" (cast_expression "(int)&p->nTotalRow" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&p->nTotalRow" & (field_expression "p->nTotalRow" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "*piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7);" (assignment_expression "*piVar2 = *piVar2 + (uint)(0xfffffffe < (uint)iVar7)" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + (uint)(0xfffffffe < (uint)iVar7)" (pointer_expression "*piVar2" * identifier) + (call_expression "(uint)(0xfffffffe < (uint)iVar7)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < (uint)iVar7)" ( (binary_expression "0xfffffffe < (uint)iVar7" number_literal < (cast_expression "(uint)iVar7" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) ;) (labeled_statement "LAB_000dff98:\n  sqlite3_free(buf.p);" statement_identifier : (expression_statement "sqlite3_free(buf.p);" (call_expression "sqlite3_free(buf.p)" identifier (argument_list "(buf.p)" ( (field_expression "buf.p" identifier . field_identifier) ))) ;)) (if_statement "if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return rc;\n  }" if (parenthesized_expression "(iVar4 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar4 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return rc;\n  }" { (return_statement "return rc;" return identifier ;) })) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "int __regparm2 FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_3c;\n}\n\n" (function_definition "int __regparm2 FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_3c;\n}" primitive_type (ERROR "__regparm2" identifier) (function_declarator "FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)" identifier (parameter_list "(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "undefined4 param_4" type_identifier identifier) ))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_3c;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "int local_34;" primitive_type identifier ;) (declaration "uint local_30;" type_identifier identifier ;) (declaration "undefined4 local_2c;" type_identifier identifier ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined4 local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0xdfdfb;" (assignment_expression "uStack_14 = 0xdfdfb" identifier = number_literal) ;) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" identifier = number_literal) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) (expression_statement "local_38 = param_1;" (assignment_expression "local_38 = param_1" identifier = identifier) ;) (if_statement "if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" if (parenthesized_expression "((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0))" ( (binary_expression "(param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)" (parenthesized_expression "(param_1[2] == 0)" ( (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) == number_literal) )) && (parenthesized_expression "(local_3c = FUN_000dfbf0(), local_3c != 0)" ( (comma_expression "local_3c = FUN_000dfbf0(), local_3c != 0" (assignment_expression "local_3c = FUN_000dfbf0()" identifier = (call_expression "FUN_000dfbf0()" identifier (argument_list "()" ( )))) , (binary_expression "local_3c != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    local_34 = 0;\n  }" { (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" else (compound_statement "{\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" { (expression_statement "local_3c = FUN_000dfa60(param_3,param_4);" (assignment_expression "local_3c = FUN_000dfa60(param_3,param_4)" identifier = (call_expression "FUN_000dfa60(param_3,param_4)" identifier (argument_list "(param_3,param_4)" ( identifier , identifier )))) ;) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" identifier = number_literal) ;) (if_statement "if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }" { (if_statement "if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }" if (parenthesized_expression "(0 < *(int *)(iVar4 + 0xc))" ( (binary_expression "0 < *(int *)(iVar4 + 0xc)" number_literal < (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) )) (compound_statement "{\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }" { (do_statement "do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));" do (compound_statement "{\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        }" { (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }" if (parenthesized_expression "(*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0')" ( (binary_expression "*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar4 + 0x14) + local_34)" * (cast_expression "(char *)(*(int *)(iVar4 + 0x14) + local_34)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar4 + 0x14) + local_34)" ( (binary_expression "*(int *)(iVar4 + 0x14) + local_34" (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) )))) + identifier) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }" { (expression_statement "uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));" (assignment_expression "uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier = (call_expression "FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier (argument_list "(*(undefined4 *)(param_2 + 8 + local_34 * 4))" ( (pointer_expression "*(undefined4 *)(param_2 + 8 + local_34 * 4)" * (cast_expression "(undefined4 *)(param_2 + 8 + local_34 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8 + local_34 * 4)" ( (binary_expression "param_2 + 8 + local_34 * 4" (binary_expression "param_2 + 8" identifier + number_literal) + (binary_expression "local_34 * 4" identifier * number_literal)) )))) )))) ;) (expression_statement "iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));" (assignment_expression "iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier = (call_expression "FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4))" identifier (argument_list "(*(undefined4 *)(param_2 + 8 + local_34 * 4))" ( (pointer_expression "*(undefined4 *)(param_2 + 8 + local_34 * 4)" * (cast_expression "(undefined4 *)(param_2 + 8 + local_34 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8 + local_34 * 4)" ( (binary_expression "param_2 + 8 + local_34 * 4" (binary_expression "param_2 + 8" identifier + number_literal) + (binary_expression "local_34 * 4" identifier * number_literal)) )))) )))) ;) (if_statement "if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n              local_3c = 0;\n            }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) }) (else_clause "else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" else (compound_statement "{\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" { (expression_statement "local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);" (assignment_expression "local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" identifier = (call_expression "(**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 0x3c) + 8))" ( (pointer_expression "**(code **)(*(int *)(iVar4 + 0x3c) + 8)" * (pointer_expression "*(code **)(*(int *)(iVar4 + 0x3c) + 8)" * (cast_expression "(code **)(*(int *)(iVar4 + 0x3c) + 8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar4 + 0x3c) + 8)" ( (binary_expression "*(int *)(iVar4 + 0x3c) + 8" (pointer_expression "*(int *)(iVar4 + 0x3c)" * (cast_expression "(int *)(iVar4 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x3c)" ( (binary_expression "iVar4 + 0x3c" identifier + number_literal) )))) + number_literal) ))))) )) (argument_list "(*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" ( (pointer_expression "*(undefined4 *)(iVar4 + 0x38)" * (cast_expression "(undefined4 *)(iVar4 + 0x38)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x38)" ( (binary_expression "iVar4 + 0x38" identifier + number_literal) )))) , (pointer_expression "&local_38" & identifier) , number_literal , identifier , identifier , identifier )))) ;) }))) (expression_statement "iVar6 = (int)local_30 >> 0x1f;" (assignment_expression "iVar6 = (int)local_30 >> 0x1f" identifier = (binary_expression "(int)local_30 >> 0x1f" (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) })) (expression_statement "FUN_0006a320(local_30,iVar6);" (call_expression "FUN_0006a320(local_30,iVar6)" identifier (argument_list "(local_30,iVar6)" ( identifier , identifier ))) ;) (expression_statement "iVar6 = param_1[5];" (assignment_expression "iVar6 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar1 = (uint *)(iVar6 + local_34 * 8);" (assignment_expression "puVar1 = (uint *)(iVar6 + local_34 * 8)" identifier = (cast_expression "(uint *)(iVar6 + local_34 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + local_34 * 8)" ( (binary_expression "iVar6 + local_34 * 8" identifier + (binary_expression "local_34 * 8" identifier * number_literal)) )))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + local_30;" (assignment_expression "*puVar1 = *puVar1 + local_30" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + local_30" (pointer_expression "*puVar1" * identifier) + identifier)) ;) (expression_statement "piVar2 = (int *)(iVar6 + 4 + local_34 * 8);" (assignment_expression "piVar2 = (int *)(iVar6 + 4 + local_34 * 8)" identifier = (cast_expression "(int *)(iVar6 + 4 + local_34 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 4 + local_34 * 8)" ( (binary_expression "iVar6 + 4 + local_34 * 8" (binary_expression "iVar6 + 4" identifier + number_literal) + (binary_expression "local_34 * 8" identifier * number_literal)) )))) ;) (expression_statement "*piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);" (assignment_expression "*piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30)" (pointer_expression "*piVar2" * identifier) = (binary_expression "*piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30)" (binary_expression "*piVar2 + ((int)local_30 >> 0x1f)" (pointer_expression "*piVar2" * identifier) + (parenthesized_expression "((int)local_30 >> 0x1f)" ( (binary_expression "(int)local_30 >> 0x1f" (cast_expression "(int)local_30" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) + (cast_expression "(uint)CARRY4(uVar3,local_30)" ( (type_descriptor "uint" type_identifier) ) (call_expression "CARRY4(uVar3,local_30)" identifier (argument_list "(uVar3,local_30)" ( identifier , identifier )))))) ;) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" identifier = (binary_expression "local_34 + 1" identifier + number_literal)) ;) (if_statement "if (local_3c != 0) goto LAB_000dff90;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_000dff90;" goto statement_identifier ;)) }) while (parenthesized_expression "(local_34 < *(int *)(iVar4 + 0xc))" ( (binary_expression "local_34 < *(int *)(iVar4 + 0xc)" identifier < (pointer_expression "*(int *)(iVar4 + 0xc)" * (cast_expression "(int *)(iVar4 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xc)" ( (binary_expression "iVar4 + 0xc" identifier + number_literal) ))))) )) ;) })) (expression_statement "puVar1 = (uint *)(param_1 + 3);" (assignment_expression "puVar1 = (uint *)(param_1 + 3)" identifier = (cast_expression "(uint *)(param_1 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) ;) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);" (assignment_expression "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (call_expression "(uint)(0xfffffffe < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar3)" ( (binary_expression "0xfffffffe < uVar3" number_literal < identifier) ))))) ;) (if_statement "if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" if (parenthesized_expression "(*(int *)(*param_1 + 0x2c) == 0)" ( (binary_expression "*(int *)(*param_1 + 0x2c) == 0" (pointer_expression "*(int *)(*param_1 + 0x2c)" * (cast_expression "(int *)(*param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x2c)" ( (binary_expression "*param_1 + 0x2c" (pointer_expression "*param_1" * identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_3c = 0;\n      }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) }) (else_clause "else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" else (compound_statement "{\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" { (expression_statement "local_3c = FUN_000cd970(&local_2c,&local_28);" (assignment_expression "local_3c = FUN_000cd970(&local_2c,&local_28)" identifier = (call_expression "FUN_000cd970(&local_2c,&local_28)" identifier (argument_list "(&local_2c,&local_28)" ( (pointer_expression "&local_2c" & identifier) , (pointer_expression "&local_28" & identifier) )))) ;) }))) (goto_statement "goto LAB_000dff98;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);" statement_identifier : (expression_statement "puVar1 = (uint *)(param_1 + 3);" (assignment_expression "puVar1 = (uint *)(param_1 + 3)" identifier = (cast_expression "(uint *)(param_1 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 3)" ( (binary_expression "param_1 + 3" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" identifier = (pointer_expression "*puVar1" * identifier)) ;) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" * identifier) + number_literal)) ;) (expression_statement "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);" (assignment_expression "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) = (binary_expression "param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" identifier [ number_literal ]) + (call_expression "(uint)(0xfffffffe < uVar3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xfffffffe < uVar3)" ( (binary_expression "0xfffffffe < uVar3" number_literal < identifier) ))))) ;) (labeled_statement "LAB_000dff98:\n  FUN_000264d0(local_2c);" statement_identifier : (expression_statement "FUN_000264d0(local_2c);" (call_expression "FUN_000264d0(local_2c)" identifier (argument_list "(local_2c)" ( identifier ))) ;)) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" if (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" identifier != (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" { (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return local_3c;" return identifier ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) , LIT , IDENT , IDENT , IDENT )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (binary_expression (pointer_expression * IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) + (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( IDENT , IDENT )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (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) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression & IDENT) )))) ;) }))) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "int __regparm2 FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)\n\n{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_3c;\n}" (primitive_type "int") (ERROR "__regparm2" (identifier "__regparm2")) (function_declarator "FUN_000dfdf0(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)" (identifier "FUN_000dfdf0") (parameter_list "(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")"))) (compound_statement "{\n  uint *puVar1;\n  int *piVar2;\n  uint uVar3;\n  int iVar4;\n  undefined4 uVar5;\n  int iVar6;\n  int in_GS_OFFSET;\n  int local_3c;\n  int *local_38;\n  int local_34;\n  uint local_30;\n  undefined4 local_2c;\n  undefined4 local_28;\n  undefined4 local_24;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0xdfdfb;\n  iVar4 = *param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  local_2c = 0;\n  local_28 = 0;\n  local_24 = 0;\n  local_38 = param_1;\n  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }\nLAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);\n  uVar3 = *puVar1;\n  *puVar1 = *puVar1 + 1;\n  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\nLAB_000dff98:\n  FUN_000264d0(local_2c);\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }\n  return local_3c;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "int local_34;" (primitive_type "int") (identifier "local_34") (; ";")) (declaration "uint local_30;" (type_identifier "uint") (identifier "local_30") (; ";")) (declaration "undefined4 local_2c;" (type_identifier "undefined4") (identifier "local_2c") (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined4 local_24;" (type_identifier "undefined4") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0xdfdfb;" (assignment_expression "uStack_14 = 0xdfdfb" (identifier "uStack_14") (= "=") (number_literal "0xdfdfb")) (; ";")) (expression_statement "iVar4 = *param_1;" (assignment_expression "iVar4 = *param_1" (identifier "iVar4") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "local_2c = 0;" (assignment_expression "local_2c = 0" (identifier "local_2c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_38 = param_1;" (assignment_expression "local_38 = param_1" (identifier "local_38") (= "=") (identifier "param_1")) (; ";")) (if_statement "if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {\n    local_34 = 0;\n  }\n  else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" (if "if") (parenthesized_expression "((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0))" (( "(") (binary_expression "(param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)" (parenthesized_expression "(param_1[2] == 0)" (( "(") (binary_expression "param_1[2] == 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_3c = FUN_000dfbf0(), local_3c != 0)" (( "(") (comma_expression "local_3c = FUN_000dfbf0(), local_3c != 0" (assignment_expression "local_3c = FUN_000dfbf0()" (identifier "local_3c") (= "=") (call_expression "FUN_000dfbf0()" (identifier "FUN_000dfbf0") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    local_34 = 0;\n  }" ({ "{") (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" (else "else") (compound_statement "{\n    local_3c = FUN_000dfa60(param_3,param_4);\n    local_34 = 0;\n    if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }\n  }" ({ "{") (expression_statement "local_3c = FUN_000dfa60(param_3,param_4);" (assignment_expression "local_3c = FUN_000dfa60(param_3,param_4)" (identifier "local_3c") (= "=") (call_expression "FUN_000dfa60(param_3,param_4)" (identifier "FUN_000dfa60") (argument_list "(param_3,param_4)" (( "(") (identifier "param_3") (, ",") (identifier "param_4") () ")")))) (; ";")) (expression_statement "local_34 = 0;" (assignment_expression "local_34 = 0" (identifier "local_34") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_3c == 0) {\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }" (if "if") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }\n      puVar1 = (uint *)(param_1 + 3);\n      uVar3 = *puVar1;\n      *puVar1 = *puVar1 + 1;\n      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);\n      if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }\n      goto LAB_000dff98;\n    }" ({ "{") (if_statement "if (0 < *(int *)(iVar4 + 0xc)) {\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }" (if "if") (parenthesized_expression "(0 < *(int *)(iVar4 + 0xc))" (( "(") (binary_expression "0 < *(int *)(iVar4 + 0xc)" (number_literal "0") (< "<") (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (compound_statement "{\n        do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));\n      }" ({ "{") (do_statement "do {\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        } while (local_34 < *(int *)(iVar4 + 0xc));" (do "do") (compound_statement "{\n          local_30 = 0;\n          iVar6 = 0;\n          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }\n          FUN_0006a320(local_30,iVar6);\n          iVar6 = param_1[5];\n          puVar1 = (uint *)(iVar6 + local_34 * 8);\n          uVar3 = *puVar1;\n          *puVar1 = *puVar1 + local_30;\n          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);\n          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);\n          local_34 = local_34 + 1;\n          if (local_3c != 0) goto LAB_000dff90;\n        }" ({ "{") (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" (identifier "iVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0')" (( "(") (binary_expression "*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0'" (pointer_expression "*(char *)(*(int *)(iVar4 + 0x14) + local_34)" (* "*") (cast_expression "(char *)(*(int *)(iVar4 + 0x14) + local_34)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0x14) + local_34)" (( "(") (binary_expression "*(int *)(iVar4 + 0x14) + local_34" (pointer_expression "*(int *)(iVar4 + 0x14)" (* "*") (cast_expression "(int *)(iVar4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (identifier "local_34")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));\n            if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }\n            iVar6 = (int)local_30 >> 0x1f;\n          }" ({ "{") (expression_statement "uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));" (assignment_expression "uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4))" (identifier "uVar5") (= "=") (call_expression "FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4))" (identifier "FUN_0004e4c0") (argument_list "(*(undefined4 *)(param_2 + 8 + local_34 * 4))" (( "(") (pointer_expression "*(undefined4 *)(param_2 + 8 + local_34 * 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8 + local_34 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8 + local_34 * 4)" (( "(") (binary_expression "param_2 + 8 + local_34 * 4" (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) (+ "+") (binary_expression "local_34 * 4" (identifier "local_34") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (expression_statement "iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));" (assignment_expression "iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4))" (identifier "iVar6") (= "=") (call_expression "FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4))" (identifier "FUN_0004e670") (argument_list "(*(undefined4 *)(param_2 + 8 + local_34 * 4))" (( "(") (pointer_expression "*(undefined4 *)(param_2 + 8 + local_34 * 4)" (* "*") (cast_expression "(undefined4 *)(param_2 + 8 + local_34 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8 + local_34 * 4)" (( "(") (binary_expression "param_2 + 8 + local_34 * 4" (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) (+ "+") (binary_expression "local_34 * 4" (identifier "local_34") (* "*") (number_literal "4"))) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar6 == 0) {\n              local_3c = 0;\n            }\n            else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              local_3c = 0;\n            }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" (else "else") (compound_statement "{\n              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);\n            }" ({ "{") (expression_statement "local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900);" (assignment_expression "local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" (identifier "local_3c") (= "=") (call_expression "(**(code **)(*(int *)(iVar4 + 0x3c) + 8))\n                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" (parenthesized_expression "(**(code **)(*(int *)(iVar4 + 0x3c) + 8))" (( "(") (pointer_expression "**(code **)(*(int *)(iVar4 + 0x3c) + 8)" (* "*") (pointer_expression "*(code **)(*(int *)(iVar4 + 0x3c) + 8)" (* "*") (cast_expression "(code **)(*(int *)(iVar4 + 0x3c) + 8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar4 + 0x3c) + 8)" (( "(") (binary_expression "*(int *)(iVar4 + 0x3c) + 8" (pointer_expression "*(int *)(iVar4 + 0x3c)" (* "*") (cast_expression "(int *)(iVar4 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x3c)" (( "(") (binary_expression "iVar4 + 0x3c" (identifier "iVar4") (+ "+") (number_literal "0x3c")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,\n                                    FUN_0006b900)" (( "(") (pointer_expression "*(undefined4 *)(iVar4 + 0x38)" (* "*") (cast_expression "(undefined4 *)(iVar4 + 0x38)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x38)" (( "(") (binary_expression "iVar4 + 0x38" (identifier "iVar4") (+ "+") (number_literal "0x38")) () ")")))) (, ",") (pointer_expression "&local_38" (& "&") (identifier "local_38")) (, ",") (number_literal "4") (, ",") (identifier "iVar6") (, ",") (identifier "uVar5") (, ",") (identifier "FUN_0006b900") () ")")))) (; ";")) (} "}")))) (expression_statement "iVar6 = (int)local_30 >> 0x1f;" (assignment_expression "iVar6 = (int)local_30 >> 0x1f" (identifier "iVar6") (= "=") (binary_expression "(int)local_30 >> 0x1f" (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30")) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}"))) (expression_statement "FUN_0006a320(local_30,iVar6);" (call_expression "FUN_0006a320(local_30,iVar6)" (identifier "FUN_0006a320") (argument_list "(local_30,iVar6)" (( "(") (identifier "local_30") (, ",") (identifier "iVar6") () ")"))) (; ";")) (expression_statement "iVar6 = param_1[5];" (assignment_expression "iVar6 = param_1[5]" (identifier "iVar6") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar1 = (uint *)(iVar6 + local_34 * 8);" (assignment_expression "puVar1 = (uint *)(iVar6 + local_34 * 8)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(iVar6 + local_34 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + local_34 * 8)" (( "(") (binary_expression "iVar6 + local_34 * 8" (identifier "iVar6") (+ "+") (binary_expression "local_34 * 8" (identifier "local_34") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" (identifier "uVar3") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = *puVar1 + local_30;" (assignment_expression "*puVar1 = *puVar1 + local_30" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 + local_30" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (+ "+") (identifier "local_30"))) (; ";")) (expression_statement "piVar2 = (int *)(iVar6 + 4 + local_34 * 8);" (assignment_expression "piVar2 = (int *)(iVar6 + 4 + local_34 * 8)" (identifier "piVar2") (= "=") (cast_expression "(int *)(iVar6 + 4 + local_34 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 4 + local_34 * 8)" (( "(") (binary_expression "iVar6 + 4 + local_34 * 8" (binary_expression "iVar6 + 4" (identifier "iVar6") (+ "+") (number_literal "4")) (+ "+") (binary_expression "local_34 * 8" (identifier "local_34") (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "*piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);" (assignment_expression "*piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30)" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (= "=") (binary_expression "*piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30)" (binary_expression "*piVar2 + ((int)local_30 >> 0x1f)" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (parenthesized_expression "((int)local_30 >> 0x1f)" (( "(") (binary_expression "(int)local_30 >> 0x1f" (cast_expression "(int)local_30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_30")) (>> ">>") (number_literal "0x1f")) () ")"))) (+ "+") (cast_expression "(uint)CARRY4(uVar3,local_30)" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (call_expression "CARRY4(uVar3,local_30)" (identifier "CARRY4") (argument_list "(uVar3,local_30)" (( "(") (identifier "uVar3") (, ",") (identifier "local_30") () ")")))))) (; ";")) (expression_statement "local_34 = local_34 + 1;" (assignment_expression "local_34 = local_34 + 1" (identifier "local_34") (= "=") (binary_expression "local_34 + 1" (identifier "local_34") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_3c != 0) goto LAB_000dff90;" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000dff90;" (goto "goto") (statement_identifier "LAB_000dff90") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(local_34 < *(int *)(iVar4 + 0xc))" (( "(") (binary_expression "local_34 < *(int *)(iVar4 + 0xc)" (identifier "local_34") (< "<") (pointer_expression "*(int *)(iVar4 + 0xc)" (* "*") (cast_expression "(int *)(iVar4 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0xc)" (( "(") (binary_expression "iVar4 + 0xc" (identifier "iVar4") (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "puVar1 = (uint *)(param_1 + 3);" (assignment_expression "puVar1 = (uint *)(param_1 + 3)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(param_1 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (; ";")) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" (identifier "uVar3") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);" (assignment_expression "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (call_expression "(uint)(0xfffffffe < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffe < uVar3)" (( "(") (binary_expression "0xfffffffe < uVar3" (number_literal "0xfffffffe") (< "<") (identifier "uVar3")) () ")"))))) (; ";")) (if_statement "if (*(int *)(*param_1 + 0x2c) == 0) {\n        local_3c = 0;\n      }\n      else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" (if "if") (parenthesized_expression "(*(int *)(*param_1 + 0x2c) == 0)" (( "(") (binary_expression "*(int *)(*param_1 + 0x2c) == 0" (pointer_expression "*(int *)(*param_1 + 0x2c)" (* "*") (cast_expression "(int *)(*param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x2c)" (( "(") (binary_expression "*param_1 + 0x2c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x2c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_3c = 0;\n      }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" (else "else") (compound_statement "{\n        local_3c = FUN_000cd970(&local_2c,&local_28);\n      }" ({ "{") (expression_statement "local_3c = FUN_000cd970(&local_2c,&local_28);" (assignment_expression "local_3c = FUN_000cd970(&local_2c,&local_28)" (identifier "local_3c") (= "=") (call_expression "FUN_000cd970(&local_2c,&local_28)" (identifier "FUN_000cd970") (argument_list "(&local_2c,&local_28)" (( "(") (pointer_expression "&local_2c" (& "&") (identifier "local_2c")) (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_000dff98;" (goto "goto") (statement_identifier "LAB_000dff98") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000dff90:\n  puVar1 = (uint *)(param_1 + 3);" (statement_identifier "LAB_000dff90") (: ":") (expression_statement "puVar1 = (uint *)(param_1 + 3);" (assignment_expression "puVar1 = (uint *)(param_1 + 3)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(param_1 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 3)" (( "(") (binary_expression "param_1 + 3" (identifier "param_1") (+ "+") (number_literal "3")) () ")")))) (; ";"))) (expression_statement "uVar3 = *puVar1;" (assignment_expression "uVar3 = *puVar1" (identifier "uVar3") (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (expression_statement "*puVar1 = *puVar1 + 1;" (assignment_expression "*puVar1 = *puVar1 + 1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (binary_expression "*puVar1 + 1" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);" (assignment_expression "param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (= "=") (binary_expression "param_1[4] + (uint)(0xfffffffe < uVar3)" (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")) (+ "+") (call_expression "(uint)(0xfffffffe < uVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xfffffffe < uVar3)" (( "(") (binary_expression "0xfffffffe < uVar3" (number_literal "0xfffffffe") (< "<") (identifier "uVar3")) () ")"))))) (; ";")) (labeled_statement "LAB_000dff98:\n  FUN_000264d0(local_2c);" (statement_identifier "LAB_000dff98") (: ":") (expression_statement "FUN_000264d0(local_2c);" (call_expression "FUN_000264d0(local_2c)" (identifier "FUN_000264d0") (argument_list "(local_2c)" (( "(") (identifier "local_2c") () ")"))) (; ";"))) (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    \n    FUN_000f6410();\n  }" (if "if") (parenthesized_expression "(local_20 != *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 != *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (!= "!=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n                    \n    FUN_000f6410();\n  }" ({ "{") (expression_statement "FUN_000f6410();" (call_expression "FUN_000f6410()" (identifier "FUN_000f6410") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return local_3c;" (return "return") (identifier "local_3c") (; ";")) (} "}")))

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

int __regparm2 function_1(type_1 *p,type_2 **apVal,type_3 iRowid)

{
  type_4 *puVar1;
  int *piVar2;
  type_4 uVar3;
  int var_14;
  type_5 *pFVar5;
  type_3 *var_10;
  type_3 iVar7;
  type_6 *var_7;
  int iVar9;
  int var_1;
  int var_3;
  type_7 ctx;
  type_8 buf;
  
  pFVar5 = p->pConfig;
  var_14 = *(int *)(var_1 + 0x14);
  var_3 = 0;
  buf.p = (type_9 *)0x0;
  buf.n = 0;
  buf.nSpace = 0;
  ctx.pStorage = p;
  if (p->bTotalsValid == 0) {
    var_3 = var_2(p,1);
    if (var_3 == 0) goto LAB_000dfe55;
    ctx.iCol = 0;
  }
  else {
LAB_000dfe55:
    var_3 = var_4(p->pIndex,0,iRowid);
    ctx.iCol = 0;
    if (var_3 == 0) {
      iVar9 = 0;
      if (0 < pFVar5->nCol) {
        do {
          ctx.szCol = 0;
          iVar9 = 0;
          if (pFVar5->abUnindexed[ctx.iCol] == '\0') {
            iVar9 = var_5(apVal[ctx.iCol + 2]);
            var_7 = var_6(apVal[ctx.iCol + 2]);
            if (var_7 == (type_6 *)0x0) {
              var_3 = 0;
            }
            else {
              var_3 = (*pFVar5->pTokApi->xTokenize)
                             (pFVar5->pTok,&ctx,4,(char *)var_7,iVar9,fts5StorageInsertCallback);
            }
            iVar9 = ctx.szCol >> 0x1f;
          }
          var_8(&var_3,&buf,var_9(iVar9,ctx.szCol));
          var_10 = p->aTotalSize;
          puVar1 = (type_4 *)(var_10 + ctx.iCol);
          uVar3 = *puVar1;
          *puVar1 = *puVar1 + ctx.szCol;
          piVar2 = (int *)((int)var_10 + ctx.iCol * 8 + 4);
          *piVar2 = *piVar2 + (ctx.szCol >> 0x1f) + (type_4)var_11(uVar3,ctx.szCol);
          ctx.iCol = ctx.iCol + 1;
          if (var_3 != 0) goto LAB_000dff90;
          iVar9 = var_3;
        } while (ctx.iCol < pFVar5->nCol);
      }
      var_3 = iVar9;
      pFVar5 = p->pConfig;
      var_10 = &p->nTotalRow;
      iVar7 = *var_10;
      *(int *)var_10 = (int)*var_10 + 1;
      piVar2 = (int *)((int)&p->nTotalRow + 4);
      *piVar2 = *piVar2 + (type_4)(0xfffffffe < (type_4)iVar7);
      if (pFVar5->bColumnsize == 0) {
        var_3 = 0;
      }
      else {
        var_3 = var_12(p,var_9(&buf.n,&buf),(type_8 *)iRowid,iRowid._4_4_);
      }
      goto LAB_000dff98;
    }
  }
LAB_000dff90:
  var_10 = &p->nTotalRow;
  iVar7 = *var_10;
  *(int *)var_10 = (int)*var_10 + 1;
  piVar2 = (int *)((int)&p->nTotalRow + 4);
  *piVar2 = *piVar2 + (type_4)(0xfffffffe < (type_4)iVar7);
LAB_000dff98:
  var_13(buf.p);
  if (var_14 == *(int *)(var_1 + 0x14)) {
    return var_3;
  }
                    /* WARNING: Subroutine does not return */
  var_15();
}


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

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

int __regparm2 MASKED(int *param_1,int param_2,undefined4 param_3,undefined4 param_4)

{
  uint *puVar1;
  int *piVar2;
  uint uVar3;
  int iVar4;
  undefined4 uVar5;
  int iVar6;
  int in_GS_OFFSET;
  int local_3c;
  int *local_38;
  int local_34;
  uint local_30;
  undefined4 local_2c;
  undefined4 local_28;
  undefined4 local_24;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0xdfdfb;
  iVar4 = *param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  local_2c = 0;
  local_28 = 0;
  local_24 = 0;
  local_38 = param_1;
  if ((param_1[2] == 0) && (local_3c = FUN_000dfbf0(), local_3c != 0)) {
    local_34 = 0;
  }
  else {
    local_3c = FUN_000dfa60(param_3,param_4);
    local_34 = 0;
    if (local_3c == 0) {
      if (0 < *(int *)(iVar4 + 0xc)) {
        do {
          local_30 = 0;
          iVar6 = 0;
          if (*(char *)(*(int *)(iVar4 + 0x14) + local_34) == '\0') {
            uVar5 = FUN_0004e4c0(*(undefined4 *)(param_2 + 8 + local_34 * 4));
            iVar6 = FUN_0004e670(*(undefined4 *)(param_2 + 8 + local_34 * 4));
            if (iVar6 == 0) {
              local_3c = 0;
            }
            else {
              local_3c = (**(code **)(*(int *)(iVar4 + 0x3c) + 8))
                                   (*(undefined4 *)(iVar4 + 0x38),&local_38,4,iVar6,uVar5,
                                    FUN_0006b900);
            }
            iVar6 = (int)local_30 >> 0x1f;
          }
          FUN_0006a320(local_30,iVar6);
          iVar6 = param_1[5];
          puVar1 = (uint *)(iVar6 + local_34 * 8);
          uVar3 = *puVar1;
          *puVar1 = *puVar1 + local_30;
          piVar2 = (int *)(iVar6 + 4 + local_34 * 8);
          *piVar2 = *piVar2 + ((int)local_30 >> 0x1f) + (uint)CARRY4(uVar3,local_30);
          local_34 = local_34 + 1;
          if (local_3c != 0) goto LAB_000dff90;
        } while (local_34 < *(int *)(iVar4 + 0xc));
      }
      puVar1 = (uint *)(param_1 + 3);
      uVar3 = *puVar1;
      *puVar1 = *puVar1 + 1;
      param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);
      if (*(int *)(*param_1 + 0x2c) == 0) {
        local_3c = 0;
      }
      else {
        local_3c = FUN_000cd970(&local_2c,&local_28);
      }
      goto LAB_000dff98;
    }
  }
LAB_000dff90:
  puVar1 = (uint *)(param_1 + 3);
  uVar3 = *puVar1;
  *puVar1 = *puVar1 + 1;
  param_1[4] = param_1[4] + (uint)(0xfffffffe < uVar3);
LAB_000dff98:
  FUN_000264d0(local_2c);
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    FUN_000f6410();
  }
  return local_3c;
}

