
KeyInfo * multiSelectOrderByKeyInfo(Parse *pParse,Select *p,int nExtra)

{
  sqlite3 *psVar1;
  KeyInfo *pKVar2;
  code *pcVar3;
  code *pcVar4;
  CollSeq *pCVar5;
  u8 *puVar6;
  ExprList *pEVar7;
  ExprList_item *pEVar8;
  int iVar9;
  CollSeq **ppCVar10;
  Expr *pEVar11;
  int iVar12;
  
  pEVar7 = p->pOrderBy;
  psVar1 = pParse->db;
  iVar9 = pEVar7->nExpr;
  pKVar2 = (KeyInfo *)(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1);
  if ((pKVar2 != (KeyInfo *)0x0) && (0 < iVar9)) {
    iVar12 = 0;
    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);
    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);
    pEVar8 = pEVar7->a;
    ppCVar10 = pKVar2->aColl;
    do {
      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {
        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);
        if (pCVar5 == (CollSeq *)0x0) {
          pCVar5 = psVar1->pDfltColl;
        }
        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);
        pEVar8->pExpr = pEVar11;
        *ppCVar10 = pCVar5;
        puVar6 = pKVar2->aSortOrder + iVar12;
        iVar12 = iVar12 + 1;
        *puVar6 = pEVar8->sortOrder;
        pEVar8 = pEVar8 + 1;
        ppCVar10 = ppCVar10 + 1;
        if (iVar9 == iVar12) {
          return pKVar2;
        }
      }
      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);
      *ppCVar10 = pCVar5;
      puVar6 = pKVar2->aSortOrder + iVar12;
      iVar12 = iVar12 + 1;
      *puVar6 = pEVar8->sortOrder;
      pEVar8 = pEVar8 + 1;
      ppCVar10 = ppCVar10 + 1;
    } while (iVar9 != iVar12);
  }
  return pKVar2;
}



int FUN_0009b56c(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  code *pcVar3;
  code *pcVar4;
  undefined4 *puVar5;
  undefined1 *puVar6;
  int *piVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  
  piVar7 = *(int **)(param_2 + 0x30);
  iVar1 = *param_1;
  iVar8 = *piVar7;
  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);
  if ((iVar2 != 0) && (0 < iVar8)) {
    iVar11 = 0;
    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);
    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);
    piVar7 = piVar7 + 1;
    piVar9 = (int *)(iVar2 + 0x14);
    do {
      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {
        puVar5 = (undefined4 *)
                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),
                           *(ushort *)(piVar7 + 4) - 1);
        if (puVar5 == (undefined4 *)0x0) {
          puVar5 = *(undefined4 **)(iVar1 + 8);
        }
        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);
        *piVar7 = iVar10;
        *piVar9 = (int)puVar5;
        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);
        iVar11 = iVar11 + 1;
        *puVar6 = *(undefined1 *)(piVar7 + 3);
        piVar7 = piVar7 + 5;
        piVar9 = piVar9 + 1;
        if (iVar8 == iVar11) {
          return iVar2;
        }
      }
      iVar10 = FUN_00099d8c(param_1,iVar10);
      *piVar9 = iVar10;
      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);
      iVar11 = iVar11 + 1;
      *puVar6 = *(undefined1 *)(piVar7 + 3);
      piVar7 = piVar7 + 5;
      piVar9 = piVar9 + 1;
    } while (iVar8 != iVar11);
  }
  return iVar2;
}


lui gp,0x10
addiu gp,gp,-0x2c4c
addu gp,gp,t9
addiu sp,sp,-0x50
lw t9,-0x7d78(gp)
li a2,0x1
sw gp,0x10(sp)
addiu t9,t9,0x1dec
sw s3,0x34(sp)
sw s2,0x30(sp)
or s2,a1,zero
sw s1,0x2c(sp)
or s1,a0,zero
sw ra,0x4c(sp)
sw s8,0x48(sp)
sw s7,0x44(sp)
sw s6,0x40(sp)
sw s5,0x3c(sp)
sw s4,0x38(sp)
sw s0,0x28(sp)
lw s0,0x30(a1)
lw v0,0x0(a0)
lw s4,0x0(s0)
or a0,v0,zero
sw v0,0x24(sp)
jalr t9
_addiu a1,s4,0x1
lw gp,0x10(sp)
beq v0,zero,0x0009b6b8
_or s3,v0,zero
blez s4,0x0009b6b8
_lw s7,-0x7d5c(gp)
addiu s6,v0,0x14
addiu s0,s0,0x4
lw s5,-0x7d5c(gp)
or s8,zero,zero
addiu v0,s7,-0x58c4
sw v0,0x1c(sp)
lw v0,-0x7d68(gp)
addiu v0,v0,-0xc74
b 0x0009b644
_sw v0,0x20(sp)
or a1,s7,zero
bal 0x00099d8c
_addiu s6,s6,0x4
or s7,v0,zero
addiu s0,s0,0x14
sw s7,-0x4(s6)
lw v0,0x10(s3)
lbu a0,-0x8(s0)
addu v0,v0,s8
addiu s8,s8,0x1
beq s4,s8,0x0009b6b8
_sb a0,0x0(v0)
lw s7,0x0(s0)
or a1,s2,zero
or a0,s1,zero
lw v0,0x4(s7)
andi v0,v0,0x100
bne v0,zero,0x0009b614
_addiu t9,s5,-0x6274
lhu a3,0x10(s0)
lw a2,0x34(s2)
lw t9,0x1c(sp)
jalr t9
_addiu a3,a3,-0x1
or a1,s7,zero
or a0,s1,zero
beq v0,zero,0x0009b6ec
_or s7,v0,zero
lw a2,0x0(s7)
addiu s6,s6,0x4
lw t9,0x20(sp)
jalr t9
_addiu s0,s0,0x14
sw v0,-0x14(s0)
sw s7,-0x4(s6)
lw v0,0x10(s3)
lbu a0,-0x8(s0)
addu v0,v0,s8
addiu s8,s8,0x1
bne s4,s8,0x0009b644
_sb a0,0x0(v0)
lw ra,0x4c(sp)
or v0,s3,zero
lw s8,0x48(sp)
lw s7,0x44(sp)
lw s6,0x40(sp)
lw s5,0x3c(sp)
lw s4,0x38(sp)
lw s3,0x34(sp)
lw s2,0x30(sp)
lw s1,0x2c(sp)
lw s0,0x28(sp)
jr ra
_addiu sp,sp,0x50
lw v0,0x24(sp)
b 0x0009b684
_lw s7,0x8(v0)
(translation_unit "int FUN_0009b56c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}\n\n" (function_definition "int FUN_0009b56c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0009b56c(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (expression_statement "piVar7 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar7 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar8 = *piVar7;" (assignment_expression "iVar8 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);" (assignment_expression "iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x1dec)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x1dec)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x1dec)" ( (binary_expression "PTR_LAB_00190ba8 + 0x1dec" identifier + number_literal) )))) )) (argument_list "(iVar1,iVar8 + 1,1)" ( identifier , (binary_expression "iVar8 + 1" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }" if (parenthesized_expression "((iVar2 != 0) && (0 < iVar8))" ( (binary_expression "(iVar2 != 0) && (0 < iVar8)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) ))) )) (compound_statement "{\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4)" identifier = (cast_expression "(code *)(PTR_LAB_00190bc4 + -0x58c4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bc4 + -0x58c4)" ( (binary_expression "PTR_LAB_00190bc4 + -0x58c4" identifier + number_literal) )))) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74)" identifier = (cast_expression "(code *)(PTR_LAB_00190bb8 + -0xc74)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb8 + -0xc74)" ( (binary_expression "PTR_LAB_00190bb8 + -0xc74" identifier + number_literal) )))) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)(iVar2 + 0x14);" (assignment_expression "piVar9 = (int *)(iVar2 + 0x14)" identifier = (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) ;) (do_statement "do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);" do (compound_statement "{\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    }" { (while_statement "while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }" while (parenthesized_expression "(iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0)" ( (comma_expression "iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0" (assignment_expression "iVar10 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) , (binary_expression "(*(uint *)(iVar10 + 4) & 0x100) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 4) & 0x100)" ( (binary_expression "*(uint *)(iVar10 + 4) & 0x100" (pointer_expression "*(uint *)(iVar10 + 4)" * (cast_expression "(uint *)(iVar10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 4)" ( (binary_expression "iVar10 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }" { (expression_statement "puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);" (assignment_expression "puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" identifier = (cast_expression "(undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) , (binary_expression "*(ushort *)(piVar7 + 4) - 1" (pointer_expression "*(ushort *)(piVar7 + 4)" * (cast_expression "(ushort *)(piVar7 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))) - number_literal) ))))) ;) (if_statement "if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }" if (parenthesized_expression "(puVar5 == (undefined4 *)0x0)" ( (binary_expression "puVar5 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }" { (expression_statement "puVar5 = *(undefined4 **)(iVar1 + 8);" (assignment_expression "puVar5 = *(undefined4 **)(iVar1 + 8)" identifier = (pointer_expression "*(undefined4 **)(iVar1 + 8)" * (cast_expression "(undefined4 **)(iVar1 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);" (assignment_expression "iVar10 = (*pcVar4)(param_1,iVar10,*puVar5)" identifier = (call_expression "(*pcVar4)(param_1,iVar10,*puVar5)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1,iVar10,*puVar5)" ( identifier , identifier , (pointer_expression "*puVar5" * identifier) )))) ;) (expression_statement "*piVar7 = iVar10;" (assignment_expression "*piVar7 = iVar10" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "*piVar9 = (int)puVar5;" (assignment_expression "*piVar9 = (int)puVar5" (pointer_expression "*piVar9" * identifier) = (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);" (assignment_expression "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" identifier = (cast_expression "(undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar11)" ( (binary_expression "*(int *)(iVar2 + 0x10) + iVar11" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = *(undefined1 *)(piVar7 + 3);" (assignment_expression "*puVar6 = *(undefined1 *)(piVar7 + 3)" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*(undefined1 *)(piVar7 + 3)" * (cast_expression "(undefined1 *)(piVar7 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 3)" ( (binary_expression "piVar7 + 3" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar7 + 5;" (assignment_expression "piVar7 = piVar7 + 5" identifier = (binary_expression "piVar7 + 5" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar8 == iVar11) {\n          return iVar2;\n        }" if (parenthesized_expression "(iVar8 == iVar11)" ( (binary_expression "iVar8 == iVar11" identifier == identifier) )) (compound_statement "{\n          return iVar2;\n        }" { (return_statement "return iVar2;" return identifier ;) })) })) (expression_statement "iVar10 = FUN_00099d8c(param_1,iVar10);" (assignment_expression "iVar10 = FUN_00099d8c(param_1,iVar10)" identifier = (call_expression "FUN_00099d8c(param_1,iVar10)" identifier (argument_list "(param_1,iVar10)" ( identifier , identifier )))) ;) (expression_statement "*piVar9 = iVar10;" (assignment_expression "*piVar9 = iVar10" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);" (assignment_expression "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" identifier = (cast_expression "(undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar11)" ( (binary_expression "*(int *)(iVar2 + 0x10) + iVar11" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = *(undefined1 *)(piVar7 + 3);" (assignment_expression "*puVar6 = *(undefined1 *)(piVar7 + 3)" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*(undefined1 *)(piVar7 + 3)" * (cast_expression "(undefined1 *)(piVar7 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 3)" ( (binary_expression "piVar7 + 3" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar7 + 5;" (assignment_expression "piVar7 = piVar7 + 5" identifier = (binary_expression "piVar7 + 5" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar11)" ( (binary_expression "iVar8 != iVar11" identifier != identifier) )) ;) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit "KeyInfo * multiSelectOrderByKeyInfo(Parse *pParse,Select *p,int nExtra)\n\n{\n  sqlite3 *psVar1;\n  KeyInfo *pKVar2;\n  code *pcVar3;\n  code *pcVar4;\n  CollSeq *pCVar5;\n  u8 *puVar6;\n  ExprList *pEVar7;\n  ExprList_item *pEVar8;\n  int iVar9;\n  CollSeq **ppCVar10;\n  Expr *pEVar11;\n  int iVar12;\n  \n  pEVar7 = p->pOrderBy;\n  psVar1 = pParse->db;\n  iVar9 = pEVar7->nExpr;\n  pKVar2 = (KeyInfo *)(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1);\n  if ((pKVar2 != (KeyInfo *)0x0) && (0 < iVar9)) {\n    iVar12 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    pEVar8 = pEVar7->a;\n    ppCVar10 = pKVar2->aColl;\n    do {\n      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }\n      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);\n      *ppCVar10 = pCVar5;\n      puVar6 = pKVar2->aSortOrder + iVar12;\n      iVar12 = iVar12 + 1;\n      *puVar6 = pEVar8->sortOrder;\n      pEVar8 = pEVar8 + 1;\n      ppCVar10 = ppCVar10 + 1;\n    } while (iVar9 != iVar12);\n  }\n  return pKVar2;\n}\n\n" (function_definition "KeyInfo * multiSelectOrderByKeyInfo(Parse *pParse,Select *p,int nExtra)\n\n{\n  sqlite3 *psVar1;\n  KeyInfo *pKVar2;\n  code *pcVar3;\n  code *pcVar4;\n  CollSeq *pCVar5;\n  u8 *puVar6;\n  ExprList *pEVar7;\n  ExprList_item *pEVar8;\n  int iVar9;\n  CollSeq **ppCVar10;\n  Expr *pEVar11;\n  int iVar12;\n  \n  pEVar7 = p->pOrderBy;\n  psVar1 = pParse->db;\n  iVar9 = pEVar7->nExpr;\n  pKVar2 = (KeyInfo *)(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1);\n  if ((pKVar2 != (KeyInfo *)0x0) && (0 < iVar9)) {\n    iVar12 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    pEVar8 = pEVar7->a;\n    ppCVar10 = pKVar2->aColl;\n    do {\n      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }\n      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);\n      *ppCVar10 = pCVar5;\n      puVar6 = pKVar2->aSortOrder + iVar12;\n      iVar12 = iVar12 + 1;\n      *puVar6 = pEVar8->sortOrder;\n      pEVar8 = pEVar8 + 1;\n      ppCVar10 = ppCVar10 + 1;\n    } while (iVar9 != iVar12);\n  }\n  return pKVar2;\n}" type_identifier (pointer_declarator "* multiSelectOrderByKeyInfo(Parse *pParse,Select *p,int nExtra)" * (function_declarator "multiSelectOrderByKeyInfo(Parse *pParse,Select *p,int nExtra)" identifier (parameter_list "(Parse *pParse,Select *p,int nExtra)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "Select *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "int nExtra" primitive_type identifier) )))) (compound_statement "{\n  sqlite3 *psVar1;\n  KeyInfo *pKVar2;\n  code *pcVar3;\n  code *pcVar4;\n  CollSeq *pCVar5;\n  u8 *puVar6;\n  ExprList *pEVar7;\n  ExprList_item *pEVar8;\n  int iVar9;\n  CollSeq **ppCVar10;\n  Expr *pEVar11;\n  int iVar12;\n  \n  pEVar7 = p->pOrderBy;\n  psVar1 = pParse->db;\n  iVar9 = pEVar7->nExpr;\n  pKVar2 = (KeyInfo *)(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1);\n  if ((pKVar2 != (KeyInfo *)0x0) && (0 < iVar9)) {\n    iVar12 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    pEVar8 = pEVar7->a;\n    ppCVar10 = pKVar2->aColl;\n    do {\n      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }\n      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);\n      *ppCVar10 = pCVar5;\n      puVar6 = pKVar2->aSortOrder + iVar12;\n      iVar12 = iVar12 + 1;\n      *puVar6 = pEVar8->sortOrder;\n      pEVar8 = pEVar8 + 1;\n      ppCVar10 = ppCVar10 + 1;\n    } while (iVar9 != iVar12);\n  }\n  return pKVar2;\n}" { (declaration "sqlite3 *psVar1;" type_identifier (pointer_declarator "*psVar1" * identifier) ;) (declaration "KeyInfo *pKVar2;" type_identifier (pointer_declarator "*pKVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "CollSeq *pCVar5;" type_identifier (pointer_declarator "*pCVar5" * identifier) ;) (declaration "u8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "ExprList *pEVar7;" type_identifier (pointer_declarator "*pEVar7" * identifier) ;) (declaration "ExprList_item *pEVar8;" type_identifier (pointer_declarator "*pEVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "CollSeq **ppCVar10;" type_identifier (pointer_declarator "**ppCVar10" * (pointer_declarator "*ppCVar10" * identifier)) ;) (declaration "Expr *pEVar11;" type_identifier (pointer_declarator "*pEVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (expression_statement "pEVar7 = p->pOrderBy;" (assignment_expression "pEVar7 = p->pOrderBy" identifier = (field_expression "p->pOrderBy" identifier -> field_identifier)) ;) (expression_statement "psVar1 = pParse->db;" (assignment_expression "psVar1 = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "iVar9 = pEVar7->nExpr;" (assignment_expression "iVar9 = pEVar7->nExpr" identifier = (field_expression "pEVar7->nExpr" identifier -> field_identifier)) ;) (expression_statement "pKVar2 = (KeyInfo *)(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1);" (assignment_expression "pKVar2 = (KeyInfo *)(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1)" identifier = (cast_expression "(KeyInfo *)(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1)" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(psVar1,iVar9 + 1,1)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x1dec)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x1dec)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x1dec)" ( (binary_expression "PTR_LAB_00190ba8 + 0x1dec" identifier + number_literal) )))) )) (argument_list "(psVar1,iVar9 + 1,1)" ( identifier , (binary_expression "iVar9 + 1" identifier + number_literal) , number_literal ))))) ;) (if_statement "if ((pKVar2 != (KeyInfo *)0x0) && (0 < iVar9)) {\n    iVar12 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    pEVar8 = pEVar7->a;\n    ppCVar10 = pKVar2->aColl;\n    do {\n      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }\n      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);\n      *ppCVar10 = pCVar5;\n      puVar6 = pKVar2->aSortOrder + iVar12;\n      iVar12 = iVar12 + 1;\n      *puVar6 = pEVar8->sortOrder;\n      pEVar8 = pEVar8 + 1;\n      ppCVar10 = ppCVar10 + 1;\n    } while (iVar9 != iVar12);\n  }" if (parenthesized_expression "((pKVar2 != (KeyInfo *)0x0) && (0 < iVar9))" ( (binary_expression "(pKVar2 != (KeyInfo *)0x0) && (0 < iVar9)" (parenthesized_expression "(pKVar2 != (KeyInfo *)0x0)" ( (binary_expression "pKVar2 != (KeyInfo *)0x0" identifier != (cast_expression "(KeyInfo *)0x0" ( (type_descriptor "KeyInfo *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) ))) )) (compound_statement "{\n    iVar12 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    pEVar8 = pEVar7->a;\n    ppCVar10 = pKVar2->aColl;\n    do {\n      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }\n      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);\n      *ppCVar10 = pCVar5;\n      puVar6 = pKVar2->aSortOrder + iVar12;\n      iVar12 = iVar12 + 1;\n      *puVar6 = pEVar8->sortOrder;\n      pEVar8 = pEVar8 + 1;\n      ppCVar10 = ppCVar10 + 1;\n    } while (iVar9 != iVar12);\n  }" { (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4)" identifier = (cast_expression "(code *)(PTR_LAB_00190bc4 + -0x58c4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bc4 + -0x58c4)" ( (binary_expression "PTR_LAB_00190bc4 + -0x58c4" identifier + number_literal) )))) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74)" identifier = (cast_expression "(code *)(PTR_LAB_00190bb8 + -0xc74)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb8 + -0xc74)" ( (binary_expression "PTR_LAB_00190bb8 + -0xc74" identifier + number_literal) )))) ;) (expression_statement "pEVar8 = pEVar7->a;" (assignment_expression "pEVar8 = pEVar7->a" identifier = (field_expression "pEVar7->a" identifier -> field_identifier)) ;) (expression_statement "ppCVar10 = pKVar2->aColl;" (assignment_expression "ppCVar10 = pKVar2->aColl" identifier = (field_expression "pKVar2->aColl" identifier -> field_identifier)) ;) (do_statement "do {\n      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }\n      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);\n      *ppCVar10 = pCVar5;\n      puVar6 = pKVar2->aSortOrder + iVar12;\n      iVar12 = iVar12 + 1;\n      *puVar6 = pEVar8->sortOrder;\n      pEVar8 = pEVar8 + 1;\n      ppCVar10 = ppCVar10 + 1;\n    } while (iVar9 != iVar12);" do (compound_statement "{\n      while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }\n      pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);\n      *ppCVar10 = pCVar5;\n      puVar6 = pKVar2->aSortOrder + iVar12;\n      iVar12 = iVar12 + 1;\n      *puVar6 = pEVar8->sortOrder;\n      pEVar8 = pEVar8 + 1;\n      ppCVar10 = ppCVar10 + 1;\n    }" { (while_statement "while (pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0) {\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }" while (parenthesized_expression "(pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0)" ( (comma_expression "pEVar11 = pEVar8->pExpr, (pEVar11->flags & 0x100) == 0" (assignment_expression "pEVar11 = pEVar8->pExpr" identifier = (field_expression "pEVar8->pExpr" identifier -> field_identifier)) , (binary_expression "(pEVar11->flags & 0x100) == 0" (parenthesized_expression "(pEVar11->flags & 0x100)" ( (binary_expression "pEVar11->flags & 0x100" (field_expression "pEVar11->flags" identifier -> field_identifier) & number_literal) )) == number_literal)) )) (compound_statement "{\n        pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);\n        if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }\n        pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);\n        pEVar8->pExpr = pEVar11;\n        *ppCVar10 = pCVar5;\n        puVar6 = pKVar2->aSortOrder + iVar12;\n        iVar12 = iVar12 + 1;\n        *puVar6 = pEVar8->sortOrder;\n        pEVar8 = pEVar8 + 1;\n        ppCVar10 = ppCVar10 + 1;\n        if (iVar9 == iVar12) {\n          return pKVar2;\n        }\n      }" { (expression_statement "pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1);" (assignment_expression "pCVar5 = (CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1)" identifier = (cast_expression "(CollSeq *)(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1)" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar3)(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(pParse,p,p->pPrior,(pEVar8->u).x.iOrderByCol - 1)" ( identifier , identifier , (field_expression "p->pPrior" identifier -> field_identifier) , (binary_expression "(pEVar8->u).x.iOrderByCol - 1" (field_expression "(pEVar8->u).x.iOrderByCol" (field_expression "(pEVar8->u).x" (parenthesized_expression "(pEVar8->u)" ( (field_expression "pEVar8->u" identifier -> field_identifier) )) . field_identifier) . field_identifier) - number_literal) ))))) ;) (if_statement "if (pCVar5 == (CollSeq *)0x0) {\n          pCVar5 = psVar1->pDfltColl;\n        }" if (parenthesized_expression "(pCVar5 == (CollSeq *)0x0)" ( (binary_expression "pCVar5 == (CollSeq *)0x0" identifier == (cast_expression "(CollSeq *)0x0" ( (type_descriptor "CollSeq *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pCVar5 = psVar1->pDfltColl;\n        }" { (expression_statement "pCVar5 = psVar1->pDfltColl;" (assignment_expression "pCVar5 = psVar1->pDfltColl" identifier = (field_expression "psVar1->pDfltColl" identifier -> field_identifier)) ;) })) (expression_statement "pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName);" (assignment_expression "pEVar11 = (Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName)" identifier = (cast_expression "(Expr *)(*pcVar4)(pParse,pEVar11,pCVar5->zName)" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar4)(pParse,pEVar11,pCVar5->zName)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(pParse,pEVar11,pCVar5->zName)" ( identifier , identifier , (field_expression "pCVar5->zName" identifier -> field_identifier) ))))) ;) (expression_statement "pEVar8->pExpr = pEVar11;" (assignment_expression "pEVar8->pExpr = pEVar11" (field_expression "pEVar8->pExpr" identifier -> field_identifier) = identifier) ;) (expression_statement "*ppCVar10 = pCVar5;" (assignment_expression "*ppCVar10 = pCVar5" (pointer_expression "*ppCVar10" * identifier) = identifier) ;) (expression_statement "puVar6 = pKVar2->aSortOrder + iVar12;" (assignment_expression "puVar6 = pKVar2->aSortOrder + iVar12" identifier = (binary_expression "pKVar2->aSortOrder + iVar12" (field_expression "pKVar2->aSortOrder" identifier -> field_identifier) + identifier)) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = pEVar8->sortOrder;" (assignment_expression "*puVar6 = pEVar8->sortOrder" (pointer_expression "*puVar6" * identifier) = (field_expression "pEVar8->sortOrder" identifier -> field_identifier)) ;) (expression_statement "pEVar8 = pEVar8 + 1;" (assignment_expression "pEVar8 = pEVar8 + 1" identifier = (binary_expression "pEVar8 + 1" identifier + number_literal)) ;) (expression_statement "ppCVar10 = ppCVar10 + 1;" (assignment_expression "ppCVar10 = ppCVar10 + 1" identifier = (binary_expression "ppCVar10 + 1" identifier + number_literal)) ;) (if_statement "if (iVar9 == iVar12) {\n          return pKVar2;\n        }" if (parenthesized_expression "(iVar9 == iVar12)" ( (binary_expression "iVar9 == iVar12" identifier == identifier) )) (compound_statement "{\n          return pKVar2;\n        }" { (return_statement "return pKVar2;" return identifier ;) })) })) (expression_statement "pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11);" (assignment_expression "pCVar5 = sqlite3ExprCollSeq(pParse,pEVar11)" identifier = (call_expression "sqlite3ExprCollSeq(pParse,pEVar11)" identifier (argument_list "(pParse,pEVar11)" ( identifier , identifier )))) ;) (expression_statement "*ppCVar10 = pCVar5;" (assignment_expression "*ppCVar10 = pCVar5" (pointer_expression "*ppCVar10" * identifier) = identifier) ;) (expression_statement "puVar6 = pKVar2->aSortOrder + iVar12;" (assignment_expression "puVar6 = pKVar2->aSortOrder + iVar12" identifier = (binary_expression "pKVar2->aSortOrder + iVar12" (field_expression "pKVar2->aSortOrder" identifier -> field_identifier) + identifier)) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = pEVar8->sortOrder;" (assignment_expression "*puVar6 = pEVar8->sortOrder" (pointer_expression "*puVar6" * identifier) = (field_expression "pEVar8->sortOrder" identifier -> field_identifier)) ;) (expression_statement "pEVar8 = pEVar8 + 1;" (assignment_expression "pEVar8 = pEVar8 + 1" identifier = (binary_expression "pEVar8 + 1" identifier + number_literal)) ;) (expression_statement "ppCVar10 = ppCVar10 + 1;" (assignment_expression "ppCVar10 = ppCVar10 + 1" identifier = (binary_expression "ppCVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 != iVar12)" ( (binary_expression "iVar9 != iVar12" identifier != identifier) )) ;) })) (return_statement "return pKVar2;" return identifier ;) })))
(translation_unit "int FUN_0009b56c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}\n\n" (function_definition "int FUN_0009b56c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}" primitive_type (function_declarator "FUN_0009b56c(int *param_1,int param_2)" identifier (parameter_list "(int *param_1,int param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (expression_statement "piVar7 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar7 = *(int **)(param_2 + 0x30)" identifier = (pointer_expression "*(int **)(param_2 + 0x30)" * (cast_expression "(int **)(param_2 + 0x30)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 0x30)" ( (binary_expression "param_2 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "iVar8 = *piVar7;" (assignment_expression "iVar8 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);" (assignment_expression "iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1)" identifier = (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))" ( (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x1dec)" * (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x1dec)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190ba8 + 0x1dec)" ( (binary_expression "PTR_LAB_00190ba8 + 0x1dec" identifier + number_literal) )))) )) (argument_list "(iVar1,iVar8 + 1,1)" ( identifier , (binary_expression "iVar8 + 1" identifier + number_literal) , number_literal )))) ;) (if_statement "if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }" if (parenthesized_expression "((iVar2 != 0) && (0 < iVar8))" ( (binary_expression "(iVar2 != 0) && (0 < iVar8)" (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) && (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) ))) )) (compound_statement "{\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4)" identifier = (cast_expression "(code *)(PTR_LAB_00190bc4 + -0x58c4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bc4 + -0x58c4)" ( (binary_expression "PTR_LAB_00190bc4 + -0x58c4" identifier + number_literal) )))) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74)" identifier = (cast_expression "(code *)(PTR_LAB_00190bb8 + -0xc74)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00190bb8 + -0xc74)" ( (binary_expression "PTR_LAB_00190bb8 + -0xc74" identifier + number_literal) )))) ;) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" identifier = (binary_expression "piVar7 + 1" identifier + number_literal)) ;) (expression_statement "piVar9 = (int *)(iVar2 + 0x14);" (assignment_expression "piVar9 = (int *)(iVar2 + 0x14)" identifier = (cast_expression "(int *)(iVar2 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x14)" ( (binary_expression "iVar2 + 0x14" identifier + number_literal) )))) ;) (do_statement "do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);" do (compound_statement "{\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    }" { (while_statement "while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }" while (parenthesized_expression "(iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0)" ( (comma_expression "iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0" (assignment_expression "iVar10 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) , (binary_expression "(*(uint *)(iVar10 + 4) & 0x100) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 4) & 0x100)" ( (binary_expression "*(uint *)(iVar10 + 4) & 0x100" (pointer_expression "*(uint *)(iVar10 + 4)" * (cast_expression "(uint *)(iVar10 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 4)" ( (binary_expression "iVar10 + 4" identifier + number_literal) )))) & number_literal) )) == number_literal)) )) (compound_statement "{\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }" { (expression_statement "puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);" (assignment_expression "puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" identifier = (cast_expression "(undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" ( identifier , identifier , (pointer_expression "*(undefined4 *)(param_2 + 0x34)" * (cast_expression "(undefined4 *)(param_2 + 0x34)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x34)" ( (binary_expression "param_2 + 0x34" identifier + number_literal) )))) , (binary_expression "*(ushort *)(piVar7 + 4) - 1" (pointer_expression "*(ushort *)(piVar7 + 4)" * (cast_expression "(ushort *)(piVar7 + 4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 4)" ( (binary_expression "piVar7 + 4" identifier + number_literal) )))) - number_literal) ))))) ;) (if_statement "if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }" if (parenthesized_expression "(puVar5 == (undefined4 *)0x0)" ( (binary_expression "puVar5 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }" { (expression_statement "puVar5 = *(undefined4 **)(iVar1 + 8);" (assignment_expression "puVar5 = *(undefined4 **)(iVar1 + 8)" identifier = (pointer_expression "*(undefined4 **)(iVar1 + 8)" * (cast_expression "(undefined4 **)(iVar1 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar1 + 8)" ( (binary_expression "iVar1 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);" (assignment_expression "iVar10 = (*pcVar4)(param_1,iVar10,*puVar5)" identifier = (call_expression "(*pcVar4)(param_1,iVar10,*puVar5)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_1,iVar10,*puVar5)" ( identifier , identifier , (pointer_expression "*puVar5" * identifier) )))) ;) (expression_statement "*piVar7 = iVar10;" (assignment_expression "*piVar7 = iVar10" (pointer_expression "*piVar7" * identifier) = identifier) ;) (expression_statement "*piVar9 = (int)puVar5;" (assignment_expression "*piVar9 = (int)puVar5" (pointer_expression "*piVar9" * identifier) = (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);" (assignment_expression "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" identifier = (cast_expression "(undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar11)" ( (binary_expression "*(int *)(iVar2 + 0x10) + iVar11" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = *(undefined1 *)(piVar7 + 3);" (assignment_expression "*puVar6 = *(undefined1 *)(piVar7 + 3)" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*(undefined1 *)(piVar7 + 3)" * (cast_expression "(undefined1 *)(piVar7 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 3)" ( (binary_expression "piVar7 + 3" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar7 + 5;" (assignment_expression "piVar7 = piVar7 + 5" identifier = (binary_expression "piVar7 + 5" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar8 == iVar11) {\n          return iVar2;\n        }" if (parenthesized_expression "(iVar8 == iVar11)" ( (binary_expression "iVar8 == iVar11" identifier == identifier) )) (compound_statement "{\n          return iVar2;\n        }" { (return_statement "return iVar2;" return identifier ;) })) })) (expression_statement "iVar10 = FUN_00099d8c(param_1,iVar10);" (assignment_expression "iVar10 = FUN_00099d8c(param_1,iVar10)" identifier = (call_expression "FUN_00099d8c(param_1,iVar10)" identifier (argument_list "(param_1,iVar10)" ( identifier , identifier )))) ;) (expression_statement "*piVar9 = iVar10;" (assignment_expression "*piVar9 = iVar10" (pointer_expression "*piVar9" * identifier) = identifier) ;) (expression_statement "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);" (assignment_expression "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" identifier = (cast_expression "(undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar11)" ( (binary_expression "*(int *)(iVar2 + 0x10) + iVar11" (pointer_expression "*(int *)(iVar2 + 0x10)" * (cast_expression "(int *)(iVar2 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar2 + 0x10)" ( (binary_expression "iVar2 + 0x10" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" identifier = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (expression_statement "*puVar6 = *(undefined1 *)(piVar7 + 3);" (assignment_expression "*puVar6 = *(undefined1 *)(piVar7 + 3)" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*(undefined1 *)(piVar7 + 3)" * (cast_expression "(undefined1 *)(piVar7 + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 3)" ( (binary_expression "piVar7 + 3" identifier + number_literal) ))))) ;) (expression_statement "piVar7 = piVar7 + 5;" (assignment_expression "piVar7 = piVar7 + 5" identifier = (binary_expression "piVar7 + 5" identifier + number_literal)) ;) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" identifier = (binary_expression "piVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar11)" ( (binary_expression "iVar8 != iVar11" identifier != identifier) )) ;) })) (return_statement "return iVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (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) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (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) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_0009b56c(int *param_1,int param_2)\n\n{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}" (primitive_type "int") (function_declarator "FUN_0009b56c(int *param_1,int param_2)" (identifier "FUN_0009b56c") (parameter_list "(int *param_1,int param_2)" (( "(") (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")) () ")"))) (compound_statement "{\n  int iVar1;\n  int iVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 *puVar5;\n  undefined1 *puVar6;\n  int *piVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  int iVar11;\n  \n  piVar7 = *(int **)(param_2 + 0x30);\n  iVar1 = *param_1;\n  iVar8 = *piVar7;\n  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);\n  if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }\n  return iVar2;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (expression_statement "piVar7 = *(int **)(param_2 + 0x30);" (assignment_expression "piVar7 = *(int **)(param_2 + 0x30)" (identifier "piVar7") (= "=") (pointer_expression "*(int **)(param_2 + 0x30)" (* "*") (cast_expression "(int **)(param_2 + 0x30)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 0x30)" (( "(") (binary_expression "param_2 + 0x30" (identifier "param_2") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "iVar1 = *param_1;" (assignment_expression "iVar1 = *param_1" (identifier "iVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "iVar8 = *piVar7;" (assignment_expression "iVar8 = *piVar7" (identifier "iVar8") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);" (assignment_expression "iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1)" (identifier "iVar2") (= "=") (call_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1)" (parenthesized_expression "(*(code *)(PTR_LAB_00190ba8 + 0x1dec))" (( "(") (pointer_expression "*(code *)(PTR_LAB_00190ba8 + 0x1dec)" (* "*") (cast_expression "(code *)(PTR_LAB_00190ba8 + 0x1dec)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190ba8 + 0x1dec)" (( "(") (binary_expression "PTR_LAB_00190ba8 + 0x1dec" (identifier "PTR_LAB_00190ba8") (+ "+") (number_literal "0x1dec")) () ")")))) () ")")) (argument_list "(iVar1,iVar8 + 1,1)" (( "(") (identifier "iVar1") (, ",") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1")) (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if ((iVar2 != 0) && (0 < iVar8)) {\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }" (if "if") (parenthesized_expression "((iVar2 != 0) && (0 < iVar8))" (( "(") (binary_expression "(iVar2 != 0) && (0 < iVar8)" (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(0 < iVar8)" (( "(") (binary_expression "0 < iVar8" (number_literal "0") (< "<") (identifier "iVar8")) () ")"))) () ")")) (compound_statement "{\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);\n    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);\n    piVar7 = piVar7 + 1;\n    piVar9 = (int *)(iVar2 + 0x14);\n    do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);\n  }" ({ "{") (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4)" (identifier "pcVar3") (= "=") (cast_expression "(code *)(PTR_LAB_00190bc4 + -0x58c4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bc4 + -0x58c4)" (( "(") (binary_expression "PTR_LAB_00190bc4 + -0x58c4" (identifier "PTR_LAB_00190bc4") (+ "+") (number_literal "-0x58c4")) () ")")))) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_00190bb8 + -0xc74)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00190bb8 + -0xc74)" (( "(") (binary_expression "PTR_LAB_00190bb8 + -0xc74" (identifier "PTR_LAB_00190bb8") (+ "+") (number_literal "-0xc74")) () ")")))) (; ";")) (expression_statement "piVar7 = piVar7 + 1;" (assignment_expression "piVar7 = piVar7 + 1" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 1" (identifier "piVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar9 = (int *)(iVar2 + 0x14);" (assignment_expression "piVar9 = (int *)(iVar2 + 0x14)" (identifier "piVar9") (= "=") (cast_expression "(int *)(iVar2 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x14)" (( "(") (binary_expression "iVar2 + 0x14" (identifier "iVar2") (+ "+") (number_literal "0x14")) () ")")))) (; ";")) (do_statement "do {\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    } while (iVar8 != iVar11);" (do "do") (compound_statement "{\n      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }\n      iVar10 = FUN_00099d8c(param_1,iVar10);\n      *piVar9 = iVar10;\n      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n      iVar11 = iVar11 + 1;\n      *puVar6 = *(undefined1 *)(piVar7 + 3);\n      piVar7 = piVar7 + 5;\n      piVar9 = piVar9 + 1;\n    }" ({ "{") (while_statement "while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }" (while "while") (parenthesized_expression "(iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0)" (( "(") (comma_expression "iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0" (assignment_expression "iVar10 = *piVar7" (identifier "iVar10") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (, ",") (binary_expression "(*(uint *)(iVar10 + 4) & 0x100) == 0" (parenthesized_expression "(*(uint *)(iVar10 + 4) & 0x100)" (( "(") (binary_expression "*(uint *)(iVar10 + 4) & 0x100" (pointer_expression "*(uint *)(iVar10 + 4)" (* "*") (cast_expression "(uint *)(iVar10 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 4)" (( "(") (binary_expression "iVar10 + 4" (identifier "iVar10") (+ "+") (number_literal "4")) () ")")))) (& "&") (number_literal "0x100")) () ")")) (== "==") (number_literal "0"))) () ")")) (compound_statement "{\n        puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);\n        if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }\n        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);\n        *piVar7 = iVar10;\n        *piVar9 = (int)puVar5;\n        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);\n        iVar11 = iVar11 + 1;\n        *puVar6 = *(undefined1 *)(piVar7 + 3);\n        piVar7 = piVar7 + 5;\n        piVar9 = piVar9 + 1;\n        if (iVar8 == iVar11) {\n          return iVar2;\n        }\n      }" ({ "{") (expression_statement "puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1);" (assignment_expression "puVar5 = (undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)\n                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "(param_1,param_2,*(undefined4 *)(param_2 + 0x34),\n                           *(ushort *)(piVar7 + 4) - 1)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "*(undefined4 *)(param_2 + 0x34)" (* "*") (cast_expression "(undefined4 *)(param_2 + 0x34)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x34)" (( "(") (binary_expression "param_2 + 0x34" (identifier "param_2") (+ "+") (number_literal "0x34")) () ")")))) (, ",") (binary_expression "*(ushort *)(piVar7 + 4) - 1" (pointer_expression "*(ushort *)(piVar7 + 4)" (* "*") (cast_expression "(ushort *)(piVar7 + 4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 4)" (( "(") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4")) () ")")))) (- "-") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (puVar5 == (undefined4 *)0x0) {\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }" (if "if") (parenthesized_expression "(puVar5 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar5 == (undefined4 *)0x0" (identifier "puVar5") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar5 = *(undefined4 **)(iVar1 + 8);\n        }" ({ "{") (expression_statement "puVar5 = *(undefined4 **)(iVar1 + 8);" (assignment_expression "puVar5 = *(undefined4 **)(iVar1 + 8)" (identifier "puVar5") (= "=") (pointer_expression "*(undefined4 **)(iVar1 + 8)" (* "*") (cast_expression "(undefined4 **)(iVar1 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar1 + 8)" (( "(") (binary_expression "iVar1 + 8" (identifier "iVar1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);" (assignment_expression "iVar10 = (*pcVar4)(param_1,iVar10,*puVar5)" (identifier "iVar10") (= "=") (call_expression "(*pcVar4)(param_1,iVar10,*puVar5)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(param_1,iVar10,*puVar5)" (( "(") (identifier "param_1") (, ",") (identifier "iVar10") (, ",") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) () ")")))) (; ";")) (expression_statement "*piVar7 = iVar10;" (assignment_expression "*piVar7 = iVar10" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "*piVar9 = (int)puVar5;" (assignment_expression "*piVar9 = (int)puVar5" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5"))) (; ";")) (expression_statement "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);" (assignment_expression "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar11)" (( "(") (binary_expression "*(int *)(iVar2 + 0x10) + iVar11" (pointer_expression "*(int *)(iVar2 + 0x10)" (* "*") (cast_expression "(int *)(iVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "iVar11")) () ")")))) (; ";")) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar6 = *(undefined1 *)(piVar7 + 3);" (assignment_expression "*puVar6 = *(undefined1 *)(piVar7 + 3)" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*(undefined1 *)(piVar7 + 3)" (* "*") (cast_expression "(undefined1 *)(piVar7 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 3)" (( "(") (binary_expression "piVar7 + 3" (identifier "piVar7") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "piVar7 = piVar7 + 5;" (assignment_expression "piVar7 = piVar7 + 5" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 5" (identifier "piVar7") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar8 == iVar11) {\n          return iVar2;\n        }" (if "if") (parenthesized_expression "(iVar8 == iVar11)" (( "(") (binary_expression "iVar8 == iVar11" (identifier "iVar8") (== "==") (identifier "iVar11")) () ")")) (compound_statement "{\n          return iVar2;\n        }" ({ "{") (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar10 = FUN_00099d8c(param_1,iVar10);" (assignment_expression "iVar10 = FUN_00099d8c(param_1,iVar10)" (identifier "iVar10") (= "=") (call_expression "FUN_00099d8c(param_1,iVar10)" (identifier "FUN_00099d8c") (argument_list "(param_1,iVar10)" (( "(") (identifier "param_1") (, ",") (identifier "iVar10") () ")")))) (; ";")) (expression_statement "*piVar9 = iVar10;" (assignment_expression "*piVar9 = iVar10" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);" (assignment_expression "puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" (identifier "puVar6") (= "=") (cast_expression "(undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar2 + 0x10) + iVar11)" (( "(") (binary_expression "*(int *)(iVar2 + 0x10) + iVar11" (pointer_expression "*(int *)(iVar2 + 0x10)" (* "*") (cast_expression "(int *)(iVar2 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar2 + 0x10)" (( "(") (binary_expression "iVar2 + 0x10" (identifier "iVar2") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (identifier "iVar11")) () ")")))) (; ";")) (expression_statement "iVar11 = iVar11 + 1;" (assignment_expression "iVar11 = iVar11 + 1" (identifier "iVar11") (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar6 = *(undefined1 *)(piVar7 + 3);" (assignment_expression "*puVar6 = *(undefined1 *)(piVar7 + 3)" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*(undefined1 *)(piVar7 + 3)" (* "*") (cast_expression "(undefined1 *)(piVar7 + 3)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 3)" (( "(") (binary_expression "piVar7 + 3" (identifier "piVar7") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "piVar7 = piVar7 + 5;" (assignment_expression "piVar7 = piVar7 + 5" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 5" (identifier "piVar7") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "piVar9 = piVar9 + 1;" (assignment_expression "piVar9 = piVar9 + 1" (identifier "piVar9") (= "=") (binary_expression "piVar9 + 1" (identifier "piVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != iVar11)" (( "(") (binary_expression "iVar8 != iVar11" (identifier "iVar8") (!= "!=") (identifier "iVar11")) () ")")) (; ";")) (} "}"))) (return_statement "return iVar2;" (return "return") (identifier "iVar2") (; ";")) (} "}")))

type_1 * function_1(type_2 *pParse,type_3 *p,int nExtra)

{
  type_4 *psVar1;
  type_1 *var_3;
  type_5 *pcVar3;
  type_5 *pcVar4;
  type_6 *var_6;
  type_7 *puVar6;
  type_8 *pEVar7;
  type_9 *var_8;
  int var_2;
  type_6 **var_9;
  type_10 *pEVar11;
  int var_7;
  
  pEVar7 = p->pOrderBy;
  psVar1 = pParse->db;
  var_2 = pEVar7->nExpr;
  var_3 = (type_1 *)(*(type_5 *)(var_1 + 0x1dec))(psVar1,var_2 + 1,1);
  if ((var_3 != (type_1 *)0x0) && (0 < var_2)) {
    var_7 = 0;
    pcVar3 = (type_5 *)(var_4 + -0x58c4);
    pcVar4 = (type_5 *)(var_5 + -0xc74);
    var_8 = pEVar7->a;
    var_9 = var_3->aColl;
    do {
      while (pEVar11 = var_8->pExpr, (pEVar11->flags & 0x100) == 0) {
        var_6 = (type_6 *)(*pcVar3)(pParse,p,p->pPrior,(var_8->u).x.iOrderByCol - 1);
        if (var_6 == (type_6 *)0x0) {
          var_6 = psVar1->pDfltColl;
        }
        pEVar11 = (type_10 *)(*pcVar4)(pParse,pEVar11,var_6->zName);
        var_8->pExpr = pEVar11;
        *var_9 = var_6;
        puVar6 = var_3->aSortOrder + var_7;
        var_7 = var_7 + 1;
        *puVar6 = var_8->sortOrder;
        var_8 = var_8 + 1;
        var_9 = var_9 + 1;
        if (var_2 == var_7) {
          return var_3;
        }
      }
      var_6 = var_10(pParse,pEVar11);
      *var_9 = var_6;
      puVar6 = var_3->aSortOrder + var_7;
      var_7 = var_7 + 1;
      *puVar6 = var_8->sortOrder;
      var_8 = var_8 + 1;
      var_9 = var_9 + 1;
    } while (var_2 != var_7);
  }
  return var_3;
}


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

int MASKED(int *param_1,int param_2)

{
  int iVar1;
  int iVar2;
  code *pcVar3;
  code *pcVar4;
  undefined4 *puVar5;
  undefined1 *puVar6;
  int *piVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  int iVar11;
  
  piVar7 = *(int **)(param_2 + 0x30);
  iVar1 = *param_1;
  iVar8 = *piVar7;
  iVar2 = (*(code *)(PTR_LAB_00190ba8 + 0x1dec))(iVar1,iVar8 + 1,1);
  if ((iVar2 != 0) && (0 < iVar8)) {
    iVar11 = 0;
    pcVar3 = (code *)(PTR_LAB_00190bc4 + -0x58c4);
    pcVar4 = (code *)(PTR_LAB_00190bb8 + -0xc74);
    piVar7 = piVar7 + 1;
    piVar9 = (int *)(iVar2 + 0x14);
    do {
      while (iVar10 = *piVar7, (*(uint *)(iVar10 + 4) & 0x100) == 0) {
        puVar5 = (undefined4 *)
                 (*pcVar3)(param_1,param_2,*(undefined4 *)(param_2 + 0x34),
                           *(ushort *)(piVar7 + 4) - 1);
        if (puVar5 == (undefined4 *)0x0) {
          puVar5 = *(undefined4 **)(iVar1 + 8);
        }
        iVar10 = (*pcVar4)(param_1,iVar10,*puVar5);
        *piVar7 = iVar10;
        *piVar9 = (int)puVar5;
        puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);
        iVar11 = iVar11 + 1;
        *puVar6 = *(undefined1 *)(piVar7 + 3);
        piVar7 = piVar7 + 5;
        piVar9 = piVar9 + 1;
        if (iVar8 == iVar11) {
          return iVar2;
        }
      }
      iVar10 = FUN_00099d8c(param_1,iVar10);
      *piVar9 = iVar10;
      puVar6 = (undefined1 *)(*(int *)(iVar2 + 0x10) + iVar11);
      iVar11 = iVar11 + 1;
      *puVar6 = *(undefined1 *)(piVar7 + 3);
      piVar7 = piVar7 + 5;
      piVar9 = piVar9 + 1;
    } while (iVar8 != iVar11);
  }
  return iVar2;
}

