
int sqlite3ExprCoveredByIndex(Expr *pExpr,int iCur,Index *pIdx)

{
  undefined *puVar1;
  uint uVar2;
  Select *pSVar3;
  int iVar4;
  uint uVar5;
  NameContext *pNVar6;
  int *piVar7;
  u32 *puVar8;
  undefined *puVar9;
  code *pcVar10;
  undefined1 auStack_70 [28];
  Select *pSStack_54;
  undefined *puStack_50;
  code *pcStack_4c;
  IdxCover xcov;
  Walker w;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_0015b6c0 + -0x7210);
  w.u.pNC = (NameContext *)&xcov;
  w.pParse = (Parse *)0x0;
  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)0x0;
  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;
  w.walkerDepth = 0;
  w.eCode = '\0';
  w._21_3_ = 0;
  pNVar6 = *(NameContext **)PTR___stack_chk_guard_0015ba2c;
  xcov.pIdx = pIdx;
  xcov.iCur = iCur;
  if (pExpr == (Expr *)0x0) {
    uVar2 = 1;
    pExpr = (Expr *)iCur;
  }
  else {
    walkExpr(&w,pExpr);
    uVar2 = (uint)(w.eCode == '\0');
  }
  if (pNVar6 == *(NameContext **)puVar1) {
    return uVar2;
  }
  pcVar10 = sqlite3ExprAnalyzeAggregates;
  puVar9 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  auStack_70._4_4_ = *(int *)(puVar9 + 0x124410) + 0x18ac;
  puStack_50 = puVar1;
  piVar7 = *(int **)(puVar9 + 0x124728);
  auStack_70._8_4_ = *(int *)(puVar9 + 0x124358) + -0xb1c;
  auStack_70._16_4_ = 0;
  pSStack_54 = (Select *)*piVar7;
  auStack_70._0_4_ = (Parse *)0x0;
  auStack_70._12_4_ = *(int *)(puVar9 + 0x124358) + -0xb08;
  auStack_70._24_4_ = pNVar6;
  pcStack_4c = pcVar10;
  if (pExpr != (Expr *)0x0) {
    pNVar6 = (NameContext *)auStack_70;
    walkExpr((Walker *)pNVar6,pExpr);
  }
  pSVar3 = (Select *)*piVar7;
  if (pSStack_54 == pSVar3) {
    return (int)pSVar3;
  }
  iVar4 = (**(code **)(puVar9 + 0x12470c))();
  if (pExpr != (Expr *)0x0) {
    uVar2._0_1_ = pExpr->op;
    uVar2._1_1_ = pExpr->affinity;
    uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2;
    puVar8 = &pExpr->flags;
    if (0 < (int)uVar2) {
      iVar4 = 0;
      do {
        iVar4 = iVar4 + 1;
        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);
        uVar5._0_1_ = pExpr->op;
        uVar5._1_1_ = pExpr->affinity;
        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;
        uVar2 = (uint)(iVar4 < (int)uVar5);
        puVar8 = puVar8 + 5;
      } while (uVar2 != 0);
    }
    return uVar2;
  }
  return iVar4;
}



uint FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *puVar4;
  int iVar5;
  undefined *puVar6;
  code *pcVar7;
  undefined4 uStack_70;
  int iStack_6c;
  int iStack_68;
  int iStack_64;
  undefined4 uStack_60;
  undefined4 *puStack_58;
  uint uStack_54;
  undefined *puStack_50;
  code *pcStack_4c;
  undefined4 local_30;
  uint *local_2c;
  undefined4 local_28;
  undefined *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  local_24 = PTR_LAB_0015b6c0 + -0x7210;
  local_10 = &local_30;
  local_28 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;
  local_30 = param_3;
  local_2c = param_2;
  if (param_1 == (uint *)0x0) {
    uVar2 = 1;
  }
  else {
    FUN_00036e6c(&local_28);
    uVar2 = (uint)(local_14._0_1_ == '\0');
    param_2 = param_1;
  }
  if (local_c == *(undefined4 **)puVar1) {
    return uVar2;
  }
  pcVar7 = FUN_00037304;
  puVar3 = local_c;
  puVar6 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;
  puStack_50 = puVar1;
  puVar4 = *(uint **)(puVar6 + 0x124728);
  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;
  uStack_60 = 0;
  uStack_54 = *puVar4;
  uStack_70 = 0;
  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;
  puStack_58 = puVar3;
  pcStack_4c = pcVar7;
  if (param_2 != (uint *)0x0) {
    puVar3 = &uStack_70;
    FUN_00036e6c(puVar3);
  }
  uVar2 = *puVar4;
  if (uStack_54 == uVar2) {
    return uVar2;
  }
  uVar2 = (**(code **)(puVar6 + 0x12470c))();
  if (param_2 != (uint *)0x0) {
    uVar2 = *param_2;
    puVar4 = param_2 + 1;
    if (0 < (int)uVar2) {
      iVar5 = 0;
      do {
        iVar5 = iVar5 + 1;
        FUN_00037304(puVar3,*puVar4);
        uVar2 = (uint)(iVar5 < (int)*param_2);
        puVar4 = puVar4 + 5;
      } while (uVar2 != 0);
    }
    return uVar2;
  }
  return uVar2;
}


lui gp,0x13
addiu gp,gp,-0x3ca4
addu gp,gp,t9
addiu sp,sp,-0x48
lw v1,-0x7ef0(gp)
addiu v1,v1,-0x7210
sw s0,0x40(sp)
sw gp,0x10(sp)
sw v1,0x24(sp)
addiu v1,sp,0x18
sw ra,0x44(sp)
sw v1,0x38(sp)
lw s0,-0x7b84(gp)
sw zero,0x20(sp)
sw zero,0x28(sp)
sw zero,0x2c(sp)
sw zero,0x30(sp)
sw zero,0x34(sp)
sw a1,0x1c(sp)
sw a2,0x18(sp)
lw v1,0x0(s0)
sw v1,0x3c(sp)
beq a0,zero,0x000372f0
_lw t9,-0x7ed8(gp)
addiu v0,sp,0x20
or a1,a0,zero
addiu t9,t9,0x6e6c
bal 0x00036e6c
_or a0,v0,zero
lbu v0,0x34(sp)
lw gp,0x10(sp)
sltiu v0,v0,0x1
lw a0,0x3c(sp)
lw v1,0x0(s0)
bne a0,v1,0x000372f8
_lw ra,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x48
b 0x000372d4
_li v0,0x1
lw t9,-0x7ba0(gp)
jalr t9
_nop
(translation_unit "uint FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}\n\n" (function_definition "uint FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,undefined4 param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 uStack_70;" type_identifier identifier ;) (declaration "int iStack_6c;" primitive_type identifier ;) (declaration "int iStack_68;" primitive_type identifier ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "undefined4 uStack_60;" type_identifier identifier ;) (declaration "undefined4 *puStack_58;" type_identifier (pointer_declarator "*puStack_58" * identifier) ;) (declaration "uint uStack_54;" type_identifier identifier ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "code *pcStack_4c;" type_identifier (pointer_declarator "*pcStack_4c" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "undefined4 *local_10;" type_identifier (pointer_declarator "*local_10" * identifier) ;) (declaration "undefined4 *local_c;" type_identifier (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "local_24 = PTR_LAB_0015b6c0 + -0x7210;" (assignment_expression "local_24 = PTR_LAB_0015b6c0 + -0x7210" identifier = (binary_expression "PTR_LAB_0015b6c0 + -0x7210" identifier + number_literal)) ;) (expression_statement "local_10 = &local_30;" (assignment_expression "local_10 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" identifier = number_literal) ;) (expression_statement "local_18 = 0;" (assignment_expression "local_18 = 0" identifier = number_literal) ;) (expression_statement "local_14 = 0;" (assignment_expression "local_14 = 0" identifier = number_literal) ;) (expression_statement "local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_30 = param_3;" (assignment_expression "local_30 = param_3" identifier = identifier) ;) (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" identifier = identifier) ;) (if_statement "if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" if (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = 1;\n  }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" else (compound_statement "{\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" { (expression_statement "FUN_00036e6c(&local_28);" (call_expression "FUN_00036e6c(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "uVar2 = (uint)(local_14._0_1_ == '\0');" (assignment_expression "uVar2 = (uint)(local_14._0_1_ == '\0')" identifier = (call_expression "(uint)(local_14._0_1_ == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_14._0_1_ == '\0')" ( (binary_expression "local_14._0_1_ == '\0'" (field_expression "local_14._0_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) (expression_statement "param_2 = param_1;" (assignment_expression "param_2 = param_1" identifier = identifier) ;) }))) (if_statement "if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_c == *(undefined4 **)puVar1)" ( (binary_expression "local_c == *(undefined4 **)puVar1" identifier == (pointer_expression "*(undefined4 **)puVar1" * (cast_expression "(undefined4 **)puVar1" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar7 = FUN_00037304;" (assignment_expression "pcVar7 = FUN_00037304" identifier = identifier) ;) (expression_statement "puVar3 = local_c;" (assignment_expression "puVar3 = local_c" identifier = identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar6 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;" (assignment_expression "iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac" identifier = (binary_expression "*(int *)(puVar6 + 0x124410) + 0x18ac" (pointer_expression "*(int *)(puVar6 + 0x124410)" * (cast_expression "(int *)(puVar6 + 0x124410)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x124410)" ( (binary_expression "puVar6 + 0x124410" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puStack_50 = puVar1;" (assignment_expression "puStack_50 = puVar1" identifier = identifier) ;) (expression_statement "puVar4 = *(uint **)(puVar6 + 0x124728);" (assignment_expression "puVar4 = *(uint **)(puVar6 + 0x124728)" identifier = (pointer_expression "*(uint **)(puVar6 + 0x124728)" * (cast_expression "(uint **)(puVar6 + 0x124728)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x124728)" ( (binary_expression "puVar6 + 0x124728" identifier + number_literal) ))))) ;) (expression_statement "iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;" (assignment_expression "iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c" identifier = (binary_expression "*(int *)(puVar6 + 0x124358) + -0xb1c" (pointer_expression "*(int *)(puVar6 + 0x124358)" * (cast_expression "(int *)(puVar6 + 0x124358)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x124358)" ( (binary_expression "puVar6 + 0x124358" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uStack_60 = 0;" (assignment_expression "uStack_60 = 0" identifier = number_literal) ;) (expression_statement "uStack_54 = *puVar4;" (assignment_expression "uStack_54 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "uStack_70 = 0;" (assignment_expression "uStack_70 = 0" identifier = number_literal) ;) (expression_statement "iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;" (assignment_expression "iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08" identifier = (binary_expression "*(int *)(puVar6 + 0x124358) + -0xb08" (pointer_expression "*(int *)(puVar6 + 0x124358)" * (cast_expression "(int *)(puVar6 + 0x124358)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x124358)" ( (binary_expression "puVar6 + 0x124358" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puStack_58 = puVar3;" (assignment_expression "puStack_58 = puVar3" identifier = identifier) ;) (expression_statement "pcStack_4c = pcVar7;" (assignment_expression "pcStack_4c = pcVar7" identifier = identifier) ;) (if_statement "if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }" if (parenthesized_expression "(param_2 != (uint *)0x0)" ( (binary_expression "param_2 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }" { (expression_statement "puVar3 = &uStack_70;" (assignment_expression "puVar3 = &uStack_70" identifier = (pointer_expression "&uStack_70" & identifier)) ;) (expression_statement "FUN_00036e6c(puVar3);" (call_expression "FUN_00036e6c(puVar3)" identifier (argument_list "(puVar3)" ( identifier ))) ;) })) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uStack_54 == uVar2) {\n    return uVar2;\n  }" if (parenthesized_expression "(uStack_54 == uVar2)" ( (binary_expression "uStack_54 == uVar2" identifier == identifier) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (**(code **)(puVar6 + 0x12470c))();" (assignment_expression "uVar2 = (**(code **)(puVar6 + 0x12470c))()" identifier = (call_expression "(**(code **)(puVar6 + 0x12470c))()" (parenthesized_expression "(**(code **)(puVar6 + 0x12470c))" ( (pointer_expression "**(code **)(puVar6 + 0x12470c)" * (pointer_expression "*(code **)(puVar6 + 0x12470c)" * (cast_expression "(code **)(puVar6 + 0x12470c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x12470c)" ( (binary_expression "puVar6 + 0x12470c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" if (parenthesized_expression "(param_2 != (uint *)0x0)" ( (binary_expression "param_2 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" { (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "puVar4 = param_2 + 1;" (assignment_expression "puVar4 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (if_statement "if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }" if (parenthesized_expression "(0 < (int)uVar2)" ( (binary_expression "0 < (int)uVar2" number_literal < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);" do (compound_statement "{\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00037304(puVar3,*puVar4);" (call_expression "FUN_00037304(puVar3,*puVar4)" identifier (argument_list "(puVar3,*puVar4)" ( identifier , (pointer_expression "*puVar4" * identifier) ))) ;) (expression_statement "uVar2 = (uint)(iVar5 < (int)*param_2);" (assignment_expression "uVar2 = (uint)(iVar5 < (int)*param_2)" identifier = (call_expression "(uint)(iVar5 < (int)*param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < (int)*param_2)" ( (binary_expression "iVar5 < (int)*param_2" identifier < (cast_expression "(int)*param_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_2" * identifier))) )))) ;) (expression_statement "puVar4 = puVar4 + 5;" (assignment_expression "puVar4 = puVar4 + 5" identifier = (binary_expression "puVar4 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) })) (return_statement "return uVar2;" return identifier ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit "int sqlite3ExprCoveredByIndex(Expr *pExpr,int iCur,Index *pIdx)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  Select *pSVar3;\n  int iVar4;\n  uint uVar5;\n  NameContext *pNVar6;\n  int *piVar7;\n  u32 *puVar8;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined1 auStack_70 [28];\n  Select *pSStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  IdxCover xcov;\n  Walker w;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_0015b6c0 + -0x7210);\n  w.u.pNC = (NameContext *)&xcov;\n  w.pParse = (Parse *)0x0;\n  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)0x0;\n  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n  w.walkerDepth = 0;\n  w.eCode = '\0';\n  w._21_3_ = 0;\n  pNVar6 = *(NameContext **)PTR___stack_chk_guard_0015ba2c;\n  xcov.pIdx = pIdx;\n  xcov.iCur = iCur;\n  if (pExpr == (Expr *)0x0) {\n    uVar2 = 1;\n    pExpr = (Expr *)iCur;\n  }\n  else {\n    walkExpr(&w,pExpr);\n    uVar2 = (uint)(w.eCode == '\0');\n  }\n  if (pNVar6 == *(NameContext **)puVar1) {\n    return uVar2;\n  }\n  pcVar10 = sqlite3ExprAnalyzeAggregates;\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  auStack_70._4_4_ = *(int *)(puVar9 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  piVar7 = *(int **)(puVar9 + 0x124728);\n  auStack_70._8_4_ = *(int *)(puVar9 + 0x124358) + -0xb1c;\n  auStack_70._16_4_ = 0;\n  pSStack_54 = (Select *)*piVar7;\n  auStack_70._0_4_ = (Parse *)0x0;\n  auStack_70._12_4_ = *(int *)(puVar9 + 0x124358) + -0xb08;\n  auStack_70._24_4_ = pNVar6;\n  pcStack_4c = pcVar10;\n  if (pExpr != (Expr *)0x0) {\n    pNVar6 = (NameContext *)auStack_70;\n    walkExpr((Walker *)pNVar6,pExpr);\n  }\n  pSVar3 = (Select *)*piVar7;\n  if (pSStack_54 == pSVar3) {\n    return (int)pSVar3;\n  }\n  iVar4 = (**(code **)(puVar9 + 0x12470c))();\n  if (pExpr != (Expr *)0x0) {\n    uVar2._0_1_ = pExpr->op;\n    uVar2._1_1_ = pExpr->affinity;\n    uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n    puVar8 = &pExpr->flags;\n    if (0 < (int)uVar2) {\n      iVar4 = 0;\n      do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return iVar4;\n}\n\n" (function_definition "int sqlite3ExprCoveredByIndex(Expr *pExpr,int iCur,Index *pIdx)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  Select *pSVar3;\n  int iVar4;\n  uint uVar5;\n  NameContext *pNVar6;\n  int *piVar7;\n  u32 *puVar8;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined1 auStack_70 [28];\n  Select *pSStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  IdxCover xcov;\n  Walker w;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_0015b6c0 + -0x7210);\n  w.u.pNC = (NameContext *)&xcov;\n  w.pParse = (Parse *)0x0;\n  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)0x0;\n  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n  w.walkerDepth = 0;\n  w.eCode = '\0';\n  w._21_3_ = 0;\n  pNVar6 = *(NameContext **)PTR___stack_chk_guard_0015ba2c;\n  xcov.pIdx = pIdx;\n  xcov.iCur = iCur;\n  if (pExpr == (Expr *)0x0) {\n    uVar2 = 1;\n    pExpr = (Expr *)iCur;\n  }\n  else {\n    walkExpr(&w,pExpr);\n    uVar2 = (uint)(w.eCode == '\0');\n  }\n  if (pNVar6 == *(NameContext **)puVar1) {\n    return uVar2;\n  }\n  pcVar10 = sqlite3ExprAnalyzeAggregates;\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  auStack_70._4_4_ = *(int *)(puVar9 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  piVar7 = *(int **)(puVar9 + 0x124728);\n  auStack_70._8_4_ = *(int *)(puVar9 + 0x124358) + -0xb1c;\n  auStack_70._16_4_ = 0;\n  pSStack_54 = (Select *)*piVar7;\n  auStack_70._0_4_ = (Parse *)0x0;\n  auStack_70._12_4_ = *(int *)(puVar9 + 0x124358) + -0xb08;\n  auStack_70._24_4_ = pNVar6;\n  pcStack_4c = pcVar10;\n  if (pExpr != (Expr *)0x0) {\n    pNVar6 = (NameContext *)auStack_70;\n    walkExpr((Walker *)pNVar6,pExpr);\n  }\n  pSVar3 = (Select *)*piVar7;\n  if (pSStack_54 == pSVar3) {\n    return (int)pSVar3;\n  }\n  iVar4 = (**(code **)(puVar9 + 0x12470c))();\n  if (pExpr != (Expr *)0x0) {\n    uVar2._0_1_ = pExpr->op;\n    uVar2._1_1_ = pExpr->affinity;\n    uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n    puVar8 = &pExpr->flags;\n    if (0 < (int)uVar2) {\n      iVar4 = 0;\n      do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return iVar4;\n}" primitive_type (function_declarator "sqlite3ExprCoveredByIndex(Expr *pExpr,int iCur,Index *pIdx)" identifier (parameter_list "(Expr *pExpr,int iCur,Index *pIdx)" ( (parameter_declaration "Expr *pExpr" type_identifier (pointer_declarator "*pExpr" * identifier)) , (parameter_declaration "int iCur" primitive_type identifier) , (parameter_declaration "Index *pIdx" type_identifier (pointer_declarator "*pIdx" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  Select *pSVar3;\n  int iVar4;\n  uint uVar5;\n  NameContext *pNVar6;\n  int *piVar7;\n  u32 *puVar8;\n  undefined *puVar9;\n  code *pcVar10;\n  undefined1 auStack_70 [28];\n  Select *pSStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  IdxCover xcov;\n  Walker w;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_0015b6c0 + -0x7210);\n  w.u.pNC = (NameContext *)&xcov;\n  w.pParse = (Parse *)0x0;\n  w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)0x0;\n  w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;\n  w.walkerDepth = 0;\n  w.eCode = '\0';\n  w._21_3_ = 0;\n  pNVar6 = *(NameContext **)PTR___stack_chk_guard_0015ba2c;\n  xcov.pIdx = pIdx;\n  xcov.iCur = iCur;\n  if (pExpr == (Expr *)0x0) {\n    uVar2 = 1;\n    pExpr = (Expr *)iCur;\n  }\n  else {\n    walkExpr(&w,pExpr);\n    uVar2 = (uint)(w.eCode == '\0');\n  }\n  if (pNVar6 == *(NameContext **)puVar1) {\n    return uVar2;\n  }\n  pcVar10 = sqlite3ExprAnalyzeAggregates;\n  puVar9 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  auStack_70._4_4_ = *(int *)(puVar9 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  piVar7 = *(int **)(puVar9 + 0x124728);\n  auStack_70._8_4_ = *(int *)(puVar9 + 0x124358) + -0xb1c;\n  auStack_70._16_4_ = 0;\n  pSStack_54 = (Select *)*piVar7;\n  auStack_70._0_4_ = (Parse *)0x0;\n  auStack_70._12_4_ = *(int *)(puVar9 + 0x124358) + -0xb08;\n  auStack_70._24_4_ = pNVar6;\n  pcStack_4c = pcVar10;\n  if (pExpr != (Expr *)0x0) {\n    pNVar6 = (NameContext *)auStack_70;\n    walkExpr((Walker *)pNVar6,pExpr);\n  }\n  pSVar3 = (Select *)*piVar7;\n  if (pSStack_54 == pSVar3) {\n    return (int)pSVar3;\n  }\n  iVar4 = (**(code **)(puVar9 + 0x12470c))();\n  if (pExpr != (Expr *)0x0) {\n    uVar2._0_1_ = pExpr->op;\n    uVar2._1_1_ = pExpr->affinity;\n    uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n    puVar8 = &pExpr->flags;\n    if (0 < (int)uVar2) {\n      iVar4 = 0;\n      do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return iVar4;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "Select *pSVar3;" type_identifier (pointer_declarator "*pSVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "NameContext *pNVar6;" type_identifier (pointer_declarator "*pNVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "u32 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "undefined *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "code *pcVar10;" type_identifier (pointer_declarator "*pcVar10" * identifier) ;) (declaration "undefined1 auStack_70 [28];" type_identifier (array_declarator "auStack_70 [28]" identifier [ number_literal ]) ;) (declaration "Select *pSStack_54;" type_identifier (pointer_declarator "*pSStack_54" * identifier) ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "code *pcStack_4c;" type_identifier (pointer_declarator "*pcStack_4c" * identifier) ;) (declaration "IdxCover xcov;" type_identifier identifier ;) (declaration "Walker w;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_0015b6c0 + -0x7210);" (assignment_expression "w.xExprCallback = (_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_0015b6c0 + -0x7210)" (field_expression "w.xExprCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Expr_ptr *)(PTR_LAB_0015b6c0 + -0x7210)" ( (type_descriptor "_func_int_Walker_ptr_Expr_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0015b6c0 + -0x7210)" ( (binary_expression "PTR_LAB_0015b6c0 + -0x7210" identifier + number_literal) )))) ;) (expression_statement "w.u.pNC = (NameContext *)&xcov;" (assignment_expression "w.u.pNC = (NameContext *)&xcov" (field_expression "w.u.pNC" (field_expression "w.u" identifier . field_identifier) . field_identifier) = (cast_expression "(NameContext *)&xcov" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&xcov" & identifier))) ;) (expression_statement "w.pParse = (Parse *)0x0;" (assignment_expression "w.pParse = (Parse *)0x0" (field_expression "w.pParse" identifier . field_identifier) = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)0x0;" (assignment_expression "w.xSelectCallback = (_func_int_Walker_ptr_Select_ptr *)0x0" (field_expression "w.xSelectCallback" identifier . field_identifier) = (cast_expression "(_func_int_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0;" (assignment_expression "w.xSelectCallback2 = (_func_void_Walker_ptr_Select_ptr *)0x0" (field_expression "w.xSelectCallback2" identifier . field_identifier) = (cast_expression "(_func_void_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_void_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "w.walkerDepth = 0;" (assignment_expression "w.walkerDepth = 0" (field_expression "w.walkerDepth" identifier . field_identifier) = number_literal) ;) (expression_statement "w.eCode = '\0';" (assignment_expression "w.eCode = '\0'" (field_expression "w.eCode" identifier . field_identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "w._21_3_ = 0;" (assignment_expression "w._21_3_ = 0" (field_expression "w._21_3_" identifier . field_identifier) = number_literal) ;) (expression_statement "pNVar6 = *(NameContext **)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "pNVar6 = *(NameContext **)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(NameContext **)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(NameContext **)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "NameContext **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "xcov.pIdx = pIdx;" (assignment_expression "xcov.pIdx = pIdx" (field_expression "xcov.pIdx" identifier . field_identifier) = identifier) ;) (expression_statement "xcov.iCur = iCur;" (assignment_expression "xcov.iCur = iCur" (field_expression "xcov.iCur" identifier . field_identifier) = identifier) ;) (if_statement "if (pExpr == (Expr *)0x0) {\n    uVar2 = 1;\n    pExpr = (Expr *)iCur;\n  }\n  else {\n    walkExpr(&w,pExpr);\n    uVar2 = (uint)(w.eCode == '\0');\n  }" if (parenthesized_expression "(pExpr == (Expr *)0x0)" ( (binary_expression "pExpr == (Expr *)0x0" identifier == (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = 1;\n    pExpr = (Expr *)iCur;\n  }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) (expression_statement "pExpr = (Expr *)iCur;" (assignment_expression "pExpr = (Expr *)iCur" identifier = (cast_expression "(Expr *)iCur" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) (else_clause "else {\n    walkExpr(&w,pExpr);\n    uVar2 = (uint)(w.eCode == '\0');\n  }" else (compound_statement "{\n    walkExpr(&w,pExpr);\n    uVar2 = (uint)(w.eCode == '\0');\n  }" { (expression_statement "walkExpr(&w,pExpr);" (call_expression "walkExpr(&w,pExpr)" identifier (argument_list "(&w,pExpr)" ( (pointer_expression "&w" & identifier) , identifier ))) ;) (expression_statement "uVar2 = (uint)(w.eCode == '\0');" (assignment_expression "uVar2 = (uint)(w.eCode == '\0')" identifier = (call_expression "(uint)(w.eCode == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(w.eCode == '\0')" ( (binary_expression "w.eCode == '\0'" (field_expression "w.eCode" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) }))) (if_statement "if (pNVar6 == *(NameContext **)puVar1) {\n    return uVar2;\n  }" if (parenthesized_expression "(pNVar6 == *(NameContext **)puVar1)" ( (binary_expression "pNVar6 == *(NameContext **)puVar1" identifier == (pointer_expression "*(NameContext **)puVar1" * (cast_expression "(NameContext **)puVar1" ( (type_descriptor "NameContext **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar10 = sqlite3ExprAnalyzeAggregates;" (assignment_expression "pcVar10 = sqlite3ExprAnalyzeAggregates" identifier = identifier) ;) (expression_statement "puVar9 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar9 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "auStack_70._4_4_ = *(int *)(puVar9 + 0x124410) + 0x18ac;" (assignment_expression "auStack_70._4_4_ = *(int *)(puVar9 + 0x124410) + 0x18ac" (field_expression "auStack_70._4_4_" identifier . field_identifier) = (binary_expression "*(int *)(puVar9 + 0x124410) + 0x18ac" (pointer_expression "*(int *)(puVar9 + 0x124410)" * (cast_expression "(int *)(puVar9 + 0x124410)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x124410)" ( (binary_expression "puVar9 + 0x124410" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puStack_50 = puVar1;" (assignment_expression "puStack_50 = puVar1" identifier = identifier) ;) (expression_statement "piVar7 = *(int **)(puVar9 + 0x124728);" (assignment_expression "piVar7 = *(int **)(puVar9 + 0x124728)" identifier = (pointer_expression "*(int **)(puVar9 + 0x124728)" * (cast_expression "(int **)(puVar9 + 0x124728)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x124728)" ( (binary_expression "puVar9 + 0x124728" identifier + number_literal) ))))) ;) (expression_statement "auStack_70._8_4_ = *(int *)(puVar9 + 0x124358) + -0xb1c;" (assignment_expression "auStack_70._8_4_ = *(int *)(puVar9 + 0x124358) + -0xb1c" (field_expression "auStack_70._8_4_" identifier . field_identifier) = (binary_expression "*(int *)(puVar9 + 0x124358) + -0xb1c" (pointer_expression "*(int *)(puVar9 + 0x124358)" * (cast_expression "(int *)(puVar9 + 0x124358)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x124358)" ( (binary_expression "puVar9 + 0x124358" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auStack_70._16_4_ = 0;" (assignment_expression "auStack_70._16_4_ = 0" (field_expression "auStack_70._16_4_" identifier . field_identifier) = number_literal) ;) (expression_statement "pSStack_54 = (Select *)*piVar7;" (assignment_expression "pSStack_54 = (Select *)*piVar7" identifier = (cast_expression "(Select *)*piVar7" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (expression_statement "auStack_70._0_4_ = (Parse *)0x0;" (assignment_expression "auStack_70._0_4_ = (Parse *)0x0" (field_expression "auStack_70._0_4_" identifier . field_identifier) = (cast_expression "(Parse *)0x0" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "auStack_70._12_4_ = *(int *)(puVar9 + 0x124358) + -0xb08;" (assignment_expression "auStack_70._12_4_ = *(int *)(puVar9 + 0x124358) + -0xb08" (field_expression "auStack_70._12_4_" identifier . field_identifier) = (binary_expression "*(int *)(puVar9 + 0x124358) + -0xb08" (pointer_expression "*(int *)(puVar9 + 0x124358)" * (cast_expression "(int *)(puVar9 + 0x124358)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 0x124358)" ( (binary_expression "puVar9 + 0x124358" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "auStack_70._24_4_ = pNVar6;" (assignment_expression "auStack_70._24_4_ = pNVar6" (field_expression "auStack_70._24_4_" identifier . field_identifier) = identifier) ;) (expression_statement "pcStack_4c = pcVar10;" (assignment_expression "pcStack_4c = pcVar10" identifier = identifier) ;) (if_statement "if (pExpr != (Expr *)0x0) {\n    pNVar6 = (NameContext *)auStack_70;\n    walkExpr((Walker *)pNVar6,pExpr);\n  }" if (parenthesized_expression "(pExpr != (Expr *)0x0)" ( (binary_expression "pExpr != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pNVar6 = (NameContext *)auStack_70;\n    walkExpr((Walker *)pNVar6,pExpr);\n  }" { (expression_statement "pNVar6 = (NameContext *)auStack_70;" (assignment_expression "pNVar6 = (NameContext *)auStack_70" identifier = (cast_expression "(NameContext *)auStack_70" ( (type_descriptor "NameContext *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "walkExpr((Walker *)pNVar6,pExpr);" (call_expression "walkExpr((Walker *)pNVar6,pExpr)" identifier (argument_list "((Walker *)pNVar6,pExpr)" ( (cast_expression "(Walker *)pNVar6" ( (type_descriptor "Walker *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) })) (expression_statement "pSVar3 = (Select *)*piVar7;" (assignment_expression "pSVar3 = (Select *)*piVar7" identifier = (cast_expression "(Select *)*piVar7" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (if_statement "if (pSStack_54 == pSVar3) {\n    return (int)pSVar3;\n  }" if (parenthesized_expression "(pSStack_54 == pSVar3)" ( (binary_expression "pSStack_54 == pSVar3" identifier == identifier) )) (compound_statement "{\n    return (int)pSVar3;\n  }" { (return_statement "return (int)pSVar3;" return (cast_expression "(int)pSVar3" ( (type_descriptor "int" primitive_type) ) identifier) ;) })) (expression_statement "iVar4 = (**(code **)(puVar9 + 0x12470c))();" (assignment_expression "iVar4 = (**(code **)(puVar9 + 0x12470c))()" identifier = (call_expression "(**(code **)(puVar9 + 0x12470c))()" (parenthesized_expression "(**(code **)(puVar9 + 0x12470c))" ( (pointer_expression "**(code **)(puVar9 + 0x12470c)" * (pointer_expression "*(code **)(puVar9 + 0x12470c)" * (cast_expression "(code **)(puVar9 + 0x12470c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar9 + 0x12470c)" ( (binary_expression "puVar9 + 0x12470c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (pExpr != (Expr *)0x0) {\n    uVar2._0_1_ = pExpr->op;\n    uVar2._1_1_ = pExpr->affinity;\n    uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n    puVar8 = &pExpr->flags;\n    if (0 < (int)uVar2) {\n      iVar4 = 0;\n      do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" if (parenthesized_expression "(pExpr != (Expr *)0x0)" ( (binary_expression "pExpr != (Expr *)0x0" identifier != (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2._0_1_ = pExpr->op;\n    uVar2._1_1_ = pExpr->affinity;\n    uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n    puVar8 = &pExpr->flags;\n    if (0 < (int)uVar2) {\n      iVar4 = 0;\n      do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" { (expression_statement "uVar2._0_1_ = pExpr->op;" (assignment_expression "uVar2._0_1_ = pExpr->op" (field_expression "uVar2._0_1_" identifier . field_identifier) = (field_expression "pExpr->op" identifier -> field_identifier)) ;) (expression_statement "uVar2._1_1_ = pExpr->affinity;" (assignment_expression "uVar2._1_1_ = pExpr->affinity" (field_expression "uVar2._1_1_" identifier . field_identifier) = (field_expression "pExpr->affinity" identifier -> field_identifier)) ;) (expression_statement "uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2;" (assignment_expression "uVar2._2_2_ = *(undefined2 *)&pExpr->field_0x2" (field_expression "uVar2._2_2_" identifier . field_identifier) = (pointer_expression "*(undefined2 *)&pExpr->field_0x2" * (cast_expression "(undefined2 *)&pExpr->field_0x2" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pExpr->field_0x2" & (field_expression "pExpr->field_0x2" identifier -> field_identifier))))) ;) (expression_statement "puVar8 = &pExpr->flags;" (assignment_expression "puVar8 = &pExpr->flags" identifier = (pointer_expression "&pExpr->flags" & (field_expression "pExpr->flags" identifier -> field_identifier))) ;) (if_statement "if (0 < (int)uVar2) {\n      iVar4 = 0;\n      do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);\n    }" if (parenthesized_expression "(0 < (int)uVar2)" ( (binary_expression "0 < (int)uVar2" number_literal < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar4 = 0;\n      do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      } while (uVar2 != 0);" do (compound_statement "{\n        iVar4 = iVar4 + 1;\n        sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);\n        uVar5._0_1_ = pExpr->op;\n        uVar5._1_1_ = pExpr->affinity;\n        uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;\n        uVar2 = (uint)(iVar4 < (int)uVar5);\n        puVar8 = puVar8 + 5;\n      }" { (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8);" (call_expression "sqlite3ExprAnalyzeAggregates(pNVar6,(Expr *)*puVar8)" identifier (argument_list "(pNVar6,(Expr *)*puVar8)" ( identifier , (cast_expression "(Expr *)*puVar8" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar8" * identifier)) ))) ;) (expression_statement "uVar5._0_1_ = pExpr->op;" (assignment_expression "uVar5._0_1_ = pExpr->op" (field_expression "uVar5._0_1_" identifier . field_identifier) = (field_expression "pExpr->op" identifier -> field_identifier)) ;) (expression_statement "uVar5._1_1_ = pExpr->affinity;" (assignment_expression "uVar5._1_1_ = pExpr->affinity" (field_expression "uVar5._1_1_" identifier . field_identifier) = (field_expression "pExpr->affinity" identifier -> field_identifier)) ;) (expression_statement "uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2;" (assignment_expression "uVar5._2_2_ = *(undefined2 *)&pExpr->field_0x2" (field_expression "uVar5._2_2_" identifier . field_identifier) = (pointer_expression "*(undefined2 *)&pExpr->field_0x2" * (cast_expression "(undefined2 *)&pExpr->field_0x2" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pExpr->field_0x2" & (field_expression "pExpr->field_0x2" identifier -> field_identifier))))) ;) (expression_statement "uVar2 = (uint)(iVar4 < (int)uVar5);" (assignment_expression "uVar2 = (uint)(iVar4 < (int)uVar5)" identifier = (call_expression "(uint)(iVar4 < (int)uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar4 < (int)uVar5)" ( (binary_expression "iVar4 < (int)uVar5" identifier < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar8 = puVar8 + 5;" (assignment_expression "puVar8 = puVar8 + 5" identifier = (binary_expression "puVar8 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) })) (return_statement "return uVar2;" return identifier ;) })) (return_statement "return iVar4;" return identifier ;) })))
(translation_unit "uint FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}\n\n" (function_definition "uint FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}" type_identifier (function_declarator "FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)" identifier (parameter_list "(uint *param_1,uint *param_2,undefined4 param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined4 uStack_70;" type_identifier identifier ;) (declaration "int iStack_6c;" primitive_type identifier ;) (declaration "int iStack_68;" primitive_type identifier ;) (declaration "int iStack_64;" primitive_type identifier ;) (declaration "undefined4 uStack_60;" type_identifier identifier ;) (declaration "undefined4 *puStack_58;" type_identifier (pointer_declarator "*puStack_58" * identifier) ;) (declaration "uint uStack_54;" type_identifier identifier ;) (declaration "undefined *puStack_50;" type_identifier (pointer_declarator "*puStack_50" * identifier) ;) (declaration "code *pcStack_4c;" type_identifier (pointer_declarator "*pcStack_4c" * identifier) ;) (declaration "undefined4 local_30;" type_identifier identifier ;) (declaration "uint *local_2c;" type_identifier (pointer_declarator "*local_2c" * identifier) ;) (declaration "undefined4 local_28;" type_identifier identifier ;) (declaration "undefined *local_24;" type_identifier (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 local_20;" type_identifier identifier ;) (declaration "undefined4 local_1c;" type_identifier identifier ;) (declaration "undefined4 local_18;" type_identifier identifier ;) (declaration "undefined4 local_14;" type_identifier identifier ;) (declaration "undefined4 *local_10;" type_identifier (pointer_declarator "*local_10" * identifier) ;) (declaration "undefined4 *local_c;" type_identifier (pointer_declarator "*local_c" * identifier) ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" identifier = identifier) ;) (expression_statement "local_24 = PTR_LAB_0015b6c0 + -0x7210;" (assignment_expression "local_24 = PTR_LAB_0015b6c0 + -0x7210" identifier = (binary_expression "PTR_LAB_0015b6c0 + -0x7210" identifier + number_literal)) ;) (expression_statement "local_10 = &local_30;" (assignment_expression "local_10 = &local_30" identifier = (pointer_expression "&local_30" & identifier)) ;) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" identifier = number_literal) ;) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" identifier = number_literal) ;) (expression_statement "local_18 = 0;" (assignment_expression "local_18 = 0" identifier = number_literal) ;) (expression_statement "local_14 = 0;" (assignment_expression "local_14 = 0" identifier = number_literal) ;) (expression_statement "local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c" identifier = (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_0015ba2c" * (cast_expression "(undefined4 **)PTR___stack_chk_guard_0015ba2c" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_30 = param_3;" (assignment_expression "local_30 = param_3" identifier = identifier) ;) (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" identifier = identifier) ;) (if_statement "if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" if (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = 1;\n  }" { (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" else (compound_statement "{\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" { (expression_statement "FUN_00036e6c(&local_28);" (call_expression "FUN_00036e6c(&local_28)" identifier (argument_list "(&local_28)" ( (pointer_expression "&local_28" & identifier) ))) ;) (expression_statement "uVar2 = (uint)(local_14._0_1_ == '\0');" (assignment_expression "uVar2 = (uint)(local_14._0_1_ == '\0')" identifier = (call_expression "(uint)(local_14._0_1_ == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_14._0_1_ == '\0')" ( (binary_expression "local_14._0_1_ == '\0'" (field_expression "local_14._0_1_" identifier . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) (expression_statement "param_2 = param_1;" (assignment_expression "param_2 = param_1" identifier = identifier) ;) }))) (if_statement "if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }" if (parenthesized_expression "(local_c == *(undefined4 **)puVar1)" ( (binary_expression "local_c == *(undefined4 **)puVar1" identifier == (pointer_expression "*(undefined4 **)puVar1" * (cast_expression "(undefined4 **)puVar1" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "pcVar7 = FUN_00037304;" (assignment_expression "pcVar7 = FUN_00037304" identifier = identifier) ;) (expression_statement "puVar3 = local_c;" (assignment_expression "puVar3 = local_c" identifier = identifier) ;) (expression_statement "puVar6 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar6 = PTR___stack_chk_fail_0015ba10" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" * (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;" (assignment_expression "iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac" identifier = (binary_expression "*(int *)(puVar6 + 0x124410) + 0x18ac" (pointer_expression "*(int *)(puVar6 + 0x124410)" * (cast_expression "(int *)(puVar6 + 0x124410)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x124410)" ( (binary_expression "puVar6 + 0x124410" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puStack_50 = puVar1;" (assignment_expression "puStack_50 = puVar1" identifier = identifier) ;) (expression_statement "puVar4 = *(uint **)(puVar6 + 0x124728);" (assignment_expression "puVar4 = *(uint **)(puVar6 + 0x124728)" identifier = (pointer_expression "*(uint **)(puVar6 + 0x124728)" * (cast_expression "(uint **)(puVar6 + 0x124728)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x124728)" ( (binary_expression "puVar6 + 0x124728" identifier + number_literal) ))))) ;) (expression_statement "iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;" (assignment_expression "iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c" identifier = (binary_expression "*(int *)(puVar6 + 0x124358) + -0xb1c" (pointer_expression "*(int *)(puVar6 + 0x124358)" * (cast_expression "(int *)(puVar6 + 0x124358)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x124358)" ( (binary_expression "puVar6 + 0x124358" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "uStack_60 = 0;" (assignment_expression "uStack_60 = 0" identifier = number_literal) ;) (expression_statement "uStack_54 = *puVar4;" (assignment_expression "uStack_54 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (expression_statement "uStack_70 = 0;" (assignment_expression "uStack_70 = 0" identifier = number_literal) ;) (expression_statement "iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;" (assignment_expression "iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08" identifier = (binary_expression "*(int *)(puVar6 + 0x124358) + -0xb08" (pointer_expression "*(int *)(puVar6 + 0x124358)" * (cast_expression "(int *)(puVar6 + 0x124358)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 0x124358)" ( (binary_expression "puVar6 + 0x124358" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "puStack_58 = puVar3;" (assignment_expression "puStack_58 = puVar3" identifier = identifier) ;) (expression_statement "pcStack_4c = pcVar7;" (assignment_expression "pcStack_4c = pcVar7" identifier = identifier) ;) (if_statement "if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }" if (parenthesized_expression "(param_2 != (uint *)0x0)" ( (binary_expression "param_2 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }" { (expression_statement "puVar3 = &uStack_70;" (assignment_expression "puVar3 = &uStack_70" identifier = (pointer_expression "&uStack_70" & identifier)) ;) (expression_statement "FUN_00036e6c(puVar3);" (call_expression "FUN_00036e6c(puVar3)" identifier (argument_list "(puVar3)" ( identifier ))) ;) })) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" identifier = (pointer_expression "*puVar4" * identifier)) ;) (if_statement "if (uStack_54 == uVar2) {\n    return uVar2;\n  }" if (parenthesized_expression "(uStack_54 == uVar2)" ( (binary_expression "uStack_54 == uVar2" identifier == identifier) )) (compound_statement "{\n    return uVar2;\n  }" { (return_statement "return uVar2;" return identifier ;) })) (expression_statement "uVar2 = (**(code **)(puVar6 + 0x12470c))();" (assignment_expression "uVar2 = (**(code **)(puVar6 + 0x12470c))()" identifier = (call_expression "(**(code **)(puVar6 + 0x12470c))()" (parenthesized_expression "(**(code **)(puVar6 + 0x12470c))" ( (pointer_expression "**(code **)(puVar6 + 0x12470c)" * (pointer_expression "*(code **)(puVar6 + 0x12470c)" * (cast_expression "(code **)(puVar6 + 0x12470c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar6 + 0x12470c)" ( (binary_expression "puVar6 + 0x12470c" identifier + number_literal) ))))) )) (argument_list "()" ( )))) ;) (if_statement "if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" if (parenthesized_expression "(param_2 != (uint *)0x0)" ( (binary_expression "param_2 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" { (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "puVar4 = param_2 + 1;" (assignment_expression "puVar4 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (if_statement "if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }" if (parenthesized_expression "(0 < (int)uVar2)" ( (binary_expression "0 < (int)uVar2" number_literal < (cast_expression "(int)uVar2" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);" do (compound_statement "{\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00037304(puVar3,*puVar4);" (call_expression "FUN_00037304(puVar3,*puVar4)" identifier (argument_list "(puVar3,*puVar4)" ( identifier , (pointer_expression "*puVar4" * identifier) ))) ;) (expression_statement "uVar2 = (uint)(iVar5 < (int)*param_2);" (assignment_expression "uVar2 = (uint)(iVar5 < (int)*param_2)" identifier = (call_expression "(uint)(iVar5 < (int)*param_2)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 < (int)*param_2)" ( (binary_expression "iVar5 < (int)*param_2" identifier < (cast_expression "(int)*param_2" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*param_2" * identifier))) )))) ;) (expression_statement "puVar4 = puVar4 + 5;" (assignment_expression "puVar4 = puVar4 + 5" identifier = (binary_expression "puVar4 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar2 != 0)" ( (binary_expression "uVar2 != 0" identifier != number_literal) )) ;) })) (return_statement "return uVar2;" return identifier ;) })) (return_statement "return uVar2;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (field_expression IDENT . field_identifier) == (char_literal ' escape_sequence ')) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = 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 = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 & IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( )))) ;) (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "uint FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)\n\n{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}" (type_identifier "uint") (function_declarator "FUN_00037254(uint *param_1,uint *param_2,undefined4 param_3)" (identifier "FUN_00037254") (parameter_list "(uint *param_1,uint *param_2,undefined4 param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  uint uVar2;\n  undefined4 *puVar3;\n  uint *puVar4;\n  int iVar5;\n  undefined *puVar6;\n  code *pcVar7;\n  undefined4 uStack_70;\n  int iStack_6c;\n  int iStack_68;\n  int iStack_64;\n  undefined4 uStack_60;\n  undefined4 *puStack_58;\n  uint uStack_54;\n  undefined *puStack_50;\n  code *pcStack_4c;\n  undefined4 local_30;\n  uint *local_2c;\n  undefined4 local_28;\n  undefined *local_24;\n  undefined4 local_20;\n  undefined4 local_1c;\n  undefined4 local_18;\n  undefined4 local_14;\n  undefined4 *local_10;\n  undefined4 *local_c;\n  \n  puVar1 = PTR___stack_chk_guard_0015ba2c;\n  local_24 = PTR_LAB_0015b6c0 + -0x7210;\n  local_10 = &local_30;\n  local_28 = 0;\n  local_20 = 0;\n  local_1c = 0;\n  local_18 = 0;\n  local_14 = 0;\n  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;\n  local_30 = param_3;\n  local_2c = param_2;\n  if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }\n  if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }\n  pcVar7 = FUN_00037304;\n  puVar3 = local_c;\n  puVar6 = PTR___stack_chk_fail_0015ba10;\n  (*(code *)PTR___stack_chk_fail_0015ba10)();\n  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;\n  puStack_50 = puVar1;\n  puVar4 = *(uint **)(puVar6 + 0x124728);\n  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;\n  uStack_60 = 0;\n  uStack_54 = *puVar4;\n  uStack_70 = 0;\n  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;\n  puStack_58 = puVar3;\n  pcStack_4c = pcVar7;\n  if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }\n  uVar2 = *puVar4;\n  if (uStack_54 == uVar2) {\n    return uVar2;\n  }\n  uVar2 = (**(code **)(puVar6 + 0x12470c))();\n  if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }\n  return uVar2;\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "uint uVar2;" (type_identifier "uint") (identifier "uVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "undefined4 uStack_70;" (type_identifier "undefined4") (identifier "uStack_70") (; ";")) (declaration "int iStack_6c;" (primitive_type "int") (identifier "iStack_6c") (; ";")) (declaration "int iStack_68;" (primitive_type "int") (identifier "iStack_68") (; ";")) (declaration "int iStack_64;" (primitive_type "int") (identifier "iStack_64") (; ";")) (declaration "undefined4 uStack_60;" (type_identifier "undefined4") (identifier "uStack_60") (; ";")) (declaration "undefined4 *puStack_58;" (type_identifier "undefined4") (pointer_declarator "*puStack_58" (* "*") (identifier "puStack_58")) (; ";")) (declaration "uint uStack_54;" (type_identifier "uint") (identifier "uStack_54") (; ";")) (declaration "undefined *puStack_50;" (type_identifier "undefined") (pointer_declarator "*puStack_50" (* "*") (identifier "puStack_50")) (; ";")) (declaration "code *pcStack_4c;" (type_identifier "code") (pointer_declarator "*pcStack_4c" (* "*") (identifier "pcStack_4c")) (; ";")) (declaration "undefined4 local_30;" (type_identifier "undefined4") (identifier "local_30") (; ";")) (declaration "uint *local_2c;" (type_identifier "uint") (pointer_declarator "*local_2c" (* "*") (identifier "local_2c")) (; ";")) (declaration "undefined4 local_28;" (type_identifier "undefined4") (identifier "local_28") (; ";")) (declaration "undefined *local_24;" (type_identifier "undefined") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined4 local_20;" (type_identifier "undefined4") (identifier "local_20") (; ";")) (declaration "undefined4 local_1c;" (type_identifier "undefined4") (identifier "local_1c") (; ";")) (declaration "undefined4 local_18;" (type_identifier "undefined4") (identifier "local_18") (; ";")) (declaration "undefined4 local_14;" (type_identifier "undefined4") (identifier "local_14") (; ";")) (declaration "undefined4 *local_10;" (type_identifier "undefined4") (pointer_declarator "*local_10" (* "*") (identifier "local_10")) (; ";")) (declaration "undefined4 *local_c;" (type_identifier "undefined4") (pointer_declarator "*local_c" (* "*") (identifier "local_c")) (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_0015ba2c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0015ba2c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_0015ba2c")) (; ";")) (expression_statement "local_24 = PTR_LAB_0015b6c0 + -0x7210;" (assignment_expression "local_24 = PTR_LAB_0015b6c0 + -0x7210" (identifier "local_24") (= "=") (binary_expression "PTR_LAB_0015b6c0 + -0x7210" (identifier "PTR_LAB_0015b6c0") (+ "+") (number_literal "-0x7210"))) (; ";")) (expression_statement "local_10 = &local_30;" (assignment_expression "local_10 = &local_30" (identifier "local_10") (= "=") (pointer_expression "&local_30" (& "&") (identifier "local_30"))) (; ";")) (expression_statement "local_28 = 0;" (assignment_expression "local_28 = 0" (identifier "local_28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_1c = 0;" (assignment_expression "local_1c = 0" (identifier "local_1c") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_18 = 0;" (assignment_expression "local_18 = 0" (identifier "local_18") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_14 = 0;" (assignment_expression "local_14 = 0" (identifier "local_14") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;" (assignment_expression "local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c" (identifier "local_c") (= "=") (pointer_expression "*(undefined4 **)PTR___stack_chk_guard_0015ba2c" (* "*") (cast_expression "(undefined4 **)PTR___stack_chk_guard_0015ba2c" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR___stack_chk_guard_0015ba2c")))) (; ";")) (expression_statement "local_30 = param_3;" (assignment_expression "local_30 = param_3" (identifier "local_30") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_2c = param_2;" (assignment_expression "local_2c = param_2" (identifier "local_2c") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (param_1 == (uint *)0x0) {\n    uVar2 = 1;\n  }\n  else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" (if "if") (parenthesized_expression "(param_1 == (uint *)0x0)" (( "(") (binary_expression "param_1 == (uint *)0x0" (identifier "param_1") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar2 = 1;\n  }" ({ "{") (expression_statement "uVar2 = 1;" (assignment_expression "uVar2 = 1" (identifier "uVar2") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" (else "else") (compound_statement "{\n    FUN_00036e6c(&local_28);\n    uVar2 = (uint)(local_14._0_1_ == '\0');\n    param_2 = param_1;\n  }" ({ "{") (expression_statement "FUN_00036e6c(&local_28);" (call_expression "FUN_00036e6c(&local_28)" (identifier "FUN_00036e6c") (argument_list "(&local_28)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")"))) (; ";")) (expression_statement "uVar2 = (uint)(local_14._0_1_ == '\0');" (assignment_expression "uVar2 = (uint)(local_14._0_1_ == '\0')" (identifier "uVar2") (= "=") (call_expression "(uint)(local_14._0_1_ == '\0')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_14._0_1_ == '\0')" (( "(") (binary_expression "local_14._0_1_ == '\0'" (field_expression "local_14._0_1_" (identifier "local_14") (. ".") (field_identifier "_0_1_")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (; ";")) (expression_statement "param_2 = param_1;" (assignment_expression "param_2 = param_1" (identifier "param_2") (= "=") (identifier "param_1")) (; ";")) (} "}")))) (if_statement "if (local_c == *(undefined4 **)puVar1) {\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(local_c == *(undefined4 **)puVar1)" (( "(") (binary_expression "local_c == *(undefined4 **)puVar1" (identifier "local_c") (== "==") (pointer_expression "*(undefined4 **)puVar1" (* "*") (cast_expression "(undefined4 **)puVar1" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "pcVar7 = FUN_00037304;" (assignment_expression "pcVar7 = FUN_00037304" (identifier "pcVar7") (= "=") (identifier "FUN_00037304")) (; ";")) (expression_statement "puVar3 = local_c;" (assignment_expression "puVar3 = local_c" (identifier "puVar3") (= "=") (identifier "local_c")) (; ";")) (expression_statement "puVar6 = PTR___stack_chk_fail_0015ba10;" (assignment_expression "puVar6 = PTR___stack_chk_fail_0015ba10" (identifier "puVar6") (= "=") (identifier "PTR___stack_chk_fail_0015ba10")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0015ba10)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ba10)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ba10)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0015ba10" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0015ba10" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0015ba10"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;" (assignment_expression "iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac" (identifier "iStack_6c") (= "=") (binary_expression "*(int *)(puVar6 + 0x124410) + 0x18ac" (pointer_expression "*(int *)(puVar6 + 0x124410)" (* "*") (cast_expression "(int *)(puVar6 + 0x124410)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x124410)" (( "(") (binary_expression "puVar6 + 0x124410" (identifier "puVar6") (+ "+") (number_literal "0x124410")) () ")")))) (+ "+") (number_literal "0x18ac"))) (; ";")) (expression_statement "puStack_50 = puVar1;" (assignment_expression "puStack_50 = puVar1" (identifier "puStack_50") (= "=") (identifier "puVar1")) (; ";")) (expression_statement "puVar4 = *(uint **)(puVar6 + 0x124728);" (assignment_expression "puVar4 = *(uint **)(puVar6 + 0x124728)" (identifier "puVar4") (= "=") (pointer_expression "*(uint **)(puVar6 + 0x124728)" (* "*") (cast_expression "(uint **)(puVar6 + 0x124728)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + 0x124728)" (( "(") (binary_expression "puVar6 + 0x124728" (identifier "puVar6") (+ "+") (number_literal "0x124728")) () ")"))))) (; ";")) (expression_statement "iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;" (assignment_expression "iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c" (identifier "iStack_68") (= "=") (binary_expression "*(int *)(puVar6 + 0x124358) + -0xb1c" (pointer_expression "*(int *)(puVar6 + 0x124358)" (* "*") (cast_expression "(int *)(puVar6 + 0x124358)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x124358)" (( "(") (binary_expression "puVar6 + 0x124358" (identifier "puVar6") (+ "+") (number_literal "0x124358")) () ")")))) (+ "+") (number_literal "-0xb1c"))) (; ";")) (expression_statement "uStack_60 = 0;" (assignment_expression "uStack_60 = 0" (identifier "uStack_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_54 = *puVar4;" (assignment_expression "uStack_54 = *puVar4" (identifier "uStack_54") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (expression_statement "uStack_70 = 0;" (assignment_expression "uStack_70 = 0" (identifier "uStack_70") (= "=") (number_literal "0")) (; ";")) (expression_statement "iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;" (assignment_expression "iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08" (identifier "iStack_64") (= "=") (binary_expression "*(int *)(puVar6 + 0x124358) + -0xb08" (pointer_expression "*(int *)(puVar6 + 0x124358)" (* "*") (cast_expression "(int *)(puVar6 + 0x124358)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar6 + 0x124358)" (( "(") (binary_expression "puVar6 + 0x124358" (identifier "puVar6") (+ "+") (number_literal "0x124358")) () ")")))) (+ "+") (number_literal "-0xb08"))) (; ";")) (expression_statement "puStack_58 = puVar3;" (assignment_expression "puStack_58 = puVar3" (identifier "puStack_58") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "pcStack_4c = pcVar7;" (assignment_expression "pcStack_4c = pcVar7" (identifier "pcStack_4c") (= "=") (identifier "pcVar7")) (; ";")) (if_statement "if (param_2 != (uint *)0x0) {\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }" (if "if") (parenthesized_expression "(param_2 != (uint *)0x0)" (( "(") (binary_expression "param_2 != (uint *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar3 = &uStack_70;\n    FUN_00036e6c(puVar3);\n  }" ({ "{") (expression_statement "puVar3 = &uStack_70;" (assignment_expression "puVar3 = &uStack_70" (identifier "puVar3") (= "=") (pointer_expression "&uStack_70" (& "&") (identifier "uStack_70"))) (; ";")) (expression_statement "FUN_00036e6c(puVar3);" (call_expression "FUN_00036e6c(puVar3)" (identifier "FUN_00036e6c") (argument_list "(puVar3)" (( "(") (identifier "puVar3") () ")"))) (; ";")) (} "}"))) (expression_statement "uVar2 = *puVar4;" (assignment_expression "uVar2 = *puVar4" (identifier "uVar2") (= "=") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))) (; ";")) (if_statement "if (uStack_54 == uVar2) {\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(uStack_54 == uVar2)" (( "(") (binary_expression "uStack_54 == uVar2" (identifier "uStack_54") (== "==") (identifier "uVar2")) () ")")) (compound_statement "{\n    return uVar2;\n  }" ({ "{") (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (expression_statement "uVar2 = (**(code **)(puVar6 + 0x12470c))();" (assignment_expression "uVar2 = (**(code **)(puVar6 + 0x12470c))()" (identifier "uVar2") (= "=") (call_expression "(**(code **)(puVar6 + 0x12470c))()" (parenthesized_expression "(**(code **)(puVar6 + 0x12470c))" (( "(") (pointer_expression "**(code **)(puVar6 + 0x12470c)" (* "*") (pointer_expression "*(code **)(puVar6 + 0x12470c)" (* "*") (cast_expression "(code **)(puVar6 + 0x12470c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar6 + 0x12470c)" (( "(") (binary_expression "puVar6 + 0x12470c" (identifier "puVar6") (+ "+") (number_literal "0x12470c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (param_2 != (uint *)0x0) {\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" (if "if") (parenthesized_expression "(param_2 != (uint *)0x0)" (( "(") (binary_expression "param_2 != (uint *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    uVar2 = *param_2;\n    puVar4 = param_2 + 1;\n    if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }\n    return uVar2;\n  }" ({ "{") (expression_statement "uVar2 = *param_2;" (assignment_expression "uVar2 = *param_2" (identifier "uVar2") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "puVar4 = param_2 + 1;" (assignment_expression "puVar4 = param_2 + 1" (identifier "puVar4") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (0 < (int)uVar2) {\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }" (if "if") (parenthesized_expression "(0 < (int)uVar2)" (( "(") (binary_expression "0 < (int)uVar2" (number_literal "0") (< "<") (cast_expression "(int)uVar2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar2"))) () ")")) (compound_statement "{\n      iVar5 = 0;\n      do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);\n    }" ({ "{") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      } while (uVar2 != 0);" (do "do") (compound_statement "{\n        iVar5 = iVar5 + 1;\n        FUN_00037304(puVar3,*puVar4);\n        uVar2 = (uint)(iVar5 < (int)*param_2);\n        puVar4 = puVar4 + 5;\n      }" ({ "{") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00037304(puVar3,*puVar4);" (call_expression "FUN_00037304(puVar3,*puVar4)" (identifier "FUN_00037304") (argument_list "(puVar3,*puVar4)" (( "(") (identifier "puVar3") (, ",") (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) () ")"))) (; ";")) (expression_statement "uVar2 = (uint)(iVar5 < (int)*param_2);" (assignment_expression "uVar2 = (uint)(iVar5 < (int)*param_2)" (identifier "uVar2") (= "=") (call_expression "(uint)(iVar5 < (int)*param_2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 < (int)*param_2)" (( "(") (binary_expression "iVar5 < (int)*param_2" (identifier "iVar5") (< "<") (cast_expression "(int)*param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) () ")")))) (; ";")) (expression_statement "puVar4 = puVar4 + 5;" (assignment_expression "puVar4 = puVar4 + 5" (identifier "puVar4") (= "=") (binary_expression "puVar4 + 5" (identifier "puVar4") (+ "+") (number_literal "5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar2 != 0)" (( "(") (binary_expression "uVar2 != 0" (identifier "uVar2") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}"))) (return_statement "return uVar2;" (return "return") (identifier "uVar2") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (char_literal (escape_sequence))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (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: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list)))) (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (return_statement (identifier)))) (return_statement (identifier)))))

uint MASKED(uint *param_1,uint *param_2,undefined4 param_3)

{
  undefined *puVar1;
  uint uVar2;
  undefined4 *puVar3;
  uint *puVar4;
  int iVar5;
  undefined *puVar6;
  code *pcVar7;
  undefined4 uStack_70;
  int iStack_6c;
  int iStack_68;
  int iStack_64;
  undefined4 uStack_60;
  undefined4 *puStack_58;
  uint uStack_54;
  undefined *puStack_50;
  code *pcStack_4c;
  undefined4 local_30;
  uint *local_2c;
  undefined4 local_28;
  undefined *local_24;
  undefined4 local_20;
  undefined4 local_1c;
  undefined4 local_18;
  undefined4 local_14;
  undefined4 *local_10;
  undefined4 *local_c;
  
  puVar1 = PTR___stack_chk_guard_0015ba2c;
  local_24 = PTR_LAB_0015b6c0 + -0x7210;
  local_10 = &local_30;
  local_28 = 0;
  local_20 = 0;
  local_1c = 0;
  local_18 = 0;
  local_14 = 0;
  local_c = *(undefined4 **)PTR___stack_chk_guard_0015ba2c;
  local_30 = param_3;
  local_2c = param_2;
  if (param_1 == (uint *)0x0) {
    uVar2 = 1;
  }
  else {
    FUN_00036e6c(&local_28);
    uVar2 = (uint)(local_14._0_1_ == '\0');
    param_2 = param_1;
  }
  if (local_c == *(undefined4 **)puVar1) {
    return uVar2;
  }
  pcVar7 = FUN_00037304;
  puVar3 = local_c;
  puVar6 = PTR___stack_chk_fail_0015ba10;
  (*(code *)PTR___stack_chk_fail_0015ba10)();
  iStack_6c = *(int *)(puVar6 + 0x124410) + 0x18ac;
  puStack_50 = puVar1;
  puVar4 = *(uint **)(puVar6 + 0x124728);
  iStack_68 = *(int *)(puVar6 + 0x124358) + -0xb1c;
  uStack_60 = 0;
  uStack_54 = *puVar4;
  uStack_70 = 0;
  iStack_64 = *(int *)(puVar6 + 0x124358) + -0xb08;
  puStack_58 = puVar3;
  pcStack_4c = pcVar7;
  if (param_2 != (uint *)0x0) {
    puVar3 = &uStack_70;
    FUN_00036e6c(puVar3);
  }
  uVar2 = *puVar4;
  if (uStack_54 == uVar2) {
    return uVar2;
  }
  uVar2 = (**(code **)(puVar6 + 0x12470c))();
  if (param_2 != (uint *)0x0) {
    uVar2 = *param_2;
    puVar4 = param_2 + 1;
    if (0 < (int)uVar2) {
      iVar5 = 0;
      do {
        iVar5 = iVar5 + 1;
        FUN_00037304(puVar3,*puVar4);
        uVar2 = (uint)(iVar5 < (int)*param_2);
        puVar4 = puVar4 + 5;
      } while (uVar2 != 0);
    }
    return uVar2;
  }
  return uVar2;
}

